Forums > MaxMSP

some new max/msp utilities

August 6, 2007 | 10:20 pm

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


August 7, 2007 | 10:06 am

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

Gerald


August 7, 2007 | 7:17 pm

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


August 8, 2007 | 6:01 am

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


August 8, 2007 | 8:24 am

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


August 8, 2007 | 10:39 am

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


August 8, 2007 | 12:58 pm

> 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



jln
August 8, 2007 | 5:03 pm

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


August 8, 2007 | 7:49 pm

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
>


August 8, 2007 | 9:14 pm

> 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


August 9, 2007 | 3:00 am

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;


August 9, 2007 | 6:42 am

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


August 9, 2007 | 6:54 am

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


August 9, 2007 | 1:07 pm


August 10, 2007 | 4:21 pm

Maybe this is part of the problem, just guessing…

Where do you see an instance of "pipe"?

Confused,
Joe


August 10, 2007 | 4:32 pm

> 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…


August 10, 2007 | 4:34 pm

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


August 10, 2007 | 6:31 pm

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…
>


August 10, 2007 | 6:56 pm

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


August 11, 2007 | 4:50 pm

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


August 15, 2007 | 4:44 pm

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


August 15, 2007 | 10:18 pm

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


Viewing 22 posts - 1 through 22 (of 22 total)