Skip to content

Add support for MIDI playback using FluidSynth#26

Merged
benstone merged 4 commits intobenstone:mainfrom
mcayland:feature/fluidsynth
Mar 25, 2026
Merged

Add support for MIDI playback using FluidSynth#26
benstone merged 4 commits intobenstone:mainfrom
mcayland:feature/fluidsynth

Conversation

@mcayland
Copy link
Contributor

This series adds support for MIDI playback using FluidSynth to further replicate the original 3D Movie Maker experience with 3DMMEx! Whilst it is possible to use FluidSynth MIDI playback on both Windows and SDL builds, the default is to continue to use the Windows in-built MIDI player where present: but of course the main purpose is to allow MIDI playback on non-Windows platforms such as Linux.

Many thanks to @benstone for their help and advice when implementing this feature, including adding the prerequisite miniaudio audio backend along with a refactoring of the existing MIDI stream classes to make implementing this feature considerably simpler.

@mcayland
Copy link
Contributor Author

I've just re-pushed to remove a couple of remaining SDL_ references that are no longer required - sorry about that!

This method can be used by callers of the audio stream implementation to manage
the ringbuffer usage.
Add FindFluidSynth.cmake to locate and use Fluidsynth on SDL builds, as well
as FetchFluidSynth.cmake to download binary libraries and headers on
Windows.

Ensure that the github workflows are updated to reflect the new
dependency.
This MIDI stream implementation uses FluidSynth to render audio samples for
MIDI events used to play the background music on both Windows and Linux.

Enable the FluidSynth MIDI stream implementation by default for SDL builds and
for Windows builds include a MIT-licensed SoundFont from the musecore project.

Update the THIRD_PARTY_LICENSES.txt to reflect the new dependencies.
Use the new MIDI streaming playback device for SDL-based builds.
@mcayland mcayland force-pushed the feature/fluidsynth branch from b301fa2 to cd4280d Compare March 24, 2026 22:57
@benstone benstone merged commit 9b30092 into benstone:main Mar 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants