Polyphonic Synthesizer Tutorial

    Ever wanted to play multiple notes (voices) of your synthesizer or sampler at the same time? In Max, this is accomplished by using the poly~ object. In this video tutorial, we'll get you up to speed on how to use poly~, so you can start making your own polyphonic instruments.

    Cycling74 Max/MSP/Jitter Tutorials: Polyphonic Synth

    by Les Stuck on
    May 5, 2011 9:05 PM

    • Sonia Beckwith's icon
      Sonia Beckwith's icon
      Sonia Beckwith
      Jun 06 2017 | 11:38 pm
      I am trying to use [key] and [keyup] to trigger this patch instead of note in. I created a set of sine frequencies that relate to the keys on my computer keyboard.
      I am very new to max so please excuse my lack of know-how, any help is much appreciated!
    • Matthew Grouse's icon
      Matthew Grouse's icon
      Matthew Grouse
      Feb 21 2018 | 7:43 pm
      Thanks for this! I'm writing a piece that uses two keyboards (using cycle~ instead of saw~)
      Any ideas how I can have one of the keyboards at equal temperament and then keyboard 2 an exact replica but every pitch 'tuned down' a quartertone? e.g C1 on keyboard 1 is mirrored as C1/4b1 on keyboard 2.
      . Also, any ideas on getting rid of clicks? It's particularly bad when using cycle~ instead of saw~
    • Noah Mcrobbie's icon
      Noah Mcrobbie's icon
      Noah Mcrobbie
      Oct 25 2018 | 10:51 pm
      I've been trying to do this with key and keyup objects to mapped to MIDI numbers and then sent through poly~ but it seems that once i try any sort of polyphony, at least one of the notes I've pressed never shuts off. This is also part of a microtonal synthesizer that I am building in Max and I have found that once i run it through poly~, even if I have pack and unpack set to send and receive floats (for the quatertones), it doesn't recognize the note values in between frequencies.
      maxpat 94.15 KB
      (yes, i'm aware my key and keyup patching is a total mess to look at) If anyone could help me with this, it'd be greatly appreciated.
    • Andrew Yatsuhashi's icon
      Andrew Yatsuhashi's icon
      Andrew Yatsuhashi
      Sep 29 2019 | 10:52 pm
      How can you change the adsr parameters from the main patch?
    • PSG's icon
      PSG's icon
      Jan 31 2021 | 3:14 pm
      Can you think of any reason why thispoly~ won't create polyphony? I followed your tutorial and made your little poly synth work. But when I tried to apply the same method to an already complex mono synth I had created, the thispoly~ won't make it a polyphonic synth. I have loaded 6 instances of the synth patch. The thispoly~ outputs do confirm that. It is hooked up properly to an ADSR inside the synth voice. The ADSR works because I can hear it working. Still, thispoly~ will *not* make polyphony for me. I have many different ADSRs doing different things at different places within my original synth patch. Does that have anything to do with it? I tried recreating the thispoly~ many times and hooking it up to different ADSRs within the patch, all to no avail.
    • Roman Thilenius's icon
      Roman Thilenius's icon
      Roman Thilenius
      Jan 31 2021 | 6:39 pm
      nobody said thispoly~ would have to do anything with polyphony.
    • ๐Ÿ‘ฝRโˆ†Jโˆ† The Resident โˆ†lien๐Ÿ‘ฝ's icon
      ๐Ÿ‘ฝRโˆ†Jโˆ† The Resident โˆ†lien๐Ÿ‘ฝ's icon
      (dang, sounds like they could've used some Izotope DeEsser back in 2011 0:57 - "sssssssssingle patch chord for note messsssssssagesssssssssssssss"๐Ÿ๐Ÿ™‰๐Ÿ˜๐Ÿ˜‡) @PaulSanGregory thispoly~ is used to keep track of individual voice status, and change mute/busy status. yes, if you have many ADSRs, it might be the place to look, but mainly, if you're registering 'busy'-state with a signal from adsr~ as in the video, it might not be working if the particular ADSR you hook it up to does not release all the way back down to 0(another way to ensure everything works is to send "mute $1" and "busy $1" messages to thispoly~ explicitly, according to exact millisecond durations of notes)... you might want to go through the original documentation/reference tutorials on polyphony to complement what you learn from the video in order to have a more thorough grasp of how to accomplish polyphony in these different contexts: https://docs.cycling74.com/max8/tutorials/11_polychapter01 (or you could start another thread and post your patch there, people can take a look and give you specifics) @AndrewYatsuhashi you can attach 'receive' objects to the parameters of adsr~ within your poly~ patch, then in the main patch use 'send' objects of the same name to control those parameters(if you wanted to do this individually by voice, you could use the voice-specific 'target' messaging described in the poly~ helpfile under the 'voice messages' tab there)
    • PSG's icon
      PSG's icon
      Feb 01 2021 | 8:36 am
      As you suspected, Raja, it was the "sssssssssingle patch chord for note messsssssssagesssssssssssssss" thing. Believe it or not, I had noticed that part already and tried wiring up with a single patch chord at one point, but something else must have been out of whack at the time because it still didn't work for me then. I tried it again just now, though, and it seems to work. Hopefully I'm not currently experiencing a fluke (!). Thanks for your reply...