OpenMPT released

Posted on
by Saga Musix

It's been one and a half years since the initial release of OpenMPT 1.29, and in the meantime we have provided many updates to make it more stable and add a few new features and improve details. Now we are finally ready to present the first release of OpenMPT 1.30. It took us way longer than expected, but the great number of improvements and new features was hopefully worth the wait.

Here is a short summary of the most notable new features:

Breaking Changes:

  • The OpenMPT installer was unified: There is now a single installer for installing all supported versions of OpenMPT. So on a 64-bit machine, both the 32-bit and 64-bit version will be installed. This changes the location of OpenMPT executables, so if you have any custom shortcuts or file associations, they must be updated to the new executable locations!
  • The installer always registers OpenMPT as a known program for all supported file extensions but no longer enforces a change to the default file assocations. If you want to change an association, you can do so via the Windows control panel or right-clicking on a supported file and choose "Open With...".
  • DirectSound support was removed.

General improvements include:

  • Experimental builds with reduced functionality are now available again for Windows XP. These builds can also be used on macOS with Wine on systems where 32-bit applications are no longer supported.
  • OpenMPT is now also available for Windows on ARM.
  • OpenMPT can now be updated automatically.
  • Keyboard shortcuts can now also be bound to MIDI notes in addition to MIDI CCs.

OpenMPT's file format support has been greatly expanded in this version:

  • OPL register dumps can now be exported as VGZ / VGM / DRO files.
  • OpenMPT 1.30 adds support for the following module formats: Symphonie / Symphonie Pro (SymMOD), Digital Symphony (DSym), FM Tracker (FMT), Scream Tracker Music Interface Kit (STX) and music from Psycho Pinball and Micro Machines 2 (MUS).
  • OpenMPT can now detect whether an S3M file was made in Scream Tracker 3 with a SoundBlaster or Gravis Ultrasound and will apply playback compatibility settings accordingly.
  • IFF MAUD samples can now be imported.
  • The raw sample import is now more flexible and supports more raw format options.
  • TakeTracker MOD files with magic bytes TDZ1, TDZ2 and TDZ3 are now also recognized.
  • Modules packed with various legacy compression formats (in particular many more XPK variants) can now be read. All formats supported by the ancient library are supported.
  • Added support for SF2 files with Vorbis and FLAC samples (typically referred to as SF3 or SF4).

The pattern editor has also seen improvements:

  • Channels can now be color-coded for easier navigation and visual grouping.
  • The Go To dialog can now also directly jump to a timestamp.
  • Selecting a non-existing pattern in the order list now no longer keeps displaying the previously edited pattern, to avoid giving the impression that the recently-selected pattern is actually being edited.

The following improvements have been made with regards to plugins:

  • OpenMPT and the default plugin bridge now use Data Execution Prevention by default. For older plugins that are not compatible with DEP, high-entropy ASLR or Large Address Awareness, a legacy plugin bridge is provided, which will be used for all plugins previously added to OpenMPT. Newly added plugins will not use the legacy bridge, unless they are detected to require it or if the user chooses so.
  • Added a menu item in the plugin editor to rename the plugin instance.
  • Bypass status is now shown in title bar of plugin editors.
  • If an instrument's MIDI program or bank was set to 1, it wasn't transmitted together with the first note playing on that channel, only when a different program or bank was previously chosen on that channel. Now it's always transmitted with the first note.

In the sample and instrument editor, you can look forward to these changes:

  • Added a timeline to the sample editor which shows sample positions in seconds or samples, and visualizes loop points and cue points, allowing them to be dragged around with the mouse. Press Shift while dragging for finetuning.
  • Added option to convert ping-pong loops to unidirectional loops.
  • Resampling can now optionally adjust offset commands in patterns.
  • Loading or renaming a sample now automatically updates the associated instrument's name too if the instrument previously had the same name as the sample or no name, and if no other samples are assigned to it.
  • Dropping an item from the tree view with Shift pressed now drops it into a new sample / instrument slot.
  • It is now possible to extract a complete drum instrument into a single instrument slot by dragging its folder rather than an individual note.
  • Envelope zoom level is now remembered when switching between tabs.

A couple of playback behaviours have been changed and improved:

  • Volume column o00 + effect column Oxx now work together as percentage offset. If parameter extension #xx is used, it increases the granularity of the percentage. SAx does not affect this command combination.
  • Volume column oyy + effect column Oxx (yy > 0) now work together as well: The effect column offset is added to the sample cue.
  • Two new commands, Finetune (+xx) and Finetune (Smooth) (*xx), which double as micro-tuning commands and absolute pitch wheel messages for plugins. They are centered around value 80h, and fractional precision can be extended using an additional # command on the next row. The micro-tuning depth corresponds to the pitch wheel depth of the instrument; 1 semitone is used in sample mode.
  • Improved precision of ping-pong loop length particularly for very small samples.
  • Samples are now played at the correct volume (in relation to plugins / OPL instruments) when rendering or playing modules in mono.
  • For instruments using custom tuning, S2x (Set Finetune) now adjusts the finetune of the note by -8...+7 tuning steps.
  • Various playback improvements for IT, XM, S3M and other formats.

But this is really just the tip of the iceberg. For a complete list of changes, have a look at the release notes and the full version history.

With the advent of OpenMPT 1.30, libopenmpt also reaches the version 0.6 milestone with some new API additions and the same playback improvements as OpenMPT.