mirror of
https://github.com/dwhinham/mt32-pi.git
synced 2026-07-08 17:56:50 +00:00
a0ad972cdd6170bac2c4886d2ec55b159a1ae30e
When the 1MHz timer wraps, the MIDI level meters would appear to be stuck after a while. Implement some additional state tracking to guard against timer wrap. Fixes #148.
- A work-in-progress baremetal MIDI synthesizer for the Raspberry Pi 3 or above, based on Munt, FluidSynth and Circle.
- Turn your Raspberry Pi into a dedicated emulation of the famous multi-timbre sound module used by countless classic MS-DOS, PC-98 and Sharp X68000 games!
- 🆕 Add your favorite SoundFonts to expand your synthesizer with General MIDI, Roland GS, or even Yamaha XG support for endless MIDI possibilities.
- 🆕 Includes General MIDI and Roland GS support out of the box thanks to GeneralUser GS by S. Christian Collins.
- No operating system, no complex Linux audio configuration; just super-low latency audio.
- Easy to configure and ready to play from cold-boot in a matter of seconds.
- The perfect companion for your vintage PC or MiSTer FPGA setup.
✔️ Project status
- Tested on Raspberry Pi 4 Model B and Raspberry Pi 3 Model A+, B, and B+.
- Pi 2 works, but only with concessions on playback quality.
- Pi 0 and 1 are unfortunately too slow, even with an overclock.
- PWM headphone jack audio.
- Quality is known to be poor (aliasing/distortion on quieter sounds).
- It is not currently known whether this can be improved or not.
- I²S Hi-Fi DAC support.
- This is the recommended audio output method for the best quality audio.
- MIDI input via USB or GPIO MIDI interfaces.
- Configuration file for selecting hardware options and fine tuning.
- LCD status screen support (for MT-32 SysEx messages and status information).
- Simple physical control surface using buttons and rotary encoder.
- MiSTer FPGA integration via user port.
- Network MIDI support via macOS native network MIDI, rtpMIDI on Windows, or rtpmidid on Linux.
- FTP access to files and auto-update is planned.
✨ Quick-start guide
- Download the latest release from the Releases section.
- Extract contents to a blank FAT32-formatted SD card.
- Read the SD card preparation wiki page for hints on formatting an SD card correctly (especially under Windows).
- If you are updating an old version, you can just replace the
kernel*.imgfiles. The other boot files will not change often; but keep an eye on the changelog just in case.
- For MT-32 support, add your MT-32 or CM-32L ROM images to the
romsdirectory - you have to provide these for copyright reasons.- You will need at least one control ROM and one PCM ROM.
- For information on using multiple ROM sets and switching between them, see the MT-32 synthesis wiki page.
- The file names or extensions don't matter; mt32-pi will scan and detect their types automatically.
- Optionally add your favorite SoundFonts to the
soundfontsdirectory.- For information on using multiple SoundFonts and switching between them, see the SoundFont synthesis wiki page.
- Again, file names/extensions don't matter.
- Edit the
mt32-pi.cfgfile to enable any optional hardware (Hi-Fi DAC, displays, buttons). Refer to the wiki to find supported hardware.- MiSTer users: Read the MiSTer setup section of the wiki for the recommended configuration, and ignore the following two steps.
- Connect a USB MIDI interface or GPIO MIDI circuit to the Pi, and connect some speakers to the headphone jack.
- Connect your vintage PC's MIDI OUT to the Pi's MIDI IN and (optionally) vice versa.
📚 Documentation
More detailed documentation for mt32-pi can now be found over at the mt32-pi wiki. Please read the wiki pages to learn about all of mt32-pi's features and supported hardware, and consider helping us improve it!
❓ Help
Take a look at our FAQ page for answers to the most common questions about mt32-pi.
If you need some help with mt32-pi and the wiki doesn't answer your questions, head over to the discussions area and feel free to start a topic.
⚠ Note: Please don't use the Issues area to ask for help - Issues are intended for reproducible bug reports and feature requests. Thankyou!
🙌 Acknowledgments
- Many thanks go out to @rc55 and @nswaldman for their encouragement and testing! ❤️
- A huge thankyou to everyone who has donated via Ko-Fi, PayPal, or Amazon - your support means a lot! ❤️
- The Munt team for their incredible work reverse-engineering the Roland MT-32 and producing an excellent emulation and well-structured project.
- The FluidSynth team for their excellent and easily-portable SoundFont synthesizer project.
- S. Christian Collins for the excellent GeneralUser GS SoundFont and for kindly giving permission to include it in the project.
- The Circle and circle-stdlib projects for providing the best C++ baremetal framework for the Raspberry Pi.
- The inih project for a nice, lightweight config file parser.
Description
Releases
20
Languages
C++
83%
Python
6.8%
Shell
4.6%
C
3.1%
Makefile
2.4%
Other
0.1%