Mt32 Pi Versions Save

🎹🎶 A baremetal kernel that turns your Raspberry Pi 3 or later into a Roland MT-32 emulator and SoundFont synthesizer based on Circle, Munt, and FluidSynth.

v0.10.1

2 years ago

Changed

  • Update to libmt32emu v2.5.2.
  • Update to FluidSynth v2.2.2.
  • The default value for usb_serial_baud_rate is now 38400 to reflect the most common use case (connecting to a vintage PC with SoftMPU).

Fixed

  • The MIDI level meters could get stuck under certain circumstances (issue #142).
  • Sending a MIDI reset SysEx would cause the MIDI level meters to instantly zero rather than fall off gradually.
  • Sending a Yamaha XG reset SysEx will now reset the MIDI level meters.
  • SC-55 text SysEx messages of length <32 were not being displayed.

v0.10.0

2 years ago

Added

  • Brand new boot splash logo when using graphical displays - many thanks to James Sparkman for the excellent pixel art conversion!
    • You can re-enable verbose startup messages with a new configuration file option.
  • Basic networking support (Wi-Fi or Ethernet) - read the new [network] section of the configuration file to learn how to enable and set it up.
    • In order to use Wi-Fi, firmware must be copied to the root of the SD card (new firmware directory in release package), and SSID/password must be added to wpa_supplicant.conf (example file in release package).
  • Support for receiving MIDI over the network via Wi-Fi or Ethernet using the RTP-MIDI/AppleMIDI protocol.
  • Ability to configure FluidSynth reverb/chorus effects (new configuration file options).
    • Defaults can be set in the [fluidsynth] section.
    • Additional sections can be added to create "profiles" that override the defaults for specific SoundFonts.
    • An example section has been added for GeneralUser GS (assumed to be at index 0) as recommended by S. Christian Collins.
  • The rotary encoder direction can now be reversed (new configuration file option).
  • Ability to use the HDMI port for digital audio (new configuration value for output_device). This allows you to use inexpensive HDMI audio extractors or VGA+audio dongles to get better audio quality out of the Raspberry Pi (compared to the headphone jack).
  • Additional boot files for the Compute Module 4 and Raspberry Pi 400 are now included.
    • The Raspberry Pi 400 is untested.
  • Ability to use USB serial devices for MIDI input (CDC class devices, CH341, CP2102, FT231x, PL2303); a new configuration file option has been added to allow setting the desired baud rate.

Changed

  • Update to circle-stdlib v15.8/Circle Step 44.1.
  • Update to libmt32emu v2.5.0.
  • Update to FluidSynth v2.2.1.
  • Complete overhaul of LCD code.
    • MIDI level meters now account for channel volume and expression properly and are much more responsive.
    • Long text messages (e.g. SoundFont names) are now scrolled, short text messages are now centered.
    • Basic support for smaller 16-character wide screens has been added.
  • The activity LED no longer illuminates for System Common or System Real-Time messages.
  • Default clock speeds/voltages have been lowered for Pi 4/CM4 in config.txt for reduced energy usage and SoC temperature.
  • Reduced energy usage when LCD and MiSTer control interface are both disabled (core suspended).
  • "GM Mode On"/"GS Reset" SysEx messages are now handled by new internal FluidSynth code which also changes how MIDI Bank Select messages are interpreted. Additionally, "XG Reset" SysEx messages are now handled.

Fixed

  • USB plug/unplug events now bring mt32-pi out of power saving mode.
  • Some USB MIDI devices that violate the USB specification were unusable (discussion #102) - a workaround in the USB driver has been implemented. Thanks to @fabbrimichele for reporting and @rsta2 for the fix!
  • Hang on "Init USB" when no USB controller is present (e.g. a Compute Module 4-based system with no external XHCI controller). Huge thanks to Serdaco for donating the CM4 and I/O board for testing!
  • Boot failure on the 1GB Raspberry Pi 4/CM4 because of a bug in the memory allocator.
  • The MIDI level meters would often miss fast notes (e.g. percussion).

v0.9.1

3 years ago

Fixed

  • The gpio_baud_rate option was broken in v0.9.0. Thanks to Scandy for the quick report and testing the fix!

v0.9.0

3 years ago

Added

  • The number of seconds to wait before a SoundFont begins loading after using the switch button can now be adjusted (new configuration file option).
  • MT-32 ROMs and SoundFonts can now be loaded from USB mass storage devices.
    • This feature should be considered unstable/experimental - some USB disk/Raspberry Pi combinations can encounter freezes/crashes.
    • SoundFonts will be rescanned and the indices updated if a USB storage device is inserted or removed.
    • USB storage devices must be FAT32 formatted.
    • MT-32 ROMs must be located under a roms directory on the root of the device.
    • SoundFonts must be located under a soundfonts directory on the root of the device.
    • Only one USB storage device is supported at a time.
    • The SoundFont index continues counting after the last SD card SoundFont index. If there are no SoundFonts on the SD card, the first USB storage SoundFont starts at index zero.
    • Special thanks to @rsta2 for providing important USB driver fixes and mmmonkey Pete for donating a Raspberry Pi 3B for testing!
  • Ability to set master volume gain and reverb gain for mt32emu (new configuration file options).

Changed

  • Update to circle-stdlib v15.6/Circle Step 43.3.
  • Update to inih r53.
  • Update to FluidSynth v2.1.8.
  • Update ARM toolchains to 10.2-2020.11.
  • Config file options are now case-insensitive.
  • The usb configuration option has been moved to the [system] section. Please update your configuration file if you use this option.

Fixed

  • Large files mistakenly placed in the roms directory could cause mt32-pi to crash on startup (issue #93).

Removed

  • Old ROM loading behavior now removed. If you have MT32_CONTROL.ROM/MT32_PCM.ROM files in the root of your SD card, please move them to the roms subdirectory otherwise they will fail to load.
  • Unused USB drivers removed (kernel size reduced).
  • Unused C standard library functions now removed by linker (kernel size reduced).

v0.8.5

3 years ago

Fixed

  • 128x32 SSD1306 displays were broken (flickering) since 0.8.4.

v0.8.4

3 years ago

Added

  • USB plug & play support for MIDI interfaces.
    • You can now connect/disconnect USB MIDI devices at runtime and they will be used instead of the GPIO MIDI interface when present.
  • Support for SH1106 OLED displays - many thanks to @arananet for donating a screen!

Changed

  • Update to libmt32emu v2.4.2.
  • Update to FluidSynth v2.1.7.
  • Rotary encoder now has an acceleration curve applied to it when turned quickly.
  • The SoundFont name is now displayed before loading when using a button to cycle through them.

Fixed

  • Some USB MIDI devices were not being detected at startup.
  • "LCD-Auto" mode for MiSTer was broken because of a bug in the SSD1306 framebuffer difference-checking code.
  • Rapidly-changing panning values could cause pops/clicks in FluidSynth - many thanks to @Asbrandt for reporting and @derselbst for the quick fix!
    • This was particularly noticable in the Descent Level 1 soundtrack's bassline, for example.
    • A temporary patch has been applied until FluidSynth v2.1.8 is released.

v0.8.3

3 years ago

Added

  • FluidSynth is now reset when a "GM Mode On" or "GS Reset" SysEx message is received.
  • FluidSynth is now reconfigured when GS "Use For Rhythm Part" SysEx messages are received for songs that use multiple drum kits.

Fixed

  • Switching MT-32 ROM sets via button press would fail if the next ROM set wasn't present. For example, if an MT-32 "new" set wasn't present, then pressing the button would not switch from "old" to CM-32L as expected.

v0.8.2

3 years ago

Changed

  • Update to FluidSynth v2.1.6.

Fixed

  • Missing part level bar segments and "glitchy" rendering when using HD44780 LCDs.
  • Missing part level bar "bases" when using HD44780 LCDs.
  • Backlight would not be turned off/on for supported I²C HD44780 LCDs when entering/exiting power saving mode.

v0.8.1

3 years ago

Fixed

  • Boot failure on Raspberry Pi 4 due to inability to allocate heap.

v0.8.0

3 years ago

Added

  • Support for the SSD1309 using the ssd1306_i2c driver - many thanks to @flynnsbit for testing!
  • Support for the Blokas Pisound - many thanks to @sigkill for providing the device for development!
  • Support for configuration using MiSTer FPGA's OSD via an I²C control interface in certain cores - many thanks to @sorgelig for collaborating and implementing the MiSTer side!
  • Support for physical buttons and rotary encoders with two "simple" control schemes (new configuration file option).
    • simple_buttons allows connecting 4 buttons for switching synth, switching MT-32 ROM/SoundFont, decreasing and increasing volume.
    • simple_encoder allows connecting 2 buttons and a rotary encoder (with button). Volume is adjusted by turning the encoder, encoder button will be enabled in a future release.
    • Menu system/additional button features will come in future releases; this is just to get basic functionality implemented.
    • Details on how to wire these controls will be made available in the wiki.
  • Animated loading "spinner" for when large SoundFonts are being loaded.
    • This will probably be replaced with a progress bar in the future.
  • Support for Roland SC-55 "graphics" messages when using a graphical display.
    • A good example of this is the Roland "Star Games" demo MIDI (STARGAME.MID).
  • Ability to set master volume gain for FluidSynth (new configuration file option).

Changed

  • SD card I/O speed increased by up to ~180% for cards that support High Speed mode (almost all cards available for purchase today).
    • This should dramatically reduce SoundFont loading times.
  • MT-32 ROM/SoundFont switch messages are now only shown when the appropriate synth is active.
  • A message is now displayed on the LCD for a second just before entering power saving mode.

Fixed

  • Switching MT-32 ROM sets whilst MIDI was playing could cause a crash.
  • Switching SoundFonts too often (especially large ones, and especially while MIDI is playing) could result in a crash due to an out-of-memory condition.
    • This has been solved with some upstream fixes by the FluidSynth team combined with a custom memory allocator that should prevent fragmentation. Many thanks to @derselbst and @jjceresa for their help!
  • Power saving mode would never be entered whilst in SoundFont mode if the user had switched SoundFonts.