OpenMPT - Full Version History
------------------------------

- [New]    : new feature
- [Imp]    : improvement
- [Mod]    : change
- [Var]    : other
- [Fix]    : bug fix
- [Reg]    : known issue / regression / feature removal
- (tx XYZ) : thanks to XYZ for telling us about the bug / requesting the feature


Developers:
<initials> nick name  / real name        [email @openmpt.org]
   <al>    Relabs     / Ahti Leppänen    [relabs]
   <ec>    Ericus     / Eric Chavanon    [ericus]
   <jh>    manx       / Jörn Heusipp     [manx]
   <js>    Saga Musix / Johannes Schultz [sagamusix]
   <rf>    rewbs      / Robin Fernandes  [rewbs]
   <sp>    pelya      / Sergiy Pylypenko [pelya]
   <tn>    plastik_s  / Trevor Nunes     [plastik_s]
Patch submitters:
   <cs127> cs127
   <cs>    kode54     / Christopher Snowhill
   <da>    Revenant   / Devin Acker
   <ih>    xaimus     / Imran Hameed
   <jb>    JoaoBaptMG / João Baptista de Paula e Silva
   <kk>    SYRiNX     / Keith F. Kelly
   <ks>    coda       / Ken Snyder


Got questions, comments or bug reports? Visit https://openmpt.org/ where you can
find our issue tracker and forums.


v1.32.09.00 (1 April 2026, revision 25160)
------------------------------------------
VST / DMO Plugins
- [Fix] <js> In OpenMPT 1.32.07.00 and 1.32.08.00, trying to play notes from a bridged plugin window could cause a crash (http://bugs.openmpt.org/view.php?id=1962).
- [Fix] <js> The PPQ position reported to plugins was not updated if a module tick spanned multiple VST processing calls.

Other formats
- [Fix] <js> MID: Continued SysEx events on a MIDI track currently mapped to anything but the first MIDI port were treated like the start of a SysEx message instead.

Misc
- [Fix] <js> Since OpenMPT 1.32.01.00, spin buttons in the main toolbar could disappear when locking the screen or invoking a UAC prompt (http://bugs.openmpt.org/view.php?id=1929).

Bundled plugins
- [Fix] <js> MIDI I/O Plugin: Sometimes, multiple duplicate song position pointers were sent.


v1.32.08.00 (24 March 2026, revision 25097)
-------------------------------------------
Playback
- [Fix] <js> A regression in OpenMPT 1.32.07.00 caused some chip sample loops to be detuned, most notably in MOD files.


v1.32.07.00 (22 March 2026, revision 25055)
-------------------------------------------
Pattern tab
- [Mod] <js> Effect info now shows volume and panning volume command parameters as both hex and decimal if hex volume column was enabled (http://bugs.openmpt.org/view.php?id=1943).
- [Fix] <js> Effect info for volume command panning was shown in decimal even if hex volume column was enabled (http://bugs.openmpt.org/view.php?id=1943).
- [Fix] <js> Choosing "Copy Pattern" from the order list context menu always copied the currently displayed pattern, not the one on which the context menu was invoked.

VST / DMO Plugins
- [Imp] <js> Plugin editors can now receive SysEx messages from OpenMPT's MIDI recording.
- [Fix] <js> Work around apparently broken channel negotiation in MaxSynths DR-910 plugin (http://forum.openmpt.org/index.php?topic=7442.0).

Playback
- [Fix] <js> Avoid potential read past end of sample data in a specific combination of reverse sample playback + offset past sample loop.

MOD
- [Fix] <js> ProTracker arpeggio wrapraound results in an effective period of 65536 on Paula, not pausing the sample entirely (tx eightbitbubsy).

Other formats
- [Fix] <js> ULT: Loop points were incorrectly limited for 16-bit samples (http://bugs.openmpt.org/view.php?id=1953).

Misc
- [Fix] <js> MIDI Recording: On recent versions of Windows 11, MIDI recording stopped working after receiving a SysEx message (http://forum.openmpt.org/index.php?topic=7456.0).
- [Fix] <js> MIDI Export: Exporting from MOD or S3M did not correctly export implicit note-offs when playing a new note on the same channel (http://bugs.openmpt.org/view.php?id=1946).
- [Fix] <js> Keyboard Settings: The instrument note map category was missing (http://bugs.openmpt.org/view.php?id=1945).
- [Fix] <js> Display Settings: Changing DPI awareness didn't mark the settings page as modified.

Third-Party Libraries
- [Imp] Update libopusenc (v0.3), mpg123 (v1.33.4), opus (v1.6.1), unrar(v7.2.4) and zlib (v1.3.2)


v1.32.06.00 (14 December 2025, revision 24626)
----------------------------------------------
Sample tab
- [Imp] <js> Shift-clicking the loop start / end spin buttons now moves the loop points finely, instead of snapping to the next self-similar point (tx Platonist).
- [Fix] <js> Using Shift to move loop or cue points when zoomed into the sample actually accelerated mouse movement, so it was no longer "fine" movement as intended.

Other formats
- [Fix] <js> PT36: Some MODs with samples larger than 64k inside PT36 containers were not read correctly (tx AliceLR).

Stream Export
- [Fix] <js> Exporting the same module multiple times (or exporting individual instruments / channels) could lead to files differing in length by one sample when using modern tempo mode.

Misc
- [Fix] <jh> Fixed crash when saving IT / MPTM files and shutting down OpenMPT on Wine 10.20 and potentially Wine 11.1 (http://bugs.openmpt.org/view.php?id=1933).
- [Fix] <js> MIDI Export: Choosing the percussion channel for an instrument and then keeping "Mapped" mode selected and never manually touching the dropdown menu resulted in wrong MIDI percussion notes to be exported.


v1.32.05.00 (9 November 2025, revision 24406)
---------------------------------------------
Pattern tab
- [Fix] <js> Since OpenMPT 1.31, having both "Contiunous scroll" and "Cursor wrap in pattern editor" disabled, jumping by beat or measure no longer jumped to the first or last row of the pattern and instead stayed on the current row if it was close to the start / end than a beat / measure (http://forum.openmpt.org/index.php?topic=7374.0).
- [Fix] <js> Transposing a selection didn't refresh the (potentially changed) default volume display if the selection of the last channel didn't contain the volume column.
- [Fix] <js> Automatically hiding the volume column didn't work for newly-created MODs (http://bugs.openmpt.org/view.php?id=1928).

Sample tab
- [New] <js> Added option to slice a sample at grid points instead of cue points, including a keyboard shortcut (http://forum.openmpt.org/index.php?topic=7376.0).
- [Fix] <js> Since OpenMPT 1.31.14.00, fine adjustment of sustain loop start / end was broken.

Instrument tab
- [Fix] <js> Sample Map dialog: Fixed font scaling in the keyboard display when moving the window between screens with different DPI settings.

IT
- [Mod] <js> Files are no longer interpreted as ModPlug-made (thus disabling all compatibility settings) just because instrument extensions are found (no such files are currently known to exist in the wild).

Third-Party Libraries
- [Imp] Update ancient (v2.3.0), mpg123 (v1.33.3) and unrar(v7.2.1)


v1.32.04.00 (6 September 2025, revision 24138)
----------------------------------------------
Pattern tab
- [Fix] <js> Find & Replace: Selecting a Transpose value of -4 or -5 caused the replace tab to assume that the replacement note was a PC event (tx cs127).
- [Fix] <js> Find & Replace: When finding a PC event and replacing it with a regular note, the instrument / volume fields were not always updated correctly (tx cs127).
- [Fix] <js> Quick Channel Settings: Avoid keyboard focus trap when navigating to the first or last channel and the keyboard focus was on one of the previous / next channel controls.
- [Fix] <js> The order list focus rectangle was sometimes not drawn with the correct colors.

Sample tab
- [Imp] <js> Added keyboard shortcuts for toggling loop types (http://forum.openmpt.org/index.php?topic=7354.0).
- [Fix] <js> Sample slicing did not adjust the sustain loop points in the sliced samples, and did not reset the "Keep sample on disk" setting.

IT
- [Fix] <js> Even when the filter cutoff envelope is stopped before its first tick is applied, the filter should still be activated (http://bugs.openmpt.org/view.php?id=1914).

Audio I/O
- [Fix] <js> It was possible that OpenMPT could crash when stopping playback of a module when using bridged plugins in combination with certain ASIO drivers, likely since OpenMPT 1.31.10.00 (tx coda).

Misc
- [Imp] <js> Quick Start Dialog: Collapsed status of item groups is now memorized (http://bugs.openmpt.org/view.php?id=1916).
- [Imp] <jh> On Windows XP and Wine 3.12 and older, messages with "don't show again" option now offer control over whether they should be shown again.
- [Imp] <jh> Wine integration now supports RtAudio 6.
- [Imp] <js> Several numeric input fields no longer allow arbitrary text to be entered into them.
- [Mod] <js> In export dialogs, the currently active subsong is now chosen for export by default.
- [Fix] <jh> Wine integration was broken on Wine 10.13 due to a Wine regression.

Third-Party Libraries
- [Imp] Update lhasa (v0.5.0), mpg123 (v1.33.2) and unrar(v7.1.10)


v1.32.03.00 (19 July 2025, revision 23823)
------------------------------------------
Playback
- [Fix] <js> Avoid potential read past end of sample data in a specific combination of reverse sample playback + offset past sample loop.
- [Fix] <js> Since OpenMPT 1.32.01.00, swapping between samples on the rear channels could introduce a click on the front channels.

IT
- [Fix] <js> Volume column slides no longer propagate their effect memory to the regular effect column volume slides.

Other formats
- [Imp] <js> FC: Allow files with a sequence size of 0 to load (fixes a broken copy of cult.smod).

Misc
- [Mod] <js> To improve accessibility, keyboard focus is now only returned to the lower editor views if the last input method before an interaction in the upper view was done through the mouse. If the last interaction was through the keyboard instead, the keyboard focus remains there (http://forum.openmpt.org/index.php?msg=51008).
- [Mod] <js> Keyboard Settings: A pointless warning sound was played when adding the first shortcut for a command
- [Fix] <js> Keyboard Settings: Since OpenMPT 1.32.01.00, the first command in the command list was no longer selected for keyboard navigation (http://bugs.openmpt.org/view.php?id=1908).
- [Fix] <jh> Wine Integration is no longer offered on Wine 10.11 due to a Wine bug breaking it (http://bugs.openmpt.org/view.php?id=1904).

Third-Party Libraries
- [Imp] Update UnRAR (v7.1.8)


v1.32.02.00 (29 June 2025, revision 23657)
------------------------------------------
Tree view
- [Fix] <js> Since OpenMPT 1.32.01.00, the MIDI input focus remained on the tree view after dragging an instrument to a sample or instrument editor, while keyboard input focus was on the editor (http://bugs.openmpt.org/view.php?id=1899).

Pattern tab
- [Imp] <js> Added keyboard shortcuts for expanding and shrinking patterns (default: Ctrl + Alt + E / D).

Sample tab
- [Imp] <jh> FLAC encoding can now be configured to be multithreaded, using all available CPU cores, by toggling the hidden setting "Sample Editor.FLACMultithreading".

Instrument tab
- [Fix] <cs127> When saving an ITI file, parts of the volume envelope were damaged (http://github.com/OpenMPT/openmpt/pull/32).
- [Fix] <js> Switching between envelopes using keyboard shortcuts didn't update accessible announcements (http://bugs.openmpt.org/view.php?id=1892).

Playback
- [Fix] <js> Previewing a sample, instrument or pattern note after pausing playback in a module using synth instruments continued playing those synth instruments (tx squeaktoy).

MPTM
- [Fix] <js> Inserting / duplicating / moving sequences reset the default tempo and speed for all sequences (http://forum.openmpt.org/index.php?topic=7345.0).

IT
- [Fix] <js> Picking up a note after a Note Cut effect through a lone instrument number restores the original note pitch without any portamento slides, as if there was a note.
- [Fix] <js> If there is a note and a tone portamento next to a Note Cut effect, the Note Cut is not executed - unless there is also a row delay effect and we are on the second repetition of the row.

S3M
- [Mod] <js> Old ModPlug Tracker versions allowed the 28th character of sample names to be used. Such sample names are now displayed correctly again.

Other formats
- [Fix] <js> MED: When triggering a synth note with a Synth Jump command on the same row, the initial speed command was not executed (http://www.un4seen.com/forum/?msg=145046).

Stream Export
- [Imp] <js> The currently active subsong is now selected by default for the single subsong export mode. This also applies to OPL and MIDI export (http://forum.openmpt.org/index.php?topic=7340.0).
- [Imp] <js> In export dialogs, the song index within the selected sequence is now also shown (http://forum.openmpt.org/index.php?topic=7340.0).
- [Imp] <jh> FLAC encoding is now multithreaded by default, using all available CPU cores. Can be disabled by toggling the hidden setting "Export.FLACMultithreading".

Misc
- [Imp] <js> Main toolbar: Icon groups can now be hidden as well. At least one icon group needs to be always visible, though (http://bugs.openmpt.org/view.php?id=1889).
- [Imp] <js> Added help button to Setup dialog title bar.
- [Imp] <js> A few more icons are now inverted when using dark themes.
- [Imp] <js> Added a default key binding for Toggle Between Upper / Lower View (Ctrl + Shift + Tab).
- [Imp] <js> TCB has been added to list of recognized file extensions for TCB Tracker modules. Both ModLand and Fujiology use .TCB instead of the canonical .MOD extension.
- [Fix] <js> Estimate Song Length: Subsong start order format was not adhering to the "Display rows / orders in hex" setting.
- [Fix] <js> Large parts of the GUI were broken in XP / Vista builds when running them on Windows 10 version 1607 or newer. (http://bugs.openmpt.org/view.php?id=1887).
- [Fix] <js> On Windows XP / Vista and Wine versions older 3.13, message boxes there were supposed to only show once were always shown instead.

Third-Party Libraries
- [Imp] Update miniz (v3.0.2), mpg123 (v1.33.0) and ogg (v1.3.6)


v1.32.01.00 (31 May 2025, revision 23242)
-----------------------------------------
Tree view
- [New] <js> The tree view can now also be placed on the right side of the window (View -> Toolbars).
- [Imp] <js> The Instrument Library now shows size information for samples in modules as well, and uses cached information for displaying file size and modification time of on-disk files instead of querying this information from the operating system every time a file is selected.
- [Mod] <js> The "Switch To Instrument Library" shortcut is no longer available if the tree view is hidden (http://bugs.openmpt.org/view.php?id=1802).
- [Mod] <js> When MIDI Library entries are unset by user, they are no longer replaced with the default soundfont after restarting OpenMPT (http://bugs.openmpt.org/view.php?id=1870).

General tab
- [New] <js> By holding Shift when pressing the Bypass checkbox, all other plugins are (un-)bypassed. Holding Ctrl instead, only Master plugins are affected.
- [Imp] <js> Expanded mix now also works with plugins that have no inputs.
- [Imp] <js> All mix modes are now available for instrument plugins as well. The old plugin mixing behaviour for instrument plugins is emulated with the new "Instrument" mix mode (http://forum.openmpt.org/index.php?topic=7178.0).

Pattern tab
- [New] <js> There is now a metronome that can be enabled from the toolbar or via a keyboard shortcut. The toolbar button also allows to change the metronome volume or replace metronome samples (http://bugs.openmpt.org/view.php?id=689).
- [New] <js> Merge functionality has been extended to support merging into multiple patterns with a user-specified length. This way, it becomes possible to automatically rearrange e.g. 64-row patterns into 128-row patterns in one go (http://bugs.openmpt.org/view.php?id=1750).
- [New] <js> Pattern Properties: When increasing pattern size, there is now an option to duplicate the existing contents to the newly-added rows (http://bugs.openmpt.org/view.php?id=431).
- [New] <js> Instrument / volume / effect column visibility can now be toggled independently. Column visibility is now remembered per-module if "Remember song window positions" is enabled (http://bugs.openmpt.org/view.php?id=1523).
- [New] <js> Add experimental hexadecimal volume column mode. Has to be enabled via hidden setting "Pattern.VolumeColumnInHex" and then manually assign the corresponding keys for A-F and reassign effect keys to something else (http://bugs.openmpt.org/view.php?id=1798).
- [New] <js> It is now possible to queue the next pattern to not only play when the current pattern is finished, but also when the current measure, beat or row is finished. This can be done through new order list context menu entries, four new keyboard shortcuts (combinations of Shift + Alt + Q), or as before by middle-clicking or Ctrl-left-clicking (together with the same modifier combinations of Shift and Alt as the aforementioned shortcuts, http://forum.openmpt.org/index.php?topic=7014.0).
- [New] <js> Added keyboard shortcuts for toggling most MIDI recording options (http://bugs.openmpt.org/view.php?id=500).
- [New] <js> Can now set a separate background color for the active row when recording is enabled (http://bugs.openmpt.org/view.php?id=856).
- [Imp] <js> Shortcuts that toggle settings with no immediate visual feedback now show the new setting value in the status bar (http://bugs.openmpt.org/view.php?id=500).
- [Imp] <js> It is now possible to solo a group of channels at once. The solo shortcut applies to all channels in the current pattern selection.
- [Imp] <js> It is now possible in the Pattern Properties dialog to edit the properties of multiple patterns without having to close and re-open the dialog every time, and also change their names (http://forum.openmpt.org/index.php?topic=3454.0).
- [Imp] <js> Global S9x commands are now applied while seeking as well.
- [Imp] <js> Added hidden setting "Pattern Editor.AutoHideVolumeColumnForMOD" to disable the volume column by default for MOD and MOD-like formats (http://bugs.openmpt.org/view.php?id=1836).
- [Imp] <js> The built-in pattern font is now automatically scaled according to DPI settings. From 150% onward it is upscaled 2x, from 250% onward it's 3x, etc...
- [Imp] <js> "Continue song as soon as MIDI notes are being received" can now optionally start playback from the start of pattern, rather than from the current row (http://bugs.openmpt.org/view.php?id=445).
- [Imp] <js> Allow MIDI Pitch Bend messages to not be recorded at all, always record them as macros, always as finetune, or both (http://bugs.openmpt.org/view.php?id=1874).
- [Imp] <js> In sample mode, show default volume also for note-less instruments (http://github.com/OpenMPT/openmpt/pull/29).
- [Imp] <js> Reduced flickering text when updating channel and row headers.
- [Imp] <js> "Display rows / orders in hex" setting is now also applied to accessible announcements (http://bugs.openmpt.org/view.php?id=1876).
- [Fix] <js> When inserting or duplicating multiple patterns, it was possible that patterns at the end of the order list disappeared.
- [Fix] <js> Using the Toggle Overflow Paste shortcut didn't update the corresponding toolbar button.
- [Fix] <js> Checking or unchecking Overflow Paste in one pattern editor didn't update the button in other pattern editors.
- [Fix] <js> It wasn't possible to toggle the record / VU meters / Plugin Display icons using the space bar.
- [Fix] <js> Fixed various accessibility issues in Quick Channel Settings dialog (http://bugs.openmpt.org/view.php?id=1880).
- [Fix] <js> After inserting patterns in the order list, the status bar and accessible announcement text were not updated.

Sample tab
- [Imp] <js> Replaced pitch shifting and time stretching components. By default, Signalsmith Stretch is now used for both high-quality shifting and stretching, and a custom "Akai"-like implementation can be used alternatively in "Lo-Fi Mode". Both implementations can handle any pitch shifting and time stretching amounts, and apply both changes simultaneously (http://bugs.openmpt.org/view.php?id=1808).
- [Imp] <js> When resampling samples in MOD files, there is now an option to adjust pattern data accordingly (http://forum.openmpt.org/index.php?topic=7245.0).
- [Imp] <js> The default / global volume tooltips now also show the effective amplification based on the sample / synth volume specified in the General tab (http://forum.openmpt.org/index.php?topic=7308.0).
- [Mod] <js> Loop information is now saved in FLAC metadata similar to how it is saved in WAV metadata when only a sustain loop is present. This way, it is possible to distinguish it from a normal sample loop.
- [Mod] <js> When resampling, sample offset command parameters are now rounded and parameters are never set to 0, as that would just recall the previous offset.

Instrument tab
- [New] <js> Last edited instrument is now remembered per-module if "Remember song window positions" is enabled.

Comments tab
- [New] <js> In addition to copying sample / instrument texts, they can now be pasted as well.
- [Imp] <js> Sample and instrument names and filenames are now drawn using the Comments font (so typically a fixed-width font; http://bugs.openmpt.org/view.php?id=1758).
- [Imp] <js> Allow to click anywhere in the sample / instrument list to select or open the corresponding editor (http://bugs.openmpt.org/view.php?id=1883).

VST / DMO Plugins
- [New] <js> Can now load shell VST plugins (http://bugs.openmpt.org/view.php?id=1551).
- [Imp] <js> VST: Improve correctness of PPQ position reporting. The PPQ is now also correct when the tempo changes, and when breaking to the next pattern, the position is rounded to the next start of measure (partially fixes https://bugs.openmpt.org/view.php?id=1731).
- [Mod] <js> After seeking, plugins are informed immediately about the new playback position if playback is stopped (http://bugs.openmpt.org/view.php?id=1731).
- [Fix] <js> Before OpenMPT 1.26, it was possible to send MIDI notes to channel plugins if the current instrument had a valid MIDI channel but no plugin assigned. The old behaviour is now re-enabled for old modules that rely on it.
- [Reg] <js> When a plugin referenced by a module isn't found, it is no longer added to the plugin library if it can be automatically found in the root of the VST plugin path specified in the OpenMPT settings.

Playback
- [Fix] <js> The retrigger command could behave differently when a MIDI channel was assigned to the active instrument (http://bugs.openmpt.org/view.php?id=1587).
- [Fix] <js> NNA channels associated with VST plugins or the MIDI I/O plugin will no longer cause channel starvation with NNA set to "Continue".
- [Fix] <js> Some plugin notes could keep playing forever when previewing samples or instruments while all NNA channels were in use.
- [Fix] <js> Avoid clicks on sample transition when applying a portamento effect between two different samples.

MPTM
- [New] <js> Every sequence has its own default tempo and speed now (http://bugs.openmpt.org/view.php?id=1322).

IT
- [Imp] <js> Default cue points are no longer set for samples in IT files and old enough MPTM files that don't use any volume-column offset commands (http://bugs.openmpt.org/view.php?id=1540).
- [Fix] <js> When using tone portamento to another sample after the previous sample's sustain loop has been released, the new sample should also not play its sustain loop.
- [Fix] <js> When triggering an empty instrument note slot, completely ignore the pattern cell - do not reset the currently playing instrument's envelopes (fixes wayfinder's Jet Rider), and also don't process any effects - including global ones.
- [Fix] <js> Offset with instrument number but no note should play offset effect with previous note (http://bugs.openmpt.org/view.php?id=1785).
- [Fix] <js> Fixed various combinations of volume column and effect column portamento effects (http://bugs.openmpt.org/view.php?id=1827).
- [Fix] <js> Implemented a quirk in command Lxx that always executes a portamento down when no tone portamento has been set up before, sometimes causing the target note to be reached immediately, or sliding the note down very subtly.
- [Fix] <js> Envelope Carry should not be influenced by a previous note-off (fixes bridge.it by rs3, http://www.un4seen.com/forum/?msg=144272).

XM
- [Mod] <js> Increased maximum channel count from 127 to 128, as MilkyTracker can write such files as well (http://bugs.openmpt.org/view.php?id=1877).
- [Fix] <js> When a key-off is encountered before auto-vibrato sweep reaches full depth, the vibrato depth is reset.
- [Fix] <js> Offset effect memory should only be updated when the command is next to a note (tx cyrb).

S3M
- [Mod] <js> Impulse Tracker style edit timer is now stored, and also read from files made with Schism Tracker.
- [Fix] <js> Combined slides (Kxy / Lxy) are no longer run on the first tick of a row in files made with Scream Tracker (http://bugs.openmpt.org/view.php?id=1828).

MOD
- [Imp] <js> Groo's "The Ultimate Beeper" now plays like in ProTracker.
- [Imp] <js> Modules saved with TakeTracker can now be identified.
- [Imp] <js> Improved Tetramed detection.

Other formats
- [New] <js> Can now read PumaTracker (PUMA) modules (http://bugs.openmpt.org/view.php?id=1327).
- [New] <js> Can now read Face The Music (FTM) modules (http://bugs.openmpt.org/view.php?id=1411).
- [New] <js> Can now read Future Composer (FC / SMOD) modules (http://bugs.openmpt.org/view.php?id=39).
- [New] <js> Can now read Game Music Creator (GMC) modules (http://bugs.openmpt.org/view.php?id=1762).
- [New] <js> Can now read Chuck Biscuits / Black Artist (CBA) modules from the Expoze musicdisk by Heretics (http://bugs.openmpt.org/view.php?id=1792).
- [New] <js> Can now read TCB Tracker (MOD) modules (http://bugs.openmpt.org/view.php?id=1845).
- [New] <js> Can now read Real Tracker 2 (RTM) modules.
- [New] <js> Can now read Images Music System (IMS) modules.
- [New] <js> Can now read ChipTracker (MOD) modules.
- [New] <js> Can now read EasyTrax (ETX) modules.
- [New] <js> Can now read UNIC Tracker v1 (UNIC) files.
- [New] <js> MED: Synthesized and hybrid instruments are now supported (http://bugs.openmpt.org/view.php?id=1321).
- [New] <js> GT2: Better support for old "envelopes", in particular adding support for the previously missing tremor / tremolo / vibrato.
- [New] <js> NST: His Master's Noise "Mupp" instruments are now supported, as well as command 7 "mega-arp".
- [New] <js> Better support for automatic slide commands (commands that keep sliding on following rows) in various formats (http://bugs.openmpt.org/view.php?id=1773).
- [Imp] <js> The pattern channel limit was raised from 127 to 192 for imported formats.
- [Imp] <js> SymMOD: Files containing more channels than OpenMPT can handle are no longer rejected (http://www.un4seen.com/forum/?msg=143952).
- [Mod] <js> PSM: Sub-songs are now imported as independent sequences instead of being crammed together into the same order list.
- [Fix] <js> DTM: Portamentos are now also evaluated on the first tick of the row.
- [Fix] <js> MO3: If multiple sample slots shared the same Ogg Vorbis sample, only one sample slot was loaded.
- [Fix] <js> MED: Tempo parameters > 255 BPM were not imported properly if the files was imported as MOD instead of XM (http://www.un4seen.com/forum/?msg=143478).
- [Fix] <js> MED: Import notes that exceed OpenMPT's note range.
- [Fix] <js> MED: Better handling of high octaves for non-MIDI instruments (http://www.un4seen.com/forum/?msg=144154).
- [Fix] <js> MED: Improve handling of low tempos in BPM mode (http://www.un4seen.com/forum/?msg=144160).
- [Fix] <js> MED: For IFFOCT instruments with extra sample loop information, the loop length was not correct. Sample transpose was also not applied correctly for IFFOCT instruments.
- [Fix] <js> MED: Command FFF should not stop a note if it is triggered on the same row (http://www.un4seen.com/forum/?msg=144691).
- [Fix] <js> MED: Set Pitch command (FFD) was not implemented (http://www.un4seen.com/forum/?msg=145039).

Stream Export
- [New] <js> Can now export all sub songs to individual files (http://bugs.openmpt.org/view.php?id=1515).
- [Imp] <js> Repeat count can now also be specified when exporting a pattern range or exporting all sub songs.
- [Imp] <js> Normalize and Clear Plugin Buffer choices are remembered across runs. Clear Plugin Buffer is now enabled by default.
- [Reg] <js> It is no longer possible to export a range of sequences.

Misc
- [New] <js> Added a quick start "project assistant" view that is shown whenever there is no module loaded (http://bugs.openmpt.org/view.php?id=863).
- [New] <js> In addition to the "Previous Order" and "Next Order" shortcuts, there are now also shortcuts that can delay the pattern transition until the next measure, beat or row is reached. When the song isn't playing, they behave like the normal "Previous Order" and "Next Order" shortcuts in the pattern editor (http://forum.openmpt.org/index.php?topic=7014.0).
- [New] <js> Added shortcut for browsing template modules (File/Open Template).
- [New] <js> Key bindings with Impulse Tracker-like and FastTracker-like note entry (but otherwise identical keyboard shortcuts) can now be applied directly from the keyboard settings dialog, without the need for external keymap files.
- [New] <js> Auto save: When auto saving to a user-specified folder, it is now possible to automatically delete old auto save files (default: older than 30 days).
- [New] <js> Auto save: Old auto save files are now moved to the recycling bin by default instead of being deleted permanently. Old behaviour can be restored in the auto save settings.
- [New] <js> MIDI Export can now write sub songs to individual files (http://bugs.openmpt.org/view.php?id=1515).
- [New] <js> Added a /play command line switch, which automatically starts playback of one of the modules passed via the command-line (http://bugs.openmpt.org/view.php?id=1751).
- [New] <js> Templates can now be opened from the "New" icon's dropdown menu in the main toolbar (http://bugs.openmpt.org/view.php?id=254).
- [New] <js> The main toolbar now shows the global volume of the currently playing module, and can also be used to modify it (http://bugs.openmpt.org/view.php?id=277).
- [Imp] <js> The visibility of all song info controls in the main toolbar can now be toggled via the context menu. The readouts can now also be edited directly in addition to the spin buttons.
- [Imp] <js> If the main toolbar is too wide to fit the window's size, it now wraps around. In vertical mode, it also wraps around more sensibly.
- [Imp] <js> Allow changing the base octave by entering digits 0 to 8 or + and - into the octave edit field in the main toolbar.
- [Imp] <js> Precision of time display in status bar was increased to show tenths of a second (http://bugs.openmpt.org/view.php?id=1791).
- [Imp] <js> When creating a new MOD file, it is now possible to specify whether it should be an Amiga MOD (4 channels, enable ProTracker quirks and Amiga resampler) or a PC MOD (8 channels, disable ProTracker quirks and Amiga resampler) (http://bugs.openmpt.org/view.php?id=1830).
- [Imp] <js> DPI-awareness can now be set in the Display options directly, without the need to edit hidden settings. High-DPI and mixed-DPI behaviour has been greatly improved in many aspects, and OpenMPT is now DPI-aware by default. The old hidden settings Display.HighResUI and Display.UseGDIUpscaling are gone and not migrated.
- [Imp] <js> When "Remember song window positions" is active, the last active state is now remembered for all tabs, not just the currently active tab.
- [Imp] <js> "Find MPT Hacks" now warns about S3Ms using extended OPL3 waveforms (as it was possible in early OpenMPT versions with OPL support).
- [Imp] <js> Channel Manager: It is now possible to interact with channels that have been marked for deletion.
- [Imp] <js> Redesign keyboard settings dialog. Assigned shortcuts are now immediately visible without having to manually select each shortcut. Potential cross-context conflicts between shortcuts are now always visible when selecting one of the shortcuts, and not just when editing them.
- [Imp] <js> The previously hidden setting "Pattern Editor.IgnoreSongTimeSignature" can now be changed directly via the Display settings.
- [Imp] <js> Tuning Dialog: The the dialog is now resizable.
- [Imp] <js> Auto save directory is now created when it's missing.
- [Mod] <js> Channel mute status is no longer saved by default.
- [Mod] <js> Auto save no longer defaults to saving in the song's original folder (http://bugs.openmpt.org/view.php?id=1837).
- [Mod] <js> Custom context menus are now handled using a new keyboard shortcut instead of hardcoding the Application key. Shift + F10 was added as a default alternative to the Application key for keyboards that don't have this key (http://bugs.openmpt.org/view.php?id=1815).
- [Mod] <js> New default keyboard shortcuts that conflict with existing shortcut are now added if the conflicting shortcut is in a more specific context, as the latter would override it anyway. Previously, it was the other way around, potentially changing existing shortcut behaviours.
- [Mod] <js> Global keyboard shortcuts no longer have priority over shortcuts in more specific contexts if they conflict, making their behaviour consistent with other contexts.
- [Mod] <js> Folder browser now uses modern browser style when available. The old browser style can be enforced by the hidden setting "Display.UseOldStyleFolderBrowser" (http://bugs.openmpt.org/view.php?id=1687).
- [Mod] <js> When auto-saving to a custom folder, sample paths for external samples are no longer relative in auto-saved files. This way, it is guaranteed that they will still work correctly when being moved back to the module's original folder.
- [Mod] <js> Various context menus are now opened when releasing the right mouse button, not when pressing it.
- [Mod] <js> Special key interception (Windows / Caps Lock / Scroll Lock / Num Lock) is now only active in contexts where a shortcut using that key is present (so e.g. having Note Off assigned to Caps Lock will now allow Caps Lock to be used as normal in another text edit field).
- [Fix] <js> Various keyboard handling issues on Wine should be fixed (http://bugs.openmpt.org/view.php?id=713).
- [Fix] <js> The "Previous Order" and "Next Order" shortcuts now also work when the pattern editor isn't focussed (http://bugs.openmpt.org/view.php?id=1489).
- [Fix] <js> Fixed various keyboard focus issues when switching between upper and lower half of editor views or switching to another application and back (http://bugs.openmpt.org/view.php?id=1799, http://bugs.openmpt.org/view.php?id=1800).
- [Fix] <js> Fixed accessibility issues in the Chord Editor (http://bugs.openmpt.org/view.php?id=1886).
- [Reg] <js> Global keyboard shortcuts can no longer be triggered while a menu or context menu is open.
- [Reg] <js> On Windows XP and Wine 3.12 and older, messages with "don't show again" option are now always shown at most once (the checkbox is no longer visible).

Bundled plugins
- [New] <js> MIDI I/O Plugin: Can now send an initial MIDI dump on playback start.
- [New] <js> MIDI I/O Plugin: The plugin now has its own extended MIDI macro system: Automating any plugin parameter (via PC events or, maybe a bit pointlessly, Zxx macros) sends MIDI macros that follow the same format as Zxx macros, but unlike Zxx macros they are not limited in length.
- [New] <js> MIDI I/O Plugin: A new virtual output device has been added to allow for MIDI messages to be forwarded to the configured output plugin. This way, the new macro mechanism can also be used together with other plugins and not just MIDI devices.
- [Imp] <js> MIDI I/O Plugin: PPQ position is now sent when "send timing information" is enabled. Position updates are sent at the start of every measure, and when changing playback position.
- [Imp] <js> MIDI I/O Plugin: The plugin editor is now resizable.
- [Fix] <js> MIDI I/O Plugin: When a MIDI device is lost temporarily, OpenMPT tries to re-open the correct device (identified by name or friendly name) when playback is started.
- [Reg] <js> MIDI I/O Plugin: The possibility to automate the MIDI input or output port was removed. The resolution of automation parameters was nowhere near enough to be able to actually select devices in a meaningful way.

Third-Party Libraries
- [Imp] Update nlohmann-json (v3.12.0), RtMidi (v6.0.0) and UnRAR (v7.1.6)


v1.31.15.00 (23 March 2025, revision 23072)
-------------------------------------------
Sample tab
- [Imp] <js> Relaxed BRR file rejection heuristics a bit (http://bugs.openmpt.org/view.php?id=1859).
- [Imp] <js> Loop and cue point information is now also copied for sample selections (http://bugs.openmpt.org/view.php?id=1869).
- [Fix] <js> Possible crash when replacing a sample with a shorter one while outside of the sample editor, and then returning to the same sample slot (http://bugs.openmpt.org/view.php?id=1866).
- [Fix] <js> Drawing sample data from right to left caused the drawn lines to not be interpolated properly.

Instrument tab
- [Fix] <js> Fixed crash when trying to remove the only point of an envelope.

Misc
- [Fix] <js> If multiple keyboard layouts were installed, note key mapping could be based on the wrong layout, causing e.g. B-4 and Note-Off keys to be swapped on the default key map with an active US keyboard layout but also a German layout being present.

Third-Party Libraries
- [Imp] Update FLAC (v1.5.0)


v1.31.14.00 (6 January 2025, revision 22819)
--------------------------------------------
Pattern tab
- [Fix] <js> Upon data entry, the status bar display was not updated unless playback was running.
- [Fix] <js> Fixed potential crash when trying to move the cursor past the start or end of a pattern when the order list is empty (http://bugs.openmpt.org/view.php?id=1854).

Sample tab
- [Imp] <js> Pressing Ctrl while moving loop points or clicking loop start / end spin buttons now moves the loop, keeping the loop length constant.
- [Imp] <js> Cue preview shortcuts now set the cue point if it's currently unused and the sample is being previewed (http://bugs.openmpt.org/view.php?id=1852).
- [Fix] <js> Time stretching didn't update cue points.

Playback
- [Fix] <js> Default velocity for instrument plugins was broken in OpenMPT 1.31.13.00 (tx coda).
- [Fix] <js> MIDI Macros: An unfinished byte right before an "s" SysEx checksum macro letter was not considered in the checksum.
- [Fix] <js> Avoid NNA channel starvation due to sample-based instruments that have a MIDI channel assigned and NNA set to "Continue". It can still happen if a VST plugin or the MIDI I/O plugin is associated with the instrument. Other built-in plugins are not affected (http://bugs.openmpt.org/view.php?id=1848).

XM
- [Imp] <js> Warn when saving an instrument that references more than 16 (compatibility export) or 32 samples (http://bugs.openmpt.org/view.php?id=1846).
- [Imp] <js> Identify XMs saved with Digitrakker that were converted from other formats.
- [Fix] <js> In non-compatible linear slide mode, the sample rate could wrap around with portamento slides to extremely low frequencies. This should only happen in compatible mode.

Other formats
- [Imp] <js> MO3: XM dummy command W is now imported.
- [Fix] <js> ITP: Instruments paths were always read as relative paths since OpenMPT 1.31.01.00, usually causing them to fail to load.
- [Fix] <js> ITP: Since OpenMPT 1.28.01.00, instrument and envelope flags were no longer read correctly.

Misc
- [Imp] <js> Fine tempo adjustment shortcuts now also work with formats that don't support fractional tempo.
- [Imp] <js> "Find MPT Hacks" now warns when an XM instrument uses more than 16 samples (http://bugs.openmpt.org/view.php?id=1846).
- [Fix] <js> Passing a relative path to a module file as a command-line parameter for OpenMPT did not work as intended since OpenMPT 1.29.10.00.
- [Fix] <js> Real BPM approximation reported infinity when rows per beat was set to 0. A default of 4 rows per beat is now assumed in this situation.
- [Fix] <js> Advanced Settings: It was not possible to enter fractional values for settings of type float with system locales using a decimal separator other than ".".

Third-Party Libraries
- [Imp] Update mpg123 (v1.32.10) and UnRAR (v7.1.2)


v1.31.13.00 (1 December 2024, revision 22403)
---------------------------------------------
Tree view
- [Imp] <js> Add option to open modules and instrument library entries in Explorer through the context menu (http://bugs.openmpt.org/view.php?id=677).
- [Fix] <js> The folder browser could not handle paths longer than 260 characters.

Pattern tab
- [Fix] <js> Special note keys (Note Cut / Off / Fade / PC / PCs) were not available in the default key map on various keyboard layouts (http://bugs.openmpt.org/view.php?id=1838).
- [Fix] <js> When partially pasting a normal pattern event over a PC event, the effect column was not erased properly if it wasn't part of the copied region.
- [Fix] <js> When evaluating MIDI macros containing letters "u" or "v" during seeking, the initial global volume was applied to them, rather than the global volume that would be reached at that pattern position.

Instrument tab
- [Imp] <js> When moving the last envelope point, avoid it snapping back quickly when moving backwards (http://bugs.openmpt.org/view.php?id=297).
- [Imp] <js> Show tooltips for disabled envelope toolbar buttons, and show the button name in the toolbar.
- [Fix] <js> When importing a soundfont instrument, its bank number was off by one (http://bugs.openmpt.org/view.php?id=1842).

Mod Conversion
- [Imp] <js> Improve handling of the transpose = -1 / finetune = 0 case when converting samples from another format to MOD. This combination is now automatically translated to finetune = -8.

IT
- [Imp] <js> Don't report files claiming to be made with Impulse Tracker 2.08+ as IT-made if they have no edit timer.
- [Fix] <js> Ignore sample data in slots that don't have the "sample data present" flag set, if the file vaguely looks IT-made to avoid playing garbage caused by an Impulse Tracker bug that should not be audible (http://www.un4seen.com/forum/?topic=20542.0).

S3M
- [Imp] <js> Detect early Schism Tracker versions.

MOD
- [Imp] <js> When trying to detect MOD files with broken order lists, the file size is now rounded down to an even number. This helps identifying some malformed files (MOD files can technically not have an odd size).
- [Fix] <js> Also enable ProTracker-compatible tremolo ramp waveform for M!K! modules.
- [Fix] <js> In ProTracker 1/2 mode, retrigger with instrument-less notes now keeps using the previous sample offset.

Other formats
- [Imp] <js> Warn when Startrekker AM companion file for synthesized instruments is most likely missing.
- [Imp] <js> DBM / IMF / MED: When merging pattern commands, allow to move offset to volume column at the expense of a lower offset resolution. Slightly improves playback of ShowMeLove.med (http://www.un4seen.com/forum/?msg=144136).
- [Fix] <js> MED: Fix correct octave transposition in some MED files that have hardware mixing disabled but sample transpose enabled. Fixed Journey.med (http://www.un4seen.com/forum/?msg=143713).
- [Fix] <js> MED: Don't enable Amiga resampler if any stereo samples are found, as it does not support stereo samples (http://www.un4seen.com/forum/?msg=144058).
- [Fix] <js> MED: Fix tempo in some files using software mixing mode and legacy tempo values (http://www.un4seen.com/forum/?msg=144080).
- [Fix] <js> MED: Avoid importing effect memory for some commands (http://www.un4seen.com/forum/?msg=144131).
- [Fix] <js> MED: Retrigger with instrument-less note now keeps using the previous sample offset. Fixes Kris Hadalot.med (http://www.un4seen.com/forum/?msg=144130).
- [Fix] <js> MED: Disable sample swapping on notes with portamento, and don't resume stopped notes with portamento. Fixes Homeward_Trek.med by Soundburst (http://www.un4seen.com/forum/?msg=144148).
- [Fix] <js> MED: Only use 7-bit volume commands in MMD3 files made with a new enough version of MED Soundstudio.
- [Fix] <js> STM: Do not sanitize sample loop data. Scream Tracker 2 reads into the next sample's data when loops exceed the sample length (http://www.un4seen.com/forum/?msg=144130).

Module cleanup
- [Fix] <js> Possible crash when searching for unused samples if an instrument refers to a non-existing sample slot.

Misc
- [Imp] <js> Added the possibility to disable enhanced GDI upscaling via hidden setting "Display.UseGDIUpcaling". This may fix freezes when opening the editors of some older VST plugins when this mode is enabled (http://bugs.openmpt.org/view.php?id=1524).
- [Imp] <js> Channel Manager: Channel buttons now have tooltips.
- [Mod] <js> When enabling the "Display.HighResUI" option, OpenMPT claimed to support per-monitor awareness. This was not really usable, so OpenMPT now only claims to support one system-wide DPI setting.
- [Mod] <js> Auto save no longer uses relative paths for external samples when auto saving to a user-specified folder.
- [Fix] <js> MIDI recording: Velocity amplification was rounded down to integer multiples of 100% (http://bugs.openmpt.org/view.php?id=1835).
- [Fix] <js> After loading a module with missing external samples, OpenMPT still prompted to save those empty sample slots to disk when closing the module. Doing that resulted in a crash.
- [Fix] <js> Fix truncated display of first item in checkbox lists in particular "Display.HighResUI" enabled. Potentially also fixes http://bugs.openmpt.org/view.php?id=1480
- [Fix] <js> When changing a shortcut via a search that had results in multiple contexts, a wrong context could be assigned to the shortcut.
- [Fix] <js> File/Append shortcut didn't work.
- [Fix] <js> Cleaning up auto save files, scanning for missing samples or creating the list of templates or example songs in paths longer than 260 characters did not work.
- [Fix] <ze> When saving a copy of a module, its modified status is no longer reset (http://bugs.openmpt.org/view.php?id=1843).
- [Fix] <js> On Windows XP, the advanced settings list was not formatted correctly.

Third-Party Libraries
- [Imp] Update mpg123 (v1.32.9)


v1.31.12.00 (26 October 2024, revision 21983)
---------------------------------------------
Pattern tab
- [Fix] <js> Keyboard entry was broken in several pattern columns in OpenMPT 1.31.11.00 (http://bugs.openmpt.org/view.php?id=1834).


v1.31.11.00 (26 October 2024, revision 21948)
---------------------------------------------
Pattern tab
- [Imp] <js> Undo steps are no longer created when entering data into the pattern that doesn't actually result in any change (e.g. adding another 0 to an effect parameter that is already 0).
- [Imp] <js> There is now a shortcut for stream export from the order list (http://bugs.openmpt.org/view.php?id=1831).
- [Mod] <js> Rename "Render to Wave" context menu item to "Stream Export".

Instrument tab
- [Fix] <js> When importing instruments in an IT file, restrict fadeout value to multiples of 32.

Mod Conversion
- [Mod] <js> When converting to IT, clamp maximum tempo to 255 BPM and restrict instrument fadeout to multiples of 32.

VST / DMO Plugins
- [Fix] <js> Plugin editor: Adjust window height after pasting a preset if the menu bar height changed due to a longer or shorter preset name.

IT
- [Imp] <js> Don't import SAx High Offset command for IT 1.xx modules. This feature was added in Impulse Tracker 2.00.
- [Imp] <js> Limit Vxx parameter to V80 for files made with old Schism Tracker versions (see http://github.com/schismtracker/schismtracker/issues/531).
- [Mod] <js> When using compatibility export, pattern length is restricted to 32 - 200 rows. Pattern break commands are inserted when required.
- [Fix] <js> Impulse Tracker 2.14 patch version information was incorrect (tx cs127).

S3M
- [Imp] <js> Insert pattern break commands on the last pattern row when trying to save patterns shorter than 64 rows.
- [Mod] <js> O00 effects are no longer ignored if the tracker version in the file header indicates Scream Tracker 3.00 / 3.01, but the file was clearly saved with another tool (e.g. UNMO3).
- [Mod] <cs127> As files made with Scream Tracker 3.20 and 3.21 cannot be told apart, both versions are now shown in the "last saved with" information (http://github.com/OpenMPT/openmpt/pull/24).
- [Fix] <js> Impulse Tracker 2.14 patch version information was incorrect (tx cs127).

MOD
- [Imp] <js> Insert pattern break commands on the last pattern row when trying to save patterns shorter than 64 rows.

Other formats
- [Imp] <js> ULT: Try to preserve global commands if there's e.g. both a speed and tempo command in the same cell. Fixes trance mission.ult (http://www.un4seen.com/forum/?msg=143764).
- [Imp] <cs127> STM: Improve "last saved with" tracker identification (http://github.com/OpenMPT/openmpt/pull/23)
- [Imp] <js> SymMOD: When running out of Zxx macros, try to find the closest macro to use instead. Fixes files like ocean view.symmod with tons of filter sweeps (http://www.un4seen.com/forum/?msg=143932).
- [Mod] <js> SymMOD: Ignore unknown hunks instead of rejecting entire file, as that's what Symphonie does as well. Fixes reading of Natsh1.SymMOD, which has garbage at the end of the file (http://www.un4seen.com/forum/?msg=143961).
- [Fix] <js> OKT: Disable loop on type "B" samples if they're used on a mixed channel. Fixes sinfonia.okta (http://www.un4seen.com/forum/?msg=143764).
- [Fix] <js> OKT: The last sample slot was never loaded.
- [Fix] <js> PTM: Halve offset command strength for 16-bit samples. Fixes leveled.ptm (http://www.un4seen.com/forum/?msg=143764).

Stream Export
- [Fix] <js> Aborting was not possible during the normalization step.

Misc
- [Imp] <js> Keyboard Settings: New shortcuts are now accepted by pressing the new "Set" button or by double-clicking into the shortcut field to improve accesibility (http://bugs.openmpt.org/view.php?id=1825).
- [Mod] <js> "Find MPT Hacks" now detects IT instruments with fadeout values that are not multiples of 32, and warns about patterns shorter than 32 rows.
- [Fix] <js> The "update available" tooltip could cause a really long hang if the previous OpenMPT session was ended in a minimized window state (http://bugs.openmpt.org/view.php?id=1723).
- [Fix] <js> Prevent "Close All" keyboard shortcut from being activated when a dialog is open. It was not possible to close any files in this situation, but the modified status of all files was reset.

Third-Party Libraries
- [Imp] Update mpg123 (v1.32.8)


v1.31.10.00 (22 September 2024, revision 21662)
-----------------------------------------------
Tree view
- [Fix] <js> Remove keyboard focus from tree when it is about to be hidden (http://bugs.openmpt.org/view.php?id=1802).

Pattern tab
- [Imp] <js> Channel settings can now be opened from channel context menu.

Instrument tab
- [Imp] <js> SFZ: Reduce memory usage of regions using the offset / end opcodes (e.g. SFZ files generated Sforzando's SF2 conversion process).

Mod Conversion
- [Imp] <js> Enable sustain loop on last envelope point when converting a volume envelope from XM that has no loops set (http://bugs.openmpt.org/view.php?id=1805).

VST / DMO Plugins
- [Fix] <js> Effect column Cxx volume command (MOD / XM style) was never sent to plugins. In particular this means that MIDI export did not export such volume commands.
- [Fix] <js> For plugin IDs with the highest bit set, cache information retrieval was not possible due to incorrect INI key formatting, causing such plugins to be rescanned every time.
- [Fix] <js> Avoid crash in plugin bridge if plugin changes channel configuration without notifying the host (http://bugs.openmpt.org/view.php?id=1807).

Other formats
- [New] <js> MID: SF2 sound banks embedded in RMI files are now also recognized.
- [Imp] <js> PTM: Use square root pan law, like in XM files.
- [Imp] <js> OKT: Don't drop global commands when setting paired channel volume, and try to write channel volume on the next row in this situation (http://www.un4seen.com/forum/?msg=143684
- [Imp] <js> MED: Allow tempo parameters < 32 BPM.
- [Fix] <js> MED: Command 09 (set speed) was limited to 20 ticks per row instead of 32 ticks per row (http://www.un4seen.com/forum/?msg=143294).
- [Fix] <js> MED: Disallow free panning if hardware mixing is enabled (http://www.un4seen.com/forum/?msg=143278).
- [Fix] <js> MED: For MOD-style vibrato, a speed parameter of 0 was not treated as effect memory (http://www.un4seen.com/forum/?msg=143464).
- [Fix] <js> MED: Fix pattern index exhaustion in modules with multiple sub songs (http://www.un4seen.com/forum/?msg=143464).
- [Fix] <js> MID: Embedded DLS sound banks were not being read.
- [Fix] <js> SFX: Ignore unused data at end of oneshot samples which sometimes caused clicky noises (http://www.un4seen.com/forum/?msg=143414).

Module cleanup
- [Fix] <js> Plugins only referenced by to-be-removed channels were not removed.

Misc
- [Imp] <js> When using the /shared command line parameter, modules are now opened in the OpenMPT window that was last interacted with, instead of a more or less random one.
- [Imp] <js> When appending to an MPTM module, copy over restart position to the newly-created sequence.
- [Fix] <js> Huge soundfonts failed to load if the hidden setting "Misc.CacheCompleteFileBeforeLoading" was used and the soundfont would not fit in memory.

Third-Party Libraries
- [Imp] Update mpg123 (v1.32.7)

Installer/release package
- [Mod] <cs127> Added FST to list of recognized file extensions. AMP uses this extension for multichannel MODs.


v1.31.09.00 (21 July 2024, revision 21219)
------------------------------------------
General tab
- [Fix] <js> The fix for garbled graphics in OpenMPT 1.31.08.00 broke graphical updates when using UI scaling in Windows (http://bugs.openmpt.org/view.php?id=1789).

Pattern tab
- [New] <js> Added shortcuts to go to a specific column within a pattern cell (http://bugs.openmpt.org/view.php?id=1797).
- [Mod] <js> S88 / E88 effect parameter explanation is now shown as "1 R" instead of "Center" as there is no real panning center with these commands (http://bugs.openmpt.org/view.php?id=1796).
- [Fix] <js> The next pattern is now also drawn if "always center active row" is turned off if there is enough space (http://bugs.openmpt.org/view.php?id=22).
- [Fix] <js> Possible crash when seeking with sample sync.

Sample tab
- [Fix] <js> When switching from an OPL instrument to a regular sample slot, keyboard focus remained on the now-invisible OPL editing controls (http://bugs.openmpt.org/view.php?id=1795).

VST / DMO Plugins
- [Fix] <js> Since OpenMPT 1.26.01.00, VST plugins were only loaded if their plugin type ID matched the expected value. However, some old files specify the wrong type ID, in which case those plugins were no longer loaded. The old behaviour was restored.

IT
- [Imp] <js> Identify files saved with itwriter.

XM
- [Imp] <js> For files saved with registered MadTracker 2 versions, do not show binary garbage (the user ID) in the "last saved with" information, instead simply show "registered".
- [Fix] <js> For some truncated files, the used tracker was not identified correctly.
- [Fix] <js> oggmod does not support stereo samples but keeps the stereo flag when encoding such samples. They are now imported as mono samples instead of not importing them at all (tx AliceLR).

S3M
- [Imp] <js> Identify files saved with early Impulse Tracker versions, Sound Club 2, Liquid Tracker, NESMusa, UNMO3, deMODifier, Kosmic To-S3M, and better tell old ModPlug Tracker versions apart.

MOD
- [Fix] <js> Allow sample swapping to work when swapping from a non-looping, stopped sample back to a looping sample (fixes MOD.energy, http://www.un4seen.com/forum/?msg=143034).

Other formats
- [Imp] <js> MID: Allow importing up to 32 MIDI channels by either using the official port selection mechanism of the SMF format, or alternatively by using a Yamaha extension (http://forum.openmpt.org/index.php?topic=7200.0).
- [Imp] <js> DTM: Identify files saved with Digital Tracker 2.3.
- [Imp] <js> DBM: Import second sustain point in case the first sustain point is not set, or if it has a lower index than the first.
- [Fix] <js> DBM: When several instruments referenced the same sample with different properties (volume, loop points, etc.), only one set of properties was imported (fixes DBM.Supernova, http://www.un4seen.com/forum/?msg=143091).
- [Fix] <js> DBM: Prioritize effects more correctly when the same effect is encountered in both effect columns of a cell (fixes DBM.143_Gnoj, http://www.un4seen.com/forum/?msg=143155).
- [Fix] <js> DBM: Don't import offset effects when there's a tone portmento next to them (fixes DBM.123_Savo, http://www.un4seen.com/forum/?msg=143155).
- [Fix] <js> DBM: A few IT-specific playback quirks are disabled for more accurate playback (e.g. in "Are You Flying With Me?" by Jazzcat).
- [Fix] <js> AMF: When running out of sample slots, file reading became be misaligned because the sample name was not skipped.
- [Fix] <js> MED: Command 0F was not imported. Upper frequency limits should be more accurate now.
- [Fix] <js> MED: Channel panning is now only applied in MMD2 files if the free pan flag is set (http://www.un4seen.com/forum/?msg=143276).
- [Fix] <js> MED: Volume command resolution was incorrect for pre-MMD3 files (http://www.un4seen.com/forum/?msg=143276).

Misc
- [Fix] <js> Keyboard focus was not restored properly in the upper half of the editor views when switching from and back to OpenMPT (http://bugs.openmpt.org/view.php?id=1795).
- [Fix] <js> Keyoard configuration: Changing the category dropdown selection while "Find Key" was active did not refresh the key list properly.

Third-Party Libraries
- [Imp] Update ancient (2024-07-15). This update adds support for Pack-Ice and PMC formats, and fixes a crash with malformed PPMQ files.


v1.31.08.00 (9 June 2024, revision 20987)
-----------------------------------------
General tab
- [Fix] <js> Updates received from other views could cause unintended data changes (e.g. truncating fractional tempo if it is technically unsupported by current format).
- [Fix] <js> Since OpenMPT 1.30, it was possible that leftovers from a previously visited tab could remain visible under some circumstances.

Pattern tab
- [Fix] <js> Navigating up on the first row of a pattern with "Play whole row while navigating" enabled but "Continuous scroll" disabled played the row and advanced to the second row instead of doing nothing (http://bugs.openmpt.org/view.php?id=1781).
- [Fix] <js> After deleting an effect, it was possible that its now-invisible parameter could still affect effect memory in S3M files.

Other formats
- [Imp] <js> MED: Additional command pages can now be read (http://bugs.openmpt.org/view.php?id=1783).
- [Imp] <js> MED: Echo DSP is now emulated (http://www.un4seen.com/forum/?msg=143034).
- [Fix] <js> AMS: Default channel panning was broken, using all-center panning instead of MOD-style panning.
- [Fix] <js> STP: Correctly import volume slides where both nibbles are set.
- [Fix] <js> DSm: Only the first 48 samples were ever read.
- [Fix] <js> DSm: Don't import as Amiga module (and thus allow Amiga resampler to be enabled), as this PC format can easily exceed the Amiga frequency range.
- [Fix] <cs127 & js> STM / STX: Don't set channel panning. ScreamTracker 2 only outputs mono sound.

Third-Party Libraries
- [Imp] Update ancient (v2.2.0) and UnRAR (v7.0.9)


v1.31.07.00 (12 May 2024, revision 20796)
-----------------------------------------
Pattern tab
- [Fix] <js> Find & Replace: In the plugin parameter dropdown, parameter 999 was missing if the number of plugin parameters was unknown.

Comments tab
- [Fix] <js> Sample / instrument name editing was broken since OpenMPT 1.31.01.00 (tx SoDa7).

Playback
- [Fix] <js> The OPL emulation produced unwanted clicks with mix rates exceeding 65 kHz (http://bugs.openmpt.org/view.php?id=1775).
- [Fix] <js> MIDI macro command s didn't compute the correct checksum if a device ID was made up from two bytes (e.g. Roland XV-5080).

IT
- [Imp] <js> Disable a few more compatibility flags for ITs made with older Schism Tracker versions (http://bugs.openmpt.org/view.php?id=1764).
- [Mod] <js> Halve the output volume of files saved with ChibiTracker, as its mixer is about half as loud as ours.

XM
- [Imp] <js> Detect files saved with PlayerPRO. Improved detection of files saved with ModPlug Tracker.
- [Mod] <js> Files with impossibly small pattern headers are now rejected, like FastTracker 2 does.

S3M
- [Imp] <js> Detect files saved with PlayerPRO.
- [Fix] <js> In mono mode, the ratio between sample and OPL volume was incorrect (http://bugs.openmpt.org/view.php?id=1774).

MOD
- [Mod] <js> Changed VBlank timing heuristic to always assume CIA timing when long samples (unsupported by original ProTracker) are found.
- [Fix] <js> Disable NoiseTracker quirks if empty sample slots have a default volume other than 0 (http://bugs.openmpt.org/view.php?id=1765).
- [Fix] <js> 7-bit panning detection may have returned incorrect results for MODs with a channel count other than 4.

Other formats
- [Imp] <js> STK: Loosen SoundTracker file rejection heuristics a bit to allow loading of files with overly long samples (romantic.stk) and malformed song titles (schmokk.mod, scramble_2.mod and others). Other heuristics has been tightened a bit.
- [Imp] <js> MED: Improve handling of default tempo, panning and channel volume in files containing more than one song (fixes sugar n spice.mmd3, http://www.un4seen.com/forum/?msg=142659).
- [Mod] <js> MO3: Further reduce maximum allowed music data (not samples) size from 2 GiB to 512 MiB.
- [Mod] <js> MDL: Slightly more accurate import of pattern command 9 (enabling envelopes instead of setting envelope position).
- [Fix] <cs127> ULT: Support the highest three octaves.

Misc
- [Mod] <js> Channel Manager: Allow middle-click to open Quick Channel Settings for all formats.
- [Imp] <js> When auto-saving, display the currently saving module's filename in the status bar.
- [Fix] <js> Fixed possible crash when merging sequences.
- [Fix] <jh> It was possible that OpenMPT would crash on shutdown if an automatic update check was still running in the background (http://bugs.openmpt.org/view.php?id=1760).

Bundled plugins
- [Fix] <js> When changing the output plugin from the LFO plugin's editor, the change was not reflected in the General tab.

Third-Party Libraries
- [Imp] Update mpg123 (v1.32.6) and opus (v1.5.2)


v1.31.06.00 (24 March 2024, revision 20438)
-------------------------------------------
Sample tab
- [Imp] <js> Audio is no longer blocked while updating the GUI after pasting a sample.

IT
- [Fix] <js> In OpenMPT 1.31.05.00, MIDI macros in IT files made with older MPT versions were no longer working (http://bugs.openmpt.org/view.php?id=1753).

Other formats
- [Fix] <js> MED: Transposed samples were playing too low in some files (e.g. mix94.mmd1).
- [Fix] <js> OKT: Some files with garbage at the end were rejected (e.g. katharsis - piano lesson.okta).
- [Fix] <js> SymMOD: Fixed potential crash with malformed sustain loops.

Misc
- [New] <js> Added two more octaves worth of note key assignments suitable for micro-tuning (http://bugs.openmpt.org/view.php?id=1727).
- [Fix] <js> File / sample sizes in the instrument browser and comments tab were displayed incorrectly if a size less than 1024 bytes ended in 0.

Bundled plugins
- [Mod] <js> The "Triangle" waveform in the Chorus / Flanger DMO plugins is now labelled "Square" instead to reflect its actual behaviour.
- [Fix] <js> There was a periodic click when playing a module using the Chorus or Flanger DMO plugin at a mix rate exceeding ~136.5 kHz (http://bugs.openmpt.org/view.php?id=1752).
- [Fix] <js> Since OpenMPT 1.29.13.00, the Distortion plugin sounded incorrect when using certain parameter combinations.

Third-Party Libraries
- [Imp] Update ancient (2024-03-23)


v1.31.05.00 (3 March 2024, revision 20196)
------------------------------------------
Tree view
- [Fix] <js> The search filter was no longer applied when the instrument library was refreshed.

Pattern tab
- [New] <js> Using the new hidden setting "Pattern Editor.IgnoreSongTimeSignature", it is now possible to ignore the time signature provided by the module and use the pre-configured defaults from the Display tab instead (http://bugs.openmpt.org/view.php?id=1746).
- [Fix] <js> Notes no longer hang on transpose or data entry (http://bugs.openmpt.org/view.php?id=1724).
- [Fix] <js> Data Entry could insert volume column commands even in MOD format when turning "virtual" default volume commands into real commands. This feature of Data Entry is now disabled for MOD files, as the alternative - moving the newly-added command to the effect column - would be counter-intuitive (http://bugs.openmpt.org/view.php?id=1738).
- [Fix] <js> Assigning / unassigning a plugin to / from an instrument didn't update their plugin editor button in the pattern tab.

Sample tab
- [New] <js> Can now convert sustain loops to normal loops and vice versa. If both loop types are set, the commands swap the two loops.
- [Fix] <js> Transpose value was sometimes off-by-one after manually entering sample rate.
- [Fix] <js> Reset sample reverse flag when loading new samples or converting between formats.
- [Fix] <js> Avoid accidental single-pixel sample data selections and jumpy selection start / end points with zoomed-out or auto-zoomed samples (quite likely introduced in OpenMPT 1.30.04.00).

Instrument tab
- [Imp] <js> SFZ: global_label opcode (instrument name) is now read and written.
- [Imp] <js> SFZ: Sustain point is no longer set on volume envelopes if it's the last point of the envelope and its value is neutral (0).
- [Fix] <js> SFZ: <, = and various whitespace characters are now omitted when writing name labels, to ensure that the resulting SFZ file can be parsed unambiguously.
- [Fix] <js> Clearing the note map due to plugin assignment didn't update other instrument tabs of the same song accordingly.

VST / DMO Plugins
- [Fix] <js> Prior to OpenMPT 1.30, if an instrument was set to use MIDI program 1 or bank 1, this program or bank change was not sent to plugins (unless another instrument previously explicitly selected a different program or bank for this plugin). This was fixed in OpenMPT 1.30, but that behaviour change broke existing modules, so for tracks made with earlier OpenMPT versions, the old behaviour is applied again.

IT
- [Imp] <js> A few more compatibility flags are now disabled for modules saved with earlier Schism Tracker versions.
- [Fix] <js> MIDI macros were reset in IT 2.14 / 2.15 files that declared to be compatible with older IT versions (fixes spx-visionsofthepast.it, http://bugs.openmpt.org/view.php?id=1745).

Other formats
- [Imp] <js> OKT: Work around missing negative arpeggio implementation by transposing the notes up an octave (http://bugs.openmpt.org/view.php?id=1732).
- [Fix] <js> OKT: Channel volume commands were sometimes lost over less important effects (http://bugs.openmpt.org/view.php?id=1732).
- [Fix] <js> IMF: Do not verify magic bytes in sample header. "Leaving All Behind" by Karsten Koch uses unexpected magic bytes, Orpheus ignores them just like the instrument header magic bytes.
- [Fix] <js> Gzip archives: In some cases, decompression failed despite the file being valid.

Misc
- [Fix] <js> Opening links through the Open File / Save File dialogs could lead to a crash (http://bugs.openmpt.org/view.php?id=1739).
- [Fix] <js> Allow end-of-tune optimizations for XM F00 command to also work with MIDI / OPL export (http://bugs.openmpt.org/view.php?id=1741).
- [Fix] <jh> OpenMPT no longer ran on Windows N editions without the Media Feature Pack installed since OpenMPT 1.31.01.00 (http://bugs.openmpt.org/view.php?id=1749).
- [Fix] <js> Keyboard Settings: Switching between categories broke in OpenMPT 1.31.04.00.
- [Fix] <js> Moving a plugin didn't update its MIDI mapping directives.
- [Fix] <js> MIDI Export: Exported drum keys were off by one since OpenMPT 1.30.03.00 unless Mapped mode was chosen.
- [Fix] <js> Copying an instrument from another module (through the tree view or when appending modules) that referenced a tuning didn't copy that tuning over to the current module, eventually leading to a crash when the other module was closed.
- [Fix] <js> Fixed possible inconsistent UI state after removing instruments.

Third-Party Libraries
- [Imp] Update Crypto++ (v8.9.0), mpg123 (v1.32.4), nlohmann-json (v3.11.3), UnRAR (v7.0.7) and zlib (v1.3.1)

Installer/release package
- [Mod] <js> Updated US_mpt_classic_(nobuyuki).mkb.


v1.31.04.00 (27 August 2023, revision 19605)
--------------------------------------------
Pattern tab
- [Mod] <js> Fixed volume and envelope position issues when seeking with sample sync and the target row contained a note without instrument number.

Sample tab
- [Fix] <js> IFF: The workaround for 8SVX files with claimed zero-length body chunks (to accommodate for http://bugs.openmpt.org/view.php?id=117) was too aggressive, causing also files with empty NAME chunks to not load properly (http://bugs.openmpt.org/view.php?id=1715).
- [Fix] <js> IFF: 16-bit mono samples were saved as little-endian instead of big-endian.
- [Fix] <js> Remove cue points from newly-created samples after slicing at cue points. The old cue points no longer make sense in the context of the new sample.

VST / DMO Plugins
- [Mod] <js> MIDI data is no longer sent to bypassed VST plugins.
- [Fix] <js> The new instrument plugin tone portamento mechanism broke after encountering a note-off event.

Bundled plugins
- [Fix] <js> MIDI I/O Plugin: Fix potential crash while suspending.

Misc
- [Imp] <js> MIDI pitch bend is now applied to samples outside of the pattern view as well (e.g. sample / instrument / comments tab).
- [Fix] <js> Improve scrolling support for laptops with precision touchpads (http://bugs.openmpt.org/view.php?id=1638).
- [Fix] <js> Clear find text boxes in keyboard settings when manually switching categories dropdown to avoid inconsistent display.

Third-Party Libraries
- [Imp] Update ancient (v2.1.1), Crypto++ (v8.8.0), FLAC (v1.4.3), unrar (v6.2.10) and zlib (v.1.3)


v1.31.03.00 (18 June 2023, revision 19401)
------------------------------------------
Tree view
- [Fix] <js> Since OpenMPT 1.31.01.00, refreshing the tree view was much slower than necessary when an item in the file browser was selected.

Pattern tab
- [Fix] <js> Interpolating a command with two independent nibble parameters caused a wrong result if the direction of interpolation differed between the two nibbles (tx NoobTracker).

Sample tab
- [Fix] <js> Trying to load unsupported files could sometimes cause the currently loaded sample data in that slot to be removed even if the raw sample import dialog was going to be shown later.

MOD
- [New] <js> Can now read modified 8-channel MOD files from the DOS game Aleshar - The World Of Ice.

Other formats
- [Fix] <js> MED: Fixed possible crash with some malformed files.

Misc
- [Mod] <jh> When updating portable installations, the update is now downloaded into the portable installation directory instead of the system's temporary directory, allowing to update several portable installations at the same time (http://bugs.openmpt.org/view.php?id=1702).
- [Fix] <js> Sustain point was disabled on soundfont drum keys with custom envelope, and envelope settings from a drum kit's global zone were not applied to individual drums (http://bugs.openmpt.org/view.php?id=1706).

Third-Party Libraries
- [Imp] Update lhasa (v0.4.0)


v1.31.02.00 (7 May 2023, revision 19251)
----------------------------------------
Pattern tab
- [Mod] <js> Special handling of Tab key on input fields was removed. The global shortcut for switching between upper / lower views should be used instead (http://bugs.openmpt.org/view.php?id=1697).

Sample tab
- [Fix] <js> Fixed some rounding issues when transposing samples especially at lower sample rates (tx elz).

IT
- [Imp] <js> Improved fingerprinting of early ModPlug Tracker versions.

Other formats
- [Imp] <js> XMF: Modules from Astroidea demos can now be read as well.

Misc
- [Imp] <js> Appending a module also merges its edit history (http://bugs.openmpt.org/view.php?id=1700).
- [Fix] <js> Switching between module formats could permanently erase user-assigned effect letter shortcuts (smooth MIDI macros, finetune, etc).
- [Fix] <js> Loading keyboard shortcuts from a file made automatically assigned effect letter shortcuts inaccessible (potentially fixes http://bugs.openmpt.org/view.php?id=1571).
- [Fix] <jh> Automatic updates were not available on builds for Windows XP and Vista, despite being advertised to work in OpenMPT 1.31 (http://bugs.openmpt.org/view.php?id=1699).

Installer/release package
- [Fix] <jh> For new installations, the installer for Windows XP and Vista suggested an incorrect default path (http://bugs.openmpt.org/view.php?id=1699).


v1.31.01.00 (30 April 2023, revision 19143)
-------------------------------------------
Tree view
- [New] <js> The instrument library can now be filtered. The default shortcut for invoking the filter is Ctrl + F. The filter supports * (any number of characters) and ? (single character) wildcards (http://bugs.openmpt.org/view.php?id=1566).
- [New] <js> The instrument library can now also be sorted by file size and modification date. Sorting can be changed through the context menu or user-defined keyboard shortcuts.
- [New] <js> Selecting a file in the instrument library now shows its file size and modification date in the status bar.
- [Imp] <js> Most keyboard shortcuts are now configurable.

General tab
- [Mod] <js> In OpenMPT 1.30, inserting a plugin before the current slot was changed to keep the moved plugin selected, instead of staying in the current (newly inserted) slot. This behaviour change was now reverted, as it is more likely that the user intends to insert a new plugin there and not change the settings of the moved plugins.

Pattern tab
- [New] <js> Added shortcuts to scroll the pattern view without having to use the mouse (tx isdera).
- [Imp] <js> Seeking with sample sync now supports portamento up / down and IMF / PTM note slides.
- [Imp] <js> Edit step and pattern navigation now also work beyond the next or previous pattern if the jumping distance is larger than the pattern size.
- [Imp] <js> Dummy command W can now be inserted into XM files for syncing purposes in other module players (http://bugs.openmpt.org/view.php?id=1373).
- [Imp] <js> Effect visualizer: For PC events, the currently edited plugin parameter can now be selected from a dropdown menu (http://bugs.openmpt.org/view.php?id=1677).
- [Imp] <js> Improved focus handling on the instrument selection dropdown: Navigating using cursor keys no longer reverts the keyboard focus back to the pattern editor immediately.
- [Mod] <js> The selection key being pressed no longer causes automatic cursor moves caused by Edit Step to stop at the pattern end (http://bugs.openmpt.org/view.php?id=1698).
- [Mod] <js> The hidden setting "Pattern Editor.DefaultSequenceMargins" is now applied to the scroll bar range, too.

Sample tab
- [New] <js> It is now possible to follow the play cursor when the sample waveform is zoomed in and not fully visible, as long as only a single note is being previewed. This can be enabled through the settings dialog or a keyboard shortcut (Shift + F by default).
- [New] <js> Added two new shortcuts to finetune the sample rate, working the same way as the spin buttons on the finetune / sample rate edit field. Default bindings are Shift + Up / Down.
- [New] <js> Samples can now be saved as Amiga IFF (8SVX / 16SVX) as well.
- [Imp] <js> Double-clicking a timeline item now pops up an input dialog for finetuning that item.
- [Reg] <js> Completely removed the hideable warning when trying to do sign conversion on a sample currently playing. This feature broke a long while ago with the default sample play behaviour anyway.

Comments tab
- [New] <js> Instruments and samples can now be previewed via MIDI input as well.
- [Imp] <js> Added mono / stereo indication to sample list. Sample size formatting is now more flexible.
- [Fix] <js> Windows error sound no longer plays when holding keys for note preview.

VST / DMO Plugins
- [New] <js> Tone portamento can now be applied to plugins the same way as it works for samples (assuming that the target note is within the plugin's pitch bend range), and as a result now works properly in MIDI export as well.
- [New] <js> Individual plugins can now be auto-suspended if they output silence for four seconds. As before, the default auto-suspend state for newly added plugins can be set through the hidden setting "VST Plugins.EnableAutoSuspend" (http://bugs.openmpt.org/view.php?id=605).
- [Mod] <js> Arpeggio notes no longer reset the current pitch bend position. Fixed some other arpeggio edge cases as well.

Playback
- [Imp] <js> Reduced aliasing when downsampling with the Sinc + Low-Pass resampler (tx eightbitbubsy).
- [Imp] <js> XM fine portamentos are now also sent to plugins and also work when exporting XM to MIDI.
- [Mod] <js> The sample position is now rounded instead of truncated when resampling without interpolation.
- [Mod] <js> The filter cutoff frequency is no longer rounded to integer frequency values.
- [Mod] <js> Recalling a sample's default volume using an instrument number (as opposed to regular volume commands) previously ramped the volume change smoothly over a whole tick. Now the user-configured ramp settings are used instead (as it would happen when using a volume command to achieve the same effect, http://bugs.openmpt.org/view.php?id=1666).

IT
- [Mod] <js> Mono samples are now stored with lossless IT sample compression by default. As compressed stereo samples are still not supported properly by some software that is most likely not going to be updated anymore, compression for stereo samples remain disabled for now (but can, as before, still be enabled through the hidden setting "Misc.ITCompressionStereo").

IT::Compatible Playback Mode
- [Fix] <js> Initial "last note memory" of every channel is C-0, so a lone instrument number without note triggers that note.

S3M
- [Imp] <js> Better approximation of old "stereo control" SAx command used in Purple Motion's PANIC.S3M.
- [Fix] <js> In ScreamTracker 3.03 and later, OPL notes with tone portamento next to them are delayed until the next row and then the new pitch is used instantly (http://bugs.openmpt.org/view.php?id=1613).

MOD
- [Fix] <js> Lone instrument number with retrigger effect should swap sample immediately. Fixes "catfood" by no9 (http://bugs.openmpt.org/view.php?id=1584).

Other formats
- [New] <js> Can now read 667 (Composer 667) modules.
- [New] <js> Can now read GTK (Graoumf Tracker) and GT2 (Graoumf Tracker / Graoumf Tracker 2) modules.
- [New] <js> Can now read a variant of the DSMI AMF format called DMF, as found in various DOS games distributed by Webfoot (Tronic, H2O, PowBall, etc.).
- [New] <js> Can now read DSM modules made with Dynamic Studio.
- [New] <js> Can now read XMF modules from the DOS game Imperium Galactica.
- [New] <js> Can now read the hacked MOD format (.DMF) from the game "Apocalypse Abyss".
- [Imp] <js> MED: Tempos higher than 255 BPM are now tried to be imported using Parameter Extension (#xx) mechanism (http://bugs.openmpt.org/view.php?id=1665).
- [Imp] <js> MED: MMD1 files with more than 16 channels are now supported.
- [Imp] <js> ULT: Import 8-bit volume commands with full precision.
- [Mod] <js> DSM: Remove special handling for non-MOD effects in DSIK DSM files. The origin of those effect commands is actually the newly-supported Dynamic Studio DSM format, not the DSIK DSM format.
- [Fix] <js> MO3: Envelope sustain was not imported correctly if the source file was an XM (http://bugs.openmpt.org/view.php?id=1695).
- [Fix] <js> In OpenMPT 1.30, it was no longer possible to load MMCMP / PP20 / XPK-compressed modules inside ZIP / RAR / LHA containers. This is now possible again (http://bugs.openmpt.org/view.php?id=1549).

Stream Export
- [Imp] <jh> FLAC: Added 32-Bit output support.

Module cleanup
- [Imp] <js> In instrument mode, the whole module is rendered virtually for more accurate detection of unused samples. This takes a bit more time, but finds unused samples more reliably. Especially if a pattern started with an instrument-less note on some channel, that note was marked as used for any instrument, leading to unused samples not being detected.

Misc
- [New] <js> Added two new shortcuts: Play Song from Cursor / Pause and Play Song from Pattern Start / Pause (http://bugs.openmpt.org/view.php?id=1619).
- [Imp] <js> Instead of re-adding all non-conflicting default shortcuts every time a keymap is loaded, they will now only be added if the keymap was last saved with an older version of OpenMPT than the version that introduced the default shortcut (http://bugs.openmpt.org/view.php?id=1615).
- [Imp] <js> DLS / SF2: Added support for delay and hold envelope sections as well as pitch envelopes. Individual envelopes for each drum key are now supported.
- [Imp] <js> "Last saved with" field in Song Properties now indicates whether the module was saved with ModPlug Player ADPCM sample compression.
- [Imp] <js> MIDI Export: Channel panning is now exported as MIDI CC 10. If several notes play on the same MIDI channel, the last triggered note's panning is always considered.
- [Imp] <jh> Builds for Windows XP and Vista can now receive automatic updates as well.
- [Mod] <js> When a text field is focussed, native text field shortcuts (such as Ctrl + A and others) are now preferred over OpenMPT shortcuts that are specific to the current view. Previously, they already took precedence over global OpenMPT shortcuts that apply to all views.
- [Mod] <js> When a text field is focussed, global shortcuts using Shift + Enter or just Enter are no longer blocked if the text field is a single-line field, as well as Alt + Cursor keys in any text fields.
- [Mod] <js> When pressing the Play / Stop shortcut while the song is in paused or step mode, playback now continues as with the Play / Pause shortcut.
- [Mod] <js> Channel Manager: Channel color gradient is now right-aligned so that it does not clash with the mute / select indicators.
- [Reg] <jh> The minimum supported operating version for modern builds is now Windows 10 21H2 Build 19042. Older Windows 10 versions are still supported by legacy builds.

Third-Party Libraries
- [Imp] Update opus (v1.4), r8brain (v6.2) and RtMidi (v5.0.0)


v1.30.12.00 (15 April 2023, revision 19028)
-------------------------------------------
Sample tab
- [Fix] <js> Stopping a sample preview could stop unrelated plugin notes.

Instrument tab
- [Fix] <js> Saving ITI files with embedded samples created broken ITI files if the source samples were marked as external (http://forum.openmpt.org/index.php?topic=6957.0).

MOD
- [Imp] <js> VBlank heuristics are now applied to MOD files with M!K! signature. Fixes mod.siedler ii (tx AliceLR).
- [Mod] <js> NoiseTracker MODs are now always played with VBlank timing (tx AliceLR).

Other formats
- [Imp] <js> MED: Add support for default instrument pitch.
- [Mod] <js> 669: Reject files with lots of control characters in song message.
- [Fix] <js> MED: Global play transpose value was not considered for MMD0 files.

Misc
- [Imp] <js> Allow arrow up / down keys and scroll wheel to modify various edit fields in Stream Export and settings dialogs.
- [Imp] <js> Tab order in Plugin Manager was changed to make the plugin list reachable more easily (http://bugs.openmpt.org/view.php?id=1680).
- [Fix] <js> In OpenMPT 1.30.11.00, browsing for all module types showed all 3-letter file extensions in addition to modules (http://bugs.openmpt.org/view.php?id=1678).
- [Fix] <js> Song length calculation stopped at first encountered F00 command in XM files instead of looking for further sub songs.

Third-Party Libraries
- [Imp] Update mpg123 (v1.31.3)


v1.30.11.00 (5 March 2023, revision 18811)
------------------------------------------
Tree view
- [Fix] <js> When previewing soundfont or MIDI library items, a click was heard on note-off (http://bugs.openmpt.org/view.php?id=1659).

Pattern tab
- [Imp] <js> Quick Paste only sets the module as modified if the pattern contents were changed.
- [Fix] <js> Don't allow notes or effects not supported by the current module type to be pasted through Quick Cursor Paste.
- [Fix] <js> After seeking with sample sync, the filter settings of playing notes were not updated since OpenMPT 1.30.09.00.
- [Fix] <js> Effect info: XM commands E10 / E20 / EA0 / EB0 now correctly show "continue" for parameter info.

Sample tab
- [Imp] <js> The correct endianness of 16SV IFF sample data is now determined heuristically, to support both IFF files created by some (broken) PC software and files using the correct endianness.
- [Imp] <js> Fix single-cycle loops in some IFF samples.

Instrument tab
- [Fix] <js> If the first notes assigned to a sample in a key map required no transposition but the transposition changed for higher notes, the "Transpose Samples / Reset Map" feature was still available, even though it shouldn't be.
- [Fix] <js> Possible crash when hovering the envelope area of malformed instruments with a set release node but no envelope points (http://bugs.openmpt.org/view.php?id=1672).

Mod Conversion
- [Fix] <js> MOD commands E10 / E20 / EA0 / EB0 are no longer preserved when converting to other formats, as the MOD format applies no effect memory for them.

Playback
- [Fix] <js> The fix for the OPL cutoff bug introduced in OpenMPT 1.30.09.00 was incomplete (http://bugs.openmpt.org/view.php?id=1671).
- [Fix] <js> Avoid potential deadlock when a VST plugin is auto-bypassed due to an exception.
- [Fix] <js> Possible crash when playing instruments with a set release node but no envelope points (http://bugs.openmpt.org/view.php?id=1672).

Other formats
- [Fix] <js> ULT: Offset commands exceeding 65535 samples were sometimes not imported correctly even if there was room for them.

Misc
- [Fix] <js> When saving modules extracted from ZIP files and other archive types, there was no prompt for a new filename, instead overwriting the original archive file.
- [Fix] <js> Song length calculation and seeking in (malformed) modules with thousands of short sub-songs has been sped up.

Third-Party Libraries
- [Imp] Update UnRAR (v6.2.6)


v1.30.10.00 (29 January 2023, revision 18674)
---------------------------------------------
Pattern tab
- [Fix] <js> When jumping around in the module, the tempo was sometimes incorrectly limited to 255 BPM.

Sample tab
- [Fix] <js> Normalizing all samples or removing DC offset from all samples didn't mark external samples as modified (except for the currently selected one).

Instrument tab
- [Fix] <js> Previewing filtered instruments produced a repetitive click sound in OpenMPT 1.30.09.00 (http://bugs.openmpt.org/view.php?id=1655).

Comments tab
- [Fix] <js> The displayed middle-C frequency was slightly off for MOD files.

Mod Conversion
- [Fix] <js> Translation between MOD / XM E5x and MPTM / IT / S3M S2x Set Finetune commands did not take the different scales of the commands into account.
- [Fix] <js> Wrong PAL middle-C frequency was used when converting from MOD to MPTM / IT / S3M.

Playback
- [Fix] <js> Initial instrument cutoff was broken for OPL instruments in OpenMPT 1.30.09.00 (http://bugs.openmpt.org/view.php?id=1657).

Other formats
- [Fix] <js> Loading DSym files was completely broken in OpenMPT 1.30.09.00.

Misc
- [Fix] <jh> After auto-updating from a previous version with no modules open, an empty module was created.

Third-Party Libraries
- [Imp] Update mpg123 (v1.31.2)


v1.30.09.00 (8 January 2023, revision 18451)
--------------------------------------------
Tree view
- [Fix] <js> Instead of playing silence, preview for missing MIDI library soundfont items was falling back to the first instrument in the soundfont.
- [Mod] <js> ZIP files are no longer tried to be resolved as links in the file browser. This may slightly speed up populating the file browser, and should fix a potential crash reported by a user (http://bugs.openmpt.org/view.php?id=1645).

Pattern tab
- [Imp] <js> When recording MIDI pitch bend events, changes are now applied live (http://bugs.openmpt.org/view.php?id=1640).
- [Imp] <js> VU meters now scale better with larger pattern fonts and high-DPI displays.
- [Fix] <js> After removing channels, the pattern cursor sometimes became invisible if the channel it was previously located in no longer existed.

Sample tab
- [Fix] <js> Vertical lines sometimes showed up in zoomed-in waveforms.
- [Fix] <js> The dragging improvements from OpenMPT 1.30.04.00 are no longer applied to cue points and loop points, as the old behaviour is arguably better-suited there.
- [Fix] <js> Avoid overwriting sample slot when loading an OPL instrument from an S3I file but current format doesn't support OPL.
- [Fix] <js> The forward / backward mouse buttons to navigate to the next / previous sample slot now also work when clicking into the OPL editor.

Instrument tab
- [Fix] <js> Live update of filter settings only worked for running notes if the filter envelope was active.

IT
- [Fix] <js> In sample mode, portamento to a different sample turns off the filter if cutoff / resonance was previously 127 / 0.

S3M
- [Imp] <js> Detect files saved with Graoumf Tracker instead of claiming they were made with OpenMPT 4.47.
- [Fix] <js> Pattern loop state was not propagated anymore since OpenMPT 1.30, leading to wrong song length calculation and SB0 + SBx being located on different channels not working properly anymore (http://bugs.openmpt.org/view.php?id=1641).

Bundled plugins
- [Imp] <js> MIDI I/O Plugin: MIDI Start message is no longer sent when previewing notes in pattern / sample / instrument editors or when pattern stepping is enabled (http://forum.openmpt.org/index.php?topic=6880.0).

Misc
- [Fix] <jh> Update Check: On modern portable amd64 installations, updates for the legacy version were downloaded instead (http://bugs.openmpt.org/view.php?id=1642).

Third-Party Libraries
- [Imp] Update UnRAR (v6.2.3)


v1.30.08.00 (13 November 2022, revision 18159)
----------------------------------------------
Pattern tab
- [Imp] <js> More accurate effect description when combining volume column cue points with regular offset.

Sample tab
- [Fix] <js> Avoid drawing sample waveform from uninitialized memory under some very specific circumstances.

Other formats
- [Fix] <js> MO3: Sample filenames were not imported correctly.

Module cleanup
- [Fix] <js> Automatic Sample Trimmer: Avoid over-trimming samples that are used for MOD-style sample swapping - it is important that the whole sample is preserved in this case even if it is playing completely silently, as the timing of sample swap depends on reaching that sample's end or loop end.

Stream Export
- [Fix] <jh> Little-endian RAW export was broken since OpenMPT 1.30.01.00, exporting big-endian samples instead.

Misc
- [New] <js> Added Play / Stop shortcut (http://bugs.openmpt.org/view.php?id=1619).
- [Imp] <js> Keyboard Settings: If no choices are set, the Restore button now restores all default choices for the given shortcut (http://bugs.openmpt.org/view.php?id=1630).
- [Fix] <js> OPL Export: Pressing the Cancel button didn't abort the conversion process.
- [Fix] <kk & js> Most keyboard shortcuts were not accessible with Microsoft's RDP client for iOS and potentially other virtual keyboards (http://bugs.openmpt.org/view.php?id=1634).

Third-Party Libraries
- [Imp] Update flac (v1.4.2), mpg123 (v1.31.1) and UnRAR (v6.2.2)


v1.30.07.00 (25 September 2022, revision 17944)
-----------------------------------------------
Tree view
- [Imp] <js> Allow ESC to cancel label editing.

Pattern tab
- [Mod] <js> Clarify that a 0 digit means using the previous value in the effect info of vibrato / tremolo / panbrello pattern commands.

Sample tab
- [Imp] <jh> 32-bit FLAC files can now be read.
- [Fix] <js> Inserting or deleting cue points no longer marks external samples as modified.

Instrument tab
- [Fix] <js> SFZ: Don't import one-shot loop type as an actual loop. The only difference to the no_loop type is the note-off behaviour.

VST / DMO Plugins
- [Fix] <js> Previous notes were not stopped properly when a new note was struck and all mix channels were occupied.

Playback
- [Fix] <js> Possible crash when playing manipulated IT / MPTM files with a T00 command.

Other formats
- [Imp] <js> MID: Fall back to just finding suitable soundfont instrument by MSB bank if MSB + LSB search was not successful. This is particularly relevant for SF2 soundfonts as they only support the bank MSB (http://bugs.openmpt.org/view.php?id=1628).
- [Fix] <js> MTM: In MultiTracker, setting speed and tempo are mutually exclusive commands. Still, some MultiTracker modules were made to be played with external players such as DMP, so they actually rely on "standard" speed / tempo behaviour. Decide which behaviour to use by checking of speed and tempo commands are found on the same row (tx AliceLR).
- [Fix] <js> MTM: Ignore sample loops if the loop end is <= 2.

Bundled plugins
- [Fix] <js> Echo DMO: Migrate left and right delay values in modules made with OpenMPT versions between 1.27.01.00 and 1.30.05.00 to the correct interpretation (http://bugs.openmpt.org/view.php?id=1631).

Misc
- [Fix] <js> MIDI Export: Fixed some issues with stuck notes and inconsistent state updates between channels.

Third-Party Libraries
- [Imp] Update flac (v1.4.1)


v1.30.06.00 (21 August 2022, revision 17755)
--------------------------------------------
Tree view
- [Fix] <js> Under some circumstances (e.g. after removing all unused patterns in Song Cleanup and then removing all patterns in a second Song Cleanup), the complete upper tree view could be emptied, eventually leading to a crash (tx eightbitbubsy).
- [Fix] <js> Show BRR files in sample browser (http://bugs.openmpt.org/view.php?id=1617).

Pattern tab
- [Imp] <js> In multi-channel record mode, PC events (both when recorded from plugin or via MIDI mapping) are now distributed to all channels of the current record group (http://bugs.openmpt.org/view.php?id=1622).

Sample tab
- [Fix] <js> Calculate correct selection point after scrolling with an 1:x zoom factor (http://bugs.openmpt.org/view.php?id=1611).
- [Fix] <js> When the crossfade dialog was allowed to be opened because normal loop points were set despite the loop itself not being enabled, it still tried to use the sustain loop points instead, even if they resulted in an empty loop.

VST / DMO Plugins
- [Fix] <js> Don't send All Controllers Off to T-Force Trance Gate 2 plugin, as it also resets some user-configured parameters such as resonance (http://bugs.openmpt.org/view.php?id=1610).

Other formats
- [Fix] <js> DBM: Sample middle-C frequencies were slightly off. laffik_-_marynarze.dbm sounds much more bearable now.
- [Fix] <js> DBM: Fixed pattern break parameter interpretation.

Bundled plugins
- [Fix] <js> Echo DMO: Setting the delay parameter to 0 yielded a 2-second echo delay instead of 1ms.
- [Fix] <js> Digi Booster Echo: Setting the delay parameter to 0 yielded a 510ms echo delay instead of approximately 334ms.

Third-Party Libraries
- [Imp] Update mpg123 (v1.30.2), nlohmann json (v3.11.2) and UnRAR (v6.1.7)


v1.30.05.00 (12 June 2022, revision 17503)
------------------------------------------
Tree view
- [New] <js> Can now (un-)bypass all plugins at once through the tree view, or alternatively just all effect plugins (http://bugs.openmpt.org/view.php?id=1410).

Pattern tab
- [Imp] <js> Allow "Jump to previous / next entry in column" shortcuts to be used together with the selection key. Search is only performed in the current pattern in this case (http://bugs.openmpt.org/view.php?id=1598).
- [Mod] <js> There are now default key bindings for "Jump to previous / next entry in column" (Ctrl + Alt + Up / Down).
- [Fix] <js> When stalling the pattern auto-follow (e.g. while drawing a selection) and transitioning to the next order containing the same pattern again, the order list and pattern editor weren't updated to reflect the new order position (tx NoobTracker).
- [Fix] <js> When the currently selected order item contained the same pattern as the first order item, restarting song playback gave the visual impression that the previously selected order item was still being played instead of the first order item.

Sample tab
- [Fix] <js> Consecutive transposition especially with middle-C frequencies below 8363 Hz could cause a wrong sample rate to be calculated in IT / MPTM.
- [Fix] <js> Displaying extremely long samples with a very low sample rate could cause OpenMPT to hang.

Instrument tab
- [New] <js> Added a new option to the sample map context menu, "Transpose Samples / Reset Map", which - if at all possible - resets the instrument's note mapping to the default and compensates for that by transposing samples instead (http://bugs.openmpt.org/view.php?id=1596).

Mod Conversion
- [Fix] <js> Remove portamento up / down and volume slide commands with parameter 00 when converting from MOD.

Playback
- [Fix] <js> Bidi-looped samples sometimes stopped playing at the end of the loop (http://bugs.openmpt.org/view.php?id=1597).

Installer/release package
- [Mod] <js> Re-mapped some assignments in DE_jojo.mkb to match newly added default shortcuts.


v1.30.04.00 (24 April 2022, revision 17270)
-------------------------------------------
Tree view
- [Imp] <js> Allow plugin instances to be removed through the context menu or pressing the Delete key (http://bugs.openmpt.org/view.php?id=1583).

General tab
- [Imp] <js> Allow plugin instances to be removed with a dedicated button (http://bugs.openmpt.org/view.php?id=1583).

Pattern tab
- [Imp] <js> Parameter Editor: Remember last window position in addition to size (http://bugs.openmpt.org/view.php?id=1579).
- [Fix] <js> Pitch / Pan Separation and Random Variation instrument properties were not resetting properly when seeking, potentially causing instruments to be played e.g. at a vastly different pan position compared to playing the module continuously.

Sample tab
- [Imp] <js> When in instrument mode, slicing at cue points now assigns the sample name to newly added instruments.
- [Mod] <js> Allow broken SBI files created with JuceOPLVSTi to be loaded.
- [Mod] <js> The sample grid is no longer applied to sample drawing.
- [Fix] <js> Drawing sample data with Shift pressed could cause a crash in OpenMPT 1.30.03.00 (http://bugs.openmpt.org/view.php?id=1592).
- [Fix] <js> Dragging improvements from OpenMPT 1.30.03.00 actually made things worse when zooming into a sample (http://bugs.openmpt.org/view.php?id=1581).

Other formats
- [Fix] <js> MED: Stereo samples were not imported correctly.

Misc
- [Fix] <js> Fixed a crash when trying to play song from current pattern if the pattern is not part of the current order list.

Third-Party Libraries
- [Imp] Update zlib (v1.2.12)


v1.30.03.00 (13 March 2022, revision 17105)
-------------------------------------------
Tree view
- [Fix] <js> Avoid playing a sound when double-clicking the folder of a soundfont drum instrument (http://bugs.openmpt.org/view.php?id=1516).

General tab
- [Imp] <js> Plugin dry / wet ratio display is now updated immediately when modified through macros or plugin volume handling (http://bugs.openmpt.org/view.php?id=1463).
- [Fix] <js> The tempo slider position was not set correctly in the MPTM format (tx coda).

Pattern tab
- [Imp] <js> The base octave setting now respects the current instrument's group size where possible (http://bugs.openmpt.org/view.php?id=1568).
- [Imp] <js> Goto Dialog: Limit channel and row spinners to current pattern and module limits (http://bugs.openmpt.org/view.php?id=1575).
- [Mod] <js> Data Entry shortcuts and Ctrl + Scroll Wheel now only affect "special" notes if no regular notes are selected (http://bugs.openmpt.org/view.php?id=1573).
- [Fix] <js> Go To Dialog: Fixed rare crash when module is playing while the jump is being applied (http://bugs.openmpt.org/view.php?id=1578).
- [Fix] <js> Correctly apply shared effect memory when seeking in S3M files.
- [Fix] <js> Apply Command S (S3M / IT / MPTM) effect memory when seeking.

Sample tab
- [Imp] <js> Improve behaviour when dragging a timeline item in the sample editor and the initial grab point wasn't exactly the horizontal position of the item.

Mod Conversion
- [Fix] <js> MOD / XM command EBF conversion was broken in OpenMPT 1.30.02.00.

VST / DMO Plugins
- [Mod] <js> Apply (hidden) auto-suspend setting when new adding plugins to a module, not when creating a plugin instance (which also happens when loading an existing module).
- [Fix] <js> With malformed modules, the LFO plugin could output invalid parameter changes to other plugins, causing a crash depending on how the target plugin handles such invalid parameters.

Playback
- [Fix] <js> Fixed potential crash when using the Amiga BLEP resampler and playing extremely high notes.

Other formats
- [Fix] <js> MO3: Pattern indices 254 / 255 are no longer treated as +++ / --- when the original file was a MOD / XM.

Misc
- [Imp] <js> Apply default channel colors when changing the number of channels via Song Properties.
- [Mod] <js> The active instrument is now remembered more consistently when switching between tabs. This allows to e.g. change to a specific instrument in the pattern editor, then go to the instrument editor and see the same instrument there (as before) and finally go to the sample editor and also see the correct sample there.
- [Mod] <js> MIDI Export: Default to mapped drum export.

Third-Party Libraries
- [Imp] Update flac (v1.3.4), r8brain (v5.6) and UnRAR (v6.1.6)


v1.30.02.00 (30 January 2022, revision 16761)
---------------------------------------------
Tree view
- [Fix] <js> Display of large directories could be rather slow due to trying to resolve links for pretty much any file.
- [Fix] <js> When browsing the contents of a module, the "back" mouse button now behaves the same as the backspace key (it goes back to the directory containing the module).

General tab
- [Imp] <js> Added tooltips to disabled controls explaining why they are disabled.

Pattern tab
- [New] <js> New option "Play whole row when navigating" can be found in the general settings to play the current row when navigating vertically.
- [New] <js> New keyboard shortcut "Toggle row playback when navigating" to toggle aforementioned option without having to visit general settings.
- [Imp] <js> Seeking in the module now updates filter state, plugin dry / wet ratio and plugin parameter changes from MIDI macros (http://bugs.openmpt.org/view.php?id=1497).
- [Imp] <js> Better display of finetune command semantics when there's an instrument number next to the command (http://bugs.openmpt.org/view.php?id=1536).
- [Fix] <js> Note Properties: Switching to / from an extended command broke effect parameter display (http://bugs.openmpt.org/view.php?id=1535).

Sample tab
- [Imp] <js> Added timeline context menu entry to quickly add a cue point if there are any unused cue points (http://forum.openmpt.org/index.php?topic=6767.0).
- [Imp] <js> Added .sam to recognized raw sample extensions (http://bugs.openmpt.org/view.php?id=1546).
- [Imp] <js> When an exising sample already uses the .s3i extension, offer it as the default format to save the sample (http://bugs.openmpt.org/view.php?id=1546).
- [Mod] <js> Allow sustain loops to be edited even if the current format doesn't support them, in case they were imported from another format (http://bugs.openmpt.org/view.php?id=1544).
- [Mod] <js> Newly created samples no longer set the default cue points to multiples of 2048 samples (http://bugs.openmpt.org/view.php?id=1540).
- [Fix] <js> Fixed a crash when hovering sample display of a sample slot that failed to load an external sample.
- [Fix] <js> The sample value shown as percentage in the status bar was displayed as a value between 0 and 1 instead of 0 and 100 as intended.

Mod Conversion
- [Fix] <js> MOD / XM command EBF is now converted to MPTM / IT / S3M command DFE instead of DFF, as the latter slides up, not down.

Playback
- [Mod] <js> The letter "z" is now evaluated in fixed MIDI macros (Z80...ZFF) the same way as in Impulse Tracker.

MPTM
- [Fix] <js> Avoid using NaN or infinite values for tuning when reading corrupted custom tunings.

S3M
- [Fix] <js> Introducing the "Send OPL key-off when triggering notes" compatibility setting broke retrigger for OPL notes again (they retriggered rather than not retriggering).
- [Fix] <js> Retriggering a note no longer resets its pitch after a portamento, just like in IT.
- [Fix] <js> Partially implement retrigger behaviour for stopped notes in SoundBlaster mode: Like in IT, it is not possible to retrigger a sample that has already stopped playing.

MOD
- [Imp] <js> Validate the contents of "hidden" patterns beyond the end of the order list when the file size matches the expected size when only taken "official" patterns into account. This fixes Shofixti Ditty.mod from Star Control 2 while keeping other (partly broken) modules working.
- [Fix] <js> Loosened VBlank timing heuristics so that "frame of mind" by Dascon plays correctly.

Other formats
- [Fix] <js> DIGI: Improve compatibility with E3x reverse sample command.
- [Fix] <js> DSym: Tempos < 32 were treated as tempo slides (http://bugs.openmpt.org/view.php?id=1545).
- [Fix] <js> MED: Command 20 (reverse sample) should only be applied when it's next to a note.
- [Fix] <js> SymMOD: Key-off command was not implemented properly.
- [Fix] <js> Fixed a possible hang when closing a module containing 65536 or more patterns.

Module cleanup
- [Fix] <js> The automatic sample trimmer sometimes calculated incorrect sizes for samples played in reverse and bidi-looped samples (http://bugs.openmpt.org/view.php?id=1547).

Misc
- [Imp] <js> Improved startup time for OpenMPT configurations with many / large soundfonts.
- [Imp] <js> SF2: Support tuning on the preset level.
- [Imp] <js> Added S3I to default format choice in sample editor settings.
- [Imp] <js> The default artist name can now be set in the Welcome dialog.
- [Mod] <js> When opening files, they are now first tried to be loaded as modules, and only when that fails they are tried again as an archive. This fixes loading songs using plugins that store their plugin data chunk as a ZIP file (e.g. RetroPlug, http://bugs.openmpt.org/view.php?id=1548).
- [Mod] <js> The VSTNeverUnloadAnyPlugin hidden setting introduced in OpenMPT 1.30.01.00 was moved from the INI category "BrokenPluginWorkarounds" to category "Broken Plugin Workarounds" (same as VSTMaskAllCrashes setting).
- [Fix] <js> When trying to open a malformed file in a new OpenMPT instance and sending this file to an already running OpenMPT instance, the newly launched instance tried to open the file a second time after the other instance gave up, so two error messages were shown.
- [Fix] <js> When passing files to an already running OpenMPT instance, this instance is now moved to the foreground before sending files over, not after. This makes it possible to instantly see error messages in that other instance before it has given control back to the newly launched instance.
- [Fix] <js> The search filter in the compatibility settings dialog was case sensitive.
- [Fix] <js> Fixed a crash when there's an invalid character in a MIDI macro string that wasn't entered by the user in the MIDI macro dialog but was already present in the file.

Bundled plugins
- [Fix] <js> I3DL2Reverb: Fix possible output of NaN values with some extremely impractical set of reverb parameters.

Third-Party Libraries
- [Imp] Update ancient (v2.0.0), nlohmann json (v3.10.5) and UnRAR (v6.1.4)


v1.30.01.00 (23 December 2021, revision 16290)
----------------------------------------------
Tree view
- [Imp] <js> It is now possible to also load instruments from the MIDI library or soundfonts into the sample / instrument tab using Ctrl + (Shift +) Enter (http://bugs.openmpt.org/view.php?id=1491).
- [Imp] <js> It is now possible to extract a complete soundfont drum kit into a single instrument slot by dragging its folder rather than an individual note (tx Keffie).

General tab
- [Imp] <js> Changes to channel properties can now be undone and redone.
- [Imp] <js> Tooltips are shown for channel volume and panning sliders as well as plugin gain.
- [Imp] <js> User-chosen plugin names are now shown in addition to library names in plugin dropdown list.

Pattern tab
- [New] <js> Channels can now be color-coded. In addition to the pattern editor, channel color is also shown and editable in the General Tab, Quick Channel Settings and Channel Manager. Default colors can be changed in Display settings (http://bugs.openmpt.org/view.php?id=1316).
- [New] <js> Pattern Goto Dialog: Can now directly jump to a timestamp.
- [Imp] <js> Quick Channel Settings: Tooltips are shown for volume and panning sliders.
- [Mod] <js> 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.
- [Mod] <js> Typing in a pattern number into the order list now instantly updates the displayed pattern.
- [Mod] <js> "Dummy" commands are now shown as semi-transparent text.
- [Fix] <js> Fix issues with Data Entry shortcuts on commands that take two nibble parameters (e.g. volume slides).

Sample tab
- [New] <js> Added a timeline 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 (http://bugs.openmpt.org/view.php?id=659).
- [New] <js> Added option to convert ping-pong loops to unidirectional loops (http://bugs.openmpt.org/view.php?id=1376).
- [New] <js> Resampling can now optionally adjust offset commands in patterns. This does not work properly with offsets affected by the SAx "high offset" command currently.
- [New] <js> Raw sample import can now try to automatically determine the correct raw format. More raw format options are now available, too.
- [New] <js> IFF MAUD samples can now be imported.
- [New] <js> The sample value under mouse cursor is now shown in the status bar.
- [Imp] <js> Cue points can now be deleted by right-clicking their marker in the timeline.
- [Imp] <js> Speed up redrawing of sample waveform when modifying the sample selection or loop points.
- [Imp] <js> 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 (http://bugs.openmpt.org/view.php?id=1445).
- [Imp] <js> Time stretch parameter setup is now more usable.
- [Imp] <js> Dropping an item from the tree view with Shift pressed now drops it into a new sample slot.
- [Imp] <js> Added a shortcut for raw sample import.
- [Mod] <js> Opus / Vorbis: Instead of rejecting large samples, they are now trimmed to the maximum supported length and a warning is shown.

Instrument tab
- [Imp] <js> Dropping an item from the tree view with Shift pressed now drops it into a new instrument slot.
- [Imp] <js> Zoom level is now remembered when switching between tabs (http://bugs.openmpt.org/view.php?id=1506).

Mod Conversion
- [Imp] <js> Ping-pong loops are now automatically converted to unidirectional loops when converting to MOD / S3M.
- [Mod] <js> Converting to MPTM no longer asks if the order list should be split into multiple sequences if it contains separator items. This action can still be carried out manually from the order list context menu instead.

VST / DMO Plugins
- [New] <jh> 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 (http://bugs.openmpt.org/view.php?id=1291, http://bugs.openmpt.org/view.php?id=1402).
- [Imp] <js> Plugin Editor: Added a menu item to rename the plugin instance.
- [Imp] <js> Plugin Editor: Bypass status is now shown in title bar.
- [Mod] <jh> A new hidden settings "Broken Plugins Workarounds.VSTMaskAllCrashes" was added that no longer catches crashes in VST plugins but rather passes them on directly to the crash handler (http://bugs.openmpt.org/view.php?id=1401).
- [Fix] <js> When implementing the Flanger DMO effect, some details in the original effect were overlooked. For modules made with OpenMPT 1.27 - 1.29, a legacy plugin using the old implementation (close to the Chorus DMO) is provided (this does not show up in the Plugin Manager) and used automatically in those modules (http://bugs.openmpt.org/view.php?id=1474).
- [Fix] <js> 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.

Playback
- [Imp] <js> Improved precision of ping-pong loop length particularly for very small samples.
- [Fix] <js> By default, an OPL note-off message is now sent on every note change. Most of the time, there is no audible difference, but this fixes missing notes in ADLIBSP.S3M. The old behaviour is retained through a compatibility flag (http://bugs.openmpt.org/view.php?id=1446).
- [Fix] <js> Samples played at the wrong volume when rendering or playing modules in mono (http://forum.openmpt.org/index.php?topic=6711.0).
- [Fix] <js> Even after OpenMPT 1.29.15.00 the filter reset logic was still not 100% identical to Impulse Tracker: A note triggered on tick 0 of a row with a Pattern Delay effect still caused the filter to be reset on repetitions of that row even though the note wasn't retriggered.

MPTM
- [New] <js> 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.
- [New] <js> Volume column oyy + effect column Oxx (yy > 0) now work together as well: The effect column offset is added to the sample cue.
- [New] <js> Two new commands, Finetune (+) and Finetune (Smooth) (*), 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 (http://forum.openmpt.org/index.php?topic=6379.0).

MPTM::Custom Tuning
- [New] <js> Added character '*' to drawable letters for built-in fonts.
- [Imp] <js> S2x (Set Finetune) now adjusts the finetune of the note by -8...+7 tuning steps.

IT
- [Imp] <js> Added read-only support for BeRoTracker commands 1 and 2 (equivalent to XM commands K and L, http://bugs.openmpt.org/view.php?id=1528).
- [Fix] <js> Internally, Impulse Tracker always calculates sample playback speed in Hertz instead of periods, even with Linear Slides disabled. Using periods instead can cause small yet audible discrepancies. OpenMPT now also supports frequency instead of periods for Amiga Slides. Fixes "Watching Her Smile" (http://bugs.openmpt.org/view.php?id=1344).
- [Fix] <js> Pitch/Pan Separation was affected by note-off commands, and wasn't reset by panning commands like in Impulse Tracker.

XM
- [Imp] <js> BeRoTracker saves smooth MIDI macros in a different way from OpenMPT. This command is now imported correctly (http://bugs.openmpt.org/view.php?id=1531).
- [Fix] <js> Emulate FT2 Tone Portamento quirk that inverts portamento direction after the target was reached (if target note was higher than previous note).

S3M
- [Imp] <js> S3M files saved with Impulse Tracker and latest Schism Tracker now also compute sample playback speed in Hertz.
- [Imp] <js> Depending on whether an S3M file was last saved in Scream Tracker with the Sound Blaster or Gravis Ultrasound drivers loaded, different compatibility flags are now applied. For files saved with the GUS, the sample volume factor is now also ignored (fixes volume levels in S3Ms made on the GUS, in particular if they use both samples and OPL instruments).
- [Imp] <js> Enforce the lower frequency bound (http://bugs.openmpt.org/view.php?id=961).

MOD
- [New] <js> OpenMPT only supported "TDZ4" to "TDZ9" magic bytes for TakeTracker modules, which should not even exist. Added support for 1 to 3 channel TakeTracker modules used "TDZ1" to "TDZ3" magic bytes.
- [Imp] <js> Allow EFx (Invert Loop) effect to work with 16-bit and stereo samples, which would later be converted to 8-bit mono samples anyway.
- [Fix] <js> Loosened VBlank timing heuristics so that the original copy of Guitar Slinger from Dizzy Tunes II plays correctly.

Other formats
- [New] <da & js> Can now read Symphonie (SymMOD) modules (http://bugs.openmpt.org/view.php?id=672).
- [New] <js> Can now read Digital Symphony (DSym) modules.
- [New] <js> Can now read MUS modules from Psycho Pinball and Micro Machines 2.
- [New] <js> Can now read FMT modules made with Davey W Taylor's FM Tracker.
- [New] <js> Can now read STX modules, a transitional format between STM and S3M (http://bugs.openmpt.org/view.php?id=1521).
- [New] <jh> Modules packed with various legacy compression formats (in particular many more XPK variants) can now be read. All formats supported by the ancient library (https://github.com/temisu/ancient) are supported.
- [Imp] <js> DMF / IMF: Improved accuracy of finetune commands.
- [Imp] <js> MDL: Implemented finetune command.
- [Imp] <js> OKT: Various accuracy improvements such as: Sharing volume between mixed channels, volume commands on mixed channels are permanent (not reset with new notes), mixed channels do not support default sample volume, 7-bit samples are actually supposed to be played as-is (not amplified to full 8-bit range), reject speed command parameters >= 20.
- [Mod] <js> Warn during saving of an imported file when any playback compatibility settings are enabled that are not supported by the current editing format. These settings are disabled automatically.
- [Reg] <jh> Modules compressed with MMCMP, PP20 or XPK can no longer be read from inside another archive.

Stream Export
- [New] <jh> Can now export AU files with µ-law and A-law encoding.
- [Mod] <jh> Default dither is now 1-bit dither with 1st order noise shaping instead of 0.5-bit dither. Although this adds a higher noise floor in the upper part of the spectrum than the old default, the harmonic distortion is reduced, and the signal-to-noise ratio in the lower part of the spectrum is improved. Especially with high samplerates (> 48kHz), this is a clear improvement over the old default, because the added noise floor will be mostly above the audible spectrum.

Audio I/O
- [Mod] <jh> Default dither is now 1-bit dither with 1st order noise shaping instead of 0.5-bit dither.
- [Reg] <jh> Support for DirectSound output was removed.

Misc
- [New] <jh & js> OpenMPT updates can now be downloaded and installed automatically. This is currently not supported on Wine (http://bugs.openmpt.org/view.php?id=1011).
- [New] <jh> OpenMPT is now also available for Windows on ARM.
- [New] <js> Can now export OPL register dump as VGZ/VGM/DRO files (http://bugs.openmpt.org/view.php?id=1488).
- [New] <js> Can now open SF2 soundfonts with compressed samples (commonly referred to as SF3, see https://github.com/FluidSynth/fluidsynth/wiki/SoundFont3Format).
- [New] <js> Added new hidden setting "Misc.UseSingleInstance" (default false) which allows to force OpenMPT to only ever open a single instance (http://bugs.openmpt.org/view.php?id=1429).
- [New] <js> Added a button to Mixer settings to easily revert ramping settings to defaults (tx eightbitbubsy).
- [New] <js> Added a new shortcut to quickly toggle between all lower and upper views (http://bugs.openmpt.org/view.php?id=1367).
- [Imp] <js> Saving samples / instruments and Stream Export now reports if there was a write failure, e.g. due to full disk (http://bugs.openmpt.org/view.php?id=1161).
- [Imp] <js> Keyboard shortcuts can now also be bound to MIDI notes in addition to MIDI CCs (http://bugs.openmpt.org/view.php?id=1396).
- [Imp] <js> Infinite pattern loops are now detected in song length calculation. This also improves seeking accuracy in modules with pattern loops (http://bugs.openmpt.org/view.php?id=1146).
- [Imp] <jh> Register OpenMPT with Restart Manager. This allows the installer to automatically close and restart OpenMPT.
- [Imp] <jh> OpenMPT now reports if loading a module fails due to being out of memory.
- [Mod] <jh> Hidden settings "VST Plugins.FullyUnloadPlugins" is now named "BrokenPluginsWorkarounds.VSTNeverUnloadAnyPlugin" and its meaning inverted. The old setting is migrated automatically.
- [Fix] <js> Fixed possible crash when playing notes via MIDI with lots of active NNA channels (http://bugs.openmpt.org/view.php?id=1514).
- [Reg] <jh> Remove hidden setting "Misc.ShowSettingsOnNewVersion".

Bundled plugins
- [Fix] <js> I3DL2Reverb: Fix possible output of NaN values with some extremely impractical sets of reverb parameters.

Third-Party Libraries
- [Imp] Update PortAudio (v19.7.0), r8brain (v5.3), SoundTouch (v2.3.1) and UnRAR (v6.1.2)

Installer/release package
- [New] <js> Added a new German keymap (Impulse Tracker / OpenMPT crossover) by melcom. Updated coda's key map.
- [New] <jh> OpenMPT is now also available for ARM and ARM64 architectures.


v1.29.15.00 (5 December 2021, revision 16116)
---------------------------------------------
Tree view
- [Fix] <js> Samples extracted from MTM files through the tree view were corrupted (http://bugs.openmpt.org/view.php?id=1522).
- [Fix] <js> Clicking on folders under soundfont items caused some instrument of that soundfont to be played since OpenMPT 1.29.14.00 (http://bugs.openmpt.org/view.php?id=1516).

Pattern tab
- [Mod] <js> Effect visualizer: Enable PC event mode if the only command in the whole selection is a PC event, even if it is not on the first row (http://forum.openmpt.org/index.php?topic=6738.0).

Sample tab
- [Fix] <js> Switching to an OPL instrument after a zoomed-in sample was shown and not scrolled entirely to the left didn't display the OPL editor correctly.
- [Fix] <js> Show correct dB values for OPL instruments in Default Volume and Global Volume tooltips.

Playback
- [Fix] <js> The logic when to turn off the resonant filter was broken in some edge cases since OpenMPT 1.29.02.00 (http://bugs.openmpt.org/view.php?id=1520).
- [Imp] <js> OPL: Improved channel allocation strategy when there are lots of faded-out notes.

XM
- [Imp] <js> Disable FT2 arpeggio quirks for XMs made with Skale Tracker (fixes KAPTENFL.XM).

S3M
- [Mod] <js> Ignore O00 commands in files created with Scream Tracker 3.00 and 3.01, as this command only gained effect memory in version 3.03.

MOD
- [Fix] <js> Digital Tracker MODs have four unknown bytes right after the magic bytes which seem to be ignored even by Digital Tracker itself. Just skip over them (tx AliceLR).

Other formats
- [Imp] <js> IMF: Implemented XE1-XE3 commands, which disable individual envelopes. Command Nxy (cutoff slide + resonance) is now also partially supported (only resonance for now).
- [Fix] <js> IMF: Filter envelopes were upside down.
- [Fix] <js> MT2: External samples with relative paths pointing to the parent directory (like some MadTracker 2 example songs) didn't load correctly.
- [Fix] <js> STM: Use S3M-like sample swap behaviour.

Module cleanup
- [Fix] <js> Removing unused samples may have removed samples only played by instrument-less notes (tx melcom).

Misc
- [Fix] <js> SF2: Fix stereo samples once again.
- [Fix] <jh> Wine Integration: Some files were missing.

Installer/release package
- [New] <js> All executables and libraries are now signed with a code signing certificate.
- [Fix] <js> Remove legacy key commands from some keymaps, as they showed a warning when loading the keymap (tx melcom).


v1.29.14.00 (14 November 2021, revision 15948)
----------------------------------------------
Tree view
- [Fix] <js> Soundfonts used in the MIDI library sometimes caused unexpected instruments to be loaded due to the ordering of instruments in the soundfont file (e.g. GeneralUser GS). Now OpenMPT always loads the instrument with the lowest bank number (http://forum.openmpt.org/index.php?topic=6727.0).
- [Fix] <js> Soundfont drum instruments with more than 128 regions didn't work correctly (http://forum.openmpt.org/index.php?topic=6727.0).

Pattern tab
- [New] <js> Parameter Editor: Add a new fill option to only change parameters next to notes.
- [Mod] <js> Parameter Editor: Remember last fill action when reopening the editor.

Sample tab
- [Imp] <js> Loading drum samples from soundfonts now translates them to be usable at middle-C rather than at their original mapped key.

Playback
- [Fix] <js> MIDI Macros: When mixing internal and external MIDI messages in the same macro and using a smooth MIDI macro command, the external macros were no longer interpolated correctly.

Other formats
- [Fix] <js> IMF: Change envelope interpretation to be more like in XM instead of IT (sustain point has no precedence over normal loop, and loops are shortened by one tick).
- [Fix] <js> MED: Some samples had a ping-pong loop when there should be no loop at all.
- [Fix] <js> MT2: Ignore incorrect drums chunk size in early MT2 files (fixes e.g. "A little Rock" by Csumi).
- [Fix] <js> MT2: Work around initial master volume of 0 used in some files that apply a fade-in a the song start using track automation that would stay silent forever otherwise (track automation is currently not supported).
- [Fix] <js> Gzip archives: Correctly decode files larger than 4 GB (although it's unlikely that there's anything in there that OpenMPT could read), and reduce memory consumption during decompression.

Misc
- [Fix] SF2: Fix various issues with complex soundfonts such as GeneralUser GS, e.g. missing support for key ranges in presets.

Third-Party Libraries
- [Imp] Update mpg123 (v1.29.2)


v1.29.13.00 (3 October 2021, revision 15754)
--------------------------------------------
Tree view
- [Imp] <js> When browsing song contents, Backspace now goes back to the folder containing the song when in the lower half of the tree view. There is now also a context menu option to close the song (http://bugs.openmpt.org/view.php?id=1498).
- [Fix] <js> Module files are now also shown as directories in lower half of tree view when "Show All Files" is checked.

Pattern tab
- [Imp] <js> Grey out plugin names in channel headers if plugins are disabled on this channel.
- [Imp] <js> Pressing the Application key on the order list now opens the context menu (http://bugs.openmpt.org/view.php?id=1501).
- [Imp] <js> Added shortcuts for opening the channel context menu and channel plugin context menu (http://bugs.openmpt.org/view.php?id=1501).
- [Fix] <js> Seeking with sample sync sometimes didn't compute the correct sample position with pingpong-looped samples.
- [Fix] <js> In the instrument and effect columns, commands assigned to special keys (Num / Caps / Scroll Lock) were executed twice, so e.g. using scroll lock to toggle song follow mode didn't work in these columns.

Sample tab
- [Fix] <js> Switching between samples using keyboard shortcuts now updates the last used sample to use in the pattern and instrument editor just like when using the spin buttons or manually entering a sample number.

Instrument tab
- [Imp] <js> Pressing the Application key on the sample map now opens the context menu (http://bugs.openmpt.org/view.php?id=1501).
- [Fix] <js> Possible crash when releasing a note key that translates to a note above B-9.

Comments tab
- [Imp] <js> Added shortcut to start renaming samples / instruments (default: Ctrl+Enter).
- [Fix] <js> Since OpenMPT 1.29.01.00, it was pretty much impossible to rename instruments due to auditioning (tx Gargaj).

IT
- [Fix] <js> Tremor: Command I11 erroneously behaved like I00 (use previous parameter), unless IT Old Effects were enabled.

Other formats
- [Fix] <js> PTM: Panning was translated wrong in some edge cases.
- [Fix] <js> IMF / PTM: Note Slide commands were sometimes slightly off.
- [Fix] <js> DBM: Echo enable effect parameter range checks were incorrect.
- [Fix] <js> Possible crash when loading malformed MDL files.

Misc
- [Imp] <js> SFZ: Added support for reading various other *_label opcodes. They are not used for import but if their value contains spaces, it should no longer confuse the parser.
- [Fix] <js> When switching between tabs using keyboard shortcuts, and when switching between samples in the sample editor using keyboard shortcuts, the currently chosen instrument / sample is now updated correctly between pattern / samples / instrument editors (http://forum.openmpt.org/index.php?topic=6675.0).
- [Fix] <js> SF2: Region panning was not calculated correctly.
- [Fix] <js> SF2: Stereo sample merging didn't work for many soundfonts because panning values were stored for each envelope (of which there was one per instrument) rather than for each region.
- [Fix] <js> DLS: The first region of every instrument was not imported in OpenMPT 1.29.12.00 (http://bugs.openmpt.org/view.php?id=1504).
- [Fix] <js> When enabling the Display.HighResUI option, some file selector dialogs could hang (presumably due to a Windows bug) when hovering the file type dropdown on a mixed-DPI monitor setup (http://bugs.openmpt.org/view.php?id=1490).
- [Fix] <js> Key Config Dialog: Avoid bogus "Invalid Slot" message box when receiving MIDI CCs while the "Find Hotkey" input field is focussed.

Third-Party Libraries
- [Imp] Update nlohmann json (v3.10.2), mpg123 (v1.29.0)


v1.29.12.00 (22 August 2021, revision 15545)
--------------------------------------------
Tree view
- [Fix] <js> Drum key names were not displayed for SF2 soundfonts.

Pattern tab
- [Fix] <js> Find & Replace: Fixed various issues with replacing extended commands Sxy / Exy (http://bugs.openmpt.org/view.php?id=1486).

Playback
- [Fix] <js> Possible crash with malformed modules containing an invalid plugin chain or instruments pointing to invalid plugins.
- [Fix] <js> Possible crash after swapping to a sample with loop points set but not loop enabled.

MPTM
- [Fix] <js> Fixed excessive memory usage with files claiming to have an extremely high rows per beat count while also using tempo swing. Maximum rows per beat are now limited to 65536.

Other formats
- [Imp] <js> MIDI Import: Support loopEnd marker and EMIDI loop start / end CCs.
- [Fix] <js> STP: Avoid creating thousands of patterns when loading malformed files even though no more pattern data can be read.
- [Fix] <js> MMCMP: Fixed various possible crashes with malformed files.

Misc
- [Mod] <js> Song Properties: Reject 0 rows per beat in modern tempo mode.
- [Imp] <js> MIDI Export: Write loopStart and loopEnd cue markers (http://forum.openmpt.org/index.php?topic=6660.0).
- [Imp] <js> DLS / SF2: Support more than 128 regions per instrument (some complex drum programs can exceed the previous limit).
- [Fix] <js> SF2: Extracting drums from drum instruments with a global region didn't work since OpenMPT 1.29.01.00 (http://bugs.openmpt.org/view.php?id=1457).
- [Fix] <js> Avoid crash when attempting to open the Tempo Swing Settings dialog with rows per beat being set to 0.

Third-Party Libraries
- [Imp] Update mpg123 (v1.28.2), UnRAR (v6.0.7)


v1.29.11.00 (4 July 2021, revision 15407)
-----------------------------------------
General tab
- [Imp] <js> When replacing a plugin, keep the plugin chain intact by not clearing its output plugin.

Pattern tab
- [Fix] <js> In OpenMPT 1.29.10.00, it was no longer possible to resume samples on muted channels when seeking with sample sync enabled.
- [Fix] <js> Possible crash when trying to reset a playing channel.
- [Fix] <js> Resetting a channel could mark the module as modified.
- [Fix] <js> Previewing notes could cause clicks if the NNA was set to Note Cut.

Sample tab
- [Imp] <js> For OPL instruments, the actual middle-C note frequency is now shown in a tooltip when hovering the sample rate field.
- [Imp] <js> AIFF: Support reading another variant of 64-bit floating-point and 8-bit unsigned PCM compression types.
- [Mod] <js> AIFF: Ignore invalid sample offset instead of completely rejecting the file. Makes some old (technically malformed) AIFF files load that were previously rejected.
- [Fix] <js> Avoid Windows notification sounds when holding note keys when a widget is focussed in the OPL editor.

Instrument tab
- [Imp] <js> Add more mnemonic shortcuts for various widgets.
- [Fix] <js> Previewing notes could cause clicks if the NNA was set to Note Cut.

S3M
- [Imp] <js> Honor the Stereo flag not being set. This improves the sound of some tunes like Turbulence by Purple Motion.
- [Imp] <js> Detect MPT 1.0 alpha versions which didn't set the Stereo flag. In this case, the unset Stereo flag is also ignored because MPT 1.0 alpha used the default S3M channel panning anyway.
- [Fix] <js> Only for OPL instruments the high sample rate bits should be ignored; for PCM instruments they are clamped to 65535 Hz.

MOD
- [Fix] <js> Do not apply ProTracker loop length quirk to MODs that could have been made with Scream Tracker (fixes Soul-O-Matic by Purple Motion, http://bugs.openmpt.org/view.php?id=1472).

Other formats
- [Imp] <js> AMF (DSMI): Format revisions 1 and 9, as well as early (technically malformed) revision 10 files, are now supported. Surround panning commands and instrument number without note are now converted correctly.
- [Fix] <js> AMF (DSMI): Patterns and samples were not read correctly in some files (e.g. AVOID.AMF).
- [Fix] <js> GDM: Correctly import extra-fine portamentos (http://bugs.openmpt.org/view.php?id=1469).

Misc
- [Imp] <jh> Added shim to support RtAudio v5.0.0 in addition to v5.1.0. This re-adds support for current Ubuntu LTS and Debian systems with Wine Integration.
- [Fix] <js> SF2: Only merge mono layers if they have opposite panning. Previously, e.g. two left-panned layers would have also been merged.

Third-Party Libraries
- [Imp] Update mpg123 (v1.28.0), ogg (v1.3.5), r8brain (v5.2)


v1.29.10.00 (16 May 2021, revision 15016)
-----------------------------------------
General tab
- [Fix] <js> The tempo slider handle was shown in the wrong position for tempos close to 1000 BPM.

Pattern tab
- [Imp] <js> Interpolating the volume column between a cell with a Set Volume command and a cell with no volume command but a note and instrument is now possible (it uses the default volume of that sample for interpolation).
- [Fix] <js> Duplicating / adding / removing a channel, undoing and then redoing it caused the contents of the last channel to be lost (http://bugs.openmpt.org/view.php?id=1442).
- [Fix] <js> "Maintain sample sync on mute" was only enforced after manually muting a channel, and e.g. by restarting playback broke it again (http://bugs.openmpt.org/view.php?id=1125).

Sample tab
- [Imp] <js> Can now resample all samples at once by holding shift when pressing the resample button (http://bugs.openmpt.org/view.php?id=1368).

Instrument tab
- [Fix] <js> Saving an XI instrument from an IT or MPTM module could cause wrong transposition for samples with a middle-C frequency below 8363 Hz (http://bugs.openmpt.org/view.php?id=1449).
- [Fix] <js> Saving an ITI instrument from an XM module converted auto-vibrato sweep incorrectly.

Playback
- [Fix] <jh> In quad surround mode, Bass Expansion incorrectly applied DC removal to the front channels twice instead of applying it once to front and back channels.

MPTM
- [Fix] <js> The "Do not reset OPL channel status at end of envelopes" compatibility flag was effectively force-enabled for all modules made with OpenMPT 1.29, while it should have been disabled.
- [Fix] <js> Files with OPL instruments were sometimes written in a way so that older OpenMPT and libopenmpt versions without OPL support could no longer read certain song properties and warn that the file was created with a more recent version of OpenMPT.
- [Fix] <js> The old OpenMPT 1.28 retrigger behaviour for OPL instruments differed depending on the chosen output sample rate. Retrigger now always retriggers notes as expected, which was already the case when the mix rate was chosen to be 48000 Hz. The corresponding compatibility setting was removed, as it is no longer required.

IT
- [Imp] <js> Full OpenMPT version information (e.g. 1.29.10.00 instead of 1.29) is now written to IT files also when using compatibility export.

S3M
- [Imp] <js> Emulate IT short sample retrigger quirk in S3M files saved with Impulse Tracker and Schism Tracker.
- [Imp] <js> Full OpenMPT version information (e.g. 1.29.10.00 instead of 1.29) is now written to S3M files.

MOD
- [Fix] <js> Fixed possible crash when sample-swapping to a previously-deleted sample (tx bryc).
- [Fix] <js> ProTracker 3.6 doesn't support sample swapping. It is now disabled when loading a ProTracker 3.6 IFF module.
- [Fix] <js> Some files with "hidden" garbage patterns (e.g. altoflyt.mod) were not played correctly since OpenMPT 1.29.05.00 (http://bugs.openmpt.org/view.php?id=1458).
- [Fix] <js> E9x retrigger now works the same way as in ProTracker 2.

Other formats
- [Mod] <js> 669: Reject files that contain any pattern tempo higher than 15.
- [Fix] <js> MDL: Improve auto-vibrato accuracy.
- [Fix] <js> In OpenMPT 1.29.09.00, the "Save As" dialog now may have shown up every time after opening a file in an import-only format. Some actions like running the Automatic Sample Trimmer may have also prevented the dialog from showing up.
- [Fix] <js> Reduce memory consumption of malformed XPK-compressed files.

Stream Export
- [Fix] <jh> Exported 8-bit FLAC output was distorted since OpenMPT 1.29.01.00.
- [Fix] <jh> Do not offer dithering for 64-bit floating-point export.

Audio I/O
- [Mod] <jh> MME / Wave Out output devices are no longer marked as deprecated for now.

Misc
- [New] <js> Added keyboard shortcuts for increasing and decreasing tempo and ticks per row of currently playing module (tx jseb).
- [Fix] <js> Launching OpenMPT could take longer than it should depending on the current working directory, e.g. when opening modules from the task bar's jump list (http://bugs.openmpt.org/view.php?id=1444).
- [Fix] <js> Opening the help didn't open the correct page if the upper half of the view was focussed.
- [Fix] <js> Stop all playing samples when toggling "Compute note frequency in Hertz" compatibility setting.

Third-Party Libraries
- [Imp] Update mpg123 (v1.27.2)


v1.29.09.00 (11 April 2021, revision 14577)
-------------------------------------------
Tree view
- [Fix] <js> Holding a key to preview a sample or instrument in module now works as expected (no more cycling through items / playing "Ding" sound).

Pattern tab
- [New] <js> Added a new keyboard shortcut "Insert Separator" (Ctrl + Insert by default) to the order list which does the same thing as the identically-named context menu entry (http://bugs.openmpt.org/view.php?id=1437).
- [Imp] <js> Support instrument control S7x command when seeking with sample sync.
- [Fix] <js> Possible crash when resuming playback with "Play song from pattern start" combined with "Maintain sample sync on seek" (tx melcom).
- [Fix] <js> Pasting into a non-existent pattern (which would create a new pattern) didn't update the list of existing patterns in the tree view.
- [Fix] <js> Plugin names in instrument list are now updated immediately when renaming a plugin.
- [Fix] <js> Some characters were surrounded by colored frames when using proportional fonts.
- [Fix] <js> Avoid status bar updates (pattern selection size) from playing song while another song is being edited.

Instrument tab
- [Imp] <js> SFZ: Support loopcrossfade as an alias for loop_crossfade.
- [Fix] <js> SFZ: label_keyN values with spaces no longer break the parsing of following opcodes on the same line.
- [Fix] <js> SFZ export: Avoid creating folder names with trailing spaces and dots, as they are difficult to delete or move on Windows.

IT
- [Fix] <js> Instrument / sample panning was reset on note-off / fade commands (http://bugs.openmpt.org/view.php?id=1432).

Other formats
- [Fix] <js> With some imported formats, the "Save As" dialog didn't show up when trying to save them, overwriting the original file instead.
- [Fix] <js> Possible crash when loading some malformed files.
- [Fix] <js> Fix excessive memory consumption with malformed files in various formats.

Misc
- [Mod] <js> Welcome Dialog: The initial key map suggestion is now used even when not clicking the OK button.
- [Fix] <js> Modifier key state (Ctrl, Alt, Shift, Win) could sometimes get stuck when switching to another application.

Bundled plugins
- [Fix] <js> LFO Plugin: Frequency was not immediately reset when restoring parameters from saved file (http://bugs.openmpt.org/view.php?id=1440).

Third-Party Libraries
- [Imp] Update mpg123 (v1.26.5)


v1.29.08.00 (14 March 2021, revision 14303)
-------------------------------------------
General tab
- [Fix] <js> "Output To" plugin list could contain garbage when a plugin name was edited in another view of the same module.

Pattern tab
- [New] <js> Added keyboard shortcuts for adding and removing channels (http://bugs.openmpt.org/view.php?id=1427).
- [Mod] <js> If the order list is already longer than the format-supported maximum (e.g. because of import from another format), don't shrink the order list anymore when trying to duplicate a pattern.

Sample tab
- [Imp] <js> Splitting a stereo sample into two mono samples wastes less memory.
- [Fix] <js> On some systems, the OPL patch editor caused keyboard shortcuts to stop working (http://bugs.openmpt.org/view.php?id=1382).

Comments tab
- [Fix] <js> When activating the tab, the keyboard focus is set to the text editor (http://bugs.openmpt.org/view.php?id=1365).

S3M
- [Fix] <js> Some samples or OPL patches were imported with a too high sample rate if module was saved with Scream Tracker 3 (http://bugs.openmpt.org/view.php?id=1412).

Other formats
- [Imp] <js> Support loading 64-bit PCM and floating-point WAV files as a module.
- [Fix] <js> Possible crash when loading floating-point WAV file that claimed to have a bit depth of 8 bits or lower as a module.
- [Fix] <js> AMS: Avoid allocating excessive amount of memory for compressed song message in malformed files.

Misc
- [Mod] <js> Only force to rescan MIDI devices after receiving a device change notification from the system. Might fix a crash with buggy MIDI drivers.
- [Fix] <js> Properly resize text labels on main toolbar according to actual font size used (http://forum.openmpt.org/index.php?topic=6569.0).
- [Fix] <js> Some keys were missing when resetting the default keymap (tx isdera).

Third-Party Libraries
- [Imp] Update libvorbis (v1.3.7), UnRAR (v6.0.4)


v1.29.07.00 (31 January 2021, revision 14108)
---------------------------------------------
General tab
- [Imp] <js> Using the spinner, tempo is now incremented and decremented in steps of 1 BPM in all formats. The old behaviour for MPTM - using a 0.1 BPM step size - is now applied when holding Shift (similar to 0.01 BPM steps when holding Ctrl).
- [Mod] <js> "Output To" plugin list now shows user-chosen name first, then library name.
- [Mod] <js> "Output To" plugin list was not updated when a plugin was renamed.
- [Fix] <js> Renaming a plugin could become really slow the more plugins were loaded.

Pattern tab
- [Imp] <js> Update OPL channel state (in particular currently used instrument) when seeking.
- [Fix] <js> Rare crash when trying to interpolate a column without a selection (tx coda).
- [Fix] <js> Selecting a whole row by clicking on its row number didn't copy any channels left of the current scroll position.
- [Fix] <js> MIDI recording erroneously allowed writing smooth MIDI commands with formats that don't support this command.
- [Fix] <js> The Pattern Goto Dialog was not initialized correctly, not using the current pattern and order list location as intended.

Sample tab
- [Imp] <js> Pitch Shift can now also be applied to sample selections.
- [Imp] <js> Autotune no longer marks the module as modified if the frequency didn't change.
- [Imp] <da> Stereo 8SVX files are now supported.
- [Fix] <js> Converting a stereo sample to mono by only taking the right channel caused the first sample from the left channel to remain in the sample, and thus offseting the whole sample by one.
- [Fix] <js> There was a memory leak when aborting a Pitch Shift operation.

VST / DMO Plugins
- [Mod] <js> Removing a plugin from a module now removes all output routings to that plugin slot. Previously, loading a new plugin into the same slot caused other plugins to (unexpectedly) route their output to it.
- [Fix] <js> Dropping a VST plugin file on the OpenMPT window didn't apply plugin bridge default settings like when adding it through the Plugin Manager dialog.

MPTM::Custom Tuning
- [Fix] <jh> Allow editing note name also if a note outside the primary group is selected (http://forum.openmpt.org/index.php?topic=6531.0).

MOD
- [Fix] MOD: The FT2 tremolo quirk is now also applied to MOD files. FT2 just copied the quirky code from ProTracker!

Other formats
- [Imp] <js> DMF: Preserve effects better in some situations where there is more than one effect in a pattern cell.
- [Imp] <js> DMF: Improve import of finetune effect with parameters larger than +/-15.

Misc
- [Imp] <js> Always support inputting '-' as negative sign in numeric input fields, even if the system locale would use a different character.
- [Mod] <js> "Find MPT Hacks" no longer warns about artist name being set in MOD / S3M files, as it cannot be stored in those file types anyway.
- [Fix] <js> A memory leak was possible in some situations when loading a module failed due to insufficient memory being available.
- [Fix] <js> MIDI Export: Possible crash after importing an SF2 instrument (http://bugs.openmpt.org/view.php?id=1399).

Third-Party Libraries
- [Imp] Update mpg123 (v1.26.4), UnRAR (v6.0.3)


v1.29.06.00 (29 November 2020, revision 13926)
----------------------------------------------
General tab
- [Imp] <js> When entering a restart position that points to a non-playable order item, immediately show the corrected value when the input field loses focus.

Other formats
- [Imp] <js> DMF: Support early format beta versions (in particular versions 1-4).
- [Imp] <js> MED: Support MIDI program change and custom MIDI commands.
- [Fix] <js> MED: Also use octave wrapping in 8-channel mode for MMD0/MMD1 modules (http://bugs.openmpt.org/view.php?id=1386).
- [Fix] <js> MED: If 8-channel mode is activated, ignore BPM mode (http://bugs.openmpt.org/view.php?id=1384).
- [Fix] <js> MED: Emulate tempo commands F01 and F02 quirk (http://bugs.openmpt.org/view.php?id=1384).
- [Fix] <js> MED: Tempo commands below 32 BPM were interpreted as tempo slides (http://bugs.openmpt.org/view.php?id=1384).
- [Fix] <js> MED: Do not reject files with no instruments.
- [Fix] <js> MID: Relative RPN changes (in particular coarse tune) were not implemented correctly.
- [Fix] <js> IMF: Instrument sample mapping was off by one octave, notable in the guitar part of Astaris by Karsten Koch.

Misc
- [Imp] <js> When inverting icons in high contrast / dark themes, only invert their brightness but keep the hue.
- [Fix] <js> Since OpenMPT 1.29.01.00, Note Off / Cut / Fade shortcuts were missing in new installations, when resetting keys to defaults or when importing very old OpenMPT keyboard configurations (http://bugs.openmpt.org/view.php?id=1385).
- [Fix] <js> Keyboard Settings: Fixed possible crash in the keyboard setup when resetting a key mapping while a separator item was focussed.
- [Fix] <js> MIDI Export: In "Melodic (any)" mode, exported MIDI channels were inconsistent between notes / tracker events and Zxx macros past channel 10 (http://forum.openmpt.org/index.php?topic=6504.0).

Third-Party Libraries
- [Imp] Update UnRAR (v6.0.2)


v1.29.05.00 (25 October 2020, revision 13771)
---------------------------------------------
Pattern tab
- [New] <js> Added new shortcuts for moving channels (current selection if there is one, edit cursor otherwise, http://forum.openmpt.org/index.php?topic=6480.0).
- [Fix] <js> Disabling song looping didn't really work for anything but the first sub song in a seqeuence. Some related issues when song looping is disabled have also been fixed.
- [Fix] <js> Fixed highlighting of the currently selected pattern in the order list past the maximum supported length of the current format (e.g. when importing from some format that supports more than 128 orders into the MOD format).

Pattern tab::Find/Replace
- [Mod] <js> If a match is found in a pattern that is not part of the current sequence, the active sequence is automatically changed.

Sample tab
- [Fix] <js> More logical cue point moving when removing sample ranges.

Instrument tab
- [Imp] <js> Respect instrument NNA settings when playing notes via MIDI (http://bugs.openmpt.org/view.php?id=1371).

MOD
- [Mod] <js> Increased threshold for considering 8xx as panning commands from 820 to 830.

Other formats
- [Imp] <js> WOW: Fix loading of several files and harden WOW detection (http://bugs.openmpt.org/view.php?id=1380).
- [Fix] <js> STM: Changed tempo computation to behave like Scream Tracker 2.3 instead of Scream Tracker 2.2, as the playback frequencies we use for sample playback are closer to those of Scream Tracker 2.3.
- [Fix] <js> MED: Fix possible hang during load if a MED file claims to contain 256 songs.

Stream Export
- [Fix] <js> Avoid desynchronization between channels when doing per-channel export for S3M files (http://bugs.openmpt.org/view.php?id=1331).

Module cleanup
- [Fix] <js> Allow multiple sequences to be merged even if current song format is not MPTM.

Misc
- [Imp] <js> Improve some icons' visibility in high contrast / dark themes.


v1.29.04.00 (4 October 2020, revision 13649)
--------------------------------------------
Tree view
- [Imp] <js> Use natural sorting for filenames (http://bugs.openmpt.org/view.php?id=1359).

Pattern tab
- [Imp] <js> Added possibility to use %channel_name% in accessibility description format, which contains the channel name in addition to its index (http://forum.openmpt.org/index.php?topic=6480.0).

Sample tab
- [Imp] <js> The start and end point of an existing selection can now be modified by dragging them with the mouse.
- [Mod] <js> WAV / FLAC: When importing cue points and there are less than 9 cue points, remove the default cue points from the sample. On export, cue points past the sample end are no longer written.
- [Fix] <js> Playback position indication did not work when using a pattern-specific playback function (e.g. "play from current pattern") and the module was not playing before that.
- [Fix] <js> Ensure that adjusting sample frequency with the fine spinner always adds or subtracts at least one Hz.
- [Fix] <js> Slicing at cue points lost the first part of the sample if some cue point was 0.
- [Fix] <js> Trimming and resampling didn't adjust cue points accordingly.

Instrument tab
- [Fix] <js> Playback position indication did not work when using a pattern-specific playback function (e.g. "play from current pattern") and the module was not playing before that.

Mod Conversion
- [Fix] <js> Sample frequency to transpose + finetune conversion was wrong if the resulting transpose value was negative.

XM
- [Imp] <js> Support loading and saving (but not editing for now, apart from using the clipboard) command W, which is used e.g. by BASS for syncing purposes.

Other formats
- [Fix] <js> MO3: Avoid certain ModPlug hacks from being fixed up twice, which could lead to e.g. very narrow pan swing range for old OpenMPT IT files saved with a recent MO3 encoder version.
- [Fix] <js> PLM: Percentage offset (Mxx) was slightly off.

Misc
- [Fix] <js> Channel Manager is no longer redrawn on almost every unrelated UI update.


v1.29.03.00 (30 August 2020, revision 13550)
--------------------------------------------
Tree view
- [Imp] <js> Show hidden files if Windows Explorer is configured to do so. System files are now shown unless they are also hidden, as this is closer to Explorer's behaviour.
- [Fix] <js> Undoing the deletion of a pattern did not update the pattern list correctly (http://bugs.openmpt.org/view.php?id=1357).

Pattern tab
- [Fix] <js> Choosing Pattern Properties from the order list context menu always showed the properties of the currently edited pattern (http://bugs.openmpt.org/view.php?id=1356).
- [Fix] <js> It was not possible to redo the deletion of a pattern (http://bugs.openmpt.org/view.php?id=1357).
- [Fix] <js> Deleting a pattern (or undoing the deletion) did not update the color of that pattern in the order list correctly (http://bugs.openmpt.org/view.php?id=1357).

Sample tab
- [New] <js> Add support for BRR (SNES Bit Rate Reduction) sample format import.

Other formats
- [Imp] <js> MID: Support files with initial negative delta time. This is not valid according to the standard, but such files exist in the wild.
- [Fix] <js> PP20: The first few bytes of some files were not decompressed properly, making some files unplayable (depending on the original format).

Misc
- [Imp] <js> In file dialogs that can open multiple files, it is now possible to open files from different locations (e.g. through search results).
- [Imp] <js> Channel Manager: Middle-clicking a channel now shows the quick channel settings rather than just a dialog to rename.
- [Imp] <js> Channel Manager: Drag & drop now behave more naturally.
- [Fix] <js> Channel Manager: If channels were rearranged but not applied yet, middle-clicking a channel might have renamed the wrong channel.
- [Fix] <js> Some soundfont instruments with many key zones and instrument layers were no longer imported correctly since OpenMPT 1.29.01.00 (http://forum.openmpt.org/index.php?topic=6462.0).

Third-Party Libraries
- [Imp] Update nlohmann json (v3.9.1)


v1.29.02.00 (26 July 2020, revision 13346)
------------------------------------------
Tree view
- [Imp] <js> Hide empty removable drives.
- [Fix] <js> Offline / slow network shares could slow down filling of the drive list, which could also dramatically affect OpenMPT startup time (tx qsrmvt).

General tab
- [Fix] <js> Tempo tap usually broke and wrapped around to 32 BPM after several taps.

Pattern tab
- [Fix] <js> Fix wrong VU meter color at end of AdLib notes.

MPTM
- [Imp] <js> Qxy now retriggers OPL notes if new compatibility flag is set.
- [Fix] <js> Bring back old OPL note end-of-envelope behaviour for files made with OpenMPT 1.28 (http://bugs.openmpt.org/view.php?id=1344).

IT
  [Fix] <js> Global volume slides with both nibbles set preferred the "slide up" nibble over the "slide down" nibble in old OpenMPT versions, unlike other slides. Such old files are now imported correctly again.

IT::Compatible Playback Mode
- [Fix] <js> Fixed an edge case where, if the filter hit full cutoff / no resonance on the first tick of a row where a new delayed note would be triggered, the filter would be disabled even though it should stay active. Fixes trace.it by maddie.

XM
- [Fix] <js> OXM: Some sample loops were not imported correctly (http://bugs.openmpt.org/view.php?id=1329).
- [Fix] <js> Out-of-range arpeggio clamping behaviour broke in OpenMPT 1.23.05.00. The arpeggios in Binary World by Dakota now play correctly again.

S3M
- [Imp] <js> Support old-style sample pre-amp value in very early S3M files.
- [Fix] <js> Only force-enable fast slides for files saved with Scream Tracker 3.00. Previously, any S3M file made with a Scream Tracker version older than 3.20 enabled them.
- [Fix] <js> Only apply volume and middle-C speed on instrument change if the new sample slot has sample data.

MOD
- [Fix] <js> Fix an infinite loop in GamerMan by MrGamer by playing non-ProTracker MODs more like FT2 would (http://bugs.openmpt.org/view.php?id=1337).

Other formats
- [Imp] <js> STK: Improve tracker detection heuristics to never assume SoundTracker 2.0 if there is a huge number of Dxx commands, as that is a definite hint that they should be treated as volume slides. Fixes Monty On The Run by Master Blaster.
- [Imp] <js> MO3: Support OPL patches in MO3 files created from MPTM and S3M.
- [Imp] <js> DBM: If a global pattern command would be lost because both effect commands in a cell would have to go into the regular effect column (e.g. a speed and a tempo command), the lost command is now attempted to be written into a different cell on the same row. Fixes "Party-Question V" by grogon (http://bugs.openmpt.org/view.php?id=1346).
- [Imp] <js> STM: Try to import ST2 tempo more correctly.

Audio I/O
- [Fix] <jh> Work-around a Windows 10 2004 bug which causes an empty device name to be shown for the Wave Mapper device. Also provide a more useful name in other situations where the name is missing.
- [Imp] <jh> If opening the sound device failed, the name of the device is now shown.
- [Mod] <jh> On new installations, deprecated sound device types are no longer shown.

Misc
- [Imp] <js> OpenMPT now warns if saving a tuning, plugin preset or envelope failed (e.g. because of insufficient storage space, http://bugs.openmpt.org/view.php?id=1161).
- [Fix] <js> OpenMPT could crash when flushing file contents to disk failed (e.g. because disk was full).
- [Fix] <js> DLS: Tuning of drum programs was broken in OpenMPT 1.29.01.00.
- [Fix] <js> SF2: Support negative attenuation in instrument definitions. Region attenuation now adds up to instrument attenuation instead of overriding it (http://bugs.openmpt.org/view.php?id=1336).

Third-Party Libraries
- [Imp] Update nlohmann json (v3.8.0), mpg123 (v1.26.3), opusfile (v0.12) and UnRAR (v5.9.4)

Installer/release package
- [Fix] <jh> Run post-install applications as original user. Otherwise OpenMPT will create its configuration files with elevated privileges on first start.


v1.29.01.00 (24 May 2020, revision 12900)
-----------------------------------------
Tree view
- [New] <js> Can now rearrange sequences through drag & drop.
- [New] <js> Shortcut (.lnk) files to modules, samples and directories are now resolved.
- [New] <js> Allow Forward / Backward mouse buttons to be used for folder navigation in Instrument Library.
- [New] <js> Changing the instrument library directory / module can now also be achieved by editing the library header item (slow double-click).
- [Imp] <js> Can now also import samples and instrument from modules in sample browser using Ctrl + (Shift +) Enter.
- [Imp] <js> Added rename context menu entry in addition to slow double-click.
- [Imp] <js> Duplicating / inserting sequences inserts them next to the selected item. Duplicating a sequence now keeps its original name and adds "(Copy)" to it.
- [Imp] <js> Double-clicking an empty sequence now makes it the current sequence.
- [Fix] <js> Opening a module with external samples in the sample browser broke sample previewing / import for all following modules (http://bugs.openmpt.org/view.php?id=1318).

General tab
- [Imp] <js> 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] <jb & js> Can now merge a selection of patterns into a single pattern from the order list context menu (http://bugs.openmpt.org/view.php?id=238).
- [New] <jb & js> Can now split a pattern into two patterns from the pattern editor context menu (http://bugs.openmpt.org/view.php?id=238).
- [New] <js> Row insertion and deletion can now also be done globally, affecting all patterns up to the next stop (---) pattern (http://bugs.openmpt.org/view.php?id=639).
- [New] <js> ProTracker- / FastTracker-like shortcuts for cutting, copying and pasting entire channels and patterns to separate clipboards (http://bugs.openmpt.org/view.php?id=424).
- [New] <js> New shortcut "Lose Selection".
- [New] <js> New shortcuts to cycle between sequences.
- [New] <js> Can now split sub songs into multiple sequences from the sequence context menu.
- [New] <js> Tooltips are shown for pattern properties, channel headers and plugin names (http://bugs.openmpt.org/view.php?id=1138).
- [Imp] <js> 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. The old behaviour can be restored by toggling the hidden setting "Pattern Editor.OrderListOldDropBehaviour" (http://bugs.openmpt.org/view.php?id=1252).
- [Imp] <js> Previous / Next Order shortcuts now ignore skip patterns (+++).
- [Imp] <js> A group of channels can now be assigned to a record group at once by drag-selecting their channel headers (http://bugs.openmpt.org/view.php?id=1314).
- [Imp] <js> Channel aftertouch is now recorded to all active note channels.
- [Imp] <js> Duplicating / inserting sequences inserts them next to the current sequence. Duplicating a sequence now keeps its original name and adds "(Copy)" to it.
- [Imp] <js> Improve live parameter recording performance from non-bridged plugins (http://bugs.openmpt.org/view.php?id=1312).
- [Imp] <js> Order list separator / line color didn't work well if the window background color was dark.
- [Imp] <js> Improved screen reader read-out of order list (http://forum.openmpt.org/index.php?topic=6297.0).
- [Imp] <js> Pattern navigation and data entry now instantly trigger screen reader updates, unless a module is currently playing (http://forum.openmpt.org/index.php?topic=6297.0).
- [Fix] <js> Seeking with sample sync did not follow instruments with custom tuning (http://bugs.openmpt.org/view.php?id=1239).

Pattern tab::Chord Editor
- [Imp] <js> 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] <js> Can now specify notes up to two octaves below the base note (http://bugs.openmpt.org/view.php?id=1248).
- [Imp] <js> The dialog can now be resized, and hitting the X button no longer saves the modified chords.

Sample tab
- [New] <js> Support little-endian AU / SND files.
- [Imp] <js> Time Stretch can now be applied to sample selections.
- [Imp] <js> Instantly apply result of auto-tuning to playing channels.
- [Imp] <js> Allow resampling ratios greater than 1:512 or 512:1 again with r8brain.
- [Imp] <js> 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] <js> Improve precision of displayed auto-vibrato rate in tooltip.
- [Imp] <js> Speed up initial tab rendering.
- [Fix] <js> Adlib instrument are now always forced to be saved in S3I format, even when WAV or FLAC is selected.
- [Fix] <js> Fix accuracy and consistency of sample grid selection and grid markers with very long samples.
- [Fix] <js> Increased some OPL editor label sizes so that they work better on Wine.

Instrument tab
- [Imp] <js> Added screen reader support to note map (http://forum.openmpt.org/index.php?topic=6297.0).
- [Imp] <js> Envelope navigation and modification now instantly trigger screen reader updates, unless a module is currently playing (http://forum.openmpt.org/index.php?topic=6297.0).
- [Imp] <js> SFZ: Instrument envelopes imported / exported with SFZv2 flexible EGs (http://bugs.openmpt.org/view.php?id=1295).
- [Imp] <js> 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] <js> SFZ: Change filename of modified samples (loop cross-fade, offset and phase inversion) so that the original files are not modified forever.
- [Fix] <js> SFZ: Exported sample loop length was off by one.
- [Fix] <js> SFZ: Possible hang when importing malformed #define statement.

Comments tab
- [New] <js> Can now audition samples and instruments using regular note entry keys.
- [New] <js> Added shortcuts to switch between sample and instrument lists (Default: Tab) and edit selected item (Enter) (http://forum.openmpt.org/index.php?topic=6274.0).
- [New] <js> Can now copy sample and instrument names (context menu).

VST / DMO Plugins
- [Imp] <js> Resize plugin window appropriately if switching between presets results in a change of the menu bar height.
- [Mod] <js> 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] <js> A warning is shown when the likely cause for a plugin loading failure is a shortage of Fiber Local Storage indices.
- [Fix] <js> 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 (http://bugs.openmpt.org/view.php?id=1266). Alternatively, the plugins can also be bridged instead to avoid the crash.

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

Playback
- [New] <js> In addition to A500 filter settings, the Amiga resampler can now also use A1200 filter settings and unfiltered output (http://bugs.openmpt.org/view.php?id=1276).
- [New] <jh> Added Bit Crush DSP to reduce the bit depth of the final output, e.g. to emulate old hardware or trackers.
- [Imp] <js> Allow NNA / DNA note-off / note fade to affect OPL notes the same way they affect samples.
- [Mod] <js> 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] <js> Previewing an OPL instrument could cause the first pattern channel to no longer be played back correctly (http://bugs.openmpt.org/view.php?id=1323).
- [Fix] <js> Fix some inaccuracies in OPL emulator (original fixes by JP Cimalando).
- [Fix] <js> OPL channels were not affected by "Reset channels on loop" setting.
- [Fix] <js> End-of-sample pop reduction of surround channels was applied to front channels instead, causing a pop on the front channels instead of removing it on the back channels.

MPTM
- [Imp] <js> Raise tempo limit from 512 to 1000 BPM.
- [Imp] <js> When closing a file, a proper dialog is shown for handling modified / missing external samples (http://bugs.openmpt.org/view.php?id=1302).
- [Mod] <js> Sequence names now start at 1 rather than 0.

MPTM::Custom Tuning
- [Imp] <js> Custom tunings can now be used with OPL instruments (http://forum.openmpt.org/index.php?topic=6254.0).
- [Imp] <jh> Custom tuning and sequence names can now contain any Unicode characters.
- [New] <js> Added character '.' to drawable letters for built-in fonts.

IT
- [Mod] <js> Disable retrigger with short notes quirk for modules saved with ChibiTracker, as it does not implement that quirk.

IT::Compatible Playback Mode
- [Fix] <js> Instrument and sample panning no longer override channel panning for following notes (http://bugs.openmpt.org/view.php?id=1220).
- [Fix] <js> SBx is now prioritized over Bxx commands that are to the left of it. When combining SBx and EEx effects, don't skip the first row of the loop like in FastTracker 2. (http://bugs.openmpt.org/view.php?id=959).
- [Fix] <js> Duplicate Check Type "Sample" should only be applied if the instruments match, too.
- [Fix] <js> Duplicate Check Type "Note" should compare pattern notes, but it was comparing the new pattern note against the old translated note.
- [Fix] <js> Various fixes for envelope resetting.

XM
- [New] <jh> Add support for reading OggMod OXM files (XM with Vorbis-compressed samples).
- [Imp] <js> Raise tempo limit from 512 to 1000 BPM.
- [Mod] <js> 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] <js> Do not reset note-off status on portamento if there is no instrument number (http://bugs.openmpt.org/view.php?id=1223).

S3M
- [Mod] <js> 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] <js> 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] <js> Notes cannot be retriggered after they have been cut.
- [Fix] <js> Previous note offset is no longer used for retriggered notes if there was no instrument number next to the Qxy effect.
- [Fix] <js> Fix portamento after note cut (fixes antediluvian_song.s3m).
- [Fix] <js> Implement sample swapping (with and without portamento) like in Scream Tracker 3 with Sound Blaster driver. This compatibility behaviour is not enabled by default, as OpenMPT mostly follows GUS playback behaviour by default.
- [Fix] <js> When combining SBx and EEx effects, don't skip the first row of the loop like in FastTracker 2. (http://bugs.openmpt.org/view.php?id=959).

MOD
- [Fix] <js> 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 (http://bugs.openmpt.org/view.php?id=1236).
- [Fix] <js> 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] <js> Previous note offset is no longer used for retriggered notes if there was no instrument number next to the E9x effect.
- [Fix] <js> Vibrato type "ramp down" was upside down.

Other formats
- [Imp] <js> 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 (http://bugs.openmpt.org/view.php?id=71).

Audio I/O
- [New] <jh> WASAPI: Provide a default device which automatically follows changes in the default audio device.
- [Imp] <jh> ASIO: Provide 64-bit floating point if supported by the driver.
- [Imp] <jh> ASIO: Support deferred processing. Can be turned off by setting "Sound Settings.AllowDeferredProcessing" to false if it causes trouble.
- [Mod] <jh> 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 toggled to revert to the old behaviour.
- [Mod] <jh> Deprecated sound devices are no longer shown by default. Use the "Show deprecated devices" checkbox to re-enable them.
- [Mod] <jh> Notify users if they use a deprecated sound device on startup.
- [Reg] <jh> Removed hidden setting "Sound Settings.PreferSameTypeIfDeviceUnavailable". This only really made sense for WASAPI, which did not provide an explicit default device until now. For low-level APIs, falling back to any other device is not really desirable because low-level APIs tend to interfer with normal system audio processing.
- [Reg] <jh> Removed hidden settingss "Sound Settings.MoreRtAudio", "Sound Settings.MorePortAudio" and "Sound Settings.ShowNotRecommendedDeviceWarning".

Misc
- [New] <js> MIDI recording now supports Hold Pedal CC messages (http://bugs.openmpt.org/view.php?id=800).
- [Imp] <js> 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] <js> When prompting to save modified samples, also check for files that no longer exist on disk.
- [Imp] <js> SF2: Support instrument-global regions, region-specific sample loops, region tuning (only with a value of 0 for drum programs) and multi-instrument presets (http://bugs.openmpt.org/view.php?id=1320).
- [Imp] <js> 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] <js> Legacy Playback Behaviour dialog is now searchable and resizable (http://bugs.openmpt.org/view.php?id=1285).
- [Imp] <js> MIDI Export: Add option to not export program changes per instrument (http://forum.openmpt.org/index.php?topic=6351.0).
- [Imp] <js> 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] <jh> 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] <jh & js> 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] <jh> Possible crashes when loading files from network drives on unstable network connections.
- [Fix] <js> 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] <js> 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] <js> MIDI Export: Fix note-on / note-off conflict when the same note is triggered on two different pattern channels (http://forum.openmpt.org/index.php?topic=6318.0).
- [Reg] <jh> 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] <jh> 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] <jh> Support for Windows XP and Windows Vista has been dropped.
- [Reg] <jh> 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] <js> MIDI I/O Plugin: Allow to enter fractional millisecond latency values.
- [Imp] <js> I3DL2Reverb: Provide plugin presets based on OpenMPT's global reverb presets.

Third-Party Libraries
- [Imp] Update nlohmann json (v3.7.3), mpg123 (v1.26rc3), PortAudio (2020-03-26), r8brain (v4.6), RtAudio (v5.1.0)


v1.28.10.00 (13 April 2020, revision 12628)
-------------------------------------------
Pattern tab
- [Fix] <js> Do not modify existing Parameter Control Events incorrectly when interpolating normal (volume) commands or notes.
- [Fix] <js> Volume column tone portamento commands did not update portamento effect memory when seeking. XM volume column portamento quirks are now handled better when seeking.

Sample tab
- [Fix] <js> When OPL instruments were set up as external samples, changing their parameters didn't mark them as modified.

IT
- [Fix] <js> Vibrato was too fast in Old Effects mode since OpenMPT 1.27 (http://bugs.openmpt.org/view.php?id=1309).

XM
- [Fix] <js> Treat 8bitbubsy's FT2 clone exactly like Fasttracker 2 with respect to compatibility and playback flags. For example, FT2 Pan Law was not applied.

Other formats
- [Fix] <js> DMF: Some files had a wrong tempo since OpenMPT 1.25.02.00 (http://bugs.openmpt.org/view.php?id=1303).

Misc
- [Imp] <js> When changing from modern tempo mode to classic or alternative tempo mode, the initial song tempo is now retained better.
- [Fix] <js> Potential crash when trying to save a file to a drive that no longer exists.

Third-Party Libraries
- [Imp] Update UnRAR (v5.9.2)


v1.28.09.00 (22 December 2019, revision 12387)
----------------------------------------------
Pattern tab
- [Fix] <js> Chord detect interval was broken if the pattern number didn't match its location in the order list (e.g. pattern 3 at position 3) since OpenMPT 1.28.07.00.
- [Fix] <js> Potential crash when entering notes, in particular if the order list was empty (http://bugs.openmpt.org/view.php?id=1278).
- [Fix] <js> Potential crash when halving a pattern with an odd number of rows and then expanding it again (http://bugs.openmpt.org/view.php?id=1282).

MOD
- [Fix] <js> Fix initial instrument change with no note playing. Fixes first pattern of Beyond Music by Captain (http://bugs.openmpt.org/view.php?id=1275).

Misc
- [Fix] <js> Loading / creating the first OPL instrument while playback was already running didn't start the OPL emulator until the next time playback was restarted.
- [Fix] <jh> Fix compilation of Wine Integration on recent Wine versions (http://bugs.openmpt.org/view.php?id=1263).

Third-Party Libraries
- [Imp] Update UnRAR (v5.8.5)


v1.28.08.00 (27 October 2019, revision 12247)
---------------------------------------------
Playback
- [Mod] <js> Do not apply ramp from initial global volume to current global volume when jumping around in playback.
- [Fix] <js> Possible crash when trying to retrigger an OPL note with active filter.

VST::Plugin Bridge
- [Fix] <js> Bridge process kept hanging around in background if loading or closing plugin failed.

S3M
- [Imp] <js> Import edit timer from files saved with Impulse Tracker.

Other formats
- [Fix] <js> MTM: Sample loop length was off by one.
- [Fix] <js> PSM: Sample loop length was off by one in most files.
- [Fix] <js> ITP: Possible crash with malformed files.

Misc
- [Imp] <js> Small performance improvement when opening / creating new modules or starting playback.

Third-Party Libraries
- [Imp] Update mpg123 (v1.25.13), UnRAR (v5.8.3)


v1.28.07.00 (22 September 2019, revision 12079)
-----------------------------------------------
Pattern tab
- [Imp] <js> If repeating notes on key hold is enabled, the repetitions are now ignored if recording is disabled (key-jazz) or the edit step is set to 0, to avoid ugly and unnecessary repetitions (http://forum.openmpt.org/index.php?topic=6207.0).
- [Imp] <js> The "editing is disabled" prompt can no longer be dismissed by pressing the "E" key and thus re-enabling editing accidentally (http://bugs.openmpt.org/view.php?id=1250).
- [Fix] <js> Chord detect interval didn't work across pattern boundaries (http://bugs.openmpt.org/view.php?id=1246).

Sample tab
- [Imp] <js> Add shortcuts for toggling sample drawing, adding silence and configuring the sample grid.
- [Imp] <js> Add tooltips with keyboard shortcuts for buttons in waveform view (http://bugs.openmpt.org/view.php?id=980).

Instrument tab
- [Imp] <js> Add tooltips with keyboard shortcuts for buttons in envelope view (http://bugs.openmpt.org/view.php?id=980).
- [Fix] <js> Toggling some envelope features through keyboard shortcuts did not update the corresponding button status.

VST / DMO Plugins
- [Fix] <js> MIDI Mapping dialog did not appear when holding Shift key in some plugin editors (e.g. in Synth1 editor when enabling popout sliders).

VST::Plugin Bridge
- [Fix] <js> It was not possible to record parameter changes to the pattern editor (http://bugs.openmpt.org/view.php?id=991).
- [Fix] <js> Receiving MIDI messages from the bridge was broken since v1.27.08.00.
- [Fix] <js> Sending SysEx messages to a 64-bit host or bridge never worked.

Other formats
- [Fix] <js> MID: Possible crash when importing more than one sustain pedal release message following a note-off.
- [Fix] <js> MO3: MIDI program / bank was actually not imported as announced in v1.28.03.00.

Misc
- [Imp] <js> When adding a sound font fails, an error message is shown.
- [Fix] <js> Possible crash when trying to load huge sound fonts (http://forum.openmpt.org/index.php?topic=6217.0).
- [Fix] <js> SF2: Samples stored past 2 GB into the file couldn't be extracted (http://forum.openmpt.org/index.php?topic=6217.0).

Third-Party Libraries
- [Imp] Update flac (v1.3.3), mpg123 (v1.25.12), ogg (v1.3.4), UnRAR (v5.8.1)


v1.28.06.00 (10 August 2019, revision 11908)
--------------------------------------------
Tree view
- [Imp] <js> When showing folders in the lower panel, going back to the parent folder selects the previously visited folder (http://bugs.openmpt.org/view.php?id=1225).
- [Imp] <js> Scroll to last selected item when refreshing.

Pattern tab
- [Fix] <js> When pasting from IT to MPTM or vice versa, don't convert volume column commands as if they were coming from XM.

Sample tab
- [Fix] <js> Time-stretching a samples with a sample rate higher than 192 kHz crashed OpenMPT (http://bugs.openmpt.org/view.php?id=1234).

Mod Conversion
- [Fix] <js> When converting from IT to MPTM or vice versa, don't convert volume column commands as if they were coming from XM.

IT
- [Imp] <js> Detect IT files unpacked with early UNMO3 versions (http://forum.openmpt.org/index.php?topic=6189.0).

XM
- [Fix] <js> Fix VSTi playback or MIDI export with sample slots whose transpose is not set to C-5.

MOD
- [Imp] <js> Warn when samples beyond sample slot 31 are used.

Third-Party Libraries
- [Imp] Update mpg123 (v1.25.11)


v1.28.05.00 (26 May 2019, revision 11622)
-----------------------------------------
Pattern tab
- [Fix] <js> Seeking with sample sync did not stop notes with XM Key Off (Kxx) effect (http://bugs.openmpt.org/view.php?id=1223).

Mod Conversion
- [Fix] <js> Sequence splitting when converting to MPTM was broken (http://bugs.openmpt.org/view.php?id=1218).

Playback
- [Fix] <js> Possible crash when playing some XM files (introduced in OpenMPT 1.28.01.00).
- [Fix] <js> Breaking out of a sustain loop through Note-Off sometimes didn't continue in the regular sample loop, or not at the correct position.

Misc
- [Imp] <js> Show keyboard shortcuts in various tooltips (http://bugs.openmpt.org/view.php?id=980).
- [Imp] <js> Try to figure out when a USB MIDI device is disconnected and disable the MIDI record button if this device was being used for recording.
- [Imp] <js> In addition to checking for the latest development builds, it is now also possible to receive update notifications for upcoming minor updates.
- [Fix] <js> In High-DPI mode, scale initial size of the upper panel of child windows properly.

Bundled plugins
- [Fix] <js> MIDI I/O Plugin: Do not crash when sending a MIDI message fails (e.g. with Coolsoft Virtual MIDI Synth, http://bugs.openmpt.org/view.php?id=1219).

Third-Party Libraries
- [Imp] Update opus (v1.3.1), RtMidi (4.0.0) and UnRAR (v5.7.5)


v1.28.04.00 (7 April 2019, revision 11528)
------------------------------------------
Tree view
- [Fix] <js> MIDI Library preview did not preview the correct instruments for many soundfonts including GM.DLS.

Sample tab
- [Fix] <jh> FLAC: Tags were imported with incorrect character set.

VST / DMO Plugins
- [Fix] <js> Do not send MIDI volume or set dry / wet ratio on note-off. Old behaviour (this bug has gone unnoticed for more than ten years!) is retained through a compatibility setting that is only available for legacy files (http://forum.openmpt.org/index.php?topic=6115.0).

S3M
- [Mod] <js> Do not allow OPL3 waveforms in S3M files. Existing files with OPL3 waveforms are not affected.

MOD
- [Fix] <js> Sample swapping was always enabled since it has been separated from the ProTracker 1/2 compatibility flag. Now it is always enabled for Amiga-style modules and otherwise the old heuristic is used again (http://bugs.openmpt.org/view.php?id=1199).
- [Fix] <js> Saving 16-bit stereo samples (which should be converted to 8-bit mono) was broken since OpenMPT 1.28.01.00.

Other formats
- [Imp] <js> STK: SoundTracker default tempo is no longer rounded.
- [Fix] <js> MTM: Ignore unused Exy commands on import (http://bugs.openmpt.org/view.php?id=1204).
- [Fix] <js> Startrekker: Clamp speed to 31 ticks per row (http://bugs.openmpt.org/view.php?id=1201).

Audio I/O
- [Fix] <jh> Fix building Wine wrapper when RtAudio or PortAudio is not available (http://bugs.openmpt.org/view.php?id=1210).
- [Fix] <jh> Fix RtAudio configuration for Wine wrapper (http://bugs.openmpt.org/view.php?id=1211).

Misc
- [Mod] <js> On Windows 10, OpenMPT prevented Windows from shutting down even when there were no unsaved files. On Windows Vista and newer, OpenMPT now shows the number of unsaved files when preventing a shutdown.
- [Fix] <js> MIDI Export: Synchronize pitch wheel depth between instruments.
- [Fix] <js> MIDI Export: "Don't export" didn't work as intended when the ignored instrument shared pattern channels with exported instruments.
- [Fix] <jh> Do not disable Reverb if /noAssembly command line switch is passed.

Third-Party Libraries
- [Imp] Update UnRAR (v5.7.4)


v1.28.03.00 (10 February 2019, revision 11351)
----------------------------------------------
Sample tab
- [Fix] <js> When initializing an OPL instrument, the undo state of the sample slot was not updated (http://bugs.openmpt.org/view.php?id=1194).

Instrument tab
- [Fix] <js> Properly render & character in custom note names in note map (http://bugs.openmpt.org/view.php?id=1114).

MPTM
- [Mod] <js> OPL notes can now be controlled (volume / pan / pitch) after they have been released. Note Cut (^^^) now really cuts OPL notes, use === to release them instead. For existing MPTM files, the legacy behaviour is used.
- [Fix] <js> Possible crash when doing a portamento from an OPL instrument to an empty instrument note map slot.

IT::Compatible Playback Mode
- [Fix] <js> Various fixes for note-off + instrument number in Old Effects mode.

S3M
- [Fix] <js> Allow volume of OPL notes to be controlled after note-off (fixes gotoandplay_-_losing_sanctuary.s3m).

Other formats
- [Imp] <js> MO3: Import IT row highlights as written by MO3 2.4.1.2 or newer. Properly import MIDI program and bank info.

Audio I/O
- [Mod] <jh> On Wine on Linux, prefer DirectSound over WaveOut because there are still systems with winealsa.drv where WaveOut occasionally breaks. This change only affects new installations of OpenMPT (http://bugs.openmpt.org/view.php?id=1193).

Misc
- [Fix] <jh> Builds for Windows XP / Vista no longer worked on CPUs without SSE2 support (http://forum.openmpt.org/index.php?topic=6055.0).
- [Fix] <js> MIDI Export: Pitch bend was not reset when two instruments shared a MIDI channel (http://bugs.openmpt.org/view.php?id=1195).

Third-Party Libraries
- [Imp] Update UnRAR (v5.7.1)


v1.28.02.00 (6 January 2019, revision 11185)
--------------------------------------------
Pattern tab
- [Fix] <js> Properly render & character in custom fonts (http://bugs.openmpt.org/view.php?id=1114).

Playback
- [Mod] <js> Improve OPL silent note optimization.

MPTM::Custom Tuning
- [Fix] <js> Tuning Dialog: Properly render & character in note name list (http://bugs.openmpt.org/view.php?id=1114).

Other formats
- [Imp] <js> MO3: Apply playback changes based on "ModPlug-made" header flag.

Audio I/O
- [Fix] <jh> Only clip WASAPI non-exclusive floating-point output on real Windows systems. Wine does not need it.

Misc
- [Fix] <js> Open / Save file dialogs looked strange on some Wine setups (http://bugs.openmpt.org/view.php?id=1181).

Third-Party Libraries
- [Imp] Update nlohmann json (v3.5.0)


v1.28.01.00 (23 December 2018, revision 11100)
----------------------------------------------
Pattern tab
- [Imp] <js> Effect memory is now also used for volume column input.
- [Imp] <js> New shortcut "Show Chord Editor" (http://bugs.openmpt.org/view.php?id=338).
- [Imp] <jh> When using a custom pattern font, all ASCII characters are now usable for rendering custom note names in tunings.
- [Fix] <js> Seeking with sample sync did not work properly when playback was to be resumed on a row that contained an instrument-less note.

Sample tab
- [New] <jh> Add Apple CAF and Sony Wave64 sample import. Only basic uncompressed formats are supported and no detailed instrument or sample metadata is imported for now.
- [New] <js> Can now read SBI (OPL2 instrument) files.
- [New] <js> Can now write S3I (Scream Tracker 3 instrument) files, mainly intended for saving OPL instruments.
- [Imp] <js> Faster sample normalization.
- [Imp] <jh> Read sample title from AU files.
- [Imp] <jh> WAV files are now written with a CSET chunk to specify the metadata encoding as UTF-8.
- [Imp] <jh> Read ID3 tags in MP3 samples.
- [Imp] <js> Decreased memory consumption during saving of FLAC samples.
- [Mod] <js> Removed mnemonic for "slice sample" context menu entry (http://bugs.openmpt.org/view.php?id=1169).
- [Fix] <jh> FLAC metadata was not encoded correctly as UTF-8.

Instrument tab
- [New] <js> Can now specify the color of the release node section of envelopes.
- [New] <js> SFZ export. Note that many instrument properties do not map cleanly to SFZ features, so this export is quite lossy.
- [New] <js> In the envelope scaling dialog, it is now also possible to add an offset to the y axis.
- [Fix] <js> Importing ITI / XI instruments into IT / XM files did not remove the release node settings.
- [Fix] <js> Fixed possible rare crash that could occur when redrawing the envelope editor (http://bugs.openmpt.org/view.php?id=1175).

Tree view
- [Imp] <js> Show external samples with different icons.
- [Mod] <js> Sample / instrument play status update is now enabled by default on new installations.
- [Fix] <js> Previewing MIDI Library items associated with soundfonts now previews the correct instrument inside that soundfont.

Mod Conversion
- [Mod] <js> Remove E0x commands when converting from MOD / XM to S3M / IT / MPTM.
- [Mod] <js> Convert Note Cut (^^^) to C00 instead of EC0 when converting to MOD / XM.

VST / DMO Plugins
- [Mod] <js> "Pass keys to plugin" is no longer required to be activated when a standard input field is focussed in a plugin GUI to be able to enter texts.

Playback
- [New] <js> MIDI macros now support three new undocumented (but fully supported by Impulse Tracker) characters: h (tracker channel), o (sample offset) and m (sample loop direction).
- [New] <js> MIDI macros now support the non-standard macro character s, which automatically calculates the correct checksum for a GS SysEx message.
- [Imp] <js> MIDI messages FA, FC and FF reset the resonant filter settings for all channels, like in Impulse Tracker.
- [Mod] <js> Amiga resampler is now enabled by default for Amiga modules.
- [Fix] <js> NNA channel allocation did not handle instruments only associated to plugins correctly, causing VSTi NNA channels to be "lost" in many cases (unable to control with S7x).
- [Fix] <js> An instrument release node past the sustain loop end was not processed correctly with "IT-style envelope position advance + enable/disable behaviour" flag enabled (http://bugs.openmpt.org/view.php?id=1171).
- [Fix] <js> Release node volume scaling was not applied properly if an envelope loop started before the release node.

MPTM
- [New] <js> AdLib (OPL) instruments are now supported. Up to 18 simultaneous voices with OPL3-style panning (hard left / center right) and all OPL3 waveforms can be used. 4-operator instruments are not available for now, though.
- [Imp] <js> More logical release node behaviour. The release part is now scaled by the ratio between the value of the key-off point and the release node. The old behaviour is retained through a compatibility flag.
- [Mod] <js> When creating a new MPTM file, a few more sensible IT compatibility flags are now enabled by default to be more consistent with IT.

XM::Compatible Playback Mode
- [Fix] <js> If the sustain point of the panning envelope is reached before key-off, it is never released.
- [Fix] <js> Do not default recall volume / panning for delayed instrument-less notes.

S3M
- [New] <js> AdLib (OPL) instruments are now supported. Compared to Scream Tracker 3, this implementation supports 18 instead of 9 simultaneous OPL voices, OPL3-style panning (hard left / center / right) and the extra OPL3 waveforms are supported as well (http://bugs.openmpt.org/view.php?id=381).
- [Fix] <js> Notes without instrument number use previous note's sample offset.

MOD
- [Imp] <js> Support notes in octave 2, like in FastTracker 2 (fixes DOPE.MOD).
- [Fix] <js> Do not apply Amiga playback heuristics to files that have clearly been written with a PC tracker. Fixes LHS_MI.MOD (tx haspor).

Other formats
- [New] <js> Can now import C67 (CDFM / Composer 670) files.
- [Mod] <js> IMF: Import disabled channels as muted channels.
- [Fix] <js> MID: Running status should only be applied to channel events.
- [Fix] <js> MID: If the MIDI Library contained instruments not mapped to soundfonts, the wrong instruments could sometimes be loaded.
- [Fix] <js> SFX: Work around bad conversions of the "Operation Stealth" soundtrack by turning pattern breaks into note stops (http://bugs.openmpt.org/view.php?id=1170).

Stream Export
- [New] <jh> Add AU export. This allows to export uncompressed PCM audio larger than 2 GB (http://bugs.openmpt.org/view.php?id=766).
- [Imp] <jh> The LAME MP3 encoder is now shipped with OpenMPT (http://bugs.openmpt.org/view.php?id=1095).
- [Reg] <jh> Removed MP3 encoding support via ACM.

Module cleanup
- [New] <js> Can now optimize samples (Edit -> Sample Trimmer) by automatically playing the whole song and recording how much of each sample is played (http://bugs.openmpt.org/view.php?id=554).

Audio I/O
- [Mod] <jh> Modernize default sound device priority list for Wine on non-Linux systems.

Misc
- [New] <js> Can now pass more than one file via command line parameter to open with OpenMPT. Use the /shared parameter to send the files to an existing OpenMPT instance rather than opening a new instance.
- [New] <js> Added menu item and keyboard shortcut to save a copy of a module (http://bugs.openmpt.org/view.php?id=1166).
- [New] <js> MIDI Export: Added option to prevent instruments from overlapping on same MIDI channel for more "classical" MIDI export rather than expecting each track to be sent to its own device / plugin.
- [Imp] <js> MIDI Export: "Melodic (any)" channel mapping now uses up to 15 instead of 8 different channels (all but channel 10).
- [Imp] <js> New shortcut "Toggle Loop Song" (http://bugs.openmpt.org/view.php?id=338).
- [Imp] <js> Settings dialog: Added a possibility to set friendly names for MIDI input devices. For output devices, the settings still have to be edited directly.
- [Imp] <js> OpenMPT now warns if saving a module or MIDI export failed (e.g. because of insufficient storage space, http://bugs.openmpt.org/view.php?id=1161).
- [Imp] <js> On Windows Vista and later, the Places bar in file dialogs now contains links to OpenMPT's default directories.
- [Imp] <js> On Windows Vista and later, the new file dialog style is now also used when audio file preview is enabled.
- [Imp] <jh> Advanced Settings: Use a different background color for settings that have non-default values.
- [Mod] <js> Sub song search is now less thorough, finding less unwanted sub songs in partially played patterns.
- [Mod] <js> Allow compatibility flags to be part of MPTM templates. They are still reset for legacy module types to always enforce maximum compatibility even when opening templates saved with an older OpenMPT version.
- [Mod] <js> When showing a list of missing plugins on startup, offer the user to remove all or some of them (http://bugs.openmpt.org/view.php?id=1153).
- [Mod] <jh & js> Merge lossy and lossless stream export into a single menu entry and keyboard shortcut (http://bugs.openmpt.org/view.php?id=801).
- [Mod] <jh & js> Format various numbers with thousands separators to make them more readable.
- [Mod] <jh> Interpolation filters have been renamed: "XMMS-ModPlug" is now "Sinc", "Polyphase" is now "Sinc with Low-Pass".
- [Mod] <jh> Added possibility to check for updates at each program startup.
- [Mod] <jh> OpenMPT now flushes all file buffers when saving files to minimize data loss in case of an unexpected system crash. As this feature may slow down module saving especially with large modules and samples, it can be disabled through the hidden setting "Misc.FlushFileBuffersOnSave" (http://bugs.openmpt.org/view.php?id=1157).
- [Mod] New shiny icons, splash and about screens by Úlfur Kolka!
- [Fix] <js> When DPI-awareness is enabled, icons are now scaled correctly.
- [Fix] <js> Automatically re-establishing Set Spacing keys after removing another numeric key combination never worked as intended.
- [Fix] <js> OpenMPT no longer uses DDE by default to open files from Explorer, as it could sometimes show a bogus warning message (http://bugs.openmpt.org/view.php?id=1126).
- [Fix] <js> No error message was shown when trying to open a file from the Most Recent Files list that was located on a non-existing drive (http://bugs.openmpt.org/view.php?id=1057).
- [Fix] <js> Update Check: Ignoring a new version did not work.
- [Reg] <js> Remove bandwidth and windowing function selection from mixer configuration. These are often misunderstood by users and changing them can result in reduced resampling quality if one does not fully understand the consequences. They are now hidden settings and reverted back their setting to the default value.
- [Reg] <jh> Wine 1.6 is no longer supported. The minimum required version is Wine 1.8.

Third-Party Libraries
- [Imp] Update opus (v1.3), SoundTouch (v2.1.1) and UnRAR (v5.6.8)


v1.27.11.00 (21 October 2018, revision 10938)
---------------------------------------------
Pattern tab
- [Fix] <js> Amplification with both fade-in and fade-out enabled was broken.
- [Fix] <js> Partially selected channels were sometimes amplified when they should not have been.

Sample tab
- [Fix] <js> Trying to apply an invalid sample rate and then choosing the upsample or downsample option instead caused the wrong sample rate to be chosen for resampling.
- [Fix] <js> Reject resampling ratios greater than or equal to 512 when using r8brain for resampling as they resulted in a crash.

Mod Conversion
- [Mod] <js> When converting to MOD / XM, convert S8x to 8xx instead of E8x, as Fast Tracker does apparently not support E8x.

Playback
- [Fix] <js> Clicks when stopping channels that didn't end at zero volume in 64-bit builds.

XM
- [Fix] <js> Do not import commands N and M as channel volume commands (http://bugs.openmpt.org/view.php?id=1156).

Other formats
- [Fix] <js> MED: Possible crash with malformed files.

Misc
- [Imp] <js> Implement horizontal wheel scrolling for pattern / sample / instrument editors. Useful e.g. for pattern navigation with some trackpoint drivers.
- [Fix] <js> Notes triggered from any editor could be played with a panbrello effect if some other channel was previously playing with panbrello.

Third-Party Libraries
- [Imp] Update libopusenc (v0.2.1)


v1.27.10.00 (23 September 2018, revision 10852)
-----------------------------------------------
Pattern tab
- [Fix] <js> With "always center active row" disabled, cancelling a pattern selection by clicking into the pattern did not set the cursor position correctly (http://bugs.openmpt.org/view.php?id=1142).

Sample tab
- [Mod] <jh> Reject overly long MP3 / FLAC / Vorbis / Opus / Media Foundation samples.

Tree view
- [Fix] <jh> Fix crackling, initial missing frames or sometimes even completely in audible instrument preview.

Playback
- [Fix] <js> The first few frames of previewed notes in the sample, instrument and pattern editors were sometimes cut off (http://bugs.openmpt.org/view.php?id=209).
- [Fix] <js> Jump commands on the same row as the end of a pattern loop covering the restart position of the module could cause the module to loop even when looping was disabled (tx pulsewidth).

Other formats
- [Fix] <js> ITP: Possible crash with malformed files.

Misc
- [Fix] <js> Scrolling with touch gestures (on touch screens and some touchpads) did not scroll the pattern, sample and instrument editor contents (despite changing the scrollbar position) on Windows 8 and later.
- [Fix] <js> When trying to append a module with differing global swing settings, the time signature was not overridden properly.
- [Fix] <js> Advanced Settings: Crash when pressing Enter and there is no value to edit (http://bugs.openmpt.org/view.php?id=1140).
- [Fix] <jh> Some tooltips in the MIDI Mapping Dialog showed incorrect texts.

Third-Party Libraries
- [Imp] Update libopusenc (v0.2), opusfile (v0.11) and UnRAR (v5.6.6)


v1.27.09.00 (28 July 2018, revision 10630)
------------------------------------------
Pattern tab
- [Fix] <js> Mix-pasting multiple patterns including +++ or --- patterns inserted those patterns at the beginning of the orderlist. They are now ignored completely.
- [Fix] <js> Entering a note, then pressing the chord modifier and releasing the key was interpreted as releasing a chord, which could lead to a crash when accessing bogus chord key channels.
- [Fix] <js> Picking up an instrument number higher than the number of usable instruments in the dropdown list was not possible.

Playback
- [Fix] <js> Channels whose volume envelope was playing at volume 0 while being moved to a NNA background channel were cut off completely since OpenMPT 1.27.07.00.

MPTM
- [Fix] <jh & js> Crash with some malformed tunings.

Other formats
- [Fix] <js> AMF (ASYLUM): Convert 7-bit panning to 8-bit panning for playback.

Misc
- [Mod] <jh> The crash handler no longer includes the installation GUID in crash reports as it theoretically allows de-anonymizing update statistics.

Third-Party Libraries
- [Imp] Update UnRAR (v5.6.5)


v1.27.08.00 (19 May 2018, revision 10245)
-----------------------------------------
Pattern tab
- [Imp] <js> Show instrument change shortcuts also in sub menu of context menu.

Sample tab
- [Fix] <js> Convert sample properties when importing samples via Media Foundation codecs (for MOD / XM).

Instrument tab
- [Imp] <js> New shortcuts: Switch to Volume / Panning / Pitch / Filter Envelope, Toggle Volume / Panning / Pitch / Filter Envelope, Toggle Envelope Loop, Toggle Envelope Sustain Loop, Toggle Envelope Carry.
- [Fix] <js> SFZ: Assume UTF-8 encoding for region names.

Tree view
- [Imp] <js> Select next item after deleting a file to prevent scrolling back to top on Wine.

VST::Plugin Bridge
- [Fix] <js> Sending or receiving SysEx messages resulted in a crash.
- [Fix] <js> When automating more than 64 plugin parameters at the same time (also when restoring saved parameters), parameter 0 was reset to a value of 0 (http://forum.openmpt.org/index.php?topic=5967.0).

Playback
- [Fix] <js> The resonant filter was sometimes unstable when combining low-volume samples, low cutoff and high mixing rates.
- [Fix] <js> Switching between instruments with portamento did not update the NNA settings (fixes outcast the third.it, http://bugs.openmpt.org/view.php?id=1122).

Other formats
- [Fix] <js> AMS: Possible crash during load in low memory situations.
- [Fix] <js> FAR: Properly import volume commands.
- [Fix] <js> MID: GS drum channel enable and disable messages were still broken since v1.27.06.00.
- [Fix] <js> STM: Having both Bxx and Cxx commands in a pattern imported the Bxx command incorrectly (fixes ilu.stm).
- [Fix] <js> ULT: Portamento import was sometimes broken.

Third-Party Libraries
- [Imp] Update UnRAR (v5.6.4)


v1.27.07.00 (8 April 2018, revision 10044)
------------------------------------------
Pattern tab
- [Imp] <js> Keep track of active SFx macro during seeking.

Instrument tab
- [Fix] <js> Importing soundfont instruments into IT / XM files did not remove the release node settings.

VST / DMO Plugins
- [Mod] <js> Prepend plugin name to default filename when saving a plugin preset or bank (http://bugs.openmpt.org/view.php?id=1108).

Playback
- [Fix] <js> The "note cut" duplicate note action did not volume-ramp the previously playing sample.

Other formats
- [Imp] <js> DSM: Support restart position and 16-bit samples.
- [Imp] <js> DTM: Import global volume.

Misc
- [Fix] <js> Possible crash when calculating song length in patterns with many nested pattern loops.

Third-Party Libraries
- [Imp] Update libvorbis (v1.3.6) and UnRAR (v5.6.2)


v1.27.06.00 (11 March 2018, revision 9911)
------------------------------------------
General tab
- [Fix] <js> Undoing a change in number of channels did not update the channel count in the General tab.

Sample tab
- [Fix] <js> Shortcuts with Shift key for Normalize and DC Removal no longer clash with the Shift modifier for applying those actions to all samples.
- [Fix] <js> Fix previewing of notes after replacing a sample with an active sample selection by a shorter sample (http://bugs.openmpt.org/view.php?id=1093).

Instrument tab
- [Imp] <js> DLS / SF2 / SFZ: Set release node for volume envelopes in MPTM format.
- [Fix] <js> SFZ: Do not reject files with <curve> sections and import region_label as sample name.
- [Fix] <js> Allow to the first envelope node to be set as the release node.

Tree view
- [Fix] <js> Crash after removing all patterns (http://bugs.openmpt.org/view.php?id=1091).

Playback
- [Fix] <js> Some filter changes through MIDI macros were not applied if the note volume was set to 0 on the same row.

Other formats
- [Imp] <js> MED: Import "STP" note stop command.
- [Fix] <js> DBM: Key Off and Set Envelope Position were imported incorrectly. High sample offset (E7x) is now supported.
- [Fix] <js> MID: GS drum channel enable and disable messages unconditionally enabled drum channels.

Stream Export
- [Imp] <js> More accurate estimation of export duration for order list selections.
- [Fix] <js> Spin buttons for sequence and order selection export were not enabled correctly.
- [Fix] <js> Correctly estimate song length when the song is played more than once (http://bugs.openmpt.org/view.php?id=1088).

Misc
- [Fix] <jh> Welcome Dialog: FT2 and IT classic keymaps were mixed up.
- [Fix] <js> Bogus error messages were shown when loading the default keymap.
- [Fix] <js> Small memory leak when browsing for folders.
- [Fix] <js> Grey out "Close All" menu item when no documents are open (http://bugs.openmpt.org/view.php?id=1062).

Third-Party Libraries
- [Imp] Update libvorbis (security patches for v1.3.5) and mpg123 (v1.25.10)


v1.27.05.00 (11 February 2018, revision 9643)
---------------------------------------------
Pattern tab
- [Imp] <js> Seeking with sample sync now supports fine volume slides.
- [Mod] <js> Interpolating the note column no longer overwrites existing instrument numbers.
- [Fix] <js> Possible crash when trying to enter notes after deleting all patterns.

Pattern tab::Find/Replace
- [Imp] <js> If no pattern selection is made, pre-fill the Find fields with values from the current pattern cell if they have not been used in a previous search (http://bugs.openmpt.org/view.php?id=1082).
- [Fix] <js> After an unsuccessful search, show the correct search strings when searching for PC events.
- [Fix] <js> When repeating a search for PC events, the previous parameter value was not filled in correctly.
- [Fix] <js> Searching for specific plugin parameter values did not work correctly.
- [Fix] <js> Searching for PC events sometimes found normal events and vice versa.

Sample tab
- [Imp] <js> Add drop-down menu for saving all samples.
- [Fix] <js> Upsampling a sample selection did not scale the new selection correctly if its end exceeded the old sample length (tx Xemogasa).

Instrument tab
- [Imp] <js> Add drop-down menu for saving all instruments.

Comments tab
- [Fix] <js> Soft tabs did not have the correct size most of the time (http://bugs.openmpt.org/view.php?id=1083).

Tree view
- [Mod] <js> Do not enforce dragged-over items to be completely visible when using drag and drop (tx sincx).
- [Fix] <js> Duplicating or inserting instruments or samples did not refresh the pattern view properly.
- [Fix] <js> Even after removing all patterns, they were still visible.

Other formats
- [Fix] <js> IMF: Filter cutoff was upside down.
- [Fix] <js> MED: Correctly import patterns with less channels than the maximum used amount (http://bugs.openmpt.org/view.php?id=1036).
- [Fix] <js> STM: More accurate tempo calculation and better support for old format versions.
- [Fix] <js> Possible small memory leaks and crashes with malformed STP files.

Misc
- [Fix] <js> Loading the default keyboard configuration didn't load all default keys since OpenMPT 1.27.01.00, causing issues such as making instrument number entry with the regular number keys impossible.
- [Fix] <js> More accurate song length calculation for pattern loops that have no start command (SB0).


v1.27.04.00 (28 January 2018, revision 9537)
--------------------------------------------
Pattern tab
- [Fix] <js> Shrinking a selection did not work as intended when merging an effect command for the second row of two merged rows.
- [Fix] <js> It was possible to interpolate columns even if pattern editing was disabled.

Sample tab
- [Imp] <js> When dropping a sample with no filename from another module, copy the module name to the filename field instead.
- [Fix] <js> Dropping a sample from another module did not adjust its parameters to the new module format.
- [Fix] <js> When reading an ITI file as a sample, the middle-C sample was not used as intended in ITIs written with old versions of Schism Tracker.

Instrument tab
- [New] <js> SFZ: Support loop_crossfade opcode for creating crossfaded loops when importing samples.
- [Fix] <js> With extremely long envelopes (>= 46300 ticks), the closest envelope point to the cursor was not computed correctly, leading to some mouse actions not working on the intended envelope node.

MPTM::Custom Tuning
- [Fix] <jh> SCL: Do not replace ISO 8859-1 characters with space when writing the name.

XM
- [Fix] <js> E60 loop bug was not considered in song length calucation.

MOD
- [New] <js> Support MOD files from the Inconexia demo by Iguana.
- [Mod] <jh & js> Tighten STK and MOD file rejection heuristics.

Other formats
- [Fix] <js> J2B: Ignore frequency limits from file header. Fixes Medivo.j2b, broken since OpenMPT 1.26.
- [Fix] <js> STM: Last character of sample name was missing.

Stream Export
- [Fix] <js> Vorbis: Do not show ABR bitrates that are not supported (http://bugs.openmpt.org/view.php?id=1074).

Misc
- [Fix] <js> The total song length was sometimes estimated as "0mn60s" instead of "1mn00s" or similar.

Bundled plugins
- [Fix] <js> LFO Plugin: Closing the plugin editor while the pattern editor was open could lead to the LFO waveform being changed unintentionally.
- [Fix] <js> ParamEq: Center frequency should be capped at a third of the sampling rate, not half.


v1.27.03.00 (17 December 2017, revision 9370)
---------------------------------------------
General tab
- [Imp] <js> Always ensure that tempo tapping is done with a high-resolution timer. This may improve tapping accuracy if no module is playing.
- [Fix] <js> Restart position spinner was sometimes unavailable after deleting orders (http://bugs.openmpt.org/view.php?id=1056).
- [Fix] <js> Update channel plugin lists when inserting or moving plugins (http://bugs.openmpt.org/view.php?id=1058).

Pattern tab
- [Fix] <js> Effect visualizer: Dropdown lists were not DPI-aware.

Playback
- [Fix] <js> Volume envelopes of previewed notes in pattern or instrument editor were not volume-ramped correctly, causing audible clicks.

IT
- [Fix] <js> Fix broken volume envelopes with negative values as found in breakdwn.it by Elysis.

Stream Export
- [Fix] <jh> RAW encoder was set as the default encoder by mistake since OpenMPT 1.27.01.00.

Misc
- [Fix] <js> Save As dialogs changed the working directory, preventing removable media from being ejected after saving to such drive (http://bugs.openmpt.org/view.php?id=1060).
- [Fix] <js> High-resolution timers were not disabled when playback was stopped, possibly leading to unintentional increased power consumption.
- [Fix] <js> Allow numbers with trailing newlines to be pasted into decimal and signed numer edit fields (http://bugs.openmpt.org/view.php?id=1055).
- [Fix] <js> Example pattern data was not displayed correctly in the manual.
- [Fix] <js> Autosave was broken in OpenMPT 1.27.02.00.

Third-Party Libraries
- [Imp] Update libopusenc (v0.1.1), mpg123 (v1.25.8), ogg (v1.3.3), opusfile (v0.10).


v1.27.02.00 (4 November 2017, revision 9221)
--------------------------------------------
Pattern tab
- [Imp] <js> Provide tooltips for order list items to see their position (e.g. for creating a pattern jump target) and pattern name.
- [Imp] <js> Clipboad Manager is now resizable.
- [Fix] <js> Switching between normal and "extended" effects (Exy/Sxy) could confuse the parameter that was being searched for.

Sample tab
- [Fix] <js> Setting loops through the context menu did not create an undo point.

IT::Compatible Playback Mode
- [Fix] <js> In Compatible Gxx mode, allow sample changes next to a tone portamento effect if a previous sample has already stopped playing (fixes livingston_-_booger_4.it).

MOD
- [Fix] <js> Slides and delayed notes are executed on every repetition of a row with row delay (fixes "ode to protracker", http://bugs.openmpt.org/view.php?id=1053).

Other formats
- [Fix] <js> MID import: Take XG / GS drum channel setup into account for deciding whether to import note-offs.

Stream Export
- [New] <js> Can now choose which sequences to export (http://bugs.openmpt.org/view.php?id=33).
- [Reg] <jh> Remove the rather useless export file size limitation.

Misc
- [Imp] <js> Better support for opening files with very long path names via DDE.
- [Fix] <js> Possible crash when closing a currently playing module with lots of speed changes.
- [Fix] <jh> On Wine, keyboard input was not possible in some dialogs (http://bugs.openmpt.org/view.php?id=1037).

Third-Party Libraries
- [Imp] Update mpg123 (v1.25.7)


v1.27.01.00 (27 September 2017, revision 9000)
----------------------------------------------
General tab
- [Imp] <js> Indicate whether a plugin is bridged (http://bugs.openmpt.org/view.php?id=904).

Pattern tab
- [New] <js> Allow locking playback to a pattern selection through context menu or shortcut (http://forum.openmpt.org/index.php?topic=5720.0).
- [New] <js> Added option "Play notes when transposing" which previews the transposed note if the pattern selection only spans one pattern cell (tx Kab).
- [New] <js> New shortcut "Apply current instrument to existing only". Unlike "Apply current instrument", this does not affect notes without instrument numbers. Can also be found in "Change Instrument" context sub-menu.
- [New] <js> New shortcut "Transpose Custom (Quick)", which applies the previously used custom transpose amount if possible, or shows the transpose dialog otherwise (http://bugs.openmpt.org/view.php?id=947).
- [New] <js> New shortcuts "Jump to previous / next entry in column" can be used to quickly jump to the next non-empty entry in the currently selected note, instrument, etc. column.
- [New] <js> VU meters are now also shown for instrument plugins. Plugin VU meters can have their own colours defined in the Display options (http://forum.openmpt.org/index.php?topic=2006.0).
- [New] <js> Can now fade in from or fade out to arbitrary values other than 0% (http://bugs.openmpt.org/view.php?id=48).
- [New] <js> Pattern Properties: Can now add and remove rows at the beginning of the pattern (http://bugs.openmpt.org/view.php?id=280).
- [New] <js> Pasting multiple patterns without inserting new patterns is now possible when using Mix Paste and Paste Flood. Note: Overflow Paste has to be enabled to continue pasting past the current pattern's end (http://bugs.openmpt.org/view.php?id=812).
- [New] <js> Add "Select Column" which really only just selects the current column. Default: Ctrl+Shift+L.
- [New] <js> Show selection size in status bar.
- [New] <js> Added option to disable follow song on click (http://bugs.openmpt.org/view.php?id=667).
- [New] <js> Hidden setting "Pattern Editor.FontDot" can now be used to replace the empty cell placeholder character in custom pattern fonts (tx daXX).
- [New] <js> An accessibility description of the current pattern cell is now provideded for screen readers. The description format can be customized through the setting "Pattern Editor.AccessibilityFormat".
- [Imp] <js> Seeking with sample sync now also keeps track of pingpong-looped samples.
- [Imp] <js> Overwriting a MIDI macro with a PC event automatically converts the macro parameter.
- [Imp] <js> When configuring a pattern's tempo swing settings, the "Use Global Settings" button can now be used to copy the default swing settings to this pattern.
- [Imp] <js> Seeking now updates the vibrato / tremolo / panbrello position.
- [Imp] <js> Show pattern location of undo / redo action in menu entries.
- [Mod] <js> Rename old "Select Column" to "Select Channel".
- [Mod] <js> "Maintain sample sync on seek" is now enabled by default on new installations.
- [Fix] <js> Recording MIDI macros over existing PC events resulted in incorrect pattern data.
- [Fix] <js> Various order editing features (e.g. drag & drop) did not always work correctly when extending the sequence past the 256th order item.
- [Fix] <js> When pasting multiple patterns, patterns with names containing a "|" were not pasted correctly.

Sample tab
- [New] <jh & js> Can now import 64-bit PCM WAV and AIFF samples.
- [New] <js> Can now fade in from or fade out to arbitrary levels other than 0% (http://bugs.openmpt.org/view.php?id=48).
- [New] <js> Can now change the stereo width of a sample.
- [New] <js> Show selection length in beats (based on current tempo).
- [Imp] <js> Improved resampling accuracy when using the built-in resamplers.
- [Imp] <js> Directly apply global volume changes to playing channels.
- [Imp] <js> Directly update the sample rate of playing channels after resampling (only IT / MPTM / S3M).
- [Imp] <jh> mpg123 is now shipped with OpenMPT, so MP3 sample import is now supported out of the box on all systems.
- [Imp] <js> Remember previously used values when adding silence or resizing samples (http://bugs.openmpt.org/view.php?id=965).
- [Imp] <js> If not bound to a shortcut, the Application key opens the context menu.
- [Imp] <js> Can now resize sample in milliseconds instead of samples.
- [Imp] <js> Can now display cursor position in hex (http://bugs.openmpt.org/view.php?id=963).
- [Mod] <js> For samples whose path is known, offer this path when saving them rather than a name based on the possibly incomplete filename field.
- [Fix] <js> Small noise bursts when previewing sample or instrument after module was paused (http://bugs.openmpt.org/view.php?id=941).

Instrument tab
- [New] <js> Undo / Redo for instruments (http://bugs.openmpt.org/view.php?id=126).
- [New] <js> Can now import SFZ instruments. A list of supported opcodes can be found in the manual.
- [New] <js> Allow saving all instruments at once by shift-clicking the save button.
- [New] <js> An accessibility description of the currently selected envelope point is now provideded for screen readers.
- [Imp] <js> Directly apply global volume changes to playing channels.
- [Imp] <js> Indicate whether a plugin is bridged (http://bugs.openmpt.org/view.php?id=904).
- [Imp] <js> If a control is disabled, show in tooltip text why this is the case.
- [Imp] <js> Improve tuning accuracy in PAT instruments.
- [Imp] <js> If not bound to a shortcut, the Application key opens the context menu.
- [Imp] <js> Can now display cursor position in hex (http://bugs.openmpt.org/view.php?id=963).
- [Reg] <js> No longer allow per-instrument resampling to be used in IT and XM files. Legacy modules are not affected.

Comments tab
- [Imp] <js> The Tab key can now be used to insert soft tabs (http://bugs.openmpt.org/view.php?id=148).
- [Imp] <jh> Use the full available space for the comments text edit control for MPTM and XM files. For IT, limit the displayed width to 75 chars (http://bugs.openmpt.org/view.php?id=148).
- [Fix] <jh> Do not force raster font and character width for the comment font. This results in unintended bad font rendering, especially on Wine (http://bugs.openmpt.org/view.php?id=873).

Tree view
- [New] <js> New shortcut: Switch to instrument library (and back to module), default: Alt+I
- [New] <js> Ctrl+Shift+Enter loads the selected instrument or sample into an unused slot.
- [New] <js> Can now preview samples and instruments using MIDI input as well. Shortcuts bound to MIDI CCs also work here now.
- [Imp] <jh> Add new hidden option Display.FSUpdateInterval (default 500ms) to rate-limit instrument library updates.
- [Imp] <js> If not bound to a shortcut, the Application key opens the context menu (http://bugs.openmpt.org/view.php?id=964).
- [Imp] <js> Show modules with Amiga-style file extensions (i.e. mod.songname, http://bugs.openmpt.org/view.php?id=640).
- [Imp] <js> Refreshing the instrument browser retains the previously selected file / folder.

VST / DMO Plugins
- [New] <js> Add hidden setting "VST Plugins.EnableMidiMappingInEditor" to no longer open the MIDI Mapper when shift-clicking in plugin editors (http://forum.openmpt.org/index.php?topic=5794.0).
- [Imp] <js> The default DMO effects are now also available on Windows Server and Wine without any additional downloads (http://bugs.openmpt.org/view.php?id=862).
- [Fix] <js> Plugins sharing the same filename no longer cause OpenMPT to rescan them on every startup (http://forum.openmpt.org/index.php?topic=5719.0). Note: OpenMPT will have to rescan all plugins once on first launch of this version.
- [Fix] <js> In some situations, the "Plugin has previously crashed" notification could appear on every startup until a new plugin was eventually registered.

VST::Plugin Bridge
- [Imp] <js> Cache effGetTailSize opcode for improved performance.

Playback
- [New] <js> Added the Amiga Resampler, which emulates how the Amiga's soundchip (Paula) works by means of BLEP synthesis. Can be enabled from the Mixer options only for Amiga-type modules (http://bugs.openmpt.org/view.php?id=803).
- [Imp] <js> Increased accuracy of the sample position and sample rate to drift less when playing very long samples.
- [Imp] <js> All built-in DSPs (Bass Extension, Reverb, Surround) are now also available in 64-bit OpenMPT builds. Disclaimer: These DSPs have a rather low quality and should only be used for legacy projects. Plugins should be used instead to improve the sound of your modules.
- [Imp] <js> Rearranging, adding and removing channels no longer stops active NNA channels.
- [Fix] <js> For very high sample rates (starting at 88 kHz), low filter cutoff frequencies resulted in silent filter output.
- [Fix] <js> There were some tiny differences between portamento commands that were supposed to be identical (e.g. FF2 and FE8).
- [Fix] <js> If the order list was longer than 256 items and there was a pattern break effect without a position jump on the last pattern of the sequence, it did not jump to the correct restart order.

MPTM
- [Fix] <jh> It was not possible to read custom tunings written by OpenMPT 1.17.02.46 to 1.17.02.48 since OpenMPT 1.22.

MPTM::Custom Tuning
- [New] <jh> Added Scala .scl export.
- [Imp] <jh> Cleaned up tuning dialog.
- [Imp] <jh> Show cents in addition to ratios in tuning dialog.
- [Imp] <js> Allow decimal point as specified by the system locale to be used for entering tuning ratios.
- [Mod] <jh> Simplified tuning management. All tunings are now tune-specific tunings (i.e. embedded in MPTM files) - built-in, local and sandbox tunings are gone. Used built-in or local tunings are converted into tune-specific tunings during loading and will be written to the MPTM file when saving. The user is notified when this change is applied. Local tunings are loading from the local_tunings.tc file in this case.
- [Fix] <jh> Scala .scl import was broken (http://forum.openmpt.org/index.php?topic=3717.0).
- [Fix] <jh> Support for loading very early tunings (pre-1.17.02.46).
- [Reg] <jh> Local tunings do not exist anymore. Contents of local_tunings.tc are unpacked to individual tuning files on first start.

IT
- [Fix] <js> Having a vibrato command in both the volume and effect column applies vibrato twice. The volume column depth parameter takes precedence if it is not 0.

IT::Compatible Playback Mode
- [Fix] <js> Do not process auto-vibrato at all if the rate (speed) is 0. Previously, the fade-in (sweep) was still applied and audible with vibrato waveforms other than sine.
- [Fix] <js> A lone instrument number should only reset sample properties to those of the corresponding sample in instrument mode.
- [Fix] <js> Reset portamento when using a lone instrument number to retrigger a stopped note.
- [Fix] <js> If the start row of a pattern loop is past the end of the current pattern (e.g. when continued from a previous pattern due to missing SB0 effect), advance to the next pattern (http://bugs.openmpt.org/view.php?id=913).

XM
- [Fix] <js> Having a vibrato command in both the volume and effect column doubles the vibrato speed. The effect column depth parameter takes precedence if it is not 0.

XM::Compatible Playback Mode
- [Fix] <js> A non-delayed note-off for an instrument with no volume envelope enables fade-out, which can be heard when a volume command is applied afterwards.
- [Fix] <js> Separate portamento up and down effect memory.
- [Fix] <js> Just like in IT / S3M, note delays that are on the same row as a pattern delay retrigger the note on every repetition.
- [Fix] <js> Note-Off + Instrument Number + Retrigger did not fade out the note correctly.
- [Fix] <js> Reset envelope key-off status with instrument number.
- [Fix] <js> Properly emulate FT2's broken "ramp down" tremolo waveform (E71).
- [Fix] <js> More accurate emulation of arpeggio limits to "fix" some arpeggios in dubmood's "Mario Airlines".

S3M
- [Fix] <js> A portamento immediately following an arpeggio continues at the last arpeggiated note.
- [Fix] <js> Do not advance tremolo position on first tick.

MOD
- [New] <js> Added support for MOD command E0x (Set LED filter). Only supported when using the Amiga Resampler.
- [Imp] <js> Update heuristic for disabling panning commands to fix constant_romance.mod by chromag.
- [Fix] <js> Base arpeggio on portamento position rather than initial note (http://bugs.openmpt.org/view.php?id=902).

Other formats
- [New] <da & js> Can now read Soundtracker Pro II (STP) modules (http://bugs.openmpt.org/view.php?id=755).
- [New] <js> Can now read Digital Tracker / Digital Home Studio (DTM) modules.
- [New] <js> Support for synthesized instruments in Startrekker modules. Instrument files must have the same name as the module itself, followed by either ".nt" or ".as".
- [Imp] <js> Greatly improved MIDI import. New features include support for user-definable quantization level, XG and GS drum kits, sustain pedal, loop points, channel / master transpose, type 2 (multi-song) MIDI files, and many others (http://bugs.openmpt.org/view.php?id=124).
- [Imp] <js> Allow samples in DMF, GDM and MDL files to not have a default volume (http://bugs.openmpt.org/view.php?id=850).
- [Imp] <js> Tighten heuristics for rejecting invalid 669 files.
- [Mod] <jh> MO3: mpg123 is now shipped with OpenMPT, so unmo3.dll support has been removed. The internal MO3 decoder is always used.
- [Fix] <js> Possible crash with some valid FAR files.

Stream Export
- [New] <jh> Added raw PCM and floating-point export.
- [Imp] <jh> Opus export is now also possible at sample rates that are not native to the Opus codec. They are automatically resampled.
- [Reg] <jh> Removed long-deprecated BladeEnc and Lame_Enc MP3 encoder support. MP3 export via libmp3lame (openmpt-lame.dll, libmp3lame.dll or similar), as well as MP3 export via ACM codecs (lame_acm, Fraunhofer, or others) is still supported.

Module cleanup
- [Imp] <js> Unused channel removal is now more aggressive and removes any channels that contain no notes, no PC events and no global commands (so a channel that contains only Note Cuts or only portamento commands will be removed).
- [Imp] <js> Rearranging patterns no longer clears the pattern undo.

Audio I/O
- [New] <jh> Experimental direct integration with PulseAudio and ALSA when running OpenMPT through Wine (http://forum.openmpt.org/index.php?topic=5792.0).
- [New] <jh> WASAPI's internal resampler can now be used for arbitrary sample rates. WASAPI is now the default sound device on Windows 7 and later.
- [Mod] <jh> For WASAPI devices, use the high latency provided by PortAudio as the default latency. The low one is way too low.
- [Fix] <jh> Importing sound device settings from OpenMPT 1.22 and older was broken.

Misc
- [New] <js> MIDI Export: Added option to not export an instrument at all (available from the MIDI channel dropdown).
- [New] <js> Added hidden setting "Misc.SaveChannelMuteStatus" (default true), which can be used to avoid channel mute status to be saved in S3M, IT and MPTM files (http://forum.openmpt.org/index.php?topic=5736.0).
- [New] <js> Channel Manager: Channels can be renamed by middle-clicking them (applies instantly).
- [New] <js> "Friendly names" can be set for MIDI input / output ports. By adding a "Device Name=Friendly Name" pair to the [MIDI Input Ports] or [MIDI Output Ports] configuration sections respectively, the real device name gets substituted by the user-supplied name in the user interface (http://bugs.openmpt.org/view.php?id=909).
- [New] <js> MIDI Mapping: Support for 14-bit MIDI controllers. Combinations of CC 0...31 and CC 32...63 are now recognized as double-precision MIDI messages (this feature was advertised in OpenMPT 1.25 as experimental but never worked).
- [New] <js> New shortcut for editing global tempo swing settings (http://bugs.openmpt.org/view.php?id=864).
- [Imp] <jh & js> OpenMPT's file handling is now fully unicode-aware (http://bugs.openmpt.org/view.php?id=164).
- [Imp] <jh> Rather than placing them in the executable directory, LAME DLLs can (and should) now be placed in %APPDATA%\OpenMPT\Components\x86\ for 32-bit builds and %APPDATA%\OpenMPT\Components\x64\ for 64-bit builds respectively to avoid problems with VirtualStore and non-privileged Windows user accounts.
- [Imp] <js> Show the progress of stream and MIDI export in the task bar on Windows 7 and later.
- [Imp] <js> Increase waveform limit in DLS / SF2 files from 16383 to 65535.
- [Imp] <js> Added a great number of user-contributed colour schemes.
- [Imp] <js> Main toolbar and instrument editor grid are now updated more frequently when there are tempo changes (http://bugs.openmpt.org/view.php?id=1025).
- [Imp] <jh> Crash Handler: Added command line option /noCrashHandler which disables ALL custom crash handling.
- [Imp] <jh> Crash Handler: Added command line option /DebugCrashHandler for debugging purposes.
- [Mod] <jh> No longer show the system's crash handler after OpenMPT's own crash report. The old behaviour can be restored by enabling the hidden option Debug.DelegateToWindowsHandler.
- [Mod] <js> In keyboard mapping files, layout-independent scan codes are now stored for note keys, so that notes remain in the correct place regardless whether the current keyboard layout is QWERTY, QWERTZ, AZERTY, Dvorak or anything else. The default key maps are now also layout-independent.
- [Mod] <js> Default shortcuts are now only imported into custom key maps if there is no other shortcut assigned to the same command yet.
- [Mod] <js> MIDI Macro Configuration: Remove checkbox for embedding MIDI macros. They are embedded automatically when required.
- [Fix] <js> Modifying channels outside the channel editor (renaming, moving, etc.) did not update the channel manager instantly.
- [Fix] <js> SF2: Sustain level was not imported.
- [Fix] <js> The "Panic" shortcut never worked (tx isdera).
- [Reg] <jh> The minimum system requirements changed. OpenMPT now requires at least Windows XP or Wine 1.6. Older systems (Windows 98 SE, Windows ME, Windows 2000, as well as Wine 1.0 through 1.5) are no longer supported. OpenMPT 1.27 also drops support for some very old CPUs (http://forum.openmpt.org/index.php?topic=5708).

Bundled plugins
- [New] <js> Added the LFO Plugin, which can automate other plugins' parameters or MIDI CCs.
- [New] <js> MIDI Input / Output Plugin: Added possibility to not send timing information (http://bugs.openmpt.org/view.php?id=982).
- [Imp] <js> MIDI Input / Output Plugin: It is now possible to specify a custom output latency. This value can also be negative, up to the duration of OpenMPT's own output latency.
- [Fix] <js> MIDI Input / Output Plugin: Sporadic freezes and crashes (http://bugs.openmpt.org/view.php?id=843).
- [Fix] <js> DigiBooster Pro Echo DSP did not empty its delay lines when jumping around in the module.

Third-Party Libraries
- [Imp] Update opus (v1.2.1), SoundTouch (v2.0), UnRAR (v5.5.8).

Installer/release package
- [New] A new Cyrillic key map provided by Fler0301, a UK keymap resembling the Impulse Tracker shortcuts by chocosaurus, and updated Norwegian keymap by Rakib and US keymap by LPChip.


v1.26.14.00 (14 August 2017, revision 8772)
-------------------------------------------
Pattern tab
- [Fix] <js> Changing the octave of notes below middle-C was broken in OpenMPT 1.26.13.00.
- [Fix] <js> Resizing a pattern did not properly redraw the row numbers in other pattern windows.


v1.26.13.00 (12 August 2017, revision 8759)
-------------------------------------------
Pattern tab
- [New] <jh> Add hidden setting "Pattern Editor.AlwaysDrawWholePatternOnScrollSlow" for graphics drivers with scrolling issues (http://bugs.openmpt.org/view.php?id=1003).
- [Imp] <js> Increasing / decreasing an order list item now skips non-existing patterns.
- [Fix] <js> Crash when trying to change the octave of a note associated with a general tuning (http://bugs.openmpt.org/view.php?id=1004).
- [Fix] <js> Changing the octave did not work as intended with all tuning group sizes.
- [Fix] <js> Amplification now works correctly for plugin-based instruments with a global volume other than 64 (http://bugs.openmpt.org/view.php?id=1002).
- [Fix] <js> Properly erase playback position marker in order list after right-clicking another order item.

Sample tab
- [Fix] <jh> Possible crash when loading too big Vorbis or Opus samples.
- [Fix] <js> Editing various sample properties did not create an undo point.

Instrument tab
- [New] <js> Envelope points can now also be inserted by double-clicking.
- [Imp] <js> Can now use Home / End keys for sample map navigation (http://bugs.openmpt.org/view.php?id=984).
- [Fix] <js> Drag & Dropping a soundfont instrument did not update the sample editor for replaced samples.
- [Fix] <js> Possible crash with some keyboard shortcuts if there was no envelope (tx Jiyoshi).

Tree view
- [Mod] <js> Switching to another module or updating the module's sample volume now updates sample preview volume on every note, not just when previewing a new sample or instrument.

Mod Conversion
- [Fix] <js> Converting to MOD could crash if the first order list item was not a valid pattern (http://bugs.openmpt.org/view.php?id=996).
- [Fix] <js> Removing unsupported patterns (+++ / --- in MOD / XM) did not work as intended at all.

VST / DMO Plugins
- [Fix] <js> Mark module as modified if renaming a preset through the plugin editor was successful.

VST::Plugin Bridge
- [Imp] <js> Speed up filling of parameter lists.

Playback
- [Fix] <js> Loops shorter than four sample points at the end of a sample could cause the sample data before the loop to become corrupted.

MPTM::Custom Tuning
- [Fix] <js> Transpositions in the instrument note map were not applied correctly when the "Use triggered note rather than translated note for PPS and DNA note check" compatibility setting was enabled.
- [Fix] <jh> Saving single tuning .tun files actually resulted in a tuning collection being saved, which prevented the tuning from being loaded unless its file extension was changed to .tc.
- [Fix] <jh> Prevent changing the type of an existing tuning to General.

MOD
- [Fix] <js> The ProTracker note delay quirk should not retrigger already stopped samples (fixes "Subi loses the Cops" by Subi, tx h0ffman).
- [Fix] <js> Portamento between already stopped sample and another sample kept playing the old sample (fixes "anarchy-main" by Jester).
- [Fix] <js> ProTracker quirk: If there is a note with an out-of-range note delay, it is played on the next row (with an instant portamento), unless there is a new note on that row.
- [Fix] <js> ProTracker quirk: Apply tempo changes after the first tick of the row.

Other formats
- [Fix] <js> Possible crashes with malformed PLM and PSM files.


v1.26.12.00 (2 July 2017, revision 8412)
----------------------------------------
General tab
- [Fix] <js> Cloning effect plugins no longer creates an instrument for them (http://bugs.openmpt.org/view.php?id=970).

Pattern tab
- [Imp] <js> Right-clicking outside of the pattern shows a context menu for adding more channels.
- [Fix] <js> It was possible to use (but not save) l / r / u volume commands in MPTM and e / f volume commands in XM (http://bugs.openmpt.org/view.php?id=975).
- [Fix] <js> Most pattern editing functionality in pattern 2 and higher was broken after deleting pattern 1.

Pattern tab::Find/Replace
- [Fix] <js> Replacing with an extended command (Exx / Sxx) overwrote the parameter to be found.
- [Fix] <js> When re-opening the dialog, the replace parameter was not restored correctly for extended commands.

Sample tab
- [Mod] <js> Lifted the sample limit in sample mode from 199 to 255 (http://bugs.openmpt.org/view.php?id=969).

Mod Conversion
- [Imp] <js> When converting note cuts to XM, rewrite them as a v00 command if the effect column is already occupied.

VST::Specific Plugin Fixes
- [Fix] <js> Some resizable plugin GUIs (e.g. Roland D-50) were not resized correctly.

MOD
- [Fix] <js> Use M.K. signature instead of M!K! when writing exactly 64 patterns (http://bugs.openmpt.org/view.php?id=958).

Other formats
- [Imp] <js> PT36: Enable VBlank timing as specified in file and read song comment (http://bugs.openmpt.org/view.php?id=962).
- [Imp] <js> STK: Loosen heuristics to allow a few more semi-damaged files to play.
- [Fix] <js> MT2: If there were instruments with both sample and plugin assignments, sample data was not read correctly.

Module cleanup
- [Fix] <js> Remove Duplicates: Patterns with identical contents but different tempo swing settings were merged.

Third-Party Libraries
- [Imp] Update opus (v1.1.5)


v1.26.11.00 (21 May 2017, revision 8187)
----------------------------------------
Pattern tab
- [Imp] <js> Show a warning when duplicating patterns exceeds the pattern limit of the format.
- [Fix] <js> Channel panning was not always updated from instruments / samples when seeking (tx oerg866).
- [Fix] <js> Out-of-range global volume was not applied correctly in some formats when seeking.

Instrument tab
- [Fix] <js> Convert auto-vibrato sweep when saving XI from MPTM / IT files more accurately.

Tree view
- [Imp] <js> When descending into a directory that contains nothing but one subdirectory, automatically descend further down into that directory.
- [Fix] <js> Deleting patterns was not undo-able.

VST / DMO Plugins
- [Fix] <js> If a plugin's unique ID has changed (e.g. by replacing the plugin DLL with that of another plugin), the old ID was still written to module files.

VST::Specific Plugin Fixes
- [Fix] <js> Crash when trying to use SynthMaster 2.8.
- [Fix] <js> Plugin data of some newer JUCE-based plugins (e.g. latest TAL-Filter-2 version) was not saved correctly inside module files (http://bugs.openmpt.org/view.php?id=946).

Playback
- [Fix] <js> Possible crash when using Duplicate Note Actions with instruments that are associated to plugins (http://bugs.openmpt.org/view.php?id=951).

IT
- [Imp] <js> Properly identify files made with OpenMPT 1.17.02.20-25, CheeseTracker, UNMO3 and some unknown XM conversion tool.
- [Imp] <js> Work-around for reading MIDI macros and plugin settings in some malformed IT files written by old UNMO3 versions.

Installer/release package
- [New] <js> Register OpenMPT as a default application.


v1.26.10.00 (23 April 2017, revision 8041)
------------------------------------------
Pattern tab
- [Fix] <js> "Continue song as soon as MIDI notes are being received" also restarted playback from cursor position if "follow song" was disabled.

Sample tab
- [Imp] <js> Show tooltip explanations for auto-vibrato parameters.

Mod Conversion
- [Imp] <js> Convert auto-vibrato sweep between IT / MPTM and XM more accurately.

Other formats
- [Imp] <js> STM: Add support for "WUZAMOD!" magic bytes and allow some slightly malformed STM files to load which were previously rejected (putup10.stm, putup11.stm) while tightening some other heuristics.
- [Imp] <js> Tighten heuristics for rejecting invalid SoundTracker files.
- [Fix] <js> Detect whether "hidden" patterns in the order list of SoundTracker modules should be taken into account or not. Fixes wolf1.mod, wolf3.mod and jean_baudlot_-_bad_dudes_vs_dragonninja-dragonf.mod.
- [Fix] <js> MO3: Clear MIDI macros for files that were originally saved with Impulse Tracker 1.0 and Scream Tracker prior to version 3.20.

Misc
- [Imp] <jh> About Dialog: Show the real CPU features in addition to the enabled ones.
- [Imp] <js> Use icons with alpha transparency on Wine 1.6 and newer.
- [Fix] <js> Appending a sample-based module to an instrument-based module did not create instruments for the newly added samples.
- [Fix] <js> Merging sequences could sometimes fail when having to duplicate patterns.
- [Fix] <js> Fix icons with broken transparency on some systems.
- [Fix] <js> MIDI Macro Dialog: When viewing controllable plugin parameters, non-existing parameters could show up.
- [Fix] <jh> A bogus warning was shown when launching with /noAssembly command line switch.


v1.26.09.00 (19 March 2017, revision 7821)
------------------------------------------
Pattern tab
- [Fix] <js> Seeking with sample sync did not apply PTM reverse offset effect and the volume slide part of combined volume slide + vibrato commands.
- [Fix] <js> "Copy Orders" shortcut never worked (http://forum.openmpt.org/index.php?topic=5787.0).
- [Fix] <js> Crash when trying to open effect visualizer for a module with no patterns.
- [Fix] <js> When "Loop Pattern" is active, position jump commands no longer jump to the target pattern but restart the current pattern (http://bugs.openmpt.org/view.php?id=15).

Sample tab
- [Fix] <js> 16SV samples created by Fasttracker 2 / Awave were not loaded correctly.

Tree view
- [New] <js> Added "Go to Instrument / Sample directory" context menu entries to file browser to return to the default directories.

Mod Conversion
- [Fix] <js> F20 command was not converted correctly from MOD to S3M / IT / MPTM.

VST / DMO Plugins
- [Fix] <js> Duplicate Note Action checks did not work for instrument plugins with a transposed note map.
- [Fix] <js> Changing to another instrument after an arpeggio did not always stop the last plugin note (http://bugs.openmpt.org/view.php?id=916).

VST::Specific Plugin Fixes
- [Fix] <js> MIDI notes sent by randomid VST by Insert Piz Here were not being received (http://forum.openmpt.org/index.php?topic=5791.0).

XM
- [Imp] <js> Improve detection of some XM files made with ModPlug Tracker that make use of extended filter range.

XM::Compatible Playback Mode
- [Fix] <js> An instrument-less note following a note with an out-of-range offset effect was played at volume 0 (tx eightbitbubsy).

MOD
- [Fix] <js> Sample 15 in "Crew Generation" by Necros was not looped correctly.

Other formats
- [Imp] <da> SFX: Improved import of slide commands (http://bugs.openmpt.org/view.php?id=921).
- [Imp] <js> PLM: Improved import of percentage offset.
- [Fix] <js> Speed up opening of some malformed ITP and truncated AMS files.

Misc
- [Imp] <js> Visually indicate whether playback was stopped or paused by resetting the elapsed time in the status bar to 0:00:00 when stopping.
- [Fix] <jh> Guard against DLL pre-loading attacks when loading dependencies of mpg123 and unmo3 third-party libraries.


v1.26.08.00 (5 February 2017, revision 7557)
--------------------------------------------
General tab
- [Fix] <js> When modifying the number of channels from the pattern editor, the upper part of the General tab was not updated (http://bugs.openmpt.org/view.php?id=903).
- [Fix] <js> Moving, inserting and cloning plugins did not update the tree view completely.

Pattern tab
- [Mod] <js> Do not wrap around the spin wheel for the edit spacing box from 0 to 64.
- [Fix] <js> Correctly center active row when switching to a pattern that has less rows than the previously edited pattern (http://bugs.openmpt.org/view.php?id=899).
- [Fix] <js> Moving channels did not update the channel names in other windows.
- [Fix] <js> The "switch to order list" shortcut also toggled overflow paste.
- [Fix] <js> Quick Channel Settings: Entering a panning value manually did not reset the surround setting visually.
- [Fix] <js> Trying to play a part of a pattern that is not part of the regular play sequence (e.g. rows after a pattern break) caused the pattern to be played from the first row instead.

Sample tab
- [Imp] <js> Add 1:256 and 1:512 zoom factors.
- [Fix] <js> Show the correct PAL sample rate for MOD files when hovering the finetune field.

Tree view
- [Fix] <js> If a soundfont has more than 16 banks, do not cram items of further banks into the first bank's folder.

Mod Conversion
- [Fix] <js> When converting from IT / MPTM / S3M to MOD and vice versa, samples were slightly detuned (MOD plays with PAL middle-C frequency, but was translated using NTSC middle-C frequency).

VST / DMO Plugins
- [Fix] <js> Plugin Editor: Toggling bypass did not live-update the General tab for all plugins but the first (http://bugs.openmpt.org/view.php?id=911).
- [Fix] <js> Completely disable silence detection for VST plugins, as plugins built with old versions of the JUCE framework falsely claim that they support this feature.

Playback
- [Fix] <js> When performing excessive portamento down in IT linear slide mode with legacy period mode enabled or excessive portamento up with Hertz mode, the channel frequency wrapped around since OpenMPT 1.26.01.00 (fixes https://modarchive.org/module.php?175019).

S3M
- [Fix] <js> Increase maximum sample playback frequency for S3Ms saved with Impulse Tracker and Schism Tracker (http://bugs.openmpt.org/view.php?id=898).

Other formats
- [Fix] <js> Possible hangs with malformed files containing cyclic plugin routings.

Misc
- [Fix] <js> Configuring chords with a relative base note was broken since OpenMPT 1.26.01.00.
- [Fix] <js> Tempo Swing dialog: A swing amount of 100% is now displayed correctly on Wine prior to version 2.0.
- [Fix] <js> When switching between multiple windows of a single module, sample and instrument editors are now receiving playback updates instantly.
- [Fix] <js> SF2: Some stereo sample pairs were mismatched.
- [Fix] <js> Running OpenMPT with a relative path to a module file as a parameter did not work as intended.

Bundled plugins
- [Fix] <js> MIDI Input / Output plugin: Identically-named input and output ports could cause the previous plugin state to not be restored properly.

Third-Party Libraries
- [Imp] Update flac (v1.3.2), opus (v1.1.4), PortAudio (v19.6.0), zlib (v1.2.11).


v1.26.07.00 (20 November 2016, revision 7387)
---------------------------------------------
Pattern tab
- [Mod] <js> Remember channel transpose amount also after closing the tab.
- [Mod] <js> When making an order list selection using the keyboard, do not update the play position.
- [Fix] <js> Note Properties: Changing the plugin of a PC event didn't update the parameter list (tx isdera).
- [Fix] <js> Pattern transitions were executed too early if a pattern loop ended on the last row of a pattern.
- [Fix] <js> Dragging a single pattern with "Follow Song" enabled could modify the dragged pattern selection on pattern transitions.
- [Fix] <js> Duplicating patterns did not apply the original pattern's tempo swing settings.
- [Fix] <js> Tempo swing settings were ignored when setting them to 100% for each row for a specific pattern, even if this differed from the global swing settings.
- [Fix] <js> Pasting a partial PC event over a Z80...ZFF effect did not clear the parameter value properly.

Sample tab
- [Fix] <js> Very rare crash when trying to open sample tab.

Instrument tab
- [Imp] <js> Allow a maximum fadeout value of 32767 in MPTM, like in XM.

Tree view
- [New] <js> Add "Open in Explorer" to instrument library directory context menu.
- [New] <js> Insert key can now be used to insert items, Shift-Insert to duplicate them (http://bugs.openmpt.org/view.php?id=529).
- [Fix] <js> Excessive performance drop when modifying a sample or instrument in a module containing hundreds of samples or instruments.

Mod Conversion
- [Imp] <js> Converting an XM instrument with no volume envelope to IT / MPTM now creates an envelope which instantly cuts the sample on key-off.

Playback
- [Fix] <js> Tremolo on quiet notes was broken in OpenMPT 1.26.06.00 (http://bugs.openmpt.org/view.php?id=888).

S3M
- [Fix] <js> Pattern loops ending on the last row of a pattern were not executed properly (http://bugs.openmpt.org/view.php?id=887).

Other formats
- [Fix] <js> MED: Default 8-channel mode tempo should now be imported correctly.
- [Fix] <js> Possible crashes with malformed ITP and MED files.

Module cleanup
- [Fix] <js> Remove Duplicates: Patterns with identical contents but different time signatures were merged.

Misc
- [Fix] <js> Windows key and other special keys were always intercepted since OpenMPT 1.26.01.00 (http://bugs.openmpt.org/view.php?id=886).

Third-Party Libraries
- [Imp] Update UNMO3 (v2.4.1.2).


v1.26.06.00 (22 October 2016, revision 7297)
--------------------------------------------
Pattern tab
- [Fix] <js> Using overflow paste on the last possible order item overflowed into the beginning of the current pattern.
- [Fix] <js> "Change plugin parameter" only worked if the selection started in the first channel (http://forum.openmpt.org/index.php?topic=5729.0).
- [Fix] <js> Pasting partial PC events could result in invalid parameter numbers or values in patterns.
- [Fix] <js> Duplicating several identical order list items could fail if there were more than 256 order items.

Pattern tab::Find/Replace
- [Fix] <js> Searching for a specific Sxy / Exy parameter didn't bring up the correct parameter when repeatedly opening the Find/Replace dialog.

Sample tab
- [Imp] <js> When reading ITI / XI instruments as samples, prefer reading the sample at middle-C rather than the first sample in the file.
- [Fix] <js> Crossfading did not work if a sample only had a sustain loop.
- [Fix] <js> Adding silence at the beginning of the sample only updated the normal loop points, but not the sustain loop points.

Instrument tab
- [Fix] <js> Allow ITI files saved with old Schism Tracker versions to be loaded.
- [Fix] <js> Saving ITI files for instruments referencing sample slots > 255 made such files unneccessarily incompatible with other trackers.

Tree view
- [Fix] <js> Do not cycle through tree items when keeping keys pressed while a playable item is focussed (http://bugs.openmpt.org/view.php?id=872).

Playback
- [Fix] <js> Even when disabling "loop song", songs with 256 order items or more still looped (http://bugs.openmpt.org/view.php?id=878).

IT
- [Fix] <js> Correctly write MIDI program and bank instrument properties in a way that is also read by other IT-compatible applications.

MOD
- [Fix] <js> Avoid enabling some ProTracker quirks for files most likely created with Scream Tracker 3 (fixes BASIC001.MOD, tx Borg-).
- [Fix] <js> Tremolo effect only had half the intended strength.

Other formats
- [Fix] <js> Crashes with malformed files in various formats.

Module cleanup
- [Mod] <js> "Remove unused channels" will no longer remove channels from 4-channel MODs, as a user may typically want such modules to remain ProTracker-compatible (tx eightbitbubsy).
- [Fix] <js> Possible crash when removing unused plugins.

Misc
- [Imp] <js> Channel Manager: Dragging the mouse over buttons now applies the same action to all hovered buttons rather than toggling the action every time the mouse moves a bit.
- [Imp] <js> Channel Manager: Visual improvements, especially in high-DPI mode.
- [Imp] <js> Various buttons (e.g. pattern editor and sample map) look nicer in high-DPI mode.
- [Imp] <js> DLS: Experimental support for "art2" chunk.
- [Fix] <js> DLS: Embedded soundfonts could not be read in some cases.
- [Fix] <js> SF2: Region coarse-tune was not imported at all.
- [Fix] <js> MIDI Macro dialog is now DPI-aware.
- [Fix] <js> The Plugin Manager window could be placed off-screen, effectively locking the entire GUI (http://forum.openmpt.org/index.php?topic=5738.0).


v1.26.05.00 (3 September 2016, revision 7025)
---------------------------------------------
Pattern tab
- [Imp] <js> Show clamped values (or "undefined", depending on the format) for out-of-range channel / global volume parameters in the status bar (http://bugs.openmpt.org/view.php?id=866).
- [Fix] <js> Seeking with sample sync could behave strangely with portamento-ed pingpong-looped samples.
- [Fix] <js> Data Entry also modified the effect column when it was only supposed to affect other columns.
- [Fix] <js> If the same pattern occurred several times in a row, the previous / next patterns were not drawn correctly.
- [Fix] <js> The Parameter Editor window was redrawn more often than necessary (multiple times per row, for every tick - tx mandrasigma).

Pattern tab::Find/Replace
- [Fix] <js> Repeated searches for extended commands (Sxy / Exy) did not remember the correct pattern commands to search for.

Instrument tab
- [Imp] <js> Improved handling of drum patches in Gravis Patch files.

Tree view
- [Fix] <js> Some soundfont items were not previewed correctly.

Mod Conversion
- [Fix] <js> Correctly translate Lxy / Kxy with fine slide parameter when converting from S3M / IT / MPTM to MOD / XM.

VST::Specific Plugin Fixes
- [Fix] <js> Genny Beta uses parameter values outside the nominal 0...1 range, which broke when loading and saving modules using this plugin. The affected parameters can still not be automated properly, though (the same issue exists in other hosts).

VST::Plugin Bridge
- [Fix] <js> Some mouse actions did not work in bridged editors on some systems, in particular with Windows 10 Anniversary Update (http://forum.openmpt.org/index.php?topic=5703.0).
- [Fix] <js> Toggling the plugin editor could lead to a crash if the bridged editor took very long to initialize.

MOD
- [Fix] <js> Restart position was not read correctly if placed in the last two orders (http://bugs.openmpt.org/view.php?id=867).

Other formats
- [Fix] <js> MIDI Import: A channel 10 drum program change could cause melodic channels using the same program number to turn into drums (http://bugs.openmpt.org/view.php?id=462).
- [Fix] <js> Possible crashes with malformed IT, MED, MPTM, PSM and Startrekker files.

Misc
- [Fix] <js> MIDI Export: Timing precision was drifting badly, leading to notes not being properly aligned to the PPQN.
- [Fix] <js> MIDI Export: Since OpenMPT 1.26.01.00, exporting a file with a plugin in the first slot would lead to a crash when closing the file later.
- [Fix] <js> MIDI Export: Pitch bend depth was not always exported correctly.
- [Fix] <js> SF2: Region fine-tune was not imported at all. Soundfonts should now hopefully be finally in tune!
- [Fix] <js> SF2: Some sample loops were not imported correctly.
- [Fix] <js> It may have been possible that auto save also triggered on unsaved files right after they were loaded.

Bundled plugins
- [Fix] <js> Possible crash in the MIDI Input / Output plugin when a MIDI message could not be sent.


v1.26.04.00 (7 August 2016, revision 6772)
------------------------------------------
Pattern tab
- [New] <js> Can now record MIDI Pitch Wheel changes to pattern as MIDI macros (http://forum.openmpt.org/index.php?topic=1615.0).
- [Imp] <js> Redirect keys entered in the instrument column to the note column if they didn't trigger any action (tx coda).
- [Mod] <js> Switch direction of instrument selection buttons (http://bugs.openmpt.org/view.php?id=841).
- [Fix] <js> Note Properties: Parameter for "fine portamento up" command was not displayed correctly in MOD / XM files.

Sample tab
- [New] <js> Can now mix-paste from clipboard.
- [New] <js> Can now Paste (Insert) instead of just Paste (Replace) as well.
- [New] <js> Can now import Sun Audio (AU / SND) samples.
- [New] <js> Can now import 64-bit float, µ-law and A-law WAV and AIFF samples.
- [Imp] <js> Remember previously used resampler across sessions (http://bugs.openmpt.org/view.php?id=830).
- [Imp] <js> If there is no loop yet, allow setting the loop start via context menu (sample end becomes loop end).
- [Fix] <js> Cue points were not written correctly to FLAC files.

Comments tab
- [Imp] <js> Ctrl+A can now be used for selecting all text (http://bugs.openmpt.org/view.php?id=706).

Mod Conversion
- [Imp] <js> When converting restart positions to pattern commands, ensure that the modified pattern is unique, so that other instances of the pattern remain unaffected of the change.
- [Fix] <js> Since OpenMPT 1.26.01.00, converting to IT / S3M converted the restart position to a pattern jump command, but did not actually remove the restart position property.

VST / DMO Plugins
- [New] <js> Can now rename plugin presets by clicking on the preset name in the editor. Not all plugins support this.
- [Fix] <js> OpenMPT 1.26.01.00 introduced a behaviour change when restoring plugin parameters: If less plugin parameters could be restored from the file than the plugin actually has (which could happen when upgrading to a new plugin version), they were no longer ignored completely. The old behaviour is now in place again.

VST::Specific Plugin Fixes
- [Fix] <js> Work around strange crash in Admiral Quality NaiveLPF.

MPTM
- [Fix] <js> Possible crash when loading malformed tunings.

S3M
- [Mod] <js> For old ModPlug-made S3Ms, cut notes early rather than limiting them to the maximum supported frequency (fixes off-key frequency slide in watcha.s3m).

MOD
- [Fix] <js> Sample swapping with portamento didn't work as intended for ProTracker MODs.
- [Fix] <js> More accurate ProTracker arpeggio wrap-around emulation.
- [Fix] <js> ADPCM-compressed samples were broken since OpenMPT 1.26.01.00 (http://bugs.openmpt.org/view.php?id=832).

Other formats
- [Imp] <js> MDL: Vastly improved loader.
- [Fix] <js> 669: Unis 669 pan slide effect was too deep.
- [Fix] <js> DMF: Sample loop lengths were off by one.
- [Fix] <js> DSM: Some pattern commands were not imported correctly.
- [Fix] <js> MT2: Ignore plugin automation data for pre-2.5 files.
- [Fix] <js> PSM16: More accurate sample tuning.
- [Fix] <js> STM: Do not load garbage samples in some files (e.g. acidlamb.stm).
- [Fix] <js> ULT: Only import pattern commands supported by the UltraTracker version that was used to save the file. Add support for command 5-C (end loop).
- [Fix] <js> OpenMPT 1.26.03.00 broke import of many pattern commands in DBM, DMF and ULT files.
- [Fix] <js> Several valid (but slightly corrupted possibly due to disk failures or data transfer errors) SoundTracker files were no longer loading in OpenMPT 1.26.03.00.

Module cleanup
- [New] <js> Added option to remove all unused channels (http://bugs.openmpt.org/view.php?id=835).

Misc
- [Mod] <js> Update check: Operating system version is now transmitted if basic update statistics are allowed. We need this information for planning build configurations of future OpenMPT versions.
- [Fix] <js> Memory leak when loading stereo SF2 instruments.

Third-Party Libraries
- [Imp] Update opus (v1.1.3) and UnRAR (v5.4.4).


v1.26.03.00 (11 July 2016, revision 6609)
-----------------------------------------
General tab
- [Fix] <js> Show scaled Dry / Wet ratio when Expanded Mix is enabled.

Pattern tab
- [Imp] <js> When jumping around in the song, update plugin parameters to their latest value.
- [Imp] <js> Grey out add / duplicate / remove channel context menu entries when the maximum / minimum number of channels is reached (http://bugs.openmpt.org/view.php?id=820).
- [Mod] <js> Right-clicking outside a selection no longer cancels the selection (http://bugs.openmpt.org/view.php?id=823).
- [Fix] <js> Position Jump with Parameter Extension was not interpreted correctly if pattern loop was active (http://bugs.openmpt.org/view.php?id=806).
- [Fix] <js> Clicking very quickly on the order list while it was not fully initialized yet could lead to a crash.
- [Fix] <js> Pasting multiple patterns didn't update the pattern list in the tree view (http://bugs.openmpt.org/view.php?id=811).
- [Fix] <js> After removing commands from patterns, their parameters could still show up in clipboard data.

Pattern tab::Find/Replace
- [Fix] <js> Manually entering hexadecimal parameters did not work (http://bugs.openmpt.org/view.php?id=825).

Sample tab
- [New] <js> Can now use any of OpenMPT's own filters for resampling (http://bugs.openmpt.org/view.php?id=740).

Mod Conversion
- [Imp] <js> Better handling of volume slide and portamento command memory when converting from IT / MPTM / S3M to XM.

VST::Specific Plugin Fixes
- [Fix] <js> VOPM no longer crashes randomly when pressing cancel in OPM import / export dialogs.

VST::Plugin Bridge
- [Mod] <js> Initialize COM for plugins that need it.

MPTM
- [Fix] <jh> Fix possible crash when saving modules with custom tunings after deleting instruments from the tree view.

IT
- [Fix] <js> IT-compatible auto-vibrato jumped very coarsely when being applied to high-pitched notes in non-linear mode.

S3M
- [Imp] <js> Warn when writing too much pattern or sample data when saving S3M files.

MOD
- [Mod] <js> Allow MOD files with 1 to 3 channels to be created.
- [Fix] <js> MOD files with more than 128 patterns were not loaded correctly (e.g. NIETNU.MOD).

Other formats
- [Fix] <js> GDM: Some pattern commands were not imported properly since OpenMPT 1.20.
- [Fix] <js> MDL: Pattern import was broken for all but the first pattern.
- [Fix] <js> MT2: Fix some modules with "modern" tempo interpretation.
- [Fix] <js> MTM: Vibrato depth is approximately half as deep as in MOD.
- [Fix] <js> Tighten SoundTracker heuristics to reject more non-module files (e.g. SNES SPC and MP3 files).

Stream Export
- [Imp] <js> Show which sample / instrument / channel is being exported (http://bugs.openmpt.org/view.php?id=808).
- [Imp] <js> Do not export sampless and instruments that only appear on muted channels in instrument export mode (http://bugs.openmpt.org/view.php?id=808).
- [Fix] <js> Do not export muted samples and instruments in instrument export mode (http://bugs.openmpt.org/view.php?id=808).
- [Fix] <jh> Exported Ogg and Opus streams almost always had the same serial number.

Audio I/O
- [Imp] <jh> Allow setting the priority (XP) or MMCSS class (Vista) used for boosting the sound device thread. The hidden options and defaults are "Sound Settings.BoostedThreadPriority" (2) and "Sound Settings.BoostedThreadMMCSSClass" (Pro Audio) (http://forum.openmpt.org/index.php?topic=5655.0).

Misc
- [New] <jh> Allow setting the process priority class through hidden setting "Misc.ProcessPriorityClass" (default is "normal", http://forum.openmpt.org/index.php?topic=5655.0).
- [Mod] <js> Finally completely deprecate MPT 1.16 mix mode and only show it for legacy modules.
- [Fix] <jh> Some input dialogs were not sized correctly when using the build for old Windows versions (http://bugs.openmpt.org/view.php?id=810).

Third-Party Libraries
- [Imp] Update opusfile (v0.8) and UnRAR (v5.4.2).


v1.26.02.00 (22 May 2016, revision 6410)
----------------------------------------
Audio I/O
- [Fix] <jh> Fix playback on some Wave Out drivers (e.g. in Wine 1.7.46, possibly also fixes http://bugs.openmpt.org/view.php?id=620).

Misc
- [Fix] <js> Song length estimation: Length was reported incorrectly for some modules in modern tempo mode and estimation disturbed real-time playback in songs with per-pattern time signature.
- [Fix] <jh> OpenMPT did not detect Wine reliably in the previous release.


v1.26.01.00 (21 May 2016, revision 6400)
----------------------------------------
General tab
- [Imp] <js> In the plugin "Output To" box, there is now also an option to add a new plugin to which the output should be routed.
- [Imp] <js> Cloning an instrument plugin also creates a new module instrument for it.
- [Mod] <js> When cloning plugins, slightly offset the cloned editor window to not confuse it with the original window.

Pattern tab
- [Imp] <js> Double-clicking an empty order list cell creates a new pattern.
- [Mod] <js> Make Play Row behaviour consistent with cursor movement behaviour if "Continuous Scroll" is disabled: When "Cursor Wrap in Pattern Editor" is disabled, the cursor remains on the last row when reaching the pattern end (http://bugs.openmpt.org/view.php?id=753).
- [Mod] <js> When jumping around during live playback and crossing a pattern border, reset all voices.
- [Mod] <js> To make Data Entry more useful, it is now only applied to the first column type of selection, even if it spans several channels (e.g. if the selection starts in the volume column, only volume will be changed).
- [Fix] <js> Show correct (summed up) parameter for commands augmented with Parameter Extension (#xx) in the status bar.
- [Fix] <js> Note Properties: Pre-select correct item in plugin parameter list if plugin has more than 100 parameters.
- [Fix] <js> Recording automation from plugin parameters in IT/XM modules wrote incorrect Zxx parameters.
- [Fix] <js> With "follow song" enabled, order list multi-selections are no longer modified on pattern transitions.
- [Fix] <js> Redraw issues with right-click drawing in the parameter editor.
- [Fix] <js> Patterns were not drawn at all in OpenMPT 1.25 at 0 rows per measure.

Pattern tab::Find/Replace
- [New] <js> Can now find ranges of data (e.g. notes C-5 to D-6) and replace them also with relative values or percentages (http://bugs.openmpt.org/view.php?id=742).
- [Imp] <js> Can now find and replace all columns of PC events (http://bugs.openmpt.org/view.php?id=44).
- [Imp] <js> Replacing notes by +/-1 octave now works as intended for instruments with custom tunings.

Sample tab
- [New] <jh> Ogg Vorbis and Opus sample loading support.
- [New] <js> New shortcuts: Zoom to sample start (1) / end (2), trim to loop end (Ctrl+Shift+T).
- [Imp] <js> Loop cross-fader now also works with sustain loops.
- [Imp] <js> MP3-compressed WAV samples are now also tried to be decoded using Media Foundation rather than just mpg123.
- [Fix] <js> Sample tuner was broken for XM modules.
- [Fix] <js> Stereo IMA ADPCM WAV samples were not read correctly.
- [Fix] <js> Splitting a stereo sample into two mono samples didn't update the tree view.
- [Fix] <js> When extracting a single sample from an SF2 bank, import the sample name rather than the patch name (http://bugs.openmpt.org/view.php?id=758).

Instrument tab
- [New] <js> Added keyboard shortcuts for selecting loop points and moving envelope points by one beat.
- [Imp] <js> Draw selected loop points in different colour.
- [Imp] <js> Show fade-out length in ticks when hovering its edit field.
- [Imp] <js> When entering a MIDI program > 128, automatically convert it to a program + bank combination.
- [Imp] <js> Show plugin program name when hovering MIDI program / bank input fields.
- [Imp] <js> Update status bar when moving envelope points around using the keyboard.
- [Fix] <js> Preview the correct note when pressing octave keys (tx eightbitbubsy).

Tree view
- [Imp] <js> Speed up display of very long order lists.
- [Fix] <js> When removing a plugin, all other plugins were removed from the tree view as well, despite still being present in the module.

VST / DMO Plugins
- [New] <js> Disable the remove button in the plugin manager for DMO plugins, as it confused several users how to re-add the removed plugins.
- [New] <js> Shift-clicking a plugin editor toggle button closes all other editors (tx coda).
- [New] <js> OpenMPT now reads the VST plugin vendor. Searching for a plugin in the plugin manager also searches in the vendor names.
- [Imp] <js> When opening an instrument plugin editor, check if the currently selected instrument would be suitable input instrument for the plugin, rather than just the first instrument that uses this plugin.
- [Imp] <js> If available (on DirectX 9 and newer), DMO plugins now process in floating-point precision rather than 16-bit PCM.
- [Imp] <js> DMO plugins can now be tagged as well.
- [Mod] <js> Editing integer parameters of DMO plugins should be easier now.
- [Mod] <js> Always send both LSB and MSB of bank select. Otherwise some synths (e.g. Roland XV-5080) ignore it.
- [Fix] <js> Plugin editor position was not restored properly on multi-monitor setups.
- [Fix] <js> Possible drift in precision for DMO plugins that query the current play time.
- [Fix] <js> Only the first VST plugin in a module got informed about transport changes.
- [Fix] <js> Some plugins (e.g. Electri-Q) don't like it when querying the names of non-existent parameters, which could e.g. happen when entering PC events into patterns.
- [Fix] <js> Possible crash in 64-bit version of OpenMPT with any plugin (http://forum.openmpt.org/index.php?topic=5651.0).

VST::Specific Plugin Fixes
- [Fix] <js> Image-Line Sawer does not like MIDI CC 121 and 123, so do not send them when resetting playback (tx mallo).
- [Fix] <js> Superior Drummer did not load its samples until playback starts (http://bugs.openmpt.org/view.php?id=750).

Playback
- [Mod] <js> Instead of having one "compatible playback" per file, every playback quirk now has its own flag. This includes a dialog to edit these flags. These flags should not be edited manually, except for the "Set Defaults" functionality.
- [Mod] <js> For old files made with MPT / OpenMPT before v1.24, sample rates are now computed in periods again in linear slide mode. This fixes for example the drum line sample in Zanoma's "Late At Night". Similarly, old OpenMPT-made files that use portamento at speed 1 now sound as in OpenMPT 1.17 - 1.20 again.
- [Fix] <js> Volume column offset + retrigger effect combination was broken for looped samples and could lead to crashes.
- [Fix] <js> Playing a sample at a sample rate close to the mix rate could lead to small clicks when using vibrato.
- [Fix] <js> If no instrument number was provided, New Note Action with empty sample slot and Duplicate Note Action sample checks were broken.
- [Fix] <js> Do not apply offset command next to a note mapped to a non-existing sample slot in instrument mode.
- [Fix] <jh> Bass Expansion DSP was not applied to rear channels (broken since the dawn of time).
- [Fix] <js> Possible crash with excessive portamento down in some formats.

MPTM
- [New] <js> Each sequence now has its own restart position.
- [New] <js> Parameter Extension (#xx) now also works with Position Jump command (http://bugs.openmpt.org/view.php?id=789).
- [Imp] <js> Warn when trying to save too large IT / MPTM files.
- [Mod] <js> Samples are now compressed by default (lossless IT compression).
- [Fix] <js> Extra fine portamento didn't work properly with custom tunings. EEx / FEx now changes the pitch by x finetune steps on the first tick (http://bugs.openmpt.org/view.php?id=731).

IT
- [Fix] <js> Even after fixing it in OpenMPT 1.18, instrument Pitch/Pan Separation was only half as deep as it should be.
- [Fix] <js> Portamento with no active note still applied the portamento effect if the previous note just stopped playing on the previous tick.

IT::Compatible Playback Mode
- [Fix] <js> Default volume of the instrument is recalled if an instrument number is next to a note-off.
- [Fix] <js> Resuming sample playback using a note without instrument number after a note cut was broken.
- [Fix] <js> Remember new instrument number for next instrument-less note even when sample playback is stopped.
- [Fix] <js> A note-less instrument number next to an out-of-range note delay resulted in playing the new sample but using the old sample's length, leading to possible crashes (re-fixes player abuse test 08, got severely broken in OpenMPT 1.23).
- [Fix] <js> Only applies global volume on (multiples of) the first tick (re-fixes player abuse test 16, broke in OpenMPT 1.19).

XM
- [Fix] <js> Some probably hex-edited XM files (e.g. cybernostra weekend.xm) were not loaded correctly.
- [Fix] <js> MadTracker 2 plays portamento-ed notes even if previously no note was playing. Disable this FT2 compatibility fix for XMs made with MadTracker (fixes m3_cha.xm).
- [Fix] <js> Skale Tracker plays notes with out-of-range offset commands. Disable this FT2 compatibility fix for XMs made with Skale Tracker.

XM::Compatible Playback Mode
- [Fix] <js> Portamento with no active note still played the new note if the previous note just stopped playing on the previous tick (fixes u-k3symb.xm).

S3M
- [New] <js> Added support for old vibrato style which cannot be enabled in the Scream Tracker UI and is probably not used by any modules anyway.
- [Fix] <js> Pattern loop start resets on pattern transitions (http://bugs.openmpt.org/view.php?id=757).
- [Fix] <js> Do not distinguish between vibrato types in effect memory, so that e.g. U1F followed by H00 causes the second effect to play a H1F vibrato. Effectively, this also means that Kxx will never play a fine vibrato (tx eightbitbubsy).

MOD
- [New] <da & js> Support for ProTracker 3.6 IFF-style modules (http://bugs.openmpt.org/view.php?id=752)
- [Fix] <js> ProTracker does not validate the sample loop length, which can lead to detuned chip samples if the loop length is longer than the actual sample (fixes MOD.shorttune2).
- [Fix] <da & js> Try to detect NoiseTracker files disguising as ProTracker MODs and fix Dxx pattern commands for such files (http://bugs.openmpt.org/view.php?id=749, fixes 1.11song2.mod and 2-3song6.mod).
- [Fix] <da & js> Properly import finetune of His Master's Noise Tracker modules (fixes abridge.mod, questioff.mod and others, http://bugs.openmpt.org/view.php?id=749)
- [Fix] <js> Some trimmed MOD files were not loaded correctly (fixes quartex.mod).
- [Fix] <js> Infinite pattern loops were not handled properly.
- [Fix] <js> With Amiga limits enabled, do not go below period 113, independent of finetune setting.

Other formats
- [New] <da & js> Can now read SoundFX / MultiMedia Sound (SFX / MMS) modules (http://bugs.openmpt.org/view.php?id=741).
- [New] <js> DBM: Added support for echo DSP.
- [New] <js & jh> Added built-in MO3 support that does not rely on the closed-source UNMO3.
- [Imp] <js> MT2: Support for the full dynamic range of drum channels.
- [Imp] <js> MT2: Try to apply track routing by copying plugin chains.
- [Imp] <js> MT2: Import more pattern commands.
- [Fix] <js> MT2: Plugin parameters were not restored correctly.
- [Fix] <js> MT2: Do not reset instrument fade value if NNA is set to Note Fade (fixes driven.mt2 by Screes)
- [Fix] <js> MT2: Some sample to instrument associations were missing (fixes Dream Alone by Sonic)
- [Fix] <da & js> Various Ultimate SoundTracker heuristic fixes (http://bugs.openmpt.org/view.php?id=751).
- [Fix] <js> MDL: The tail of compressed samples was slightly off in OpenMPT 1.25.
- [Fix] <js> J2B: Properly import non-existing patterns.
- [Fix] <js> Files with lots of NUL bytes at the start are no longer falsely detected as Ultimate SoundTracker modules.
- [Fix] <js> Possible crashes with malformed AMF, AMS, DBM, IT, MDL, MED, MPTM, MT2, PSM and MMCMP-, XPK- and PP20-compressed files.

Module cleanup
- [New] <js> Add option to merge identical patterns (http://bugs.openmpt.org/view.php?id=738).
- [Fix] <js> Detecting unused samples in instrument mode will now get slightly less confused about instrument-less notes.

Stream Export
- [Imp] <jh> Ogg Vorbis and Opus support is now built-in and no longer requires an external library.
- [Imp] <jh> Add a new "MP3 (compatible)" export file type that is implemented only via libmp3lame and is the same as the old libmp3lame CBR mode with strictly ID3v1 tags only.
- [Imp] <jh> Switch libmp3lame non-compatible MP3 export from CBR to ABR mode since ABR gives better quality.
- [Imp] <js> Temporary export files are now marked as temporary in the file system to avoid writing them to disk if possible.
- [Mod] <jh> Relax Lame CBR mode restrictions: Allow bit reservoir, do not enforce ISO padding and bit reservoir restrictions, write out lame info tag, always use ID3v2.
- [Fix] <jh> Render to Sample slot failed when exporting quad surround. As quad surround samples cannot be loaded yet, the channel count selection is now limited to mono or stereo for Render to Sample.
- [Reg] <jh> Only show a single MP3 encoder. If libmp3lame is available, it is by far the best option. If the user provided a BladeEnc.dll, they almost certainly want it preferred to any ACM encoder. Selecting a different encoder is still possible by disabling the components of higher priority encoders.
- [Reg] <jh> Remove hidden setting Export.MP3LameAllowID3v2inCBR (now always true for "MP3 / CBR" and always false for "MP3 (compatible) / CBR").

Misc
- [New] <js> Added hidden setting Misc.DistinguishModifiers to distinguish between left and right modifiers (e.g. to create FT2-like play pattern shortcuts).
- [New] <js> Update check: Add possibility to ignore automatic notifications for a specific OpenMPT version.
- [New] <jh> Added command line switch /noWine which disables any Wine-specific code when running OpenMPT in Wine. Only use when instructed to do so by the OpenMPT developers.
- [Imp] <js> SF2: Try to load instruments with left and right layer as stereo samples.
- [Imp] <js> Add browse item in example song and template module menus (http://bugs.openmpt.org/view.php?id=220).
- [Mod] <js> When saving a module file, do not change its extension. Prompt for a new filename when saving a file loaded from an import-only format (http://bugs.openmpt.org/view.php?id=762).
- [Mod] <js> Update check: Use HTTPS by default. On Windows XP and older, always fall back to HTTP as TLS 1.0 is disabled by default on these systems.
- [Fix] <js> MIDI Export: Note cuts were exported incorrectly and bloated the MIDI size (http://bugs.openmpt.org/view.php?id=746).
- [Fix] <js> SF2: Many soundfont samples were completely detuned since OpenMPT 1.20.
- [Fix] <js> Sometimes a wrong MIDI input device was remembered (http://bugs.openmpt.org/view.php?id=756).
- [Fix] <js> Creating / loading a looped 16-bit stereo sample shorter than 4 samples could lead to a crash.
- [Reg] <jh> The bandwidth of the polyphase 8-tap resampling filter is no longer configurable and fixed at the previous default of 97% now. The setting only affected the upsampling part of the filter and not the downsampling part, which was rather unintuitive. The bandwidth stays configurable for the XMMS-ModPlug filter.

Bundled plugins
- [New] <js> DigiBooster Pro Echo DSP is now a built-in plugin that can also be used in module types other than DBM.
- [New] <js> The MIDI Input / Output plugin now sends MIDI Clock events.
- [Mod] <js> The MIDI Input / Output plugin is now built right into OpenMPT and no longer shipped as a separate DLL file.
- [Fix] <js> SysEx messages received from a MIDI device are now handled properly by the MIDI Input / Output plugin.

Third-Party Libraries
- [Imp] Update lhasa (v0.3.1), UNMO3 (v2.4.1) and UnRAR (v5.3.11).

Installer/release package
- [Fix] <js> Note Off shortcut was missing in US_mpt-ft2_classic.mkb / US_mpt-it2_classic.mkb keymaps (tx Garian).
- [Mod] <js> Added FT2-like "play pattern from start" / "play song from pattern start" shortcuts to US_mpt-ft2_classic.mkb.


v1.25.04.00 (21 November 2015, revision 5785)
---------------------------------------------
General tab
- [Fix] <js> Plugin gain control was not accessible to some screen readers (http://bugs.openmpt.org/view.php?id=337).

Pattern tab
- [New] <js> Allow to skip forward / backward with navigation keyboard shortcuts and scroll wheel during playback if "follow song" is enabled.
- [Fix] <js> Recording MIDI CCs from MIDI was broken in MPTM files since OpenMPT 1.25.01.00.

VST::Plugin Bridge
- [Fix] <js> Opening the MIDI Mapping Dialog from a bridged plugin GUI could freeze the tracker.

IT/MPTM
- [Fix] <js> Global time signature values exceeding 255 rows were not loaded (but saved) correctly.

XM::Loading
- [Fix] <js> If the order list is empty, fill it with pattern 0 instead (fixes lamb_-_dark_lighthouse.xm).

MOD::Loading
- [New] <js> Support CD61 (6-channel Octalyser), FA04-FA08 (Digital Tracker), NSMS and LARD (unknown 4-channel, probably hex-edited) magic bytes in MOD files.
- [Imp] <js> Relaxed format detection heuristics for SoundTracker modules to allow more (broken) files to be loaded.

Other formats
- [Fix] <js> 669: More thorough file validation to reject files that vaguely resemble 669 files. MOD files with a song title starting with the letters "if" or "JN" had a high chance of being mis-identified as 669 modules.
- [Fix] <js> AMF: Some malformed files could result in very long loading times.
- [Fix] <js> IMF, MT2: Possible crash with some malformed files.
- [Fix] <js> MTM: Files generated by UNMO3 were not loaded properly. Generally improved playback compatibility.

Stream Export
- [Fix] <jh> ID3v2.4 tags were malformed in OpenMPT 1.25.03.00, leading to the first audio frame being skipped when playing the MP3 file (http://bugs.openmpt.org/view.php?id=725).

Misc
- [Fix] <js> MIDI Mapping Dialog: MIDI Learn did not work when opening the dialog from a plugin editor (http://forum.openmpt.org/index.php?topic=5550.0).
- [Fix] <js> Using key bindings in paths longer than 260 characters should now work properly.
- [Fix] <js> Disabling "Repeat notes on hold" for all notes at once was broken.


v1.25.03.00 (31 October 2015, revision 5703)
--------------------------------------------
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.
- [Imp] <js> Forward / backward mouse buttons can be used to switch to next / previous order.
- [Fix] <js> Go To Dialog was not filled with sensible default values since OpenMPT 1.25.01.00.

Sample tab
- [Imp] <js> Pre-select the input field in the sample resize dialog (http://bugs.openmpt.org/view.php?id=705).
- [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.
- [Imp] <js> Forward / backward mouse buttons can be used to switch to next / previous sample.
- [Mod] <js> When loading several samples, only ask once if they should be associated with an instrument (http://bugs.openmpt.org/view.php?id=340).
- [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 (http://forum.openmpt.org/index.php?msg=15678).
- [Imp] <js> When trying to load a module into an instrument slot, open it directly in the tree view for importing instruments.
- [Imp] <js> Forward / backward mouse buttons can be used to switch to next / previous instrument.
- [Fix] <js> Previewing several notes at once was broken for XM modules.
- [Fix] <js> Bogus keys 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, http://bugs.openmpt.org/view.php?id=541).
- [Imp] <js> When loading a module, indicate which plugin is being loaded in the status bar (http://forum.openmpt.org/index.php?topic=1693.0).
- [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 fulfil it.

VST::Specific Plugin Fixes
- [Fix] <js> When closing Electri-Q's editor while it was minimized and having its resizeable 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; http://bugs.openmpt.org/view.php?id=539).
- [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
- [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 Scream Tracker 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 (http://bugs.openmpt.org/view.php?id=712). 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.

Misc
- [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 (http://bugs.openmpt.org/view.php?id=704).
- [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 (http://bugs.openmpt.org/view.php?id=710).
- [Fix] <jh> Fix resource exhaustion on Wine when invoking any popup windows via a keyboard hotkey (http://bugs.openmpt.org/view.php?id=713).
- [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
- [Imp] Update PortAudio (SVN r1963) and SoundTouch (v1.9.2).


v1.25.02.00 (13 September 2015, revision 5600)
----------------------------------------------
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 (http://bugs.openmpt.org/view.php?id=702).
- [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.

Playback
- [Fix] <js> Pitch envelopes were upside down in non-linear slides mode since OpenMPT 1.24.01.00.
- [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).

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

MOD::ProTracker 1/2 Mode
- [Fix] <js> ProTracker offset quirks were partly broken since OpenMPT 1.24.04.00 (fixes professionaltracker.mod)

MOD::Loading
- [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 (http://bugs.openmpt.org/view.php?id=535).
- [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.

Misc
- [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 1.25.01.00.
- [Fix] <js> There was an excessive performance drop on some GUI parts in the previous version.


v1.25.01.00 (16 August 2015, revision 5484)
-------------------------------------------
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 highlight (http://bugs.openmpt.org/view.php?id=662)
- [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 (http://forum.openmpt.org/index.php?topic=5476.0).
- [Fix] <js> Make note and data entry shortcuts always operate on octaves instead of +/- 12 notes when using custom tunings (http://bugs.openmpt.org/view.php?id=681).
- [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 1.24.03.00 (http://forum.openmpt.org/index.php?topic=5495.0).
- [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 1.24.03.00.
- [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] <jh> Add Media Foundation (AAC, WMA, ASF, MP1, MP2, MP3, WAV-MSADPCM, ...) sample decoding support on Windows 7 and later (http://bugs.openmpt.org/view.php?id=422).
- [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 explicitly 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 (http://forum.openmpt.org/index.php?topic=2736.0).
- [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 (http://forum.openmpt.org/index.php?topic=2867.0).
- [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 writeable 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 1.22.02.00.

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 (http://bugs.openmpt.org/view.php?id=683).

Playback
- [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.

MPTM
- [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 (http://bugs.openmpt.org/view.php?id=145).
- [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 (http://bugs.openmpt.org/view.php?id=506).
- [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.

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

S3M
- [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
- [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 (http://bugs.openmpt.org/view.php?id=561).

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.

Misc
- [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 1.22.07.00.

Third-Party Libraries
- [Imp] 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.


v1.24.04.00 (19 April 2015, revision 4951)
------------------------------------------
Pattern tab
- [Fix] <js> Seeking with sample sync didn't apply portamento and note delay + row delay combinations accurately in some cases.

Playback
- [Fix] <js> On rows with a row delay effect, offset commands were executed on every row repetition in the previous version.

IT::Compatible Playback Mode
- [Fix] <js> Note delays are capped by the ticks per row + fine pattern delay tick count, not taking row delay into account.

MOD::ProTracker 1/2 Mode
- [Fix] <js> Instrument swapping is also applied if there was an empty sample slot "playing" (fixes arpeggios in "mr gang !!!." by arios).

Misc
- [Fix] <jh> There was a major performance regression in the previous version, mostly noticeable on Wine.


v1.24.03.00 (18 April 2015, revision 4941)
------------------------------------------
General tab
- [Fix] <js> The "Set" button for updating plugin parameters was still present by accident. Clicking the button could lead to problems with descriptive parameter values (tx eightbitbubsy).

Pattern tab
- [New] <js> Can now transpose a whole channel in all patterns via the channel header context menu (including a new shortcut).
- [New] <js> New fade curves in amplification dialog: Exponential, Logarithmic, Square Root, Quarter Sine, Half Sine.
- [Imp] <js> Greatly improved seek performance when "Maintain sample sync on seek" is enabled.
- [Mod] <js> Remove arbitrary limiting of the order list scrollbar to the first stop index in MOD / XM.
- [Fix] <js> Continuous scroll didn't work when entering chords (http://bugs.openmpt.org/view.php?id=132).
- [Fix] <js> Volume column offset command was still being displayed in the Note Properties for IT files (http://bugs.openmpt.org/view.php?id=647).
- [Fix] <js> When only enabling Amiga limits for MOD but not ProTracker 1/2 mode, invalid notes were not coloured as such.
- [Fix] <js> When switching between modules or resizing the window, it was possible for the pattern display to show garbage (http://bugs.openmpt.org/view.php?id=665).
- [Fix] <js> Clicking on the first and last item of an order selection loses the selection, like clicking any other item.
- [Fix] <js> Seeking with sample sync could misbehave when encountering PC events.

Sample tab
- [New] <js> The MPTM volume column offset command has been revamped: 9 custom cue points can be selected for each sample in the waveform's context menu, which can then be triggered using o01...o09 (http://bugs.openmpt.org/view.php?id=91).
- [New] <js> Crossfader can now use constant power (instead of constant volume) fade law for even smoother loop transitions. The sample can now optionally be faded back to its original content after the loop end.
- [New] <js> New fade curves in amplification dialog: Exponential, Logarithmic, Square Root, Quarter Sine, Half Sine.
- [Mod] <js> Middle-C finetune adjustments are now made in cents (1/100th of a semitone) instead of Hertz.
- [Fix] <js> Inputting a new middle-C frequency created an undo step for every entered digit.
- [Fix] <js> Pitch shift was broken for stereo samples.

Instrument tab
- [New] <js> Can now load and save envelopes (http://bugs.openmpt.org/view.php?id=398).
- [Imp] <js> Entering a negative envelope scaling factor also yields sensible results for the volume and filter envelope now.
- [Mod] <js> Apply DNA and NNA settings to released notes when previewing notes (http://bugs.openmpt.org/view.php?id=437).

Tree view
- [Imp] <js> Show the missing samples dialog when using "Reload All" if there are any missing samples left.
- [Fix] <js> Preview was detuned for some samples (http://bugs.openmpt.org/view.php?id=14).

Mod Conversion
- [Fix] <js> Tempo commands broke when converting XM to MOD.

VST / DMO Plugins
- [New] <js> Plugin editors now have minimize / maximize buttons, which can be used to shrink a plugin window to only display the title and menu bar.

Playback
- [Fix] <js> With "loop song" disabled, the loop detection was a bit too aggressive and would stop playback when encountering nested pattern loops.

IT
- [Fix] <js> Tick-0 effects were not executed on the first tick of row repetitions (pattern delay effect) since OpenMPT 1.23.

XM
- [Fix] <js> Out-of-range global volume commands should not be ignored in XM (fixes "Reflecter" by Zodiak).

S3M
- [Fix] <js> Properly limit sample frequency and cut the sample when sliding too high.
- [Fix] <js> Tick-0 effects were not executed on the first tick of row repetitions (pattern delay effect) since OpenMPT 1.23.

MOD::Loading
- [Imp] <js> VBlank heuristic: Do not use VBlank timing if it results in a longer tune than regular CIA timing (http://bugs.openmpt.org/view.php?id=654).

MOD::ProTracker 1/2 Mode
- [New] <js> Support for ProTracker oneshot loops: If the loop start is right at the start of the sample, play through the whole sample once and then repeat just the loop part.

Other formats
- [New] <js> Can now read PLM (Disorder Tracker 2) files.
- [Mod] <js> Allow loading PAT instruments with 0 layers (such as DOO.PAT from the original GUS sample set).
- [Fix] <js> PTM: The weird behaviour of the panning command I observed was due to DOSBox' broken GUS panning. Now panning commands are imported as expected again.

Audio I/O
- [Mod] <jh> Allow smaller buffer sizes for Wave Out devices.

Misc
- [Imp] <js> Song length estimation: Properly handle panning, parameter extension (#xx), and tempo / volume slides that are on the same row as a set speed effect.
- [Imp] <jh> VU meter's decay speed is now configurable via hidden setting "Display.VuMeterDecaySpeedDecibelPerSecond". Default value is 88.
- [Mod] <js> No longer mark module as modified when switching between sequences (http://bugs.openmpt.org/view.php?id=141).
- [Fix] <js> The bold and italic styles were ignored on custom pattern and comments fonts.
- [Fix] <js> It was possible to switch song tabs while being in a modal dialog, which could lead to crashes when exiting the dialog.
- [Fix] <js> Tooltips were missing in some windows in the 32-bit build (http://bugs.openmpt.org/view.php?id=646).
- [Fix] <js> Channel Manager window was not sized properly.
- [Fix] <jh> OpenMPT 1.24 was previously no longer running on Windows 98 + KernelEx.

Third-Party Libraries
- [Imp] Update UnRAR (v5.2.6).


v1.24.02.00 (16 February 2015, revision 4761)
---------------------------------------------
Pattern tab
- [New] <js> Added support for custom pattern fonts as well as upscaled variants of the built-in fonts for High-DPI devices.
- [Imp] <js> Data entry shortcuts / scroll wheel do now take the default volume into consideration, i.e. when making a data entry in an empty volume column field next to a note, a volume command is inserted (http://forum.openmpt.org/index.php?topic=5411.0).
- [Imp] <js> Show verbose effect descriptions in the status bar instead of the short versions (http://bugs.openmpt.org/view.php?id=51).
- [Imp] <js> Note-offs from past notes are no longer written when recording notes into patterns (http://bugs.openmpt.org/view.php?id=645).
- [Mod] <js> In IT and XM, the o command (Offset) can no longer be entered into the volume column, as it's an OpenMPT-specific command. Old files using this command will still play as intended.
- [Fix] <js> The Parameter Editor refused to work under random conditions.

Sample tab
- [New] <js> Added new shortcuts to center waveform around loop points.
- [Fix] <js> Splitting a stereo sample into mono samples didn't update the sample list in other tabs.

Instrument tab
- [Fix] <js> Plugin list was updated on every instrument change, leading to a small but noticeable performance drop.

Comments tab
- [New] <js> It is now possible to use a custom font for displaying module comments.

Tree view
- [Fix] <js> When converting samples to instruments, the instrument folder in the tree view was not updated properly (tx eightbitbubsy).
- [Fix] <js> OpenMPT 1.24 introduced a perceivable delay when loading samples for preview.

Mod Conversion
- [Imp] <js> Properly convert between IT / MPTM Hxx and XM 4xx vibrato depth.

Playback
- [Fix] <js> Vibrato was too weak in IT / MPTM with linear frequency slides since the previous version (http://bugs.openmpt.org/view.php?id=623).
- [Fix] <js> Fine portamento was sometimes too weak in IT / MPTM with linear frequency slides since the previous version.

IT
- [Mod] <js> Allow loading IT files with tempo 31 normally.

IT::Compatible Playback Mode
- [Fix] <js> Default sample and instrument panning is only reset by notes, not instrument numbers.
- [Fix] <js> Panbrello is not reset until the next note or panning command.

MOD
- [Mod] <js> To match ProTracker, the portamento target is no longer reset when a new note is encountered (like in FT2), but it is reset when the target is reached (like in IT). Fixes the intro in nuhanenatanssi.mod.
- [Fix] <jh> Fixed random crash in ProTracker 1/2 mode when using on-the-fly sample swapping (http://bugs.openmpt.org/view.php?id=626).

Other formats
- [Fix] <js> STM: Samples were not loaded correctly in some files, e.g. fracture in space" by Purple Motion (tx deus-ex, http://www.un4seen.com/forum/?msg=113496)
- [Fix] <js> STM: Volume slide nibbles are now prioritized correctly (fixes "fracture in space" by Purple Motion).

Stream Export
- [Mod] <jh> Remove >48 KHz support for Vorbis export. Even though Vorbis supports these sampling rates, it's not tuned for them, and using >48 KHz for any lossy codec generally does not make any sense at all.
- [Fix] <jh> Detection of available MP3 encoders was sometimes broken in the previous version.

Audio I/O
- [New] <jh> Added hidden options EnableWaveOut, EnableDirectSound, EnableASIO, EnablePortAudioWASAPI, EnablePortudioWDM-KS, EnablePortAudioDS, EnablePortAudioASIO in [Sound Settings] to disable certain types of audio drivers, if required for debugging.

Misc
- [New] <jh> Added hidden settings "Debug.StopSoundDeviceOnCrash" (default true) and "Debug.TraceAlwaysDump" (default false) which can be useful to debug sound device related problems that do not manifest in a crash.
- [Imp] <js> Various parts of the program are now DPI-aware: Parameter editor, pattern editor, channel manager, plugin manager, splitter positions, MIDI Input/Output Plugin
- [Fix] <js> When using the Song Properties dialog to change some properties of an IT file, re-saving the file always popped up the Save As dialog.


v1.24.01.00 (21 December 2014, revision 4662)
---------------------------------------------
General tab
- [Imp] <js> Clicking on the song type opens Song Properties dialog.
- [Imp] <js> If available, show a descriptive parameter value for plugin parameters instead of its numerical representation.

Pattern tab
- [New] <js> Ctrl + (Shift +) Scroll wheel can now be used as a replacement for the "(Coarse) Data Entry" shortcuts (http://bugs.openmpt.org/view.php?id=613).
- [Imp] <js> When previewing instruments with a fadeout value of 0, instantly stop them on key-up instead of letting them play forever.
- [Fix] <js> "Continue song as soon as MIDI notes are being received" didn't work in some situations.
- [Fix] <js> When using "Continue song as soon as MIDI notes are being received", the Edit Step setting was erroneously applied to the first note.
- [Fix] <js> When dragging a selection in the order list one order to the right, the document was marked as modified even though there was no change.
- [Fix] <js> Fixed crash when a module has no patterns at all.
- [Fix] <js> When only one parameter column was selected, the interpolation context menu didn't offer to interpolate this column.

Sample tab
- [New] <js> Support resampling to any arbitrary sampling rate using r8brain-free. Includes new keyboard shortcuts for upsampling, downsampling and resampling.
- [New] <js> As upsampling no longer automatically converts the sample to 16-bit, 16-bit conversion is now a separate option.
- [New] <js> Custom background and selection colours can now be specified (http://bugs.openmpt.org/view.php?id=371).
- [Imp] <js> Adjusting the sample frequency updates all playing notes' sample frequency (only works with IT and MPTM for now).
- [Imp] <js> Improved sample loop point input behaviour so that a loop start value greater than the current loop end value can be entered without having to enter the new loop end first.
- [Imp] <js> Finetune and transpose modifications are now undo-able.
- [Imp] <js> Visually distinguish sustain loop and sample grid markers.
- [Imp] <js> No longer show unsupported sample vibrato types in IT (Ramp Up) and XM (Random).
- [Fix] <js> Ramp Up and Ramp Down labels in XM vibrato settings were swapped since forever.
- [Fix] <js> When editing XM vibrato settings, the edit cursor always jumped back to the first character in the edit field.
- [Fix] <js> Rearranging samples (e.g. through song cleanup or the tree view) no longer messes up the undo buffer history (http://bugs.openmpt.org/view.php?id=600).
- [Fix] <js> The sample transpose dropdown was missing two complete octaves. The range has been extended and turned upside down (can now be understood intuitively as "C-5 is being played like note x").
- [Fix] <js> Silencing a single sample point lead to a crash (http://bugs.openmpt.org/view.php?id=610).

Instrument tab
- [New] <js> ITI instrument files can now contain external samples (like MPTM files). Select "Impulse Tracker Instruments with external Samples" from the save dialog (http://forum.openmpt.org/index.php?topic=2515.0).
- [New] <js> The first instrument of a soundfont can now be loaded directly without registering the soundfont in OpenMPT.
- [New] <js> Custom background colour can now be specified.
- [Imp] <js> Since Impulse Tracker's fade-out value is 32 times less precise than what is displayed in the editor, automatically round it when the user makes fade-out adjustments in IT files.
- [Imp] <js> When previewing instruments with a fadeout value of 0, instantly stop them on key-up instead of letting them play forever.
- [Mod] <js> Disallow OpenMPT-only "attack" setting to be used in IT and XM files. Old files using this setting still play as intended.
- [Fix] <js> When loading an instrument, force all sample views of the same module to be updated.
- [Fix] <js> Modifying envelopes using the keyboard didn't mark the module as modified.

Tree view
- [New] <js> Dropping a module or folder on the sample browser opens this module or folder for browsing.
- [New] <js> Dropping a soundfont file on the upper part of the tree view adds it to the list of soundfonts.
- [New] <js> Due to the change from external instruments in the ITP format to external samples in MPTM, "Set Path" and "Save" have been moved to samples. External samples are marked with [external], missing external samples are marked with [missing].
- [New] <js> Sample waveforms can now be reloaded from disk (e.g. after editing a sample in an external application) if OpenMPT knows the sample's original path, e.g. after loading or saving it, or using MPTM's external sample feature (http://bugs.openmpt.org/view.php?id=207).
- [New] <js> The first instrument of a soundfont can now be previewed directly from the sample browser (without registering the soundfont in OpenMPT).
- [Mod] <js> Apparently, some versions of Ableton Live mark exported WAV files as "temporary". Such files are no longer ignored in the sample browser.
- [Fix] <js> Duplicating samples was broken in OpenMPT 1.23.
- [Fix] <js> Previewing IMA ADPCM-compressed samples from the tree view was broken if the previously previewed sample was a stereo sample.

Mod Conversion
- [Imp] <js> When converting from IT / MPTM to XM, move volume column portamento to the effect column if possible, as it has a different meaning in XM.
- [Fix] <js> When converting from XM to IT / MPTM, volume column effects were not always limited properly.

VST / DMO Plugins
- [Imp] <js> When adding a new plugin through the plugin manager that is missing from some open file, it is now automatically loaded and restored in that file.
- [Imp] <js> "Randomize Parameters" now applies a customizable randomization factor - much more useful than completely random parameters.
- [Fix] <js> Regularly send editor idle commands to plugins with open editors.

VST::Plugin Bridge
- [Imp] <js> The plugin bridge does now also create crash dumps automatically. OpenMPT's /fullMemDump command line switch also applies to these dumps.
- [Mod] <js> By default, all instances of the same plugin do now share one bridge process, since a handful of plugins require this - and the loading performance is much better, too.
- [Fix] <js> Catch potential crashes while loading the plugin, like in OpenMPT (fixes instant crashes with multiple instances of SideKick v3 in different processes).

Playback
- [New] <js> S70 / S71 / S72 commands do now also work with instrument plugins.
- [Imp] <js> Smooth MIDI macros do now, to some extent, work with external MIDI messages. They interpolate from the previous Zxx or \xx parameter from the same channel to the new parameter.
- [Mod] <js> In all mix modes since 1.17RC2, a way too long volume ramp (some times up to 100 times longer than the user-supplied ramp setup) was applied for extreme global volume changes. This is now disabled except for legacy 1.17RC2 mix mode.
- [Mod] <js> Re-implemented stereo separation to be applied on the master mix. This means that it also works as expected with stereo samples and plugins now.
- [Fix] <js> NNA / DCA settings were not applied properly to plugins assigned to sample-less instruments.
- [Fix] <js> Instrument plugin arpeggio was executed on muted channels / instruments.
- [Fix] <js> Linear frequency slide mode (in all formats except XM, which already worked as intended) has been re-implemented to fix some unwanted inaccuracies which can add up very quickly when using extra-fine slides.
- [Fix] <js> Glissando should only affect tone portamento, not portamento up / down effects.

MTPM
- [New] <js> MPTM files can now contain external (on-disk) samples. When checking the "Keep sample on disk" checkbox in the sample editor, the sample data is not stored directly in the MPTM file but a relative link to the original sample file is kept (http://bugs.openmpt.org/view.php?id=368).

IT
- [Imp] <js> Added support for reading encrypted edit time in old IT files with no edit history present (discovered through Impulse Tracker source release, yay).

XM
- [Mod] <js> Revert XM compatibility export to always write out 256 order items.
- [Fix] <js> Use "normal" compatible mix mode instead of FT2 panning mix mode for XM files that were compatibility-exported with OpenMPT 1.22 or older, and XM files made with other trackers that use linear panning.

XM::Compatible Playback Mode
- [Fix] <js> Make arpeggio after portamento effect behave even more like in Fasttracker 2.

S3M::Compatible Playback Mode
- [New] <js> Compatible playback mode for S3M: When enabled, OpenMPT emulates certain Scream Tracker quirks as it did until now (linked pattern effect memory and ignored effects on muted channels). Compatible mode is disabled automatically for files made with less compatible trackers. S3M files made with OpenMPT always have this mode enabled, and its state is not saved in S3M files.

MOD
- [Imp] <js> Amiga frequency limits can now also be enforced without activating ProTracker 1/2 mode.

MOD::Loading and Saving
- [Mod] <js> M.K. and M!K! files that only have Amiga-compatible notes in their patterns automatically enforce Amiga frequency limits now (http://bugs.openmpt.org/view.php?id=563).
- [Fix] <js> Saving a sample loop with an odd length is now handled better (http://bugs.openmpt.org/view.php?id=590).
- [Fix] <js> Any non-ASCII characters were accidentally removed when loading a MOD file (broke in OpenMPT 1.22).

MOD::ProTracker 1/2 Mode
- [Fix] <js> Glissando is only applied on rows with a portamento effect, and never on the first tick of these rows.

Other formats
- [New] <js> Added support for a MOD variant introduced by SoundTracker 2.6 and Ice Tracker (http://bugs.openmpt.org/view.php?id=597).
- [Imp] <js> SoundTracker auto-slides are now imported using the volume column.
- [Imp] <js> MT2: Completely rewrote loader. Some files that would previously not load properly do now load. Support for VST plugins, drum patterns and some extended MT2 pattern commands has been added.
- [Fix] <js> ITP: Always load embedded MIDI macros for files made with OpenMPT 1.19 or older, since back then they were always read, no matter if the embed flag was set or not.
- [Fix] <js> ITP: Loading extended song properties was broken since OpenMPT 1.21.
- [Reg] <js> ITP: Saving and editing ITP files is no longer supported. ITP files are now imported as normal IT files. ITP's functionality is superseded by MPTM's new external sample functionality.

Stream Export
- [Fix] <js> F00 "stop song" abort detection for XM files didn't abort if there were samples playing with a global volume of 0.

Module cleanup
- [New] <js> "Remove unused sample data" now also finds samples with identical stereo channels and offers to optimize them to mono.
- [Imp] <js> Give information about how many plugins were removed.
- [Fix] <js> Removing unused samples no longer creates two undo points per sample.

Audio I/O
- [New] <jh> Support direct mode for Wave Out devices. This is mostly useful on Wine systems where it (for certain setups) prevents the Wine-internal resampler from kicking in.
- [Imp] <jh> Increased latency and period precision to allow sub-millisecond latencies.
- [Imp] <jh> Added per-device type default audio settings.
- [Mod] <jh> Query PortAudio for the default latency of PortAudio sound devices.
- [Mod] <jh> When changing between mono / stereo / quad channel configurations, always reset the channel mapping to default instead of basing the new one on the previous one.
- [Mod] <jh> Add a hidden setting setting "Sound Settings.PreferSameTypeIfDeviceUnavailable" which optionally changes the algorithm for selecting the fallback device if the device selected by the user (or read from the configuration) is currently unavailable. When this setting is set, a device of the same type as the currently selected is preferred instead of just defaulting to wave mapper.
- [Fix] <jh> If the soundcard is currently unavailable, some ASIO drivers allow opening the driver and report zero input and output channels in that case. Other drivers do not support loading the driver. In both cases, OpenMPT will now disallow selecting the driver in the setup dialog and hide it until restarting OpenMPT or the sound devices get rescanned.

Misc
- [New] <js> Dropping a folder that contains modules or VST plugins opens / registers them directly now (http://bugs.openmpt.org/view.php?id=510).
- [New] <js> Remember window positions for each tune individually when it is being saved. Plugin window positions are now stored using the same mechanism instead of being embedded into the module files. (http://forum.openmpt.org/index.php?topic=3280.0).
- [New] <js> Added a first-start dialog to set up some common settings. The corresponding settings have been removed from the installer.
- [Imp] <js> Song length estimation: Slightly improve calculation of nested pattern loops (http://bugs.openmpt.org/view.php?id=591).
- [Imp] <js> Song length estimation shows the length of all "hidden" subtunes in the current sequence.
- [Imp] <js> Made the MIDI Mapping dialog's mapping list more human-readable.
- [Imp] <jh> VU Meter: Rear channels are now also shown in quad mode.
- [Mod] <js> When merging the default key map into a custom key map, event types are now completely ignored, so if e.g. the user has assigned a certain key on "key hold" but the default key map uses the same key on "key down" only, this version is no longer added.
- [Mod] <js> Autosave: When "Use song's original directory" is enabled, but the song has not been saved so far, it is now saved in a sub folder called "Autosave" instead of the root of the settings directory. In this case, modules created from templates are now also autosaved into this folder instead of the template folder.
- [Mod] <jh> Added setting LoadOnStartup in [Components] to optionally load all optional components (such as MP3 encoders, UNMO3, etc.) on startup rather than first use. KeepLoaded (also in [Components]) determines whether components stay in memory after they have been used (this is the default behaviour).
- [Mod] <js> Rename "Colours" settings tab to "Display".
- [Fix] <js> Soft Panning check box in Mixer settings didn't work (http://bugs.openmpt.org/view.php?id=602).
- [Reg] <js> Removed noSettingsOnNewVersion command line switch. It's no longer necessary as there is also a hidden setting that does the same.

Third-Party Libraries
- [Imp] Update lhasa to version 2014-07-12 (adds support for lhx archives).
- [Imp] Update FLAC to v1.3.1 (improved decoding and encoding efficiency, fixed two vulnerabilities when loading malicious FLAC files).
- [Imp] Updated PortMidi to revision 228 (fixes potential 64-bit issues).


v1.23.05.00 (6 September 2014, revision 4238)
---------------------------------------------
Pattern tab
- [Imp] <js> "Edit Plugin assigned to PC Event" shortcut is now "Toggle PC Event/instrument plugin editor" (can now also be used to toggle the editor of the plugin assigned to the currently selected instrument).
- [Imp] <js> Deleting and inserting items in the order list automatically adjusts playback, sequence override and play lock positions.
- [Imp] <js> Greatly improve seek performance when "Maintain sample sync on seek" is enabled and there are samples with very small loops.
- [Imp] <js> When inserting a new pattern while a +++ or --- pattern is focussed in the order list, use the currently edited pattern for determining the new pattern's length.
- [Fix] <js> In windowed mode, the note properties dialog was not always visible.
- [Fix] <js> The order list's scrollbar's "Right Edge" menu entry was not working (http://bugs.openmpt.org/view.php?id=567).

Sample tab
- [Fix] <js> Enabling a sample loop when there were no loop points didn't update the loop point display.
- [Fix] <js> Silencing samples was slightly broken (http://bugs.openmpt.org/view.php?id=555).
- [Fix] <js> Undo could crash in some situations when the total undo buffer size previously exceeded the configured buffer limit.
- [Fix] <js> It was impossible to call the save dialog for a sample / instrument with a pipe character in the name (also applies to instrument tab, http://bugs.openmpt.org/view.php?id=564)
- [Fix] <js> Fixed possible crashes when using undo / redo, most notably when sample undo was disabled completely (http://bugs.openmpt.org/view.php?id=584).

Instrument tab
- [Imp] <js> In the sample map editor, show faint red dots for notes that are already assigned to another sample (http://forum.openmpt.org/index.php?msg=37495).
- [Fix] <js> Trying to play notes above B-9 caused a crash (http://bugs.openmpt.org/view.php?id=549).

Tree view
- [Fix] <js> Stopped voices sometimes still contributed to the active sample / instrument list (http://bugs.openmpt.org/view.php?id=568).

VST / DMO Plugins
- [New] <js> Plugin editor positions are now stored in module files.
- [Imp] <js> Allow drag and drop actions on plugin editors to drop preset files from Explorer.
- [Fix] <js> Program names starting with non-ASCII characters were not formatted properly.
- [Reg] <js> Partly reverted the behaviour introduced in OpenMPT 1.23.03.00 to only re-send patch numbers if they're not bank 1 patch 1, to fix legacy module playback.

Playback
- [Mod] <js> When resuming paused (not stopped) playback, previously playing samples are continued.
- [Fix] <js> "Maintain sample sync on seek" should now also work when playback was previously stopped.
- [Fix] <js> Glissando in semitones mode didn't take finetune into account (http://bugs.openmpt.org/view.php?id=585).

IT::Compatible Playback Mode
- [Fix] <js> Tone portamento target is now completely cleared with new notes, so that subsequent Gxx effects have no effect.

XM
- [Fix] <js> Clear MIDI macros for XM files made with FT2 to prevent Zxx effects from doing anything.
- [Fix] <js> Correct nominal dB values for FT2 pan law mix mode.

XM::Compatible Playback Mode
- [Fix] <js> Tentatively fix arpeggio after pitch slide behaviour (http://bugs.openmpt.org/view.php?id=542).

MOD::ProTracker 1/2 Mode
- [Fix] <js> ProTracker applies instrument changes on the first tick, even if there's a note delay (http://bugs.openmpt.org/view.php?id=574).
- [Fix] <js> Properly implemented ProTracker-style sample swapping, which is only supposed to happen at the end of the sample and not instantly.
- [Fix] <js> Correctly handle a few more edge cases of ProTracker-style 9xx offset handling.

Misc
- [New] <jh> Add hidden setting "Misc.ShowSettingsOnNewVersion" (default true) which can permanently disable showing of the settings dialog on new versions, in addition to the one-time command line switch /noSettingsOnNewVersion.
- [Imp] <js> Add support for 64-bit Vorbis library builds from mingw-w64 with slightly different file names.
- [Imp] <js> When adding a new shortcut that conflicts with an existing shortcut, do not automatically delete the existing shortcut but rather ask the user what to do.
- [Imp] <js> Add global dummy shortcut keybinding to prevent default keybindings from doing anything into if you don't like them (http://bugs.openmpt.org/view.php?id=550).
- [Imp] <js> Slightly improved icons for systems with 32-bit display mode but mysteriously missing alpha channel (http://bugs.openmpt.org/view.php?id=520).
- [Mod] <js> Merge "Note Off/Cut/Fade" and "Note Off/Cut/Fade (without instrument number)" to never write an instrument number next to those events.
- [Fix] <js> Scale main toolbar elements according to DPI settings (http://bugs.openmpt.org/view.php?id=513).
- [Fix] <js> Setting the default MIDI volume behaviour for new instruments in the Options dialog was broken.
- [Fix] <js> Potential fix for DDE error when launching OpenMPT through an associated file from Explorer (http://bugs.openmpt.org/view.php?id=461).
- [Fix] <js> After loading a new keybinding file, effect keys were no longer working until the user switched to a module with different effect keys (tx stinkbug).

Third-Party Libraries
- [Imp] Update UnRAR (v5.1.6).


v1.23.04.00 (14 June 2014, revision 4113)
-----------------------------------------
Pattern tab
- [New] <js> Added possibility to interpolate the instrument column.
- [Imp] <js> Stay at current order / pattern when removing something from the order list (http://bugs.openmpt.org/view.php?id=511).
- [Fix] <js> With overflow paste, marking the pasted pattern area was not working when the paste ended exactly in the last pattern row (broke in OpenMPT 1.23.02.00).
- [Fix] <js> Select / Copy Select keys should no longer interfere with mouse dragging (tx coda).
- [Fix] <js> Don't crash when the module doesn't have any patterns.
- [Fix] <jh> Fixed flickering of current-row highlight in pattern view on Wine (http://bugs.openmpt.org/view.php?id=522).

Sample tab
- [Fix] <js> Setting sustain loop points by typing the values in didn't update the waveform display.
- [Fix] <js> When removing DC offset from a sample, the wrong volume variable on channels currently playing the modified sample was modified.

Tree view
- [Fix] <js> It was not possible to drag and drop drums from sound banks (http://bugs.openmpt.org/view.php?id=536, x64 only).

VST / DMO Plugins
- [Imp] <js> Improve preset menu creation in the plugin editor for plugins with less than 128 presets, so that the menu is only created when needed (speeds up e.g. bridged VOPM).
- [Imp] <js> When trying to load a plugin where both the 32-bit and 64-bit version are registered in OpenMPT, prefer the native version.
- [Fix] <js> When trying to play notes in a VST GUI with no instrument assigned yet, prevent notes from being stuck after closing the instrument creation confirmation (tx coda).

VST::Plugin Bridge
- [Fix] <js> Don't crash when a plugin sends an opcode that isn't expected to have a data pointer set (http://bugs.openmpt.org/view.php?id=519).
- [Fix] <js> Unknown vendor-specific opcodes that send pointers are now rejected, as they cannot work over the bridge.

XM
- [Fix] <js> More intelligent extraction of the selected MIDI program for files that were not made with ModPlug.
- [Fix] <js> Loading ADPCM-compressed samples broke in OpenMPT 1.23 (http://bugs.openmpt.org/view.php?id=538).

S3M
- [Fix] <js> Some files created with Scream Tracker were detected as being made with Velvet Studio.

MOD
- [Fix] <js> Loading ADPCM-compressed samples was broken ever since OpenMPT 1.22.06.00.

Other formats
- [Fix] <js> IMF: Ignore note cut with a zero parameter.

Audio I/O
- [Mod] <jh> Default to 16-bit output on Wine, since some Wine versions apparently have problems with sample formats > 16bit.
- [Fix] <jh> DirectSound: Emulated drivers do not support primary buffer access. Actually test whether the device is emulated or not and do not advertise primary buffer support if it is.
- [Fix] <jh> Fix clamping / rounding of Wave Out and DirectSound buffer sizes for 24bit samples (http://bugs.openmpt.org/view.php?id=540).

Misc
- [Imp] <js> When loading plugins during startup, the error message that was potentially shown didn't appear in the task bar, making it easy to forget about such a half-initialized OpenMPT instance.
- [Fix] <js> Potential fix for a crash when loading modules through the command-line (tx coda).
- [Fix] <js> "Find MPT Hacks" erroneously identified FT2 pan law mix mode as a hack (http://bugs.openmpt.org/view.php?id=531).


v1.23.03.00 (4 May 2014, revision 4039)
---------------------------------------
VST / DMO Plugins
- [Mod] <js> If an instrument specifies a MIDI program / bank to be used, always re-send this information after restarting playback. Previously, this information was only resent during first play or when it was changed by the user. This fixes some external softsynths controlled through the MIDI I/O plugin.

Audio I/O
- [Fix] <jh> When upgrading from OpenMPT 1.23.01.00 to OpenMPT 1.23.02.00, it was possible that audio was now playing too slow instead of too fast.


v1.23.02.00 (3 May 2014, revision 4035)
---------------------------------------
General tab
- [Fix] <js> Moving plugins unintentionally broke the plugin chain in many cases (http://bugs.openmpt.org/view.php?id=514).

Pattern tab
- [Imp] <js> Don't require shift key to be pressed when entering numeric effect letters on French keyboards (http://forum.openmpt.org/index.php?topic=5279.0).
- [Imp] <js> Channel mute / channel mute on pattern transition shortcuts got extended to cover all channels covered by the selection instead of just the channel where the cursor is.
- [Mod] <js> After pasting pattern data, the pasted area is automatically selected (http://bugs.openmpt.org/view.php?id=498).
- [Fix] <js> When "loop pattern" was enabled, jumping between patterns could trigger sample syncing while playback was paused.
- [Fix] <js> Other small fixes in playback adjustment code when jumping around.
- [Fix] <js> Undoing channel deletion didn't work properly.
- [Fix] <js> Dragging an order selection also works if the first selection point isn't visible.

Sample tab
- [New] <js> Added sample transpose shortcuts to quickly change the middle-C frequency.
- [Fix] <js> Fade operation was broken in 64-bit builds (http://bugs.openmpt.org/view.php?id=507).
- [Fix] <js> Crossfading sample loops modified one sampling point too much, which couldn't be undone properly.
- [Imp] <js> WAV / FLAC saving: When there's only a sustain loop and no normal loop, ensure that it is treated as a sustain loop after reloading the sample (like it was done in older versions, tx dusthillguy).
- [Fix] <js> Load / Save / New shortcuts are now also handled properly when the upper panel is focussed.
- [Fix] <js> Adding silence to a sample that's not 8-bit mono broke in OpenMPT 1.23.

Tree view
- [New] <js> In the instrument library, Ctrl+Enter loads the selected instrument into the currently active sample / instrument editor window (http://bugs.openmpt.org/view.php?id=499).
- [Imp] <js> Ctrl+Enter starts label editing.

VST::Plugin Bridge
- [Fix] <js> Fixed KarmaFX EQ, a couple of VarietyOfSound plugins and possibly others that don't set any specific time flags, but still call audioMasterGetTime.

Playback
- [Imp] <js> For XM files, a new mix mode "Compatible (FT2 Pan Law)" has been added which is the same as the "compatible" mix mode, but this enforces FT2's pan law, while the "normal" compatible mix mode no longer does so. This should make tunes created with OpenMPT 1.22 or older not break drastically anymore if they make use of a lot of panning stuff.
- [Fix] <js> Fixed potential crash in 64-bit version when playing certain songs with instrument envelopes (tx xTr1m).

IT::Compatible Playback Mode
- [Fix] <js> Sustained envelopes were released too early if the loop end was hit on exactly the same tick as the note-off event.

MOD::ProTracker 1/2 Mode
- [Imp] <js> Added ProTracker-style offset when note but no instrument number is specified (fixes h0ffman's Revision 2014 tracked music entry).

Module cleanup
- [Fix] <js> Rearranging samples broke in the previous version (http://bugs.openmpt.org/view.php?id=497).

Audio I/O
- [Fix] <js> With new installations (and probably also upgraded ones), it was possible that OpenMPT was internally rendering at a different sample rate than the sound device was outputting (http://forum.openmpt.org/index.php?topic=5265.0).

Misc
- [Imp] <js> All parts of the Song Properties dialog are now updated instantly when switching between formats.
- [Imp] <js> Made S3M Amiga frequency limits option editable from the Song Properties dialog.
- [Mod] <js> Changed manual format from PDF to CHM. When opening help from certain dialogs, the relevant manual page is automatically opened.
- [Fix] <js> SF2 sample frequency conversion was broken in 64-bit builds (http://bugs.openmpt.org/view.php?id=508).
- [Fix] <js> Modifying patterns, samples, etc. should now always update other views of the same type of the same module properly.
- [Fix] <js> DefaultTemplate option was looking for the template file in the wrong paths.


v1.23.01.00 (29 March 2014, revision 3998)
------------------------------------------
General tab
- [New] <js> Added a tempo tap button. Click several times in a row to tap in the wanted beats per minute.
- [New] <js> Can now clone plugins (and entire plugin chains) to another slot (http://bugs.openmpt.org/view.php?id=35).
- [Imp] <js> When moving a plugin, the entire plugin chain starting from that plugin can now (optionally) be moved.
- [Imp] <js> Show real preset name instead of "current" in the plugin configuration (http://forum.openmpt.org/index.php?topic=3284.0).
- [Mod] <js> Allow editing the global volume in legacy XM files that still have it set to a non-default value.

Pattern tab
- [New] <js> Added redo functionality and named undo points.
- [New] <js> Experimental feature: Seeking in a module tries to keep sample sync. This only works under some basic conditions, e.g. samples with ping-pong loops or portamento effects are not supported. Can be enabled from the general options.
- [New] <js> Alt-clicking a channel header solos / unsolos the channel (tx Rapture).
- [Imp] <js> When right-clicking an order list item, playback no longer jumps to this item anymore if "Follow Song" is active.
- [Mod] <js> Unified note properties dialog from three tabs into one single dialog.
- [Mod] <js> Renamed "row spacing" to "edit step".
- [Fix] <js> Effect letter input does now work when a non-latin keyboard layout (e.g. Cyrillic) is being used (http://bugs.openmpt.org/view.php?id=478).
- [Fix] <js> "Copy Pattern" from the order list context menu didn't copy the last channel properly.
- [Fix] <js> Don't apply split note settings when entering special (^^, ==, etc.) notes.
- [Fix] <js> OpenMPT could crash when displaying default volumes was enabled and an instrument was deleted through the tree view (http://forum.openmpt.org/index.php?topic=5253.0).
- [Fix] <js> Quick Channel Settings: Moving the channel volume slider always disabled the surround settings (http://forum.openmpt.org/index.php?topic=5214.0).
- [Fix] <js> Parameter Editor: Initial point spacing was a bit off, so the last point was sometimes not visible.
- [Fix] <js> Channel Manager buttons are placed properly when using the WinXP theme (http://forum.openmpt.org/index.php?topic=3460.0).
- [Fix] <js> Sometimes, when changing the editor size (e.g. by maximizing a module window), the pattern would stop scrolling.

Sample tab
- [New] <js> Added redo functionality and named undo points.
- [New] <js> Added zoom levels greater than 1:1 (http://forum.openmpt.org/index.php?topic=3563.0).
- [Imp] <js> The sample grid is now visualised using dashed lines.
- [Imp] <js> Sample drawing is now also available for stereo samples.
- [Imp] <js> Sample tuner is now multi-threaded and uses SSE2 instructions when available (this speeds up the tool greatly for big samples).
- [Imp] <js> Slightly more stable frequency calculation when scrolling through the transpose list in IT / S3M formats.
- [Imp] <js> Use MIDI note velocity when previewing samples.
- [Imp] <js> When normalizing loaded samples, prevent their volume from being 0.
- [Mod] <js> Pitch shifting and time stretching does now also work for 8-bit samples without upsampling them first.
- [Fix] <js> Position marks do no longer flicker and disappear when desktop compositing (and thus, Aero) is turned on. The same fix is also applied to the envelope editor, where the problem was less pronounced (http://bugs.openmpt.org/view.php?id=372).
- [Fix] <js> When zooming into samples longer than 32767 sampling points, it was possible that the last few points were not visible (http://bugs.openmpt.org/view.php?id=162).
- [Fix] <js> The zoomed-out sample display was not always accurate on CPUs with AMD MMX extensions or SSE.
- [Fix] <js> With sample selections > 1 second, the fractional part of the selection length was not displayed correctly.

Instrument tab
- [New] <js> Shift-clicking the pitch / tempo lock checkbox enables / disables the lock for all instruments (http://forum.openmpt.org/index.php?topic=5212.0).
- [Fix] <js> Sample slots occupied by the last instrument could be overwritten when loading a new instrument into another slot (http://forum.openmpt.org/index.php?topic=5253.0).
- [Fix] <js> Note preview always uses lowpass filter if "Channel default" filter type is specified. Previously, this was random and depended on how the playback channel has been used previously.
- [Fix] <js> XM panning envelope points should have a range of 0...63 instead of 0...64 (whyyyyy).
- [Fix] <js> Envelopes longer than 32767 ticks can now be scrolled correctly.
- [Fix] <js> Envelope grid is now also displayed correctly on Windows 98.

Tree view
- [New] <js> Double-clicking the instrument library path opens a folder browser dialog to quickly browse to a new location.
- [New] <js> The instrument library is now refreshed automatically when there are changes in the folder (e.g. adding new files).
- [New] <js> Backspace can now be used to go up one directory in the instrument library.
- [Imp] <js> Reduce flicker when sample / instrument status live update is enabled.
- [Imp] <js> Shift + Del in instrument library deletes files permanently (like in Windows Explorer).
- [Mod] <js> If "no loud samples" is enabled, the treeview preview is as loud as it would be in the currently active module's sample editor. Otherwise, it's played at 0dB as before (http://forum.openmpt.org/index.php?topic=5234.0).
- [Fix] <js> Selecting a pattern from the tree view to edit automatically set the document as modified.

Mod Conversion
- [Imp] <js> When converting to MOD, try to compensate for the lack of sample transpose by transposing pattern notes.
- [Imp] <js> When converting to MOD, write default speed and tempo to patterns, if possible.
- [Fix] <js> When converting an IT or XM with instruments to S3M or MOD, the last instrument was not deleted properly, which could lead to some strange sounds until the file would be re-opened.
- [Fix] <js> When converting from XM to MOD, the sample transpose wasn't reset.

VST / DMO Plugins
- [New] <js> Official plugin bridge that you can use to run 64-bit plugins in 32-bit OpenMPT and vice versa, or even plugins of the same bitness as OpenMPT if necessary. Can be enabled per plugin from the plugin manager, or can be force-enabled by setting "VST Plugins.BridgeAllPlugins" to 1.
- [New] <js> The arpeggio pattern effect is now also sent to instrument plugins (http://bugs.openmpt.org/view.php?id=479).
- [New] <js> Added an option in the plugin manager to scan a folder (including subfolders) for plugins (http://forum.openmpt.org/index.php?topic=1692.0).
- [Imp] <js> Raised plugin limit from 100 to 250.
- [Imp] <jh> Actual output latency is now passed to plugins that query it (instead of user's wanted latency).
- [Imp] <js> Plugin Selection Dialog: The up / down keys can be used to select a plugin while the name filter is focussed.
- [Imp] <js> Plugin Selection Dialog: Plugin paths are displayed in a scrollable text box now, so that the complete path can be seen in case it's too long.
- [Imp] <js> Implemented audioMasterGetChunkFile opcode.
- [Imp] <js> Implemented more timing information for plugins that want it.
- [Imp] <js> When rescanning plugins on startup is taking too long, show a progress dialog.
- [Mod] <js> Optimize VST window redrawing a little bit by not filling the window with the default background colour (removes flicker when resizing plugin windows).
- [Fix] <js> OpenMPT should no longer "forget" plugins randomly (http://bugs.openmpt.org/view.php?id=18).
- [Fix] <js> Plugins with same internal ID should no longer confuse OpenMPT's plugin cache (http://bugs.openmpt.org/view.php?id=25).
- [Fix] <js> Some plugins could produce a crash when using the buffer clearing option in export (tx coda).
- [Fix] <js> When recording a plugin's MIDI output, avoid it from being directed back to the same plugin's editor window.
- [Fix] <js> Plugin version is no longer checked when loading preset files (old OpenMPT wrote other values there, so some old presets were no longer readable).
- [Fix] <js> Plugin editor keyboard focus was lost after loading or saving plugin presets (http://bugs.openmpt.org/view.php?id=456).
- [Fix] <js> Don't add no longer existing plugins used in a module file to the list of known plugins after they have been found in the cache (http://forum.openmpt.org/index.php?topic=2304.0).
- [Fix] <js> Presets > 1000 can now also be selected in the plugin editor.
- [Reg] <js> Removed native jBridge support in favour of our own bridge. you can still use jBridge using the default method of plugin stubs, of course.

VST::Specific Plugin Fixes
- [Fix] <js> Poise by One Small Clue should no longer crash if the editor is still open when unloading the plugin (tx coda).
- [Fix] <js> AAS Strum Acoustic GS-1 and Strum Electric GS-1 no longer crash on startup (http://bugs.openmpt.org/view.php?id=454).
- [Fix] <js> ProteusVX no longer breaks OpenMPT's plugin window (http://bugs.openmpt.org/view.php?id=79).
- [Fix] <js> Fixed problems with Korg Wavestation (notes not being triggered / ghost notes) when using the panic button or jumping around in the sequence.

Playback
- [Fix] <js> When interpolation is enabled, interpolated values are no longer read from beyond the loop end, which could lead to clicks and other problems (http://bugs.openmpt.org/view.php?id=304).
- [Fix] <js> Don't potentially crash if the restart order position is followed by nothing but skip patterns.
- [Fix] <js> Glissando should now behave more as one expects in compatible mode (no longer resets after portamentos).
- [Fix] <js> Very small ping-pong loops were detuned sometimes, depending on the mixing frequency (http://schismtracker.org/scdev/read/1447/).
- [Fix] <js> Envelope carry was broken on sample-less channels (only relevant when using envelopes to automate plugins).

MPTM
- [Fix] <js> Loading some modules made with older versions of OpenMPT could produce wrong results when fixing pattern delays if there were parameter control events (since OpenMPT 1.22.06.00).

IT
- [Fix] <js> IT / MPTM instruments referencing sample slots >= 256 from versions older than OpenMPT 1.20 were not readable (http://bugs.openmpt.org/view.php?id=448).
- [Fix] <js> Legacy MPTM file detection could make OpenMPT assume that some valid IT files were invalid MPTM files in some extremely rare cases (tx stinkbug).

IT::Compatible Playback Mode
- [Fix] <js> Panbrello random waveform takes speed parameter into account now. The speed parameter determines for how many ticks the random value should be held.
- [Fix] <js> S5x resets panbrello phase.
- [Fix] <js> If there's a note delay, slide commands in the volume column next to it should not start before the delay has finished.

XM
- [Mod] <js> Volume column panning commands are now imported in the same "dumb" way (16 commands ranging from 0 to 60 instead of 0 to 64) as in FT2 and OpenMPT prior to version 1.20.
- [Mod] <js> For increased compatibility with FT2, the "compatible" mix mode uses the square root pan law (instead of linear pan law) when playing XMs.
- [Fix] <js> Support F00 "stop song" behaviour (it actually just sets the ticks per row to 65536 in FT2, so we can emulate that easily).
- [Fix] <js> Some rare files with malformed sample headers were not loading correctly anymore since OpenMPT 1.20.04.00.

XM::Compatible Playback Mode
- [Fix] <js> The E90 command retriggers the note instantly and only once per row.
- [Fix] <js> Lxx actually sets the panning envelope position if the volume envelope's sustain flag is set.
- [Fix] <js> If there's a note delay, volume column effects are not executed on the first tick and, if there's an instrument number, not on the delayed start tick.
- [Fix] <js> Mind-boggling combinations of portamento and note delay should now behave as in FT2.
- [Fix] <js> The lowest 3 bits of finetune are ignored (must be multiple of 8).
- [Fix] <js> Frequency wrap-around behaviour has been refined a bit to work more like in FT2.
- [Fix] <js> Output period is clamped to 1...31999 (very theoretical range that should only be exceeded with overflowing portamentos).

S3M
- [Fix] <js> If the sample number next to a portamento effect differs from the previous number, the old sample is now kept, but the new default volume is being applied (http://bugs.openmpt.org/view.php?id=474).

MOD
- [Fix] <js> If the sample number next to a portamento effect differs from the previous number, the old sample is now kept, but the new default volume is being applied (http://bugs.openmpt.org/view.php?id=474).
- [Fix] <js> EEx + pattern break handling was always skipping rows whenever an EEx has been found after a Dxx, not only if they were on the same row (fixes Guitar Slinger and Endless by Jogeir).

Other formats
- [New] <js> Added support for 16SVX IFF samples - they are loaded as big-endian samples, while some sources suggest that they should be little-endian. Since I don't have any 16SVX samples, I can only guess which implementation would be correct.
- [Imp] <js> UMX: Added support for Unreal 1997/98 beta files (patch by sezero, http://bugs.openmpt.org/view.php?id=472).
- [Mod] <js> File format change notice: Plugin library names are stored as UTF-8 (instead of ANSI) in module files (MPTM / IT / XM) now. This won't make a difference in 99% of all plugin names probably - I've never come across a plugin DLL with non-ASCII characters.
- [Mod] <js> ITP file format change notice: Instrument paths are now relative to the ITP file if possible and are stored as UTF-8 (instead of ANSI). Embedded samples are now compressed using IT compression.
- [Fix] <jh> DMF: A bogus space was inserted in front of song messages.
- [Fix] <js> DBM: Some fixes mostly related to volume slides and envelopes.
- [Fix] <js> ITP: Song name was not being read.
- [Fix] <js> MT2: Fixed possible crash with some MT2 files (http://www.un4seen.com/forum/?msg=107346).
- [Fix] <js> MT2: Channel volume was not imported at all.
- [Fix] <js> STM: Imported volume commands were slightly off when there was another command next to them.
- [Fix] <js> UAX: Unnecessary empty sample slots were being created.
- [Fix] <jh> Loading split stereo samples from a truncated file could crash since OpenMPT 1.22.04.00 (http://bugs.openmpt.org/view.php?id=486).
- [Fix] <jh> Made PP20 / MMCMP / XPK unpackers more robust.

Stream Export
- [Imp] <jh> Default codec settings (per codec) and file tags are remembered.
- [Imp] <jh> Also show lossy codecs in pattern render to wave dialog.
- [Imp] <js> Resulting file size is no longer limited to 2 GB.
- [Fix] <js> Export no longer fails if song starts with separator (+++) patterns (http://forum.openmpt.org/index.php?topic=5170.0).
- [Fix] <jh> When switching focus to a different window and then back to OpenMPT, the window became unresponsive (http://bugs.openmpt.org/view.php?id=487).

Audio I/O
- [New] <jh> Add an alternate (1-bit) dithering algorithm. Default is still the original ModPlug Tracker dither (0.5-bit).
- [Mod] <jh> Since Windows Vista, there is an unpleasant limiter / compressor in the audio path for floating-point audio APIs with non-exclusive access. OpenMPT clips floating-point samples automatically to prevent this limiter from kicking in when necessary.
- [Imp] <jh> Sound device settings are now remembered per device.
- [Imp] <jh> Added options to open the sound device right at the program start and keep playing silence when stopping sound (useful for ASIO drivers with long initialization times).
- [Imp] <jh> Various improvements to sound device latency handling and ASIO buffer size selection.
- [Imp] <jh> Various improvements to DirectSound output.
- [Imp] <jh & js> Allow specifying a flexible channel mapping instead just the base channel offset for ASIO drivers.
- [Fix] <jh> Insanely high latencies in WASAPI exclusive mode have been reduced.
- [Fix] <jh> Implement all driver to host messages that are required to be handled by the ASIO 2.1 specification.
- [Fix] <js> Fixed possible freeze during start on Windows XP during Kernel Streaming initialization (patch from http://sourceforge.net/p/audacity/mailman/message/31421748/, tx Tomoya).

Misc
- [New] <js> Added (experimental) feature to append existing modules to a currently open module. This copies over all pattern, samples, instruments, plugins, etc. as far as it's possible.
- [New] <js> Added hidden setting for loading a default template ("Paths.DefaultTemplate" - can be either a full path or just a filename that can be found in the template folder, http://bugs.openmpt.org/view.php?id=476).
- [New] <js> MIDI Mapping does now also work with aftertouch messages.
- [New] <js> Added a "Samples" tab to the options dialog which exposes all previously hidden sample and instrument editor options. Two new key behaviours for how to stop sample editor note previews have been added.
- [New] <js> Added command line switch /noAssembly which disables any SIMD-optimized code.
- [Imp] <jh & js> OpenMPT's file handling is now almost fully unicode-aware (http://bugs.openmpt.org/view.php?id=164).
- [Imp] <js> OpenMPT is now large address aware.
- [Imp] <js> Replaced the "slightly" aged Win95-style icon set with a more modern one.
- [Imp] <js> Default key bindings are now automatically added to existing, possibly incomplete keybindings (http://bugs.openmpt.org/view.php?id=4).
- [Imp] <jh> Improved OpenMPT close time by only writing values to the settings files that were actually changed in OpenMPT.
- [Imp] <js> Reduced OpenMPT's initial memory consumption by about 5 MB.
- [Mod] <js> Disabled mix mode RC3 for XM / IT in Song Properties.
- [Mod] <js> New high-resolution application icon by Nobuyuki.
- [Mod] <jh & js> Restructured Sound Card, Player and Equalizer options tabs into Sound Card, Mixer and DSP. Changed the unit of volume ramping settings from samples to microseconds so that stays consistent across sample rate changes.
- [Mod] <js> After 16 years of rotozooming, it's time for a new toy in the About dialog.
- [Fix] <js> Scroll / Num / Caps Lock keys should now work better with toggle-able shortcuts (http://bugs.openmpt.org/view.php?id=13).
- [Fix] <js> Randomly disappearing combo boxes should hopefully be a problem of the past (http://forum.openmpt.org/index.php?topic=3518.0).
- [Reg] <js> Removed simple noise reduction DSP. Noone is going to miss this.
- [Reg] <jh> Removed support for importing old registry-based settings. If you really need to import your settings from a version older than OpenMPT 1.17.02.40 (including MPT 1.16), install and run OpenMPT 1.22 before installing a newer version.

Bundled plugins
- [Imp] <jh & js> The MIDI Input / Output Plugin can now compensate for OpenMPT's audio output latency by delaying the MIDI output accordingly.

Third-Party Libraries
- [Imp] Update flac (v1.3.0), SoundTouch (v1.8.0), smbPitchShift (v1.2), UNMO3 (v2.4.0.5).

Installer/release package
- [New] <js> Added key maps that are compatible with MPT's classic FT2 / IT keymaps (US_mpt-ft2_classic.mkb, US_mpt-it2_classic.mkb, tx Gargaj).


v1.22.07.00 (16 November 2013, revision 3235)
---------------------------------------------
Tree view
- [Fix] <js> Space key couldn't be used when editing labels.
- [Fix] <jh> The global VU meter didn't work properly when previewing instruments in OpenMPT 1.22.06.00.

VST / DMO Plugins
- [Fix] <js> When rendering the full module (i.e. not a selection), the song position was not reset properly, so some plugins were not in sync.

Stream Export
- [Fix] <jh> Exporting to a directory or file name with non-ASCII characters could fail in OpenMPT 1.22.06.00 (http://forum.openmpt.org/index.php?topic=5158.0).


v1.22.06.00 (2 November 2013, revision 3063)
--------------------------------------------
Pattern Tab::Note Properties
- [Fix] <js> IT / S3M volume slide mapping was a bit off.

Tree view
- [Fix] <js> Note-off on key-up was accidentally also applied to the lower part of the tree view.

VST / DMO Plugins
- [Imp] <js> Audio is no longer paused while a plugin is loaded.
- [Fix] <js> SysEx messages are sent to plugins in a different way now. This fixes SysEx messages sent through OpenMPT's MIDI Input / Output plugin.

MPTM::Loading
- [Fix] <js> Loading MPTM files made with older versions of OpenMPT could trash some Parameter Control parameters.
- [Fix] <js> Reading extended instrument and song properties in files with no samples was broken for the I-don't-know-how-manieth-time (also applies to IT files).

IT::Compatible Playback Mode
- [Fix] <js> In Compatible Gxx mode, sliding between two different samples shouldn't switch to the new sample (like in XM).

XM::Loading
- [Imp] <js> Don't enable smooth ramping heuristic for old XM revisions (this feature was introduced in a later version of Fasttracker 2).

MOD::Loading
- [Imp] <js> When loading SoundTracker modules, automatically enable ProTracker 1.x mode.
- [Imp] <js> Re-enabled support for ADPCM-compressed samples.

Other formats
- [Imp] <js> Updated RAR unpacker. All RAR formats up to the current RAR 5.0 are now supported.
- [Imp] <js> DBM: Support for panning envelopes, 32-bit samples, pattern names, multiple songs and various other small improvements.
- [Imp] <js> Added support for AMS (Velvet Studio) format revision 2.0.
- [Fix] <js> AMS (Velvet Studio): Default speed and tempo broke in OpenMPT 1.22.03.00. Instrument fadeout was too quick. Vibrato Envelope is now imported more correctly.
- [Fix] <js> AMS (Extreme's Tracker): 16-bit sample support was broken.
- [Fix] <js> DSM: Fixed broken patterns and added support for delta-encoded samples.
- [Fix] <jh> Loading some malformed files in various format could lead to a crash (introduced in OpenMPT 1.22.03.00).
- [Fix] <jh> WAV Loader: Loading 24-/32-bit WAV files as module crashed since OpenMPT 1.22.04.00 (http://bugs.openmpt.org/view.php?id=436).
- [Fix] <jh> When loading modules from a ZIP file, no longer overwrite existing song comments with ZIP file comments (broke in OpenMPT 1.22.02.00).

Stream Export
- [New] <jh> Use a common dialog for WAV and compressed exporting. Support for FLAC (built-in), Opus and OGG Vorbis has been added.
- [New] <jh> WAV export also supports tags now.
- [New] <jh> Can now also normalize audio during compressed export (via temporary file).
- [New] <js> Added option to clean output buffers of plugins before exporting (renders up to 20 seconds of silence per plugin, http://bugs.openmpt.org/view.php?id=19).
- [New] <jh> Added option to disable cue point writing on pattern transitions in WAV export (http://forum.openmpt.org/index.php?topic=5131.0).

Audio I/O
- [New] <jh> Added support for Kernel Streaming sound output on Windows XP and for WaveRT on Vista or newer. Both drivers are listed as "WDM-KS" in the soundcard options dialog.
- [New] <jh> Added a button to re-enumerate sound devices to soundcard options dialog. This allows selecting sound devices that got added / installed while OpenMPT was already running.
- [Imp] <jh> Removed static limit of 16 DirectSound and 8 ASIO devices.
- [Mod] <jh> Remove /wavex command line option (not relevant anymore on any of the supported Windows versions)
- [Mod] <jh> Always default or fallback to a Wave Out device which is by far the most stable and has the least surprising user experience.
- [Mod] <jh> Slightly changed audio thread code to avoid sporadic deadlocks in Wine.

Misc
- [New] <js> Added command-line option /fullMemDump to write a minidump with heap when OpenMPT crashes.
- [Imp] <jh> Limit WFIR cutoff setting to a sensible range.
- [Mod] <jh> Calculate mixer channel statistics over the interval as maximum used channels instead of an approximation of average used channels.


v1.22.05.00 (31 August 2013, revision 2622)
-------------------------------------------
General Tab
- [Imp] <js> Plugin parameters are now also updated while dragging the corresponding slider (tx madbrain).

Sample Editor
- [Imp] <js> Don't limit size of loaded sample file to the size of physical memory (old code relict).

Instrument Editor
- [Imp] <js> FLAC files are also shown in the file selection dialog.

Tree view
- [New] <js> Can now drag and drop samples / instruments between modules (tx madbrain).
- [Imp] <js> Releasing note keys now also stops sample / instrument previews (tx madbrain).
- [Fix] <js> Previewing sound font instruments in the treeview broke in OpenMPT 1.22.04.00 (http://bugs.openmpt.org/view.php?id=429).
- [Fix] <js> Trying to rename items that are not part of a song folder crashed the application.
- [Fix] <js> Adding and renaming sequences didn't update the tree view properly.

Playback
- [Fix] <js> Fine / extra fine portamento slides in IT / S3M with a parameter of 0 were broken in OpenMPT 1.22.04.00 (http://bugs.openmpt.org/view.php?id=433).

Other formats
- [Fix] <jh> DSM: Support files that start with a slightly different header than usual DSM files (http://forum.openmpt.org/index.php?topic=5091).

Audio I/O
- [New] <jh> Added 32-bit floating point output for drivers that support it.

Misc
- [Reg] <jh> Remove mpt_intl.ini and mpt_intl.dll support code which was solely usable to translate the options list in the general options tab.

Third-Party Libraries
- [Imp] Update zlib (v1.2.8).


v1.22.04.00 (6 August 2013, revision 2581)
------------------------------------------
Pattern Editor
- [Imp] <js> If more than one channel is selected, channel record select and channel reset shortcuts are now applied to all selected channels (tx coda).
- [Imp] <js> Also show name of unsupported commands in status text. Only really useful when importing files that contain effects not compatible with the current edit format.
- [Fix] <js> When removing channels or rows from a pattern, a crash could occur when the cursor was previously placed in a now inaccessible part of the pattern.
- [Fix] <js> After stopping playback, scrolling to previously invisible channels would reveal their last visible VU meter state (broke in OpenMPT 1.22).

Sample Editor
- [New] <jh> Support for floating point .wav files written with old versions of Syntrillium CoolEdit.
- [Mod] <jh> Normalization of 24-/32-bit samples on load is now optional. Disable it by setting "Sample Editor.MayNormalizeSamplesOnLoad" to 0.
- [Mod] <jh> When normalizing of 24-/32-bit samples on load, the sample's global volume is now adjusted to reflect the volume change if possible.
- [Fix] <js> Fixed crash when trying to trigger a note > B-9.
- [Fix] <jh> Reduce quantization noise by correcting the rounding and scaling in floating point conversion and float or 24-/32-Bit normalization when loading such WAV samples.

Tree view
- [Imp] <js> Can now load more than 64 soundfonts (http://bugs.openmpt.org/view.php?id=333).
- [Fix] <js> Fixed a rare crash when switching between previewed files in tree view (probably present since OpenMPT 1.22.01).
- [Fix] <js> Fixed various issues with editing sequence / instrument / pattern names.

VST / DMO Plugins
- [Imp] <js> Plugin Selection Dialog: When using the name filter, highlight matching plugin by default instead of the "no plugin" entry (tx coda).
- [Fix] <js> Preset names with ampersand characters in them weren't drawn properly in the plugin editor.

Playback
- [Imp] <js> Improved internal sample frequency precision.
- [Imp] <jh> Improved precision of polyphase 8-tap resampling filter tables by 1 bit.
- [Mod] <js> Disabled some questionable "optimisations" with cubic spline and linear interpolation that would disable interpolation depending on volume levels and sample frequency.
- [Fix] <js> In IT compatible and "old random variation" mode, panning variation was not applied if the same instrument also had a panning envelope.
- [Fix] <js> Pitch / Pan separation wasn't applied if the channel was panned way to the left.
- [Fix] <jh> Dithering is also applied when using 24-Bit output.
- [Fix] <jh> When applying global volume, ramping up and down lengths were mixed up. For stereo or quad output, the global volume ramping length was also only half the configured length.
- [Fix] <jh> In quad channel output mode, also apply equalizer to rear channels.
- [Fix] <jh> Avoid tiny rounding errors when converting between integer and floating point samples in the mixer.
- [Fix] <jh> Apply AGC volume changes to all channels at once instead of potentially decrementing volume in between processing different output channels. Also, limit ramp down speed to 1 step per sample (as it was for mono output).

MPTM::Loading
- [Mod] <js> Removed order truncation note for old MPTM files with long order lists (the order list was not actually truncated).

IT::Compatible Playback Mode
- [Fix] <js> Fine volume slides in the volume column are only executed on the first tick, and not on multiples of the first tick in case of a pattern delay.

XM
- [New] <jh & js> Added extra smooth ramping option in Song Properties to emulate Fasttracker 2's ramping algorithm (kills most percussion sounds). Set "Misc.SmoothFT2Ramping" to 1 to automatically detect if an XM file was made with Fasttracker 2 to enable this settings automatically.

XM::Loading and Saving
- [Fix] <js> A default speed / tempo of 0 should be ignored in XM headers (fixes transwave by jazz & motion).
- [Fix] <js> Saving XM files with non-existing patterns past the highest existing pattern number in the order list does no longer crash.

XM::Compatible Playback Mode
- [Fix] <js> Emulate FT2's very weird frequency wrap-around behaviour with 2xx effects (http://bugs.openmpt.org/view.php?id=386).
- [Fix] <js> Note-Off + Note Delay + Panning ignores the panning effect.
- [Fix] <js> Arpeggio emulation is now finally 100% accurate with speeds greater than 16.

MOD
- [Fix] <js> EEx + Dxx on the same row causes the target row of Dxx to be skipped in ProTracker (fixes condom_corruption by Travolta).
- [Fix] <js> When using EEx, there should be only one "first tick" event. Ticks that are multiples of the song speed are longer treated as first ticks.
- [Fix] <js> SoundTracker modules with "hidden" patterns in their order list didn't play properly anymore (probably since v1.22.03, affected e.g. Bad Dudes soundtrack).

MOD::ProTracker 1/2 Mode
- [Fix] <js> Frequency limiting was not always done correctly (Fixes black_queen.mod).

Other formats
- [Imp] <js> AMS: Added support for reversed sample loops (starting at sample end).
- [Imp] <js> PTM: Note Cut and some other commands should work better, added support for effects Jxx - Mxx (note slides) and Nxx (reverse sample + offset). Some effects show up as "?" in patterns now, this does not affect playback.
- [Mod] <jh> Replaced LHA unpacker by lhasa. Should be more reliable and support more LHA variants, including PMA and LZS.
- [Fix] <js> RAR support broke in OpenMPT 1.22.02.
- [Fix] <js> MT2: Repeated pattern events are now loaded correctly.
- [Fix] <js> MT2: Convert effects from XM to IT on loading, this fixes e.g. global volume commands.
- [Fix] <js> DSMI AMF: Version 8 / 9 files didn't load correctly.

Stream Export
- [Imp] <jh> Normalizing is now also available for 32-Bit WAV output.
- [Mod] <jh> Always enable "Export as MP3" menu entry and display a useful message box when no MP3 codec is found.
- [Fix] <jh> Rendered output is not clamped before normalizing anymore. WAV output is now dithered properly.
- [Reg] <jh> Remove possibility to export MP3 encapsulated in .wav files. It's not 1999 anymore.

Module cleanup
- [Mod] <js> "Remove unused patterns" no longer automatically executes "rearrange patterns".

Misc
- [New] <js> Added option in the MIDI configuration to ignore certain MIDI CCs when recording to pattern.
- [Mod] <jh> Removed /nomp3 command line switch as MP3 support is now initialized on demand instead of when launching OpenMPT.
- [Mod] <jh> 24-/32-bit samples in DLS files are no longer normalized on load.
- [Fix] <js> Song Length Estimation handles some pattern loops more correctly now (http://bugs.openmpt.org/view.php?id=416).
- [Fix] <js> Song Length Estimation doesn't break with some tempo slide down commands anymore (http://bugs.openmpt.org/view.php?id=416).
- [Reg] <jh> Enable MMX / 3DNow! / SSE acceleration is gone. This option is now always enabled when available.
- [Reg] <js> Removed hidden setting ITCompressionVerification (algorithm has been proven to be stable and verification is now part of the internal test suite).


v1.22.03.00 (18 May 2013, revision 2094)
----------------------------------------
Pattern Editor
- [New] <js> Clipboard entries can now be renamed in the Pattern Clipboard Manager by double-clicking them (http://bugs.openmpt.org/view.php?id=374).
- [Imp] <js> When using Insert Rows, the selection is not cleared anymore, allowing the user to execute the same command several times in a row.
- [Fix] <js> Reverted playback cursor display behaviour to how it worked before OpenMPT 1.22 (the playback cursor no longer stays in the pattern after playback has stopped).
- [Fix] <js> Pattern Step didn't update pattern VU meters properly.

Sample Editor
- [Fix] <js> Split stereo sample didn't update the instrument list in the pattern editor (http://bugs.openmpt.org/view?id=382).

Mod Conversion
- [Imp] <js> When converting to MOD or XM, --- and +++ order items are automatically removed and pattern jump commands are updated accordingly.

VST / DMO Plugins
- [Fix] <js> Changing MIDI input focus to a plugin editor only worked right after focussing the editor for the first time.

Playback
- [Mod] <js> Behaviour change: Allow S9F next to a note to work with looped samples (http://bugs.openmpt.org/view.php?id=12).
- [Fix] <js> Extra-smooth ramping is now also applied with no and linear interpolation (http://bugs.openmpt.org/view.php?id=291).
- [Fix] <js> Per-instrument ramping settings were ignored during wave export in some cases.
- [Fix] <jh> Fix volume ramping on samples played on the first row / tick of a song. Ramping is no longer disabled completely to fix pops due to global volume changes on the first row.

IT::Saving
- [Fix] <js> If an instrument referenced sample numbers >= 256, the sample mapping would break in IT and MPTM files (http://forum.openmpt.org/index.php?topic=5014.0).

XM
- [Fix] <js> Portamento didn't reset finetune in jam007.xm (http://bugs.openmpt.org/view.php?id=390).
- [Fix] <js> Only instrument numbers should reset sample panning, not lone notes (http://bugs.openmpt.org/view.php?id=385).

XM::Compatible Playback Mode
- [Mod] <js> No longer apply global volume on tick 2, since this was only part of the truth (http://bugs.openmpt.org/view.php?id=388).
- [Fix] <js> Fixed Rxy + note / instrument combination (http://forum.openmpt.org/index.php?topic=4999.0).
- [Fix] <js> Note Off for an instrument with no volume envelope only should fade the sample out if there is a volume command in the volume column (http://bugs.openmpt.org/view.php?id=387).
- [Fix] <js> Instrument number resets tremor count (http://bugs.openmpt.org/view.php?id=384).

XM::Loading and Saving
- [Mod] <js> +++ and --- entries are no longer exported to XM files. +++ entries are removed when reading old XM files made with ModPlug.

MOD::Loading
- [Imp] <js> Changed 8xx panning scheme detection heuristic to be less strict (fixes LOOKATME.MOD).

Other formats
- [New] <js> Can now import DIGI (Digi Booster) modules.
- [Imp] <js> DMF: Offset without note should now work.
- [Imp] <js> DMF: Volume 1 should be silent.
- [Fix] <js> MT2: Linear frequency slides were not enabled.
- [Fix] <js> MT2: Stereo samples were not loaded correctly.
- [Fix] <js> MT2: Sample tuning is more precise now (but still not perfect in all occasions).
- [Fix] <js> Reading song message in 669, AMS, DMF, FAR, ULT and MTM files could lead to crashes (since OpenMPT 1.22.02, http://forum.openmpt.org/index.php?topic=5002.0).
- [Fix] <js> Reading ZIP files could lead to crashes (since OpenMPT 1.22.02).

Module cleanup
- [Fix] <js> Rearrange instruments was broken... again.

Audio I/O
- [Fix] <jh> Fixed another possible crash with ASIO devices (http://bugs.openmpt.org/view.php?id=379).
- [Fix] <jh> Fixed crash in quad channel mode (crash occurred only since OpenMPT 1.22.02, but the source for it was there since probably forever).

Misc
- [Imp] <js> Added "made with" tracker identification to most module formats. Can be viewed in Song Properties.
- [Mod] <js> Warning log messages are no longer shown during auto save.


v1.22.02.00 (20 April 2013, revision 1917)
------------------------------------------
Instrument tab
- [Mod] <js> When importing DLS drum samples into an XM instrument, pick the center of the sample's assigned note range as a transpose amount instead of the lowest note of the note range (http://bugs.openmpt.org/view.php?id=376).

Tree view
- [Mod] <js> Instrument previews in the tree view are now played at 0dB.

VST / DMO Plugins
- [Imp] <js> If a plugin editor is focussed, MIDI is now always routed to that plugin.
- [Mod] <js> effBeginSetProgram and effEndSetProgram opcodes are sent when performing a program change.
- [Fix] <js> audioMasterGetPreviousPlug / audioMasterGetNextPlug opcodes were not doing anything that made sense.

VST::Specific Plugin Fixes
- [Fix] <js> OpenMPT could possibly freeze when starting WASAPI output of a module that uses the Sytrus plugin (and possibly other plugins).

IT
- [Fix] <js> Instrument numbers higher than the last instrument act like empty instruments.

IT::Compatible Playback Mode
- [Fix] <js> Fixed a rather rare envelope carry bug introduced in OpenMPT 1.22.01.00.

MOD::Loading and Saving
- [Imp] SoundTracker Loader: Made file rejection heuristics a bit more strict.
- [Fix] SoundTracker Loader: Fixed possible division by zero.
- [Fix] Saving: Maximum sample length was off by a few bytes.
- [Fix] Saving: It was still possible for samples to misalign if the saved sample was originally larger than 128 KiB and had an odd sample count.

Other formats
- [Fix] <js> PSM16 loader: Master volume was not loaded properly.

Audio I/O
- [Imp] <jh> Boosting of audio thread priority can now be disabled in the Sound Card settings. On Windows Vista and later, MMCSS is now used for boosting.
- [Imp] <jh> Support for exclusive device access has been added for WASAPI devices.
- [Mod] <jh> Renamed "Use secondary buffers" option to the negated form "Use primary buffer".
- [Fix] <jh> Fixed a possible crash when stopping a Wave Out device and possible freezes with ASIO / WASAPI devices.

Misc
- [New] <js> Added global, always active VU meter with clip indicator in the main toolbar (http://bugs.openmpt.org/view.php?id=144).
- [Imp] <js> MIDI CC shortcuts should now work in pretty much all places.
- [Imp] <js> When changing MIDI input devices, the change is applied instantly. Previously the old MIDI device was kept open.
- [Fix] <js> Time display was not updated anymore in OpenMPT 1.22.01.00 when jumping around in the order list without actually playing the module.
- [Fix] <js> Options dialog: Pre-amp warning was also shown when changing stereo separation.


v1.22.01.00 (6 April 2013, revision 1749)
-----------------------------------------
Pattern tab
- [New] <js> Can now copy multiple patterns at once (http://forum.openmpt.org/index.php?topic=3706.0).
- [New] <js> Added the Pattern Clipboard Manager to use more than one internal clipboard (http://bugs.openmpt.org/view.php?id=41).
- [New] <js> Chord Editor: Added the possibility to make chords relative to a note entered in the pattern instead of a fixed base note (http://bugs.openmpt.org/view.php?id=360).
- [New] <js> Added shortcut to find nearest instrument number in a channel (tx coda).
- [New] <js> Added shortcuts to toggle PC keyboard / MIDI record note off (http://bugs.openmpt.org/view.php?id=326).
- [New] <js> Added shortcuts: Select Row, Select Event (http://forum.openmpt.org/index.php?topic=3247.0).
- [New] <ks> Added hidden setting "Pattern Editor.RowDisplayOffset" in to specify displayed row offset in the pattern editor (does not affect Goto dialog or pattern effects).
- [Imp] <js> Added fake grace note support for record quantization: If there's already a note on the quantized row, move one row downwards.
- [Imp] <js> Chord mode does now also work if no record channels are selected.
- [Imp] <js> "Record Note Off" also works with chords now.
- [Imp] <js> Higher live record precision.
- [Mod] <js> Play Whole Row While Recording is now also applied to Quick Paste and Clear+Step commands (tx coda).
- [Fix] <js> Play Whole Row While Recording didn't work properly when Row Spacing was set to a value other than 0. Note stops didn't work, either (tx coda).
- [Fix] <jh> Pattern display no longer lags with high Wave Out latency values.
- [Fix] <js> When entering a chord, notes played via instrument plugins were not stopped on key-up.
- [Fix] <js> Setting channel panning from Quick Channel Settings dialog didn't reset the surround flag live.
- [Fix] <js> When inputting MIDI notes > B-9, they are now stopped properly on key-up (tx Knoeki).
- [Reg] <js> Removed possibility to copy parts of the order list in favour of the new multi-pattern copying.

Pattern tab::Find/Replace
- [Imp] <js> Replacing has been sped up significantly, especially with large modules (http://bugs.openmpt.org/view.php?id=334).

Sample tab
- [New] <ks> Can now import MPEG samples (MP1 / MP2 / MP3, requires mpg123).
- [Imp] <js> ITI files can now also be read as samples (only reads the first sample, naturally).
- [Imp] <js> Sustain loop preview is now updated instantly (http://bugs.openmpt.org/view.php?id=108).
- [Mod] <js> 8-Bit/Mono conversion items are now also shown in the context menu if a selection has been made.
- [Fix] <js> Memory was leaked when loading a sample into an empty sample slot and undoing that action.
- [Fix] <js> Inserting samples didn't clear previously existing sample names since some time ago.
- [Fix] <js> The sample filename wasn't imported properly when loading a FLAC sample with embedded RIFF chunks.
- [Fix] <js> Selection length display didn't show the correct length in seconds for long samples.

Instrument tab
- [Imp] <js> Mouse wheel and middle mouse button can be used in Sample Map (http://bugs.openmpt.org/view.php?id=345).
- [Imp] <js> Next / Previous Instrument shortcuts and the Tab key also work on the sample map now (tx coda).
- [Imp] <js> Revised sample slot allocation behaviour when loading sample files as instruments.
- [Mod] <js> Filter mode is now disabled for IT modules (defaults to "Channel default").
- [Fix] <js> After cleaning up instruments, inserting a new instrument would reveal the old (deleted) samples.

Tree view
- [New] <js> Some items (order list, pattern / sequence / sample / instrument names) can now be edited directly from the tree view.
- [Imp] <js> Previewing instruments does not open the audio device for every new preview anymore. Previewing the same file multiple times in a row no longer reloads it from disk every time.
- [Imp] <js> It is now possible to switch between the upper and lower part of the tree view by pressing the Tab key (http://bugs.openmpt.org/view.php?id=101).
- [Imp] <js> Soundfont instruments can now also be previewed for other notes than middle-C.
- [Imp] <js> Pause / Stop playback keyboard shortcuts also work when no module is loaded (to stop preview in tree view).
- [Imp] <js> Navigating with keyboard (e.g. using alphanumeric keys in the instrument browser) should work much better now.
- [Fix] <js> Previewing instruments only worked about every other time.

Mod Conversion
- [Imp] <js> Volume column a/b/c/d slide memory is now fixed when converting to MOD / XM / S3M.
- [Imp] <js> 000 (arpeggio with no parameters) commands are now removed when converting from MOD / XM to other formats.
- [Fix] <js> When resizing small patterns to 64 rows for MOD / S3M, the pattern break command was inserted on the new last row (63) instead of the original last row.

VST / DMO Plugins
- [New] <js> Can now load and save FXB (plugin preset bank) files.
- [New] <js> Can now copy & paste current preset in the plugin editor.
- [New] <js> Added an option in the plugin editor to route a plugin's MIDI output to the pattern / sample / instrument editor.
- [Imp] <js> If no default directory for presets is specified, the plugin's directory is suggested in the load / save dialog by default.
- [Imp] <js> Current program name is now suggested when saving FXP files.
- [Imp] <js> Better preset list creation for plugins that don't support retrieval of indexed program names (such as VOPM).
- [Imp] <js> Plugin Selection Dialog: Selecting "no plugin" no longer makes OpenMPT forget the last used plugin.
- [Imp] <js> Offline rendering state is sent to plugins that request it.
- [Fix] <js> The preset menu is now updated correctly if the plugin requests a GUI update (e.g. internal bank switching).

Playback
- [Imp] <js> Instrument envelopes are now also evaluated if no sample, but a MIDI channel is assigned to the instrument - great for automating plugins using envelopes and macros.
- [Imp] <js> Retrigger note also works with instrument plugins on rows without a note, and also with Cxx volume commands in XM.
- [Mod] <jh> In quad surround mode, the surround channel settings overwrites the reverb channel setting now (previously, it was the other way around).
- [Fix] <js> Fixed problem where one had to press the play button twice after stopping playback (http://bugs.openmpt.org/view.php?id=325).
- [Fix] <js> A crash could occur when using reverb with a mixing frequency higher than 50 KHz (http://bugs.openmpt.org/view.php?id=329).

IT / MPTM
- [New] <js> Experimental support for saving IT-compressed samples. To enable, set the ITCompressionMono=x and/or ITCompressionStereo=x (x is a sum of the following possible values: 1 = normal IT; 2 = Compatibility Export IT; 4 = MPTM) in mptrack.ini's [Misc] section; set ITCompressionVerification=1 to verify if samples are compressed correctly. Compressed stereo samples won't load in older versions of OpenMPT, and compressed samples will cause trouble when reading extended song or instrument properties in old versions, so be careful if you want to be backwards-compatible.

IT::Compatible Playback Mode
- [Imp] <js> Slightly changed arpeggio tick processing to be more accurate with pattern delays.
- [Fix] <js> Retrigger note (Qxy) was broken for instrument plugins in IT compatible mode since OpenMPT 1.20.01.00 (tx Nahkranoth).
- [Fix] <js> There is no unified effect memory between the volume column effects, and the volume slide commands there also don't share their effect memory with the effect column slides.
- [Fix] <js> Envelope reset should now work correctly (http://bugs.openmpt.org/view.php?id=330).
- [Fix] <js> pxx should also reset the surround flag, like all other panning commands.
- [Fix] <js> SCx shouldn't "click" anymore (just like normal note cuts).
- [Fix] <js> Various fixes regarding portamento between different samples, and especially portamento in multisample instruments.

XM::Compatible Playback Mode
- [Fix] Reverted envelope handling changes made in OpenMPT 1.20.01.00 to fix gh-kott.xm.

XM::Loading
- [Mod] <js> Less false positives when trying to detect old versions of MPT.

S3M
- [Fix] <js> SCx shouldn't "click" anymore (just like normal note cuts).

S3M::Loading and Saving
- [Imp] <js> Added support for loading SAx panning (as found in PANIC.S3M, automatically translated to S8x panning).
- [Mod] <js> The channel order is now written in a L1 L2 L3... R1 R2 R3... scheme, instead of L1 R1 L2 R2 L3 R3..., so that channels are evaluated in the same order in ST3 and OpenMPT (ST3 first evaluates "left" channels, then "right" channels - note that this change does not affect the actual panning, though).

MOD::ProTracker 1/2 Mode
- [Imp] <js> Vibrato and Tremolo are not applied on first tick anymore..
- [Imp] <js> Added ProTracker arpeggio wrap-around emulation (fixes the snare sound in doh's "Jim is dead").
- [Fix] <js> The frequency range is now limited properly by taking the sample's finetune setting into account.

MOD::Loading and Saving
- [Imp] <js> Drastically improved support for 15-sample (Ultimate SoundTracker and clones) modules. For example, original Ultimate SoundTracker effects are now handled much better (e.g. in sll7.mod).
- [Mod] <js> Sample pre-amp volume is based on the number of channels, to have the highest possible sample pre-amp without clipping.
- [Mod] <js> Changed heuristic ProTracker 1.x detection: If there are more than four sample swaps between two notes, ProTracker 1.x mode is enabled (previously it was just 16 sample swaps per pattern). This fixes e.g. hoisaga1.mod by Ramon.
- [Mod] <js> Can now create MODs with up to 99 channels.

Other formats
- [Imp] <js> WAV Loader: Loops that only cover the first sample point are ignored during import now.
- [Imp] <js> ITP Saver: If an instrument cannot be saved, a warning is shown.
- [Fix] <js> PAT Loader: Sample frequency was not imported correctly since OpenMPT 1.20.02.00.
- [Fix] <js> MTM Loader: Files with only one pattern were rejected (tx ant1).
- [Fix] <js> Tentative fix for some DLS sounds not loading correctly (http://bugs.openmpt.org/view.php?id=331).

Module cleanup
- [Mod] <js> "Reset variables" also resets channel settings now.
- [Fix] <js> After rearranging samples, some bogus sample slots became visible again when adding a new sample afterwards.

Audio I/O
- [New] <jh> Added support for WASAPI output devices.
- [Mod] <jh> Options Dialog: Changed "Buffer Length" value into "Latency" (real audio latency) and "Update Interval" (for GUI updates). Old buffer length settings are automatically converted to the new quantities.
- [Fix] <jh> Reported ASIO latency was slightly off, so that pattern playback syncing might have been a little off (not very noticeable since ASIO has very low latencies anyway).
- [Reg] <js> Removed poorly implemented Invert Stereo option. It's not 1995 anymore.

Misc
- [New] <js> Added keyboard shortcut: Play song from start of pattern (same as play pattern from start, but doesn't loop the pattern).
- [New] <jh> Add hidden setting "Display.ShowSplashScreen".
- [Imp] <js> Elapsed time display in the status bar is a lot more accurate now (no more rounding errors that pile up over time).
- [Imp] <js> Exclusive file reading rights are no longer requested, so it is now possible to open files that are being read by other applications at the same time (http://bugs.openmpt.org/view.php?id=352).
- [Imp] <js> Editing sample / instrument names on the comments page limits the name length during input instead of just trimming long strings afterwards.
- [Imp] <js> When clicking the "MIDI Record" button and the device is not ready, opening the device is now tried again after the popup settings dialog is closed.
- [Imp] <js> Reduced memory usage.
- [Mod] <js> Improved extension detection when reading files from zip files. When no preferred file extension is found, the biggest file in the archive is now preferred.
- [Mod] <js> Changed default song name to be empty instead of "untitled".

Bundled plugins
- [Imp] <js> The MIDI Input / Output Plugin now stores device names in presets / modules, so that the order of MIDI devices is no longer important (when having e.g. more than one USB to MIDI interface, their device IDs might change depending on which one was plugged in first).
- [Fix] <js> The MIDI Input / Output Plugin could crash when changing devices while MIDI data was being processed.


v1.21.01.00 (22 December 2012, revision 1472)
---------------------------------------------
Pattern tab
- [New] <js> Added option to quantize notes that are recorded live (select from context menu or shortcut).
- [New] <js> Added "Data Entry" shortcuts to increase or decrease the value of the currently selected pattern cells (note, instrument, effect parameters), either by +/- 1 or by a coarse value depending on the column (http://forum.openmpt.org/index.php?topic=3907.0).
- [Imp] <js> If no selection has been made, interpolation shortcuts now interpolate between the nearest notes / instruments / commands above and below the cursor position.
- [Imp] <js> Added shortcuts for Record Select / Split Record Select (tx DJBouche).
- [Fix] <js> Resizing a pattern only created an undo point when the pattern was reduced.
- [Fix] <js> Set Instrument also works if "No Instrument" is chosen (http://forum.openmpt.org/index.php?topic=4178.0).
- [Fix] <js> Non-existing patterns above the highest existing pattern are not displayed as "???" in the order list anymore.

Sample tab
- [New] <js> Can now load and save FLAC samples.
- [New] <js> Added new stereo to mono sample conversion modes: Keep only left / right channel, split stereo sample into two mono samples.
- [Imp] <js> Added shortcuts for "Zoom into Selection" (http://forum.openmpt.org/index.php?topic=4877.0), 8-bit and mono conversion.
- [Imp] <js> When triggering a note, the note frequency is displayed next to the note name in the status bar.
- [Imp] <js> It is now possible to drag and drop multiple samples from explorer.
- [Imp] <js> When saving a sample, the actual sample name is now suggested if no sample filename is specified in IT / S3M / MPTM modules.
- [Imp] <js> Added hidden INI setting "Sample Editor.DefaultFormat" to specify the default format to use when saving samples (possible values: wav, flac, raw).
- [Imp] <js> Added hidden INI setting "Sample Editor.FLACCompressionLevel" to set the compression level (0...8) when saving FLAC samples.
- [Fix] <js> Reducing the size of the sample undo buffer could sometimes lead to freezes (http://bugs.openmpt.org/view.php?id=314).
- [Fix] <js> Fixed a possible crash when creating undo points (e.g. when using loop crossfade with an invalid crossfade length).
- [Fix] <js> Saved WAV files should now finally have a correct file size in the header.

Instrument tab
- [Imp] <js> Moving the envelope tail (using Ctrl + Drag) also works properly if the distance between the moved point and the following point is small.
- [Imp] <js> It is now possible to drag and drop multiple instruments from explorer.
- [Imp] <js> Dragging the mouse over the sample map doesn't invert every note's assignment but applies the same action to all notes now (http://bugs.openmpt.org/view.php?id=244).
- [Fix] <js> Importing DLS / SF2 samples into the sample editor does now properly remove sample attributes not supported by the current format.

Tree view
- [Fix] <js> Rearrange samples / instruments was really buggy.

MIDI Macros
- [Fix] <js> MIDI Macro letters u and v also take global / channel / instrument volume into account.
- [Fix] <js> Zxx is now only applied on first tick (like in Impulse tracker), before any other effects, \xx remains "sane" and is applied on every tick.

VST / DMO Plugins
- [Imp] <js> The Preset menu in the plugin editor is now filled on demand (when clicking it for the first time) to keep the GUI responsive when opening the editor of plugins that have many presets.
- [Fix] <js> Changing the preset from the plugin editor didn't mark the module as modified (http://bugs.openmpt.org/view.php?id=317).

Playback
- [Fix] <js> Reverse pattern loops that are obfuscated through pattern jump commands should now also work correctly when "Loop Song" is off and during Wave Export (http://bugs.openmpt.org/view.php?id=311).

XM::Compatible Playback Mode
- [Fix] <js> Volume column lxx / rxx doesn't overwrite the effect memory of Pxy anymore.

XM::Loading and Saving
- [Fix] <js> Importing patterns >= 240 didn't work in OpenMPT 1.20.04.00 (http://bugs.openmpt.org/view.php?id=308).
- [Fix] <js> XM instrument saving failed in all versions of OpenMPT 1.20 if there were samples in the sample map that were only referenced below C-1 or above B-8 (http://bugs.openmpt.org/view.php?id=324).

S3M
- [Fix] <js> Pattern loops on muted S3M channels were still being processed.

Misc
- [Imp] <js> Added possible fix for some SF2 inaccuracies (tx BeRo).
- [Imp] <js> Added basic support for DLS Level 2 regions (they are just treated like DLS Level 1 regions).
- [Fix] <js> Fixed crash when loading some DLS samples.
- [Fix] <js> Fixed possible integer overflow when reading song messages from files.
- [Fix] <js> Song length detection won't affect actually stored high offset parameter anymore.


v1.20.04.00 (27 October 2012, revision 1398)
--------------------------------------------
General tab
- [Fix] <js> Input boxes in general tab didn't allow for horizontal scrolling.

Pattern tab
- [New] <js> Can now also transpose by arbitrary amounts. Select from context menu or shortcut.

Sample tab
- [Fix] <js> Unsupported types of WAV files (e.g. MP3-compressed WAV) won't crash the program anymore.
- [Fix] <js> Loading XI files as samples could lead to a crash (tx Lucas).
- [Fix] <js> Mass sample export file names were sometimes not sanitized correctly (http://bugs.openmpt.org/view.php?id=300).

Tree view
- [New] <js> It is now possible to rearrange (drag and drop), insert and duplicate (through the context menu) samples and instruments.

VST / DMO Plugins
- [Fix] <js> Plugin Selection Dialog: Adding new plugins didn't focus them as intended.
- [Fix] <js> Plugin Editor: Bypassing a plugin from its editor didn't mark the module as modified.

VST::Specific Plugin Fixes
- [Fix] <js> EZDrummer didn't load its samples until playback was started since OpenMPT 1.20.01.00, for the same reason as the Korg plugins which stopped working (tx coda).

XM::Compatible Playback Mode
- [Fix] <js> Improved XM tremor effect compatibility.

XM::Loading and Saving
- [Imp] <js> Full tempo range (32 - 512) is now also supported for the default tempo in compatibility export, as Fasttracker 2 actually "supports" this (not through the GUI, but it won't sanitize such values in files) and XMPlay also does.
- [Imp] <js> Improved detection of files made with MPT.

MOD
- [Fix] <js> Partly undid Set Finetune changes from OpenMPT 1.20.02.00 (fixes The Wanderer II by Jogeir)

Other formats
- [Fix] <js> ITP Saver: ITP files saved with OpenMPT 1.20.03.00 were corrupted. Files saved with this version can be fixed by writing the byte sequence 10 00 02 (hex) at position $2B (instead of 01 00 00).

Audio I/O
- [New] <js> Added hidden INI setting "Sound Settings.ASIOBaseChannel" in category to specify the first ASIO channel to use for sound output (as a quick and dirty semi-solution for http://bugs.openmpt.org/view.php?id=128).

Misc
- [Imp] <js> Using the mouse wheel to scroll edit controls with spin buttons works on all such controls now (http://bugs.openmpt.org/view.php?id=99).
- [Mod] <js> Changed default resampling type to XMMS-ModPlug.
- [Fix] <js> Wave Export file names were sometimes not sanitized correctly (http://bugs.openmpt.org/view.php?id=300).
- [Fix] <js> Installer shouldn't overwrite key settings files anymore.


v1.20.03.00 (22 September 2012, revision 1359)
----------------------------------------------
Pattern tab
- [New] <js> Playback can now be locked to an order range. The range can be specified from the context menu of an order selection. Locked orders are then shown with a different background colour (http://forum.openmpt.org/index.php?topic=2620.0).
- [Imp] <js> For visual guidance during editing, non-existing pattern numbers are now greyed out.
- [Imp] <js> Added a keyboard shortcut for opening the Quick Channel Settings dialog.
- [Mod] <js> Entering note-offs via MIDI doesn't put an instrument number next to them anymore.
- [Fix] <js> Cursor doesn't exceed the pattern anymore when moving it beyond the right border.
- [Fix] <js> When opening the pattern tab for the first time, the order list should not be scrolled randomly anymore if not necessary.

Pattern tab::Quick Channel Settings Dialog
- [New] <js> Added freely assignable keyboard shortcuts for switching between channels and returning to the pattern editor.
- [Imp] <js> The dialog is now always hidden when changing focus to another window, not only when switching back to the lower part of the pattern view.
- [Fix] <js> Tab order is now correct.

Sample tab
- [Fix] <js> 8SVX Loader: Loops are now also loaded properly if the loop end is precisely at the sample end.

Instrument tab
- [New] <js> "Pitch Bend Range": For instrument plugins, enter the instrument's Pitch Wheel Depth into this box and OpenMPT will now automatically adjust portamento / vibrato commands for this instrument plugin so that they behave identical to sample portamento / vibrato.
- [Imp] <js> Sustain / Loop points cannot be enabled anymore if there is no envelope.
- [Mod] <js> Velocity handling option has been turned into a checkbox (should be easier to grasp).
- [Fix] <js> Loading AIFF files as instruments (or previewing them from the tree view) works now.

VST / DMO Plugins
- [New] <js> Plugins can now also receive tracker portamento (Hxx / 4xx and the like). Vibrato is emulated through pitch wheel messages; the behaviour is identical to sample vibrato if the plugin's actual Pitch Wheel Depth is set up correctly in the instrument tab.
- [Imp] <js> Portamento Up / Down effects are now implemented properly: Memory and fine slides do finally work. (Fine and extra fine slides are currently not supported in the XM format, but you should not use plugins in that format anyway!). The behaviour is now also identical to sample portamento if the plugin's actual Pitch Wheel Depth is set up correctly in the instrument tab. For existing songs, a new option has been added to the Song Properties to retain the old behaviour.
- [Fix] <js> Randomize Parameters reset focus to main window instead of plugin window (http://bugs.openmpt.org/view.php?id=294)
- [Fix] <js> Randomize Parameters doesn't ask the plugin if a parameter is automatable anymore, as some plugins do not seem to set this property at all.
- [Fix] <js> OpenMPT didn't write more than 255 plugins to the settings file since version 1.20 (http://bugs.openmpt.org/view.php?id=267)
- [Fix] <js> A memory leak that occurred when trying to register invalid or missing plugins (e.g. on startup) has been fixed.

IT::Compatible Playback Mode
- [Fix] <js> A channel's key-off status is kept with portamento notes if "Compatible Gxx" is disabled or there is no instrument number next to the new note.

IT::Loading
- [Fix] <js> Overly long (26 characters) sample / instrument name strings found in IT files made with older versions of MPT are now read correctly again.
- [Fix] <js> Silent samples were sometimes loaded into sample slots that were actually supposed to be empty.

XM
- [Fix] <js> All fine slide commands (E1x, E2x, EAx, EBx, X1x, X2x) are supposed to have their own memory. Previously, it was shared between some of the commands.

XM::Compatible Playback Mode
- [Fix] <js> Notes next to note delays are now ignored if the delay is greater than the current speed (*ignoring* any pattern delays). Previously this was only ignored if the delay was greater than the speed *including* pattern delays.

XM::Loading and Saving
- [Imp] <js> When loading an XM file made with an older version of OpenMPT, gxx / 3xx combinations in the same pattern cell are now tried to be upgraded to fit the new behaviour of OpenMPT 1.20.02.00.
- [Fix] <js> Compatibility export broke X1x and X2x (extra-fine portamento) commands.

MOD
- [Fix] <js> Dxx effects that are to the left of a Bxx effect are now ignored (like in the XM format).
- [Fix] <js> Loading 15-sample MODs only worked under lucky circumstances (most likely since OpenMPT 1.20.01.00).

Other formats
- [Imp] <js> 669 Loader: Effects are now imported more accurately.
- [Imp] <js> DMF Loader: Improved effect import to fit more effects into a pattern cell.
- [Fix] <js> AMF (DSMI) Loader: Fixed pattern effects (normal volume slides were always loaded as volume slide + vibrato) and some other bugs; More AMF format revisions (8-14) are supported now.
- [Fix] <js> AMF (ASYLUM) Loader: Transposed samples will now play correctly, default speed / tempo are not ignored anymore.

Audio I/O
- [Mod] <js> Since the DirectSound driver seems to be buggy (see various reports on the issue tracker), OpenMPT defaults to Wave Out now if there's no ASIO driver present.

Misc
- [New] <js> Wave Export: Added option to loop a song a given number of times during export (http://bugs.openmpt.org/view.php?id=221).
- [Imp] <js> Keyboard Settings: Searching for shortcuts does now also work with MIDI CCs.
- [Fix] <ks> Save All / Save None buttons in the Unsaved Files dialog didn't work if there was only one unsaved file (http://bugs.openmpt.org/view.php?id=206).
- [Fix] <js> A known file extension shouldn't suggest a wrong file extension in the WAV / MP3 export dialog anymore (http://bugs.openmpt.org/view.php?id=298).


v1.20.02.00 (7 July 2012, revision 1318)
----------------------------------------
Pattern tab
- [New] <js> Middle-clicking or Ctrl+right-clicking a channel header shows the Quick Channel Settings dialog, where channel name, volume and panning settings can be quickly set up.
- [Imp] <js> After selecting a column through a double click, it is possible to extend this selection to other channels by keeping the mouse button down after the second click (http://bugs.openmpt.org/view.php?id=245).
- [Mod] <js> Order list display is now "blanked" after maximum supported length instead of internal size.
- [Mod] <js> Interpolation and transpose context menu items have been moved to sub menus.
- [Fix] <js> Shift-Click behaviour was inconsistent if a selection has already been made (http://bugs.openmpt.org/view.php?id=249).
- [Fix] <js> An order list beginning with a separator and a stop pattern won't hang the tracker anymore (http://bugs.openmpt.org/view.php?id=255).
- [Fix] <js> Moving channels through Drag & Drop didn't update the channel names properly.
- [Fix] <ks> Pressing and releasing superfluous modifier keys made some pattern selection shortcuts get stuck.
- [Reg] <js> Removed the "Rename Channel" context menu entry in favour of the new Quick Channel Settings.

Sample tab
- [Imp] <js> Improved AIFF support (added support for loop points, up to 32-Bit sample resolution, AIFF-C files and little-endian sample data).
- [Imp] <js> Added support for arbitrary bit resolutions between 1 and 32 bits in WAV files (e.g. 20-Bit sample data).
- [Imp] <js> If zooming the current selection is impossible, the zoom context menu item is greyed out.
- [Fix] <js> Shouldn't crash anymore when cleaning up Undo memory (http://bugs.openmpt.org/view.php?id=232).

Instrument tab
- [Mod] <js> When right-clicking an envelope point, "Insert Point" will now insert the new point a tick to the right instead of inserting no point at all.

Mod Conversion
- [Mod] <js> When converting to XM, pattern breaks for fixing the FT2 E6x bug are now only inserted when necessary.

VST / DMO Plugins
- [Imp] <js> Plugin selection dialog makes use of plugin categories (as reported by the plugins) now.
- [Imp] <js> The current playback position is now also reported correctly to plugins when jumping around in the order list (Previously, it was always reset to the song start).

VST::Specific Plugin Fixes
- [Fix] <js> The Korg Wavestation GUI did not work until song was played for the first time since OpenMPT 1.20. This also fixes the GUI of older versions of the Korg M1 plugin.

Playback
- [Fix] <js> Fixed frequency slide inaccuracies (tx BeRo).
- [Fix] <js> Removed portamento speed A01 "fix". At speed 1, use fine pitch slides instead of normal ones (they behave identically to what OpenMPT did previously at speed 1).

IT
- [Mod] <js> Random filter variation settings are not supported anymore when editing IT files. Please use the MPTM format instead. Importing old files with random filter settings does still work.

IT::Compatible Playback Mode
- [Fix] <js> Combinations of Qxy (retrigger) with a pattern delay at Speed y should now work as intended.
- [Fix] <js> Combinations of SDx with x greater than the current speed combined with tick delay commands didn't work.

IT::Loading
- [Fix] <js> Loading IT files made with older versions of OpenMPT replaces SC0 with ^^ instead of v00 now.

XM
- [Fix] <js> Set Finetune (E5x) should now work as in Fasttracker 2.
- [Fix] <js> Volume column command gxx did not have memory (tx coda). Combinations of gxx and Gxx in the same pattern cell work correctly now.

XM::Compatible Playback Mode
- [Fix] <js> Tremor (Txy) behaves more like in Fasttracker 2 now.
- [Fix] <js> Volume column command l00 sets the panning to full left on every tick but the first.

S3M::Loading
- [Fix] <js> Empty patterns were not loaded correctly.

MOD
- [Fix] <js> Set Finetune (E5x) should now behave more like in ProTracker.

Other formats
- [New] <js> AMS (Velvet Studio) support is finally back (not crashing the tracker this time :). AMS (Extreme's Tracker) support has been improved as well.
- [Imp] <js> WAV Loader also imports loop points when reading a WAV file as a module.
- [Imp] <js> STM Loader imports some effects more correctly now.
- [Imp] <js> UMX Loader checks for a few more contained module formats that are also supported by Galaxy Sound System (STM, 669, FAR).
- [Fix] <js> MDL Loader was severely broken in OpenMPT 1.20.01.00.
- [Fix] <js> MED Loader: Sample transpose should work as intended (at least for MMD1 modules), MMD2 order list works again as well, Tempo vs Speed precedence for value 32 should be correct now.

Misc
- [New] <js> Keyboard Settings: Shortcuts can now also be found by pressing the sought-after key combination. Click search field to reset filter.
- [Fix] <js> F1 was accidentally hard-coded to opening the help file (tx Diamond).
- [Fix] <js> Song Length Estimation also takes per-pattern time signatures into account now.

Bundled plugins
- [Fix] <js> When using more than one instance of the MIDI Input / Output plugin at a time, killing one plugin instance killed all other instances as well.
- [Fix] <ks> The MIDI Input / Output plugin could sometimes send garbage data.


v1.20.01.00 (5 May 2012, revision 1263)
---------------------------------------
General tab
- [Imp] <js> Like the plugin preset box, the plugin parameter selection box is now only populated when it is focussed, to avoid delays with plugins that have tons of parameters.
- [Imp] <js> Default global volume display is now limited to 0...64 (instead of 0...128) for S3M (http://forum.openmpt.org/index.php?topic=4658.0).
- [Mod] <js> Default global volume is not available anymore in the XM format, since it is not supported by the original format.
- [Fix] <js> Switching between plugin presets didn't update the plugin parameter display.
- [Fix] <js> When enabling surround for a channel, panning was not reset properly for playing tracks.

Pattern tab
- [New] <js> Added an option to select a whole channel when double-clicking a pattern cell (tx ko0x).
- [New] <js> Added an option to display the default volume setting of a sample in the volume column if it is empty (obviously inspired by Impulse Tracker).
- [New] <js> It is now possible to record incoming MIDI aftertouch messages to patterns using volume commands or MIDI Macros (http://bugs.openmpt.org/view.php?id=195).
- [New] <js> New shortcuts: Increase / Decrease Row Spacing (http://bugs.openmpt.org/view.php?id=181).
- [Imp] <js> Adding / removing channels through the pattern editor now creates an undo point instead of clearing the undo log completely.
- [Imp] <js> Parameter Control Events have an edit memory now and adhere to the row spacing setting (tx cce, http://bugs.openmpt.org/view.php?id=190).
- [Imp] <js> Added an order list context menu item to add a separator (+++) index.
- [Imp] <js> When recording note-offs in sample mode, Note Cuts are inserted instead of Note Offs.
- [Imp] <js> Song position retrieval also works for sub tunes now, so song properties are restored properly when starting playback from a sub tune (http://forum.openmpt.org/index.php?topic=4578.0).
- [Imp] <js> When trying to paste but no pattern data was found in the system clipboard, previously copied pattern data is now regained from an internal clipboard.
- [Mod] <js> Renamed X Param to Parameter Extension.
- [Mod] <js> Split keyboard settings now affect record groups: If there are channels assigned to both record groups, the lower part of the split keyboard is recorded into record group 2, the higher part is recorded into group 1 (http://forum.openmpt.org/index.php?topic=4568.0).
- [Mod] <js> Shift-Selecting now uses the select key (which is Shift by default) instead of the hard-coded shift key.
- [Mod] <js> Changed maximum width of pattern display to allow for wider displays than 4096 pixels (http://bugs.openmpt.org/view.php?id=215).
- [Mod] <js> Changed maximum undo steps to 100,000.
- [Fix] <js> When changing a note's octave, the triggered note was not stopped on key-up since the early OpenMPT 1.17 days (http://forum.openmpt.org/index.php?topic=4718.0).
- [Fix] <js> Keyboard Split instrument setting was broken in OpenMPT 1.19.
- [Fix] <js> Moving channels and then undoing the move doesn't screw up channel settings anymore (http://bugs.openmpt.org/view.php?id=156).
- [Fix] <js> When undoing an edit switches to another pattern, OpenMPT tries to find a linked order for this pattern, so that continuous scroll keeps working (http://bugs.openmpt.org/view.php?id=189). Might not work reliably if the same pattern is used twice.
- [Fix] <js> When duplicating a pattern sequence that starts with a non-existing pattern (e.g. +++), the pattern view didn't update properly so editing was still taking place in the previously selected pattern (confusing!)
- [Fix] <js> Instruments are now faded out properly when editing XM modules.
- [Fix] <js> Using Keyboard Split, it was possible to input unsupported notes (e.g. C-0 in MOD files).
- [Fix] <js> It was possible to interpolate between a note and e.g. note cut, but it was not possible to interpolate between a note and no note.
- [Fix] <js> Resizing a pattern didn't create an undo point.
- [Fix] <js> Pattern names were not duplicated (http://bugs.openmpt.org/view.php?id=208).
- [Fix] <js> Entering chords didn't do anything if only the note at the cursor position differed from previously entered pattern data.
- [Fix] <js> The Reset Channel shortcut and the shortcut for setting Row Spacing to 9 never worked.

Pattern tab::Note Properties
- [Imp] <js> Better explanation of the MOD E5x effect parameter.
- [Fix] <js> When showing the properties of a #xx (Parameter Extension) effect, negative values could have been shown.
- [Fix] <js> Plugin indices for Parameter Control Events were off by one.

Pattern tab::Find/Replace
- [Imp] <js> Swapped channel numbers in the channel search feature are now treated correctly - if you enter e.g. 15 as the first channel and 3 as the second channel, channels 3 through 15 will be searched.
- [Imp] <js> Volume column parameters are limited better now. It's still possible to do something like "Search for volume command d, replace by volume parameter 24", though... (don't do it!)
- [Imp] <js> Follow Song isn't turned off anymore when using Find/Replace and the song isn't actually playing (http://bugs.openmpt.org/view.php?id=229).
- [Imp] <js> Find/Replace also updates the order list with the correct order now - this doesn't work across multiple sequences yet, though (http://bugs.openmpt.org/view.php?id=152).
- [Fix] <js> Replace instrument -1 didn't work as expected on instrument number 1.
- [Fix] <js> Volume command parameters are now sanitized on replace (previously, it was possible to e.g. replace "v24" with "d", which would have generated the invalid command d24).
- [Fix] <js> Replacing "no note" with note + 1 or note + 12 will not create C-0 / B-0 notes in the pattern anymore.

Sample tab
- [New] <js> Experimental feature: A Sample Tuner which tunes the sample to a specified note.
- [Imp] <js> When changing XM autovibrato settings, they are now automatically propagated to other samples referred by the same instrument.
- [Mod] <js> Loops are now automatically enabled when setting loop points in the sample editor
- [Mod] <js> Changed maximum undo steps to 100,000.
- [Fix] <js> Pasting samples didn't copy over some sample settings (vibrato, etc.) if sample loops were enabled.
- [Fix] <js> WAV Loading / Saving didn't consider RIFF padding bytes since... forever. Old broken samples (only 8-Bit Mono samples with an odd length are affected) should still load correctly.
- [Fix] <js> Saving samples as WAV didn't save sample settings properly.
- [Fix] <js> Deleting sample data adjusted loop points, but not sustain points.
- [Fix] <js> Samples created using the "add silence / resize to" button didn't show up in the pattern editor's instrument list instantly.
- [Fix] <js> Crossfade keyboard shortcut was broken.
- [Fix] <js> Sometimes, the correct sample was not displayed after switching from another tab.
- [Fix] <js> When converting between IT / MPTM and XM, the auto vibrato and sample pan limits were not updated instantly.
- [Fix] <js> Saving and loading loop points in WAV samples is now done according to the RIFF standard (in OpenMPT, the loop end is exclusive, in the RIFF standard it is inclusive). Looped samples saved with older versions of OpenMPT are still imported correctly.
- [Fix] <js> When loading multiple samples at once, existing samples are not overwritten anymore.
- [Fix] <js> When cleaning up samples, the sample spin button is now updated instantly.

Instrument tab
- [Imp] <js> Better default values for loop points are chosen when enabling envelope (sustain) loops.
- [Imp] <js> The sample mapping dialog accepts mouse dragging now.
- [Imp] <js> Zxx value for the selected cutoff value is now shown next to the cutoff frequency (http://bugs.openmpt.org/view.php?id=36).
- [Imp] <js> Filter settings and random variation sliders now have tooltips displaying the actual settings / swing variation.
- [Imp] <js> When replacing an existing instrument, the replacement / deletion of the previously assigned samples can now be undone.
- [Mod] <js> Two envelope points cannot share the same tick anymore in normal mode as well - since there is no interpolation happening between ticks anyway, this is no limitation at all.
- [Mod] <js> Loading an instrument will not put samples into slots referenced by other instruments, even if those slots are empty (http://bugs.openmpt.org/view.php?id=213).
- [Mod] <js> When assigning an instrument plugin, any sample associations are removed if they point to empty samples or if the user confirms the action.
- [Mod] <js> Allow MIDI banks up to 16384
- [Mod] <al> A newly added instrument is no longer assigned to an already existing but unreferenced sample.
- [Fix] <js> Instruments are now faded out properly when editing an XM module. This means that sustain points can now also be tested properly.
- [Fix] <js> Filter frequency display is now updated instantly when toggling the cutoff checkbox.
- [Fix] <js> Loading instruments from other modules is no longer limited to 32 samples.
- [Fix] <js> Fixed possible stack corruption when loading instruments into XM files.

Tree view
- [Imp] <js> The limit of 32 displayed song items has been removed.
- [Imp] <js> If available, drum keys use key names provided by the soundfont instead of pre-defined drum key names.
- [Imp] <js> All supported module files are now shown in the directory browser by default, even if "Show All Files" is disabled.
- [Fix] <js> Fixed mnemonic shortcuts in some context menus.

Mod Conversion
- [Imp] <js> When converting XM to S3M / IT and there is pxx and Cxx in the same event, the commands are swapped (instead of simply deleting the Cxx command).
- [Imp] <js> When converting to XM, samples are automatically converted to instruments if there are no instruments yet.
- [Imp] <js> Instrument numbers next to Note-Offs are now removed when converting to XM.
- [Imp] <js> Envelope loop behaviour is now fixed automatically when converting between XM and IT / MPTM.
- [Imp] <js> Sample undo history is not lost anymore during conversion.
- [Fix] <js> IT <-> XM auto vibrato and panning slide conversion were incorrect.
- [Fix] <js> Instrument fadeout is now limited properly when converting from XM to IT / MPTM.

MIDI Macros
- [New/Fix] <js> The MIDI macro system has been rewritten completely and is now (hopefully) 99% compatible with IT's MIDI macros. Some macro letters have been changed / added, see the "macro help" button in the macro settings for more information (http://bugs.openmpt.org/view.php?id=94).
- [Imp] <js> Added channel and polyphonic aftertouch to MIDI Macro presets.
- [Fix] <js> MIDI Macros for controlling plugin parameters 128 through 131 were broken since probably forever (they did nothing).

VST / DMO Plugins
- [New] <js> Plugins can now send MIDI events to chained plugins. Useful for e.g. LFO or arpeggiator plugins.
- [New] <js> Added "mapped" MIDI channels (like in Impulse Tracker). If a plugin's MIDI Channel is set to "mapped" in the instrument editor, note data is transmitted on a triggered note's pattern channel modulo 16.
- [New] <js> Experimental built-in support for JBridge. If you run OpenMPT with admin privileges now, you can directly run 64-Bit VST plugins in OpenMPT.
- [Imp] <js> Rewrote default plugin editor (the one that is used for plugins with no custom GUI). Multiple parameters are shown at the same time, with the same automation functionality as custom editors (record to pattern, automatic MIDI Mapping by pressing Shift, etc...), remembers window position, etc... (http://forum.openmpt.org/index.php?topic=1974.0)
- [Imp] <js> Searching for multiple unknown plugins will now open only one browser window.
- [Imp] <js> Named DMO parameter values are now displayed properly.
- [Imp] <js> Preset browser in plugin window has been improved for plugins with many presets (like Synth1).
- [Imp] <js> OpenMPT also checks for the new VST DLL entry point ("VSTPluginMain") when loading plugins now, so plugins that only export "VSTPluginMain" and not "main" will now also load (if there are any).
- [Imp] <js> If a plugin fails to load and crashes OpenMPT, it is not loaded the next time OpenMPT is started anymore, to prevent infinite crash loops.
- [Imp] <js> Added support for plugins that change the number of inputs / outputs during runtime.
- [Imp] <js> Preset menu structure in the plugin window is now updated when the plugin tells to do so.
- [Imp] <js> Added support for the (deprecated) GetPreviousPlug / GetNextPlug VST opcodes.
- [Mod] <js> MIDI portamento on muted channels is not processed anymore (http://bugs.openmpt.org/view.php?id=219).
- [Mod] <js> Warnings for known troublesome plugins are now shown when adding plugins to the plugin library instead of when adding them to a song.
- [Mod] <js> MIDI Program and Bank indices start at 1 in all places now.
- [Mod] <js> Parameter indices are always displayed in decimal instead of hex and in a more consistent manner throughout the whole interface.
- [Mod] <js> Knob mode is set to linear (instead of circular) mouse actions for VST plugins that support it.
- [Mod] <js> When using Randomise Parameters, only automatable parameters are now randomised.
- [Mod] <js> If a plugin DLL is not found, OpenMPT tries to find it in the plugin directory instead of the settings directory.
- [Fix] <js> Custom plugin editors don't have a grey bar of nothingness at the bottom anymore in semi-random cases.
- [Fix] <js> Fixed potential problems with multi-threading VSTs when loading a plugin for the first time (tx manx).

VST::Specific Plugin Fixes
- [Fix] <js> When automating parameters from a plugin GUI, it is first checked whether the parameter can actually be automated. This fixes usage of the Shift key (open MIDI Mapping dialog) in e.g. Ugo's Motion and at the same time makes the Shift key work again in Synth1.
- [Fix] <js> Plugins with more than 32 output channels (e.g. Kontakt) do not crash anymore.
- [Fix] <js> SynthEdit plugin settings are now always restored correctly when opening a saved module (http://bugs.openmpt.org/view.php?id=210).
- [Fix] <js> TAL-NoiseMaker and other plugins based on JUCE do not crash anymore when jumping between orders while playback is disabled (tx herodotas).

Playback
- [Mod] <ih, js> Volume ramp up and ramp down are now two different settings. Ramp up is applied when increasing the volume and starting a sample, ramp down is applied when decreasing the volume or cutting the sample. The old behaviour can be achieved by using the same value for both settings.
- [Mod] <js> The default ramp up setting is 16 samples (instead of 42 as before).
- [Mod] <js> Global volume is now applied before all internal DSPs (http://bugs.openmpt.org/view.php?id=72).
- [Mod] <js> Changed 4-Bit panning computation a bit, so that e.g. S80 is true left and S8F is true right.
- [Mod] <js> Resonant filter mixing is now done with floating-point precision. This allows for greater compatibility with Impulse Tracker's resonant filter and eliminates unwanted extreme noises that previously appeared with certain samples, as well as broken filter coefficients at high playback samples rates.
- [Fix] <js> When finishing a sustain loop that is behind a normal sample loop, sample playback is not simply stopped anymore.
- [Fix] <js> Multiple fine pattern delays on the same row are now added up.
- [Fix] <js> The length of a row is now (1 + Row Delay) * (Speed + Tick Delay) instead of ((1 + Row Delay) * Speed) + Tick Delay.
- [Fix] <js> XM / MOD volume and panning slide nibble priority was wrong for slides with both nibbles set. This was only relevant for newly entered note slides, since slide commands loaded from files were automatically fixed (http://bugs.openmpt.org/view.php?id=242).
- [Reg] <js> MMX-accelerated sample mixing has been disabled as it did not work properly with the floating-point precision filter mixing.

IT
- [Mod] <js> Newly created IT files have compatible playback mode enabled by default.
- [Mod] <js> Saving: Files with filter envelopes use a different file version (IT 2.16 instead of IT 2.17) now.
- [Mod] <js> Removed restart position and Pitch/Tempo Lock from IT extensions. They can still be edited when loading an old IT file with restart position set or Pitch/Tempo Lock enabled, but for all other files, they are not available.
- [Fix] <js> Fixed volume and pan drifting when using Volume Swing / Pan Swing in compatible mode (tx Teasy).
- [Fix] <js> Volume Swing range was 0 to 64 while it should be a percentage from 0 to 100 (old files are fixed automatically).
- [Fix] <js> Multiple fine pattern delays on the same row weren't added up.
- [Fix] <js> Channel and global volume slides with both nibbles set are now ignored.
- [Fix] <js> Tone Portamento is now ignored if no note was previously playing.
- [Fix] <js> If there are multiple row delay commands on the same row, only the leftmost command is considered.
- [Fix] <js> Delayed notes that are on the same row as a row delay effect are retriggered on every row repetition.

IT::Compatible Playback Mode
- [Fix] <js> New filter mode which pretty much sounds like Impulse Tracker's resonant filter (http://bugs.openmpt.org/view.php?id=8). The new filter mode is used iff "More IT compatible playback" is turned on and extended filter range is turned off.
- [Fix] <js> The filter is turned on iff either the cutoff is not at maximum or the resonance is not at minimum.
- [Fix] <js> No pan swing, panbrello, panning envelopes, etc. is applied on surround channels in compatible mode anymore (unless Quad Surround mode is enabled).
- [Fix] <js> Sample and instrument panning overrides surround if Quad Surround is disabled.
- [Fix] <js> NNA settings are only recalled when a note entry is found.
- [Fix] <js> A high offset effect next to a note erroneously applied the offset instantly.
- [Fix] <js> Fixed behaviour when picking up notes after a SCx effect.
- [Fix] <js> Envelopes are now paused correctly when using S77 / S79 / S7B.
- [Fix] <js> If a sample stops before it would be retriggered using Qxy, it is not retriggered at all.
- [Fix] <js> Envelope carry cannot pick up an instrument after a SCx note cut anymore.
- [Fix] <js> Envelope loop vs. sustain loop checking priorities were wrong (http://schismtracker.org/scdev/res/1513.html).

IT::Loading
- [Imp] <js> Songs with no order items are now also accepted.
- [Imp] <js> Songs made with MPT 1.0 alpha and beta versions are now shown as such in the version information.
- [Imp] <js> Most files saved with OpenMPT's early "compatibility export" are not detected as MPT 1.16 files anymore.
- [Mod] <js> Some compatibility settings are now always applied (not only in IT compatible mode) and files saved with older versions of OpenMPT are "fixed" automatically to still work with the new settings. Affected settings are: Out-of-range global volume handling, SC0 / SD0 handling, Autovibrato with Sweep = 0, Pitch / Pan Separation depth, slide commands with both nibbles set, pitch envelope loops, Row Delay behaviour.
- [Fix] <js> Envelope points are now sanitized better and envelope points with the high byte missing are now loaded correctly.
- [Fix] <js> Instruments in IT files with no samples are now loaded correctly.

MPTM
- [Mod] <js> Some compatibility settings are now always applied (not only in IT compatible mode) and files saved with older versions of OpenMPT are "fixed" automatically to still work with the new settings. Affected settings are: Out-of-range global volume handling, SC0 / SD0 handling, Autovibrato with Sweep = 0, Pitch / Pan Separation depth, slide commands with both nibbles set, pitch envelope loops, Row Delay behaviour.
- [Mod] <js> Changed default amplification settings from 64 / 128 / 128 to 128 / 48 / 48 as they were messing horribly with precision and could easily lead to distortion.

XM
- [Mod] <js> Newly created XM files have compatible playback mode enabled by default.
- [Fix] <js> Vibrato "ramp down" waveform is now played correctly (was previously played as "ramp up").
- [Fix] <js> Panning slide nibble priority (when both nibbles of the slide parameter are set) was wrong for XM files.
- [Fix] <js> The first tick on a row was always "on" for XM tremor.
- [Fix] <js> Creating a new XM file did not set the panning flag for the first (and only) sample.

XM::Compatible Playback Mode
- [Fix] <js> An instrument number (no matter what number) next to a note-off event recalls the default settings of the previously playing instrument.
- [Fix] <js> Tone Portamento is ignored if it's combined with a note delay.
- [Fix] <js> A great number of other mind-boggling combinations of Note Off, Instrument Number, Note Delay, etc... should also play more like in Fasttracker 2 now.
- [Fix] <js> Great improvements with regards to E6x pattern loop handling in combination with pattern break / position jump effects.
- [Fix] <js> Volume column tone portamento still had an effect memory.
- [Fix] <js> An instrument number does not reset the bidi loop direction anymore.
- [Fix] <js> The portamento target is not reset anymore when there is a note or instrument number with no portamento effect next to it.
- [Fix] <js> Fixed handling of out-of-range notes (http://bugs.openmpt.org/view.php?id=217).
- [Fix] <js> Length Calculation: E60 bug was not handled correctly if the last E6x command was on the last row of the pattern.
- [Fix] <js> Envelope loop / sustain point priorities have been corrected.
- [Fix] <js> Semi-fixed global volume commands: They are not applied on the first tick of a row anymore (unless pattern speed is 1).

XM::Loading and Saving
- [Imp] <js> Volume Column panning is now scaled better when loading or saving XM files, so it is translated to a 0...64 range instead of 2...62.
- [Imp] <js> Saving: Samples that are not associated to any instrument are now tried to be written to XM files anyway (http://bugs.openmpt.org/view.php?id=234).
- [Mod] <js> Some compatibility settings are now always applied (not only in XM compatible mode) and files saved with older versions of OpenMPT are "fixed" automatically to still work with the new settings. Affected settings are: Out-of-range global volume handling, portamento vs. offset priority.
- [Fix] <js> Saving: When saving an XM with no instruments, garbage instrument settings were written.

S3M
- [Mod] <js> \xx command has been removed from S3M format (existing tracks are updated automatically to use the Zxx command instead).
- [Fix] <js> Some commands (Dxy, Exx, Fxx, Ixy, Jxy, Kxy, Lxy, Qxy, Rxy, Sxy) use the last non-zero effect parameter as memory. This fixes for example Satellite One by Purple Motion.
- [Fix] <js> Pattern loops have no per-channel memory in ST3 (tx GreaseMonkey).
- [Fix] <js> Amiga limits are now enforced correctly if the "preserve Amiga limits" flag is set.
- [Fix] <js> If there are multiple row delay commands on the same row, only the leftmost command is considered.
- [Fix] <js> Delayed notes that are on the same row as a row delay effect are retriggered on every row repetition.

S3M::Loading
- [Imp] <js> Default channel panning is now scaled better when loading and saving, for a full 0...256 range.
- [Imp] <js> PixPlay panning heuristics only apply to modules made with versions of Scream Tracker older than 3.20.
- [Fix] <js> MIDI Macros are now cleared when loading S3M files saved with Impulse Tracker 2.13 or older (fixes BABYLON.S3M by Necros)
- [Fix] <js> Some malicious S3M files could previously crash OpenMPT.

MOD
- [Imp] <js> Rewrote MOD magic parsing code a bit; can handle anything from 1 to 99 channel MODs now.
- [Mod] <js> Removed MOD compatibility export, it is now always applied (but only oneshot samples are modified, and they are not modified in memory anymore).

MOD::ProTracker 1/2 Mode
- [Fix] <js> Amiga limits are now enforced correctly.

Other formats
- [Imp] <js> Added hack-ish support for 32-bit float data to the WAV loader (the one that loads WAVs as modules, not as samples).
- [Imp] <js> If opening a WAV file for rendering fails, the user can choose to retry opening the file.
- [Imp] <js> UMX Loader: Instead of "scanning" Unreal files for modules, they are actually parsed correctly now. As a nice side effect, it is now also possible to load UAX files (collections of samples) from older Unreal Engine games as modules.
- [Fix] <js> MIDI Import / Export: Exporting is no longer limited to the first 64 channels. MIDI files with any number of tracks can now be imported (previous limit was 64 tracks).
- [Fix] <js> DBM Loader: Global volume command was broken since OpenMPT 1.19.02.00.
- [Fix] <js> PSM16 Loader: Sample finetune and transpose should be correct now.
- [Fix] <js> PTM Loader: Fixed sample names.

Module cleanup
- [Mod] <js> Reset Song Variables also cleans the MIDI Macros now.
- [Fix] <js> Instrument to Sample conversion broke Parameter Control Events and note cuts / fades / offs.
- [Fix] <js> Sustain loops behind sample loops are not ignored anymore when optimizing samples.

Misc
- [New] <al> Template modules can now be loaded and saved through the "File" menu.
- [New] <al> Example modules can now be loaded from the "Help" menu.
- [New] <ks> Keyboard shortcuts can now be assigned to incoming MIDI CCs. For now, this only works if the pattern, sample or instrument editor is focussed.
- [New] <js> Instead of multiple modal message boxes, a single dialog with a list of unsaved files is now shown when closing the main window. If you don't like the new behaviour, use "Disable modern close dialog" in the general settings.
- [New] <js> The default module type can now be set using "Misc.DefaultModType", e.g. "DefaultModType=mptm" (http://forum.openmpt.org/index.php?topic=4411.0).
- [New] <js> Recent file list length can now be set through a hidden INI option, "Misc.MRUListLength" (up to 15 entries).
- [New] <js> If a crash is encountered, OpenMPT tries to close the audio device (if it is still in use) and rescue all modified files. A memory dump is also created and can be used for debugging.
- [New] <js> Added "Close All" shortcut + menu item (tx Wayfinder).
- [New] <js> Added Finnish FT2 style keymap by cce.
- [Imp] <js> Shortcuts are not processed anymore when a message box is shown.
- [Imp] <js> Keyboard Settings: Added a button to restore default configuration and a text field for searching keyboard shortcuts by name.
- [Imp] <js> Added "/Portable" command line switch, which saves all settings in OpenMPT's directory (just like "UseAppDataDirectory=0" in the [Paths] section of mptrack.ini).
- [Imp] <js> Compatibility export menu item is now greyed out for S3M and MPTM modules.
- [Imp] <js> Plugin Manager: Buttons have mnemonics now, keyboard handler is disabled while the dialog is open, and the plugin list does not collapse anymore when removing a plugin (http://bugs.openmpt.org/view.php?id=186).
- [Imp] <js> Added "Show Settings Folder" menu item to help menu.
- [Imp] <js> Keyboard Settings: Added a search box, so finding a shortcut by name should be much easier now.
- [Imp] <js> The "Amplify MIDI Velocity" option has been changed to use a freely adjustable amplification factor (instead of fixed x2 amplification).
- [Mod] <js> Removed horribly esoteric sample "fixing" that was applied when loading MOD / S3M files or modifying samples in them - it could very well break some totally fine samples.
- [Mod] <js> Channel Manager: Playback is not stopped anymore when stopping when reordering / removing channels.
- [Mod] <js> Song Properties: Modern and Alternative tempo mode is not shown for XM / IT files anymore by default, and deprecated playback flags are now greyed out unless used by the current module. Song flags are not updated "live" anymore.
- [Mod] <js> Revamped MIDI Mapping and Tuning dialogs a bit.
- [Mod] <js> Added some missing shortcuts to the default key bindings (tx Wayfinder).
- [Mod] <js> Compatibility export hints are now hideable.
- [Fix] <js> Wave Export: Fixed infinitely looping export (http://forum.openmpt.org/index.php?topic=3874.0).
- [Fix] <js> BPM approximation also works reliably when a module is not playing now.
- [Fix] <js> Song length estimation for alternative tempo mode was completely wrong (tx Bavi H).
- [Fix] <js> Combo boxes will not disappear randomly that often anymore.
- [Fix] <js> Comments tab: C-5 frequency is now displayed correctly in all formats.
- [Fix] <js> MP3 Export shortcut was broken (http://bugs.openmpt.org/view.php?id=201).
- [Reg] <js> Saving to another module format requires explicit module conversion now, as it was causing more trouble than doing good. Previously, it was possible to simply enter a different file extension in the "Save As" dialog, so editing an IT file and saving it as "foo.mod" would have saved it as a ProTracker MOD instead of an IT file with .mod extension.

Bundled plugins
- [New] <js> OpenMPT ships with a MIDI Input / Output plugin now. It can be used to send incoming MIDI Events to other plugins or send MIDI events to external MIDI gear.

Third-Party Libraries
- [Imp] Update UNMO3 (v2.4.0.3), SoundTouch (v1.6.0), zlib (v1.2.7).


v1.19.04.00 (9 September 2011, revision 1027)
---------------------------------------------
Pattern tab
- [Imp] <js> MIDI controller changes that are not covered by MIDI Mapping also create an undo point now.
- [Fix] <js> Parameter Control Event automation via MIDI Mapping didn't create an undo point if the cursor was in the first row or column (and if it wasn't, it stored too much undo data).

Instrument tab
- [Fix] <js> When editing the first envelope node while compatible playback mode was enabled, the node was moved to the second tick.
- [Fix] <js> Aftertouch messages forwarded to plugins don't mark the module as modified anymore.

Mod Conversion
- [Fix] <js> Sample panning is now properly reset / disabled for MOD / S3M / XM files.
- [Fix] <js> Various instrument properties were not cleared when converting from IT / MPTM to XM.
- [Fix] <js> Sample sustain loops were also not removed when converting from IT / MPTM to XM.

VST / DMO Plugins
- [Fix] <al> VST host version fields didn't follow the actual version of OpenMPT.

VST::Specific Plugin Fixes
- [Fix] <js> Plugins based on the JUCE framework (e.g. TAL-NoiseMaker) don't crash anymore during WAV export.
- [Fix] <ih> Some multi-input plugins like Guitar Rig will not crash anymore.

Other formats
- [Fix] <js> Fixed vulnerabilities in WAV, AMS and DSM loaders (http://secunia.com/advisories/45131/).

Misc
- [Fix] <js> Network paths starting with "\\" are now loaded properly from settings. Previously, they were treated as relative paths.
- [Fix] <js> Adding plugins through the main menu didn't mark the module as modified (http://bugs.openmpt.org/view.php?id=163).


v1.19.03.00 (22 July 2011, revision 921)
----------------------------------------
General tab
- [Imp] <js> When editing panning, surround is disabled and when enabling surround, panning is reset.
- [Imp] <js> When moving a plugin to another slot, plugins routing their output to the selected plugin are now taken into account when choosing a default slot to move the plugin to.

Pattern tab
- [Imp] <js> Channel Surround status is now also indicated in the status bar.
- [Fix] <js> When playing a pattern that is actually not in the sequence and that has more rows than the last played order item, a crash could occur while playing those extra rows. (Welcome to episode 2938 of "this should not have happened after all".)
- [Fix] <js> Shift + Channel Dragging killed the last channel (http://bugs.openmpt.org/view.php?id=133).
- [Fix] <js> When using the pattern play controls (e.g. "Replay Pattern") on a pattern that isn't played in the normal play sequence, tempo and global volume commands on the first played row are not ignored anymore.
- [Fix] <js> Songs shouldn't stop anymore after playing them one time and if playback was initially started using a pattern play mode with loop enabled (http://bugs.openmpt.org/view.php?id=11)
- [Fix] <js> When overwriting Parameter Control Events with normal notes, the pattern cell is now cleared properly.
- [Fix] <js> Using the "Paste Pattern" menu entry in the order list didn't refresh the pattern display.

Sample tab
- [Imp] <js> When selecting parts of the sample, the selection range is now also displayed in samples, not only seconds (http://bugs.openmpt.org/view.php?id=136).
- [Imp] <js> When changing the sample's global volume while removing DC offset, the change is now instantly applied to all channels that are currently playing the sample.
- [Fix] <js> 8-Bit Stereo samples were not saved correctly (http://bugs.openmpt.org/view.php?id=153).

Instrument tab
- [Imp] <js> Two envelope points cannot share the same tick anymore in compatible mode.
- [Fix] <js> Suggested filename when saving instrument was sometimes cut off.

VST / DMO Plugins
- [Fix] <js> When a plugin requests song position in nano seconds, the correct value is now returned (tx coda).
- [Fix] <js> Loading a VST preset (fxp) didn't mark the document as modified (tx BooT-SectoR-ViruZ)

Playback
- [Fix] <js> Filters in XM files aren't reset with every new note anymore (this broke some versions ago).

IT
- [Fix] <js> Saving IT instruments (in both IT and ITI files) with an invalid sample map crashed the tracker (http://bugs.openmpt.org/view.php?id=142)
- [Fix] <js> (Also applies to MOD) When swapping samples on the fly and the current playback position is beyond the new sample's length, it's reset to 0.

MPTM
- [Fix] <js> Saving long envelopes (> 25 envelope points) in the MPTM format never worked in any officially released version. Now you can finally have up to 240 envelope points.

Other formats
- [Fix] <js> ITP Saver: Fixed nasty bug when the internal order length was not 256.
- [Fix] <js> IMF Loader: Orpheus' 8-Bit cutoff range was not converted to MPT's 7-Bit range.

Misc
- [Imp] <js> Tagging: ID3 tags contain a TDRC tag instead of TYER now, as recommend by the ID3v2.4 standard. Also added a TBPM (beats per minute) tag.
- [Imp] <js> Hack detection also notifies about stereo samples in XM files now.
- [Imp] <js> Fixed tab order in the pitch shift dialog.
- [Mod] <js> Song Properties: Legacy mix modes RC1 and RC2 are now only displayed if they are actually used by the module.
- [Mod] <js> When loading a module made with a newer version of OpenMPT which only differs in the build number (last number in the version), no warning is shown anymore. For all other cases, the warning is now also shown for MPTM files.
- [Mod] <js> If opening MIDI In fails, the MIDI config dialog is shown.
- [Fix] <js> MP3 export will no longer result in a heap corruption and thus crash the tracker (http://bugs.openmpt.org/view.php?id=97).
- [Fix] <js> Rendering sub songs to WAV resulted in an endless render loop.
- [Fix] <js> Setup Dialog: Fixed the checkbox list so that it doesn't look weird under Wine (tx jmkz).


v1.19.02.00 (13 May 2011, revision 871)
---------------------------------------
Pattern tab
- [New] <js> Channels can now be moved by dragging their channel header. Holding Shift while doing so duplicates the channel.
- [Imp] <js> Moving channels through the channel manager creates an undo point now.
- [Fix] <js> Order list info text now truncates list length after the first "---" pattern for MOD files in hex display mode as well.

Pattern tab::Note properties
- [Fix] <js> Axx is not limited to value 7F anymore in IT / S3M format.

VST / DMO Plugins
- [New] <js> New menu entry in the plugin editor: Create instrument from plugin.
- [Fix] <js> Fixed note handling in plugin editor for VSTs that actually don't support MIDI input (http://bugs.openmpt.org/view.php?id=102)

Mod Conversion
- [Imp] <js> Improved conversion of Sxx (IT / S3M) and Parameter Control Events.
- [Mod] <js> When converting from MOD / S3M to XM / IT, compatible play is automatically enabled.
- [Fix] <js> Sustain loop conversion didn't work.

Playback
- [Fix] <js> The first triggered note in the pattern / sample / instrument editor is not cut off anymore (tx C-jeff, http://bugs.openmpt.org/view.php?id=123)

IT
- [Imp] <js> When clearing MIDI macros during loading, only the Zxx macros are cleared, but not the global (currently unused) configuration.

IT::Compatible Playback Mode
- [Fix] <js> Panning slides with both parameter nibbles set were not ignored in compatible mode.

XM
- [Fix] <js> When using compatibility export, the number of samples per instrument is now limited to 16.

MOD
- [Imp] <js> Instead of cutting the order list after the first --- pattern, such order items are simply removed from the saved order list. (http://bugs.openmpt.org/view.php?id=118)
- [Fix] <js> "+++" separator patterns were allowed in MOD files, which made them break in other trackers / players (http://bugs.openmpt.org/view.php?id=118).

S3M
- [Imp] <js> When clearing MIDI macros during loading, only the Zxx macros are cleared, but not the global (currently unused) configuration.

Other formats
- [Imp] <js> DMF Loader was rewritten completely and is a whole lot more accurate now.
- [Fix] <js> J2B Loader: Empty sample slots are now treated correctly in new (RIFF AM) J2B files.
- [Fix] <js> DBM Loader: Global volume was scaled wrong.
- [Fix] <js> 8SVX Loader: If no sample could be found in the file, the loader does not claim to have successfully loaded a sample anymore (http://bugs.openmpt.org/view.php?id=117).

Misc
- [New] <js> OpenMPT can now automatically check for updates (daily / weekly / monthly).
- [Mod] <js> "Embed MIDI macros" is now only enabled during song creation if the user's default MIDI macro setup differs from standard configuration.
- [Fix] <js> When using "Convert instruments to samples" in the Song Cleanup dialog, "Remove samples associated with an instrument" actually destroyed all samples.
- [Reg] <js> Removed hidden INI flag to suppress warnings when encountering keymaps with unknown items. This option was introduced when faulty keymaps still threw multiple message boxes.


v1.19.01.00 (1 April 2011, revision 836)
----------------------------------------
Pattern tab
- [New] <js> Clicking and dragging the row numbers selects the whole row in Excel / Calc style (http://bugs.openmpt.org/view.php?id=45)
- [New] <js> The new keyboard shortcuts "Select beat" and "Select measure" can be used to automatically extend the current selection to the beat / measure boundaries.
- [New] <js> Experimental feature: Play the whole pattern row when entering notes and chords into the pattern editor. This can be enabled from the setup screen.
- [Mod] <js> Using the Goto Dialog updates channel parameters and sets the elapsed time now (http://bugs.openmpt.org/view.php?id=28).
- [Mod] <js> Undo steps have been increased from 100 to 1000.
- [Mod] <js> The "Position aware timer" option is gone. The position aware timer is now automatically used. It was optional in the first place because of some buggy code, which is now fixed.
- [Fix] <js> Shrink selection is more consistent with Shrink pattern now: Entries on odd rows are not ignored anymore if there is no entry in the even rows. Also, cleaning of the pattern after shrinking the selection has been fixed - it cleaned whole commands instead of just the selected parts of a command (http://bugs.openmpt.org/view.php?id=89).
- [Fix] <js> Cursor paste was possible even when editing was disabled.
- [Fix] <js> Using Right-Click -> Change Plugin on Parameter Control Events did not work for plugin numbers that were higher than the highest instrument number.
- [Fix] <js> When entering chords into the pattern editor, the module was only marked as modified if the base note of the chord was changed.
- [Fix] <js> When jumping to an order which is normally not played, the song variables are now reset. Previously, if the main song had e.g. a global volume fade out at the end, this was retained when switching to an unplayed order, effectively muting all sub songs.
- [Fix] <js> OpenMPT does not crash anymore when applying the Amplify command on a pattern selection that just covers the note / instrument column of the first channel.
- [Fix] <js> Queueing a "---" or "+++" item now automatically moves the queue "cursor" to the next available pattern. Previously, queueing a "---" pattern restarted the song.
- [Fix] <js> Changing a channel name from the pattern editor didn't mark the document as modified (http://bugs.openmpt.org/view.php?id=65)
- [Fix] <js> When restarting a pattern, the song timer was not reset properly.
- [Fix] <js> Entering a note-off event in the MOD format created an unnecessary undo event.
- [Fix] <js> Automation data is not written to the pattern if the current module format does not support smooth MIDI macros.
- [Fix] <js> Selections were not clamped properly to the end of the pattern sometimes.

Pattern tab::Note properties
- [Fix] <js> Explanation of Q0x was wrong for IT / S3M.
- [Fix] <js> Changing a value didn't create an undo point (http://bugs.openmpt.org/view.php?id=56).
- [Fix] <js> Setting the Parameter Control Event plugin didn't work.

Pattern tab::Find/Replace
- [New] <js> Added Find / Replace mode: Find in current pattern selection (http://bugs.openmpt.org/view.php?id=42).
- [Imp] <js> When changing the content of a combo box, the corresponding checkbox is now automatically checked. Likewise, the "Replace By" checkbox is checked if a checkbox or combo box on the "Replace" tab is enabled.
- [Mod] <js> "Replace All" just creates one undo point now.

Pattern tab::GUI
- [Imp] <js> Special paste modes have been moved to a sub menu in the context menu, to save some space.
- [Imp] <js> Status bar now indicates if highpass filter is enabled on a channel (http://bugs.openmpt.org/view.php?id=92).
- [Imp] <js> The dodgy note colour is now also customisable.
- [Mod] <js> When removing a channel (via context menu) that contains no data in any pattern, no warning is shown anymore.

Sample tab
- [New] <js> There's a new tool to create seamless sample loops: The loop crossfader. Includes a new keyboard shortcut (http://bugs.openmpt.org/view.php?id=53).
- [New] <js> The new "sample grid" feature can create equally-sized sample selections, so it is e.g. easy to split a sample into four equally-sized samples.
- [New] <js> New context menu item and keyboard shortcut: Quick fade for samples. If the sample start is selected, a fade-in is automatically performed. Likewise, if the sample end is selected, a fade-out is performed. If neither is selected, the default amplification dialog is shown.
- [Imp] <al> Ctrl + Mouse Wheel can now be used for zooming into the sample data.
- [Mod] <js> Undo steps have been increased from 100 to 1000 (per sample).
- [Fix] <js> When cutting samples with a loop, the loop end point was not always moved correctly if the cut start was in the loop.
- [Fix] <js> Loop point controls also accept large numbers to be inputted manually.
- [Fix] <js> Sample Undo didn't preserve the sample name.
- [Fix] <al> Changing zoom level should now preserve the view position better (http://bugs.openmpt.org/view.php?id=3).

Instrument tab
- [New] <js> Clicking on an empty plugin slot in the plugin dropdown list opens the "Add Plugin" dialog (tx coda)
- [Imp] <al> Ctrl + Mouse Wheel can now be used for zooming into the envelopes.
- [Imp] <js> When pressing the up arrow key in the sample map while the cursor is on the lowest note (C-0), the sample map doesn't lose focus anymore. It is also not possible anymore to move the sample map out of view by clicking the area above the lowest note.
- [Mod] <js> Copying and pasting envelopes with no points isn't possible anymore. (Who wants to do that anyway?)
- [Fix] <js> Fadeout control also accepts large numbers to be inputted manually (http://bugs.openmpt.org/view.php?id=81).
- [Fix] <js> Changing the filter mode didn't mark the file as modified.
- [Fix] <js> The note mapping doesn't allow items anymore that aren't notes (such as "no note" or "note cut"). Such notes couldn't be entered manually, however when converting from other formats this was possible and it could crash the tracker (http://bugs.openmpt.org/view.php?id=61).
- [Fix] <js> Various actions in the instrument note map and envelope view should now also mark the instrument as modified (when working in the ITP format).

VST / DMO Plugins
- [New] <js> Plugins can now request common file dialogs (file and directory selection).
- [Mod] <js> When automatically inserting a new instrument from the plugin editor, the bank and patch values are now not filled in anymore, so it is easier to change to another patch while editing.
- [Mod] <js> Various small improvements to support VST 2.4 plugins better.
- [Fix] <js> The time signature sent to VST plugins should be correct now. The denominator is always assumed to be 4, so a 6/8 signature is for example not possible.
- [Fix] <js> Fixed garbage characters shown in preset fields of plugins that don't return program names.

VST::Specific Plugin Fixes
- [Fix] <js> Speaker arrangement is now sent to the plugins upon initialization. This fixes Voxengo SPAN 2 (a VST 2.4 plugin).
- [Fix] <js> EnergyXT / ProteusVX GUIs stopped working after closing and re-opening the VST editor (http://forum.openmpt.org/index.php?topic=2307.0).

Mod Conversion
- [Imp] <js> If the new format doesn't support restart positions, it is now tried to convert the restart position to a pattern command.
- [Imp] <js> When converting patterns from a format with instruments to a format without instruments (or when removing all instruments using the cleanup dialog), the instrument note mapping is now also taken care of.
- [Imp] <js> Sample sustain loops are now converted to normal loops if needed and possible.
- [Imp] <js> Bidi loops are disabled when converting to MOD / S3M now.
- [Imp] <js> More warnings are shown, old warning messages were improved.
- [Imp] <js> Volume command priority when converting from XM to IT / S3M has been changed - Cxx overrides vxx in XM, so this is now taken into account.
- [Imp] <js> When converting to XM, the E60 bug is now tried to be compensated.
- [Fix] <js> Q0y means "no volume change" in S3M / IT, but R0y means "continue volume change" in FT2, and converting from IT / S3M to XM didn't consider this. Q0y is now converted to R8y, and E9y is now converted to Q0y (instead of Q8y).

Playback
- [New] <js> New mix mode: Compatible. This is used for MOD / S3M / XM / IT by default and has more appropriate mixing levels for those formats (same levels as Schism Tracker) than mix mode RC3, and it forces soft panning to be *disabled*. Please use compatible mixing levels when working with legacy formats from now on (http://bugs.openmpt.org/view.php?id=6).
- [Imp] <js> Improved the algorithm for finding a free channel for note playback in the editor (does not affect normal module playback).
- [Mod] <js> A new mechanism is used to determine the end of playback. One advantage of the new mechanism is that backwards playing patterns can now be exported to WAV properly (http://bugs.openmpt.org/view.php?id=21). The new code might not stop playback properly if "loop song" is disabled and the user jumped around in the module.
- [Fix] <js> Pattern jumps to the same row + pattern as the jump command are not ignored anymore (http://forum.openmpt.org/index.php?topic=1810.0).

IT::Compatible Playback Mode
- [Fix] <js> Incorrect notes were memorized for PPS (and possibly other effects) when working with instruments that had non-default note assignments (e.g. C-5 => D-4)
- [Fix] <js> Bidi loops are now treated like in IT's software mixer (http://bugs.openmpt.org/view.php?id=29).
- [Fix] <js> Sample autovibrato is now hopefully a bit closer to Impulse Tracker (http://bugs.openmpt.org/view.php?id=5).
- [Fix] <js> The envelope handling was altered slightly to work more like in Schism Tracker. This fixes a combination of Envelope Carry + Portamento as it can be found in "electric bunny" by Alpha C.
- [Fix] <js> Various fixes to playback of multi-sample instruments. "Ultima Ratio" by Nebularia and "Shuttle Departure" by Sphenx sound better now.

IT::Loading and Saving
- [New] <js> Edit history information can now be read from and saved to IT / MPTM files. This is based on an undocumented feature in Impulse Tracker. Use View -> Edit History for viewing or deleting this information.
- [Imp] <js> Autovibrato sweep is now fixed when loading IT files made with old versions of (Open)MPT.
- [Imp] <js> IT files made with ModPlug Tracker 1.00a5 are now also detected as such. Since long patterns can also be created in other trackers (e.g. ChibiTracker), long patterns are not used to identify files made with MPT anymore.
- [Mod] <js> MIDI macros are now cleared when loading IT files made with old Impulse Tracker versions (< 2.14), so that Zxx commands won't break the songs anymore (fixes denonde.it, fix from Schism Tracker).
- [Mod] <js> Sane values are used again for the "cwtv" and "cmwt" header fields when saving IT files; in fact the same values as in compatibility export are used. To be able to distinguish between raped and compatibility-exported IT files, "OMPT" is written in the "reserved" header field. As a consequence, IT files made with OpenMPT can now be loaded in Impulse Tracker again.
- [Fix] <js> Note mapping items that aren't notes (e.g. empty notes) are now ignored when loading and saving.
- [Fix] <js> When saving, non-existing envelopes are now replaced by a default (disabled) envelope, so that they can still be edited in Impulse Tracker.
- [Fix] <js> The extended sample map is not saved anymore in the instrument headers when using compatibility export.

MPTM
- [New] <js> Each pattern can now have a custom time signature (rows per beat and rows per measure) which can be set from the pattern properties dialog (http://forum.openmpt.org/index.php?topic=4022.0).
- [New] <js> Edit history information (read the "IT" section above for an explanation)

XM::Loading
- [Fix] <js> Fixed handling of instruments with no samples, so that instruments assigned to VST plugins work correctly.

XM::Compatible Playback Mode
- [Fix] <js> Various mind-boggling combinations of EDx, notes and instrument numbers should work now.
- [Fix] <js> When there's an instrument number next to a 3xx effect which differs from the previous instrument number, it resets the instrument properties of the previous instrument.
- [Fix] <js> Portamento combined with an Offset command results in the offset command being ignored.

MOD
- [Imp] <js> It's now possible to create MOD files with more than 64 (and up to 128) distinct patterns. Just like in ProTracker, such MOD files are identified by the "M!K!" signature (instead of M.K.)
- [Fix] <js> The maximum speed for MOD files was off by one in some places (31 instead of 32).

MOD::Loading
- [New] <js> Heuristic detection for VBlank MODs. Most MODs use the CIA timer instead of VBlank timing, but some don't.
- [New] <js> Heuristic detection for ProTracker 1.x playback mode: If there is pattern data that looks like it needs on-the-fly sample swapping, ProTracker 1.x mode is enabled.
- [New] <js> Heuristic detection for MODs with 7-bit panning, which is then automatically converted to 8-Bit panning.
- [Fix] <js> Tentative fix for MODs with short loops at the sample start that were most likely not intended.

S3M
- [Mod] <js> Changed some code in the S3M loader that should only affect really broken S3M files which every player handles different anyway (at least my broken version of aa-polym.s3m sounds better now)
- [Fix] <js> Octave 8 was allowed in S3M files while it shouldn't (it wasn't even saved in the file)
- [Fix] <js> Loading: Fix to pattern loader (for empty patterns)
- [Fix] <js> Removed the X param (#) effect from the supported effect list.
- [Fix] <js> Speed and tempo values are now adjusted to what Scream Tracker actually expects (speed 1 - 254, tempo 33 - 255) - anything out of this range is ignored by Scream Tracker, so it is now also ignored by OpenMPT.
- [Fix] <js> Pattern breaks >= C40 are now ignored.
- [Fix] <js> Global volume commands > V40 are now ignored.

Other formats
- [Imp] <js> Garbage characters in sample / instrument / song names should be gone now.. This should e.g. avoid sample names like " ntitled" turning up in modules after deleting sample names.
- [Imp] <js> Improved handling of the note cut effect in PTM (Polytracker) files a bit.
- [Mod] <js> Improved portamento import precision for DBM and ULT loaders (patch from Schism Tracker)
- [Mod] <js> Added a version check to the ITP loader (why was this not there in the first place?)
- [Fix] <js> As MTM files were converted to MOD automatically when being loaded, channel panning was lost. Now they're loaded as S3M instead.
- [Fix] <js> Short loops in AMF / MED files are now ignored (http://bugs.openmpt.org/view.php?id=70).
- [Reg] <js> Disabled the Velvet Studio loader for now, since it either crashes on almost all AMS files or at least imports them completely wrong.

Misc
- [New] <js> WAV Export: Sample-exact cue points are now written at each pattern transition.
- [New] <js> Most MPT hacks in modules can now be found through View -> Find MPT Hacks in Song.
- [Imp] <js> Paths to VST plugins in mptrack.ini and plugin.cache are now also relative in portable mode. This means that finally, *all* stored paths are now relative in portable mode.
- [Imp] <js> Additional new keyboard shortcuts: Panic, View Edit History, Set Invalid / Ignore (--- / +++) Pattern (in the order list), plus the ones mentioned in above categories
- [Imp] <js> Some improvements were made to the Registry / INI reading: If there were no Registry settings because MPT 1.16 was previously not installed, the INI file is now also read as it might contain some lines created by the installer.
- [Imp] <js> Sound Setup: For ASIO devices, only supported sampling rates are now shown.
- [Imp] <js> The instrument list on the comments tab also shows assigned plugins now.
- [Imp] <js> Added Mix Paste (IT Style) to the "Paste Special" edit menu
- [Imp] <js> Macro Editor: User is now warned if the current macro configuration differs from the default configuration but embedding macro configuration is disabled.
- [Mod] <js> Changes to keymap file handling: The active keymap is now always saved to Keybindings.mkb (in either %APPDATA%\OpenMPT or the executable's directory). Any other keymaps are now only overwritten when using the "Save keys as" function (http://bugs.openmpt.org/view.php?id=20).
- [Mod] <js> On first run, the default ASIO driver is now chosen instead of DirectSound (if there is one).
- [Mod] <js> The "Original" mix mode now also has a version number (1.16) to reflect what the "original" thing is.
- [Mod] <js> Updated genre list in the MP3 export dialog.
- [Mod] <js> When using non-ACM MP3 codecs (e.g. lame_enc.dll), 320kbit/s bitrate is now available.
- [Mod] <js> "No extra-loud samples" is now enabled by default (as it's more suitable for mix modes RC3 and Original)
- [Mod] <js> The MMX acceleration label in the Soundcard setup dialog is now updated according to the multimedia extensions that are supported by the CPU (3DNow! / SSE)
- [Mod] <js> Updated the internet link list in the Help menu.
- [Fix] <js> Mod Cleanup: Rearrange patterns was broken when using more than one sequence in the MPTM format (tx Skaven).
- [Fix] <js> Mod Cleanup: Various sample / instrument rearranging functions broke Parameter Control Events.
- [Fix] <js> The text length was calculated wrong in the message reader, leading to a possible buffer overflow when reading song messages with mixed line endings where CR or LF line endings were expected.
- [Fix] <js> When there was no INI file, the size of the upper pattern view was defaulting to a wrong value.
- [Fix] <js> The ID3v2 "comments" field was not formatted properly when exporting to MP3.
- [Fix] <js> unmo3.dll and uxtheme.dll (for theming the general tab) are now loaded "safely", to avoid the currently spreading DLL exploits.
- [Fix] <js> Editing a sample / instrument name on the comments tab didn't mark the module as modified (tx djmakas)
- [Fix] <js> When changing the font size of the song message while the comments tab is open, the message editor is now resized instantly. Previously, only the font size was updated.
- [Reg] <js> "Set highlights to songs' time signatures" is gone. Custom song highlighting is now always applied, and the values found in the colour options are now always applied to new modules.

Third-Party Libraries
- [Imp] Update UNMO3 (v2.4.0.1).


v1.18.03.00 (4 August 2010, revision 673)
-----------------------------------------
General tab
- [Imp] <js> To prevent OpenMPT from hanging while switching between plugins (or switching to the general tab), the preset box is only filled when it gets the focus. This makes working with Synth1 or other plugins with a high amount of presets a lot easier.
- [Mod] <js> Changed tab order of the lower panel (now it's more logical to me)

Sequence editor
- [Imp] <js> When inserting patterns at an empty position, the position counter is not increased anymore.
- [Imp] <js> Improved sequence name display in context menu for empty sequences.

Pattern tab::pattern editing
- [Imp] <js> Just like in MPT 1.16, it is now possible again to interpolate between an effect and "nothing". In that case, the same value as the already existing one is repeated between the two rows.
- [Fix] <js> When the first column of a pattern selection (larger than one selection field) was the parameter column, Parameter Control Event values in this column were not reset properly.
- [Fix] <js> Transposing notes up / down doesn't allow notes which are actually not supported by the current module format (e.g. notes below C-1 in XMs) anymore.
- [Fix] <js> Keyboard shortcut for toggling record state didn't save the change, so it was reset with every new module.

Pattern tab::Note properties
- [Imp] <js> Effect info now shows the real finetune values for E5x in MOD/XM and E2x in S3M instead of just 0...15.
- [Imp] <js> Set envelope position effect (Lxx in XM) is now explained better.
- [Fix] <js> Fixed a crash when accessing the note properties of malicious and not-so-malicious modules (e.g. jt_pools.xm) which have more than 256 sample slots.

Sample tab
- [New] <js> It's now also possible to create sample selections using Shift + click (this is still behaving a bit non-obvious if you don't know what you're doing :).
- [New] <js> Sample Drawing: Horizontal lines can now be drawn by holding down the shift key.
- [Imp] <js> Finetune range is now limited from -8 to 7 for MOD files.
- [Imp] <js> When hovering the relative note and finetune controls, the actual C-5 frequency is now also shown for MOD files. Previously, this only worked for XM files.
- [Fix] <js> When using the spin button next to the finetune or frequency control, the module was not marked as modified.

Instrument tab
- [New] <js> Pressing Ctrl while dragging a point in the envelope editor also moves the tail of the envelope.
- [Imp] <js> More helpful value display for the panning envelope in the status bar with indication what's left and what's right.
- [Imp] <js> If an instrument is not initialized yet, this is done automatically now, so that changes done to the instrument are not lost, although it looks like they are actually applied (e.g. when trying to edit a previously deleted instrument).
- [Imp] <js> Fadeout values up to 32767 are allowed again for XM files, as FT2 can actually handle them (and other apps like Milky support them as well)
- [Imp] <js> Panning ranges from 0 to 256 again for MPTM, and from 0 to 64 for IT files (previously, it ranged from 0 to 255).
- [Imp] <js> Sample Map accepts various new shortcuts now.
- [Imp] <js> When pasting an envelope with a release node, it's now ignored in formats that don't support it.
- [Mod] <js> Envelope release nodes cannot be enabled for IT files anymore, but they are still played for compatibility (One has to start removing the crap from the old formats at some point...).

Tree view
- [Imp] <js> Ask for confirmation when deleting patterns, samples, instruments, sequences.
- [Fix] <js> Deleting a sample from the tree view and then applying undo for this sample in the sample editor crashed OpenMPT.

Mod conversion
- [Imp] <js> Some improvements with converting note cuts, ECx/SCx and EDx/SDx.
- [Imp] <js> When converting to XM, rogue note delays are removed from the patterns to avoid interference with a FT2 bug.
- [Imp] <js> Envelope release nodes are now removed when converting from MPTM.
- [Fix] <js> When converting to MPTM, "+++" separator patterns are not recognized as sub tune indicators anymore.
- [Fix] <js> Channel settings were not reset properly for MOD/XM/S3M, only the first channel was fixed (tx Sam_Zen).
- [Fix] <js> Extra fine portamento was not converted properly when converting from IT/MPTM/S3M to XM.

Playback (see also format-specific changes below)
- [Mod] <js> Invert loop (.MOD effect) is now ignored on 16-bit samples (only important during editing, since .MODs can only contain 8-bit samples anyway)
- [Fix] <js> The Pattern Loop command did not work properly on rows > 255

IT::Saving
- [Imp] <js> If a plugin is specified for an IT instrument and no MIDI channel is assigned, the plugin is written into the IT instrument header (in MPT 1.16's old manner), so that MPT 1.16 / XMPlay / BASS can make us of "FX Send" again (tx Skaven).
- [Imp] <js> If filter envelopes are used, a different value for the cmwt ("compatible with") field is now used in compatibility export (like in SchismTracker).
- [Fix] <js> Instrument panning was not converted properly.

XM::Compatible Playback Mode
- [Fix] <js> Various fixes to the pattern loop command (E6x), including a crucial FT2 bug: When E60 is used on a pattern row x, the following pattern also starts from row x instead of the beginning of the pattern, unless there was a Dxx or Cxx effect.
- [Fix] <js> Prevent notes to be stopped after a fadeout. This way, a portamento effect can pick up a faded instrument which is long enough. This occurs for example in the bassline (channel 11) of jt_burn.xm.

XM::Saving
- [Imp] <js> Panbrello is not saved anymore in compatibility mode.
- [Fix] <js> Completely empty patterns are loaded as empty 64-row patterns in FT2, regardless of their original size. This is now being circumvented by adding a D00 effect at the end of such patterns.
- [Fix] <js> Saving XM files with 127 channels (sigh) was broken.

S3M
- [Fix] <js> Samples with very short loops (4 bytes) are now loaded properly. Fixes "a tiny problem.s3m" by \slash.
- [Fix] <js> Notes with an SD0 effect were not ignored properly when there was a row delay effect on the same row. Now they are ignored in any case.

Other formats
- [Imp] <js> Song messages are now loaded with more accuracy for some formats.
- [Imp] <js> J2B Loader: Files with extended instrument settings and multiple samples per instrument work properly now. Such J2B files were not used in the game but have been created by JJ2 players using MOD2J2B.
- [Imp] <js> OKT Loader: Completely new IFF-based loader, translated from SchismTracker code with permission from Storlek. This loader is a *lot* more accurate, but still misses a few pattern effects.
- [Imp] <js> PSM Loader: Small improvements.
- [Fix] <js> MTM Loader: The "beats per track" (means lines per pattern) setting is now taken into account.
- [Fix] <js> PSM16 Loader: Since the control channels were muted, tempo commands were ignored, effectively slowing down some PSM16 tracks.
- [Fix] <al> MPTM Saver: When deleting patterns using the tree view, it was possible that Parameter Control Notes were not saved properly anymore.

Misc
- [New] <js> Experimental "panic" button on the main toolbar. At the moment, it just kills all VSTi and sample voices.
- [Imp] <js> Added mnemonics to the wave export controls.
- [Mod] <js> In the mod type dialog, the "misc flags" can now be toggled using check buttons instead of an edit field.
- [Mod] <js> Various file loaders / savers: A new logging mechanism is used to display only one message box with errors and warnings instead of many message boxes.
- [Fix] <js> Colour Setup: Some colours in the MPT default colour scheme were not set up properly when switching between presets.

Installer/release package
- [Mod] <js> Updated DE_jojo.mkb to include new shortcuts, remapped a few others (for IT-style).
- [Mod] <js> Updated FR_mpt_(legovitch).mkb and NO_mpt_classic_(rakib).mkb (tx Paul Legovitch, Rakib).


v1.18.02.00 (30 May 2010, revision 610)
---------------------------------------
General tab
- [Imp] <js> Disabled tempo slider for MOD files (it was just confusing)
- [Imp] <js> Disabled global volume slider for MOD files, instead enabled the sample pre-amp slider (so it is also possible to make output louder)
- [Imp] <js> The "output to" dropdown list also shows the actual plugin name now (instead of just the library name).
- [Fix] <js> Moving a plugin in MOD/S3M files doesn't mark them as modified anymore. The channel effect dropdown lists are now also disabled for those module types.
- [Fix] <js> The restart position edit control is disabled for S3M files.
- [Fix] <ks> The background colour of the tabs in the channel configuration is now also correct when using WinXP Luna or Vista/Win7 Aero.

Sequence editor
- [New] <js> "Select All" shortcut also works here now.
- [Imp] <js> The sequence menu also allows to insert empty sequences now.
- [Fix] <js> Jumping between patterns also stops VSTi notes now.

Pattern tab::Pattern editing
- [New] <js> Extended context menu for Parameter Control Events.
- [New] <js> Key shortcut + context menu entry for toggling the plugin editor of the Parameter Control Event that's under the cursor.
- [Imp] <js> Overflow paste now only uses one undo step.
- [Imp] <js> Instead of simply ignoring note off/cut/fade when working with .MOD files, it is converted to C00.
- [Fix] <rf> Effect visualizer is now aware of Parameter Control Events (http://forum.openmpt.org/index.php?topic=3836.0).
- [Fix] <js> When using MIDI record or split keyboard settings, volume data was written into the volume column in MOD format.
- [Fix] <js> When converting Parameter Control Events to MIDI Macros, the instrument index is now also cleaned as well. Noticeable for example when pasting Parameter Control Events into an IT module.
- [Fix] <js> Now, plugin slot 100 can also be automated using Parameter Control Events.
- [Fix] <js> When pasting pattern data that exactly reached the pattern end with overflow paste enabled, a redundant undo point was created.
- [Fix] <js> Entered (volume) effects are now properly validated (makes a difference e.g. in MOD format where it was previously possible to enter effects like Hxx)
- [Fix] <js> Mix Paste: When in MPT behaviour mode, empty FX commands were not overwritten properly when there previously was an effect in that field but only the effect number (and not the param value) was reset.
- [Fix] <js> When deleting all patterns via the tree view and then switching to the pattern editor, pattern 0 is not created automatically anymore, to avoid confusion.
- [Reg] <js> Creating a selection using the Shift key + Mouse click now only works if there was previously no selection made; This seems reasonable as the old shift - behaviour seems to be widely used.

Pattern tab::GUI
- [New] <js> When the ProTracker 1.x mode or the S3M "Amiga" flag are enabled, dodgy notes (i.e lower than C-4 or higher than B-6) are marked red.
- [Imp] <js> The status bar shows plugin and parameter names for Parameter Control Events now as well.
- [Imp] <js> Effect vis: Make use of song's own row highlighting variables instead of fixed global ones.
- [Fix] <js> The status bar ("Position x of y") only the showed order length for the first sub tune if sub tunes were separated by an "---" order item.
- [Fix] <js> Changing a channel plugin in MOD/S3M files doesn't mark them as modified anymore.
- [Fix] <js> When working with multiple sequences, switching to the pattern editor for the first time automatically marked the document as modified.

Pattern tab::Note properties
- [Imp] <js> Don't allow values > 63 for "break to row" commands in MOD/S3M.
- [Imp] <js> Since the behaviour of sliding commands with both nibbles set varies from tracker to tracker, "undefined" is always shown in the note properties in such cases.
- [Fix] <js> In the note properties, the Gxx effect for XM files was not limited properly.
- [Fix] <js> In Note Properties, the waveform display for S[345]x (and equivalent MOD/XM effects) was not always fully visible ("continue" addition was cut off)
- [Fix] <js> Display "fine" / "extra fine" portamento effects properly (S3M/IT/MPTM), display SFx macro properly, display MOD effects with no memory properly.

Pattern tab::Find/Replace
- [Fix] <js> Find/Replace didn't work properly when replacing Parameter Control Events with something that's not a Parameter Control Event.
- [Fix] <js> Instead of turning "Follow Song" off, the Find/Replace dialog toggled it.

Sample tab
- [New] <js> Shift+New = Clone sample slot
- [New] <js> Option to not ask for RAW import settings again (settings are remembered independently for all modules)
- [Imp] <js> Remember previous settings in RAW import dialog
- [Imp] <js> When enabling (sustain) loop and no loop points are set yet, the loop is now set automatically to full sample length or the currently selected part of the sample.
- [Imp] <js> Sample name and filename length are now properly limited.
- [Fix] <js> When applying time stretch / pitch shift to an 8-bit sample and selecting the sample partly lead to partial upsampling, instead of upsampling the whole sample.
- [Fix] <js> Sample Undo: If no custom value was set, the default value was set ridiculously high (tx Paul Legovitch)
- [Fix] <js> Sample Undo: Fixed another possible problem when undoing actions with very little memory left.
- [Fix] <js> It was not possible to create the last sample slot (i.e. pressing "new sample" with a MOD file that had 30 samples would result in an error, although MOD supports 31 samples).
- [Fix] <js> When loading an extremely short raw file (e.g. 1 byte) twice, it crashed OpenMPT.

Instrument tab
- [New] <js> Envelope zooming. Might still look very weird (especially the first tick and around loop points). Includes two new keyboard shortcuts.
- [New] <js> Transpose Up/Down for sample map.
- [Imp] <js> When pasting an envelope, it's now also automatically enabled.
- [Imp] <js> Instrument name and filename length are now properly limited.
- [Imp] <js> "Scale envelope points" is now also available for scaling the values of the points (y axis).
- [Fix] <js> The panning spin button ranged from 0 to 256, however when saving to .IT, 256 was wrapping over to 0. Panning is now limited from 0 to 255.
- [Fix] <js> It was impossible to assign plugin slot 100 to an instrument.

Comments tab
- [Fix] <js> Correct C-5 frequency is now also shown for XM modules.
- [Fix] <js> When editing sample / instrument names, they are limited properly in length now.

Tree view
- [New] <js> Sequences can now be copied to other modules by simply dragging the sequence header into the the other module's sequence header. Does only work between two different modules, not within the same module, and it will not copy the pattern contents.
- [Imp] <js> Display sequence index next to sequence names.
- [Imp] <js> Improved order dragging; It is now also possible to drag an order into a non-MPTM module. In that case, the old order list will be replaced.
- [Imp] <js> J2B files were not shown in the tree view.
- [Fix] <js> Soundfont samples were not playing correctly anymore. Note that soundfont samples in the MIDI library still don't work.
- [Fix] <js> A crash could occur if the instrument library path was too long (e.g. because of malicious strings in the [Paths] section of the INI file)
- [Fix] <js> "Bypass" action for plugins didn't set the document as modified.
- [Fix] <js> Right-Click on module -> Close didn't ask for confirmation when the document was modified.
- [Fix] <js> Insert/Duplicate sequence actions didn't set the document modified. Grey out those two actions if no additional sequences can be added.

VST / DMO Plugins
- [New] <js> The IT instrument note mapping is now also applied to VST instruments (before, it was just available for samples). This way, VST instruments can be transposed easily.
- [Imp] <js> Editor: Instead of just saying the user that the plugin has to be assigned to an instrument to play notes, they are queried now whether they want to automatically add an instrument.
- [Imp] <js> Editor: Added shortcuts for "toggle bypass", "pass keys to plug" and "record params to pattern"
- [Mod] <js> Editor: Changed number of patches per sub menu from 100 to 128. Now, one sub menu equals ones MIDI bank (more logical)
- [Fix] <js> Editor: Preset names starting with ' ' >= char > 'A' were cropped (i.e. "123ABC" was displayed as "ABC")
- [Fix] <js> Editor: Changing a plugin parameter in MOD / S3M files doesn't mark them as modified anymore.
- [Fix] <js> Even if an instrument was muted, a VSTi assigned to this instrument was still playing in the pattern.
- [Fix] <al> Some VSTs that previously wouldn't load might now load fine.
- [Fix] <al> Returned host CanDo values were wrong (since pre-RC1 era).

Mod conversion
- [Fix] <js> When converting from MOD to S3M or IT, the Invert Loop effect was not removed.
- [Fix] <js> When converting from MPTM to another format, the first sequence name is removed and the sequence is now sized properly when merging multiple sequences (tx Skaven).
- [Fix] <js> When converting between XM and IT, the sample autovibrato "sweep" factor is now fixed a bit (since sweep = 0 equals "no sweep" in XM, and "no vibrato" in IT).
- [Fix] <js> When removing instruments from the tree view and converting the module to a different format which also supports instruments, OpenMPT crashed.
- [Fix] <js> When converting to MOD/S3M, the extended filter range flag was not deactivated.
- [Fix] <js> S00 (IT/S3M) does not equal E00 (MOD/XM), as Exx doesn't have effect memory. Trying to convert S00 to the last used value now.
- [Fix] <js> If necessary (S3M), the restart position attribute is reset.
- [Fix] <al> Merging multiple sequences didn't properly convert '---'/'+++' orders.

IT::Loading and Saving
- [Imp] <js> Saving: Compatibility export saves stereo samples again, as other tracker like Schism also support this (and so do the official IT specs).
- [Fix] <js> Saving: Fixed IT sample flags which could potentially cause IT to screw up on loading/saving MPT-made modules with samples that are not used by an instrument.
- [Fix] <js> Loading: ChibiTracker uses a different newline character for the comments text, which was not handled properly.
- [Fix] <js> Loading: Ignore stereo sample flag when loading old IT files (older than IT 2.14) since Impulse Tracker did not reset this flag when importing stereo samples back then (fix from Schism Tracker).
- [Fix] <js> ITI/ITS Loader: Sample flags were not reset when a sample slot was overwritten when loading ITI or ITS files. That way, it was possible that e.g. the bidi loop flag was not disabled when loading a new sample that had a normal loop.

IT::Compatible Playback Mode
- [Fix] <js> Note Cut really cuts notes and does not just mute them (so that following volume commands could restore the sample).
- [Fix] <js> Always reset autovibrato settings when there's an instrument number (fix from SchismTracker).
- [Fix] <js> S77 / S79 / S7B are supposed to pause the envelope, not disable it.
- [Fix] <js> Ignore slide commands with both nibbles set (e.g. D55, PA1, ...).
- [Fix] <js> Default Vibrato / Tremolo / Panbrello waveform values to sine waveform if out of range (e.g. S35).

IT/MPTM/ITP, Instrument extension handling:
- [Fix] <al> Fixes to instrument envelope flag handling (broken in 1.18.00.00).

XM::Loading
- [Imp] <js> Improved detection of an old version of MPT (1.09?).
- [Fix] <js> Some XMs not made with ModPlug were recognized as files made with MPT.
- [Fix] <js> The last XM instrument was not always loaded.
- [Fix] <js> Early versions of Skale Tracker (R.I.P.) apparently wrote malformed XM sample headers, so OpenMPT failed to load such modules. Such files are loaded correctly now (fixes IFULOVE.XM by yeep).

XM::Compatible Playback Mode
- [Fix] <js> Volume column doesn't have an effect memory, most effects with param = 0 are useless. Those are ignored during playback and also when exporting the file in compatibility mode.
- [Fix] <js> Improved handling of the situation when a 3xx effect was used, but previously no note was playing.
- [Fix] <js> An instrument change next to a portamento event is now ignored (fixes partytime.xm by cancer).

MOD
- [Imp] <js> Module creation: When creating a new .MOD, it has 31 sample slots by default.
- [Fix] <js> Saving: Samples were shifted badly if the sample size was odd (wow, this is an OLD bug!).
- [Fix] <js> Saving: If a sample had loop points set, but loop disabled, they were still saved in the .MOD file, resulting in the loop being enabled automatically.
- [Fix] <js> Loading: Very short loops (4-8 bytes long) are not ignored anymore. This fixes "Crew Generation" by Necros.

MOD::ProTracker 1/2 Mode
- [Imp] <js> Amiga note range limits are automatically taken into account.

S3M
- [Imp] <js> Loading: Display a message if an S3M file contains AdLib instruments (rare).
- [Fix] <js> In ST3, muted channels are completely ignored, not even effects are interpreted. Let's try this in MPT, too.
- [Fix] <js> Slightly better handling of vibrato/tremolo waveform types (although the ST3 help screen says that continuous vibrato/tremolo is possible, it does actually not work.)
- [Reg] <js> Cannot create S3M files with more than 100 patterns anymore, because...
- [Fix] <js> ... it was possible to create S3M files where the 256 parapointers were not enough, resulting in incomplete/broken files.
- [Fix] <js> Note Cut really cuts notes and does not just mute them (so that following volume commands could restore the sample)

MPTM
- [New] <rf> Added combined note delay & note cut command for MPTM only (":xy" means delay until tick x and play for y ticks).
- [Fix] <js> MPTM Saving: Possible crash when trying to save a file after deleting an instrument slot.

Other formats
- [Imp] <js> MT2 (MadTracker): Make use of the "lines per beat" header field. Release node is not set anymore for each and every instrument envelope. MT2 files are now loaded as IT files by default (instead of XM) because of their extended instrument properties (NNAs, filters, etc.) - I wonder what this breaks, but I don't bother much because MT2 support was already 100% broken before this. :) Some MT example tunes sound a bit better now at least.
- [Fix] <js> PTM: Fixed an unhandled null pointer exception that occurred when loading some unsupported RAR files.
- [Fix] <js> PSM16: Fix for note cut on tick 0 (warbot tune from Silverball).
- [Fix] <js> ULT: Rewrote loader based on Storlek's loader from Schism Tracker (used with permission from the author). This is a lot more accurate than our old loader.
- [Fix] <js> DBM: Various fixes to increase import precision and an endianness fix.
- [Fix] <js> AMF DSM: Made some changes to the pattern reader, which eliminate the strange "vC7" commands in the pattern. I have found no hints on whether my fix is correct or not, apart from the fact that those AMF files that I have play a lot better now. And it makes kind of sense...
- [Fix] <js> IMF: Some fixes copied from Schism Tracker (copied from MikMod).

Module cleanup
- [Imp] <js> In the cleanup dialog, mutually exclusive items are now automatically unchecked, to avoid confusion.
- [Imp] <js> Made the dialog look a bit nicer.
- [Fix] <js> Because of an error in pattern count retrieval, the last pattern was not checked when looking for unused samples which sometimes resulted in deleted samples (although they were actually used).
- [Fix] <al> Fixed a memory leak in pattern name handling.

Wave Export
- [New] <js> It is now also possible to render by instrument (i.e. one wave file per instrument).
- [Imp] <js> The "render by channel" mode ignores empty channels now.
- [Imp] <js> When switching to another task and switching back to OpenMPT, it is now less likely that the infamous "OpenMPT does not respond" dialog from Windows occurs.

Misc
- [New] <js> INI Settings: When portable mode is enabled, the most common paths in mptrack.ini are now translated to relative paths (if possible). Plugin paths are not translated to relative paths (yet).
- [New] <js> Modules in gzip archives (single-file .gz archives) can now be imported, just to satisfy my laziness when downloading gzipped modules from Amiga Music Preservation. :-P
- [Imp] <js> Mod Loaders: Instead of creating message boxes in various places, errors are now written to the log and one message box is shown for each file.
- [Imp] <js> Binary files are now less often falsely recognized as early MOD files (15 samples without header): If the order list contains order list items > 128, loading is cancelled.
- [Imp] <js> Song Properties: Tool tips are shown for various controls.
- [Mod] <js> Options: Removed the "space bar repeats previous action" option, as it did not work anymore since the new key handler is used; in fact, this option can be achieved instead by using the "on key hold" for the "quick paste" key shortcut.
- [Reg] <rf> Removed old "velocity" volume command, which was experimental and unused.
- [Mod] <js> Replaced default VU-meter colours for the MPT scheme by more pleasant colours that were already used for the other themes.
- [Mod] <js> Updated internet links (ModPlug Central Forums link is now a permalink)
- [Fix] <js> Multi window edit: When (un)muting a channel from the general tab in window 1, it was instantly shown in the pattern editor of window 2, but not vice versa.
- [Fix] <js> Channel Manager: When removing channels using the channel manager, their names were not cleared properly.
- [Fix] <js> Song Length Estimation: Increased accuracy *a lot*! Doesn't get tricked by pattern jumps anymore, hehe. :)
- [Fix] <al & js> Instrument I/O: OpenMPT-specific flags in old ITI / XI files are loaded correctly again (broken in 1.18.00.00).
- [Fix] <js> When using the "close file" shortcut several times in a row so that multiple message boxes popped up, it was possible to crash OpenMPT.
- [Reg] <js> Removed AutodetectITplaystyle option, since the tracker detection works reliably enough now. Tracker detection can not be ignored anymore now.

Installer/release package
- [New] <js> Ladies and gentlemen... we finally have an installer. :)
- [Mod] <js> Updated DE_jojo.mkb.
- [Mod] <js> Updated Paul Legovitch's keymap (now also suitable for desktop keyboards).
- [Mod] <al> Updated default keybindings.


v1.18.00.00 (26 January 2010, revision 475) internal test build
---------------------------------------------------------------
General tab
- [Fix] <js> Channel name input field was not limited properly.

Sequence editor
- [New] <al> Can now copy/cut/paste order selections.
- [Imp] <js> Using the keyboard manager for shortcuts. 0...9, + and - keys are now also configurable.
- [Imp] <js> Duplicate / Create new pattern shortcuts do also work here now.
- [Imp] <js> Show cut/copy/paste orders in context menu.
- [Imp] <js> Middle click can now also be used for queuing patterns.
- [Fix] <js> Pasting orders now removes "+++" items if they are not supported by the current format.
- [Fix] <js> Fixed display error when selecting multiple orders, inserting them and clicking on another order (only first order of previous selection was un-highlighted).

Pattern tab::Pattern editing
- [New] <js> New paste mode "push forward paste", which resembles the default paste behaviour of Impulse Tracker. Includes new shortcut.
- [New] <js> New paste mode "paste flood" pastes the clipboard content again and again until it hits the bottom of the pattern (overflow paste will be disabled automatically if paste flood is used, for obvious reasons).
- [Imp] <js> When using the MPTM format, plugin param changes are written to the pattern as Parameter Control Events (instead of smooth MIDI macros).
- [Imp] <js> Assume that the clipboard pattern format is IT (instead of MOD) if no information about the format is available.
- [Imp] <js> Pasted Commands are converted if necessary, and commands that are invalid in the current format are removed.
- [Imp] <js> If "record note off" is enabled and Note Off commands are not supported by the current format, try Note Cut and volume commands.
- [Mod] <js> It is impossible to enter something into the volume column in MOD format now.
- [Mod] <js> When interpolating Parameter Control Events, the plugin number and note type won't get overridden if the note type is already PC or PCs.
- [Fix] <al> Pattern Copy & Paste: Mix paste behave better with parameter control notes.
- [Fix] <js> Amplify acted VERY weird when it was applied on an instrument that's not assigned to any sample.
- [Fix] <js> Amplify doesn't use volume column in MOD format anymore.
- [Fix] <js> When recording live from the keyboard, SDx shouldn't exceed the song speed anymore.
- [Fix] <js> Got rid of possible redundant undo points.
- [Fix] <js> Parameter Control Events are now deleted properly (last column).
- [Fix] <js> Copying only the param column of Parameter Control Events overwrote the value column when pasting them.
- [Fix] <js> Entering Note Fade notes didn't work the "old style" way.

Pattern tab::GUI
- [New] <js> Channel rename dialog in channel header context menu.
- [Imp] <js> Tidied up the upper panel. It fits perfectly on a 1024x768 screen with tree view enabled and also works on 800x600 with tree view disabled. With the new layout, about 8 more pattern rows can be seen in comparison to the old, bloated 1.17.02.* interface.
- [Mod] <js> Due to this cleanup, the "split keyboard" feature has been removed from the interface. The split keyboard settings dialog can now be accessed by using a shortcut, which should be even faster than the old method.
- [Imp] <al> If keyboard split is active, instrument drop list will show split instrument and split note.
- [Imp] <js> Grey out pattern name input field when in MOD/S3M mode.
- [Imp] <js> Added sequence selection edit control.
- [Mod] <js> Instead of hiding the sequence name control, just disable it (looks better).
- [Fix] <js> If the current pattern is the last possible pattern in the sequence, no "next pattern" is displayed.

Pattern tab::Note properties
- [Imp] <js> Hopefully correct limitation and explanation of "Set * waveform" parameters...
- [Imp] <js> Better explanation of "Invert Loop" parameter.

Pattern tab::Find/Replace
- [Imp] <js> When using Find&Replace, "follow song" will be disabled, because it's pointless and unusable with "follow song" on.
- [Fix] <js> Find&Replace didn't create an undo point.

Pattern tab::Misc
- [New] <js> New keyboard shortcut in pattern context: Duplicate pattern.
- [Fix] <js> When in sample mode, samples were never stopped when in new-style note off mode, which lead to sample jam when using long/looped samples.

Sample tab
- [New] <js> Sample Undo. 100 steps per sample (independent), undo buffer is cut off at a tenth of physical memory (that would be 400 MB for a system with 4 GB of RAM). Cutoff size can be specified by setting UndoBufferSize (in Megabytes) in section [Sample Editor] of mptrack.ini.
- [Imp] <js> When creating a new sample using "resize", sample loop is activated automatically.
- [Imp] <js> When sample is 8-bit, it will automatically be converted to 16-bit when applying time stretching / pitch shifting.
- [Imp] <js> Can now enter insanely high values into sample frequency input field (as they are supported by Impulse Tracker), allow only 65536 Hz for S3M files.
- [Mod] <js> Removed time stretcher's / pitch shifter's preview function as it's unnecessary now.
- [Fix] <js> Insert Silence: Loop points were not updated when adding silence at the beginning of the sample
- [Fix] <al> Actions such as time stretching and undo could trigger sample play.

Instrument tab
- [Fix] <js> When playing an instrument and disabling its envelopes at the same time, the toggled envelopes are stopped (prevents filter envelope from turning into a pitch envelope).
- [Fix] <al> Sample map was broken when dealing with sample indexes greater than 255.
- [Fix] <js> Update plugin list properly when cleaning up plugins while being on the instrument tab (possibly also improves instrument tab behaviour when working with multiple windows).

Instrument tab::Envelope editor
- [New] <js> Envelopes can be edited using keyboard. Various keyboard shortcuts have been added to move and edit envelope points. This uses a common "drag and drop" node with mouse editing, so a point can first be clicked and the be moved with e.g. cursor keys.
- [Imp] <js> When creating a new envelope, automatically enable it as well.
- [Imp] <js> Mark currently selected envelope node yellow for better visibility when using keyboard editing.
- [Mod] <js> Middle line is also shown for volume envelope.

Comments tab
- [Imp] <js> If sample size is < 1 KB, amount of bytes is shown instead of "0 KB".
- [Fix] <js> The lower part of the tab was receiving update messages that were not even meaningful to this tab (e.g. speed changes), so it was updating quite often with modules that have alternating speed and the toolbar was "blinking".

Tree view
- [New] <js> Show sequences in song tree view. Sequences can be inserted, duplicated and deleted by right-clicking the sequence items.
- [New] <js> Clicking on a mod item (i.e. a filename node) switches to the corresponding window.
- [New] <js> Added right-click options for mod items.
- [New] <js> Display playing samples / instruments (only those that are assigned to a sample) using green triangles. Can be enabled from setup screen.
- [New] <js> Muted samples and instruments are shown with a different icon.
- [Imp] <js> Can now dragondrop orders, even between sequences.
- [Imp] <js> Double-clicking order items and pattern items works as intended now.
- [Imp] <js> Show whole sequence (don't stop on first "---" item).
- [Imp] <js> Switching between sequences is a bit easier now. There's a context menu entry for it and double-clicking on an empty sequence will switch to it (as there are no order list item to click on).
- [Imp] <js> Different icons for effect / instrument plugins

VST / MIDI mapping
- [Imp] <js> Plugins Selector: Different icons for effect / instrument plugins.
- [Fix] <al & js> When moving around plugins, param control notes are now also updated.
- [Fix] <al> MIDI mapping: Pattern record checkbox wasn't updated properly.
- [Fix] <al & js> MIDI mapping: Shift key erroneously opened MIDI mapping dialog in some cases. However, it does not work properly with all plugins anymore (e.g. sliders in Synth1 are not shift-clickable anymore)

Mod conversion
- [Imp] <js> When converting a song that has sub songs to MPTM format, the user is asked if those sub songs should be converted into multiple sequences.
- [Imp] <js> If possible, all MPTM sequences will be merged into the first sequence. This also tries to fix patterns with Bxx effects.
- [Imp] <js> Better conversion of MOD / XM E4x / E7x command.
- [Imp] <js> Better conversion of note off commands when converting to .mod.
- [Imp] <js> Removing channel features (pan/vol) in formats where they're not supported.
- [Imp] <js> Insert pattern break commands when resizing patterns to 64 rows that were smaller.
- [Imp] <js> Changing between MOD and XM format limits speed / tempo commands (Fxx) properly now.
- [Imp] <js> Trim sequence if it's too long (e.g. in MOD format).
- [Imp] <js> Remove sample vibrato and sustain loops for MOD / S3M.

Playback (see also format-specific changes below)
- [Imp] <js> Added some more standard playback frequencies (176KHz, 192KHz) to setup.
- [Fix] <js> When jumping around in a module, high offset value is also memorized.

MPTM::Custom Tuning
- [New] <al> Can import scl-files. Upper limit for note count is 64.
- [Imp] <js> Tuning dialog: Using the default tuning path as default path for Import/Export dialog

IT::Saving
- [Fix] <js> Original IT specs concerning max orders/patterns were wrong. IT can handle up to 257 orders (as the last order is always ---, so it's actually 256 accessible orders), so the saving routines were also updated a bit.
- [Fix] <js> Save at least 2 order items.
- [Fix] <js> IT files with empty sample slots made with MPT will now FINALLY save correctly in Impulse Tracker.
- [Fix] <js> Compatibility Export: Don't store "extended filter range" flag.

IT::Loading
- [Imp] <js> Removed unnecessary / wrong pre-amp limits.
- [Fix] <js> IT files with global volume 0 are now loaded correctly.
- [Fix] <js> In some very rare (almost only theoretical) cases, the last IT instrument would not be loaded in previous versions. Use correct instrument header size (1.xx or 2.xx header) for comparison when loading instrument headers.

IT::Compatible Playback Mode
- [Fix] <js> Reset NNA actions on every note (tentative fix, fixes spx-farspacedance.it).
- [Fix] <js> Fixes from SchismTracker: Vol Swing, Pan Swing, Pitch / Pan Separation (PPS).
- [Fix] <js> Out of range offset command with Old FX on.
- [Fix] <js> Improved S3x / S4x / S5x handling.

S3M
- [Fix] <js> ST3 compatibility: Only allow waveforms 0 to 3 for S3x / S4x / S5x.
- [Fix] <js> The S3M format actually knows muted channels. This was not taken into account before.

XM::Loading
- [Imp] <js> Allow to load modules with an empty order list (as they are, in fact, valid XM files).

XM::Compatible Playback Mode
- [Fix] <js> Almost perfect arpeggio emulation (only a few notes are still wrong). Thanks, Ian Luck!
- [Fix] <js> Rogue note delays are now retriggering the instrument.
- [Fix] <js> Perfect emulation of buggy Rxy behaviour. Thanks to Ian Luck for helping me with this.
- [Fix] <js> Command X ModPlug extensions are now ignored in FT2 compatibility mode.

MOD
- [Imp] <js> Mod Creation: The default empty order list was too long, allowing for overly long songs to be created which would then not be saved correctly.
- [Fix] <js> Mod Creation: MOD Panning scheme is now set up correctly.
- [Fix] <js> 8-channel Startrekker modules ("FLT8") are loaded correctly now.

MOD::Playback compatibility
- [New] <js> Added song flag "ProTracker 1.x Mode" (for .MOD files) that enabled on-the-fly sample swapping as ProTracker did it. 8xx and E8x panning commands are also ignored in this mode.
- [New] <js> Support for the EFx command (Invert Loop). One has to pay attention when working with this command as it effectively trashes samples.

Module cleanup
- [New] <js> New cleanup feature: Merge sequences.
- [Imp] <js> Pattern Cleanup does now also work with multiple sequences.
- [Imp] <js> Improved cleanup dialog, with new options (remove all *, optimize samples).

MP3/Wav export
- [New] <js> Wave Convert: Normalization is back as experimental feature.
- [New] <js> Wav/MP3 export: Show estimated remaining time.
- [Imp] <js> MP3 export: Removed 60 minutes limit.
- [Fix] <js> MP3 export: Fixed possible issue with very long mod files (such as Skaven's "Beyond the Network").
- [Fix] <js> Wave Convert: The wave convert dialog had two default buttons, one of them (the "default default button") didn't make sense.

Colour setup
- [New] <js> Channel separators can now have custom colours.
- [New] <js> Can now specify the blend colour for previous/next patterns.
- [Mod] <js> Renamed FT2 and IT presets to "Blue" and "Green", as they did not resemble FT2 and IT in any way.
- [Mod] <js> Added VU Meter colours for the pattern colour presets.
- [Mod] <js> Changed the "Buzz" colour scheme a bit.
- [Fix] <js> When loading colour presets that have less colours are defined than required, the missing colours will be replaced by those from the "MPT" preset.
- [Fix] <js> When no INI file was present, channel separators were completely black.

Keymaps
- [Imp] <js> When loading a keymap file and unrecognized lines are found, only one message box is shown.
- [Mod] <js> All keymaps have been updated to version 1 and updated to contain the order list shortcuts.
- [Fix] <js> Keymap files have a version number now (currently version 1). If keymap file doesn't have a version number (that's version 0), the order list keys will be added automatically so that order list remains usable in new builds.

Other formats
- [New] <js> Can now import RIFF AM and RIFF AMFF files, as well as J2B (Jazz Jackrabbit 2 music) files, which are compressed AM(FF) files.
- [New] <js> Can now import PSM16 files (Silverball, early versions of Epic Pinball).
- [Fix] <js> MED Loader: Possible error when loading order list.
- [Fix] <js> MDL Loader: Various fixes (taken from Schism Tracker).
- [Fix] <js> IMF Loader: Slightly wrong instrument loader (this for once didn't break anything, though).
- [Fix] <js> AMF Loader: Effect handling was slightly broken.

Misc
- [Imp] <js> All Loaders: Fixed string handling to filter out all null chars in song/sample/instrument/etc. names. This avoids "empty" instrument names that occurred in a couple of .IT files before.
- [Imp] <js> Main window: Extended paste mechanisms (mix, flood, push forward) have been moved into a sub menu.
- [Imp] <js> Main window: Improved accelerator keys in the edit menu.
- [Imp] <js> Added "split keyboard settings" dialog to the "edit" menu and updated the shortcuts there (goto was missing).
- [Mod] <js> Store configuration and tuning files in %APPDATA% if possible. Can be disabled by adding UseAppDataDirectory=0 to [Paths] in mptrack.ini ("portable mode").
- [Mod] <js> Mod Creation: When clicking on the "new" button, the newly created module will be of the same type as the currently active document. Should probably be an option.
- [Mod] <js> Made Graph and Pattern Randomizer shortcuts invisible, as they are useless.
- [Mod] <js> Compatibility Export: Use module working directory in "save as" dialog.
- [Mod] <js> Using MS Shell Dlg font instead of MS Sans Serif in resource file.
- [Mod] <al> Changed some "ModPlug Tracker" strings to "OpenMPT".
- [Fix] <js> When using a Load/Save dialog, MPT's key handler is now disabled so that common shortcuts like F2, Ctrl+C, Ctrl+V, Esc. etc. can still be used.
- [Fix] <js> Mod Loaders: Very short sample sustain loops are now also accepted (fixes ckabsenc.it).
- [Fix] <js> Mod Creation: Filling the whole mod title field with null bytes on creation to avoid funky characters in other programs.
- [Fix] <js> Fixed possible issue with "long" (12 characters) instrument filenames.
- [Fix] <al> Autosave: 'Modified since last autosave'-flag wasn't always updated.
- [Fix] <al> Fixes to handling of 32 chars long instrument name.

Third-Party Libraries
- [Imp] Update SoundTouch (v1.5.0).

Release package
- [New] <js> Three new keymaps: French Laptop by Paul Legovitch, Norwegian MPT Classic by Rakib, US_mpt_classic_(snu).
- [Mod] <js> Updated DE_jojo.mkb.


v1.17.03.02 (22 September 2009, revision 371) internal test build
-----------------------------------------------------------------
General tab
- [Imp] <js> Song Settings dialog: Added suffixes "IT" and "S3M" to some mod flags for more clarity.
- [Fix] <js> Song Settings dialog will revert play flags to previous values if user presses the Cancel button.
- [Fix] <js> VSTi / Sample volume sliders only go up to 255 instead of 256.
- [Fix] <js> Document will now be set modified when moving or inserting plugins.

Sequence editor
- [New] <js> Multiple orders can be selected in the pattern sequence. At the moment, it is possible to insert, delete, duplicate and dragondrop multiple orders.
- [New] <js> Added context menu item "Render to wave", to render one or more patterns to wave.

Pattern tab
- [New] <js> Paste will now optionally continue on next pattern (overflow paste option).
- [New] <al> Channel reset (stops note, sets initial chn settings). Available from channel header context menu and new key binding.
- [New] <js> When shift-clicking somewhere, a selection will be drawn from the previous cursor position to the new position.
- [Imp] <js> Showing descriptions of "special" notes in the status bar, like it's done for effects.
- [Imp] <js> Shrinking patterns is now also possible with patterns < 32 rows.
- [Imp] <js> Solo/Unmute context menu has a bit more dynamical transition menu points (experimental).
- [Imp] <al> Added some checks to prevent entering notes which are not supported by the module type.
- [Mod] <js> Entering note with row spacing enabled can now move cursor to next pattern if continuous scroll is enabled.
- [Fix] <js> Inserting a new pattern won't resize it to 32 rows anymore if the current pattern has less than 32 rows.
- [Fix] <js> Offset and Velocity volume commands are displayed in default colour instead of "pitch" colour.
- [Fix] <js> Fixed weird combination of context menu shortcut and "always center active row" being disabled (http://forum.openmpt.org/index.php?topic=3203.0).
- [Fix] <js> Keyboard split note was off by one.
- [Fix] <js> Increased max. row spacing / skipping value to 64, values > 64 are now visibly clamped to 64 in the edit box.

Pattern tab::Note properties
- [Imp] <js> Added description to high offset command in note properties dialog.
- [Imp] <js> 7-Bit Panning slider also has the "Surround" state in S3M format now.
- [Imp] <js> Proper display of Pxy effect in the note editor window.
- [Imp] <js> Explanation for Tremor effect.
- [Imp] <js> Completed descriptions for extended MOD/XM, fixed display of several effects.
- [Imp] <js> Added description for S1x - Glissando Control.
- [Fix] <js> When double-clicking on a note in the pattern editor, the wrong note was displayed in some formats.

Pattern tab::Find/Replace
- [Imp] <js> Don't reset "replace all" flag after every search.
- [Mod] <js> "Search in whole song" and "Replace all" are now enabled by default.
- [Fix] <js> Replacing also works with high instrument numbers now. Also, empty instrument numbers won't be affected by "ins+1" anymore.
- [Fix] <js> Notes that cannot be used in the given format are not shown in the dropdown combo.
- [Fix] <js> Made combo boxes more convenient to use.

Pattern tab::Macro config
- [Imp] <js> Also show the current preset for Zxx config (Z80 - ZFF).
- [Fix] <js> "Show All" FX display index now starts at 1 instead of 0, like all other FX enumerations (tx Rakib).

Sample tab
- [New] <ks> Sample drawing.
- [New] <ks> Add silence to sample.
- [New] <js> Resize sample (same dialog as "add silence")
- [New] <js> Can now play sample from given position with Ctrl + left mouse button.
- [New] <js> DC offset removal.
- [New] <js> Batch export samples (shift + click on "save sample" icon).
- [New] <js> Added setting "FinetuneStep" to mptrack.ini section "[Sample Editor]".
- [Imp] <js> Better loop point handling when deleting sample selections.
- [Fix] <js> Limit sample vibrato fields properly. Vibrato Sweep ranges from 0 to 255 now.
- [Fix] <js> Remove special chars from sample filenames so the "save as" dialog will show up on OSs < Vista.
- [Fix] <js> When using the spin control, frequency is not clamped to [2000, 96000] anymore.
- [Fix] <js> Removed tuning from up/downsampling for MOD files which detuned them when saving.
- [Fix] <js> Transpose is now disabled when using MOD format.

Instrument tab
- [New] <js> Envelope points can now be added by shift-clicking somewhere in the envelope editor. Middle mouse button click removes the nearest point.
- [Imp] <js> Sample map shows tuning-specific note name on context menu.
- [Imp] <js> Added "Map all notes to <note name>" to instrument mapping context menu.
- [Mod] <js> Also show values from 0 to 64 for filter envelope (instead of -32 to 32).
- [Fix] <js> Pitch/Pan input field allows negative values.
- [Fix] <js> Proper limits for IT/XM fadeout values.
- [Fix] <js> Playing correct note in the instrument mapping control (notable difference when editing the scale from bottom to top).
- [Fix] <js> No relative values are shown for envelopes with no release node (status bar) (tx xaimus).
- [Fix] <js> Remove special chars from sample filenames so the "save as" dialog will show up on OSs < Vista.
- [Fix] <js> Fixed crash in instrument view that occurred if RowsPerBeat was 0.
- [Fix] <al> Fix to crash that occurred when multiple windows had instrument tab of the same document open.

Comments tab
- [Imp] <js> Default view mode is instruments instead of samples for XM files.
- [Imp] <js> Instrument / Sample list: Double click will switch to instrument / sample.

Tree view
- [Fix] <js> Playing sounds from a soundfont was broken.
- [Fix] <js> Deleting patterns from a module will also reset their names.

VST / MIDI mapping
- [New] <al> Editing a plugin param in its editor while holding shift key will now open MIDI mapping dialog.
- [New] <al> Can now record MIDI mapping changes to pattern.
- [Mod] <al> Changed host IDs and a couple of related return values. If compatibility problems occur, old IDs can be set with INI settings ("HostProductString", "HostVendorString", "HostVendorVersion" in section "[VST Plugins]").
- [Fix] <js> Some minor tweaks and fixes to the MIDI mapping dialog.

Mod conversion
- [Imp] <js> Convert E9x to Q8x as Q0x actually means "continue" and not "no change" for the volume change.
- [Imp] <js> Even better conversion of various pattern effects, including 7 / 8-Bit Panning, Surround, Note Cut / Off / Fade conversion, MOD retrigger, XM->IT volume column limitations, illegal notes).
- [Imp] <js> Proper conversion of Pxy effect.
- [Imp] <js> Full volume column conversion, resetting default global volume / tempo / speed for MOD files.
- [Imp] <js> \xx is converted to Zxx when converting to / saving S3M files or "compatible" IT files.
- [Imp] <js> Somewhat decent conversion of Kxx (Key Off) from XM to S3M / IT.
- [Imp] <js> Trim instrument envelopes if they're too long for the new format.
- [Imp] <js> Convert 500/600 commands properly from MOD to any format, Adjust sustain loops for XM files.
- [Imp] <js> Try to use fix commands that don't have a "memory" (00 value) in XM (Arpeggio) and MOD format (Arpeggio and a few others) by using the previous value.

Playback (see also format-specific changes below)
- [Imp] <js> Mixing: It's now possible to go down to 1ms latency (works with ASIO).
- [Imp] <js> If restart position is 0 and a sub tune is played (i.e. a tune separated with a "---" pattern), OpenMPT will now try to jump back to the first order of this sub tune instead.
- [Imp] <js> Added option to not reset all channels and variables when looping a module.
- [Fix] <js> 4-Bit panning didn't disable surround sound (fixed in compatibility mode in IT/MPTM/XM).
- [Fix] <js> Don't ignore value of pattern break commands on last pattern anymore.

MPTM
- [New] <al> New experimental parameter controls (Parameter Control Events) for controlling plugin params.
- [New] <al> Can now have multiple sequences in a module (access from order list context menu).
- [New] <js> Allow up to 240 envelope points.
- [New] <js> IT "Note Fade" command: This existed in IT's player routines already, but there was no way to actually use it in the editor. Triggering an invalid note would cause a note fade, so this is a new note type.
- [New] <al> Channel settings(vol&pan) for channels after 64 will now be saved in the file.
- [New] <js> MPTM command S7D explicitly enforces pitch envelope, S7E enforces filter envelope.

IT
- [New] <js> IT "Note Fade" command: This existed in IT's player routines already, but there was no way to actually use it in the editor. Triggering an invalid note would cause a note fade, so this is a new note type.

IT::Saving
- [Imp] <js> The row highlighting fields in the IT header are now used.
- [Imp] <js> Compatibility Export: Save with custom "tracker version" header field (same as for S3M).
- [Imp] <js> Compatibility Export: Removed stereo sample support.
- [Fix] <js> Compatibility Export: Ignore new MPT effects.
- [Fix] <js> Compatibility Export: Doesn't screw up patterns anymore if the module has more than 64 channels.
- [Fix] <js> Compatibility Export: Changes various version numbers and settings in compatibility export to better match Impulse Tracker made IT files.
- [Fix] <js> Limit fadeout values properly.
- [Fix] <al> Channel settings (volume & panning) for channels after 64 will now be saved in the file.

IT::Loading
- [Imp] <js> Can now load IT files with very small patterns (< 4 rows).
- [Imp] <js> Setting the "last saved with" version to 1.16 (instead of "created with") if module seems to be made with the old MPT.
- [Imp] <js> Detect more versions of MPT that did stupid things (can be seen in the "last saved with" field).
- [Imp] <js> Row highlighting in IT header is now recognized.
- [Fix] <js> Unset release envelope nodes for IT files made with IT 1.x, fix fadeout values.
- [Fix] <js> Proper adjustment of sample pre-amp.
- [Fix] <js> It is now possible to load IT files that have no samples.
- [Fix] <js> 31 BPM is an allowed default tempo. Tentative fix: Clamp to 32 (instead of 125).
- [Fix] <js> OpenMPT was loading the volume column command hx (vibrato depth) as ux (vibrato speed) and also saving it like this. In the pattern editor, ux was allowed, hx was not but it should be the other way around. Now, hx is always used but ux is still loaded correctly for old modules made with MPT/OpenMPT.

IT::Compatible Playback Mode
- [Imp] <js> More improvements to Vibrato, Tremolo and Panbrello.
- [Imp] <js> Retrigger (Qxy) works like in Impulse Tracker now (test #15).
- [Imp] <js> Tremor (Ixy) works like in Impulse Tracker now.
- [Fix] <js> Better sample vibrato compatibility. Vibrato Sweep isn't perfect yet, though.
- [Fix] <js> Offset beyond sample range.
- [Fix] <js> Don't reset Tremolo on new note, don't ignore tremolo if note volume is 0.
- [Fix] <js> Ignore S[345]x with x > 3.
- [Fix] <js> Multisample instruments change with no entry in the instrument column (fixes spx-shuttledeparture.it).
- [Fix] <js> Pattern loop count won't be reset on pattern transition (fixes gm-trippy01.it).
- [Fix] <js> Tempo slides won't exceed 255 BPM in compatible mode.
- [Fix] <js> Random vibrato, tremolo, panbrello waveforms (test #19).
- [Fix] <js> Fixed handling of pitch / filter envelope loops (test #24).
- [Fix] <js> Panning effects (Xxx, S8x, pxx) override pan swing (test #20).
- [Fix] <js> SD0 / SC0 is now interpreted as SD1 / SC1. (test #22).
- [Fix] <js> Portamento up / down resets the destination of tone portamento (test #23).
- [Fix] <js> Out of range global volume, per-channel global volume slides.

S3M::Saving
- [Imp] <js> Order list is now as small as possible (multiple of 2 instead of multiple of 16); Using ST3's default UltraClick value.
- [Imp] <js> Using an own version number in the header now, just like all the other trackers.
- [Fix] <js> Ignore new MPT effects.
- [Fix] <js> Patterns are now saved correctly. Previously, the last few rows might have come up as garbage in ST3 when they were empty.
- [Fix] <js> Clamp sample pre-amp to [32;127] instead of just taking the lower 7 bits (Default pre-amp value was 128, which resulted in pre-amp 0 when saving).

S3M::Loading
- [Imp] <js> Smarter Zxx conversion without message box (heuristic detection).
- [Fix] <js> Minimum sample preamp value is now 16 (like in ST3).
- [Fix] <js> Small modifications to pattern loader to load somewhat broken S3M files (fix from xmp).
- [Fix] <js> Don't reset global volume to max if it is 0 for S3M modules made with ST3.20 or newer.
- [Fix] <js> Disable loop for sample with very short loop at the beginning.
- [Fix] <js> Samples with very short loops (2 bytes) will now load correctly. This fixes for example 94hitmix.s3m and spectral.s3m.

S3M::Misc
- [Fix] <js> Module Creation / Loading: Sane default volume settings for MOD / S3M files again (128 global volume, 48 sample volume)
- [Fix] <js> S3M compatibility: Notes with SD0 are now ignored, SC0 is completely ignored

XM
- [New] <js> Compatibility Export.
- [New] <js> FT2 compatible playback mode.

XM::Loading
- [New] <js> Compatibility mode is automatically enabled for XMs not made with MPT.
- [Imp] <js> Make XMs with strange pattern header sizes load correctly (removed some code that was there to make really, really broken XMs load - would this have worked at all?).
- [Imp] <js> Setting the "last saved with" version to 1.16 (instead of "created with") if module seems to be made with the old MPT.
- [Fix] <js> Various changes to make XMs that have been compressed with BoobieSqueezer load correctly.
- [Fix] <js> Can now load XM version 1.02 and 1.03 (rare).
- [Fix] <js> Don't ignore last pattern anymore if an XM file has no instruments.

XM::Saving
- [Imp] <js> Compatibility export: Only save up to 32 channels.
- [Imp] <js> Setting "OpenMPT <version number>" in the "made with" field (as any other tracker put their signature in here as well).
- [Fix] <js> Always save with a channel number that's a multiple of two so FT2 will load the file correctly.
- [Fix] <js> F20 won't turn into G20 anymore.
- [Fix] <js> Limit fadeout values properly.
- [Fix] <js> More intelligent conversion of Speed / Tempo commands.

XM::Compatible Playback Mode
- [Fix] <js> Portamento + New Note with no previous note, Offset beyond sample range.
- [Fix] <js> More compatible "Note Off + Something" actions.
- [Fix] <js> Note Off with instrument number causes fadeout for samples that have no envelope.
- [Fix] <js> Volume command Ux should not enable Vibrato at all, it only sets the vibrato speed.
- [Fix] <js> Pxy effect was too deep.
- [Fix] <js> Using MilkyTracker's arpeggio logic for better XM arpeggio compatibility - still not perfect!
- [Fix] <js> Tempo slides won't exceed 255 BPM in compatible mode.
- [Fix] <js> In compatibility mode, retrigger with vxx on the same channel will always reset the retriggered note's volume.
- [Fix] <js> More compatible handling of Kxx effect.
- [Fix] <js> Pattern loops are now handled correctly.
- [Fix] <js> Out of range global volume, per-channel global volume slides.

MOD
- [Imp] <js> Module Creation: MOD files have 4 channels by default.
- [Imp] <js> Moved loop length check from compatibility export to normal save. There you go, Amiga users! :)
- [Fix] <js> Module Creation / Loading: Sane default volume settings for MOD / S3M files again (128 global volume, 48 sample volume).
- [Fix] <js> Inserting more than the allowed 128 orders in MOD format is not possible anymore.

MOD::Loading
- [Fix] <js> Last pattern was not loading in .MODs that have no samples.

MOD::Saving
- [Fix] <js> The compatibility export was only working properly for 8-bit mono samples.
- [Fix] <js> More intelligent conversion of Speed / Tempo commands.
- [Fix] <js> F20 won't turn into G20.

MOD::Playback compatibility
- [Fix] <js> Using 8-Bit (800-8FF) Panning instead of 7-Bit panning (800-880) now - fixes e.g. DOPE.MOD.
- [Fix] <js> Pattern loops are now handled correctly.

Other formats
- [New] <js> Can now import IMF (Imago Orpheus) modules.
- [New] <js> Can now import GDM (General Digital Music / BWSB sound system) files.
- [Fix] <js> Completely rewritten and improved PSM loader which can also handle modules from Extreme Pinball.
- [Fix] <js> 669: Small modification so corehop.669 can be loaded; Note: Loader is still buggy.

Setup
- [New] <js> New default directories: plugins and plugin presets.
- [New] <js> Button to reset ramping and resampling to default values.
- [New] <js> Shareable colour schemes (via config dialog).
- [Imp] <js> Added note to "always center active row" hint that this is required to be enabled for greyed out patterns.
- [Mod] <js> Changes to default general options configuration.

Misc
- [New] <js> Added Compo Cleanup option to create sample packs.
- [New] <js> Rearrange Samples is back - and this time, it's even fully functional!
- [Imp] <js> XI Saver: Fill out the "created with" field properly (OpenMPT instead of FastTracker 2).
- [Imp] <js> MP3 export: Write ID3v2.4 instead of ID3v1 tags. Includes various changes to length limits, genre limitations and what's written in the tags.
- [Imp] <js> Decreased minimum pattern size for XM and IT format to 1 row.
- [Imp] <js> It is now possible to have modules with 1-3 channels, as this only seems to cause trouble with MOD files (so they still have 4 channels minimum of course).
- [Imp] <js> Autosave: If a module has not been changed since the last autosave, it will not be autosaved.
- [Imp] <js> Module loader: If plugins are missing, a single message box is shown.
- [Imp] <js> Slight redesign of the WAV / MP3 export dialogs.
- [Imp] <cs> LHA Decoder: Several fixes
- [Mod] <al> Default keybindings are now included in the executable, so default keybindings are available even without external keybinding file.
- [Fix] <js> Menus: Added mnemonic keys again and replaced the last(?) remaining "Midi" labels by "MIDI".
- [Fix] <js> Wav Export / Channel Manager / Pattern Editor: Channel names with leading space char are now accepted.
- [Fix] <js> General tab / Main bar / Loaders / Conversion: Fixed arbitrary speed limits (64 on general tab, 127 on main bar).
- [Fix] <js> Keyboard manager: Octave offset for key descriptions is now C, not A.
- [Fix] <js> Patterns: Reset pattern name when deleting pattern.


v1.17.02.54 (24 June 2009, revision 274)
----------------------------------------
- [Fix] <al> Pattern tab: It's now possible to use the old note fade behaviour when playing notes (see setup->general). (rev. 267)
- [Fix] <al> Pattern tab: Fixed wrong interpretations of "Old style pattern context menu"-option. (rev. 267)
- [Fix] <al> Misc: Some internal fixes. (rev. 267)


v1.17.02.53 (17 May 2009, revision 259)
---------------------------------------
General
- [New] <js> Can now import MO3 files using external library. (rev. 248)

- [Fix] <js> Song Cleanup: Sample cleanup should no longer remove data after sustain loop end point. (rev. 248)
- [Fix] <js> Misc: When adding channels from song properties, new channels are now initialized properly (http://forum.openmpt.org/index.php?topic=1814.0). (rev. 236)
- [Fix] <js> BPM approximation showed wrong rows per beat in some cases (http://forum.openmpt.org/index.php?topic=2532.0) (rev. 231)
- [Fix] <js> Disabled special handling of '&'-character when drawing texts to various components where the special handling should not take place (http://forum.openmpt.org/index.php?topic=1962.0). (rev. 229)
- [Fix] <al> File opening: Added a couple of return value checks to reduce the change of crash when opening lots of files (http://forum.openmpt.org/index.php?topic=2546.0). (rev. 239)

- [Mod] <js> Menu: Goto dialog can now be opened from Edit-menu. (rev. 246)
- [Mod] <al> Pattern cleanup: Clearing sequence after first '---' item is now optional. (rev. 239)
- [Mod] <al> When passing MIDI to plug, documents will now be set modified since MIDI data may change parameters. (rev. 243)

General tab
- [Mod] <js> General tab: VSTi volume slider is now disabled for S3M. (rev. 246)
- [Mod] <js> General tab: Initial channel volume controls are now enabled only for IT and MPTM. (rev. 246)

Pattern tab
- [New] <js> Added descriptions of SBx, S3x, S4x and S5x command parameters to note properties dialog. (rev. 251)
- [New] <js> Descriptions to retrigger note command parameters in note properties dialog. (rev. 248)
- [New] <js> Ability to start playback with incoming MIDI note (see Setup->MIDI) (rev. 246)
- [New] <js> Duplicate channel (see channel header context menu). (rev. 246)
- [New] <al> MIDI controllers can now be used to input smooth MIDI macro commands to pattern (Setup->MIDI). (rev. 240)

- [Fix] <al> Undo should now work with chords. (rev. 244)
- [Fix] <al> When playing with MIDI keyboard, plugins got a constant note velocity, not the actual velocity (http://forum.openmpt.org/index.php?topic=2754.0) (rev. 239)
- [Fix] <al> Undo fixes (didn't properly handle playback positions/multichannel record, set redundant undo points)(rev. 243)
- [Fix] <al> Param record in plugs GUI wrote commands even when pattern record was off. (rev. 243)
- [Fix] <al> Fixed chord detection when row spacing was enabled. (rev. 243)
- [Fix] <al> Fix to displaying wrong pattern name when using more than 255 patterns (http://forum.openmpt.org/index.php?topic=2344.0) (rev. 212)
- [Fix] <al> Accidental moving when selecting order in margins shouldn't happen anymore. (rev. 225)
- [Fix] <al> Fix to possible crash when using undo after pattern resize (bug introduced in rev. 168)

- [Mod] <js> When applying "change instrument", an instrument number won't be added to note off/cut anymore if the note doesn't already have an instrument. (rev. 248)
- [Mod] <al> Default order list margin value can now be controlled with "DefaultSequenceMargins" INI settings under "Pattern Editor" context. (rev. 225)
- [Mod] <al & js> Sequence view: Sequence scrolling will no longer be cut on first '---' item on IT / MPTM / XM. (rev. 237)
- [Fix] <al> The keyboard split "feature" when entering chords is removed (http://forum.openmpt.org/index.php?topic=2790.0). (rev. 244)

Sample tab
- [New] <js> Can now normalize sample selections. (rev. 254)
- [New] <js> Can now optionally normalize all samples instead of just one (click normalize with shift down). (rev. 249)
- [New] <al & js> Status bar now displays Oxx / 9xx offset value at current mouse cursor position. (rev. 232)
- [New] <al & js> Sample amplify now accepts negative values (inverts sample phase) (http://forum.openmpt.org/index.php?topic=2219.0). (rev. 234)
- [New] <al & js> Signed/unsigned sample conversion. (rev. 235)
- [New] <al> Added button for phase invert to toolbar. (rev. 235)
- [New] <js> Ability to save sample as raw. (rev. 236)

- [Fix] <al> Fix to zoom-related crash when loading samples in sample tab. Occurs usually with lengthy samples. (rev. 211)
- [Fix] <js> Playing sample selection didn't work properly in all cases (http://forum.openmpt.org/index.php?topic=1700.0). (rev. 231)
- [Fix] <js> Setting loop points could affect playing of sample even if loop was disabled (http://forum.openmpt.org/index.php?topic=1874.0) (rev. 231)

- [Mod] <js> Notes from MIDI are now handled the same way as notes from keyboard when making sample selections. (rev. 246)
- [Mod] <js> Play sample button now stops previous note even if mod is playing (http://forum.openmpt.org/index.php?topic=1366.0) (rev. 231)
- [Mod] <js> Sustain loop will now be enabled when setting it to sample selection. (rev. 231)
- [Mod] <js> Sample editing: If possible, use loop points as trim limits if there's no selection chosen. (rev. 230)
- [Mod] <al> Time stretching is now implemented with SoundTouch library. (rev. 228)
- [Mod] <al> Disabled pitch shifting / time stretching of 8-bit samples (didn't seem to work). (rev. 228)

Instrument tab
- [Mod] <js> Sample map can now map "No sample". (rev. 236)
- [Mod] <al> Changed default instrument plugin volume command handling from Dry/Wet to none. Also added INI setting with which one can set the default value used for new instruments. INI setting is "DefaultPlugVolumeHandling" in [Misc], possible values are 0,1,2. (rev. 238)
- [Fix] <js> Envelope view: Middle line will now be drawn in panning and pitch/filter envelopes even if row guidelines are enabled. (rev. 254)

MPTM
- [Fix] <al> Pattern cleanup: In some cases sequence wasn't cleaned properly for mptm. (rev. 239)
- [Mod] <al> Changed pattern/order limit for MPTm from 65000 to 4000. (rev. 212)

MPTM::Custom Tuning
- [New] <al> Added letter 'b' to drawable letters. (rev. 217)
- [Mod] <al> Notes should now be drawn more clearly when using custom tunings. (rev. 217)
- [Fix] <al> Creating 'group geometric' was broken (perhaps since v. 1.17.02.49) (rev. 252)
- [Fix] <al> Loading certain old tuning objects didn't work. (rev. 238)

IT
- [Fix] <al & js> Macro config should now be loaded correctly also when loading IT files not made with MPT. (rev. 257)
- [Fix] <al> When file was saved with compatibility export, the last order was not shown in Impulse Tracker. (rev. 257)

IT::Compatible Playback Mode
- [Fix] <al & js> Playback fix to vibrato with ramp down waveform. (rev. 257)

XM
- [Fix] <js> Dxx effects that are to the left of a Bxx effect are now ignored. (http://forum.openmpt.org/index.php?topic=2769.0) (rev. 241)

S3M
- [Fix] <al> S3M Saving: Sequence of length 241-255 should now be cut to length 240 instead of 16. (rev. 239)
- [Mod] <al> S3M Saving: Saved sequence is no longer cut on first '---' item. (rev. 239)
- [Mod] <al> When loading S3M files which contain Zxx effects, user is now asked how to process them. (http://forum.openmpt.org/index.php?topic=2166.0) (rev. 233)

MOD
- [Fix] <al & js> Fixes to MOD saving: it should now be possible to create ProTracker compatible MOD files with compatibility export. (rev. 256)

Misc
- [Fix] <from libmodplug> Fix to faulty portamento handling on loading AMF.
- [Fix] <various> Lots of smaller bug fixes.

Release package
- [Mod] <js> Updated DE_jojo.mkb keymap.


v1.17.02.52 (14 Apr 2008, revision 210)
---------------------------------------
- [Fix] <al> Shouldn't need winhttp anymore (at least now that update check is disabled). Dependency caused problems on Windows 98.
- [Fix] <al> Fix to faulty plugin file existence check (introduced in 1.17.02.51) (http://forum.openmpt.org/index.php?topic=2255.0)
- [Fix] <al> Sound card-options buffer length value validation.
- [Fix] <al> In 1.17.02.51, muted channels were ignored completely in MIDI export. Now pattern effects are processed in muted channels.
- [Fix] <al> IT style-playback fix


v1.17.02.51 (29 Mar 2008, revision 208) internal test build
-----------------------------------------------------------
- [New] <al> Unmute all(on transition) shortcut keys should now work in order list context.
- [New] <al> Half / double pattern row count buttons to pattern properties dialog.
- [New] <al> Channel status in status bar now show channel volume info.
- [Mod] <al> Modified flag is not set when sliding tempo/global volume slider for MOD file.
- [Mod] <al> When setting instrument pan, checking whether instrument samples have set pan enabled and optionally disabling them.
- [Mod] <al> Disabled Set Pan in sample tab for XM.
- [Mod] <al> Show previous/next pattern now shows pattern over +++ order list items.
- [Mod] <al> Disabled setting channel pan for MOD/XM in general view.
- [Mod] <al> MIDI export won't anymore export muted channels (http://forum.openmpt.org/index.php?topic=2017.0).
- [Mod] <al> When loading plugin information at startup, checking whether the plugin files exist (http://forum.openmpt.org/index.php?topic=1367.0).
- [Fix] <al> Fix to crash when loading plugins with long (> 32 characters) parameter names.
- [Fix] <al & ma> Fix to possible memory corruption problem on handling VST plugins with more than 30 outputs. Plugins with more than 32 outputs might still be handled poorly.
- [Fix] <al> Fix to possible crash when browsing modules in tree view (http://forum.openmpt.org/index.php?topic=2222.0).
- [Fix] <al> Fix to severe memory leak in the same section as above.
- [Fix] <al> Fix to mptm not showing in tree view file browser.
- [Fix] <al> Fix to MIDI drum export (http://forum.openmpt.org/index.php?topic=2024.0).
- [Fix] <al> Fix to possible crash on MIDI export if exporting module with more than 64 channels.
- [Fix] <al> When converting MOD->S3M/IT/MPTM, finetune setting was ignored (http://forum.openmpt.org/index.php?topic=1706.0).
- [Fix] <al> IT compatibility: Fix to not resetting envelopes on new instrument (http://forum.openmpt.org/index.php?topic=1869.0).
- [Fix] <al> IT compatibility: Fix to bidi loop resetting (http://forum.openmpt.org/index.php?topic=788.0).
- [Fix] <al> IT compatibility: Fix to note trigger after note cut (http://forum.openmpt.org/index.php?topic=2080.0).
- [Fix] <al> Mix mode tool tip in general tab was in some cases shown on unrelated controls (http://forum.openmpt.org/index.php?topic=2176.0).
- [Fix] <al> Pitch/tempo lock was lost on first instrument when opening instrument tab for the first time (http://forum.openmpt.org/index.php?topic=1823.0).
- [Fix] <al> Verifying buffer length-setting read from INI file to prevent the impression that it can be set < 10 (http://forum.openmpt.org/index.php?topic=992.0).
- [Fix] <al> Pattern paste was broken for MOD (probably since .46) (http://forum.openmpt.org/index.php?topic=1938.0).
- [Fix] <al> Continuous pattern navigation fixes (http://forum.openmpt.org/index.php?topic=1960.0, http://forum.openmpt.org/index.php?topic=1959.0).
- [Fix] <al> Keyboard split related fix (http://forum.openmpt.org/index.php?topic=1887.0).
- [Fix] <al> Release node information is now included when copying instrument envelopes (http://forum.openmpt.org/index.php?topic=1780.0).
- [Fix] <ma> Potential memory corruption bug when loading VSTs
- [Fix] <al> Fixed MIDI mapping not checking MIDI event, which could cause events like pitch bend to trigger some mapping item.
- [Fix] <al> Extended song/instrument properties were not always loaded correctly for IT (bug introduced in 1.17.02.50) (http://forum.openmpt.org/index.php?topic=2154.0).
- [Fix] <al> Fix for wrong tabs being displayed when converting between module formats with and without instrument support (http://forum.openmpt.org/index.php?topic=1614.0).
- [Fix] <al> Fix for possible crash on save/load when using more than 64 channels with MPTM.
- [Reg] <al> Removed buggy rearrange samples (http://forum.openmpt.org/index.php?topic=2148.0).


v1.17.02.50 (26 Jan 2008, revision 198) internal test build
-----------------------------------------------------------
- [New] <al> MIDI controller mapping to plugin params.
- [New] <al> Ability to take MIDI volume into account when playing notes.
- [New] <al> Ability to pass MIDI to plug.
- [New] <al> Ability to start/continue/stop play with certain MIDI messages (untested)
- [New] <al> Ability to choose how volume commands behave for plugs.
- [New] <al> Keyboard shortcuts for preset navigation jumps in the plugin editor.
- [New] <al> Added ability to edit various flags in song properties.
- [Mod] <al> MIDI CC bug related compatibility improvement for loading old IT/MPTm files.
- [Mod] <al> .bak files won't now be shown with "All modules" filter when loading modules.
- [Mod] <al> MPTm made with this version will be recognized as IT in earlier versions.
- [Mod] <al> Various validity checks for read data in ITP loading.
- [Fix] <al> Fixed sending wrong MIDI message in VSTi volume command handling when set to control MIDI Volume.
- [Fix] <al> Default VST editor preset field name validation in the menu bar.
- [Fix] <al> Fix for pattern duplicate for small patterns (http://forum.openmpt.org/index.php?topic=1747.0).
- [Fix] <al> Fixed song properties-menu entry in main window (was greyed and didn't show key shortcut)
- [Fix] <al> Fixed crash with certain toolbar related INI settings (http://forum.openmpt.org/index.php?topic=2033.0).
- [Fix] <al> Further fixes to prevent unnotified overwriting of file.
- [Fix] <al> Show row playtime didn't on certain cases work on first pattern row (http://forum.openmpt.org/index.php?topic=2044.0).
- [Fix] <al> Fix to faulty play with certain instruments without notes in IT compatible play mode (http://forum.openmpt.org/index.php?topic=2080.0).
- [Fix] <al> Pattern number box didn't open pattern properties when using MPTm (http://forum.openmpt.org/index.php?topic=2073.0).
- [Fix] <al> Fixed wrong MIDI CC names in macro editor.
- [Fix/Mod] <al> Setting volume to 0(v00) in pattern didn't necessarily set volume to 0 when using volume random variation for instrument. All other random variation behaviours are changed as well; now the 'swing' is applied directly to channel values instead of using swing addition, and by default the swing effect is reset on new note (http://forum.openmpt.org/index.php?topic=2074.0).


v1.17.02.49 (17 Nov 2007, revision 194) internal test build
-----------------------------------------------------------
- [New] <al> Improved VST preset navigation in VST window. Known problem: doesn't update if preset is changed from VSTs own preset navigation.
- [New] <al> Improvements in IT compatibility play mode. When loading ITs, if file doesn't seem ModPlug-made, then automatically setting IT compatibility play mode. The play mode setting can be toggled in song properties dialog, and the autodetection with an ini setting.
- [New] <al> 'key binding not understood'-messages can be disabled with an INI setting.
- [New] <rf> Add name filter to plugin selection dialog. Useful when you have hundreds of plugins.
- [New] <sp> Allow Window key as a modifier in the keyboard configuration. Disables start menu pop-up when pressing the Win key iff it used in the active keyboard configuration.
- [New] <sp> Disables NumLock/CapsLock/ScrollLock lamps on keyboard iff they are used in the active keyboard configuration. The lamps will blink anyway - can't help it until we start using DirectInput.
- [Mod] <al> Custom tuning related
        - file format changes
        - changed interpretation of finesteps: now zero finesteps means that finesteps are equal to notesteps, previously zero finesteps disabled portamentos etc.)
        - Pitch slide between notes with portamentos is now specialised also for other tuning types than just geometric (changes behaviour). Previously behaviour was 'geometric' for all types.
- [Fix] <al> Fixed wrong file version in IT compatibility save (http://forum.openmpt.org/index.php?topic=1723.0).
- [Fix] <al> Fixed possible unnotified overwriting of file occurring for example when dealing with a new file (http://forum.openmpt.org/index.php?topic=1813.0).
- [Fix] <al> Fixed broken note preview for certain type of instruments in instrument tab (http://forum.openmpt.org/index.php?topic=1996.0).
- [Fix] <al> Fixed possible crash on channel mode wav export when a channel has a long name (http://forum.openmpt.org/index.php?topic=2005.0).
- [Fix] <al> Fixed pattern position indicator jump when clicking plugin box in channel header (http://forum.openmpt.org/index.php?topic=2014.0).
- [Fix] <rf> Fix pattern search, which could search for the wrong param. Also enable typing of desired param value rather than only selecting from list box (http://forum.openmpt.org/index.php?topic=1799.0).
- [Fix] <rf> Delay-load winhttp.dll and don't die if it can't be found, e.g. on Windows 98 (http://forum.openmpt.org/index.php?topic=1778.0).
- [Fix] <rf> Fix a couple of pixels on D# in the pattern editor small font bitmap (http://forum.openmpt.org/index.php?topic=1781.0).


v1.17.02.48 (27 May 2007, revision 188)
---------------------------------------
- [Mod] <al> Pattern manager channel reordering behaviour changes / fixes (http://forum.openmpt.org/index.php?topic=1148.0).
- [Fix] <al> Fix song cleanup issue (http://forum.openmpt.org/index.php?topic=1711.0)
- [Fix] <al> Pitch/Tempo lock fix (broken in .46 and .47) (http://forum.openmpt.org/index.php?topic=1646.0)
- [Fix] <sp> Fix bad horizontal scrolling in pattern editor when positioning the cursor with the mouse (http://forum.openmpt.org/index.php?topic=1650.0).
- [Fix] <rf> Fix odd "play row" behaviour when using 1 tick-per-row (http://forum.openmpt.org/index.php?topic=1038.0).
- [Fix] <rf> Fix pop due to ramping when song starts with a pattern command that sets a low global volume (http://forum.openmpt.org/index.php?topic=523.0).
- [Fix] <rf> Fix occasional colour issues with order list (http://forum.openmpt.org/index.php?topic=867.0).
- [Fix] <rf> Fix impossible horizontal scrolling in pattern editor when playing with follow song on.
- [Fix] <rf> Grey out "Trim" option in sample editor context menu if there's no selection (http://forum.openmpt.org/index.php?topic=908.0).


v1.17.02.47 (13 May 2007, revision 184)
---------------------------------------
- [Mod] <al> Pattern skipping behaviour returned to that of 1.17.02.45
- [Fix] <sp> Save pattern scrollbar position when switching to other tabs.
- [Fix] <sp> If the cursor is moved but it is not on screen, move both horizontal and vertical scrollbars to make it visible.
- [Fix] <rf> Fix saturation on old modules (introduced in 1.17.02.46). Loading tracks with no saved mix level setting defaults to 'original'.
             Starting new IT, MPTM, ITP or XM defaults to '1.17RC3'. Starting new MOD or S3M defaults to 'original'.
- [Fix] <rf> Tree view FX list now starts with FX01 instead of FX00.


v1.17.02.46 (7 May 2007, revision 181)
--------------------------------------
- [New] <rf> An update checker has been added. Please report a bug if you have any problems with the update notification.
- [New] <al> Experimental MPTm format:
        - Internally, it is still very close to the IT-based format.
        - Order and pattern limit increased to 65000; whole range not tested :) (Note that commands such as position jump doesn't cover the whole range unless the #-extension can be used (haven't tested))
- [New] <al> User definable tuning modes for instruments:
        - Only available for MPTm
        - Ratio value as well as note name for every key can be assigned individually; gives rather free hands for experiments.
        - Every instrument can have its own tuning
        - Tunings can be saved to file and loaded from file.
        - IMPORTANT: When using tunings, behaviour of various commands such as portamento have been changed, and new behaviours are still to be decided.
- [New] <al> In song properties, option to increase playback compatibility with original Impulse Tracker behaviour. Is in no way complete; currently affects only a couple of differences. Many differences are still there.
- [New] <al> Ability to load multiple modules / samples / instruments from corresponding load dialogs. Known issue: Intermittent failures.
- [New] <al> 32-bit float wav import
- [New] <al> Playback control additions: 'Solo on transition' & 'Mute on transition'. Available from pattern view context menu (right click).
- [New] <al> Envelope points can be scaled by a factor through context menu on envelope view (right click)
- [New] <al> Calculator of playback time (measured from start) at the beginning of any row of any pattern (uses existing song length estimation).
        - Known limitation: When the row is within pattern loop, doesn't give all possible times.
- [New] <rf> SCx now sends note-off to VSTis at tick x.
- [New] <rf> New mix mode (called 1.17RC3): bypass global preamp, force soft panning, provide explicit dB value for sample attenuation.
- [New] <rf> Check for updates on startup. To disable, set CheckForUpdates=0 in mptrack.ini.
- [Mod] <al> Channel states resetting when jumping between orders from order list.
        - NOTE: While this fixes a bug (behaviour change) introduced in the tuning branch(?), it also changes quite prominent behaviour so can annoy people - might need to be modified at some point.
- [Mod] <al> Added version number to the main window title.
- [Mod] <al> Changed the 'order message' at the bottom bar of the screen "Position x of y" to "Position x of y (x in hex of y in hex)".
- [Mod] <al> Lots of smaller (internal) changes.
- [Fix] <al> 24/32-bit PCM wav sample import fixed
- [Fix] <rf> Plugin list window remembers its position/size even on cancel.
- [Fix] <rf> Fix odd window position on very first startup (before mptrack.ini is created).
- [Fix] <al> When opening instruments, load dialog didn't remember its previous path.
- [Fix] <al> In general tab, it was possible to give longer module name than the file format could save.
- [Fix] <al> Instruments associated with VSTis no longer also need to be associated to a sample in order to play.
- [Fix] <al> Trash characters to empty ITP comments should no longer appear.
- [Fix] <al> Channel state should now be updated correctly when e.g. moving channels through channel manager.
- [Fix] <al> It should no longer be possible to remove all channels from channel manager.


v1.17.02.45 (20 August 2006, revision 165)
------------------------------------------
- [New] <al & Alex> "Pitch to tempo lock" instrument setting: define the tempo at which your instrument loops correctly, and it will be pitched automatically to match the song's current tempo.
- [New] <al> Notification when attempting to modify pattern but pattern record is off.
- [New] <al> Order list margins: you can define how many slots to keep visible around the active pattern as the order list scrolls
- [Fix] <al> Fixes for various unexpected pattern loop state changes.
- [Fix] <al> Fixes to IT Style clear.
- [Fix] <al> Memory management fixes and misc other bug fixes.
- [Fix] <rf> ITP loading fixed (I broke it in v1.17.02.44)
- [Fix] <rf> Time estimation fixed for tracks with pattern break+XParam.
- [Fix] <rf> "Last saved with" version number was not always saved correctly - fixed


v1.17.02.44 (13 August 2006, revision 163)
------------------------------------------
- [New] <rf> Added release section to volume envelope (see: http://openmpt.xwiki.com/xwiki/bin/view/Manual/InstrumentReleaseEnvelope). IT only.
- [Fix] <rf> Overflow fixes in file loading functions (see: http://aluigi.altervista.org/adv/mptho-adv.txt)
- [Fix] <rf> Greyed out irrelevant items in the order list context menu.


v1.17.02.43 (20 June 2006, revision 157)
----------------------------------------
- [New] <rf> You can now load up new plugins from anywhere, not just the General tab. Select "Plugin Manager..." from the view menu. This can also be assigned to a global hotkey.
             Limitation: currently plugins added to a song in this manner with always be put in the first empty slot. In a future version you'll be able to choose the slot directly from that window.
- [New] <rf> "Cleanup Plugins" to remove any plugs that are not associated to a channel and not used by an instrument and not used as an output for any used plugs.
- [Fix] <rf> Fixed channel limits. Should be able to correctly save IT pattern data with up to 127 channels. There's only space for 64 channel headers though (channel names etc..). XMs restricted to 64 channels.
- [Fix] <rf> Added channel limit check when adding channels from the pattern editor.
- [Fix] <rf> Fixed instant crash with SampleTank 2.1.


v1.17.02.42 (12 April 2006, revision 156)
-----------------------------------------
- [New] <rf> "Compatibility export" in file menu: save as 'plain' IT, without all of OpenMPT's crap. IT only for now (not XM).
- [Mod] <rf> User now gets a warning when loading MDA Degrade (tx fisk0 - http://forum.openmpt.org/index.php?topic=467.0)
- [Fix] <rf> Set instrument in pattern editor should work when no note is specified (tx Torvus - http://forum.openmpt.org/index.php?topic=470.0)
- [Fix] <rf> Restart position saved in IT (tx LPChip - http://forum.openmpt.org/index.php?topic=473.0)
- [Fix] <rf> Loop song now works even if restart position falls on +++ (tx LPChip - http://forum.openmpt.org/index.php?topic=463.0)
- [Fix] <rf> Last used tempo is applied even when playback is triggered from instrument panel. (tx LPChip - http://forum.openmpt.org/index.php?topic=480.0)


v1.17.02.41 (15 March 2006, revision 152)
-----------------------------------------
- [New] <rf> Pattern record state is now saved to INI.
- [Fix] <rf> Fixed the following settings that were not saving correctly: mod document window status, row spacing, channel VU meters, channel effect visibility, Most recent files list, Toolbar settings.
- [Fix] <rf> Process priority no longer defaults to high.


v1.17.02.40
-----------
- [New] <al> Added indicator of currently playing pattern to order list.
- [New] <al> 'Loop pattern' and 'follow song' keys should now work when order list has focus.
- [New] <rf> Removed registry dependencies. All settings will now be saved to ini file.
- [Fix] <rf> Correctly update order list position when cycling through patterns
- [Fix] <al> Fixed order list GUI update on ctrl-transition when in pattern loop mode
- [Fix] <al> Moving a channel should now correctly take into account record-channels and pending mutes
- [Fix] <al> Switching auto-delay off in the options now works for note-offs as well.
- [Fix] <al> Some mod-effects like 'pattern jump' and 'break pattern' no longer conflict with pattern loop toggling.
- [Fix] <rf> Fixed bad capping of random cutoff variation (tx LPChip)
- [Fix] <rf> Fixed crash on loading ITP with pattern names (tx Relabsoluness)
- [Fix] <rf> Fixed incorrect version number in saved files (tx Relabsoluness)
- [Fix] <rf> Improved screen position restoration (tx Snu, Waxhead)


v1.17.02.39
-----------
- [New] <al> Remove and insert channels directly from pattern editor via channel header context menu
- [New] <al> Toggle loop pattern playback mode with a shortcut key and a checkbox above the pattern editor
- [New] <al> The automatic note delays that are inserted when recording notes live are now optional
- [Mod] <rf> Version number in executable properties now correlates with real OpenMPT version number
- [Mod] <rf> Restored solo/mute in pattern editor main context menu.
- [Fix] <al> Fixed auto note delays so they work with S3Ms too
- [Fix] <al> Fixes and improvements to displayed instrument name in pattern editor
- [Fix] <al> Fixes and improvements to instrument swap from context menu
- [Fix] <rf> Plugins should never cause song to be marked as modified if their GUI is not open (tx LPChip)


v1.17.02.38
-----------
- [Fix] <rf> Fixed possible buffer overrun in VST event queue
- [Fix] <rf> Changed handling of VSTi note-offs to reduce unexpected "interaction" between notes on different channels (a VSTi note-on in chan1 could sometimes be blocked by a VSTi note-off on the same row in chan2) (tx ganja)
- [Fix] <rf> No longer issue MIDI bank & program message every time MIDI channel changes - this fixes HyperCanvas behaviour (tx ganja)
- [Fix] <rf> Fixed: new channel mute mode did not mute VSTis at all.
- [Fix] <rf> Fixed: changing mute mode while some channels were muted prevented them from being unmuted.
- [Fix] <rf> Fixed: editing a pattern from tree view by double clicking it was broken
- [Fix] <rf> Editing of note column of sample map is disabled for XMs (XM doesn't save that data).
- [Fix] <rf> Fixed: If you agreed to reorganized instrument during an instrument cleanup, nothing at all would happen.
- [Fix] <rf> Fixed Pattern amplification had no effect on instruments mapped to "phantom samples" (tx lpchip)


v1.17.02.37
-----------
- [New] <rf> Added new mute mode which maintains sample synchronisation. Enable it in the global settings (last checkbox).
- [New] <rf> Added macro presets to control MIDI CCs in MIDI CC window.
- [New] <rf> Added configurable keys for Song Properties, Pattern Properties & Macro Configuration.
- [Fix] <rf> Fixed incorrect volume when receiving notes from MIDI-in when beyond keyboard split mark.


v1.17.02.36
-----------
- [New] <rf> Added "Pass keypresses to plug" option in plugin GUI options menu, to prevent MPT from stealing keypresses from plugins that need them.
- [New] <rf> More intelligent instrument dropdown box in patten editor will show sample name if instrument has no name, and instrument's plugin name.
- [New] <rf> volume commands without notes now send volume MIDI CC to plugs, but as far as I've seen, no plugs seem to respond to it. (turns out that this was broken from the very beginning.)
- [Mod] <rf> Disabled period cap to allow playback of notes below A-0 (experimental).
- [Mod] <rf> Leave unavailable loop options visible (but greyed out) in sample editor context menu, to avoid confusion (tx lpchip).
- [Mod] <rf> Clicking in the note map will set the active note to be the one that was clicked on, rather than just moving up/down by 1.
- [Mod] <rf> Changing the note in the note map will no longer move down one note.
- [Fix] <rf> Options menu on plugin GUI sometimes failed to show checked options after closing and re-opening the window.
- [Fix] <rf> Channel headers properly updated after moving them in the channel manager (tx anboi).
- [Fix] <rf> Fixed crash when interpolating with keyboard shortcuts with a selection spanning a single row (tx lpchip).


v1.17.02.35
-----------
- [New] <rf, al> Note delay (SDx) is written automatically during "live tracking" if there are no effects already on the existing row.
- [New] <rf> Preliminary parameter value recording should work a bit now with follow song on. Attempts to set correct macro if it exists. Will only overwrite \xx. Does not work with certain plugs that don't give idle time back to the host during mouse down (e.g. Albino, Vanguard...), still trying to understand this. Please play with this & give feedback, but don't expect miracles yet. :)
- [Mod] <rf> Experimental: muting a channel with a VSTi playing should turn off the active note on that channel.
- [Mod] <rf> MIDI pitch bend reset on each new note for that instrument's MIDI channel.
- [Fix] <rf> Restored external 0-255 sample panning range with XM.


v1.17.02.34
-----------
- [New] <al> Added dynamic instrument list for Change Instrument item in pattern context menu.
- [New] <rf> If you load a track with unrecognized plugins, you'll be prompted to search for the plugs on KVR Audio.
- [New] <al> Added "Clear selection" item in pattern context menu.
- [Mod] <rf> Disabled it for users who have opted for the old style context menu in general settings, + other minor change.
- [Mod] <al> Can now set an instrument value for notes which previously had no attached instruments.
- [Fix] <rf> Fixed rare crash on playback if playing a song with missing plugins.


v1.17.02.33
-----------
- [Fix] <rf> Fixed plugin exceptions introduced 1.17.02.31 (misplaced conditional caused bad ptr in audioMasterAutomate case).


v1.17.02.32
-----------
- [Fix] <rf> Fixed typo in solo fix in 1.17.02.31.


v1.17.02.31
-----------
- [New] <rf> Automatically generate a macro for a param by touching that param on the plug's GUI.
             To try it, select an unused macro from the plugin GUI's Info/Macros menu, then touch a param.
- [New] <rf> Added "unmute all" custom key.
  ([New] <rf> Preliminary parameter value recording. Enable from plugin GUI's Option menu.
              However it currently does not work correctly with follow song enabled:
	          active mousing on a plugin GUI blocks the cursor, so all values get written in the same place. :))
- [Fix] <rf> Restored original MPT behaviour: If the cursor is in the effect letter column, and a key is pressed that corresponds to no known effects, that key press will be applied to the effect param column. And vice versa.(tx Emperor)
- [Fix] <rf> Tentative fix: Changed effEditIdle dispatching behaviour in an attempt to fix issue with Lounge Lizard (http://www.modplug.com/forum/viewtopic.php?t=3710)
             Please let me know if this breaks GUI refreshes for other plugs.
- [Fix] <rf> Fixed: Minor bug in search and replace - searching for extended effects like SDx sometimes failed.
- [Fix] <rf> Fixed: It was impossible to preview simultaneous notes in the pattern editor (tx Emperor)
- [Fix] <rf> Fixed: Changing a param in default plugin GUI could result in a continuous param update cycle until the param value returned by the plugin stabilised.
- [Fix] <rf> Fixed: Unsoloing a previously soloed channel resulted in unmute all if other channels had since been unmuted. :)


v1.17.02.30
-----------
- [Fix] <rf> Fixed drum program being offset by 1 on MIDI export.
             NB: MIDI import/export uses 0-127 range for MIDI program, whereas messages to plugins use 1-128 (0 is used to indicate that no program change is required).
             The MIDI import/export range should be adapted to use the 1-128 range at some point.


v1.17.02.29
-----------
- [Fix] <rf> Fixed 3 digit instrument numbers when there are less than 100 instruments. (http://www.modplug.com/forum/viewtopic.php?p=42006)
- [Fix] <rf> Fixed crash in plugin DNA/NNA check we transitioning between existing and non existing instruments. (http://www.modplug.com/forum/viewtopic.php?p=42006)


v1.17.02.28 (official RC2 release)
----------------------------------
- [Fix] <rf> Fixed sample editor display bug with "auto" zoom level.
- [Fix] <rf> Internal: project configuration changes.


v1.17.02.27
-----------
- [Mod] <rf> Minor cosmetic changes.
- [Fix] <rf> XMs saved in OpenMPT should no longer have a bunch of blank patterns at the end when played in XMPlay.
- [Fix] <rf> Some instrument properties were saved incorrectly if an instrument had been deleted (either from song cleanup or tree view).


v1.17.02.26
-----------
- [Mod] <rf> Plugins are no longer forcefully informed of sample rate on first playback if it has not changed since initialisation. This works around a problem we were having with Crystal where the voice oscillator type soundfont was reset on the first playback. NB: it still gets reset if you explicitly change the sample rate - we're probably still doing something wrong. Have asked Crystal developer.
- [Fix] <rf> Added volume ramping on global volume change in RC2 mix mode. Should eliminate most clicks on global volume change. Try increasing general ramping in the player settings dialog if it's still too clicky.
- [Fix] <rf> Arpeggio with XM was messed up because implicit transposes were not always taken into account. I introduced this bug shortly after touching the code for the very first time, over a year ago. :) I dread to think what will fall apart now this is fixed.. XM users, test away!! :) (tx LPChip)
- [Fix] <rf> Old IT files were loading with sample volume at 0.
- [Fix] <rf> Minor: Removed plugin clone button, corrected view menu to say "General" instead of "Global", Impulse Tracker version marker changed from "Impulse Tracker v3" to v8.88.


v1.17.02.25
-----------
- [Fix] <rf> In 1.17RC2 mix mode, applying global volume is now the last transformation applied to the buffer.
             Should fix bugs in the last few builds by which global volume was taken into account multiple times.

v1.17.02.24
-----------
- [Mod] <rf> Removed broken CPU usage meter.
- [Fix] <rf> Global volume no longer applied twice on samples that are put through plugins.
- [Fix] <rf> If a plugin was assigned to a channel in which a note interrupted another, the resulting ramped part of the note would not be processed by the plugin. The outcome was potential "clicks".


v1.17.02.23
-----------
- [Mod] <rf> Changes to sample pre-amp and global volume defaults.
- [Mod] <rf> Internal: optimisations to volume handling.
- [Fix] <rf> Restored loop song on general tab.
- [Fix] <rf> Global volume is stored with our disfigured "XM"s.
- [Fix] <rf> Initial settings explicitly marked as such.


v1.17.02.22
-----------
- [New] <rf> In order to let the user achieve a good balance between sample and VSTi volumes, there have been changes & improvements to the volume handling, as exposed on the general tab:
        - Sliders available for "Sample volume", "VSTi volume" and "Global volume".
        - "Sample volume" is in fact the old sample pre-amp slider. Note that the slider can go up to 500 (which is already pretty loud), but if you're feeling insane you can type values up to 2000 in the text box.
        - Changing the VSTi volume is equivalent to changing the plugin "gain" individually for all VSTis. Same slider/text box limitations apply as to "Sample volume".
        - If 1.17RC2 plugin mix mode is selected in the song properties (it is by default), Global Volume will be applied to plugins too. (NOTE: this is somewhat of a _hack_, since global volume continues to be applied separately to _all_ samples  as well.. so samples played through plugins are in fact affected _twice_ by the global volume).
- [Mod] <rf> removed player options from general tab to avoid confusion as to what is saved in file, in favour of button to open separate Player Settings dialog.
- [Fix] <rf> If a sample was replaced via a drag & drop onto the instrument tab, the sample properties in the sample tab (e.g. loop points etc..) were not refreshed - fixed.
- [Fix] <rf> Fixed random crash on XM save if an instrument had an empty sample map (tx Skilletaudio!)
- [Fix] <rf> Changing plugin's dry/wet ratio directly from the pattern with \xx: previously could trigger an unpredictable VST parameter change - fixed
- [Fix] <rf> Restored amplify & change instrument in pattern context menu - sorry!! (no need to send me death threats about this anymore, please! :)
- [Fix] <rf> Minor refresh fix to graphical parameter editor.


v1.17.02.21
-----------
- [Mod] <rf> Added option to hide unavailable options in pattern context menu, rather than greying them out.
- [Fix] <rf> Drags on Order list mark song as modified.
- [Fix] <rf> Fixed auto-deletion of excess autosaves where song has no associated directory.
- [Fix] <rf> Fixed option in colour setting tab to override time signature highlighting with custom highlight positions (was always getting reset to time signature highlighting before).
- [Fix] <rf> Fixes to play note from plugin GUI.
- [Fix] <rf> Second attempt at fixing stuck VSTi notes when playing during playback.
- [Fix] <rf> If an effect is removed, channels pointing to that effect now display "[empty]"
- [Fix] <rf> Full range song pre-amp is now saved in song with both "XM" and "IT".


v1.17.02.20
-----------
- [New] <rf> !! Emulate Mix Bugs Has GONE!! Now select Plugin Mix Level from song properties; it gets saved with the song now.
        Note that there are 3 settings:
        - Original (equivalent to "emulate mix bugs")
        - 1.17RC1  (what it was from RC1 up until this build)
        - 1.17RC2  (what I believe to be correct... mastering plugins report the same levels as exported WAVs with this one).
- [New] <rf> OpenMPT version saved in file, visible in song settings dialog.
- [New] <rf> Added customisable shortcut key for toggling (un)mute on pattern transition.
- [New] <rf> Force pattern sequence override (Ctrl+Left-click order list) now works in play-pattern mode.
        - Known issue: order list GUI is not refreshed so line remains.
- [Mod] <rf> Enabled XP themes.
- [Mod] <rf> Resolution of plugin default GUI parameter slider increased from 100 to 1000. I couldn't get the per-thousand symbol to display yet. :(
- [Mod] <rf> Version number change - we no longer specify revision number explicitly. It is bad practice to make revision numbers external, as we have no real control over the way they change. The version number will always be in the CVS-commit comments field from now on.
- [Mod] <rf> GUI now uses radio buttons for path type selection.
- [Mod] <rf> Toggle (un)mute on pattern transition is now Ctrl+Left-click (not Ctrl+Right-click).
- [Mod] <rf> Song settings dialog clean-up. Minor instrument tab GUI clean-ups. About dialog clean-ups.
- [Fix] <rf> ITP users are now warned that autosaves fail if their instrument paths aren't set up.
- [Fix] <rf> If "use songs' original dirs" is ticked but the song has never been saved and therefore has no path, the backups will now always go in mptrack.exe's working directory as it was at startup.
- [Fix] <rf> Key config loader no longer reports errors in bad key config file after the 10th error, to avoid reporting hundred of errors if for example you try to load a binary by mistake.
- [Fix] <rf> Song is marked as modified on tempo & volume slider move in general tab, as well as on drag selection.
- [Fix] <rf> Correct pattern name displayed on first opening of pattern editor.
- [Fix] <rf> Tool tips restored on pattern editor.
- [Fix] <rf> The instrument and sample tab play buttons should no longer stop the song.
- [Fix] <rf> Fixed play selected part of a sample.
- [Fix] <rf> Fixed start of samples not playing when previewing them whilst song is playing (I think - I had trouble reproducing this one :)
- [Fix] <rf> Fixed stuck notes when playing VSTis during pattern transition (I think - I had trouble reproducing this one :)
- [Fix] <rf> Fixed: samples attached to instruments should never be removed in cleanups with ITP.
- [Fix] <rf> Fixed build-up of NNA'ed notes whilst channel is muted, which all play together on unmute.
- [Fix] <rf> Fixed XM->IT conversion of Sxx over row 32.
- [Fix] <rf> Fixed: Effect interpolation works even if only param column is selected again.
- [Fix] <rf> Fixed: paste, delete, drag should no longer work if recording is disabled.


v1.17RC1 (revision 1.13.2.19)
-----------------------------
- [New] <rf> Ctrl+right-clicking a channel will cause it to be muted at the next pattern transition.
             Let me know if this is working the way you want, then I'll work on adding keyboard shortcuts, channel manager integration etc...
- [Mod] <rf> First (naive) attempt at allowing sample & instrument playback from sample & instrument tab without stopping the track. Let me know what breaks.
- [Mod] <rf> Setting a document's "modified" flag (the asterisk) is now done in a thread safe manner if the modification come from the audio thread rather than the GUI thread. Could prevent rare crashes.
- [Fix] <rf> Fixed "play row" only playing first tick. Should play whole row now (tx LPChip).
- [Fix] <rf> Fixed broken note-offs. (tx anboi)
- [Fix] <rf> Fixed minor Channel Manager bug by which the second of two quick consecutive clicks was ignored.


v1.17RC1 (revision 1.13.2.18)
-----------------------------
- [New] <rf> Interpolate notes. :)
- [New] <rf> Portamento (Fxx Exx) now sent to VSTis as Pitch Bend MIDI CC.
- [New] <rf> Retrig (Qxx) now works on VSTis.
- [Mod] <rf> (internal) Pattern editor cleanups
- [Mod] <rf> Recoded pattern editor context menu (in view of making it customizable)
- [Fix] <rf> Fixed possible truncated lines in comments
- [Fix] <rf> Fixed channel manager close bug - don't need to "open twice" anymore.
- [Fix] <rf> Restored old behaviour that I had accidentally broken: Ctrl-clicking a position in the order list will schedule it to play next.
- [Fix] <rf> Fixed corrupt selection bug when mouse drags to the right of last channel.
- [Fix] <rf> Fixed bug by which NNA'd notes originating from muted channels would still be audible.
- [Fix] <rf> Changing VSTi preset from an instrument no longer forces reselection of current bank (performance improvement on some plugins)
- [Fix] <rf> Minor VSTi volume fixes. Hope this doesn't screw your old track us too much. :(
- [Fix] <rf> Fixed chunk saving for plugs with chunks less than 8 bytes (e.g. VB ffx4) - warning: might have broken loading/saving plugin settings for other plugs. (tx anboi)
- [Fix] <rf> Fixed estimate song with classic tempo mode.


v1.17RC1 (revision 1.13.2.17)
-----------------------------
- [New] <rf> "Select Plugin" window now remembers size & position, plus other minor enhancements.
- [New] <rf> NEW - Precise & simplified BPM Mode! (Please test :D)
        - Enable it in the song setting window, where you set module type, number of channels etc. Set "tempo mode: modern".
        - Txx (Fxx with xx>1F with XM) defines the real, exact beats per minute. Always.
        - The effective playback speed therefore also depends on the "rows per beat" value in the song settings.
        - Axx (Fxx with xx<20 with XM) continues to define the ticks per row, but does not affect playback speed per se.
        - Features tick-to-tick compensation for buffer size calculation rounding errors (aka high precision).
        - Feedback more than welcome!!
- [New] <rf> To avoid getting Settings popup when version number in registry is less than current version, use command line option: "/noSettingsOnNewVersion"
- [Mod] <rf> If autosave fails for whatever reason, options window should open automatically on Autosave page.
- [Mod] <rf> Ericus' "alternative" tempo interpretation is now a song setting rather than a general setting.
             You can select it in the same popup as where you set module type, number of channels etc. Set "tempo mode: alternative".
- [Mod] <rf> GUI changes to accommodate for new speed mode.
- [Fix] <rf> If a broken plugin was in the plugin list, the "Select Plugin" dialog would always select it by default (tx LPChip)
- [Fix] <rf> Fixed possible crash on close if Autosave path is empty.
- [Fix] <rf> Fixed additional silence that could appear at the end of rendered WAVs.
- [Fix] <rf> Fix to sample view refresh bug with sample > 255.
- [Fix] <rf> Fixes to eXtension Param (#), which previously only worked on channel 1, and could not extend tempo with XMs.
- [Fix] <rf> Fixed memory leak on close if no keymap file could be found.


v1.17RC1 (revision 1.13.2.16)
-----------------------------
- [Fix] <rf> Fixed corrupt .mod when non existent pattern is listed in sequence.
- [Fix] <rf> Autosaver is automatically disabled when autosave fails.


v1.17RC1 (revision 1.13.2.15)
-----------------------------
- [Mod] <rf> Warning in custom keys log when entering a key that causes a cross-context conflict.
- [Fix] <rf> Instruments can now force lowpass filter mode
- [Fix] <rf> Fixed some boundary typos.
- [Fix] <rf> Fixed volume changes on muting/unmuting channels.


v1.17RC1 (revision 1.13.2.14)
-----------------------------
- [New] <rf> Rubbish CPU usage indicator. Dishonestly shows 10-20% less than Windows Task Manager, not sure why yet.
- [New] <rf> Quick "Go to row/channel/pattern/order" dialog in pattern editor. Set up a custom key to use it the Pattern Editor/General category.
- [New] <rf> List input channels & instruments (as well as input plugins) in the plugin info/input menu.
- [New] <rf> Can play VSTi in plugin's window if you have set up an instrument that is assigned to that plugin.
             If you have multiple instruments assigned to that plugin, you can select which one is used from the info/input menu.
- [New] <rf> Option to force built-in filter into highpass mode on particular instruments.
- [New] <rf> Cutoff / resonance random variation.
- [New] <rf> Optional per-instrument resampling mode selection!
- [New] <rf> Move a plugin from an FX slot to another FX slot (hopefully automatically updates references throughout track, so it should sound unchanged).
- [New] <rf> Inset a blank FX slot between 2 FX slots. Again, song should sound unchanged.
- [Mod] <rf> Previously, in the instrument view, "Attack" represented the sample ramping where more attack meant less ramping.
             The property has been renamed to ramping and inverted so as to be more intuitive.
- [Mod] <rf> Replaced a bunch of "Modplug Tracker" strings with "OpenMPT". :)
- [Mod] <rf> Code cleanups, particularly in IT/ITP/ITI/XM/XI extended info saving. Extensive testing is TODO, including 2-way compatibility with previous versions.
- [Fix] <rf> Prevented another very rare hang on stop which could occur when more than 255 notes were active simultaneously on a same plugin.

v1.17RC1 (revision 1.13.2.13)
-----------------------------
- [New] <rf> Can now access info about a plugin from the Plugin's window, such as inputs, outputs and relevant macros. FX slot number shown in window title.
- [New] <rf> Added prev&next preset and randomize params shortcut keys (take effect when plugin's window has focus).
- [New] <rf> If macros are used on a channel to which no plugin is assigned, but an instrument with an assigned plugin is active on that channel, the macros will be effective in the instrument's plugin. Be careful now!
- [New] <rf> Added macro to control Dry/Wet ratio (= volume for VSTis) from pattern. Zxx and \xx should both work.
- [New] <rf> Fixed old bug that was preventing custom MIDI messages from being sent to plugs. So you can now send MIDI CC commands to your plugs!
             For example, to send mod wheel commands with Zxx on MIDI channel 0, create a custom macro with the value "B001z" (Only Zxx works for now, not \xx).
- [Mod] <rf> Plugin window's factory preset menu improvements for plugs with lots of presets
- [Mod] <rf> Minor enhancements to Zxx Macro window.
- [Mod] <rf> Reduced plugin idle call rate from 100Hz to 50Hz, in accordance with some discussion on the VST SDK mailing list.
- [Fix] <rf> More fixes to plugins that try to get tempo before we've had a chance to initialize them properly.
- [Fix] <rf> Backed out first attempt at reducing hangs on stop (from rev. 1.13.2.10) - it was pointless. I think 1.13.2.11 really solved it though.
- [Fix] <rf> Fixed minor imprecision in \xx slide calculations.
- [Fix] <rf> Minor GUI refresh fixes (tx xTr1m).


v1.17RC1 (revision 1.13.2.12)
-----------------------------
- [Fix] <rf> Fix to plugs that try to get tempo before we've had a chance to init them properly.

v1.17RC1 (revision 1.13.2.11)
-----------------------------
- [New] <rf> Time signature (rows per beat & rows per measure) now saved with songs.
- [New] <rf> Added next and previous document shortcut keys (that work :).
- [Mod] <rf> IT files now save the number of channels you choose, rather than shrinking to fit & removing the last unused channels. I like it this way, yell if you don't.
- [Fix] <rf> IT files can now save tempo > 255.
- [Fix] <rf> Various minor fixes relating to marking file as modified.
- [Fix] <rf> Another stab at the elusive hangs on stop. Let me know if there's any improvement.


v1.17RC1 (revision 1.13.2.10)
-----------------------------
- [New] <rf> Can now bypass plugin from plug's window and from tree view.
- [New] <rf> Added commands to navigate up/down by spacing
- [Mod] <rf> Changes to plugin threading in the hope of reducing hangs. I can't reproduce the hangs on my system so this is a stab in the dark.
- [Mod] <rf> Minor code cleanups
- [Fix] <rf> Improved handling of keystrokes when text box has focus.
- [Fix] <rf> Fixed auto-chord detection bugs which caused it to screw up in the last rows of the pattern.
- [Fix] <rf> Closing a document via a shortcut key no longer bypasses modified check - tx diamond.
- [Fix] <rf> Changing a plugin param now marks song as modified.
- [Fix] <rf> Fixed minor solo/mute bug ("solo" could unexpectedly behave like unmute all in some cases) - tx Gazus Snake
- [Fix] <rf> Sample GUI not getting updated with samples > 255 - tx POPS125
- [Fix] <rf> Fixed some tiny memory leaks.


v1.17RC1 (revision 1.13.2.9)
----------------------------
- [New] <rf> Select plugin dialog is now resizeable. :D
- [Mod] <rf> processReplacing() is now favoured over process() in VST plugs
- [Fix] <rf> In autosave dialog, will check backup path exists (if it is to be used). Also Autosave should issue a warning if save fails for whatever reason.
- [Fix] <rf> File marked as modified on all sample/instrument/general tab changes (some had been missed).
- [Fix] <rf> Change to command handling when text box has focus
- [Fix] <rf> Idle time dished out to plugs at 100Hz rather than 10Hz.
- [Fix] <rf> Cxx no longer ignored after 255 loops
- [Fix] <rf> Autosaver will now save if autosaver is disabled. :)
- [Fix] <rf> Sample map and instrument name should be accessible with XM files now.
- [Fix] <rf> Mouse wheel should scroll pattern even if focus is in some elements above the pattern editor.
- [Fix] <rf> No MPT commands will be executed if a text box has focus, i.e. text boxes will work again now.
- [Fix] <rf> Minor optimisations to instrument view envelope drawing
- [Fix] <rf> Internal: a couple of code cleanups to remove a few compilation warnings.
- [Fix] <rf> Plugin automatically bypassed if an exception is thrown in process()/processReplacing()
- [Fix] <rf> Switched to C++ exceptions handlers throughout, which will actually get compiled into the release builds.
- [Fix] <rf> Other minor fixes (Options dialog now remembers if autosave tab was selected, zoom level cycling in sample view fixed...)


v1.17RC1 (revision 1.13.2.8)
----------------------------
- [New] <rf> Option to emulate some old mixing bugs, in case your old track sounds too different in this version (could happen with some distortion plugins for example) and you aren't able to recover the sound by adjusting the levels
- [Mod] <rf> If a plugin identifies itself as willing to receive MIDI events, MIDI channel 1 will automatically be selected when it is assigned to an instrument
- [Fix] <rf> Minor GUI fixes


v1.17RC0 (revision 1.13.2.7)
----------------------------
- [Mod] <rf> Set octave keys are now customisable. Note that they will no longer be automatically assigned to freed number keys.
             So if you map a note to key 8 then unmap it, you'll have to explicitly set Set Octave 8 back to key 8 again.
- [Fix] <rf> Fixed crash in instrument view in win 98.


v1.17RC0 (revision 1.13.2.6)
----------------------------
- [Fix] <rf> Minor GUI fixes


v1.17RC0 (revision 1.13.2.5)
----------------------------
- [Fix] <rf> Fixed ridiculous mono ITI loading bug.


v1.17RC0 (revision 1.13.2.4)
----------------------------
- [New] <rf> Autosave function. Be sure to configure it to your taste.
- [New] <rf> Added IT style mix paste command, for those of you who just weren't ready for *real* mixpasting ;)
- [New] <rf> Option to show estimated "real BPM", just as it is communicated to plugins.
- [Mod] <rf> Minor GUI changes
- [Mod] <rf> Various internal cleanups
- [Fix] <rf> Some VST threading & initialisation improvements, might prevent some hangs/crashes.
- [Fix] <rf> Plugs that save an entire bank in their chunks should be better at restoring their active program on load
- [Fix] <rf> cursor dependant play commands now play from start of song even before cursor position is initialised.
- [Fix] <rf> Minor wave rendering fixes
- [Fix] <ec> Mastervolume calculation fixes
- [Fix] <ec> VSTi mixing & volume fixes
- [Fix] <ec> Float conversion fixes


v1.17RC0 (revision 1.13.2.3)
----------------------------
- [New] <rf> Extra status bar info in pattern view. Ugly but useful (particularly for macros).
- [New] <rf> Assign a MIDI bank to an instrument, for plugs that support it (e.g. Edirol Orchestral) (tx ganja)
- [Imp] <rf> Improvements to note recording with record select (from MIDI-In as well as normal keyboard):
        - If note off recording is enabled, note offs appear in the channel in which the note was played, even if the cursor has moved to another channel.
        - Channels in which a note is still being played is "locked", so no new notes can interrupt it, unless there are no other unlocked record select channels.
- [Mod] <rf> When wrap and continuous scroll are off, cursor jump/snap now goes to row 0 or last row when it should go beyond, rather than doing nothing.
- [Mod] <rf> Minor VST destruction memory management change - may increase or decrease crash occurrences. :)
- [Mod] <rf> internal: changed to make thread priority normal in debug mode, for easier hang debugging.
- [Mod] <ec> Restored VSTi original output level
- [Mod] <ec> (internal) removed unwanted (at this point) VST parallel routing feature
- [Mod] <rf> Changes/clarifications to custom keys GUI (tx lpchip)
- [Mod] <rf> On adding a plugin to a song, MPT checks it against a list of known problematic plugins and warns you if necessary.
- [Fix] <rf> modifier keys are no longer reset on pattern editor focus loss
- [Fix] <rf> fixed scroll position jumping to row 0 on change pattern
- [Fix] <rf> if the full pattern can be visible in window, pattern is moved down so row 0 is visible and scrollbar is not needed. (tx lpchip)
- [Fix] <rf> some VU meter fixes
- [Fix] <rf> instrument view slider optimisations (we think it affects just WinXP)
- [Fix] <rf> fixed hang on song stop with some OhmForce plugs (and maybe others).
- [Fix] <rf> fixed minor slider GUI bug with some OhmForce plugs (and maybe others).
- [Fix] <rf> various minor fixes: instrument open/save/new shortcut key propagation, VSTi playback at volume 0 ...
- [Fix] <ec> floating point plugin parameter edit box fix
- [Fix] <rf> Checked preset in VST dialog menu is updated when preset is changed from inside the plug's on GUI.
- [Fix] <rf> Minor VST compliance improvements (fixes elusive stuck notes with SynthEdit plugs on song loop)
- [Fix] <rf> MIDI-in fixes
- [Fix] <rf> Save full precision instrument panning and fadeout values in IT and XM, sample panning range limited to 0-64 at GUI level, to correlate with the range that gets saved.
- [Fix] <rf> Fix to IT loading algorithm when last sample is empty (MPTX data was ignored)
- [Fix] <rf> Fix to XM loading algorithm when macro definitions embedded in file
- [Fix] <rf> Zxx Macro window fixes


v1.16.0215a
-----------
- [New] <rf> "Overwrite effect type" mode in effect param visualiser
- [New] <rf> new custom keys:
		 - Toggle focus between pattern editor<->order list
		 - Open/Save/New instrument/sample (focus must be in bottom part
		 - Pattern editor copy and lose selection
- [New] <ec> Plugin gain control
- [New] <ec> Pitch shifter / time stretcher in sample view! (non real-time :)
- [New] <rf> added key command to insert new pattern from pattern editor.
- [Mod] <rf> Zxx macro GUI total revamp
- [Mod] <rf> Time stretcher GUI changes, stretch loop points
- [Mod] <ec> GUI Cleanup
- [Mod] <rf> Changed behaviour of calls to VST plugs on loop song or on replay song without stopping. No longer do suspend/resume, just kill all notes.
             This avoids pause caused by plugs with a heavy "resume" method, but means buffers are no longer cleared.
             - [Work in progress - some VSTis don't stop notes, not sure why yet]
- [Fix] <rf> Various minor fixes (registry, VST, GUI)
- [Fix] <ec> Plugin 32bit float conversion and mixing fixes
- [Fix] <rf> XM saving changes/fixes.
- [Fix] <rf> Added support for VSTs which change their window size. (tx goor00)
- [Fix] <rf> Minor GUI fixes.
- [Fix] <rf> fixes to chunk-based FXP loading/saving. (tx Diamond)
- [Fix] <rf> fix to allow VST synchronisation when rendering to wav. Added fix for MP3 export too.


v1.16.0214a
-----------
- [New] <rf> GUI for resampler & default ramping configuration
- [New] <ec> added per-instrument sample ramping
- [New] <ec> Channel manager updates
- [New] <ec> Multiple mix modes for plugins
- [New] <ec> polyphase resampler tuning and fixes (enabled polyphase on filtered samples...)
- [New] <rf> Added "copy and lose selection" command as a general pattern command, for those who like the cursor to be restored when they copy.
             You obviously don't have to map a key to this command if you don't want to use it.
- [New] <rf> Automatic chord detection, a la Ericus: Assuming you're in a channel with note recording enabled and you have other channels with note recording enabled, if you hit two note keys within a given time, MPT should put the notes on the same row. You can set the interval time in keyboard settings.
- [Mod] <rf> added button on wave writer dialog to open player settings rather than checkbox to enable "HQ resampling".
- [Mod] <ec> new internal instrument format
- [Mod] <rf> MIDI-In now uses same note entry code as normal keyboard note entry. (tx Squirrel Havoc)
- [Mod] <rf> Added shrink and grow selection to pattern context menu.
- [Fix] <rf> fix to note playback when pattern record is disabled (tx ganja).
- [Fix] <rf> fix for VST plugs with >2 outputs, though it is currently assumed they are stereo. (tx Muox, ganja, ericus for further fixes)
- [Fix] <ec> fixed wav export at >44.1kHz and >24bit.
- [Fix] <rf> Fixed velocity recording from MIDI In. (tx Squirrel Havoc)
- [Fix] <rf> Fixed stuck notes when playing VSTis from pattern in record enabled channels.
- [Fix] <rf> Fixed file corruption bug on saving after deleting an instrument (tx LPChip)


v1.16.0213a
-----------
- [New] Untested: incomplete changes in MIDI in pattern recording (taken direct from Ericus' build - probably broken in my build atm).
- [New] For people who just cannot cope with the slightest change, I added alternative == and ^^ commands which do not enter the current instrument number. (tx LPChip ;)
- [New] Added button to access an instrument's plugin's GUI from the pattern, if possible. (tx LPChip)
- [New] Notes audible in sample map window in instrument control; notes also play when you change sample. Notes do not yet play in "keyboard" view.
- [Mod] ^^ now sends "all sounds off" to plugs; note that few plugs support it, but those that do should stop quickly, without playing decay, unlike with == where decay is played. ^^ also explicitly sends a note off to all 128 notes on that tracker and MIDI channel, regardless of active note map, so it might deal with some stuck note cases. == is more conservative. This is a bit shoddy and will hopefully all be clarified in the future.
- [Mod] experiment: audio device left open when playing notes in pattern but song not playing (device still closes on stop song though)
- [Mod] some wet/dry slider cosmetic enhancements
- [Mod] Set Instrument command no longer requires instrument column to be selected (tx LPChip)
- [Mod] Cosmetic changes in instrument pane (tx LPChip)
- [Fix] Some VSTi stuck note cases fixed... some still remain. (tx LPChip)
- [Fix] Sample map window fixes (tx Ganja)
- [Fix] Various VSTi fixes (tx LPChip)
- [Fix] Reduced max channels from 256 to 128, so NNA etc still have a chance to work (tx Ericus)
- [Fix] Various keyboard fixes (tx Diamond).
- [Fix] Another attempt at getting rid of beeps with alt-combo keys that do not open menu items and are assigned to commands, without screwing everything up. (tx LPChip)
Merged from Ericus' build:
- [New] Untested: 'Rearrange samples' menu entry in edit->cleanup
- [New] Untested: Alternative BPM/Speed interpretation method
- [New] Untested: IT project files (.itp)
- [New] Channel manager window.
- [New] Keyboard split - allows you to have 2 active instruments, distinguishable by the note you enter.
- [New] Second channel record group - if enabled, chords for instrument 1 go to channel group 1, whereas notes for instrument 2 go to channel group 2. In the future all notes will be redirected to the appropriate record channels iff they are enabled.
- [New] WAV export update (24 bits + channel-based wave files output mode)
- [New] Tempo / speed / volume (in general tab) realtime update + tempo up to 512 bpm
- [New] Option to free associate samples when removing one or more instrument(s)
- [New] Polyphase interpolation on stereo samples.
- [New] Default enable/disable MIDI in record setup option added
- [New] Parameter extension pattern effect (# command - key customisable)
- [New] Pattern size up to 1024 rows
- [New] 256MB samples
- [New] Factory presets menus for VSTs on general tab and VST GUI (some known issues e.g. with Amplitube).
- [Mod] Load / save preset on General tab
- [Fix] Live VSTi playback on channel 1 bugfix.
- [Fix] ITI note sample map save fix

v1.16.0212a
-----------
- [Reg] Can no longer select "Normalize" when writing to wave, as this can produce incorrect output with certain VSTs.
        For now, use an external editor to normalize you wavs.
- [Fix] Extra safety checks for plugins that don't return parameters between 0 and 1 exactly.
- [Fix] Tentative fix to silent DX plugins on non SSE enabled cpus.
- [New] Added "IT Style" clear field commands. Using this, clearing the note field automatically clears the instrument field.
- [Mod] Swapped left and right mouse button action in effect visualiser (now use left button to "paint" nodes, right to move a specific node).
- [New] "Fill gaps" mode in effect visualiser, to automatically enter effects in blank spaces.



v1.16.0211a
-----------
- [Fix] Fixed crashes/bugs in instrument view when playing high notes. (tx LP)
- [Fix] Fixed (tx LP)
- [Mod] Removed "Unused?" text under MIDI Prog listbox - hehe Ganja, does it actually work?! :)


v1.16.0210a
-----------
- [Fix] Fixed warnings if no keyboard map file is found in registry (on first run)
- [New] Shortcut key to toggle "follow song".
- [New] Can change/access plugins from pattern editor. Can also open editor via shortcut key.
- [Fix] Custom keys fixes
- [New] Default plugin GUI.
- [Fix] Fixed some more stuck note cases.
- [Fix] Fix scrolling bug when toggling follow song with whole pattern visible on screen. (tx LPChip)
- [New] Load/Save VST preset
- [New] Randomize VST parameters
- [Mod] Porta slides occur on tick 0 iff speed is 1 tick per row. (tx felineki)
- [New] "Report bug" button on the GUI takes you to beta tester's forum :)
- [New] Optional "row guidelines" in instrument envelope editor.
- [Mod] Optimised instrument envelope GUI to avoid flickering on resize. Various other cosmetic changes.
- [Fix] Fixed "Remove channels" window
- [Fix] Fixed beeps with certain alt-combo keys
- [Fix] Offset in the volume column now works with retrigs.
- [Mod] Effect Keys are updated automatically when you change module type. You cannot customise them anymore.
- [Fix] Improved VST idle time handling. Should fix the bug by which CPU usage would jump to 100% with certain combinations of plugs.
- [Fix] (internal) Improved VSTGui compliance


20041012
--------
- [Fix] (internal) some VST compliance improvements on start/stop
- [New] VSTTimeInfo data sent
- [Reg] Cutter offset still does not restart with Multilens; other plugs also have some sync issues...
        > Modulation sync seems OK with FabFilter but not with Multilens.
        ---> could be that transport is never reset.
- [New] VSTi can be assigned to an instrument, not just a channel
        (I would encourage this method from now on - consider assigning VSTis to channels deprecated)
- [Mod] Started re-styling the instrument view to reflect this.
- [New] More sensible VSTi polyphony, should behave more like sample-based normal instruments:
        Two subsequent notes sent to a same VSTi on a same MIDI channel from a same tracker channel will cause the first note to be NoteOff'ed just before the second plays... EXCEPT if NNA is set to continue.
        Got it? :) In other words, NNAs are kinda working for VSTis (but Note Off, Cut and Fade all do the same thing)
- [New] Same with DNAs.
- [Fix] Fixed some issues with VSTi playback on note entry. Should now stop note on key release, like with sample-based normal instruments.
- [Reg] Bugs with Xlutop Chainer and some other plugs (more f'ing stuck notes) - working on it.
- [Reg] Increased memory footprint, possible performance regressions
- [New] Can now enable/disable all notes on key hold with a single click in the key config dialog
- [Mod] No longer need to press 'set' in key config dialog: changes are recorded automatically.
- [Fix] Loading patterns of less than 4 rows screws up. We now prevent users from setting pattern size to less than 4. Just use a pattern break command. (tx Ganja) (bug introduced before opensourcing)


20041009
--------
- [Fix] Tempo slides now behave as specified in it.txt. (tx ManaSmack) (bug introduced before opensourcing)
- [New] Can now save stereo ITIs
- [New] Removed 64 sample limit on ITIs (can now load/save instruments with up to 120 samples, i.e. one separate sample for each note)
- [Fix] Fixed bug which allowed entering notes higher than B-9 (even though they didn't play) (bug introduced 20040910)
- [Fix] Fixed graphical parameter editor key. (tx LPChip) (bug introduced 20040910)
- [Fix] Fixed transpose octave down key (bug introduced 20040910)
- [Fix] Fixed note fade on key release in instrument view. (tx Ganja) bug introduced 20040910
- [Fix] Prevented multiple note playback in sample view, except on chord playback. (tx LPChip) (bug introduced 20040910)
- [Fix] Finished custom note handling for instrument note mapper and tree view (tx Ganja) (bug introduced 20040910)
- [Fix] This version shouldn't corrupt the custom key registry setting used by previous versions of MPT. (bug introduced 20040910)
- [New] Can now save orders past blank order, a la IT2. (tx Nofold)
- [New] Some pattern undo improvements (still far from perfect!)
- [New] Stretch/Shrink selection (a la IT2)


20040910
--------
- [New] Fully customisable keys, with profile loading and saving, multiple keys for same command, etc..
- [New] Some new commands (e.g. Snap to highlight...)
- [Mod] Enhanced some old commands (e.g. homing vertically twice homes horizontally...)
- [Mod] Changed scope of some commands (e.g. play pattern should work from anywhere...)
- [Reg] Lots of key press related bugs, please help me isolate them
- [Fix] Some minor VSTi fixes
- [New] Oxx (offset) kind of works in the volume command
- [New] Half-finished "velocity" command (Ask LPChip about this).
- [Mod] Wicked new splash by Nofold!
- [Var] Internal changes.
- [Var] Various other minor bits n bobs


Wild Prebeta: 2004.02.24
------------------------
- [New] Each individual view (general/pattern/samples/instruments/comments) remembers its own horizontal splitter position.
- [New] If you enter notes in a channel to which a VSTi has been assigned, and you're using an instrument with a MIDI channel send, you should hear the VSTi play as you enter the notes.
- [Mod] Minor cosmetic changes, including about dialog image by Snu & Shableep. :)


v2004.02.22
-----------
- [New] Conditional compilation for MMX, SSE, AMD assembly routines. This should allow compilation on Vanilla VC6 compilers.
- [New] 255 channel support with updated IT loader/saver. It should not impact existing .it modules and allows for safe loading and saving of >64 channel modules.


v2004.02.16
-----------
- [New] A Dry/Wet slider for each plugin - values should save and load in this version, and be cleanly ignored by older versions.
- [New] Tick resolution MIDI macro slide. Use \xx command instead of Zxx if you want your plugin param to slide to xx over the course of that row rather than brutally jumping there. Should also work on built-in cutoff+resonance. For an example of what this effect does, download: http://www.soal.org/expMPT/paramSlideDemo.zip .
- [New] Effect param graphical editor prototype. Left click modifies a single node, right click & drag to "draw".
        Warning, things get quite sluggish if you're visualizing many rows and make the window quite large.
- [New] Mixpaste, just like in IT2
- [New] Option to have "follow song" disabled by default under general settings.
- [New] SDx works on VSTis.


The following history of the closed-source ModPlug Tracker releases is incomplete and has mostly been pieced together from the old help file and website.


v1.16 (November 2001)
---------------------
- [New] Support for DirectX Media Audio Effects.
- [Imp] Player engine v1.45.02 (Increased max mix channels from 128 to 200)
- [Fix] Fixed possible random crash when using VST plugins.


v1.15
-----
- [New] ASIO support.
- [New] VST effect control through midi macros (SFx + F0F080z).
- [New] Mute and solo individual instrument.
- [Imp] Improved Impulse Tracker keyboard mapping preset.
- [Imp] Faster sample editor display of large samples.
- [Fix] Fixed MP3 export bug (worked only once).


v1.12 (August 2000)
-------------------
- [New] Support for VST Effect Plugins (Up to 8 effects per song)!


v1.11 (July 2000)
-----------------
- [New] Stereo samples support!
- [Imp] Improved sound engine with some compatibility fixes for high octaves.
- [Fix] Fixes glitches with the original 1.10 release.


v1.10 (June 2000)
-----------------
- [New] You can now export a song as a standard MIDI file.
- [New] When encoding as MP3, you can set the full ID3 tag information (author, genre...).
- [Fix] Includes all the bug fixes and patches released since the original 1.09.


v1.09 (August 1999)
-------------------
- [New] Undo button in the pattern editor.
- [Imp] Major improvements in the instrument library: you can now browse samples inside a song, and drag and drop samples between different songs.
- [Imp] New reverberator engine (much better).


v1.08 (July 1999)
-----------------
- Minor improvements, VU-Meters, pattern undo, etc.


v1.04 (February 1999)
---------------------
- [New] Chord Editor.
- [New] Drag and Drop editing.
- [New] MPEG Layer3 encoding (if an external encoder is present).
- [Imp] Lots of improvements and new features. MIDI Out and help update will be for a future release (1.1?).


v1.00b3
-------
- Lots of bug fixes, and improvements.
- The sample library is working: you can drag files from the sample library to the sample/instrument editor.
- Support for standard sound banks: You can now install DLS and SF2 sound banks.


v1.00b (18 June 1998)
---------------------
- This is the first public release of ModPlug Tracker Beta. The help file is still quite small, but the interface has been completely redesigned, so it's MUCH easier to use. Drawing in the pattern editor needs to be optimized.
- This release also include basic MIDI support (no sync on MIDI clock yet) and low-latency DirectSound buffers.


v1.00a (15 October 1997)
------------------------
- This is the first alpha release of ModPlug Tracker. A lot of features are still missing, but the copy/cut/paste, and support for XI instruments makes ModPlug Tracker good enough for an alpha version. I have to work on the help too.


v0.0xa (19 September 1997)
--------------------------
- This is the first public release of ModPlug Tracker.

