OpenMPT 1.29 release candidate available

Started by Saga Musix, May 09, 2020, 11:50:41

Previous topic - Next topic

Saga Musix

Almost one and half years after the initial OpenMPT 1.28 release, we are now ready to release OpenMPT 1.29. It took a bit longer than expected, but there are many great improvements in this release that hopefully make the wait worthwhile.

As always, current test builds can be downloaded from (for 32-bit builds) or (for 64-bit builds).

We have also started updating the Wiki / Manual to reflect the changes in OpenMPT 1.29, and it's mostly done. As always, you can find these changes at

If all goes well, OpenMPT 1.29 will be released in about two weeks time, on the weekend of 23rd/24th of May 2020. So please give it a try and report any issues you might be having with this version, so that they can be fixed before the official release!

Here's the detailed changelog as of r12801 (a few changes might not be documented yet):

Tree view
- [New] Can now rearrange sequences through drag & drop.
- [New] Shortcut (.lnk) files to modules, samples and directories are now resolved.
- [New] Allow Forward / Backward mouse buttons to be used for folder navigation in Instrument Library.
- [New] Changing the instrument library directory / module can now also be achieved by editing the library header item (slow double-click).
- [Imp] Can now also import samples and instrument from modules in sample browser using Ctrl + (Shift +) Enter.
- [Imp] Added rename context menu entry in addition to slow double-click.
- [Imp] Duplicating / inserting sequences inserts them next to the selected item. Duplicating a sequence now keeps its original name and adds "(Copy)" to it.
- [Imp] Double-clicking an empty sequence now makes it the current sequence.

General tab
- [Imp] Improved tempo tap button accuracy by using least squares algorithm rather than a simple average. The tempo is now also rounded rather than truncated for formats that do not support fractional tempos.

Pattern tab
- [New] Can now merge a selection of patterns into a single pattern from the order list context menu.
- [New] Can now split a pattern into two patterns from the pattern editor context menu.
- [New] Row insertion and deletion can now also be done globally, affecting all patterns up to the next stop (---) pattern.
- [New] ProTracker- / FastTracker-like shortcuts for cutting, copying and pasting entire channels and patterns to separate clipboards.
- [New] New shortcut "Lose Selection".
- [New] New shortcuts to cycle between sequences.
- [New] Can now split sub songs into multiple sequences from the sequence context menu.
- [New] Tooltips are shown for pattern properties, channel headers and plugin names.
- [Imp] Moving patterns in the order list now behaves more logically (moving them to the right inserts them to the right of the dragged-on item). To make this change obvious, the insertion point is now displayed with a bold line.
- [Imp] Previous / Next Order shortcuts now ignore skip patterns (+++).
- [Imp] A group of channels can now be assigned to a record group at once by drag-selecting their channel headers.
- [Imp] Channel aftertouch is now recorded to all active note channels.
- [Imp] Duplicating / inserting sequences inserts them next to the current sequence. Duplicating a sequence now keeps its original name and adds "(Copy)" to it.
- [Imp] Improve live parameter recording performance from non-bridged plugins.
- [Imp] Order list separator / line color didn't work well if the window background color was dark.
- [Imp] Improved screen reader read-out of order list.
- [Imp] Pattern navigation and data entry now instantly trigger screen reader updates, unless a module is currently playing.
- [Fix] Seeking with sample sync did not follow instruments with custom tuning.

Pattern tab::Chord Editor
- [Imp] Clicking a key on the keyboard no longer automatically replaces the last note of the chord, new notes are only added to the chord if there is room for more notes. Instead, existing notes can now be dragged around.
- [Imp] Can now specify notes up to two octaves below the base note.
- [Imp] The dialog can now be resized, and hitting the X button no longer saves the modified chords.

Sample tab
- [New] Support little-endian AU / SND files.
- [Imp] Instantly apply result of auto-tuning to playing channels.
- [Imp] Allow resampling ratios greater than 1:512 or 512:1 again with r8brain.
- [Imp] Cross-fading can now also be applied if no loop has been set but a selection has been made. The selection is then automatically set to be the sample loop.
- [Imp] Improve precision of displayed auto-vibrato rate in tooltip.
- [Fix] Adlib instrument are now always forced to be saved in S3I format, even when WAV or FLAC is selected.
- [Fix] Fix accuracy and consistency of sample grid selection and grid markers with very long samples.

Instrument tab
- [Imp] Added screen reader support to note map.
- [Imp] Envelope navigation and modification now instantly trigger screen reader updates, unless a module is currently playing.
- [Imp] SFZ: Instrument envelopes imported / exported with SFZv2 flexible EGs.
- [Imp] SFZ: Support for #include, macro redefinition, multiline comments, filter envelope import, synthesized samples, amplitude opcode, fractional finetune values and various other small improvements in both import and export.
- [Imp] SFZ: Change filename of modified samples (loop cross-fade, offset and phase inversion) so that the original files are not modified forever.
- [Fix] SFZ: Exported sample loop length was off by one.
- [Fix] SFZ: Possible hang when importing malformed #define statement.

Comments tab
- [New] Can now audition samples and instruments using regular note entry keys.
- [New] Added shortcuts to switch between sample and instrument lists (Default: Tab) and edit selected item (Enter).
- [New] Can now copy sample and instrument names (context menu).

VST / DMO Plugins
- [Imp] Resize plugin window appropriately if switching between presets results in a change of the menu bar height.
- [Mod] There are some hybrid VST 2 / 3 plugins using the .vst3 file extension. It is now possible to drag & drop them on OpenMPT and add them through the Plugin Manager. Folder scan does not pick them up for now, as it might result in too many annoying warnings.
- [Mod] A warning is shown when the likely cause for a plugin loading failure is a shortage of Fiber Local Storage indices.
- [Fix] To circumvent a bug in some plugins made with SynthEdit 1.4 versions before February 2020, there is now a hidden setting "VST Plugins.FullyUnloadPlugins" that can be toggled to avoid fully unloading plugins when closing them. Alternatively, the plugins can also be bridged instead to avoid the crash.

VST::Plugin Bridge
- [Imp] Speed up retrieval of parameter values when saving.
- [Fix] The stability of bridged plugins has been greatly improved. Most, if not all plugins that did not work previously should run just fine now.

- [New] In addition to A500 filter settings, the Amiga resampler can now also use A1200 filter settings and unfiltered output.
- [Fix] Fix some inaccuracies in OPL emulator (original fixes by JP Cimalando).

- [Imp] Raise tempo limit from 512 to 1000 BPM.
- [Imp] Custom tunings can now be used with OPL instruments.
- [Imp] Custom tuning and sequence names can now contain any Unicode characters.
- [Imp] When closing a file, a proper dialog is shown for handling modified / missing external samples.
- [Mod] Sequence names now start at 1 rather than 0.

- [Fix] Instrument and sample panning should not override channel panning for following notes.
- [Fix] SBx is now prioritized over Bxx commands that are to the left of it.
- [Fix] Various fixes for envelope resetting.

- [New] Add support for reading OggMod OXM files (XM with Vorbis-compressed samples).
- [Imp] Raise tempo limit from 512 to 1000 BPM.
- [Mod] If a file contains patterns longer than 1024 rows, they are now clamped to 1024 rows instead of 64 rows.

XM::Compatible Playback Mode
- [Fix] Do not reset note-off status on portamento if there is no instrument number.

- [Mod] Support importing empty pattern commands with non-empty parameters. They can still modify the parameter memory, so ignoring them can cause wrong effect parameters to be used.
- [Fix] Offset beyond loop end wraps around to loop start like in Scream Tracker 3 + GUS (previously it just keep playing from the loop start, which is neither what GUS nor Sound Blaster drivers do). If there is no loop, the sample is stopped (consistent with both GUS and Sound Blaster output).
- [Fix] Notes cannot be retriggered after they have been cut.
- [Fix] Previous note offset is no longer used for retriggered notes if there was no instrument number next to the Qxy effect.

- [Fix] Sample swapping now also works if the sample that is being swapped from does not loop. Swapping to a non-looped sample now stops playback once the swapped-from sample reaches its (loop) end.
- [Fix] Fix early song ending  due to ProTracker pattern jump quirk (EEx + Dxx on same row) if infinite looping is disabled. Fixes Haunted Tracks.mod by Triace.
- [Fix] Previous note offset is no longer used for retriggered notes if there was no instrument number next to the E9x effect.
- [Fix] Vibrato type "ramp down" was upside down.

Other formats
- [Imp] MED: Greatly improved MED import. Synthesized instruments are still not supported but support was added for: Multisampled instruments, delta samples, more pattern commands, Hold and Decay, VSTi and MIDI output, multiple songs and many other small changes.

Audio I/O
- [Imp] ASIO: Provide 64-bit floating point if supported by the driver.
- [Imp] ASIO: Support deferred processing. Can be turned off by setting "Sound Settings.AllowDeferredProcessing" to false if it causes trouble.
- [Mod] Audio driver crashes are no longer silently masked as they may leave the program in an inconsistent state. The new hidden setting "Sound Settings.MaskDriverCrashes" can be used to revert to the old behaviour.
- [Mod] Notify users if they use a deprecated sound device on startup.

- [New] MIDI recording now supports Hold Pedal CC messages.
- [Imp] Use new scaling mode for non-DPI-aware applications on Windows 10 1809 or newer that makes fonts look less blurry on high-DPI displays.
- [Imp] When prompting to save modified samples, also check for files that no longer exist on disk.
- [Imp] SF2: Support instrument-global regions, region-specific sample loops, region tuning (only with a value of 0 for drum programs) and multi-instrument presets.
- [Imp] Loading sound fonts no longer requires to pre-cache the entire file in memory. This makes it possible to load huge sound fonts even in 32-Bit builds.
- [Imp] Legacy Playback Behaviour dialog is now searchable and resizable.
- [Imp] ultrasnd.ini import: Support section-specific PatchDir. If no path is specified, fall back to paths relative to the INI filename rather than the current directory, which we have no control over.
- [Mod] A portable installation of OpenMPT is now identified by the presence of a file called "OpenMPT.portable" rather than an entry in mptrack.ini. Existing portable installations are migrated accordingly.
- [Mod] mptrack.exe was renamed to OpenMPT.exe. Please update any old custom shortcuts or file associations to point to the new executable. For existing installations, the installer will try to create a symbolic link to keep the old filename working.
- [Fix] Possible crashes when loading files from network drives on instable network connections.
- [Fix] Use the default theme-aware font in various parts of the UI which now also scales correctly in high-DPI mode. The new font is different from the previous default (Tahoma) on modern Windows versions so the looks of the program are slightly changed even at 100% scaling.
- [Fix] Icons were broken when using custom UI scaling factors in Windows 10 that didn't result in integer icon sizes and high-DPI mode was enabled.
- [Fix] MIDI Export: Fix note-on / note-off conflict when the same note is triggered on two different pattern channels.
- [Reg] Maximum polyphony setting was removed. Even the slowest supported CPUs can handle 256 channels. The setting is still available as an advanced setting "Sound Settings.MixChannels" (defaults to 256).
- [Reg] Pre-SSE2 x86 CPUs are no longer supported. This includes Intel Pentium 3 and older, AMD Athlon XP and older and various other third-party CPUs.
- [Reg] Support for Windows XP and Windows Vista has been dropped.
- [Reg] mpg123, SoundTouch and LAME are no longer optional components; without the respective DLL files in the application directory, OpenMPT will no longer start.

Bundled plugins
- [Imp] MIDI I/O Plugin: Allow to enter fractional millisecond latency values.
- [Imp] I3DL2Reverb: Provide plugin presets based on OpenMPT's global reverb presets.

Third-Party Libraries
- [Imp] Update nlohmann json (v3.7.3), PortAudio (2020-03-26), r8brain (4.6), RtAudio (5.1.0)
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.


The roadmap still shows

0000071: [File Format Support] Faulty octamed importer (Saga Musix)
0001293: [libopenmpt-modplug emulation layer] libmodplug should have version 0.8.9.x (manx)
0001295: [Feature Request] Support SFZ v2 Opcodes?

in scope for 1.29. Will these still be implemented prior to release? Or maybe re-scheduled for a later version?

Saga Musix

If you look closely at the changelog and/or comments in the respective issue, you will see that they are already implemented, but before closing the respective issues, we want to collect more feedback from the reporters. Please don't take the roadmap more seriously than we do. :)
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

Saga Musix

In addition to the changelog above, the following things have changed:
Tree view
- [Fix] Opening a module with external samples in the sample browser broke sample previewing for all following modules.

Sample tab
- [Fix] Increased some OPL editor label sizes so that they work better on Wine.
- [Imp] Speed up initial tab rendering.

- [Imp] Allow NNA / DNA note-off / note fade to affect OPL notes the same way they affect samples.
- [Mod] Improved OPL channel allocation when more than 18 notes are active, so that channels that have completely faded out are prioritized over channels that have already been released but have not faded out yet.
- [Fix] Previewing an OPL instrument could cause the first pattern channel to no longer be played back correctly.
- [Fix] OPL channels were not affected by "Reset channels on loop" setting.

- [Mod] Disable retrigger with short notes quirk for modules saved with Chibi Tracker, as it does not implement that quirk.
- [Fix] Duplicate Check Type "Sample" should only be applied if the instruments match, too.
- [Fix] Duplicate Check Type "Note" should compare pattern notes, but it was comparing the new pattern note against the old translated note.

Third-Party Libraries
- [Imp] Update mpg123 to v1.26rc2.

If you have the time and are feeling brave, please feel free to explore and test these changes (in particular OPL playback; hopefully no new stuck notes are being caused by these changes :) )

This weekend I will do some more changes to S3M playback, and then we're mostly good to go. Documentation is also up-to-date and is apparently being proof-read right now (thanks Teimoso ;) ).
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.


Not only previewing, the PCM-data loading altogether broke ;) - just try dragging the broken samples into a module

Now I'm being a bit fussy I know...
My favourite chord transition: Fmaj9 -> Gadd9 :D (I also like it's ±1 semitone variants)

Saga Musix

Sure, but writing changelog entries is always a balance between providing the right amount of information and keeping it short and sweet. I think for people who were affected by the issue it should be clear enough. :)
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

Saga Musix

» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.