> but there is no corresponding public API to
> release a voice, which is needed for implementing note_off

There is fluid_synth_stop() which forces the voice into release stage, unless 
it is sustained or sostenutoed. Instead of passing in the fluid_voice_t*, you 
have to use fluid_voice_get_id(voice) . This may be important, because the 
pointer points to a pool of voices. Voices may change during rendering calls 
(released, killed, stealed, etc.) so the pointer may not uniquely identify the 
voice. The ID on the other hand identifies a group of voices that are spawned 
by the same noteon event. If you want to control the voice ID yourself (e.g. 
one unique ID for a single voice), I suggest to use fluid_synth_start() .

Note that fluid_synth_noteon() and fluid_synth_noteoff() take care of proper 
legato playing. You won't have that when manually spawning voices, just in case 
that matters for you.

Also note that fluid_synth_noteon() kills overlapping notes.

Tom




_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to