Releases: dwhinham/mt32-pi
Releases · dwhinham/mt32-pi
v0.10.1
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
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 towpa_supplicant.conf
(example file in release package).
- In order to use Wi-Fi, firmware must be copied to the root of the SD card (new
- Support for receiving MIDI over the network via Wi-Fi or Ethernet using the RTP-MIDI/AppleMIDI protocol.
- macOS users can use this feature without any additional software (see Apple documentation).
- Windows users can use rtpMIDI by Tobias Erichsen.
- Linux users can use rtpmidid by David Moreno.
- 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.
- Defaults can be set in the
- 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
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
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 theroms
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
Fixed
- 128x32 SSD1306 displays were broken (flickering) since 0.8.4.
v0.8.4
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
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
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
Fixed
- Boot failure on Raspberry Pi 4 due to inability to allocate heap.
v0.8.0
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
).
- A good example of this is the Roland "Star Games" demo MIDI (
- 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.