Forums > MaxMSP

Format coll for line~

January 24, 2013 | 6:29 pm

How can I format coll indices so I can drive a line~?

For example, if I use the format for a line~ message, coll will not recognize this if I input it this way.

1, 0, 1 2000 0 2000;


January 24, 2013 | 7:08 pm

You don’t really have to do that. A comma in a message box separates the contents into discrete messages. So "0, 1 2000 0 2000" sends the message "0" then immediately sends the message "1 2000 0 2000".

So, you could either use two separate indices:
0, 0;
1, 1 2000 0 2000;

or go to 0 immediately in one:
1, 0 0 1 2000 0 2000;


January 24, 2013 | 7:32 pm

I am not sure whether line~ would accept 1, 0 0 1 2000 0 2000;. I need these to drive an FM synth. I preferably would like to be able to use this data to clear and reset a function object but can’t figure that one out (posted in another post). I did find this example that seems to do the trick.

– Pasted Max Patch, click to expand. –

January 24, 2013 | 8:23 pm

I was giving you what to put in a coll. If the line in coll reads "1, 0 0 1 2000 0 2000;" then the output is "0 0 1 2000 0 2000".


January 24, 2013 | 8:28 pm

See also:
http://cycling74.com/forums/topic.php?id=44199
http://cycling74.com/forums/topic.php?id=14499
&c.

and:

– Pasted Max Patch, click to expand. –

January 24, 2013 | 9:09 pm

Thanks for your help.


January 24, 2013 | 10:46 pm

Hi,
it seems that coll does not accept a 0 (or integers ) as a first element of a list, when followed by comma. (maybe I am wrong).
With line~ we need sometimes to go to 0 first, in deed. To bypass this, here a solution; there are for shure more elegant ways.

– Pasted Max Patch, click to expand. –

Best


January 25, 2013 | 12:35 am

1) 0 seems to work for me:

– Pasted Max Patch, click to expand. –

2) This whole comma thing is unnecessary, for reasons mentioned above. I try to avoid sprintf whenever possible (which is not always), generating symbols is not very cpu or memory efficient.


January 27, 2013 | 3:10 pm

These are interesting examples. I am not familiar with your formatting mzed for the coll though. What is the purpose of the backslash? Can you dissect it for me?


January 28, 2013 | 12:40 am

Comma is a character that has special meaning in max. Either in a message box (where it divides two messages) or in a coll (where it separates the index from the data) it is treated differently than regular ascii characters. In order for the comma to pass through these objects without the special treatment, it is "escaped". In this case, it is escaped by putting a backslash in front of it. Backslash is also a special character, and it means "treat the next character as a normal ascii character".

Escaping with backslash is not an uncommon convention in text-based programming languages:

http://en.wikipedia.org/wiki/Escape_character


January 29, 2013 | 12:41 am

I’m guessing these are line~ values generated from function? I highly recommend the "list" output mode option for function, and personally treat "normal" mode as deprecated since it also introduces more inconsistencies in timing.

I also recommend zl.slice and zl.lace/delace can also be useful for manipulating these sorts of lists.


January 29, 2013 | 2:58 am

I made this to illustrate ways to work around the comma for another thread:

– Pasted Max Patch, click to expand. –

January 29, 2013 | 12:28 pm

Thanks mzed. That makes sense. I was not aware of that.

Peter, I would like to use function but the problem I am running into is clearing function so I can then send new values to it. I have another post up about it but no one has responded to it. Perhaps you have an idea as how to do that.

Thanks, Chris. Interesting solutions. Love that max is flexible in this way that you can solve a problem multiple ways.


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