Added
- FluidSynth synthesizer engine v2.1.5 for using SoundFonts for General MIDI support and more.
- You can switch between MT-32 and SoundFont mode at runtime using SysEx.
- SoundFonts can be switched at runtime using SysEx, with some caveats for large SoundFonts (see FAQ section of README).
- New configuration file options for changing default synthesizer and SoundFont.
- GeneralUser GS v1.471 included as default SoundFont - many thanks to S. Christian Collins for kindly giving permission!
- Ability to invert the display orientation for SSD1306 (new configuration file option).
- Support for 64 pixel high SSD1306 OLED displays - many thanks to @ctrl_alt_rees for donating a screen!
- Ability to set I2C clock speed (new configuration file option).
- This is useful for allowing larger displays to refresh at a faster speed; see config file for details.
- Power saving mode with configurable timeout (new configuration file option).
- The CPU clock speed will be lowered, audio device stopped, and LCD backlight turned off (when possible) after a configurable number of seconds to save energy.
- Any MIDI activity will instantly bring the system out of power saving mode.
- Undervoltage/throttling detection -
mt32-pi
will now warn the user when the firmware detects an undervoltage/CPU throttling condition.
Changed
- Update to circle-stdlib v15.4.
- New multi-core architecture; audio rendering and LCD updates moved to their own dedicated CPU cores, leaving MIDI and interrupt processing on the primary core.
- Kernels for Pi 3 and 4 are now compiled for AArch64 (64-bit) for better performance.
- When upgrading, you must replace the
config.txt
file on your SD card and add the newarmstub8-rpi4.bin
file for Pi 4. - You should remove old
kernel*.img
files from your SD card. - It's recommended that you clear your SD card (except for your
roms
directory) and reconfiguremt32-pi
for this release.
- When upgrading, you must replace the
- Synth engines now compiled with more aggressive optimizations enabled to benefit from ARM NEON instructions.
- Due to the above three changes, it's possible that Raspberry Pi 2 may be more usable with this release, but this is untested.
- Kernel size significantly reduced by removing mt32emu ROM loader dependency on C++ iostreams.
- Improved layout of 4-line HD44780 LCD.
- MT-32 status line moved to bottom row.
- Part levels now 3 rows high.
- Default sample rate and chunk size reduced to 48000Hz and 256 samples.
Fixed
- SSD1306 text alignment was off by one pixel.
- SSD1306 part level meters' top pixels would flicker with long sustained notes.
- Part level meters would suddenly snap to a lower level if a quiet note followed a loud note instead of falling off.
- Possibility of overflowing text in HD44780 Print() function.