Releases: dwhinham/mt32-pi
Releases · dwhinham/mt32-pi
v0.7.1
Added
- "Loading" message when switching SoundFonts.
Changed
- Update to GeneralUser GS v1.511.
- This is a currently-unpublished version from the author, who has made several important fixes to the SoundFont to improve compatibility with FluidSynth v2.1.0+.
- Update to circle-stdlib v15.5/Circle Step 43.2.
- Part level meters in SoundFont mode now have "bases".
Fixed
- Incorrect
-dirty
suffix on version string on clean builds (again!). - Crash when using USB MIDI interface in SoundFont mode, or when resuming from power saving mode.
- Hang on startup if unsupported LCD size is set in configuration file.
v0.7.0
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.
v0.6.2
Fixed
- USB MIDI was broken since 0.6.0.
Changed
- SSD1306 font updated to perfectly match the original MT-32's Sanyo DM2011 font.
v0.6.1
Changed
- Update to libmt32emu v2.4.1.
- Update to circle-stdlib v15.3/Circle Step 43.1.
- Update to inih r52.
- Boot speed improved by another ~0.3 seconds when
usb = on
thanks to improvements in Circle Step 43.1.- If updating from an old version, make sure you replace
config.txt
to benefit from a couple of other boot optimizations.
- If updating from an old version, make sure you replace
Fixed
- Correct version string is now extracted from ROM 2.04 when switching to it.
- The
none
option fori2c_dac_init
was broken in v0.6.0. - Spacing between status row text and part level meters on SSD1306 improved.
v0.6.0
Added
- Ability to configure initial MIDI channel assignment (new configuration file option).
- Ability to set custom baud rates for GPIO MIDI (new configuration file option).
- This could be useful for those wanting to use SoftMPU's serial MIDI mode.
- Multiple ROM sets can now be used and switched between using custom SysEx commands. See new
README.md
section and config file for full details.- Please move your
MT32_CONTROL.ROM
andMT32_PCM.ROM
into a new subdirectory calledroms
. - For now, the old locations are still checked as a fallback, but this may be removed in a later version.
- Please move your
Changed
- Update to circle-stdlib v15.2/Circle Step 43.
- Boot speed improved by ~0.5 seconds by using
start_cd.elf
/start4cd.elf
andfixup_cd.dat
/fixup4cd.dat
.- If updating from an old version, make sure you replace
config.txt
and add the new*.elf
and*.dat
files when updating your SD card to benefit from this.
- If updating from an old version, make sure you replace
- LCD/OLED part level meters moved to the upper row(s).
- Config file parsing now more efficient.
Fixed
- Left/right channels were backwards when using PWM (headphone jack) - thanks @ctrl_alt_rees and YouTube viewers.
v0.5.0
Added
- Program change messages are now shown on the LCD.
Changed
- Activity LED now flashes when other types of messages are received (e.g. SysEx or control changes).
Fixed
- Complete rewrite of the MIDI parser code.
- Active Sensing race condition fixed and timeout increased to 330ms as recommended by the MIDI 1.0 Specification.
v0.4.0
Added
- Software "MIDI thru" for GPIO interface (new configuration file option).
Changed
- Update to circle-stdlib v15.1/Circle Step 42.1.
- Enhanced error reporting for GPIO MIDI parser.
Fixed
- Hanging/missing notes when GPIO MIDI interface used with some modern MIDI sources that transmit using Running Status optimizations.
- Many thanks to @thorr2, @nswaldman, @icb-, @glaucon1984, @Braincell1973, @Higgy69, and @olliraa for patiently reporting, testing and brainstorming the cause of this critical issue.
- MIDI messages could be passed to
mt32emu
with the wrong length.
v0.3.1
Added
- Missing sample
[lcd]
config section frommt32-pi.cfg
.
Fixed
- Incorrect
-dirty
suffix on version string on clean builds. - Possibility of overflowing text in SSD1306 Print() function.
- Rhythm part on SSD1306 was inverted on activity instead of being blocked out.
v0.3.0
Added
- Initial support for HD44780 (4-bit direct and I2C) character LCDs and SSD1306 128x32 graphical OLEDs.
- Configuration file changes required - please check documentation.
v0.2.1
Fixed
- Crash when using
resampler_quality = none
- thanks @nswaldman.