OpenMPT 1.25 releases

Started by Saga Musix, August 16, 2015, 14:09:24

Previous topic - Next topic

Saga Musix

OpenMPT 1.25 has been released today and is a rather big release with great new features. Thanks to everyone who participated in the example song compo and thus also helped testing this new release. ;)

General tab
   [New] <js> Module artist can now be specified.
   [New] <js> Modules can now override the globally configured resampling mode. This setting is only saved in MPTM files, but can also be changed in other formats to quickly change a single module's resampling mode.
   [Mod] <js> Removed player settings button, as the most common (and only?) use case - changing the resampling mode - can now be achieved directly from this tab.
   [Mod] <js> In IT files, the default tempo can no longer exceed 255.
   [Fix] <js> The dB values shown in tooltips were wrong.
   [Fix] <js> When modifying default channel volume or panning using the sliders, default values were reset for all other channels on the same page (tx Xemogasa).

Pattern tab
   [New] <js> In the order list, it is now also possible to just copy the order list pattern numbers instead of their content ("Copy Orders" in context menu or Ctrl+Shift+C by default).
   [New] <js> Added option for smooth (tick-by-tick) pattern scrolling.
   [New] <js> Added hidden setting "Pattern Editor.NoEditPopup", which disables the "editing is disabled" popup and allows note previewing (keyjazz) in all pattern editor columns while editing is disabled.
   [Imp] <js> Apply DNA and NNA settings to live note preview. Entering Note Cut / Off / Fade also instantly previews its effect.
   [Imp] <js> Effect visualizer window size is now remembered across sessions.
   [Mod] <js> Reset beat highlight together with measure higlight (
   [Fix] <js> When deleting orders, the pattern view did not switch to the newly selected order afterwards (tx coda).
   [Fix] <js> Effect visualizer could still not show up properly in some cases (
   [Fix] <js> Make note and data entry shortcuts always operate on octaves instead of +/- 12 notes when using custom tunings (
   [Fix] <js> Show correct note name in status bar for custom tuning notes.
   [Fix] <js> Sample seeking didn't work properly on channels where the last note event was a note-off and didn't apply pitch envelopes.
   [Fix] <js> Panning commands were still applied when seeking even if ProTracker 1/2 mode was enabled.
   [Fix] <js> Playing patterns not present in the order list was broken since OpenMPT (
   [Fix] <js> Jumping to a pattern through the order list would still execute the last row of the previous pattern in some cases since OpenMPT
   [Fix] <js> Fix inconsistencies in the previous / next pattern displays when jumping around in the order list.
   [Fix] <js> Duplicating and inserting patterns didn't update the tree view properly.

Sample tab
   [New] <js> Add Media Foundation (AAC, WMA, ASF, MP1, MP2, MP3, WAV-MSADPCM, ...) sample decoding support on Windows 7 and later (
   [New] <jh> Support loading OggFlac sample files.
   [Imp] <js> Added dropdown menu to New button for duplicating samples.
   [Imp] <jh> Add a dropdown menu to the Open button which allows explicitely importing only known sample formats or only raw samples. This allows importing known formats as raw samples as well as allows avoiding the possibility of raw samples getting mis-interpreted as some known format.
   [Imp] <js> Don't reset sample draw status when modifying a sample.
   [Imp] <js> Show dB values for volume and percentage for panning in tooltip.
   [Fix] <js> Time stretch ratio calculator was always based on the current tempo, not on the user-supplied tempo.

Instrument tab
   [Imp] <js> Added dropdown menu to New button for duplicating instruments.
   [Imp] <js> Pitch/Pan Separation note list uses tuning note names.
   [Imp] <js> Show dB values for volume and percentage for panning in tooltip.

Tree view
   [Mod] <js> Sample / instrument preview is now stopped using Note Cut / Off / Fade keys instead of automatically fading out after some seconds.
   [Fix] <js> Dropping files made the tree view inaccessible until a new drag & drop action was initiated (tx coda).
   [Fix] <js> Previewing UAX samples played them at the wrong frequency.

VST / DMO Plugins
   [New] <js> Instrument random variation is now applied to the velocity of notes sent to instrument plugins.
   [New] <js> Tremor (Ixx) is now also supported for instrument plugins (
   [New] <js> Added hidden setting "VST Plugins.EnableAutoSuspend" which activates plugin auto-suspension for all plugins (later, this will be configurable per plugin). If a plugin didn't emit any sound during the last four seconds, its sound output is automatically suspended.
   [New] <js> It is now possible to override the project path reported to plugins (some plugins can store data alongside the module file) by using the hidden setting "VST Plugins.ProjectPath". In the setting value, %1 is replaced by the module path and %2 by the module filename (tx zetaPRIME).
   [Imp] <js> Automatically create instruments for newly added instrument plugins (
   [Imp] <js> Indicate bitness of non-native plugins in the plugin selection dialog.
   [Imp] <js> The default plugin editor is now DPI-aware.
   [Imp] <js> Allow sending incoming MIDI notes to plugins even if no instrument is assigned to them (pass data as-is).
   [Imp] <js> Loading and restoring missing plugins now also works when adding them through the Scan Folder button.
   [Fix] <js> Some VST plugins (e.g. SmartElectronix Ambience) write directly to the memory chunk that is passed to them when loading preset files. This memory block was not writable since OpenMPT 1.22 and thus caused a crash.
   [Fix] <js> In OpenMPT 1.24, no more than one missing plugin was reported after loading a module.

VST::Specific Plugin Fixes
   [Fix] <js> HERCs Abakos stopped working in OpenMPT

VST::Plugin Bridge
   [Imp] <js> Added support for audioMasterGetChunkFile opcode.
   [Fix] <js> MIDI events sent to 64-bit plugins or 64-bit OpenMPT were garbled.
   [Fix] <js> A couple of plugins whose editor previously froze (e.g. 4klang) will now work fine.
   [Fix] <js> KORG M1 crashed if the editor of more than one shared instance was opened (

   [Imp] <js> Improve NNA channel allocation by also taking volume envelopes into account: If all NNA channels are used and are playing at full note volume, but are effectively muted due to their volume envelope, they can now be reused.
   [Fix] <js> Crash when playing extremely high-pitched samples.

   [New] <js> Support for decimal default tempo (e.g. 123.45 BPM). Note that it is not possible to set decimal tempos using pattern commands yet (
   [New] <js> Support for decimal tempo for instruments' pitch/tempo lock.
   [New] <js> In modern tempo mode, a swing factor can be configured which determines how much every row of a beat contributes to the beat (globally in the Song Properties and per pattern in the Pattern Properties). Unlike manual tempo changes, this will not mess up the timing information sent to plugins (
   [Mod] <js> Newly created MPTM files use modern tempo mode and extended filter range.
   [Fix] <js> Fix potential misreading of some global song settings (was very unlikely to happen).

MPTM::Custom Tuning
   [New] <js> 'd' and '+' can now be used in note names.
   [Mod] <js> Behaviour change: When executing tone portamento and the sample doesn't change between the notes, re-apply the sample settings such as default volume and panning like with normal samples.
   [Fix] <js> Editing a tuning's note name no longer requires to remove the octave number first.

IT::Compatible Playback Mode
   [Fix] <js> Position jump effect on the same row as a pattern loop end immediately cuts the pattern loop.

   [Imp] <js> Detect files made with MilkyTracker 0.90.87 or later and enable FT2 pan law for them.

   [Fix] <js> In S3M files not made with OpenMPT or Scream Tracker, support portamento between different samples again like in old versions of ModPlug Tracker (fixes k_vision.s3m, made in IT).

   [Mod] <js> Heuristically enable ProTracker 1/2 mode if 8xx commands seem likely to be used as sync markers rather than panning in 4-channel MODs.
   [Mod] <js> Treat EXO8 modules to have paired patterns like FLT8 modules.
   [Fix] <js> As in XM and IT, don't reset pattern loop counter on pattern breaks.

Other formats
   [Fix] <js> MT2: Don't load samples for instruments which already have a VST instrument assigned.
   [Fix] <js> Fixed crashes with malformed MED and MDL files and hangs with some truncated compressed IT samples.

Stream Export
   [New] <js> It is now possible to export to a sample slot rather than a file (

Audio I/O
   [Mod] <jh> Add Debug.StopSoundDeviceBeforeDump (default false) setting and change the default behaviour to stop the audio device after dumping the crash information. This helps debugging crashes inside the audio thread with the default settings.
   [Mod] <jh> Remove "Sound Settings.Enable*" hidden settings. Allow switching off individual sound device backends via "Components.Block*" instead.
   [Fix] <jh> PortAudio latency calculation was wrong for WASAPI exclusive mode devices.
   [Fix] <jh> WaveRT devices are now shown as such (instead of WDM-KS) in the options.
   [Fix] <jh> Under increased system load, it was possible that WaveRT devices would stop rendering audio.

   [New] <js> MIDI Mapping: Experimental support for 14-bit MIDI controllers. Combinations of CC 0...31 and CC 32...63 now act as double-precision MIDI messages.
   [New] <js> In the settings dialog, the default artist name and default behaviour for new files (module type / template) can now be specified on the General tab.
   [New] <js> Add the possibility to forget all song window settings in the Display settings.
   [New] <js> Hidden setting Misc.AllowMultipleCommandsPerKey added to allow more than one keyboard shortcut being bound to the same key combination (may do unexpected things with existing mappings with overlapping shortcuts, so beware).
   [Imp] <js> Add dropdown menus to "New" and "MIDI Record" buttons in the main toolbar to select file type and MIDI device respectively.
   [Imp] <js> Tuning dialog: Mouse wheel can now be used to scroll the note map.
   [Mod] <js> Default directories and auto save settings have been merged into a new "Paths / Auto Save" settings tab. "Create backup files" has been moved there as well. "MIDI Record" option has been moved to the MIDI setup.
   [Mod] <jh> Show more useful information in the About dialog.
   [Mod] <jh> More defensive CPU feature detection for really old CPUs.
   [Fix] <js> Using Win+Space to change the Windows input language now takes effect immediately and no longer locks command input.
   [Fix] <jh> UnRAR code required Windows XP, while the rest of the code also works with Windows 2000. Drop the version requirement back to Windows 2000.
   [Fix] <js> Song duration estimation: Pattern loops were only calculated correctly when placed on the last channel. Pattern breaks leading to a row greater than the current pattern's size were not computed correctly.
   [Fix] <js> Fix possible crash when changing the number of channels, mostly happening when appending modules.
   [Fix] <js> When saving an external sample fails while closing the module containing the sample, the module remains open so that the user can investigate the problem.
   [Fix] <js> Hideable message box visibility settings were read from the wrong settings variable since OpenMPT

Third-Party Libraries
   [Mod] Update lhasa (v0.3.0), SoundTouch (v1.9) and UnRAR (v5.3.2).

Installer/release package
   [Mod] <js> A great new set of example songs, with a number of free to use samples in "ExampleSongs\Samples" folder.
   [Mod] <js> Installer now places the OpenMPT icon directly in the Start menu rather than a subfolder.
   [Mod] <js> Updated US_it2_(lpchip).mkb.
» 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

After roughly a month, OpenMPT has been released and mostly contains bugfixes, but also a few other noteworthy improved and new features.

General tab
   [Fix] <js> Cloning plugins failed to copy the patch data in 32-bit legacy builds (and regular 32-bit builds before OpenMPT 1.25).

Pattern tab
   [Imp] <js> Update vibrato effect memory when seeking.
   [Fix] <js> Undoing pattern size changes didn't update the scrollbar size (
   [Fix] <js> Possible crash when resizing pattern during playback with smooth pattern scrolling enabled.
   [Fix] <js> In smooth scroll mode, the dragging rectangle sometimes had the wrong colours.

Sample tab
   [New] <js> Can now slice samples at their cue points into several separate samples.
   [Imp] <js> Add support for Vorbis comments LOOPSTART and LOOPLENGTH in FLAC files to specify loop points (some audio engines seem to use this).
   [Fix] <js> Writing FLAC samples with a sample rate above 65535 Hz that was not a multiple of 10 Hz, or any sample rate above 655350 Hz failed. Note for software developers: Since FLAC sample rates are capped at 655350 Hz, OpenMPT now writes the real sample rate in a Vorbis comment called SAMPLERATE if it exceeds this limit. Feel free to add support for this tag in your software.

Instrument tab
   [Imp] <js> Also show the currently playing note in the status bar for notes received via MIDI (tx Xemogasa)
   [Fix] <js> Possible crash when recording MIDI while there was no instrument yet (tx Xemogasa).

Tree view
   [New] <js> Allow folders to be shown in lower part of sample browser through a right-click option.

VST / DMO Plugins
   [Fix] <js> Loading FXBs with parameter sets instead of chunks was broken.
   [Fix] <js> Update plugin name and slot number in editor window when renaming or moving a plugin.
   [Reg] <js> Disable the plugin window minimize feature on Wine, as it does not work as intended.

   [Fix] <js> Pitch envelopes were upside down in non-linear slides mode since OpenMPT
   [Fix] <js> Avoid VSTi notes to stack up in XM files due to missing NNA handling (no, you should still not use VSTis in XM).

   [Fix] Patterns containing command-less parameter values (which can be entered in some IT-compatible trackers) were imported incorrectly (fixes

   [Fix] <js> ProTracker offset quirks were partly broken since OpenMPT (fixes professionaltracker.mod)

   [Imp] <js> If there are two Fxx commands on the same row and one can be interpreted as Set Speed and the other as Set Tempo, always treat the module to have CIA timing instead of VBlank timing.

Other formats
   [Imp] <js> MIDI export has been considerably improved. More commands are exported and it uses one MIDI track per instrument rather than one per pattern channel.
   [Fix] <js> OKT: Portamento up and down were swapped.
   [Fix] <js> Possible crashes and hangs with malformed DMF, PLM, IMF, IT and MPTM files.

Audio I/O
   [Imp] <jh> Detect Wave Out errors during playback, display the detailed error code and message to the user, and try to gracefully shut down the device.
   [Fix] <jh> Fix stalled UI after longer playback with Wave Out devices, especially on Windows XP.

   [Imp] <js> Add Pitch Bend messages to MIDI macro generator.
   [Imp] <js> Add Zxx Macro Configuration dialog to the View menu and make its shortcut global.
   [Fix] <js> Song length estimation: Pattern breaks in a pattern followed by a --- pattern were sometimes calculated incorrectly in OpenMPT
   [Fix] <js> There was an excessive performance drop on some GUI parts in the previous version.
» 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.


Quote[Fix] <js> Avoid VSTi notes to stack up in XM files due to missing NNA handling (no, you should still not use VSTis in XM).

This fix got me thinking about a possible externalized program to coexist with openMPT...

Since you fixed this problem with XM files that are using VSTi's, I assume you do that strictly for backward compatibility. So...

I don't know if it would be helpful, but what if there was a separate program which does all the necessary conversions to STANDARD formats? This would allow for backward (and "hacked MPT") compatibility, while reducing code bloat, and perhaps speed, in ModPlug itself. So for example, if a user loads an XM file that uses VSTi's, perhaps created from a previous hack of MPT, the application asks the user if they want to convert the module to a format which normally does allow VSTi's in its standard format. The backward and hack compatibility would remain in the convertor program, allowing the devs to remove the conversion functions from the main code, cleaning it up a bit and making it more efficacious when working with it.

We assume the non-standard file format the user is opening or editing was probably created with a previous MPT hack that allowed the non-standard treatment (such as in this case, XM files using VSTi's). Therefore they would benefit from the conversion into MPTM or some other workable standardized format. (I think the only reason they would not convert is because they're used to the XM commands.)

Like I said, I don't know if the work involved (extracting the conversion methods in the main executable) would be less than keeping up with constant hack compatibility. But it is an idea that should be considered...

Saga Musix

QuoteSince you fixed this problem with XM files that are using VSTi's, I assume you do that strictly for backward compatibility
That is incorrect, the previous broken behaviour has existed since forever. I only "fixed" it to make MIDI export work, since internally it uses a VST plugin for the pattern conversion.

The rest of your post, I don't get, especially since doing this externally rather than right in OpenMPT neither reduces code complexity (it just splits it into two programs), nor does it help the user because now they have to keep in mind that they need two different programs for something that could previously done with just one.
» 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

We're currently planning to release OpenMPT next weekend, so if you want to do some testing, grab a recent development build and have a look at the changes:

Pattern tab
   [New] <js> Added hidden setting "Pattern Editor.EditStepAppliesToCommands" to also apply edit step to command letters (tx uctumi).
   [Imp] <js> Support effect-column volume slides when using sample sync.
   [Fix] <js> Go To Dialog was not filled with sensible default values since OpenMPT

Sample tab
   [Imp] <js> Pre-select the input field in the sample resize dialog (
   [Imp] <js> Silence tool now works the same way for stereo samples as it does for mono samples.
   [Imp] <js> Time stretch and pitch shift are now abortable.
   [Imp] <js> When trying to load a module into a sample slot, open it directly in the tree view for importing samples.
   [Mod] <js> When loading several samples, only ask once if they should be associated with an instrument (
   [Fix] <js> Properly update all sample lists when slicing a sample.
   [Fix] <js> Resampling a sample with a very high sample rate (> 1 MHz) crashed the program.

Instrument tab
   [New] <js> Option in sample map context menu to remove all sample associations.
   [Imp] <js> Added keyboard shortcut for scaling envelopes (default: Ctrl+E).
   [Imp] <js> Ctrl+Right-click can now also be used to delete an envelope point.
   [Imp] <js> Nicer envelope drawing at higher zoom levels. Adjust default zoom level for High-DPI screens.
   [Imp] <js> After grabbing a sustain or loop point with the mouse, it can now also be moved using the keyboard shortcuts for moving nodes.
   [Imp] <js> Show sample numbers in Sample Map editor (
   [Imp] <js> When trying to load a module into a instrument slot, open it directly in the tree view for importing instruments.
   [Fix] <js> Bogus shortcuts were added for some envelope editor shortcuts.

VST / DMO Plugins
   [New] <js> Allow the user to enter plugin-specific tags in the plugin selection dialog. The name filter now searches for both plugin names and tags (patch partially provided by arseniiv,
   [Imp] <js> When loading a module, indicate which plugin is being loaded in the status bar (
   [Fix] <js> Plugin editor minimizing should now also work with Wine. As a consequence, minimizing now only works through double-clicking, there are no minimize / maximize buttons any more.
   [Fix] <js> No longer apply auto-suspend logic to plugins that don't output any audio, as they can never fulfill it.

VST::Specific Plugin Fixes
   [Fix] <js> When closing Electri-Q's editor while it was minimized and having its resizable GUI enabled, the GUI would no longer work on any host as it stored a bogus default window size.

VST::Plugin Bridge
   [Imp] <js> Implement audioMasterOpenFileSelector opcode for opening load / save file dialogs from some plugin GUIs (e.g. VOPM).
   [Imp] <js> Speed up preset and parameter name retrieval (e.g. in plugin editor preset menu).
   [Mod] <js> Optimized audioMasterGetTime opcode caching.

MPTM::Custom Tuning
   [Fix] <js> Pitch effects (portamento, arpeggio) triggered after a note-off were broken since OpenMPT 1.22.

   [Mod] <js> As the majority of trackers including ProTracker seem to interpret F20 as tempo rather than speed, OpenMPT now does the same. The only other programs I could find that treat F20 as speed are ScreamTracker 3 and Impulse Tracker.
   [Fix] <js> Invert Loop position was not reset with instrument numbers.
   [Fix] <js> Offset beyond sample loop end was broken.

MOD::ProTracker 1/2 Mode
   [Fix] <js> Very short sample loops starting at the first sample point were detuned.

Other formats
   [Imp] <js> Better handling of tempos > 255 in MED.
   [Mod] <js> ITP: For the rare case that an ITP file loaded a 24-bit or higher quality WAV sample as an instrument, always enable the auto-normalize feature for those samples, as this was the default and fixed setting for loading such samples during most of the time when the ITP format was actively supported.
   [Fix] <js> MT2: Better handling of filters and synchronized samples.
   [Fix] <js> Crash in MED loader.

Stream Export
   [Imp] <jh> Write ReplayGain tags when exporting VBR MP3 using libmp3lame ( Can be disabled using "Export.MP3LameCalculateReplayGain", "Export.MP3LameCalculatePeakSample" and "Export.MP3ID3v2WriteReplayGainTXXX" settings.
   [Imp] <jh> ID3v2 padding size is now configurable via hidden settings "Export.MP3ID3v2MinPadding" and "Export.MP3ID3v2PaddingAlignHint".
   [Imp] <jh> Use ID3v2.4 tags also when exporting VBR MP3 using libmp3lame. Toggle hidden setting "Export.MP3LameID3v2UseLame" to revert to ID3v2.3 tags.

   [New] <js> Allow to change between sharp and flat accidentals in Display settings.
   [New] <js> Added hidden settings "Display.HighResUI", which can be used to enable DPI-awareness in OpenMPT. Right now it is disabled by default because there are no high-DPI icons yet. In the future, people may want to keep this setting disabled when using plugin UIs that are not DPI-aware.
   [Fix] <js> Do not process keyboard commands while export dialogs are active (
   [Fix] <js> Crash in 64-bit builds when trying to append a module.
   [Fix] <js> After changing the default rows per beat, the new value was not used in tempo approximation for classic and alternative tempo mode if the song was not currently playing.
   [Fix] <js> Some menu items were not greyed out when they should have been (
   [Fix] <jh> Fix resource exhaustion on Wine when invoking any popup windows via a keyboard hotkey (
   [Reg] <js> Remove hidden setting "Misc.ShowHackControls". All it did was showing an input field for changing the sequence margins, which can already be controlled through a different setting "Pattern Editor.DefaultSequenceMargins".

Third-Party Libraries
   [Mod] Update PortAudio (SVN r1963) and SoundTouch (v1.9.2).
» 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.

Saga Musix

OpenMPT is a small bugfix release with few new features, but rather correcting some important bugs that were found in the previous release.
» 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.