You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(excuse me for the lengthy description, I took this from a discussion thread, with minimal effort to re-phrase)
I use the Wavesynth FX generated with faust2api for ESP32 in polyphonic mode.
First some background on the API.
It contains several ways to start a sound/note:
One can feed Midi data into the propagateMidi command. For playing a note this has to be called 2 times. First with a noteon status (9n), then with a noteoff (8n).
By feeding a pitch and velocity to a keyOn command, followed by feeding the same pitch to keyOff
By creating a voice with newVoice, setting the frequency (and other parameters) for this voice with setVoiceParamValue commands, using the voice address returned by newVoice. The last parameter set in this sequence is gate -> 1 to start the sound. Switching the sound off is done by setting gate to 0. If I am correct, the voice instance must be deleted with deleteVoice.
I use methods 1 and 2 in the same app.
The issue relates to setting sound parameters with setParamValue or setVoiceParamValue.
When I do this with setParamValue and propagateMidi notes respond accordingly. When I do this for a specific voice created with keyOn, I use setVoiceParamValue with the acquired voice address and this notes plays with the selected parameters for that voice. All allready playing notes do not change their characteristics, which is fine. However, when I start a note with propagateMidi after that this also plays with the last characteristics set for the specific voice. Is this intended behavior by design? I would think it would be useful to let voices where characteristics are not set with setVoiceParamValue always play with those set with setParamValue ?
So current behaviour of setParamValue and setVoiceParamValue is:
setParamValue: sets sound parameters for ALL voices including already playing ones and future ones
setVoiceParamValue: sets sound parameters for ALL future voices including the one that has just been started (and who'se address is used for this call)
A more "intuitive" way of operation would be:
setParamValue: sets sound parameters for ALL FUTURE voices where a setVoiceParamValue is not used.
setVoiceParamValue: sets sound parameters for this specific voice and NOT for any other future voice.
Just another way to describe the current counter-intuitive way of operation:
ALL future notes respond to the last setting made by either setParamValue OR setVoiceParamValue. With setParamValue also still playing PAST notes are affected.
The text was updated successfully, but these errors were encountered:
I have a solution for what I wanted to achieve: using channel-specific DSP parameters for notes. I now use only keyOn/keyOff and setVoiceParamValue. I described my method in a discussion that quite accidentally was started today: #696
(excuse me for the lengthy description, I took this from a discussion thread, with minimal effort to re-phrase)
I use the Wavesynth FX generated with faust2api for ESP32 in polyphonic mode.
First some background on the API.
It contains several ways to start a sound/note:
I use methods 1 and 2 in the same app.
The issue relates to setting sound parameters with setParamValue or setVoiceParamValue.
When I do this with setParamValue and propagateMidi notes respond accordingly. When I do this for a specific voice created with keyOn, I use setVoiceParamValue with the acquired voice address and this notes plays with the selected parameters for that voice. All allready playing notes do not change their characteristics, which is fine. However, when I start a note with propagateMidi after that this also plays with the last characteristics set for the specific voice. Is this intended behavior by design? I would think it would be useful to let voices where characteristics are not set with setVoiceParamValue always play with those set with setParamValue ?
So current behaviour of setParamValue and setVoiceParamValue is:
A more "intuitive" way of operation would be:
Just another way to describe the current counter-intuitive way of operation:
ALL future notes respond to the last setting made by either setParamValue OR setVoiceParamValue. With setParamValue also still playing PAST notes are affected.
The text was updated successfully, but these errors were encountered: