MT 32 synthesis - dwhinham/mt32-pi GitHub Wiki
mt32-pi contains the Munt synthesizer engine, which provides a faithful emulation of the Roland MT-32 and CM-32L synthesizer modules. To enable it, you must add some MT-32 or CM-32L ROM images to the roms
directory of your SD card. These are not included with the release for copyright reasons.
⚠️ Note: To use the MT-32 synthesizer, you must either set it as the default synth in the config file, or switch to it at runtime using a custom SysEx message or button press.
ROM support
mt32-pi can make use of all ROMs that Munt supports, and allows switching between ROM sets on-the-fly for greater compatibility with various games. For further information about which games work best with each ROM set, consult the MT-32 game compatibility list.
A ROM set consists of:
- a control ROM (contains the code that runs on the MT-32's CPU).
- a PCM ROM (contains the sound samples).
For simplicity, mt32-pi categorizes the known control ROMs into three ROM sets:
- MT-32 (old): The original version of the MT-32, ROM versions 1.xx.
- MT-32 (new): The later version of the MT-32, ROM versions 2.xx.
- CM-32L: A "computer music" module compatible with the MT-32, but with additional sound effects for games, and the LCD/buttons removed.
As for PCM ROMs, there are only two known versions - the MT-32 version (common to both models of MT-32), and the CM-32L version.
To summarize, to get the most out of mt32-pi, you'll need 5 ROM files in total - old/new/CM-32L control ROMs, and MT-32/CM-32L PCM ROMs.
The following tables lists all compatible ROM files:
Control ROMs
Name | mt32-pi ROM set | SHA-1 hash |
---|---|---|
MT-32 v1.04 | Old | 5a5cb5a77d7d55ee69657c2f870416daed52dea7 |
MT-32 v1.05 | Old | e17a3a6d265bf1fa150312061134293d2b58288c |
MT-32 v1.06 | Old | a553481f4e2794c10cfe597fef154eef0d8257de |
MT-32 v1.07 | Old | b083518fffb7f66b03c23b7eb4f868e62dc5a987 |
MT-32 BlueRidge | Old | 7b8c2a5ddb42fd0732e2f22b3340dcf5360edf92 |
MT-32 v2.04 | New | 2c16432b6c73dd2a3947cba950a0f4c19d6180eb |
MT-32 v2.06 | New | 2869cf4c235d671668cfcb62415e2ce8323ad4ed |
MT-32 v2.07 | New | 47b52adefedaec475c925e54340e37673c11707c |
CM-32L v1.00 | CM-32L | 73683d585cd6948cc19547942ca0e14a0319456d |
CM-32L v1.02 | CM-32L | a439fbb390da38cada95a7cbb1d6ca199cd66ef8 |
CM-32LN v1.00 | CM-32L | dc1c5b1b90a4646d00f7daf3679733c7badc7077 |
PCM ROMs
Name | mt32-pi ROM set | SHA-1 hash |
---|---|---|
MT-32 PCM | Old/New | f6b1eebc4b2d200ec6d3d21d51325d5b48c60252 |
CM-32L PCM | CM-32L | 289cc298ad532b702461bfc738009d9ebe8025ea |
ROM scanning
On startup, mt32-pi will scan the roms
directory and load the first ROM it encounters that matches each category. In other words, if you have two "old" control ROMs (e.g. version 1.05 and 1.07), only one of them will be used and assigned to the "old" category slot. Therefore, it's recommended that you only place one ROM per category in the roms
directory.
The file names or extensions of the ROMs don't matter and will have no effect on the ROM scanner; mt32-pi will scan and detect their types automatically using the SHA-1 hash of the file.
When multiple ROM sets are available, the default set to load on startup can be set in the configuration file.
Switching ROM sets
You can use a custom SysEx message to make mt32-pi quickly swap ROM sets at runtime. If the ROM set is available and loaded, the emulated MT-32 will be restarted with the new ROMs active.
It may be useful to create scripts (e.g. a DOS batch file) that send mt32-pi ROM set swap messages before launching a game.
If you add a control surface to your Raspberry Pi, ROM sets can be switched using Button 2.