Poly~ object and multiple instances of my osc

Dominik Dudek's icon

Hi,
i'm having a bad time understanding and trying to get my monosynth patch become polysynth.

In my main patch i've got notein connected to pack, and then to prepend midinote and finally to poly~ osc 4. When i double click poly~ object, it opens a new window- osc (1). I am aware, that this is the first instance, in this case, of 4 instances. But my "master" osc got dial that changes current waveform. When I choose sawtooth in osc (1) (and no waveform in the other instances) it will only play once in four notes. Am i doing something wrong, or thats the way it works? Can i set osc waveform (or other parameters) once for all instances?

p.s.
Or maybe i should make more inlets in my osc, and then make it controllable from main synth patch, not from osc subpatch?

kLSDiz's icon

Dominik, the devil is in the detail. Post your project (edit->copy compressed both patchers or save them as a project and attach it to the post), it will be much easier to propose a solution. Each voice is a separate instance of "osc" patcher and you set the waveform in only one voice (patcher). You have to set it (by sending a message) in all voices (patchers). It can be done in many ways (target 0, send/receive to name a few). hth.

Dominik Dudek's icon

synth:

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

and osc:

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

Dominik Dudek's icon

So, whats the proper way to have controllable parameters inside poly~ object for every instance of voice?

kLSDiz's icon

The proper way? An effective one. Eg. target 0 method, which set the target for direct messages to all voices. You can also send messages from main patcher directly to all voices using remote messaging with named send/receive pairs, but in larger projects it may lead to name clashes, as Max has one flat global namespace.

poly~global_control.zip
zip 5.78 KB
poly~ global controls (target 0)

Other method is to pull data from main patcher. The simplest one is to use [value] objects, but I prefer leveraging pattr system for that purpose:

poly~global_control_pattr.zip
zip 5.82 KB
poly~ global controls via binding to UI elements (pattr)

Dominik Dudek's icon

thanks for that, as you wrote that first post I started to experiment with send/receive objects.
And i think this will work for me. Thanks!

kLSDiz's icon

Yes, send/receive approach is the simplest one (remote naming of parameters) – as long as you don't need your synth as a separate module it should work fine.
gladajkudchelpju