Skip to content
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

Feature: FluidSynth and libmt32emu Support #250

Open
nickkeane opened this issue Jan 24, 2023 · 5 comments
Open

Feature: FluidSynth and libmt32emu Support #250

nickkeane opened this issue Jan 24, 2023 · 5 comments

Comments

@nickkeane
Copy link

nickkeane commented Jan 24, 2023

Add support for FluidSynth General MIDI and libmt32emu.

@nickkeane nickkeane changed the title Feature: FluidSynth and Munt Support Feature: FluidSynth and libmt32emu Support Jan 24, 2023
@tonioni
Copy link
Owner

tonioni commented Feb 9, 2023

Do you mean directly using it (not using via virtual serial port which is already possible)? I can't seem to find any clear programming examples that shows how to implement it properly..

@nickkeane
Copy link
Author

nickkeane commented Feb 10, 2023

Yes, directly integrated into the Application via a library (libfluidsynth, libmt32emu) with configs for usage and MT-32/CM-32L ROM Paths and Soundfont Paths.

I know DOSBox Staging has a version of libfluidsynth and libmt32emu integrated, so that code base has an implementation of both libraries. I can try digging through the source to find where it's implemented, but you might want to ask their team for help in how they did it in case I miss something. I think DOSBox-X has a similar implementation as well.

https://github.com/dosbox-staging/dosbox-staging
https://github.com/joncampbell123/dosbox-x

FluidSynth has API documentation of the library for the latest 2.x branch here:

https://www.fluidsynth.org/api/UsageGuide.html

https://github.com/FluidSynth/fluidsynth

Some documentation and the source code for libmt32emu can be found in Munt's mt32emu subfolder at:

https://github.com/munt/munt/tree/master/mt32emu

There's also a project called EmuSC I forgot to mention that's looking to emulate a Roland SoundCanvas SC-55 using ROM dumps as a library, but it's currently in very early development. Nobody has integrated it yet, so I wouldn't worry about that one for a few months or years probably.

https://github.com/skjelten/emusc

@nickkeane
Copy link
Author

nickkeane commented Feb 10, 2023

From a UI standpoint, something like this would be useful to get all the settings in if integrated:

image

In this case the SystemMIDI option would represent the setting for the external MIDI access as it is now.

@tonioni
Copy link
Owner

tonioni commented Jul 27, 2023

Munt MT-32/CM-32L is now built-in. It was surprisingly easy to do, nice library API, documentation was a bit lacking as usual :)

Fluidsynth does not seem to be as simple (basically: init, move midi bytes from emulated serial port to emulator byte by byte, read samples from emulator times/emulated second. Does Amiga emulator even need it? MIDI is quite rare and main reason (imho) is few Sierra and Lucasfilm (and few others) games that support MT-32.

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

No branches or pull requests

2 participants