sfztools/sfizz

note_polyphony=1, note_selfmask=off, and envelope release phase

mathieugarcia opened this issue · 3 comments

Hi,

When note_polyphony=1 and note_selfmask=off are set, and an amplitude envelope exists (tested only with a FlexEG) with a non-zero release time, the old, released voices will still play the release phase of the envelope.

The only way to achieve true monophony on a region is to set the release time to 0 or disable the FlexEG.

Is this expected behavior or a bug ? To me, when the region is set to be monophonic, it should only allow one voice to play at a time and steal / kill any that have been released and still ringing.

Thanks for your feedback.

However, using polyphony=1 works as expected to achieve region monophony.

paulfd commented

Hi, kinwie from the sfz Discord is really the specialist of this kind of considerations :) There's a lot of finesse around these and possibly alot of varying implementations. note_polyphony in general is not strictly a polyphony (as in how many notes are playing). It might well be a bug, but we'd need to make more extensive tests across implementations or ask one of the gurus about this.

I tested it on Sforzando and while the outputs are slightly different (which I should investigate separately), the behavior with respect to voice muting seems to be the same with the following file:

<region> 
    sample=RED_ZEPPELIN_2023_repack/49-Zildjian-20-Crash-1.wav
    ampeg_release=4
    note_polyphony=1
    note_selfmask=off 
    loop_mode=no_loop
    pitch_keytrack=0

I'd say polyphony is really the opcode you want for strict polyphony enforcement but maybe someone on the SFZ discord will know more.