-
Notifications
You must be signed in to change notification settings - Fork 267
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Per-channel ALL_SOUND_OFF when seeking/stopping player #980
Per-channel ALL_SOUND_OFF when seeking/stopping player #980
Conversation
albedozero
commented
Sep 15, 2021
•
edited by derselbst
Loading
edited by derselbst
- Only send all sound off on channels which had notes playing
- Send it as ALL_SOUND_OFF CC to a MIDI router to route it to a different synth channel afterwards
send fluid_synth_all_notes_off instead of fluid_synth_all_sounds_off when seeking the player, as the latter creates audio artifacts by cutting off notes without allowing them to complete their release phase
add an array that can be used to specify which channels to send all_notes_off when stopping or seeking the player
allow sending fluid_synth_all_notes_off on specific channels instead of all channels when seeking or stopping the player, but keep the default behavior of sending on all channels
Discussion/explanation in #981 |
MAX_NUMBER_OF_CHANNELS is limit when looping over player->notesoff_channels
put all relevant notes into release phase, regardless of sustain or sostenuto
avoids hanging notes, even when sustain pedal is depressed
This reverts commit 0395e91.
This reverts commit 03c07c4.
This reverts commit cedfb64.
This reverts commit 545f1e9.
add a setting that tells the player whether to call fluid_synth_all_notes_off for all channels when seeking/stopping, or send an ALL_SOUNDS_OFF event on only the channels that have played notes
remove calls to fluid_synth_all_sounds_off when seeking/stopping player and instead send ALL_SOUND_OFF control change event on playing channels
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks really good, just some smaller ideas/comments.
I think it could be extended to also send ALL_CTRL_OFF when seeking. That way we get around the hanging notes problem with sustain pedals.
use a fluid_list_t to keep track of channels on which the player has sent messages
Kudos, SonarCloud Quality Gate passed! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Thanks!
- Only send all sound off on channels which had notes playing - Send it as ALL_SOUND_OFF CC to a MIDI router to route it to a different synth channel afterwards