Hi,
just tested anew:
* When
[playing WhySynth] from a MIDI keyboard, there's an audible
delay
between releasing the key until the note gets cut off.
Hmm, I haven't observed this on my end, except that it would
be expected if your output envelope mode is AASRR or ASRRR, or
even AAASR with a 'hold' shape on the last segment -- all of these
would appear to be delays before the note cut off.
didn't notice it again; I guess you're right and I did choose patches
with envelope seetings you mentioned above. Sorry for the traffic.
* Pedal hold
gets recognized, but notes are only held until I
release the last note. This way I cannot hold a note via the pedal
and tweak parameters.
Hmm, I can't reproduce this either -- sustain works fine from both
vkeybd and my KX88 MIDI controller. I'm really curious if you would
have the same trouble with Xsynth-DSSI or hexter, as their sustain is
based on very similar, but not identical code, and are well tested.
Something else you could try would be to edit src/whysynth.h and
define Y_DEBUG to be YDB_NOTE, then recompile, watch stderr
as you run it and see if the note on/off and sustain CCs are reaching
the plugin in the correct sequence.
I did, some lines you'll find attached. BTW: Zyn does behave the same:
Hold is recognized as long as at least one note remains active, but
hold is lost as soon as the last note gets released. Further thing: My
pedal does not necessarily send Hold on as a value of 64 or 127 but as
arbitrary values between 64 and 127. The jack is a multi jack, I can
even connect a swell pedal to it and assign an arbitrary controller
number.
Best regards
ce
whysynth.so y_synth_control_change: got sustain control of 0
whysynth.so y_handle_event called with event type 10
whysynth.so y_synth_control_change: got sustain control of 87
whysynth.so y_handle_event called with event type 10
whysynth.so y_synth_control_change: got sustain control of 125
whysynth.so y_handle_event called with event type 10
whysynth.so y_synth_control_change: got sustain control of 127
whysynth.so y_handle_event called with event type 6
whysynth.so y_synth_alloc_voice: key 67 voice 0x80e4128
whysynth.so y_handle_event called with event type 6
whysynth.so y_synth_alloc_voice: key 65 voice 0x80e4ec8
whysynth.so y_handle_event called with event type 7
whysynth.so y_synth_note_off: key 67 rvel 0 voice 5 note id 42
whysynth.so y_handle_event called with event type 7
whysynth.so y_synth_note_off: key 65 rvel 0 voice 6 note id 43
whysynth.so y_handle_event called with event type 7
whysynth.so y_synth_note_off: key 72 rvel 0 voice 3 note id 35
whysynth.so y_handle_event called with event type 10
whysynth.so y_handle_event called with event type 10
whysynth.so y_synth_control_change: got sustain control of 0