Support for network MIDI via raw UDP socket (new configuration file option). This is compatible with MiSTer MidiLink.
New Bash/Python scripts for making the installation/update process easier, especially on MiSTer FPGA (see the scripts directory for download/information).
Changed
Update to circle-stdlib v15.12/Circle Step 44.4.1.
Implemented RNFR/RNTO (file/directory renaming) in the FTP server.
Support for SSD1312 OLED displays via new horizontal mirroring configuration file option - thanks @nikitalita!
Changed
Update to libmt32emu v2.6.1.
This update adds support for MT-32 ROM versions 2.06, 2.07 and CM-32LN ROM version 1.00 (CM-32LN is untested).
Update to FluidSynth v2.2.5.
MT-32 LCD emulation replaced with new libmt32emu v2.6+ display emulation.
FluidSynth's master volume gain is now an effects profile setting and can be overridden on a per-SoundFont basis (issue #248). Thanks to @c0d3h4x0r for the suggestion!
Fixed
A bug in the config file reader (unterminated string) could cause the last entry in the file to be read as a corrupted value if the file ended without a newline.
Some FTP commands could work without being logged in.
Some DAC accessories which make use of a hardware "mute" pin (e.g. Adafruit I²S Audio Bonnet) could be held in a muted state due to a conflict with the Blokas Pisound driver's probing routine (issue #233). The driver now resets these GPIO pins to the initial power-on state, which should fix this issue. Thanks to @htamas2 for the report!
Sudden loud noise caused by switching SoundFonts whilst receiving MIDI data (issue #247). Any note-on messages received whilst busy switching SoundFonts are now discarded. Thanks to @c0d3h4x0r for the report!
You must update config.txt, otherwise the Zero 2 W will boot the 32-bit Raspberry Pi 2 kernel, which will result in lower performance.
This model requires new boot firmware and Wi-Fi firmware - make sure you update bootcode.bin, fixup*.dat, start*.elf, and the contents of the firmware directory.
PWM audio is available on GPIO pins 12/13 for this model.
Experimental embedded FTP server for performing updates/config changes without replacing the SD card (new configuration file options).
This FTP server is a very basic implementation which DOES NOT feature any kind of transport layer security/encryption. Therefore, you should NOT enable this feature on a public network or expose the Raspberry Pi to the Internet.
The FTP server is disabled by default.
Support for Yamaha MU-series SysEx text messages, and bitmap messages when using a graphical display.
Changed
Update to circle-stdlib v15.10/Circle Step 44.3.
Update ARM toolchains to 10.3-2021.07.
Update to libmt32emu v2.5.3.
Update to FluidSynth v2.2.4.
The default FluidSynth polyphony value has been reduced from 256 to 200 to account for the lower out-of-the-box performance of the Pi Zero 2 W.
For the vast majority of use cases, this will have no noticable difference.
If you prefer, a +200MHz overclock can be applied to the Zero 2 W match the performance of the Raspberry Pi 3B (1.2GHz), in which case you can use the original higher polyphony value of 256. Commented-out example of how to do this is now provided in config.txt.
Heatsink/cooling recommended to ensure stability if you decide to do the above.
Fixed
"WiFi disconnected!" would be shown on the LCD when Ethernet was disconnected.
The SoundFont loading "spinner" was broken since v0.10.0.
Broken UART error handling since v0.10.2 which would result in erratic, false MIDI activity under some circumstances. Many thanks to WiteWulf and Alex Mitchell for the report!
Ability to swap the MT-32 stereo channels in order to work around bugs in games that are not aware of the MT-32's reversed panpot value interpretation (new configuration file option and custom SysEx message).
Changed
MIDI and UART related warnings are now hidden unless verbose mode is enabled in the configuration file. This is a preventative measure against false bug reports stemming from buggy games/user equipment, and to improve aesthetics (real synthesizers tend to silently ignore harmless stray MIDI bytes).
Fixed
Guru Meditation that could occur if non-default mt32emu options were specified but the synth was unavailable due to missing ROMs.
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.
macOS users can use this feature without any additional software (see Apple documentation).
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).
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).