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.

Download the patches

May 9, 2011 | 7:32 am

This is a fantastic tutorial – I had never thought of using swap and edge~ within poly~, thanks a lot!

May 9, 2011 | 12:19 pm

great! more tutorials please! thx

May 11, 2011 | 3:28 am

Great tutorial, but what about making the final patch downloadable so that we can study it further ?

May 12, 2011 | 1:01 pm

Hi Jeepee,

Here is a link to these two patches:



May 14, 2011 | 2:22 pm

Very clear! Excellent tutorial. Thanks tons!

May 21, 2011 | 8:57 am

Thanks for this tutorial !
When an another one ???

May 25, 2011 | 6:25 am

Thanks you!!!

June 10, 2011 | 11:24 am

Hey! Very excellant tutorial. Professional and clear. You should definitely do more! Thanks.

July 30, 2011 | 2:42 pm

great tutorial man. bravo

September 2, 2011 | 2:58 am

I’ve learn many things through this tuto, which is great indeed!
I have nonetheless several problems :
1° the changes in the saved subpatch weren’t always taken into account immediately in the main patch.
2° It doesn’t work with a cycle~ instead of the saw~: the synth clips when the keys are released.
3° When I use the synth with a live.step sequence and through a makenote, I have tone bends when notes are changed.
I still find this tuto is great, but I have some further work to do to have my own synth module.
Thank you!

January 30, 2012 | 8:23 pm

@2:22 the divider /127 is not created.. or at the least it is not evident what the instructor is doing
I am using MAX6 and there is no /1`27. object that i can find..
that works anyway
Can not the lesson be just a little less arcane for idiots like me?

January 30, 2012 | 8:40 pm

the sub-patch does NOT open upon double click, nor does a separate window open after selecting and "encapsulating"
is this a preference, am I an idiot, or can you at the least explain without the glaring gaps in this tutorial?

February 2, 2012 | 12:21 pm

I had the same problems. Through extensive trial and error, I found the solution to our problems. @2:22, you need to create a new object, and simply type in "/ 127." (no quotes). to open the sub patch, right click and de-select "edit". then, you can double click the box that says p and the sub-patch will open in a new window.

February 2, 2012 | 4:14 pm

Thanks everyone for the good feedback. It looks like UncleChubb figured out that I was making a "/ 127." object at 2:22. Yes, the space between the object’s name (/) and its argument (127.) is important. UncleChubb also figured out that the patch needs to be taken out of Edit mode in order to double-click a patcher to open it. If you’re in too much of a hurry to switch modes, you can just command-click (Mac) or control-click (Win) to operate a patcher when it’s in Edit mode.

Lucycle, keep in mind that the synth_voice patch must be saved to disk before the changes are loaded into poly~. I tried swapping a cycle~ for the saw~ and didn’t hear any problems. Also I tried feeding MIDI notes from live.step to the synth and didn’t hear any portamento happening. Hmmm…maybe there’s something else going on?

Sorry some things weren’t clear. It’s tough being really clear without making the tutorial ending up being an hour long. :) I’ll definitely keep your comments in mind for the future. Happy patching!

February 25, 2012 | 11:58 pm

guys, i am really frustrated… whenever i try to rename the patch p into the name synth_voice it does not seem to accept it. I saved it in one folder and checked the filenames. Furtheron, on one pc it works when i leave it as ‘p synth_voice’ and i can add the poly~ infront, however on the othermachine, as soon as i change it to poly~ it opens up an empty patch! It seems so easy but i am doing something wrong…

February 27, 2012 | 1:15 pm

It sounds like your patch is having a hard time finding synth_voice.maxpat. In the tutorial, both the main synth_patch.maxpat and synth_voice.maxpat are on the Desktop, in other words, in the same folder. Here’s something you can try: make sure both patches are in the same folder, then close them both and reopen synth_patch.maxpat. Does it find synth_voice.maxpat?

Keep in mind also that "p synth_voice" is a subpatch; its contents are part of the main patch. Once you drop the p, both "synth_voice" and "poly~ synth_voice" load the file "synth_voice.maxpat" from disk. For that reason, it must be in a location that Max can find.

If you’re really frustrated, go to menu item Options > File Preferences… to add a new folder for Max to search.

March 5, 2012 | 2:33 am

thanks a lot for you reply Les Stuck, now i am pretty sure it is a bug. I created a new folder into which i save all patches and sometimes it works and sometimes when i rename a new object to the patches name saved earlier it opens up a new patcher window. Then i copy paste the content of the patch but saving again gives me the obvious ‘there is already a file with that name’ dialogue.
It is funny that once the containt is copied across it acts like the patcher is supposed to act ( i can see all the in and outs but once i create a new object again and copy the exact name of the patcher into the new object it opens up an empty patcher.
Little note, i am using maxforlive but that would not be a problem right?

Thanks in advance

July 13, 2013 | 6:55 pm

R: Little note, i am using maxforlive but that would not be a problem right?

Exactly the problem I had. I made sure i was putting the synth_voice file in the same folder as the patcher in live (I did Show in Finder), it did nothing. It worked fine when I open the same patcher without running ableton and do it with both files on the desktop. I guess theres another step to it when you are using m4l? i’m a little bit new to this, so I don’t know what that might be.

April 12, 2015 | 8:45 pm

I know I’m probably doing something really stupid, but my outlet on the ‘poly~ synth_voice 1 @steal 1’ box refuses to show, even after I save the new sub patch with the new ‘in 1’ and ‘out~ 1’. Any thoughts?

July 18, 2015 | 1:19 pm

Why does this patch not work using a Novation Launchpad?

July 18, 2015 | 3:03 pm

I predict that this question will fall off the end of the interwebz

July 18, 2015 | 11:40 pm

"Why does this patch not work using a Novation Launchpad?"

I can confirm here. Not working with 6.latest either…

August 15, 2015 | 4:57 pm

i have used your method but changed the saw~ object to a wavetable with an oscillator but cant get any polyphony and ideas ?

  1. Screen-Shot-2015-08-16-at-00.31.58


September 16, 2015 | 8:45 am

thanks for the very helpful tutorial. Unfortunately I cannot open the original patch when option clicking the title bar of the instance in poly~ . Any idea what the reason for that could be? Thanks

Hans Peter

September 16, 2015 | 12:40 pm

Hi Hans Peter,

In Max 7, I would recommend using the ‘Patcher Windows’ icon in the lower left patcher toolbar. This should show you the patcher hierarchy.


October 9, 2015 | 7:16 am

I’ve copied this tutorial exactly and no outlet ever appears on the "poly~ synth_voice 16 @steal 1" patch. Any idea why this is? Thanks.

October 9, 2015 | 8:56 pm

Hi James,

Do you see any errors in the Max window?

Is the synth_voice.maxpat patcher in Max’s search path? It will have to be in order for poly~ to find it.

What happens when you double-click on the poly~ in a locked patcher?


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

Explore More

Subscribe to the Cycling '74 Weekly Newsletter

Let us tell you about notable Max projects, obscure facts, and creative media artists of all kinds.

* indicates required