Hi Jose,
I found the Polyphonic Universal Player [1], I really liked it, and I would like to ask you about it.
- I would like to build a simple classic synthesizer, that you can change its waveform, filter and envelope parameters. How could I send these parameters to my voice? In the patch '4-noteoff.pd', I understand that you send the ADSR parameters with a list that you call tag, is it possible to create a tag thus I can use the object [route] to get each different parameter from it? Do you have an example of a similar simple synthesizer?
There are three different ways of controlling the synthesis voices: (see http://grrrr.org/research/software/upp/upp-tut4/ http://grrrr.org/research/software/upp/upp-tut4/)
at creation time, through object creation arguments (to upp.flow or upp.xc/upp.x2/upp.xf after your synthesis patch): Use this for fixed parameters that never change for different events.
at invocation time, that is, when you start the individual event. ADSR-curves would be an example. The list that goes to the left inlet of upp.flow/upp.xc/upp.x2/upp.xf starts the event. The first list element is called „tag“, it identifies the event. It should be unique for polyphonic events, e.g. a key number, but it can also be a running index
at run time, when the event is already active. You can use the right inlet of upp.flow/upp.xc/upp.x2/upp.xf to send a message to the event. The first atom of this message is again the „tag“, so that the event can be found. The rest of this message is your choice, it can be used to stop the event, or to change parameters.
- I do not understand how the subpatch [spat mono] works, could you explain it?
spat_mono is one of a couple of spatialization abstractions - there are also spat_stereo, spat_quad, spat_varbus etc. to route your monophonic voice to different busses/loudspeakers. spat_mono itself does hardly anything, it is just a container for your synthesis abstraction. It routes the audio output of your synthesis abstraction to a bus defined by the first creation argument $1. The rest of the creation arguments are used the instantiate your synthesis abstraction. $2 is its name, $3 etc. are creation arguments.
i hope that helps, best, Thomas