some new max/msp utilities

Aug 6, 2007 at 10:20pm

some new max/msp utilities

I recently finished a batch of 50 utility abstractions for max and msp. They do things like list processing, data matching/routing, string functions, statistics, and some awkward things useful to my own work (like determining the internal range of a UI object, or the mode of list). As this is my first foray into releasing things publicly, I’m sure there are numerous improvements that could be made – so feel free to mess around and make suggestions. I hope some of the work may be helpful…

jb.utilities: http://www.greyfade.com/joe/maxmsp.html

-Joe Branciforte

#33168
Aug 7, 2007 at 10:06am

Nice abstracions! I didnt test them yet, but they seem to be very useful! Thaks for sharing!

Gerald

#110085
Aug 7, 2007 at 7:17pm

nice, some interesting utilities in there .
thanks for sharing ;)

#110086
Aug 8, 2007 at 6:01am

Joe Branciforte schrieb:
> I recently finished a batch of 50 utility abstractions for max and
> msp.

A nice collection, congrats…

the pattrrecall/pattrgate creates a stack overflow by just opening it
though…

And there is a jb.thru.help in the help folder, which is the same as
jb.pass.help, I guess its obsolete…

I made a text file to include this collection into my Overviews patch:

Save this as jb.utilitie.txt, and place it into
Documentation/overviews/3rdParty/
(In case my overviews are installed…)

Author, Control;
jb.block, block the next n items from an input stream;
jb.delay, delay for any kind of input, in ms or events;
jb.pass, allow a percentage of input to pass through;
jb.uzi, send out a fast-as-possible linear count;
Author, Data;
jb.=, test the equality of various data types;
jb.!=, test the unequality of various data types;
jb.change, separate dynamic and static input;
jb.decode, decode data using index numbers;
jb.encode, encode data using index numbers;
jb.match, pass input list if nth element(s) matches search term(s);
jb.multichange, “change” for any number of indexed variables;
jb.sieve, a dynamic data sieve;
jb.skeptic, don’t “believe” input until it occurs n-times in a row;
Author, List Processing;
jb.iter, iterate a list at a variable rate;
jb.slice, slice a list in a multitude of ways;
jb.tandem, iterate two lists in tandem;
jb.unique, remove duplicates items from a list (preserving order);
jb.weave, weave two lists together using a variable pattern;
jb.xerox, extend a list with copies of itself;
Author, Numbers;
jb.%, modulo operator with integer quotient;
jb.delta, calculate difference between successive values;
jb.fi, separate floats and ints, treat whole-number floats as ints;
jb.float, store and interally operate upon a floating-point value;
jb.grid, snap numerical input to a grid;
jb.histo, a histogram for floating-point numbers;
jb.interp, linear interpolation between two numerical lists;
jb.normalize, return the normalized weights of a numerical list;
jb.series, perform basic operations a 12-element series;
jb.split, float/list version of ‘split’ object;
Author, Pattr-family;
jb.pattr.mml, return the min/max/length of all pattr-enabled objects;
jb.pattrgate, a system of initiating pattrstorage recalls with no output;
jb.pattrrecall, a system of initiating pattrstorage recalls with no output;
Author, Statistics;
jb.collstats, return statistics on a coll;
jb.mean, calculate the mean of alist with n% trimmed;
jb.median, return the median value of a numerical list;
jb.mode, return the mode of a list;
jb.range, return the range of a list with n% trimmed;
jb.sum, return the sum of a list of numbers;
Author, Strings;
jb.itoa, queue-based integer to ASCII conversion;
jb.strinsert, insert a substring at the specified position;
jb.strjoin, join two strings;
jb.strlen, return the length of a string;
jb.strrev, reverse a string;
jb.strsieve, separate characters out of a string;
jb.strslice, slice a string at the specified position;
jb.strsub, return the position(s) of a substring;
Author, User-interface;
jb.cellblock, storage mechanism for jit.cellblock;
jb.label, label objects with name or objectclass;
jb.mml, return the min/max/length of named UI objects;
jb.taptempo, basic tap-tempo implementation;


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com

#110087
Aug 8, 2007 at 8:24am

Hi Joe,

What sort of license do you have for these? BSD, GPL, Creative
Commons sharealike 2.0?

Cheers
Evan

On Aug 6, 2007, at 11:20 PM, Joe Branciforte wrote:

>
> I recently finished a batch of 50 utility abstractions for max and
> msp. They do things like list processing, data matching/routing,
> string functions, statistics, and some awkward things useful to my
> own work (like determining the internal range of a UI object, or
> the mode of list). As this is my first foray into releasing things
> publicly, I’m sure there are numerous improvements that could be
> made – so feel free to mess around and make suggestions. I hope
> some of the work may be helpful…
>
> jb.utilities: http://www.greyfade.com/joe/maxmsp.html
>
> -Joe Branciforte

#110088
Aug 8, 2007 at 10:39am

many thanks for sharing, these are very useful, Pere

On 07/08/07, Joe Branciforte wrote:
>
> I recently finished a batch of 50 utility abstractions for max and msp. They do things like list processing, data matching/routing, string functions, statistics, and some awkward things useful to my own work (like determining the internal range of a UI object, or the mode of list). As this is my first foray into releasing things publicly, I’m sure there are numerous improvements that could be made – so feel free to mess around and make suggestions. I hope some of the work may be helpful…
>
> jb.utilities: http://www.greyfade.com/joe/maxmsp.html
>
> -Joe Branciforte
>


http://www.centuryofnoise.com
http://www.perevillez.com

#110089
Aug 8, 2007 at 12:58pm

> the pattrrecall/pattrgate creates a stack overflow by just
> opening it though…

What happens when you just open the abstraction themselves? I want to fix this as soon as possible. Thanks for the heads-up.

> What sort of license do you have for these? BSD, GPL, Creative
> Commons sharealike 2.0?

I don’t have any license. Yet…

-Joe

#110090
Aug 8, 2007 at 5:03pm

Quote: JBranciforte wrote on Wed, 08 August 2007 14:58
—————————————————-
> > the pattrrecall/pattrgate creates a stack overflow by just
> > opening it though…
>
> What happens when you just open the abstraction themselves? I want to fix this as soon as possible. Thanks for the heads-up.

Opening the abstraction’s patch works fine.

Just want to say thanks anyway. Moreover, I just gave a quick look but your pattrmap thing looks more than nice !

Best,
Julien

#110091
Aug 8, 2007 at 7:49pm

so does that mean we are free to use this for what ever we want?

—– Original Message —–
From: “Joe Branciforte”
To:
Sent: Wednesday, August 08, 2007 7:58 AM
Subject: [maxmsp] Re: some new max/msp utilities

>
> > the pattrrecall/pattrgate creates a stack overflow by just
> > opening it though…
>
> What happens when you just open the abstraction themselves? I want to fix
this as soon as possible. Thanks for the heads-up.
>
>
> > What sort of license do you have for these? BSD, GPL, Creative
> > Commons sharealike 2.0?
>
>
> I don’t have any license. Yet…
>
>
> -Joe
>

#110092
Aug 8, 2007 at 9:14pm

> so does that mean we are free to use this for what ever we want?

yes, free to use. unless you want to pay me large sums of money to use them. that would also be fine.

joe

#110093
Aug 9, 2007 at 3:00am

Does this solve the jb.pattrgate/pattrrecall helpfile problem? I can’t reproduce the problem on my machine, so this is just a conjecture.

max v2;
#N vpatcher 73 97 617 619;
#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P newex 100 265 32 196617 print;
#P toggle 255 196 17 0;
#P button 428 467 15 0;
#P number 444 467 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 444 445 62 196617 jb.pattrgate;
#B color 6;
#P user dial 444 403 40 40 128 1 0 0 159 270 1 1. 170 170 170 221 221 221 120 120 120 225 225 225 0 0 0 0 0 0;
#P objectname dial;
#P newex 61 317 125 196617 autopattr @autorestore 0;
#X prestore dial 1 0 67;
#X prestore rslider 2 0 40 80;
#X prestore slider 1 0 89;
#P objectname u933000007;
#P flonum 380 196 35 9 1. 2. 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P message 368 178 45 196617 recall 2;
#P message 357 160 45 196617 recall 1;
#P window linecount 2;
#P comment 208 360 186 196617 2) place jb.pattrgate between interface objects and wherever they were going;
#P window setfont “Sans Serif” 18.;
#P window linecount 1;
#P comment 16 17 232 196626 jb.pattrrecall/jb.pattrgate;
#P window setfont “Sans Serif” 9.;
#P comment 17 44 268 196617 a system of initiating pattrstorage recalls with no output;
#P button 21 467 15 0;
#P button 326 468 15 0;
#P button 220 467 15 0;
#P number 343 468 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P number 237 467 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 343 442 62 196617 jb.pattrgate;
#B color 6;
#P newex 237 442 62 196617 jb.pattrgate;
#B color 6;
#P user rslider 237 411 116 25 128 1 0 0 0;
#P objectname rslider;
#P user hslider 39 465 18 128 128 1 0 0;
#P user hslider 39 415 18 128 128 1 0 0;
#P objectname slider;
#P newex 39 442 62 196617 jb.pattrgate;
#B color 6;
#P message 112 197 43 196617 store 2;
#P message 102 177 43 196617 store 1;
#P newex 102 226 140 196617 pattrstorage @autorestore 0;
#X client_rect 0 0 640 240;
#X storage_rect 0 0 640 240;
#P objectname u177000006;
#P newex 255 225 112 196617 jb.pattrrecall;
#B color 6;
#P window linecount 2;
#P comment 211 261 199 196617 1) place jb.pattrrecall between your recall messages and pattrstorage as shown;
#P window setfont “Sans Serif” 24.;
#P window linecount 1;
#P comment 293 304 22 196632 +;
#P user panel 7 7 515 64;
#X brgb 116 214 173;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P window setfont “Sans Serif” 9.;
#P window linecount 3;
#P comment 11 75 495 196617 Use these two objects to restore values to pattr-bound objects through a pattrstorage recall – while blocking their output instantaneously. Useful for setting user-interface objects without passing their values. Try storing some presets and recalling with the system on and off.;
#P window linecount 4;
#P comment 215 140 120 196617 toggle the system on/off. 1 for passive recalls , 0 for regular active recalls. on by default.;
#P fasten 9 0 19 0 44 462 26 462;
#P connect 10 0 9 0;
#P connect 9 0 11 0;
#P connect 6 0 32 0;
#P fasten 5 0 6 0 260 246 253 246 243 220 107 220;
#P connect 7 0 6 0;
#P connect 8 0 6 0;
#P fasten 13 0 17 0 242 461 225 461;
#P connect 12 0 13 0;
#P connect 13 0 15 0;
#P fasten 6 0 5 0 107 246 242 246 253 220 260 220;
#P connect 31 0 5 0;
#P fasten 14 0 18 0 348 462 331 462;
#P connect 12 1 14 0;
#P connect 14 0 16 0;
#P connect 23 0 5 1;
#P connect 24 0 5 1;
#P connect 25 0 5 1;
#P fasten 28 0 30 0 449 464 433 464;
#P connect 27 0 28 0;
#P connect 28 0 29 0;
#P pop;

#110094
Aug 9, 2007 at 6:42am

Joe Branciforte schrieb:
> What happens when you just open the abstraction themselves? I want to
> fix this as soon as possible. Thanks for the heads-up.

The feedback is obviously in the help file.
The pipe 100 seems problematic in general. Maybe better prevent feedback
in a different way…

> I don’t have any license. Yet…

Look into GPL or LGPL, both would be appropriate for this kind of stuff.
Creative Commons is also interesting, but more for artistic/final
output, not so much for a library…
If there is no license yet, everybody who wants to use it would have to
ask you first…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com

#110095
Aug 9, 2007 at 6:54am

Joe Branciforte schrieb:
> Does this solve the jb.pattrgate/pattrrecall helpfile problem? I
> can’t reproduce the problem on my machine, so this is just a
> conjecture.

This doe not create a stack overflow, though I don’t know whats
significantly different… I can only see an additional print…

I’d still recommend to get rid of pipe, I avoid pipe like the devil
avoids the holy water…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com

#110096
Aug 9, 2007 at 1:07pm

#110097
Aug 10, 2007 at 4:21pm

Maybe this is part of the problem, just guessing…

Where do you see an instance of “pipe”?

Confused,
Joe

#110098
Aug 10, 2007 at 4:32pm

> Where do you see an instance of “pipe”?

This brings up another difficulty in Max – trying to find a specific
object in a myriad of subpatchers.

Yes, I know I can search as text in a text editor, as well as the
usual Find, but it certainly isn’t easy to go through huge patches to
find certain objects…

#110099
Aug 10, 2007 at 4:34pm

OK, after a few minutes of sleuthing I figured it out. Apparently there was was a very old version that used pipe. Here are the updated abstractions (also reflected in future downloads)…

jb.pattrgate:

max v2;
#N vpatcher 20 74 148 202;
#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P newex 16 38 52 196617 r /gting/;
#P newex 16 60 66 196617 gate 1 1;
#N comlet data out;
#P outlet 16 84 13 0;
#N comlet data to be blocked on pattrstorage recall;
#P inlet 72 38 13 0;
#P connect 3 0 2 0;
#P connect 2 0 1 0;
#P connect 0 0 2 1;
#P pop;

jb.pattrrecall :

max v2;
#N vpatcher 21 74 208 226;
#P window setfont “Sans Serif” 9.;
#P newex 69 71 47 196617 gate 1 1;
#P newex 16 76 21 196617 t 1;
#P newex 16 50 63 196617 route recall;
#N comlet from pattrstorage;
#P inlet 16 28 13 0;
#N comlet recall messages in;
#P inlet 81 28 13 0;
#N comlet to pattrstorage;
#P outlet 81 102 13 0;
#P newex 106 100 52 196617 s /gting/;
#P newex 81 50 35 196617 t l 0;
#P connect 4 0 5 0;
#P connect 5 0 6 0;
#P connect 5 1 7 0;
#P connect 3 0 0 0;
#P connect 0 0 2 0;
#P connect 0 1 7 1;
#P fasten 7 0 1 0 74 97 111 97;
#P fasten 6 0 1 0 21 97 111 97;
#P pop;

Joe

#110100
Aug 10, 2007 at 6:31pm

agreed

On 8/10/07, Arne Eigenfeldt wrote:
>
> > Where do you see an instance of “pipe”?
>
> This brings up another difficulty in Max – trying to find a specific
> object in a myriad of subpatchers.
>
> Yes, I know I can search as text in a text editor, as well as the
> usual Find, but it certainly isn’t easy to go through huge patches to
> find certain objects…
>

#110101
Aug 10, 2007 at 6:56pm

I have to say, Safari 3 and Firefox’s highlighting/as you find would
be really nice to ‘find’ the object

searching for ‘sel 0′ would give me a forward/back and would snap the
origin of the viewport to the current ‘sel 0′ and put a colored
highlight box around it.

Hitting next takes me to the next sel 0 (or whatever my search term
was) and snaps to that.

- bored on a rainy friday trying to do my best to NOT patch.
On Aug 10, 2007, at 2:31 PM, yair reshef wrote:

> agreed
>
> On 8/10/07, Arne Eigenfeldt wrote:
> > Where do you see an instance of “pipe”?
>
> This brings up another difficulty in Max – trying to find a specific
> object in a myriad of subpatchers.
>
> Yes, I know I can search as text in a text editor, as well as the
> usual Find, but it certainly isn’t easy to go through huge patches to
> find certain objects…
>

v a d e //

http://www.vade.info
abstrakt.vade.info

#110102
Aug 11, 2007 at 4:50pm

Roald Baudoux schrieb:
> Apart from cases of patches with loops, is there any other reason?

In the past there where performance hits with pipe it has to store
anything which is going into it, and copy it back. It also had some
stability problems, but that might have been fixed…
In most cases, a combination of [zl reg] and delay is sufficient, that
stores just one message…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com

#110103
Aug 15, 2007 at 4:44pm

Arne Eigenfeldt schrieb:
> This brings up another difficulty in Max – trying to find a specific
> object in a myriad of subpatchers.
>
> Yes, I know I can search as text in a text editor, as well as the
> usual Find, but it certainly isn’t easy to go through huge patches to
> find certain objects…

You mean the useless find… ;-)

Even worse, if an objects prints an error, its pretty hard to find it.
The only way I know of, is to delete more and more parts of the patch
till it vanishes and then go on from there. Not very effective. I hope
there are some debugging aids boiling up for Max 5…

Stefan


Stefan Tiedje————x——-
–_____———–|————–
–(_|_ —-|—–|—–()——-
– _|_)—-|—–()————–
———-()——–www.ccmix.com

#110104
Aug 15, 2007 at 10:18pm

Of what I have seen of the debugging tools in Max 5, everyone should
be very happy. Myself included.

b

On Aug 15, 2007, at 9:44 AM, Stefan Tiedje wrote:

> Arne Eigenfeldt schrieb:
>> This brings up another difficulty in Max – trying to find a specific
>> object in a myriad of subpatchers.
>> Yes, I know I can search as text in a text editor, as well as the
>> usual Find, but it certainly isn’t easy to go through huge patches to
>> find certain objects…
>
> You mean the useless find… ;-)
>
> Even worse, if an objects prints an error, its pretty hard to find it.
> The only way I know of, is to delete more and more parts of the patch
> till it vanishes and then go on from there. Not very effective. I hope
> there are some debugging aids boiling up for Max 5…
>
> Stefan
>
> —
> Stefan Tiedje————x——-
> –_____———–|————–
> –(_|_ —-|—–|—–()——-
> — _|_)—-|—–()————–
> ———-()——–www.ccmix.com
>
>

Barry Threw
Media Art and Technology

San Francisco, CA Work: 857-544-3967
Email: bthrew@gmail.com
IM: captogreadmore (AIM)
http:/www.barrythrew.com

#110105

You must be logged in to reply to this topic.