Creating a Score

Uri Schreter's icon

Hi all,
I’m fairly new to Max, and I’ve been creating some pieces with the following basic scheme: objects controlled by sends/receives, advancing with a counter through a “score”, a series of events devised of messages sending information to those sends/receives (with the ; sign). Example attached here below.
This works for me, but it’s very cumbersome, both to operate and especially to build and change in the process. I feel like there MUST be a simpler way to do this.
Any ideas, better ideas to create and manipulate the “score”?

If this is something very basic or has been answered numerous times, my apologies, and I’d appreciate it if someone could point me in the right direction.

Thanks!

Score-example.maxpat
Max Patch
Source Audio's icon

Hi URI, if this example wich probably works just fine, does not need more steps in the "Score" and
parameter list (number of objects which need to receive values) does not need to be extended,
You can leave it as is. In this extent it is easy to see what gets sent in each "Score" step.
Only 1 thing - delays will still get executed if You move to next "Score number", so it is allways a good idea to send
them message "stop" whenever other Score number gets recalled.
If the structure gets more complex and needs many "Score" Steps, You have to think about other options.
Maybe writing text scores and having some sort of routing inside.
Like prepending a number for each address and packing Values in a symbol for separation ?
like 1 "200 1 0 33 45" could send data to object 1 which would receive fromsymbol/unpacked data.
Like that You have pairs of (adress - data) in a text line and can route them as You wish.
Or write it in coll format ...
What do You think of it ?
I understand that You can't use Preset kind of storage which allways includes some data for all
objects under control.

Source Audio's icon
Max Patch
Copy patch and select New From Clipboard in Max.
Uri Schreter's icon

Hi, thanks for answering!
Your note on the delays is so very true, I learnt it the hard way and already implemented the stops in my next piece.
It does work fine for such a short score, but yes, mine is much more complex (this piece originally had 40 something events).
I would love to use a text score on a separate file, but I don't know how, and I'm not sure I understood your explanation. I don't think numbering my objects would be effective, as there are dozens of them.
What would be the best way in this case to recall data from text files into Max? I'm thinking that if I can control the "deciphering" of the text file, I could easily create a very simple syntax and read it directly from the score file. I was thinking of something like, specific symbols to mark the beginning and end of each event, and within each event, every message to an object will be represented with a separate line (or else also marked with a dedicated symbol). Any idea on how to do this, or something similar?

Source Audio's icon

Hi Uri, text files would probably work fine with Your Score.
The idea is to have pairs which contain 1- adress, 2- data to send to apropriate objects.
It would be easier if one could just number the objects, but I understand that having many
of them could get difficult to remember each just by number...
So this is what I would do :
Lets say that You want to send several messages per Score Step.
You fill the text line with for example Ped1Gain 22 Ped2Rate 100 EQ1 "100 22 13 55" etc
You can see adress is followed by parameter.
When You output one line of text to route object which would contain adresses
like {route Ped1Gain Ped2Rate ...} and insert {s Ped1Gain} on matching route outlet,
data next to Ped1Gain would be sent to Ped1Gain object and so on.
To keep formula Adress Data one would have to pack values for objects that contain more than
just 1 value into symbol.
I will come back in few hours and upload a patch as example.
But I think You can understand what I mean now.

Uri Schreter's icon

Ok, I took your suggestion and tailored it a little bit to my needs, and I think it works great! It's still a bit messy, and I think I can improve it later to make it work with delayed messages as well, but all in all, great solution.
I attached my example score here (the patch, and separate text score).
Thanks again!

Uri Schreter's icon

I reworked it a little more and now it supports delayed messages and comments without interrupting. (examples here below, I've deleted the previous ones)
So glad to have finally solved this, don't know what kept me so long...

ScoreReader.maxpat
Max Patch
ScoreSample.txt
txt
Source Audio's icon

Now that's great. I am glad You came up with a good solution.
I don't know if You need the option to recall individual Step Numbers ?

Here is a little addition to Your patch, having coll which contains starting line numbers of
event_start (Step) numbers.

Max Patch
Copy patch and select New From Clipboard in Max.

Maybe You can have some use for it...

Source Audio's icon
Max Patch
Copy patch and select New From Clipboard in Max.

sorry, there was a little mistake in the previous patch.

Uri Schreter's icon

great! I was just working on doing exactly the same thing, but in a much more complicated (and unnecessary) way. I'll use it, thanks!

Source Audio's icon

Well one can allways go a step further, but It has to be left to You to do so.
Here is another one with some fixes for delay object ...

Max Patch
Copy patch and select New From Clipboard in Max.

And please don't hesitate to ask if You get stuck somewhere.

Floating Point's icon

is there a reason why you don't just use detonate?
also, it seems to me you don't have to parse a text file into coll-- you could just create your score using the coll format and read it in directly using the read message (or even embed it in the patcher)