Skip to content

Releases: dwhinham/mt32-pi

v0.7.1

26 Nov 01:45
Compare
Choose a tag to compare

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

22 Nov 23:42
Compare
Choose a tag to compare

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 new armstub8-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 reconfigure mt32-pi for this release.
  • 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

18 Oct 04:12
Compare
Choose a tag to compare

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

13 Oct 19:49
Compare
Choose a tag to compare

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.

Fixed

  • Correct version string is now extracted from ROM 2.04 when switching to it.
  • The none option for i2c_dac_init was broken in v0.6.0.
  • Spacing between status row text and part level meters on SSD1306 improved.

v0.6.0

04 Oct 22:42
Compare
Choose a tag to compare

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 and MT32_PCM.ROM into a new subdirectory called roms.
    • For now, the old locations are still checked as a fallback, but this may be removed in a later version.

Changed

  • Update to circle-stdlib v15.2/Circle Step 43.
  • Boot speed improved by ~0.5 seconds by using start_cd.elf/start4cd.elf and fixup_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.
  • 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

19 Sep 21:24
Compare
Choose a tag to compare

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.
    • USB and GPIO MIDI streams are now handled by a single code path.
    • Corrupt SysEx messages (e.g. from cheap/no-name MIDI interfaces) will no longer cause mt32-pi to hang (issue #25).
    • 2-byte Running Status messages are now handled correctly (issue #26).
  • Active Sensing race condition fixed and timeout increased to 330ms as recommended by the MIDI 1.0 Specification.

v0.4.0

02 Sep 22:15
Compare
Choose a tag to compare

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.
  • MIDI messages could be passed to mt32emu with the wrong length.

v0.3.1

08 Aug 11:22
Compare
Choose a tag to compare

Added

  • Missing sample [lcd] config section from mt32-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

03 Aug 20:00
Compare
Choose a tag to compare

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

14 Jul 22:21
Compare
Choose a tag to compare

Fixed

  • Crash when using resampler_quality = none - thanks @nswaldman.