Skip to content

@github-actions github-actions released this Feb 10, 2021

Fixed

  • 128x32 SSD1306 displays were broken (flickering) since 0.8.4.
Assets 3

@github-actions github-actions released this Feb 7, 2021

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.
Assets 3

@github-actions github-actions released this Jan 16, 2021

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.
Assets 3

@github-actions github-actions released this Jan 6, 2021

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.
Assets 3

@github-actions github-actions released this Jan 3, 2021

Fixed

  • Boot failure on Raspberry Pi 4 due to inability to allocate heap.
Assets 3

@github-actions github-actions released this Jan 3, 2021

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).
  • 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.
Assets 3

@github-actions github-actions released this Nov 26, 2020

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.
Assets 3

@github-actions github-actions released this Nov 22, 2020

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.
Assets 3

@github-actions github-actions released this Oct 18, 2020

Fixed

  • USB MIDI was broken since 0.6.0.

Changed

  • SSD1306 font updated to perfectly match the original MT-32's Sanyo DM2011 font.
Assets 3

@github-actions github-actions released this Oct 13, 2020

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.
Assets 3