Related discussion
#1227
Is your feature request related to a problem?
When looping a midi track using FluidSynth with the SDL_mixer 3.0 library there is a pause when the track ends before it rewinds and is played again from the beginning.
I think I understand it has to do with reverb in samples and there can still be some voices active at the end of a midi track. So it's not a bug.
But I found this old issue I mentioned above. It was closed with a patch to workaround the case when looping a song with Fluidsynth.
Now I looked at the code of SDL_mixer 3.0 and it loops the track itself, while SDL_mixer 2.0 used the FluidSynth functionality to loop tracks. For that reason the special case that was implemented in the patch is not working here.
Describe the solution you'd like
Perhaps a new flag that can be set to cutoff playback at the end of the track?
Telling the FluidSynth player that there is an external playlist or loop active.
It could then be added as another condition to this if statement:
if(fluid_list_next(player->currentfile) == NULL && player->loop == 0)
Describe alternatives you've considered
No response
Additional context
No response
Related discussion
#1227
Is your feature request related to a problem?
When looping a midi track using FluidSynth with the SDL_mixer 3.0 library there is a pause when the track ends before it rewinds and is played again from the beginning.
I think I understand it has to do with reverb in samples and there can still be some voices active at the end of a midi track. So it's not a bug.
But I found this old issue I mentioned above. It was closed with a patch to workaround the case when looping a song with Fluidsynth.
Now I looked at the code of SDL_mixer 3.0 and it loops the track itself, while SDL_mixer 2.0 used the FluidSynth functionality to loop tracks. For that reason the special case that was implemented in the patch is not working here.
Describe the solution you'd like
Perhaps a new flag that can be set to cutoff playback at the end of the track?
Telling the FluidSynth player that there is an external playlist or loop active.
It could then be added as another condition to this if statement:
if(fluid_list_next(player->currentfile) == NULL && player->loop == 0)
Describe alternatives you've considered
No response
Additional context
No response