Polyphonic synthesis and sequencing

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

Hi again
sorry to keep posting on here with simple things but im very new to this.
This is probably a really simple thing but i have made synth but i've been trying to make it polyphonic and it's not doing it? its probably something incredibly simple but i cant seem to find it.
Also i would like to be able to play it on a matrix ctrl but im not getting signal when i do that only when i play it on the keyboard.
Here is what i have done so far.

any help would be great.
sorry if these are really stupid questions or not.

Charles Baker's icon
AudioLemon's icon

I read those chapters and watched the Baz tutorials and I still find it the most unintuitive part of Max. I think it is one of the main reasons there are so few synths built in Max. Of course it is my ignorance but I can do it in Synthedit, Reaktor, Synthmaker and even on an analogue modular and after 2 years I still find it difficult in Max. You might say it is my problem alone but there is not even a category in MaxForLive.com for synthesizers. I think it really is a problem.

i wish a few of the objects had arguments for polyphony to make it easier - like el.player in the LyonPotpourri externals. This would greatly simplify building simple little synths.

Chris Muir's icon

I have a couple simple poly~ examples here: http://www.xfade.com/max/examples
and one slightly more complicated synth here: http://www.xfade.com/max/

Charles Baker's icon

I think many people expect there to be simple "number of instances" setting for msp, and they do not understand that increased number of voices must mean increased number of INSTANCES of the voice code (the patch!). poly and poly~ allow routing of input messages and summing of output for a set of synth voices, but you can't just have one voice and say: "now gimme 16 copies" by setting a number.
You need to have *16 copies* !!!, and poly~ just routes inputs and sums outputs.
And if your synth voice patch has resources that can compete (eg: send, receive names, buffer names), you need to tell max/msp that these need to be renamed *for each instance* :
therefore the odd #0 stuff.
Well,
Just a stumbling block I have seen in newbies before... YMMV.

again, g'luck..I have not had any problem using poly~. It rocks, AFAIK.
j2k

Scott.Houston's icon

Ah ok sorry i think i understand now so that poly object allows you to stores a sort of subpatch that you create you so you can repeat it again and the argument will state how many you have?

a couple more questions on my patch??
but i can put a pattern into the matrix ctrl but it will only put out the sequence if i hold down a key?
and also i have set it up so that it only plays one octave on the keyboard but then when you go outside this range it will just play the same note over and over.
befroe this sequencer had midi and it worked fine on that octave but now it no longer does. any clues why?
thanks a lot guys everything is really helpful.

AudioLemon's icon

yep I still feel like a newbie when it comes to poly~ I wish I didn't. I follow along to the tutorials, understand the concept and still manage to feck it up every single time :)then of course I get disheartened and move onto something else (until it needs a poly~).

"but you can't just have one voice and say: "now gimme 16 copies" by setting a number. You need to have *16 copies* !!!" - This is just not the case in other environments. Moving from a monophonic to polyphonic patches is simple and intuitive in Reaktor, Synthedit and Synthmaker and if it was as easy as everybody always says then where are all the polyphonic synths?? as I said not a even a category for synthesizers in MaxForLive.com. There are 4 small polysynths in M4L and they all use something called (lVoiceCmd_exclude) which i have not seen in the tutorials. Maybe it is there and I missed it. I think transitioning a simple patch from mono to poly is not straightforward enough in Max. Going into the poly abstraction to fix things up but not being able to play anything and then having to save it come out and test it and then go back in... addressing individual instances is also pretty easy but fiddly. It may be more powerful but I would opt for easier to implement especially at the beginner and intermediate level.

I am not alone - I was searching around after I posted and saw this.

I do not want to seem like I am whining I just want to express a frustration.

pid's icon

well, you do sound like you are whining. i have no idea why you find poly~ so hard. i find it easy peasy and i'm a dumbarse. READ. THE. MANUAL. THEN. EXPERIMENT. and as for linking to a shit article that was inaccurate and demonstrated the writer had never read the manual that was lame. whining about the lack of poly synths on m4l.com is equally lame for many reasons, such as assuming that any more than 1% of the max using population actually look at or care about that site. i have made hundreds of polyphonic synths in max and they are all bloody fantastic. and i worked out out to do it by studying it all myself. in the process i discovered just how awesome poly~ is. people whining about poly~ drives me mad!!!

AudioLemon's icon

so you are agreement people often complain about the use of poly~ :)

I apologize for my trolling I will try to be less speculative on the forum in future.

Roman Thilenius's icon

"Ah ok sorry i think i understand now so that poly object allows you to stores a sort of subpatch that you create you so you can repeat it again and the argument will state how many you have?"

with poly~ there is only one copy of the code in the file - but when you open the
patch, multiple copies of the poly~ are opened into RAM.

try the "open" message and all the other stuff from the helpfile and you will understand.

i agree it is not the easiest part of maxmsp.

Christopher Dobrian's icon

I don't guarantee that this will make it any clearer to you, but here are some examples you might want to see (Examples 23-30) that could help you understand poly~.
http://music.arts.uci.edu/dobrian/IAP2010/examples.htm#Ex23

seejayjames's icon

If your poly~ has any UI elements and you're actually opening them to set things, you could try making a whole bunch of [bpatchers] instead and stack them. then switch between them with [tab] and "bringtofront" message to [thispatcher]. Routing can be handled pretty easily with gates either in the bpatcher or outside, or both with a master switch, etc. and the #0 argument will manage sends/receives, if you use them.

It's a different take on the multiple-instance idea, and somewhat similar to poly~ but different in some key ways, so understanding how they differ (and how these differ from abstractions and subpatchers) is a big deal in Max. lots of reading and experimentation...there's always more to learn it seems.

Chris Muir's icon

I would go further than seejayjames, I don't think that user interface really belongs in poly~ patchers. I like to have all UI in the top-level patcher and only deal with the synthesis aspects of things inside of poly~ patchers.

Scott.Houston's icon

ah ok thank you very much people this is all really useful i shall do some more research into it first before i ask more questions and see where it can get me.

Charles Baker's icon

I would go further than seejayjames, I don't think that user interface really belongs in poly~ patchers. I like to have all UI in the top-level patcher and only deal with the synthesis aspects of things inside of poly~ patchers.

Gotta shout an 'amen' to this; you *normally* don't need to have each voice of polyphonic instrument get individual configuration: they (the individual voices) normally should all act the same, be interchangeable*. Thus you really don't need more than one configuration UI for all the voices.
*if there are differences in individual voices, it is usually in some internal random variation, with amount set the same on all voices..."pitch jitter", for instance.

just another darned tuppence.
cb