playing multiple notes

bt96's icon

So I have a list of frequencies with some I would like to combine together into one sound. There are zeros in the data to distinguish one group from another. For example: 230 120 440 0 68 32 0 ...
The problem is that each group contains different numbers of frequencies and this variability makes it harder to have a universal way to combine each group. Is there a way to somehow store each group and then output it together as one sound, and then use some delay to play each group by itself?

Wetterberg's icon

how is that list being generated? And how do you want to "play each group by itself"? I think we're missing a bit of the story here.

Normally I'd handle this in a loop; I'd start by feeding the list through [zl sub 0] to get the locations of the zeros, and then use zl slice to use those zeros as the demarcation.

seejayjames's icon

You could also use

iter
|
sel 0:
right outlet sends non-zero numbers into [zl group]
left outlet bangs out [zl group]

bt96's icon

the list is being read from a text file that is already prepared, and say I have a 4 frequencies like 220 440 650 330, I want to play them at the same time like a chord on a piano. The zeroes in the list would separate each "group". However each group has different number of frequencies like one might have 2 while another will have 4. So is there a way to play them like a chord except I don't know how many notes there will be exactly each time?

bt96's icon

And how can I make sure each group separated by zeros doesn't mix with each other?

Luke Hall's icon

How are you going to trigger the next group if they are all coming from one long list? Is it going to be after a set interval or will you want a [button] to trigger the next one manually? Or something completely different?

bt96's icon

I want a button to trigger the next one, but hopefully it can automatic like after each time a 0 is outputted,the button will trigger the next group to be played together

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

with this method :

you need to first feed teh list, then each bang you send to [zl queue] will give you one "group" that was separated by a 0. One after the other, and only once each group - if you want to resend everything from start you need to re send the list.

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

You can use poly~.