<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openmpt.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Saga+Musix</id>
	<title>OpenMPT Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openmpt.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Saga+Musix"/>
	<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/Special:Contributions/Saga_Musix"/>
	<updated>2026-04-16T21:22:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_MIDI_Input_/_Output_Plugin&amp;diff=5003</id>
		<title>Manual: MIDI Input / Output Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_MIDI_Input_/_Output_Plugin&amp;diff=5003"/>
		<updated>2026-04-01T16:18:23Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:MIDI Input Output Plugin.png|thumb|418px|MIDI Input / Output plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;MIDI Input / Output Plugin&#039;&#039;&#039; is a versatile plugin for sending MIDI data to external devices or receiving MIDI input from external controllers.&lt;br /&gt;
This plugin complements OpenMPT’s other [[Manual: MIDI Reference|MIDI capabilities]] by allowing to access multiple devices, creating routings between MIDI devices or plugins and offering an extended version of the [[Manual: Zxx Macros|MIDI Macro]] functionality.&lt;br /&gt;
&lt;br /&gt;
Multiple instances of the plugin can be used to address different devices simultaneously, though most MIDI drivers do not allow a single device to be used by multiple plugin instances at the same time.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== MIDI Input Device ===&lt;br /&gt;
Selects the MIDI input device from which the plugin will receive MIDI messages. The received MIDI data can be sent to another plugin (through the [[Manual: General#Mix Settings|plugin routing settings]]), or be recorded as pattern data through the &#039;&#039;&#039;Record Parameter Changes&#039;&#039;&#039; and &#039;&#039;&#039;Record MIDI Out to Pattern Editor&#039;&#039;&#039; options available from the plugin editor’s [[Manual: Plugin Window#Options|menu bar]].&lt;br /&gt;
&lt;br /&gt;
=== MIDI Output Device ===&lt;br /&gt;
Selects the destination for MIDI data sent by the plugin. This can be any external MIDI device, or virtual MIDI routing ports. The special &#039;&#039;&#039;Internal OpenMPT Output&#039;&#039;&#039; option sends MIDI data to the next plugin in the chain instead, allowing the extended MIDI macro system of this plugin (see below) to be used with other plugins.&lt;br /&gt;
&lt;br /&gt;
By default, the MIDI data is sent out at roughly the same moment OpenMPT’s output is heard. To synchronize the MIDI data with other sound sources, you can delay the MIDI output further by entering a positive &#039;&#039;&#039;Output Latency&#039;&#039;&#039; if the MIDI data is heard too early. On the other hand, if the MIDI data is heard too late, you can also enter a negative latency amount, down to OpenMPT’s own [[Manual: Setup/Soundcard#Latency|configured latency]], to compensate for any delays introduced by the MIDI port or target MIDI device.&lt;br /&gt;
&lt;br /&gt;
When the &#039;&#039;&#039;Send timing messages&#039;&#039;&#039; box is checked, OpenMPT will send the following additional MIDI messages:&lt;br /&gt;
* Song Start (&amp;lt;code&amp;gt;FA&amp;lt;/code&amp;gt;) and Song Stop (&amp;lt;code&amp;gt;FC&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Song Position Pointer (&amp;lt;code&amp;gt;F2&amp;lt;/code&amp;gt;) on every manual position change or start of new measure, up to the maximum possible PPQ position of 16,383 sixteenth notes.&lt;br /&gt;
* MIDI Clock (&amp;lt;code&amp;gt;F8&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Initial MIDI Dump ===&lt;br /&gt;
This allows you to configure specific MIDI messages to be sent either when the module plays for the first time (with &#039;&#039;&#039;Only send once&#039;&#039;&#039; checked) or every time playback restarts. Typical use cases include sending device-specific SysEx configuration messages to external MIDI devices, or setting up initial patch changes and controller values.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Send Now&#039;&#039;&#039; button allows to test the entered MIDI messages immediately during playback.&lt;br /&gt;
&lt;br /&gt;
You can import SysEx dump files (.syx) to avoid manual entry of long MIDI messages using the &#039;&#039;&#039;Import Dump...&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
=== Parameter Macros ===&lt;br /&gt;
1,000 plugin parameters are available to be configured to send arbitrary MIDI messages. These macros offer several advantages over regular [[Manual: Zxx Macros|MIDI Macros]]:&lt;br /&gt;
&lt;br /&gt;
* Obviously, you are no longer limited to just 16 different macros.&lt;br /&gt;
* While regular MIDI macros have a 31-character limit, plugin macros can contain MIDI message sequences of any length.&lt;br /&gt;
&lt;br /&gt;
The plugin macros follow the same [[Manual: Macro Configuration#Macro Syntax|macro syntax]] as regular MIDI macros. The &#039;&#039;&#039;z&#039;&#039;&#039; variable is controlled by the plugin parameter value.&lt;br /&gt;
&lt;br /&gt;
You can use [[Manual: Parameter Control Events|Parameter Control Events]] to control these parameters, or, maybe a bit pointlessly, Zxx MIDI macros. &lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|MIDI Input / Output Plugin]]&lt;br /&gt;
[[Category:Plugins|MIDI Input / Output Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|MIDI Input / Output Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_About_OpenMPT&amp;diff=5002</id>
		<title>Manual: About OpenMPT</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_About_OpenMPT&amp;diff=5002"/>
		<updated>2026-04-01T16:17:36Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is Open ModPlug Tracker? ==&lt;br /&gt;
&lt;br /&gt;
OpenMPT is a third-generation &#039;&#039;&#039;[https://en.wikipedia.org/wiki/Music_tracker tracker]&#039;&#039;&#039; — a music application with a focus on a mostly textual note representation with a strong keyboard focus. It comes with a built-in sampler but may also make use of external sound generators, including external MIDI synthesizers and “virtual synthesizers” called VST instruments. Contrary to many other trackers, OpenMPT makes use of the Windows environment, using the operating system’s native look and feel with sliders and buttons for visual-based input.&lt;br /&gt;
&lt;br /&gt;
While the text display may look intimidating and old-fashioned compared to the big well-known &#039;&#039;&#039;sequencers&#039;&#039;&#039; at first, it allows for a very fast music composition process for the experienced user. The text-based event editing system is aided by a graphical sample editor and built-in sampler, and note data can be input through the computer’s keyboard or any external MIDI gear. With its flexibility, OpenMPT can appeal to all composers from electronic dance music genres to experimentalists to classical composers.&lt;br /&gt;
&lt;br /&gt;
== Feature Overview ==&lt;br /&gt;
&lt;br /&gt;
* It’s totally &#039;&#039;&#039;free&#039;&#039;&#039;!&lt;br /&gt;
* The workspace is intuitive and efficient, with a simple Windows-oriented interface, plenty of tooltips everywhere, and separate specific sections of work into tabs.&lt;br /&gt;
* It allows for a rich set of options and preferences, including:&lt;br /&gt;
** Ability to customize the [[Manual: Setup/Display|GUI colour]] (but no skins yet), including colour schemes and custom pattern fonts.&lt;br /&gt;
** Optional global [[Manual: Setup/DSP|DSP effects]] including an equalizer.&lt;br /&gt;
** Up to 128 channels for pattern data (each with their own volume, pan, and plugin settings, as well as customizable channel names), and separate volume controls for sample playback, instrument plugins, and overall global volume.&lt;br /&gt;
** Customizable audio playback quality (interpolation quality, sample rate and bit depth), polyphony, and latency settings.&lt;br /&gt;
** Ability to [[Manual: Setup/Paths / Auto Save|automatically save]] the current file at intervals — and to a location — of your choosing.&lt;br /&gt;
** Ability to customize most actions with [[Manual: Setup/Keyboard|keyboard shortcuts]], including navigation, input, and opening dialog boxes.&lt;br /&gt;
* It has a [[Manual: Tree View|side panel]] with expandable directory view to locate relevant files quickly.&lt;br /&gt;
* It can open or import a wide range of [[Manual: Module formats|tracker formats]], including backward compatibility with files saved under previous versions of OpenMPT.&lt;br /&gt;
* It can [[Manual: Saving_and exporting|export]] to a variety of streaming audio formats such as WAV, FLAC and MP3, as well as render individual patterns, channels or instruments.&lt;br /&gt;
* It can extract instruments and samples from soundfonts, like the General MIDI soundfont that comes pre-installed with Windows (GM.DLS).&lt;br /&gt;
* [[Manual: MIDI Input / Output Plugin|MIDI input and output]] to record from and playback on external MIDI devices.&lt;br /&gt;
* It can make use of VST 1.x and VST 2.x plugins, as well as DirectX Media Objects.&lt;br /&gt;
* It can output audio through many different sound drivers, including WASAPI (default), ASIO, WaveRT, and others.&lt;br /&gt;
* It can apply [[Manual: Tunings|alternate tunings]] (including scales and temperaments) to sample playback.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
* Limited control for editing of sample data.&lt;br /&gt;
* Alternate temperaments cannot be applied to instrument plugins.&lt;br /&gt;
* Can only use a text-based editing system; no piano-roll or musical score editing.&lt;br /&gt;
* Only available as a native Windows program, but can also run in Wine on Mac computers and Linux.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
The ModPlugin was originally developed in the mid-90s by Olivier Lapicque as a plugin for Internet browsers to listen to tracked music files (such as .mod and .it files). From this plugin, he developed the ModPlug Player and the ModPlug Tracker. ModPlug Player can play a very wide variety of tracked music formats, and offers many different audio effects, such as graphic equalizer, reverb, and Surround Sound. Although it is still available, the Player is not open-source nor is it being developed further.&lt;br /&gt;
&lt;br /&gt;
ModPlug Tracker became completely open-source in 2004, allowing the actual application to be developed and the code altered for the correction of long-standing bugs and the implementation of new features, such as the advanced use of VST plugins and alternate tunings. It has been rated as one of the top five free music trackers by the Computer Music Magazine, and has a vibrant [https://openmpt.org/community community].&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|About OpenMPT]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Development:_Formats/IT&amp;diff=5001</id>
		<title>Development: Formats/IT</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Development:_Formats/IT&amp;diff=5001"/>
		<updated>2026-03-22T22:30:46Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* Edit History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;General information concerning the IT file format. Any variable names in this document refer to the original variable names from [https://github.com/schismtracker/schismtracker/wiki/ITTECH.TXT ITTECH.TXT]. Variable names and hexadecimal numbers (in little-endian formats) are indicated by a &amp;lt;tt&amp;gt;monospace font&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note: Impulse tracker is now open source! You can grab the [https://github.com/jthlim/impulse-tracker source code] at GitHub.&lt;br /&gt;
&lt;br /&gt;
== Tracker IDs ==&lt;br /&gt;
&lt;br /&gt;
The IT header contains a field, &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt;, which is used to identify the application that was used to create the file.&lt;br /&gt;
The following custom tracker IDs (read as little-endian hexadecimal numbers) are known to be found in the &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; field:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;0xyy&amp;lt;/tt&amp;gt; - Impulse Tracker x.yy - Many other trackers, like ModPlug Tracker, disguise as various versions of Impulse Tracker, so this is &amp;lt;strong&amp;gt;not&amp;lt;/strong&amp;gt; a reliable way to tell if a file was really made with Impulse Tracker. See [[#Detecting other trackers|below]] for detecting such trackers.&lt;br /&gt;
* &amp;lt;tt&amp;gt;1xyy&amp;lt;/tt&amp;gt; - Schism Tracker x.yy up to Schism Tracker v0.50, later versions encode a timestamp in the version number - see Schism Tracker’s &amp;lt;tt&amp;gt;[https://github.com/schismtracker/schismtracker/blob/master/schism/version.c version.c]&amp;lt;/tt&amp;gt; or OpenMPT’s &amp;lt;tt&amp;gt;[https://source.openmpt.org/browse/openmpt/trunk/OpenMPT/soundlib/Load_it.cpp Load_it.cpp]&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;4xyy&amp;lt;/tt&amp;gt; - pyIT x.yy&lt;br /&gt;
* &amp;lt;tt&amp;gt;5xyy&amp;lt;/tt&amp;gt; - OpenMPT x.yy - lower two bytes of version number are stored in the &amp;quot;reserved&amp;quot; header field starting from OpenMPT 1.29.10.00 in compatible mode (otherwise OpenMPT song extensions are used as before).&lt;br /&gt;
* &amp;lt;tt&amp;gt;6xyy&amp;lt;/tt&amp;gt; - BeRoTracker x.yy&lt;br /&gt;
* &amp;lt;tt&amp;gt;7xyz&amp;lt;/tt&amp;gt; - ITMCK x.y.z (N.B. the user can override the value of the &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; header by the &amp;lt;tt&amp;gt;-w&amp;lt;/tt&amp;gt; command-line switch or the &amp;lt;tt&amp;gt;#TRACKER-VERSION&amp;lt;/tt&amp;gt; command in the input file)&lt;br /&gt;
* &amp;lt;tt&amp;gt;7FFF&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Cmwt = 0215&amp;lt;/tt&amp;gt;: munch.py&lt;br /&gt;
* &amp;lt;tt&amp;gt;8xyy&amp;lt;/tt&amp;gt; - Tralala x.yy; prealpha versions, built from svn, before the first release identify as version 0.00 (i.e. Cwt/v=8000)&lt;br /&gt;
* &amp;lt;tt&amp;gt;Cxyy&amp;lt;/tt&amp;gt; - ChickDune ChipTune Tracker x.yy (currently non-public alpha version)&lt;br /&gt;
* &amp;lt;tt&amp;gt;DAEB&amp;lt;/tt&amp;gt; - spc2it (after commit d3d1b524032f668be8ee20d25339e1c635fb9bcf)&lt;br /&gt;
* &amp;lt;tt&amp;gt;D1CE&amp;lt;/tt&amp;gt; - [https://github.com/chr15m/itwriter itwriter] JavaScript library (user can change this default)&lt;br /&gt;
* &amp;lt;tt&amp;gt;EFFF&amp;lt;/tt&amp;gt; - rosetracker (in development)&lt;br /&gt;
&lt;br /&gt;
Are you a tracker developer and your tracker can save IT files? Please add your Tracker ID to this list!&lt;br /&gt;
&lt;br /&gt;
Once we run out of tracker IDs, a more sophisticated approach will have to be found. For example, the ID &amp;lt;tt&amp;gt;0FFF&amp;lt;/tt&amp;gt; could be reserved, and a pointer to extended tracker information could be placed in the &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; header field.&lt;br /&gt;
&lt;br /&gt;
== Detecting other trackers ==&lt;br /&gt;
&lt;br /&gt;
Some trackers disguise as Impulse Tracker 2, but there are ways to uncover this disguise:&lt;br /&gt;
&lt;br /&gt;
=== BeRoTracker ===&lt;br /&gt;
&lt;br /&gt;
Earlier versions of BeRoTracker, which did not use the tracker ID described above, can be identified by the four byte &amp;lt;tt&amp;gt;MODU&amp;lt;/tt&amp;gt; magic which can be found after the Edit History / MIDI Macro / ModPlug extension block. &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0217&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0214&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;0200&amp;lt;/tt&amp;gt; (overlaps with ModPlug Tracker). The edit history flag is set and there are always 0 entries in the edit history.&lt;br /&gt;
&lt;br /&gt;
=== CheeseTracker ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; are both &amp;lt;tt&amp;gt;0214&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Instrument mode flag is always set. The only other flags that can be optionally set are: Stereo Mode, Linear Slides, Old Effects, Compatible Gxx.&lt;br /&gt;
* The only &amp;lt;tt&amp;gt;special&amp;lt;/tt&amp;gt; flag ever set is the song message flag (even though row highlights are always written).&lt;br /&gt;
* &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;&lt;br /&gt;
* All sample and instrument filenames read &amp;lt;tt&amp;gt;XXXXXXXX.YYY&amp;lt;/tt&amp;gt; (obviously this should not be used as a stand-alone detection criterion, as files re-saved with other trackers will still use these filenames).&lt;br /&gt;
&lt;br /&gt;
=== ChibiTracker ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; are both &amp;lt;tt&amp;gt;0214&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; reads &amp;lt;tt&amp;gt;CHBI&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Further interesting criteria: Sample data is stored directly after header. All sample and instrument filenames read &amp;lt;tt&amp;gt;-DEPRECATED-&amp;lt;/tt&amp;gt; (obviously this should not be used as a stand-alone detection criterion, as files re-saved with other trackers will still use these filenames). ChibiTracker also uses a line feed character (&amp;lt;tt&amp;gt;0A&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;\n&amp;lt;/tt&amp;gt;) instead of a carriage return (&amp;lt;tt&amp;gt;0D&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;\r&amp;lt;/tt&amp;gt;) in the song message.&lt;br /&gt;
&lt;br /&gt;
=== ModPlug Tracker ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;ModPlug Tracker 1.0 pre-alpha 4 (and possibly earlier) - 1.0 alpha 4&#039;&#039;&#039;: &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0202&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0200&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;, row highlights are both 0. These attributes alone are not enough to fingerprint these ModPlug Tracker versions, but luckily it also stores the remaining data in a very peculiar order: patterns first, then instrument headers, and then interleaves sample headers and their corresponding sample data. These versions also do not optimize empty 64-row patterns with a 0 parapointer, so they can be identified by checking if the first pattern parapointer is not 0 and less than the first sample parapointer.&lt;br /&gt;
* &#039;&#039;&#039;ModPlug Tracker 1.0 alpha 5&#039;&#039;&#039;: &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0214&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0200&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;. Pattern highlights and edit history flags are not set. Instruments are 560 bytes apart.&lt;br /&gt;
* &#039;&#039;&#039;ModPlug Tracker 1.0 alpha 6 / beta 1 / beta 2&#039;&#039;&#039;: &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0214&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0200&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;. Pattern highlights and edit history flags are set. Instruments are 560 bytes apart up to and including beta 1, in beta 2 they are 557 bytes apart.&lt;br /&gt;
* &#039;&#039;&#039;ModPlug Tracker 1.0 beta 3.2 - 1.09 build 66 (possibly up to build 77)&#039;&#039;&#039;: &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0214&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0202&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;. Instruments are 557 bytes apart.&lt;br /&gt;
* Newer versions of &#039;&#039;&#039;ModPlug Tracker&#039;&#039;&#039;, &#039;&#039;&#039;OpenMPT 1.17 in compatible mode&#039;&#039;&#039;: &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0217&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0200&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;. If there are any instruments in the file, the instrument &amp;lt;tt&amp;gt;TrkVers&amp;lt;/tt&amp;gt; field is &amp;lt;tt&amp;gt;0211&amp;lt;/tt&amp;gt; for ModPlug Tracker and &amp;lt;tt&amp;gt;0220&amp;lt;/tt&amp;gt; for OpenMPT. ModPlug Tracker writes &amp;lt;tt&amp;gt;FF&amp;lt;/tt&amp;gt; for unused channels in the panning map, OpenMPT never does this. When an IT file uses all 64 channels (so the panning map cannot be used for distinction), the presence of ModPlug extensions (channel names, plugin chunks, etc.) can help telling MPT 1.16 and OpenMPT 1.17 compatibility export apart. The latter also does not save a final &amp;quot;---&amp;quot; order list item, while MPT 1.16 does.&lt;br /&gt;
&lt;br /&gt;
=== OpenMPT ===&lt;br /&gt;
&lt;br /&gt;
* OpenMPT 1.17.02.20 to OpenMPT 1.17.02.25 wrote the value &amp;lt;tt&amp;gt;0300&amp;lt;/tt&amp;gt; in both the &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; fields.&lt;br /&gt;
* OpenMPT 1.17.02.26 to OpenMPT 1.18 wrote the value &amp;lt;tt&amp;gt;0888&amp;lt;/tt&amp;gt; in both the &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; fields.&lt;br /&gt;
* Later versions of OpenMPT use the tracker ID provided above. In that case, the &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; field reads &amp;lt;tt&amp;gt;OMPT&amp;lt;/tt&amp;gt; if the file was saved in normal mode, and is &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; (or the lower two bytes of version information starting from OpenMPT 1.29.10.00) if it was saved in compatible mode.&lt;br /&gt;
&lt;br /&gt;
=== OpenSPC conversions ===&lt;br /&gt;
&lt;br /&gt;
OpenSPC is a tool to convert SNES music from the SPC format to the IT format. If all the following conditions are true, you can be fairly sure that a module was written with OpenSPC:&lt;br /&gt;
* &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0214&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0200&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;Flags&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;09&amp;lt;/tt&amp;gt; (Linear Slides, Stereo Playback).&lt;br /&gt;
* &amp;lt;tt&amp;gt;Special&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Both pattern highlight values are &amp;lt;tt&amp;gt;00&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* No instruments are used.&lt;br /&gt;
* &amp;lt;tt&amp;gt;PatNum&amp;lt;/tt&amp;gt; + 1 == &amp;lt;tt&amp;gt;OrdNum&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Global volume is 128 decimal.&lt;br /&gt;
* Master volume is 100 decimal.&lt;br /&gt;
* Initial Speed is 1.&lt;br /&gt;
* Pan Separation is 128 decimal.&lt;br /&gt;
* Pitch wheel depth is 0.&lt;br /&gt;
* There is no song message, i.e. message length and offset are 0.&lt;br /&gt;
* &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; is 0.&lt;br /&gt;
&lt;br /&gt;
Earlier versions of spc2it (before commit d3d1b524032f668be8ee20d25339e1c635fb9bcf) will be mis-identified as OpenSPC, as the tool closely follows the way its predecessor writes out IT files.&lt;br /&gt;
&lt;br /&gt;
=== Unknown XM to IT conversion tool ===&lt;br /&gt;
&lt;br /&gt;
There is a currently unknown XM to IT conversion tool which can be identified easily by the fact that it writes unsigned samples (which was the default only until Impulse Tracker 2.01). However, only sample slots with actual sample data should be considered for this test, as re-saving such a file in Impulse Tracker will not reset the unsigned flag for empty slots. If the following conditions are true, you can be fairly sure that a module was written with the unknown converter:&lt;br /&gt;
* &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0204&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0200&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;Flags&amp;lt;/tt&amp;gt;: Stereo Playback, Instrument Mode, Old Effects are always set, Linear Slides are optional.&lt;br /&gt;
* &amp;lt;tt&amp;gt;Special&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Both pattern highlight values are &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Global volume is 128 decimal.&lt;br /&gt;
* Master volume is 48 decimal.&lt;br /&gt;
* Pan Separation is 128 decimal.&lt;br /&gt;
* Pitch wheel depth is 0.&lt;br /&gt;
* There is no song message, i.e. message length and offset are 0.&lt;br /&gt;
* &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; is 0.&lt;br /&gt;
* Song title is no longer than 20 characters.&lt;br /&gt;
* All channels are panned centre (32) or muted, and their volume is 64 decimal.&lt;br /&gt;
&lt;br /&gt;
To be extra sure, you can check all of these properties, but just checking &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; and unsigned sample data is probably enough.&lt;br /&gt;
&lt;br /&gt;
=== UNMO3 ===&lt;br /&gt;
&lt;br /&gt;
UNMO3 is a tool to convert an MO3-compressed module file back into its original format.&lt;br /&gt;
&lt;br /&gt;
In IT files created with UNMO3, the following are always true:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;Cwt/v&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Cmwt&amp;lt;/tt&amp;gt; are &amp;lt;tt&amp;gt;0214&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;pwd&amp;lt;/tt&amp;gt; is 0&lt;br /&gt;
* Both row highlights are 0&lt;br /&gt;
* Flags: Use MIDI Pitch Controller (bit 6) and Request embedded MIDI configuration (bit 7) are never set&lt;br /&gt;
&lt;br /&gt;
This partially overlaps with Impulse Tracker 2.14 and CheeseTracker fingerprints, however:&lt;br /&gt;
* CheeseTracker should write non-zero row highlights, even when resaving an UNMO3-ed file.&lt;br /&gt;
* It is highly unlikely that Impulse Tracker 2.14 writes a &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; value of &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;. If it writes zero row highlights, the row highlight &amp;lt;tt&amp;gt;special&amp;lt;/tt&amp;gt; flag is set.&lt;br /&gt;
* Impulse Tracker 2.14 never writes an empty edit history (see below).&lt;br /&gt;
* CheeseTracker always uses instrument mode.&lt;br /&gt;
&lt;br /&gt;
Some older versions of UNMO3 write out IT files that are malformed in some way or another, but it is easy to detect and work around. Some UNMO3-ed IT files are floating around in the wild, so it may be worthwile to implement those work-arounds:&lt;br /&gt;
&lt;br /&gt;
==== Special flags prior UNMO3 2.4.0.2 ====&lt;br /&gt;
&lt;br /&gt;
* UNMO3 2.4 (released in 2008) and older sets the &amp;lt;tt&amp;gt;special&amp;lt;/tt&amp;gt; flag bits 1 (edit history) and 2 (row highlights) whenever bit 3 (MIDI macros) is set as well.&lt;br /&gt;
* UNMO3 2.4.0.1 (January 2011) always sets the &amp;lt;tt&amp;gt;special&amp;lt;/tt&amp;gt; flag bit 1 (edit history), but the behaviour for bit 2 (row highlights) remains as in previous versions.&lt;br /&gt;
* UNMO3 2.4.0.2 (July 2011) never sets the row highlights flag.&lt;br /&gt;
&lt;br /&gt;
==== Sample mode prior to UNMO3 2.4.0.1 ====&lt;br /&gt;
&lt;br /&gt;
UNMO3 2.4 and older reserves space for the instrument parapointers (as many as there are samples) even when the IT file is in sample mode. This can be detected by the fact that 4 * &amp;lt;tt&amp;gt;SmpNum&amp;lt;/tt&amp;gt; zero bytes follow after the pattern parapointers. These bytes need to be skipped in order to be able to read MIDI macros and ModPlug plugin settings which may potentially follow.&lt;br /&gt;
&lt;br /&gt;
UNMO3 2.4.0.1 fixes this problem.&lt;br /&gt;
&lt;br /&gt;
==== Edit History prior to UNMO3 2.4.0.1 ====&lt;br /&gt;
&lt;br /&gt;
As mentioned above, UNMO3 older than version 2.4.0.1 may or may not set the edit history flag, but they always write two edit history length bytes (zeroes) in the file anyway. Keep this in mind, as MIDI Macros and ModPlug plugin settings will not load properly if you don’t.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Edit history flag is set&#039;&#039;&#039;: Nothing needs to be done. We can still use this for identifying UNMO3-saved IT files, because Impulse Tracker never writes an edit history of length 0.&lt;br /&gt;
* &#039;&#039;&#039;Edit history flag is not set&#039;&#039;&#039;: This is the troublesome case due to MIDI macros and plugin settings. However, a reliable way to detect such malformed IT files would be to try to read the edit history length if all of the above detection criteria for UNMO3 are fulfilled. For those old UNMO3 versions, you should read two zero bytes. If that is the case, it means that the first MIDI macro would be empty (if MIDI macros are embedded) or the first plugin chunk ID starts with two zero bytes (impossible). Since UNMO3 writes out default values for the nine global MIDI macros, the first MIDI macro would have to start with “FF” (MIDI Start) and not be empty, so it is clear that the two zero bytes belong to the (empty) edit history.&lt;br /&gt;
&lt;br /&gt;
Later version of UNMO3 set the correct header flag for the edit history and write the two zero length bytes.&lt;br /&gt;
&lt;br /&gt;
== Special Header Flags ==&lt;br /&gt;
&lt;br /&gt;
The following &amp;quot;Special&amp;quot; flags are not documented:&lt;br /&gt;
&lt;br /&gt;
* Bit 1 (&amp;lt;tt&amp;gt;02&amp;lt;/tt&amp;gt;): If set, edit history information (see [[#Edit History|below]]) is present.&lt;br /&gt;
* Bit 2 (&amp;lt;tt&amp;gt;04&amp;lt;/tt&amp;gt;): If set, the row highlights (at offset &amp;lt;tt&amp;gt;1E&amp;lt;/tt&amp;gt; - &amp;lt;tt&amp;gt;1F&amp;lt;/tt&amp;gt;) should be read. If not set, they should be ignored.&lt;br /&gt;
&lt;br /&gt;
== Edit History ==&lt;br /&gt;
    &lt;br /&gt;
It is little known that Impulse Tracker 2.08 and later keep track of when an IT file is opened and how long it is left open.&lt;br /&gt;
The edit history can be found directly after the IT header and before the possibly present MIDI macro configuration.&lt;br /&gt;
&lt;br /&gt;
A 16-Bit integer &amp;lt;tt&amp;gt;num&amp;lt;/tt&amp;gt; tells how many edit history blocks are present. Every block is 8 bytes long, so the 16-bit integer is followed by &amp;lt;tt&amp;gt;8 * num&amp;lt;/tt&amp;gt; bytes of edit history information.&lt;br /&gt;
&lt;br /&gt;
Each history block consists of a 16-Bit FAT date, a 16-Bit FAT time and a 32-Bit DOS timer, which contains the time how long the file was open in the editor, in 1/18.2th seconds.&lt;br /&gt;
Information on how to decode the FAT date and time stamps can be found on the [https://msdn.microsoft.com/en-us/library/windows/desktop/ms724247%28v=vs.85%29.aspx MSDN].&lt;br /&gt;
&lt;br /&gt;
Note: Many programs don’t write an edit history, but they set the edit history flag in the header and write the two zero bytes for the history length. Many of them also ignore the edit history flag when loading files and always read the two &amp;lt;tt&amp;gt;num&amp;lt;/tt&amp;gt; bytes (ignoring the special flag), so if you want to write out an IT file that does not have an edit history and do not mind about the two extra bytes, the safest (most compatible) way is to set the edit history flag and write two zero bytes for &amp;lt;tt&amp;gt;num&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also note that none of this is really relevant if you are sure that you never write out the MIDI macro configuration or ModPlug extensions, since these are the only two things that could normally follow the edit history. So if you have no MIDI macros and no ModPlug extensions, it is always safe to not set the special flag and not write the two extra bytes.&lt;br /&gt;
&lt;br /&gt;
== Edit Timer ==&lt;br /&gt;
&lt;br /&gt;
Before the addition of the full Edit History, a simple Edit Timer was stored in the &amp;lt;tt&amp;gt;reserved&amp;lt;/tt&amp;gt; field of the file header. Starting from Impulse Tracker 2.07, this field contains the total edit time as a 32-Bit DOS timer (same resolution as in the Edit History). Starting from Impulse Tracker 2.08, the timer is encrypted. To decrypt:&lt;br /&gt;
&lt;br /&gt;
 editTime = editTime XOR &#039;ITRK&#039;&lt;br /&gt;
 editTime = editTime RoR 7&lt;br /&gt;
 editTime = -editTime&lt;br /&gt;
 editTime = editTime RoL 4&lt;br /&gt;
 editTime = editTime XOR &#039;JTHL&#039;&lt;br /&gt;
&lt;br /&gt;
== Proposed way to store compressed stereo samples ==&lt;br /&gt;
&lt;br /&gt;
Since Impulse Tracker itself does not support stereo samples, a common way of how to decode compressed stereo samples had to be found - After all, it is possible to just treat them as one continuous stream (not stopping the encoding / decoding process after the end of the left channel), or to treat them as two separate, consecutive streams. XMPlay was probably the only player that could handle compressed stereo samples even before there was a single implementation for saving compressed stereo samples. GreaseMonkey has decided to follow [https://www.un4seen.com/forum/?topic=12448.msg86479#msg86479 XMPlay&#039;s way] of decoding compressed stereo samples by treating them as two streams of the same length, so OpenMPT follows this example. If you intend to add IT sample compression support in your application, you should do the same to ensure compatibility across as many applications as possible.&lt;br /&gt;
&lt;br /&gt;
== OpenMPT Hacks ==&lt;br /&gt;
&lt;br /&gt;
For a list of all the file format hacks that ModPlug Tracker / OpenMPT added to the IT format over the years, see the [[Development: OpenMPT Format Extensions|OpenMPT Format Extensions]] article.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development|Formats/IT]]&lt;br /&gt;
[[Category:IT Format|Format Specification]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/MOD&amp;diff=4987</id>
		<title>Development: Test Cases/MOD</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/MOD&amp;diff=4987"/>
		<updated>2026-01-26T20:23:45Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: ArpWraparound.mod corrected explanation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Testsuite Introduction|format=MOD|tracker=ProTracker}}&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=AmigaLimitsFinetune.mod|pass=1555}}&lt;br /&gt;
ProTracker does not always clamp samples to the exact same range of periods — it rather depends on the actual finetune value of the sample. In contrast to that, Scream Tracker 3 always clamps periods to the same range in its Amiga mode. This test file should stay completely in tune at all times.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=ArpWraparound.mod|pass=1537 + 6738}}&lt;br /&gt;
If an arpeggio parameter exceeds the Amiga frequency range, ProTracker wraps it around. In fact, the first note that is too high (which would be C-7 in OpenMPT or C-4 in ProTracker) will play at a period of 0 (which effectively results in a period of 65536), C#7 / C#4 becomes C-4 / C-1, and so on.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=DelayBreak.mod|pass=2108}}&lt;br /&gt;
If there is a row delay (EEx) on the same row as a pattern break (Dxx), the target row of that jump is not played. Instead, the next row is played.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=finetune.mod}}&lt;br /&gt;
ProTracker’s E5x finetune handling is a bit weird. It is also evaluated if there is no note next to the command, and the command is also affected by 3xx portamentos.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=InstrDelay.mod|pass=4212 + 8653 + 8674}}&lt;br /&gt;
ProTracker always loads the new instrument settings (volume, finetune and sample pointer) on the first tick, even if there is a note delay. The new sample pointer is only used if the current sample is looped and its loop end is reached.&lt;br /&gt;
&lt;br /&gt;
This quirk is implemented in ProTracker 1/2 mode.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=InstrSwapRetrigger.mod|pass=18955 + 18956}}&lt;br /&gt;
Instrument swapping should happen instantly (not at the end of the sample or end of sample loop like in [[#PTInstrSwap.mod|PTInstrSwap.mod]]) when there is an E9x retrigger command next to a lone instrument number. As with regular sample swapping, the sample finetune is not updated. The left and right channel of this module should sound identical.&lt;br /&gt;
&lt;br /&gt;
Note that the retrigger command can cause semi-random tiny delays with ProTracker on a real Amiga, so if there are small differences in phase between the left and right channel when playing this test in ProTracker but not in an external player, this is acceptable.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=NoteDelay-NextRow.mod|pass=8730}}&lt;br /&gt;
In ProTracker, a note delay greater than the current speed will cause the delayed note to be played on the first tick of the next row if there is no new note on the next row (even if that new note is also delayed). However, the note is note restarted but rather continues where a previous note left off playing (like an instant portamento).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PatLoop-Break.mod|pass=5402}}&lt;br /&gt;
Just as with XM and IT, a pattern break should not reset the pattern loop counter. You should hear two noise bursts, followed by the words “success”.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PatternDelaysRetrig.mod|pass=9152}}&lt;br /&gt;
When there is a row delay (EEx), fine slides and note delays should be executed on every row repetition.&lt;br /&gt;
&lt;br /&gt;
Note. OpenMPT does not apply ProTracker behaviour for this quirk if the MOD file contains more than 4 channels or notes outside of the Amiga frequency range. This is to avoid some potential issues with infinite pattern loops due to row delays that e.g. FastTracker 2 doesn&#039;t have (and thus FT2-made MODs would get stuck in an infinite loop where they should not).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PatternJump.mod|pass=1321}}&lt;br /&gt;
A Bxx command should reset the effect of a Dxx command that is left of the Bxx command. You should hear a voice saying “success”.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PortaSmpChange.mod|pass=3578}}&lt;br /&gt;
The interpretation of this scenario highly differs between various replayers. If the sample number next to a portamento effect differs from the previous number, the new sample&#039;s default volume should be applied and&lt;br /&gt;
* the old sample should be played until reaching its end or loop end (ProTracker 1/2). If the sample loops, the new sample should be activated after the loop ended.&lt;br /&gt;
* the old sample should keep playing (various other players)&lt;br /&gt;
OpenMPT implements the second option in normal playback mode and the first option in ProTracker 1/2 mode.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PortaSwapPT.mod|pass=6614 + 8665}}&lt;br /&gt;
Related to [[#PortaSmpChange.mod|PortaSmpChange.mod]], this tests the portamento with sample swap behaviour for ProTracker-compatible MODs.&lt;br /&gt;
Noteworthy tested behaviours:&lt;br /&gt;
* When doing a sample swap without portamento, the new sample keeps using the old sample’s finetune.&lt;br /&gt;
* When doing a sample swap with portamento, the new sample’s finetune is instantly applied, and the new sample is started as soon as the old sample’s loop is finished playing.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PortaTarget.mod|pass=4726}}&lt;br /&gt;
ProTracker’s portamento behaviour is somewhere between FT2 and IT:&lt;br /&gt;
* A new note (with no portamento command next to it) does not reset the portamento target. That is, if a previous portamento has not finished yet, calling 3xx or 5xx after the new note will slide it towards the old target.&lt;br /&gt;
* Once the portamento target period is reached, the target is reset. This means that if the period is modified by another slide (e.g. 1xx or 2xx), a following 3xx will not slide back to the original target.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PTInstrSwap.mod|pass=4223}}&lt;br /&gt;
When specifying an instrument number without a note, ProTracker 1/2 instantly applies the new instrument settings, but does not use the new sample until the end of the (loop of the) current sample is reached. In this example, sample 2 should be played at maximum volume as soon as instrument number 1 is encountered in the pattern, then sample 1 should be triggered somewhere around row 10 and then stop playing at around row 18.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PTInstrVolume.mod|pass=12249}}&lt;br /&gt;
This test verifies that a volume command set together with an instrument but no note will be kept once the note is triggered later.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=ptoffset.mod|pass=4018}}&lt;br /&gt;
ProTracker 1/2 has a slightly buggy offset implementation which adds the offset in two different places (according to tracker_notes.txt coming with libxmp: &amp;quot;once before playing this instrument (as is expected), and once again after this instrument has been played&amp;quot;). The left and right channel of this module should sound identical. OpenMPT emulates this behaviour correctly in ProTracker mode.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PTOffsetRetrigger.mod|pass=22218}}&lt;br /&gt;
In ProTracker, the retrigger command also re-applies a previous note offset if there is no instrument number. The left and right channels should play identically, and the distorted sound at the beginning of the sample should never be heard.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PTRetrigger.mod|pass=14872}}&lt;br /&gt;
This tests the E9x implementation against the ProTracker implementation. Left and right channel should retrigger at the same intervals.&lt;br /&gt;
&lt;br /&gt;
In summary, this is how the retrigger effect should work:&lt;br /&gt;
* If current tick is 0 and there is a note, do not retrigger&lt;br /&gt;
* If effect parameter is greater than 0, and the current tick modulo the parameter is 0, do retrigger&lt;br /&gt;
&lt;br /&gt;
Note that the current tick counts upwards (starting at 0), and is reset on every repetition caused by the EEx (row delay) command.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PTStoppedSwap.mod|pass=21029}}&lt;br /&gt;
When a non-looped sample stopped playing, it is still possible to perform sample swapping to a looped sample. As a result, on the first and third row, a square wave should be heard, a drum on the second and fourth row, but no new sample should be triggered on the fifth row.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PTSwapEmpty.mod|pass=4950}}&lt;br /&gt;
ProTracker instrument swapping (see [[#PTInstrSwap.mod|PTInstrSwap.mod]] test case) also works when swapping from an empty sample slot back to a normal slot: If the sample was already swapped, it is restarted immediately.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=PTSwapNoLoop.mod|pass=11843 + 11844}}&lt;br /&gt;
ProTracker instrument swapping (see [[#PTInstrSwap.mod|PTInstrSwap.mod]] test case) should also work when the &amp;quot;source&amp;quot; sample is not looped. However, when the &amp;quot;target&amp;quot; sample is not looped, sample playback should stop as with [[#PTSwapEmpty.mod|PTSwapEmpty.mod]]. Conceptually this can be explained because in this case, the sample loop goes from 0 to 2 in &amp;quot;oneshot&amp;quot; mode, i.e. it will loop a (hopefully) silent part of the sample.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=TempoChange.mod|pass=8732}}&lt;br /&gt;
ProTracker applies any tempo changes after the first tick (so at one tick per row, they happen on the next row).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=mod|name=VibratoReset.mod|pass=1556}}&lt;br /&gt;
Like many other trackers, ProTracker does not advance the vibrato position on the first tick of the row. However, it also does not &#039;&#039;apply&#039;&#039; the vibrato offset on the first tick, which results in somewhat funky-sounding vibratos. OpenMPT uses this behaviour only in ProTracker 1/2 mode. The same applies to the tremolo effect.&lt;br /&gt;
&lt;br /&gt;
{{Testcase Summary}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Development|Test Cases/MOD]]&lt;br /&gt;
[[Category:MOD Format|Test Cases]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Samples&amp;diff=4983</id>
		<title>Manual: Samples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Samples&amp;diff=4983"/>
		<updated>2025-12-08T18:21:08Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* Sample Loops */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Sample Tab.png|thumb|300px|Sample Tab]]&lt;br /&gt;
&lt;br /&gt;
On the sample tab, you find all the tools needed to load, edit and create new samples or OPL instruments. Samples, besides synthesizer plugins, are the main sound source in OpenMPT. Depending on the module format used, they are directly used without further layers on top (MOD and S3M format) or are referenced by [[Manual: Instruments|instruments]], where their playback can be altered through a variety of envelopes and other effects (all other formats).&lt;br /&gt;
&lt;br /&gt;
In the S3M and MPTM formats, a sample slot can also hold the patch data for an [[#OPL instrument display|FM-synthesized OPL instrument]].&lt;br /&gt;
&lt;br /&gt;
A number of sample properties can be controlled on this tab, such as default volume and panning, loop and sustain points as well as auto vibrato. All options are explained in detail here.&lt;br /&gt;
&lt;br /&gt;
== Toolbar ==&lt;br /&gt;
&lt;br /&gt;
=== File Toolbar ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Sample File Toolbar.png]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;New Sample&#039;&#039;&#039;: Creates a new sample. In instrument mode, you are asked if the new sample should be assigned with a new instrument. &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-clicking this button or choosing the dropdown menu duplicates the current sample. In the S3M and MPTM format, the dropdown menu can also be used to initialize the current sample slot with an [[#OPL instrument display|FM-synthesized instrument]].&lt;br /&gt;
* &#039;&#039;&#039;Load Sample&#039;&#039;&#039;: Loads one or more sample in one of the following formats. To enforce loading as a Raw sample, choose “Import Raw Sample” from the dropdown menu.&lt;br /&gt;
** Amiga IFF (8SVX / 16SVX / MAUD)&lt;br /&gt;
** AIFF / AIFF-C with uncompressed PCM, floating-point, µ-Law and A-Law (AIF / AIFF)&lt;br /&gt;
** Sun Audio with uncompressed PCM, floating-point, µ-Law and A-Law (AU / SND)&lt;br /&gt;
** SNES Bit Rate Reduction (BRR)&lt;br /&gt;
** Apple CAF: Uncompressed PCM (CAF)&lt;br /&gt;
** FLAC, OggFlac (FLAC in Ogg Container)&lt;br /&gt;
** Impulse Tracker samples (ITS)&lt;br /&gt;
** MPEG-1 Audio (MP1 / MP2 / MP3)&lt;br /&gt;
** Opus (OPUS)&lt;br /&gt;
** Ogg Vorbis (OGG, OGA)&lt;br /&gt;
** Gravis UltraSound patches (PAT)&lt;br /&gt;
** Headerless PCM data (RAW, PCM)&lt;br /&gt;
** Scream Tracker 3 samples and OPL instruments (S3I)&lt;br /&gt;
** OPL2 instruments (SBI)&lt;br /&gt;
** Sony Wave64: Uncompressed PCM (W64)&lt;br /&gt;
** WAV: Uncompressed PCM (up to 32 bits), floating-point (32 / 64 bits), IMA ADPCM, µ-Law and A-Law.&lt;br /&gt;
** Fasttracker 2 instruments (XI)&lt;br /&gt;
** &#039;&#039;&#039;Media Foundation&#039;&#039;&#039;: OpenMPT makes use of the Media Foundation framework and can load any sample supported by the system. This includes AAC and MP4 audio, compressed WAV files, WMA, audio streams from video files and other formats.&lt;br /&gt;
** Trying to load any module as a sample will open it in the [[Manual: Tree View#Instrument Library|Instrument Library]] instead, from where you can drag and drop samples into the sample editor.&lt;br /&gt;
* &#039;&#039;&#039;Save Sample&#039;&#039;&#039;:  Saves an instrument either in the WAV, FLAC, IFF, S3I or RAW format. Hold &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; while clicking the button to mass-export all samples at once. In the save dialog, you can then use the variables &amp;lt;code&amp;gt;%sample_number%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%sample_filename%&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;%sample_name%&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Loading a sample file in an unrecognized sample format, or when using the “Import Raw Sample” option opens the [[Manual: Raw Sample Import|Raw Sample Import]] dialog, where the imported sample format can be specified.&lt;br /&gt;
&lt;br /&gt;
Next to the toolbar buttons are a spin button for dialling up a different sample, a drop-down box for changing the zoom level and sample format information.&lt;br /&gt;
&lt;br /&gt;
=== Edit Toolbar ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Sample Edit Toolbar.png]]&lt;br /&gt;
&lt;br /&gt;
The sample format block is followed by another toolbar that mostly contains tools for editing samples:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Preview Sample&#039;&#039;&#039;: Plays the current sample at middle-C. Clicking the button again stops the sample.&lt;br /&gt;
* &#039;&#039;&#039;Normalize&#039;&#039;&#039;: Amplifies the sample (or a selection of it) as much as possible without distortion. Samples should be normalized before being converted to 8-Bit for optimal usage of the dynamic range. &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-clicking this button normalizes all samples independently.&lt;br /&gt;
* &#039;&#039;&#039;Amplify&#039;&#039;&#039;: Opens the [[Manual: Amplify|Amplify dialog]], where the sample (or a selection of it) can be faded in or out and amplified by an arbitrary amount.&lt;br /&gt;
* &#039;&#039;&#039;Remove DC Offset&#039;&#039;&#039;: Normalizes and shifts the waveform so that it is centered around the center (DC) line. Any DC bias on samples should be removed for optimal headroom usage. &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-clicking this button removes DC Offset from all samples.&lt;br /&gt;
* &#039;&#039;&#039;Change Stereo Separation&#039;&#039;&#039;: Allows to widen or reduce a stereo sample’s stereo width, or to swap stereo channels by entering a negative separation amount (-100%: swaps channels, no change in stereo width).&lt;br /&gt;
* &#039;&#039;&#039;Resample&#039;&#039;&#039;: Opens the [[Manual: Resample|Resample dialog]] which can be used to change the sample’s playback frequency. &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-clicking this button resamples all samples.&lt;br /&gt;
* &#039;&#039;&#039;Reverse&#039;&#039;&#039;: Reverses the sample or parts of it.&lt;br /&gt;
* &#039;&#039;&#039;Silence&#039;&#039;&#039;: Silences a sample selection.&lt;br /&gt;
* &#039;&#039;&#039;Invert Phase&#039;&#039;&#039;: Inverts the sample’s or sample selection’s phase.&lt;br /&gt;
* &#039;&#039;&#039;Sign / Unsign&#039;&#039;&#039;: Applies a theoretical conversion between signed and unsigned PCM data to the sample or a selection. Usually this would be used for fixing imported RAW samples with mixed up signed / unsigned import options, but it can also produce nifty-sounding distorted samples.&lt;br /&gt;
* &#039;&#039;&#039;Crossfade&#039;&#039;&#039;: Opens the [[Manual: Sample Crossfader|Sample Crossfader dialog]], which applies a crossfade between the sample loop start and loop end for seamless sample loops.&lt;br /&gt;
* &#039;&#039;&#039;Tune sample&#039;&#039;&#039;: Opens the [[Manual: Sample Tuner|Sample Tuner dialog]], where a sample can be tuned to a given note.&lt;br /&gt;
&lt;br /&gt;
== External Samples ==&lt;br /&gt;
&lt;br /&gt;
In the MPTM format, you may keep references to external samples instead of directly storing them in the module file. This can help reducing disk space taken up by your modules, especially if you want to keep several work-in-progress versions of your song or when using [[Manual:_Setup/Paths / Auto_Save|auto save]]. However, keep in mind that editing these external sample files will also change any module referencing them.&lt;br /&gt;
&lt;br /&gt;
You can enable this feature by checking the &#039;&#039;&#039;Keep Sample Data on Disk&#039;&#039;&#039; box. This is only available if OpenMPT knows the sample’s location on disk, e.g. after you loaded this sample from or saved the sample to disk during the current editing session. &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-clicking the box will enable or disable it for all samples where it is applicable. OpenMPT will only load the external sample’s waveform from disk; any other parameters such as loop points, vibrato and panning settings are stored in the module itself.&lt;br /&gt;
&lt;br /&gt;
The [[Manual:_Tree_View#Song_Folders|Tree View]] offers further facilities for external sample management: There, you can right-click any sample and set its external path (this will also reload the sample from that location), save any changes you made to the sample to the external file and reload the sample from disk in case you edited it in an external application. You can also reload edited samples that way even when not using the external samples functionality.&lt;br /&gt;
&lt;br /&gt;
== Volume, Panning and Pitch ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Default Volume&#039;&#039;&#039;: The note velocity that is applied if no volume command is found next to a note. It can be overridden by placing a volume command (vxx in the volume column, or Cxx in the effect column in the MOD format) next to the note. Enabling &#039;&#039;&#039;Show default volume commands&#039;&#039;&#039; in the [[Manual: Setup/General|General settings]] displays the default volume next to a note if there are no regular volume commands.&lt;br /&gt;
* &#039;&#039;&#039;Global Volume&#039;&#039;&#039;: The overall attenuation of the sample. At a global volume of 64, no attenuation is done, at 32 the sample is half as loud, etc.&lt;br /&gt;
* &#039;&#039;&#039;Set Pan&#039;&#039;&#039;: Sets the default panning of the sample, which can be overridden by pattern panning commands. If enabled, sample panning overrides the default [[Manual: General#Channel Setup|channel panning]] and [[Manual: Instruments#Volume and Panning|instrument panning]]. In the XM format, every sample is forced to have a default panning, so there is no channel panning or instrument panning.&lt;br /&gt;
&lt;br /&gt;
In the S3M, IT and MPTM format, you can directly define the playback frequency of the Middle-C:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Frequency&#039;&#039;&#039;: Defines the playback frequency of C-5.&lt;br /&gt;
* &#039;&#039;&#039;Transpose&#039;&#039;&#039;: Shows to which note the C-5 frequency is relative to. It can be used to quickly tune the sample to a different note. When changing the transpose value, the frequency is updated instantly.&lt;br /&gt;
&lt;br /&gt;
In the MOD and XM format, you get different options:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Finetune&#039;&#039;&#039;: Specifies a slight variation (up to a few hundred Hz) from the &#039;&#039;&#039;Transpose&#039;&#039;&#039; note. Units are 1/8 semitone in MOD format, and are 1/128 semitone in XM format.&lt;br /&gt;
* &#039;&#039;&#039;Transpose&#039;&#039;&#039;: Shows to which note the C-5 frequency is relative to. In the MOD format, this value is locked to C-5, i.e. the Middle-C frequency cannot be changed coarsely, only fine-tuning is possible. Higher notes in this drop-down box represent a higher Middle-C frequency, i.e. C#5 means that it is transposed up by a semitone.&lt;br /&gt;
&lt;br /&gt;
== Sample Loops ==&lt;br /&gt;
&lt;br /&gt;
Depending on the module format used, samples can have “normal” and sustain loops. Every loop has a &#039;&#039;&#039;Start&#039;&#039;&#039; and &#039;&#039;&#039;End&#039;&#039;&#039; point, and there are several loop types available:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Off&#039;&#039;&#039;: The loop is not activated.&lt;br /&gt;
* &#039;&#039;&#039;On&#039;&#039;&#039;: The loop is repeated from the start to the end.&lt;br /&gt;
* &#039;&#039;&#039;Bidi&#039;&#039;&#039;: The loop is played bi-directionally, i.e. it is first played from start to end, then reversed from end to start.&lt;br /&gt;
&lt;br /&gt;
Sustain loops are played as long as no Note Off event is encountered. They are always considered before normal loops, so if the sustain loop is placed beyond the normal loop, the normal loop is ignored at first. As soon as the sustain loop is exited (by means of a Note Off event), playback is resumed in the normal loop.&lt;br /&gt;
&lt;br /&gt;
By default, pressing the spin buttons next to the loop start and end points tries to move the loop point in a way that avoids „clicks“ in the loop. If no such point is found, the loop point will not change. Holding &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; while pressing the spin buttons changes this behaviour to always increment or decrement the loop point by 1.&lt;br /&gt;
&lt;br /&gt;
Holding &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; while pressing the spin buttons next to the loop start and end points moves both points at the same time, so the loop length remains the same.&lt;br /&gt;
&lt;br /&gt;
Note that sample loops have a peculiar behaviour if the [[Manual: Compatible Playback#MOD compatibility settings|ProTracker one-shot loops]] compatibility setting is enabled in the MOD format: If the loop start is set to 0, the &#039;&#039;complete&#039;&#039; sample is played first, after which it restarts and only the loop part is repeated. Since many MOD players do not support this ProTracker quirk, it is recommended to always trim samples (so that there is no more sample data after the loop end) or not start the sample loop at 0.&lt;br /&gt;
&lt;br /&gt;
== Auto Vibrato ==&lt;br /&gt;
&lt;br /&gt;
OpenMPT’s sample player has an internal oscillator which can be applied to pitch, creating an automatic vibrato effect.&lt;br /&gt;
Depending on the format, each sample (IT / MPTM) or instrument (XM) can have its own Auto Vibrato settings.&lt;br /&gt;
In the XM format, all samples that are assigned to the same instrument will share the same vibrato settings.&lt;br /&gt;
&lt;br /&gt;
Auto Vibrato can be combined with vibrato effects in the pattern editor — they both function independently.&lt;br /&gt;
The Auto Vibrato settings cannot be changed in the patterns, though, so the only way to change the Auto Vibrato amount for a sample is to duplicate it.&lt;br /&gt;
&lt;br /&gt;
The Auto Vibrato is defined by the four following attributes:&lt;br /&gt;
* &#039;&#039;&#039;Vibrato Waveform&#039;&#039;&#039;: In this field, you can select the oscillator waveform, i.e. the waveform that is used to modulate the sample pitch.&lt;br /&gt;
* &#039;&#039;&#039;Vibrato Depth&#039;&#039;&#039;: Defines how “deep” the vibrato is, in &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;⁄&amp;lt;sub&amp;gt;64&amp;lt;/sub&amp;gt;ths of a semitone. The higher the value is, the more the sample pitch is changed.&lt;br /&gt;
* &#039;&#039;&#039;Vibrato Sweep&#039;&#039;&#039;: Defines how fast the vibrato reaches the full oscillation depth. The behaviour of this setting is inverse in the XM and IT track formats:&lt;br /&gt;
** IT: Full vibrato depth is reached after fading in for &amp;lt;code&amp;gt;(depth × 256 / sweep)&amp;lt;/code&amp;gt; ticks, so the higher the value, the quicker the vibrato fades in. 0 means no vibrato at all, 255 means that the full depth is reached after approximately “depth” ticks.&lt;br /&gt;
** XM: Full vibrato depth is reached after fading in for “sweep” ticks, so the higher the value, the slower the vibrato fades in.&lt;br /&gt;
* &#039;&#039;&#039;Vibrato Rate&#039;&#039;&#039;: The rate (or speed) at which the vibrato will be played. One oscillator cycle has &amp;lt;code&amp;gt;256 / rate&amp;lt;/code&amp;gt; ticks, so a higher value implies a faster vibrato effect.&lt;br /&gt;
&lt;br /&gt;
== Pitch Shifting and Time Stretching ==&lt;br /&gt;
&lt;br /&gt;
Pitch Shifting and Time Stretching can be used to alter a sample’s pitch without affecting playback speed and to change a sample’s length without altering its pitch. By default, &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pitch&#039;&#039;&#039;: The amount of semitones the sample should be shifted upwards or downwards. Custom amounts can be entered, including fractional numbers.&lt;br /&gt;
* &#039;&#039;&#039;Stretch&#039;&#039;&#039;: How much the sample is stretched. Values below 100% increase the speed, values above 100% decrease it.&lt;br /&gt;
* &#039;&#039;&#039;Lo-Fi Mode&#039;&#039;&#039;: By default, OpenMPT uses a high-quality pitch shift and time stretch algorithm. When checking lo-fi mode, a lower-quality algorithm similar to that found in old hardware samplers is used instead. This mode splits the sample into many equally-sized grains and cross-fades between them.&lt;br /&gt;
* &#039;&#039;&#039;Grain Size&#039;&#039;&#039;: In lo-fi mode, this allows to change the size of individual grains. Smaller values avoid the impression of repeating transient sounds, but also sound more metallic. Larger values sound less metallic, but repetitions between individual grains become more obvious. The optimal grain size differs from sample to sample.&lt;br /&gt;
* &#039;&#039;&#039;Ratio Calculator&#039;&#039;&#039;: Clicking this buttom opens the [[Manual: Time Stretch Calculator|Time Stretch Calculator dialog]], where you can calculate the correct time stretch ratio for a given tempo and pattern setup.&lt;br /&gt;
* &#039;&#039;&#039;Process&#039;&#039;&#039;: Applies the chosen settings to the current sample.&lt;br /&gt;
&lt;br /&gt;
== Sample Display ==&lt;br /&gt;
&lt;br /&gt;
=== Sample Display Toolbar ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Sample Display Toolbar.png]]&lt;br /&gt;
* &#039;&#039;&#039;Zoom In&#039;&#039;&#039; / &#039;&#039;&#039;Zoom Out&#039;&#039;&#039;: Increases or decreases sample zoom. You can also press &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; while scrolling the Mouse Wheel to achieve the same effect.&lt;br /&gt;
* &#039;&#039;&#039;Toggle Draw Mode&#039;&#039;&#039;: Enables or disables sample drawing which can be used to fix small mistakes in the sample waveform or to create chip samples. Hold down &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; while drawing to draw horizontal lines.&lt;br /&gt;
* &#039;&#039;&#039;Resize Sample&#039;&#039;&#039;: Changes the length of the sample by either adding silence at the start or end or by resizing it to a given length. This can also be used to create new samples for chip samples if there is no sample yet, or to initialize the sample slot with an [[#OPL instrument display|FM-synthesized instrument]] in the S3M and MPTM format.&lt;br /&gt;
* &#039;&#039;&#039;Sample Grid Size&#039;&#039;&#039;: Enables a sample grid which restricts sample selections to equal-sized sample portions. Set the sample grid size to 0 to disable the sample grid again.&lt;br /&gt;
&lt;br /&gt;
=== Sample Display ===&lt;br /&gt;
&lt;br /&gt;
Below the toolbar, the actual sample is displayed. By dragging the mouse, a sample selection can be made. Once a selection has been made, it can be finetuned by dragging its start and end points. &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-clicking a point can be used to draw a sample selection from a previously clicked point to that point. &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-clicking a point plays the sample from that position at the Middle-C frequency. If the sample has any cue points set, they can (by default) be previewed using &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; through &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Above the sample display is a timeline which can be used for orientation. The timeline shows various arrows (yellow arrows for cue points, green arrows for regular sample loop points and cyan arrows for sustain loop points) which can be dragged using the mouse. Holding &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; while dragging allows to place the item more accurately. Holding &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; while dragging loop points moves the other loop point as well, so the loop length remains the same. Right-click the timeline to change the unit used for display or insert a new cue point (if any unused cue points are available). Right-clicking a cue point allows you to delete that cue point. Double-clicking a timeline item opens a dialog where a new position for this item can be typed in.&lt;br /&gt;
&lt;br /&gt;
In the status bar, some information about the sampling point below the mouse cursor and (if existing) the current sample selection:&lt;br /&gt;
&lt;br /&gt;
* If no selection is made, the focussed sampling point is displayed and its position is translated into an Offset [[Manual: Effect Reference|pattern effect]].&lt;br /&gt;
* If a selection is made, the selection’s start and end point and the selection length (both in samples and in seconds, based on the Middle-C frequency, as well as in beats based on the current tempo) are displayed in addition to the current position of the mouse cursor in the sample.&lt;br /&gt;
&lt;br /&gt;
Right-clicking the sample waveform opens the context menu.&lt;br /&gt;
&lt;br /&gt;
=== Sample Display Context Menu ===&lt;br /&gt;
&lt;br /&gt;
The sample display’s context menu contents differ depending on whether or not there is a selected block of data.&lt;br /&gt;
&lt;br /&gt;
[[Image: Sample Context Menu.png|thumb|360px|Default sample context menu]]&lt;br /&gt;
[[Image: Sample Selection Context Menu.png|thumb|270px|Sample selection context menu]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Zoom&#039;&#039;&#039;: Zooms into the current sample selection.&lt;br /&gt;
* &#039;&#039;&#039;Set as Loop&#039;&#039;&#039;:  When a selection is made, this sets the start and end points of the Sample Loop to that of the selection block.&lt;br /&gt;
* &#039;&#039;&#039;Set Loop Start&#039;&#039;&#039;: Uses the selected sample point as the start of the Sample Loop.&lt;br /&gt;
* &#039;&#039;&#039;Set Loop End&#039;&#039;&#039;: Uses the selected sample point as the end of the Sample Loop.&lt;br /&gt;
* &#039;&#039;&#039;Convert to Unidirectional Loop&#039;&#039;&#039;: Only shown when the sample loop is currently a bidi loop, this converts the loop to a normal loop by inserting a reversed copy of the sample data at the loop end.&lt;br /&gt;
* &#039;&#039;&#039;Convert to Sustain Loop&#039;&#039;&#039;: Turns the Sample Loop into a Sustain Loop. If both loops are enabled, their start point, end point and type are swapped.&lt;br /&gt;
* &#039;&#039;&#039;Set as Sustain Loop&#039;&#039;&#039;: When a selection is made, this sets the start and end points of the Sustain Loop to that of the selection block.&lt;br /&gt;
* &#039;&#039;&#039;Set Sustain Start&#039;&#039;&#039;: Uses the selected point as the start of the Sustain Loop.&lt;br /&gt;
* &#039;&#039;&#039;Set Sustain End&#039;&#039;&#039;: Uses the selected sample point as the end of the Sustain Loop.&lt;br /&gt;
* &#039;&#039;&#039;Convert to Unidirectional Sustain Loop&#039;&#039;&#039;: Only shown when the sustain loop is currently a bidi loop, this converts the loop to a normal loop by inserting a reversed copy of the sample data at the sustain loop end.&lt;br /&gt;
* &#039;&#039;&#039;Convert to Normal Loop&#039;&#039;&#039;: Turns the Sustain Loop into a Sample Loop. If both loops are enabled, their start point, end point and type are swapped.&lt;br /&gt;
* &#039;&#039;&#039;Set Sample Cue To&#039;&#039;&#039;: Sets one of the sample cues for the MPTM format’s [[Manual:_Effect_Reference#Volume_Column_4|&#039;&#039;&#039;o&#039;&#039;&#039; volume column command]] to the selected sample point.&lt;br /&gt;
* &#039;&#039;&#039;Slice at cue points&#039;&#039;&#039;: The cue points found in the sub menu of the previous menu entry are used as splitting positions to create several smaller samples.&lt;br /&gt;
* &#039;&#039;&#039;Slice at grid&#039;&#039;&#039;: If the [[#Sample Display Toolbar|sample grid]] has been enabled, this menu item is available to split the sample into several smaller samples at the grid lines.&lt;br /&gt;
* &#039;&#039;&#039;Convert to 8-Bit&#039;&#039;&#039;: The sample’s bit depth is reduced to 8-Bit, reducing its sound quality in exchange for a smaller sample size.&lt;br /&gt;
* &#039;&#039;&#039;Convert to 16-Bit&#039;&#039;&#039;: The sample’s bit depth is increased to 16-Bit. This should only be done if you want to further manipulate the sample (e.g. resample or time-stretch), as the conversion process itself will not improve sample quality.&lt;br /&gt;
* &#039;&#039;&#039;Convert to Mono&#039;&#039;&#039;: Offers the following options to convert a stereo sample into a mono sample:&lt;br /&gt;
** &#039;&#039;&#039;Mix Channels&#039;&#039;&#039;: Mixes the left and right channels of a stereo sample equally together.&lt;br /&gt;
** &#039;&#039;&#039;Only Left&#039;&#039;&#039;: Only keeps the left channel of a stereo sample.&lt;br /&gt;
** &#039;&#039;&#039;Only Right&#039;&#039;&#039;: Only keeps the right channel of a stereo sample.&lt;br /&gt;
** &#039;&#039;&#039;Split Sample&#039;&#039;&#039;: Create two sample slots for this sample, one containing only the left channel and the other containing just the right channel. If the sample is referenced by an [[Manual: Instruments|instrument]], this is instrument is duplicated as well for the right channel.&lt;br /&gt;
* &#039;&#039;&#039;Trim&#039;&#039;&#039;: Deletes all sample data outside of the selected region.&lt;br /&gt;
* &#039;&#039;&#039;Trim around Loop Points&#039;&#039;&#039;: Deletes all sample data outside of the sample loop. This is only available if no selection has been made.&lt;br /&gt;
* &#039;&#039;&#039;Quick Fade&#039;&#039;&#039;: If the selection includes the beginning of the waveform, this applies a fade-in from the first sample point to the last one in the selected region. If the selected region includes the end of the waveform, then a fade-out from the first sample point of the selection to the last one is applied.&lt;br /&gt;
* &#039;&#039;&#039;Cut&#039;&#039;&#039;: Performs a Copy command, then removes the selected sample data.&lt;br /&gt;
* &#039;&#039;&#039;Copy&#039;&#039;&#039;: Copies the selected part of the sample (or the whole sample if there is no selection) to the clipboard. You can then paste this sample data into another sample slot; some third-party applications (including some sample editors) can also make use of this clipboard data.&lt;br /&gt;
* &#039;&#039;&#039;Paste (Replace)&#039;&#039;&#039;: Replaces the entire sample with the sample data in the clipboard.&lt;br /&gt;
* &#039;&#039;&#039;Paste (Insert)&#039;&#039;&#039;: Inserts the sample data in the clipboard into the existing sample. If a selection is made, the selection is replaced by the inserted sample. Otherwise, the sample is inserted at the selected position.&lt;br /&gt;
* &#039;&#039;&#039;Mix Paste&#039;&#039;&#039;: Mixes an existing source sample with the sample data in the clipboard.&lt;br /&gt;
* &#039;&#039;&#039;Undo&#039;&#039;&#039;: Reverts to the previous waveform data (before the last edit).&lt;br /&gt;
* &#039;&#039;&#039;Redo&#039;&#039;&#039;: Reapplies the last undone action.&lt;br /&gt;
&lt;br /&gt;
== OPL instrument display ==&lt;br /&gt;
&lt;br /&gt;
[[Image:OPL Instrument Editor.png|thumb|300px|OPL Instrument Editor]]&lt;br /&gt;
&lt;br /&gt;
In the S3M and MPTM format, it is possible to use simple FM (Frequency Modulation) instruments in addition to samples. This is achieved with a built-in emulator of the [https://en.wikipedia.org/wiki/Yamaha_YMF262 Yamaha YMF262] (also known as OPL3) chip. It offers a limited subset of the features of the well-known Yamaha DX7 synthesizer. In OpenMPT you can use:&lt;br /&gt;
&lt;br /&gt;
* Two operators per voice, either in parallel (additive synthesis) or serially (frequency modulation).&lt;br /&gt;
* 8 different waveforms per operator&lt;br /&gt;
* Up to 18 simultaneous voices&lt;br /&gt;
* Limited panning (left, center and right)&lt;br /&gt;
&lt;br /&gt;
=== Operation Modes ===&lt;br /&gt;
&lt;br /&gt;
OpenMPT supports both additive and frequency modulation synthesis operation modes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
File:OPL 2-OP Additive.png|Additive Synthesis&lt;br /&gt;
File:OPL 2-OP FM.png|FM Synthesis&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;additive mode&#039;&#039;&#039;, both operators function independently and are simply added together. They behave identically, except for the additional possibility to use modulation feedback on the second operator (named “Modulator” in the editor).&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;FM synthesis mode&#039;&#039;&#039;, the output from the first operator (Modulator) is sent to the input of the second operator (Carrier) and is used to modulate the frequency of the second operator. In other words, the waveform that is output by the Modulator applies a (very fast) pitch envelope for the Carrier. The Modulator can be understood as an equivalent to the  filter in an analog synthesizer — the louder the Modulator, the more open the filter is.&lt;br /&gt;
&lt;br /&gt;
=== Operator Structure ===&lt;br /&gt;
&lt;br /&gt;
Each operator consists of an &amp;lt;abbr title=&amp;quot;Attack Decay Sustain Release&amp;quot;&amp;gt;ADSR&amp;lt;/abbr&amp;gt; volume envelope, several frequency-related settings and a waveform. In FM synthesis mode, the volume of the Modulator is to be understood as the modulation depth — the higher the volume, the more it affects the pitch of the Carrier.&lt;br /&gt;
&lt;br /&gt;
==== Volume ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Attack Rate&#039;&#039;&#039;: Specifies how fast the volume envelope fades in from silence to peak volume.&lt;br /&gt;
* &#039;&#039;&#039;Decay Rate&#039;&#039;&#039;: Specifies how fast the volume envelope reaches the sustain volume after peaking.&lt;br /&gt;
* &#039;&#039;&#039;Sustain Level&#039;&#039;&#039;: Specifies at which level the volume envelope is held before it is released.&lt;br /&gt;
* &#039;&#039;&#039;Release Rate&#039;&#039;&#039;: Specifies how fast the volume envelope fades out from the sustain level.&lt;br /&gt;
* &#039;&#039;&#039;Sustain Sound&#039;&#039;&#039;: If enabled, the volume envelope stays at the sustain stage and does not enter the release stage of the envelope until a note-off event is encountered. Otherwise, it directly advances from the decay stage to the release stage without waiting for a note-off event.&lt;br /&gt;
* &#039;&#039;&#039;Volume&#039;&#039;&#039;: The overall volume of the operator.&lt;br /&gt;
* &#039;&#039;&#039;Tremolo&#039;&#039;&#039;: If enabled, adds a tremolo effect with a depth of 1dB.&lt;br /&gt;
&lt;br /&gt;
Pattern volume commands scale the operators’s volume envelope. In additive mode, volume commands affect the volume of both operators. In FM synthesis mode, volume commands only affect the volume of the Carrier, while filter cutoff commands (using instrument filter envelopes or [[Manual: Zxx Macros#Resonant Filter Control|MIDI Macros]]) affect the volume of the Modulator.&lt;br /&gt;
&lt;br /&gt;
In contrast to samples, the volume of the OPL emulator is logarithmic. Reducing the volume by 8 units halves it, so e.g. a &amp;lt;code&amp;gt;v50&amp;lt;/code&amp;gt; volume command is half as loud as a &amp;lt;code&amp;gt;v58&amp;lt;/code&amp;gt; volume command.&lt;br /&gt;
&lt;br /&gt;
==== Pitch ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Scale Envelope With Keys&#039;&#039;&#039;: If enabled, the envelopes of higher notes are played more quickly than those of lower notes.&lt;br /&gt;
* &#039;&#039;&#039;Key Scale Level&#039;&#039;&#039;: Attenuates the output level of the operators towards higher pitch by the given amount (disabled, 1.5 dB / octave, 3 dB / octave, 6 dB / octave).&lt;br /&gt;
* &#039;&#039;&#039;Frequency Multiplier&#039;&#039;&#039;: Multiplies the frequency of the operator with a value between 0.5 (pitched one octave down) and 15. &lt;br /&gt;
* &#039;&#039;&#039;Vibrato&#039;&#039;&#039;: If enabled, adds a vibrato effect with a depth of 7 cents.&lt;br /&gt;
&lt;br /&gt;
==== Waveforms ====&lt;br /&gt;
&lt;br /&gt;
Each operator can use one of the following waveforms:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
File:OPL-3 Waveform 0.png|Sine&lt;br /&gt;
File:OPL-3 Waveform 1.png|Half Sine&lt;br /&gt;
File:OPL-3 Waveform 2.png|Absolute Sine&lt;br /&gt;
File:OPL-3 Waveform 3.png|Pulse Sine&lt;br /&gt;
File:OPL-3 Waveform 4.png|Sine (Even Periods)&lt;br /&gt;
File:OPL-3 Waveform 5.png|Absolute Sine (Even Periods)&lt;br /&gt;
File:OPL-3 Waveform 6.png|Square&lt;br /&gt;
File:OPL-3 Waveform 7.png|Derived Square&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the first four waveforms (Sine, Half Sine, Absolute Sine and Pulse Sine) are supported by the OPL2 chip, so the remaining four waveforms are not available in S3M modules.&lt;br /&gt;
&lt;br /&gt;
==== Feedback ====&lt;br /&gt;
&lt;br /&gt;
The output of the Modulator can be fed back into itself, creating rich sounds ranging from metallic to noise.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Sample Tab]]&lt;br /&gt;
[[Category:Tabs|Sample Tab]]&lt;br /&gt;
[[de:Handbuch: Samples]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Samples&amp;diff=4979</id>
		<title>Manual: Samples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Samples&amp;diff=4979"/>
		<updated>2025-09-17T20:53:09Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* Sample Display Context Menu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Sample Tab.png|thumb|300px|Sample Tab]]&lt;br /&gt;
&lt;br /&gt;
On the sample tab, you find all the tools needed to load, edit and create new samples or OPL instruments. Samples, besides synthesizer plugins, are the main sound source in OpenMPT. Depending on the module format used, they are directly used without further layers on top (MOD and S3M format) or are referenced by [[Manual: Instruments|instruments]], where their playback can be altered through a variety of envelopes and other effects (all other formats).&lt;br /&gt;
&lt;br /&gt;
In the S3M and MPTM formats, a sample slot can also hold the patch data for an [[#OPL instrument display|FM-synthesized OPL instrument]].&lt;br /&gt;
&lt;br /&gt;
A number of sample properties can be controlled on this tab, such as default volume and panning, loop and sustain points as well as auto vibrato. All options are explained in detail here.&lt;br /&gt;
&lt;br /&gt;
== Toolbar ==&lt;br /&gt;
&lt;br /&gt;
=== File Toolbar ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Sample File Toolbar.png]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;New Sample&#039;&#039;&#039;: Creates a new sample. In instrument mode, you are asked if the new sample should be assigned with a new instrument. &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-clicking this button or choosing the dropdown menu duplicates the current sample. In the S3M and MPTM format, the dropdown menu can also be used to initialize the current sample slot with an [[#OPL instrument display|FM-synthesized instrument]].&lt;br /&gt;
* &#039;&#039;&#039;Load Sample&#039;&#039;&#039;: Loads one or more sample in one of the following formats. To enforce loading as a Raw sample, choose “Import Raw Sample” from the dropdown menu.&lt;br /&gt;
** Amiga IFF (8SVX / 16SVX / MAUD)&lt;br /&gt;
** AIFF / AIFF-C with uncompressed PCM, floating-point, µ-Law and A-Law (AIF / AIFF)&lt;br /&gt;
** Sun Audio with uncompressed PCM, floating-point, µ-Law and A-Law (AU / SND)&lt;br /&gt;
** SNES Bit Rate Reduction (BRR)&lt;br /&gt;
** Apple CAF: Uncompressed PCM (CAF)&lt;br /&gt;
** FLAC, OggFlac (FLAC in Ogg Container)&lt;br /&gt;
** Impulse Tracker samples (ITS)&lt;br /&gt;
** MPEG-1 Audio (MP1 / MP2 / MP3)&lt;br /&gt;
** Opus (OPUS)&lt;br /&gt;
** Ogg Vorbis (OGG, OGA)&lt;br /&gt;
** Gravis UltraSound patches (PAT)&lt;br /&gt;
** Headerless PCM data (RAW, PCM)&lt;br /&gt;
** Scream Tracker 3 samples and OPL instruments (S3I)&lt;br /&gt;
** OPL2 instruments (SBI)&lt;br /&gt;
** Sony Wave64: Uncompressed PCM (W64)&lt;br /&gt;
** WAV: Uncompressed PCM (up to 32 bits), floating-point (32 / 64 bits), IMA ADPCM, µ-Law and A-Law.&lt;br /&gt;
** Fasttracker 2 instruments (XI)&lt;br /&gt;
** &#039;&#039;&#039;Media Foundation&#039;&#039;&#039;: OpenMPT makes use of the Media Foundation framework and can load any sample supported by the system. This includes AAC and MP4 audio, compressed WAV files, WMA, audio streams from video files and other formats.&lt;br /&gt;
** Trying to load any module as a sample will open it in the [[Manual: Tree View#Instrument Library|Instrument Library]] instead, from where you can drag and drop samples into the sample editor.&lt;br /&gt;
* &#039;&#039;&#039;Save Sample&#039;&#039;&#039;:  Saves an instrument either in the WAV, FLAC, IFF, S3I or RAW format. Hold &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; while clicking the button to mass-export all samples at once. In the save dialog, you can then use the variables &amp;lt;code&amp;gt;%sample_number%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%sample_filename%&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;%sample_name%&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Loading a sample file in an unrecognized sample format, or when using the “Import Raw Sample” option opens the [[Manual: Raw Sample Import|Raw Sample Import]] dialog, where the imported sample format can be specified.&lt;br /&gt;
&lt;br /&gt;
Next to the toolbar buttons are a spin button for dialling up a different sample, a drop-down box for changing the zoom level and sample format information.&lt;br /&gt;
&lt;br /&gt;
=== Edit Toolbar ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Sample Edit Toolbar.png]]&lt;br /&gt;
&lt;br /&gt;
The sample format block is followed by another toolbar that mostly contains tools for editing samples:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Preview Sample&#039;&#039;&#039;: Plays the current sample at middle-C. Clicking the button again stops the sample.&lt;br /&gt;
* &#039;&#039;&#039;Normalize&#039;&#039;&#039;: Amplifies the sample (or a selection of it) as much as possible without distortion. Samples should be normalized before being converted to 8-Bit for optimal usage of the dynamic range. &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-clicking this button normalizes all samples independently.&lt;br /&gt;
* &#039;&#039;&#039;Amplify&#039;&#039;&#039;: Opens the [[Manual: Amplify|Amplify dialog]], where the sample (or a selection of it) can be faded in or out and amplified by an arbitrary amount.&lt;br /&gt;
* &#039;&#039;&#039;Remove DC Offset&#039;&#039;&#039;: Normalizes and shifts the waveform so that it is centered around the center (DC) line. Any DC bias on samples should be removed for optimal headroom usage. &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-clicking this button removes DC Offset from all samples.&lt;br /&gt;
* &#039;&#039;&#039;Change Stereo Separation&#039;&#039;&#039;: Allows to widen or reduce a stereo sample’s stereo width, or to swap stereo channels by entering a negative separation amount (-100%: swaps channels, no change in stereo width).&lt;br /&gt;
* &#039;&#039;&#039;Resample&#039;&#039;&#039;: Opens the [[Manual: Resample|Resample dialog]] which can be used to change the sample’s playback frequency. &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-clicking this button resamples all samples.&lt;br /&gt;
* &#039;&#039;&#039;Reverse&#039;&#039;&#039;: Reverses the sample or parts of it.&lt;br /&gt;
* &#039;&#039;&#039;Silence&#039;&#039;&#039;: Silences a sample selection.&lt;br /&gt;
* &#039;&#039;&#039;Invert Phase&#039;&#039;&#039;: Inverts the sample’s or sample selection’s phase.&lt;br /&gt;
* &#039;&#039;&#039;Sign / Unsign&#039;&#039;&#039;: Applies a theoretical conversion between signed and unsigned PCM data to the sample or a selection. Usually this would be used for fixing imported RAW samples with mixed up signed / unsigned import options, but it can also produce nifty-sounding distorted samples.&lt;br /&gt;
* &#039;&#039;&#039;Crossfade&#039;&#039;&#039;: Opens the [[Manual: Sample Crossfader|Sample Crossfader dialog]], which applies a crossfade between the sample loop start and loop end for seamless sample loops.&lt;br /&gt;
* &#039;&#039;&#039;Tune sample&#039;&#039;&#039;: Opens the [[Manual: Sample Tuner|Sample Tuner dialog]], where a sample can be tuned to a given note.&lt;br /&gt;
&lt;br /&gt;
== External Samples ==&lt;br /&gt;
&lt;br /&gt;
In the MPTM format, you may keep references to external samples instead of directly storing them in the module file. This can help reducing disk space taken up by your modules, especially if you want to keep several work-in-progress versions of your song or when using [[Manual:_Setup/Paths / Auto_Save|auto save]]. However, keep in mind that editing these external sample files will also change any module referencing them.&lt;br /&gt;
&lt;br /&gt;
You can enable this feature by checking the &#039;&#039;&#039;Keep Sample Data on Disk&#039;&#039;&#039; box. This is only available if OpenMPT knows the sample’s location on disk, e.g. after you loaded this sample from or saved the sample to disk during the current editing session. &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-clicking the box will enable or disable it for all samples where it is applicable. OpenMPT will only load the external sample’s waveform from disk; any other parameters such as loop points, vibrato and panning settings are stored in the module itself.&lt;br /&gt;
&lt;br /&gt;
The [[Manual:_Tree_View#Song_Folders|Tree View]] offers further facilities for external sample management: There, you can right-click any sample and set its external path (this will also reload the sample from that location), save any changes you made to the sample to the external file and reload the sample from disk in case you edited it in an external application. You can also reload edited samples that way even when not using the external samples functionality.&lt;br /&gt;
&lt;br /&gt;
== Volume, Panning and Pitch ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Default Volume&#039;&#039;&#039;: The note velocity that is applied if no volume command is found next to a note. It can be overridden by placing a volume command (vxx in the volume column, or Cxx in the effect column in the MOD format) next to the note. Enabling &#039;&#039;&#039;Show default volume commands&#039;&#039;&#039; in the [[Manual: Setup/General|General settings]] displays the default volume next to a note if there are no regular volume commands.&lt;br /&gt;
* &#039;&#039;&#039;Global Volume&#039;&#039;&#039;: The overall attenuation of the sample. At a global volume of 64, no attenuation is done, at 32 the sample is half as loud, etc.&lt;br /&gt;
* &#039;&#039;&#039;Set Pan&#039;&#039;&#039;: Sets the default panning of the sample, which can be overridden by pattern panning commands. If enabled, sample panning overrides the default [[Manual: General#Channel Setup|channel panning]] and [[Manual: Instruments#Volume and Panning|instrument panning]]. In the XM format, every sample is forced to have a default panning, so there is no channel panning or instrument panning.&lt;br /&gt;
&lt;br /&gt;
In the S3M, IT and MPTM format, you can directly define the playback frequency of the Middle-C:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Frequency&#039;&#039;&#039;: Defines the playback frequency of C-5.&lt;br /&gt;
* &#039;&#039;&#039;Transpose&#039;&#039;&#039;: Shows to which note the C-5 frequency is relative to. It can be used to quickly tune the sample to a different note. When changing the transpose value, the frequency is updated instantly.&lt;br /&gt;
&lt;br /&gt;
In the MOD and XM format, you get different options:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Finetune&#039;&#039;&#039;: Specifies a slight variation (up to a few hundred Hz) from the &#039;&#039;&#039;Transpose&#039;&#039;&#039; note. Units are 1/8 semitone in MOD format, and are 1/128 semitone in XM format.&lt;br /&gt;
* &#039;&#039;&#039;Transpose&#039;&#039;&#039;: Shows to which note the C-5 frequency is relative to. In the MOD format, this value is locked to C-5, i.e. the Middle-C frequency cannot be changed coarsely, only fine-tuning is possible. Higher notes in this drop-down box represent a higher Middle-C frequency, i.e. C#5 means that it is transposed up by a semitone.&lt;br /&gt;
&lt;br /&gt;
== Sample Loops ==&lt;br /&gt;
&lt;br /&gt;
Depending on the module format used, samples can have “normal” and sustain loops. Every loop has a &#039;&#039;&#039;Start&#039;&#039;&#039; and &#039;&#039;&#039;End&#039;&#039;&#039; point, and there are several loop types available:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Off&#039;&#039;&#039;: The loop is not activated.&lt;br /&gt;
* &#039;&#039;&#039;On&#039;&#039;&#039;: The loop is repeated from the start to the end.&lt;br /&gt;
* &#039;&#039;&#039;Bidi&#039;&#039;&#039;: The loop is played bi-directionally, i.e. it is first played from start to end, then reversed from end to start.&lt;br /&gt;
&lt;br /&gt;
Sustain loops are played as long as no Note Off event is encountered. They are always considered before normal loops, so if the sustain loop is placed beyond the normal loop, the normal loop is ignored at first. As soon as the sustain loop is exited (by means of a Note Off event), playback is resumed in the normal loop.&lt;br /&gt;
&lt;br /&gt;
Holding &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; while pressing the spin buttons next to the loop start and end points moves both points at the same time, so the loop length remains the same.&lt;br /&gt;
&lt;br /&gt;
Note that sample loops have a peculiar behaviour if the [[Manual: Compatible Playback#MOD compatibility settings|ProTracker one-shot loops]] compatibility setting is enabled in the MOD format: If the loop start is set to 0, the &#039;&#039;complete&#039;&#039; sample is played first, after which it restarts and only the loop part is repeated. Since many MOD players do not support this ProTracker quirk, it is recommended to always trim samples (so that there is no more sample data after the loop end) or not start the sample loop at 0.&lt;br /&gt;
&lt;br /&gt;
== Auto Vibrato ==&lt;br /&gt;
&lt;br /&gt;
OpenMPT’s sample player has an internal oscillator which can be applied to pitch, creating an automatic vibrato effect.&lt;br /&gt;
Depending on the format, each sample (IT / MPTM) or instrument (XM) can have its own Auto Vibrato settings.&lt;br /&gt;
In the XM format, all samples that are assigned to the same instrument will share the same vibrato settings.&lt;br /&gt;
&lt;br /&gt;
Auto Vibrato can be combined with vibrato effects in the pattern editor — they both function independently.&lt;br /&gt;
The Auto Vibrato settings cannot be changed in the patterns, though, so the only way to change the Auto Vibrato amount for a sample is to duplicate it.&lt;br /&gt;
&lt;br /&gt;
The Auto Vibrato is defined by the four following attributes:&lt;br /&gt;
* &#039;&#039;&#039;Vibrato Waveform&#039;&#039;&#039;: In this field, you can select the oscillator waveform, i.e. the waveform that is used to modulate the sample pitch.&lt;br /&gt;
* &#039;&#039;&#039;Vibrato Depth&#039;&#039;&#039;: Defines how “deep” the vibrato is, in &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;⁄&amp;lt;sub&amp;gt;64&amp;lt;/sub&amp;gt;ths of a semitone. The higher the value is, the more the sample pitch is changed.&lt;br /&gt;
* &#039;&#039;&#039;Vibrato Sweep&#039;&#039;&#039;: Defines how fast the vibrato reaches the full oscillation depth. The behaviour of this setting is inverse in the XM and IT track formats:&lt;br /&gt;
** IT: Full vibrato depth is reached after fading in for &amp;lt;code&amp;gt;(depth × 256 / sweep)&amp;lt;/code&amp;gt; ticks, so the higher the value, the quicker the vibrato fades in. 0 means no vibrato at all, 255 means that the full depth is reached after approximately “depth” ticks.&lt;br /&gt;
** XM: Full vibrato depth is reached after fading in for “sweep” ticks, so the higher the value, the slower the vibrato fades in.&lt;br /&gt;
* &#039;&#039;&#039;Vibrato Rate&#039;&#039;&#039;: The rate (or speed) at which the vibrato will be played. One oscillator cycle has &amp;lt;code&amp;gt;256 / rate&amp;lt;/code&amp;gt; ticks, so a higher value implies a faster vibrato effect.&lt;br /&gt;
&lt;br /&gt;
== Pitch Shifting and Time Stretching ==&lt;br /&gt;
&lt;br /&gt;
Pitch Shifting and Time Stretching can be used to alter a sample’s pitch without affecting playback speed and to change a sample’s length without altering its pitch. By default, &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pitch&#039;&#039;&#039;: The amount of semitones the sample should be shifted upwards or downwards. Custom amounts can be entered, including fractional numbers.&lt;br /&gt;
* &#039;&#039;&#039;Stretch&#039;&#039;&#039;: How much the sample is stretched. Values below 100% increase the speed, values above 100% decrease it.&lt;br /&gt;
* &#039;&#039;&#039;Lo-Fi Mode&#039;&#039;&#039;: By default, OpenMPT uses a high-quality pitch shift and time stretch algorithm. When checking lo-fi mode, a lower-quality algorithm similar to that found in old hardware samplers is used instead. This mode splits the sample into many equally-sized grains and cross-fades between them.&lt;br /&gt;
* &#039;&#039;&#039;Grain Size&#039;&#039;&#039;: In lo-fi mode, this allows to change the size of individual grains. Smaller values avoid the impression of repeating transient sounds, but also sound more metallic. Larger values sound less metallic, but repetitions between individual grains become more obvious. The optimal grain size differs from sample to sample.&lt;br /&gt;
* &#039;&#039;&#039;Ratio Calculator&#039;&#039;&#039;: Clicking this buttom opens the [[Manual: Time Stretch Calculator|Time Stretch Calculator dialog]], where you can calculate the correct time stretch ratio for a given tempo and pattern setup.&lt;br /&gt;
* &#039;&#039;&#039;Process&#039;&#039;&#039;: Applies the chosen settings to the current sample.&lt;br /&gt;
&lt;br /&gt;
== Sample Display ==&lt;br /&gt;
&lt;br /&gt;
=== Sample Display Toolbar ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Sample Display Toolbar.png]]&lt;br /&gt;
* &#039;&#039;&#039;Zoom In&#039;&#039;&#039; / &#039;&#039;&#039;Zoom Out&#039;&#039;&#039;: Increases or decreases sample zoom. You can also press &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; while scrolling the Mouse Wheel to achieve the same effect.&lt;br /&gt;
* &#039;&#039;&#039;Toggle Draw Mode&#039;&#039;&#039;: Enables or disables sample drawing which can be used to fix small mistakes in the sample waveform or to create chip samples. Hold down &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; while drawing to draw horizontal lines.&lt;br /&gt;
* &#039;&#039;&#039;Resize Sample&#039;&#039;&#039;: Changes the length of the sample by either adding silence at the start or end or by resizing it to a given length. This can also be used to create new samples for chip samples if there is no sample yet, or to initialize the sample slot with an [[#OPL instrument display|FM-synthesized instrument]] in the S3M and MPTM format.&lt;br /&gt;
* &#039;&#039;&#039;Sample Grid Size&#039;&#039;&#039;: Enables a sample grid which restricts sample selections to equal-sized sample portions. Set the sample grid size to 0 to disable the sample grid again.&lt;br /&gt;
&lt;br /&gt;
=== Sample Display ===&lt;br /&gt;
&lt;br /&gt;
Below the toolbar, the actual sample is displayed. By dragging the mouse, a sample selection can be made. Once a selection has been made, it can be finetuned by dragging its start and end points. &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-clicking a point can be used to draw a sample selection from a previously clicked point to that point. &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-clicking a point plays the sample from that position at the Middle-C frequency. If the sample has any cue points set, they can (by default) be previewed using &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; through &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Above the sample display is a timeline which can be used for orientation. The timeline shows various arrows (yellow arrows for cue points, green arrows for regular sample loop points and cyan arrows for sustain loop points) which can be dragged using the mouse. Holding &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; while dragging allows to place the item more accurately. Holding &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; while dragging loop points moves the other loop point as well, so the loop length remains the same. Right-click the timeline to change the unit used for display or insert a new cue point (if any unused cue points are available). Right-clicking a cue point allows you to delete that cue point. Double-clicking a timeline item opens a dialog where a new position for this item can be typed in.&lt;br /&gt;
&lt;br /&gt;
In the status bar, some information about the sampling point below the mouse cursor and (if existing) the current sample selection:&lt;br /&gt;
&lt;br /&gt;
* If no selection is made, the focussed sampling point is displayed and its position is translated into an Offset [[Manual: Effect Reference|pattern effect]].&lt;br /&gt;
* If a selection is made, the selection’s start and end point and the selection length (both in samples and in seconds, based on the Middle-C frequency, as well as in beats based on the current tempo) are displayed in addition to the current position of the mouse cursor in the sample.&lt;br /&gt;
&lt;br /&gt;
Right-clicking the sample waveform opens the context menu.&lt;br /&gt;
&lt;br /&gt;
=== Sample Display Context Menu ===&lt;br /&gt;
&lt;br /&gt;
The sample display’s context menu contents differ depending on whether or not there is a selected block of data.&lt;br /&gt;
&lt;br /&gt;
[[Image: Sample Context Menu.png|thumb|360px|Default sample context menu]]&lt;br /&gt;
[[Image: Sample Selection Context Menu.png|thumb|270px|Sample selection context menu]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Zoom&#039;&#039;&#039;: Zooms into the current sample selection.&lt;br /&gt;
* &#039;&#039;&#039;Set as Loop&#039;&#039;&#039;:  When a selection is made, this sets the start and end points of the Sample Loop to that of the selection block.&lt;br /&gt;
* &#039;&#039;&#039;Set Loop Start&#039;&#039;&#039;: Uses the selected sample point as the start of the Sample Loop.&lt;br /&gt;
* &#039;&#039;&#039;Set Loop End&#039;&#039;&#039;: Uses the selected sample point as the end of the Sample Loop.&lt;br /&gt;
* &#039;&#039;&#039;Convert to Unidirectional Loop&#039;&#039;&#039;: Only shown when the sample loop is currently a bidi loop, this converts the loop to a normal loop by inserting a reversed copy of the sample data at the loop end.&lt;br /&gt;
* &#039;&#039;&#039;Convert to Sustain Loop&#039;&#039;&#039;: Turns the Sample Loop into a Sustain Loop. If both loops are enabled, their start point, end point and type are swapped.&lt;br /&gt;
* &#039;&#039;&#039;Set as Sustain Loop&#039;&#039;&#039;: When a selection is made, this sets the start and end points of the Sustain Loop to that of the selection block.&lt;br /&gt;
* &#039;&#039;&#039;Set Sustain Start&#039;&#039;&#039;: Uses the selected point as the start of the Sustain Loop.&lt;br /&gt;
* &#039;&#039;&#039;Set Sustain End&#039;&#039;&#039;: Uses the selected sample point as the end of the Sustain Loop.&lt;br /&gt;
* &#039;&#039;&#039;Convert to Unidirectional Sustain Loop&#039;&#039;&#039;: Only shown when the sustain loop is currently a bidi loop, this converts the loop to a normal loop by inserting a reversed copy of the sample data at the sustain loop end.&lt;br /&gt;
* &#039;&#039;&#039;Convert to Normal Loop&#039;&#039;&#039;: Turns the Sustain Loop into a Sample Loop. If both loops are enabled, their start point, end point and type are swapped.&lt;br /&gt;
* &#039;&#039;&#039;Set Sample Cue To&#039;&#039;&#039;: Sets one of the sample cues for the MPTM format’s [[Manual:_Effect_Reference#Volume_Column_4|&#039;&#039;&#039;o&#039;&#039;&#039; volume column command]] to the selected sample point.&lt;br /&gt;
* &#039;&#039;&#039;Slice at cue points&#039;&#039;&#039;: The cue points found in the sub menu of the previous menu entry are used as splitting positions to create several smaller samples.&lt;br /&gt;
* &#039;&#039;&#039;Slice at grid&#039;&#039;&#039;: If the [[#Sample Display Toolbar|sample grid]] has been enabled, this menu item is available to split the sample into several smaller samples at the grid lines.&lt;br /&gt;
* &#039;&#039;&#039;Convert to 8-Bit&#039;&#039;&#039;: The sample’s bit depth is reduced to 8-Bit, reducing its sound quality in exchange for a smaller sample size.&lt;br /&gt;
* &#039;&#039;&#039;Convert to 16-Bit&#039;&#039;&#039;: The sample’s bit depth is increased to 16-Bit. This should only be done if you want to further manipulate the sample (e.g. resample or time-stretch), as the conversion process itself will not improve sample quality.&lt;br /&gt;
* &#039;&#039;&#039;Convert to Mono&#039;&#039;&#039;: Offers the following options to convert a stereo sample into a mono sample:&lt;br /&gt;
** &#039;&#039;&#039;Mix Channels&#039;&#039;&#039;: Mixes the left and right channels of a stereo sample equally together.&lt;br /&gt;
** &#039;&#039;&#039;Only Left&#039;&#039;&#039;: Only keeps the left channel of a stereo sample.&lt;br /&gt;
** &#039;&#039;&#039;Only Right&#039;&#039;&#039;: Only keeps the right channel of a stereo sample.&lt;br /&gt;
** &#039;&#039;&#039;Split Sample&#039;&#039;&#039;: Create two sample slots for this sample, one containing only the left channel and the other containing just the right channel. If the sample is referenced by an [[Manual: Instruments|instrument]], this is instrument is duplicated as well for the right channel.&lt;br /&gt;
* &#039;&#039;&#039;Trim&#039;&#039;&#039;: Deletes all sample data outside of the selected region.&lt;br /&gt;
* &#039;&#039;&#039;Trim around Loop Points&#039;&#039;&#039;: Deletes all sample data outside of the sample loop. This is only available if no selection has been made.&lt;br /&gt;
* &#039;&#039;&#039;Quick Fade&#039;&#039;&#039;: If the selection includes the beginning of the waveform, this applies a fade-in from the first sample point to the last one in the selected region. If the selected region includes the end of the waveform, then a fade-out from the first sample point of the selection to the last one is applied.&lt;br /&gt;
* &#039;&#039;&#039;Cut&#039;&#039;&#039;: Performs a Copy command, then removes the selected sample data.&lt;br /&gt;
* &#039;&#039;&#039;Copy&#039;&#039;&#039;: Copies the selected part of the sample (or the whole sample if there is no selection) to the clipboard. You can then paste this sample data into another sample slot; some third-party applications (including some sample editors) can also make use of this clipboard data.&lt;br /&gt;
* &#039;&#039;&#039;Paste (Replace)&#039;&#039;&#039;: Replaces the entire sample with the sample data in the clipboard.&lt;br /&gt;
* &#039;&#039;&#039;Paste (Insert)&#039;&#039;&#039;: Inserts the sample data in the clipboard into the existing sample. If a selection is made, the selection is replaced by the inserted sample. Otherwise, the sample is inserted at the selected position.&lt;br /&gt;
* &#039;&#039;&#039;Mix Paste&#039;&#039;&#039;: Mixes an existing source sample with the sample data in the clipboard.&lt;br /&gt;
* &#039;&#039;&#039;Undo&#039;&#039;&#039;: Reverts to the previous waveform data (before the last edit).&lt;br /&gt;
* &#039;&#039;&#039;Redo&#039;&#039;&#039;: Reapplies the last undone action.&lt;br /&gt;
&lt;br /&gt;
== OPL instrument display ==&lt;br /&gt;
&lt;br /&gt;
[[Image:OPL Instrument Editor.png|thumb|300px|OPL Instrument Editor]]&lt;br /&gt;
&lt;br /&gt;
In the S3M and MPTM format, it is possible to use simple FM (Frequency Modulation) instruments in addition to samples. This is achieved with a built-in emulator of the [https://en.wikipedia.org/wiki/Yamaha_YMF262 Yamaha YMF262] (also known as OPL3) chip. It offers a limited subset of the features of the well-known Yamaha DX7 synthesizer. In OpenMPT you can use:&lt;br /&gt;
&lt;br /&gt;
* Two operators per voice, either in parallel (additive synthesis) or serially (frequency modulation).&lt;br /&gt;
* 8 different waveforms per operator&lt;br /&gt;
* Up to 18 simultaneous voices&lt;br /&gt;
* Limited panning (left, center and right)&lt;br /&gt;
&lt;br /&gt;
=== Operation Modes ===&lt;br /&gt;
&lt;br /&gt;
OpenMPT supports both additive and frequency modulation synthesis operation modes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
File:OPL 2-OP Additive.png|Additive Synthesis&lt;br /&gt;
File:OPL 2-OP FM.png|FM Synthesis&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;additive mode&#039;&#039;&#039;, both operators function independently and are simply added together. They behave identically, except for the additional possibility to use modulation feedback on the second operator (named “Modulator” in the editor).&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;FM synthesis mode&#039;&#039;&#039;, the output from the first operator (Modulator) is sent to the input of the second operator (Carrier) and is used to modulate the frequency of the second operator. In other words, the waveform that is output by the Modulator applies a (very fast) pitch envelope for the Carrier. The Modulator can be understood as an equivalent to the  filter in an analog synthesizer — the louder the Modulator, the more open the filter is.&lt;br /&gt;
&lt;br /&gt;
=== Operator Structure ===&lt;br /&gt;
&lt;br /&gt;
Each operator consists of an &amp;lt;abbr title=&amp;quot;Attack Decay Sustain Release&amp;quot;&amp;gt;ADSR&amp;lt;/abbr&amp;gt; volume envelope, several frequency-related settings and a waveform. In FM synthesis mode, the volume of the Modulator is to be understood as the modulation depth — the higher the volume, the more it affects the pitch of the Carrier.&lt;br /&gt;
&lt;br /&gt;
==== Volume ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Attack Rate&#039;&#039;&#039;: Specifies how fast the volume envelope fades in from silence to peak volume.&lt;br /&gt;
* &#039;&#039;&#039;Decay Rate&#039;&#039;&#039;: Specifies how fast the volume envelope reaches the sustain volume after peaking.&lt;br /&gt;
* &#039;&#039;&#039;Sustain Level&#039;&#039;&#039;: Specifies at which level the volume envelope is held before it is released.&lt;br /&gt;
* &#039;&#039;&#039;Release Rate&#039;&#039;&#039;: Specifies how fast the volume envelope fades out from the sustain level.&lt;br /&gt;
* &#039;&#039;&#039;Sustain Sound&#039;&#039;&#039;: If enabled, the volume envelope stays at the sustain stage and does not enter the release stage of the envelope until a note-off event is encountered. Otherwise, it directly advances from the decay stage to the release stage without waiting for a note-off event.&lt;br /&gt;
* &#039;&#039;&#039;Volume&#039;&#039;&#039;: The overall volume of the operator.&lt;br /&gt;
* &#039;&#039;&#039;Tremolo&#039;&#039;&#039;: If enabled, adds a tremolo effect with a depth of 1dB.&lt;br /&gt;
&lt;br /&gt;
Pattern volume commands scale the operators’s volume envelope. In additive mode, volume commands affect the volume of both operators. In FM synthesis mode, volume commands only affect the volume of the Carrier, while filter cutoff commands (using instrument filter envelopes or [[Manual: Zxx Macros#Resonant Filter Control|MIDI Macros]]) affect the volume of the Modulator.&lt;br /&gt;
&lt;br /&gt;
In contrast to samples, the volume of the OPL emulator is logarithmic. Reducing the volume by 8 units halves it, so e.g. a &amp;lt;code&amp;gt;v50&amp;lt;/code&amp;gt; volume command is half as loud as a &amp;lt;code&amp;gt;v58&amp;lt;/code&amp;gt; volume command.&lt;br /&gt;
&lt;br /&gt;
==== Pitch ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Scale Envelope With Keys&#039;&#039;&#039;: If enabled, the envelopes of higher notes are played more quickly than those of lower notes.&lt;br /&gt;
* &#039;&#039;&#039;Key Scale Level&#039;&#039;&#039;: Attenuates the output level of the operators towards higher pitch by the given amount (disabled, 1.5 dB / octave, 3 dB / octave, 6 dB / octave).&lt;br /&gt;
* &#039;&#039;&#039;Frequency Multiplier&#039;&#039;&#039;: Multiplies the frequency of the operator with a value between 0.5 (pitched one octave down) and 15. &lt;br /&gt;
* &#039;&#039;&#039;Vibrato&#039;&#039;&#039;: If enabled, adds a vibrato effect with a depth of 7 cents.&lt;br /&gt;
&lt;br /&gt;
==== Waveforms ====&lt;br /&gt;
&lt;br /&gt;
Each operator can use one of the following waveforms:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
File:OPL-3 Waveform 0.png|Sine&lt;br /&gt;
File:OPL-3 Waveform 1.png|Half Sine&lt;br /&gt;
File:OPL-3 Waveform 2.png|Absolute Sine&lt;br /&gt;
File:OPL-3 Waveform 3.png|Pulse Sine&lt;br /&gt;
File:OPL-3 Waveform 4.png|Sine (Even Periods)&lt;br /&gt;
File:OPL-3 Waveform 5.png|Absolute Sine (Even Periods)&lt;br /&gt;
File:OPL-3 Waveform 6.png|Square&lt;br /&gt;
File:OPL-3 Waveform 7.png|Derived Square&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the first four waveforms (Sine, Half Sine, Absolute Sine and Pulse Sine) are supported by the OPL2 chip, so the remaining four waveforms are not available in S3M modules.&lt;br /&gt;
&lt;br /&gt;
==== Feedback ====&lt;br /&gt;
&lt;br /&gt;
The output of the Modulator can be fed back into itself, creating rich sounds ranging from metallic to noise.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Sample Tab]]&lt;br /&gt;
[[Category:Tabs|Sample Tab]]&lt;br /&gt;
[[de:Handbuch: Samples]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Keyboard_Actions&amp;diff=4978</id>
		<title>Manual: Keyboard Actions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Keyboard_Actions&amp;diff=4978"/>
		<updated>2025-09-17T13:14:33Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: Slice at Grid&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of all customisable keyboard actions in OpenMPT. They can be configured in the [[Manual: Setup/Keyboard|Keyboard Setup dialog]].&lt;br /&gt;
&lt;br /&gt;
Default key combinations listed in the tables below assume a US keyboard layout. Generally, alphanumeric keys in shortcuts will stay the same in other keyboard layouts (so &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; does not turn into &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Y&amp;lt;/kbd&amp;gt; on a German layout), with the exception of note entry keys, which are set up based on their position on the keyboard instead (so on a French keyboard, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; and &amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; are used for playing a C across three octaves even though the table below says &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; and &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;). Non-alphanumeric keys generally vary a lot between keyboard layouts, so there might not be a direct mapping to your keyboard layout — the key might have a completely different label or not exist at all. You can always review the &#039;&#039;actual&#039;&#039; key combinations used by OpenMPT on your setup by reviewing them in the Keyboard setup dialog.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Keyboard shortcuts that clash with the default text editing shortcuts of the operating system (e.g. &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;, etc.) are ignored when the input focus is within a text field.&lt;br /&gt;
&lt;br /&gt;
== Global Keys ==&lt;br /&gt;
&lt;br /&gt;
Global keyboard shortcuts work on most parts of OpenMPT as long as one of the program’s windows is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| File/New || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Creates a new song. The currently edited song is not closed, as OpenMPT can have multiple documents open at the same time.&lt;br /&gt;
|-&lt;br /&gt;
| File/Open || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;O&amp;lt;/kbd&amp;gt; || Opens one or more existing songs.&lt;br /&gt;
|-&lt;br /&gt;
| File/Append Module || || [[Manual: Module Merging|Appends]] (merges) the song data (samples, instruments, plugins, patterns and sequences) of one or more existing songs to the currently active song.&lt;br /&gt;
|-&lt;br /&gt;
| File/Close || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; || Closes the current song. You are prompted to save the song if it has been modified.&lt;br /&gt;
|-&lt;br /&gt;
| File/Close All || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; || Closes all open songs. You are prompted to save modified songs.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Saves the song to disk.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save As || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Allows you to save the file with a new name or in another folder.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save Copy || || Allows you to save a copy of the file. The next Save action will update the file at its original location again.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save As Template || || Creates a template from the current song.&lt;br /&gt;
|-&lt;br /&gt;
| File/Open Template || || Opens a file picker in the template module folder.&lt;br /&gt;
|-&lt;br /&gt;
| File/Stream Export || || Exports the current track into a lossless or lossy [[Manual: Saving and exporting#Stream Export|streaming file]].&lt;br /&gt;
|-&lt;br /&gt;
| File/Export as MIDI || || Exports the current track into the .mid format. See the section on [[Manual: Saving and exporting#MIDI Export|MIDI export]] for a detailed explanation of how this file is exported.&lt;br /&gt;
|-&lt;br /&gt;
| File/Export OPL Register Dump || || Exports the current track into one of several OPL register dump formats. See the section on [[Manual: Saving and exporting#OPL Export|OPL export]] for a detailed explanation of how this file is exported.&lt;br /&gt;
|-&lt;br /&gt;
| File/Compatibility Export || || Exports the current track without any [[Manual: Saving and exporting#Compatibility Export|file format hacks]] to its original format.&lt;br /&gt;
|-&lt;br /&gt;
| File/Import MIDI Library || || Imports the MIDI Instrument Library of your choosing. The MIDI Library can be accessed from the [[Manual: Tree View#MIDI Library|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| File/Add Sound Bank || || Imports a sound bank of your choosing. Sound banks can be accessed from the [[Manual: Tree View#Sound Banks|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| Previous Document || || Goes to the previous module file that is open (these are visible in the Windows Menu).&lt;br /&gt;
|-&lt;br /&gt;
| Next Document || || Goes to the next module file that is open (these are visible in the Windows Menu).  &lt;br /&gt;
|-&lt;br /&gt;
| Play Song / Pause Song || &amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt; || Toggles the playback of the current track. The playback cursor is not reset when using this toggle; that is, it plays from where the cursor left off when it was last pressed.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song / Stop Song || || Toggles the playback of the current track. The playback cursor is reset to the start of the song.&lt;br /&gt;
|-&lt;br /&gt;
| Pause Song || &amp;lt;kbd&amp;gt;F8&amp;lt;/kbd&amp;gt; || Only stops the playback of the current track but does not reset the playback pointer.&lt;br /&gt;
|-&lt;br /&gt;
| Stop Song || &amp;lt;kbd&amp;gt;Escape&amp;lt;/kbd&amp;gt; || Stops the playback of the current track and resets the playback cursor to the start of the song.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Start || &amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; || Resets the playback cursor to the very first row and begins playback from there.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Cursor / Pause || || Resets the playback cursor to the row where the editing cursor is set, and begins playback from there if playback is currently stopped, otherwise it pauses playback. Playback will continue until the end of the track.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Cursor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; || Resets the playback cursor to the row where the editing cursor is set, and begins playback from there. Playback will continue until the end of the track.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Pattern Start / Pause || || Resets the playback cursor to the first row of the currently edited pattern and begins playback from there if playback is currently stopped, otherwise it pauses playback. &lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Pattern Start || || Resets the playback cursor to the first row of the currently edited pattern and begins playback from there.&lt;br /&gt;
|-&lt;br /&gt;
| Play Pattern from Start || &amp;lt;kbd&amp;gt;F7&amp;lt;/kbd&amp;gt; || Loops the current pattern, starting at the first row of the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Play Pattern from Cursor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F7&amp;lt;/kbd&amp;gt; || Loops the current pattern, starting at the row where the editing cursor is currently placed.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Loop Song || || Enables or disables the song loop status.&lt;br /&gt;
|-&lt;br /&gt;
| Panic || || Stops all sample, OPL and plugin instrument voices.&lt;br /&gt;
|-&lt;br /&gt;
| Estimate Song Length || || Estimates the playback length of the entire track.&lt;br /&gt;
|-&lt;br /&gt;
| Show Approx. Real BPM || || Estimates the beats per minute of the song, based on the current tempo and the number of ticks per row, plus the Tempo Mode in the Song Properties dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle MIDI Record || &amp;lt;kbd&amp;gt;F9&amp;lt;/kbd&amp;gt; || Toggles the MIDI Record option.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Tempo || || Increases the tempo of the currently playing module by 1 BPM. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Tempo || || Decreases the tempo of the currently playing module by 1 BPM. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Tempo (Fine) || || Increases the tempo of the currently playing module by 0.1 BPM if the module format supports fractional tempos. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Tempo (Fine) || || Decreases the tempo of the currently playing module by 0.1 BPM if the module format supports fractional tempos. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Ticks per Row || || Increases the speed of the currently playing module by 1 tick per row. This does not modify the initial Ticks per Row setting of the song, just current playback and can be overridden by speed pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Ticks per Row || || Decreases the speed of the currently playing module by 1 tick per row. This does not modify the initial Ticks per Row setting of the song, just current playback and can be overridden by speed pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Undo || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; || Rescinds the last edit in the pattern or sample editor.&lt;br /&gt;
|-&lt;br /&gt;
| Redo || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Y&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; || Reapplies the last undone action.&lt;br /&gt;
|-&lt;br /&gt;
| Cut || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;X&amp;lt;/kbd&amp;gt; || Copies the selected pattern, sample or instrument data into the clipboard, then removes it from the selection it occupies.&lt;br /&gt;
|-&lt;br /&gt;
| Copy || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Copies the selected pattern, sample or instrument data into the clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Paste || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Pastes data from the clipboard. In the pattern editor, it is pasted at the location of the cursor, overwriting any pattern data that falls within the paste area. With sample data, clipboard contents replace the &#039;&#039;&#039;whole&#039;&#039;&#039; sample.&lt;br /&gt;
|-&lt;br /&gt;
| Mix Paste || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Mixes clipboard contents with existing data. In the pattern editor, clipboard contents are pasted in the same row at the same column of the current (visible) pattern where the cursor is located, except where there is already any data in any corresponding field of the paste area. In the sample editor, the source and clipboard sample waveforms are mixed together.&lt;br /&gt;
|-&lt;br /&gt;
| Mix Paste (IT Style) || || For detailed differences between Mix Paste and Mix Paste (IT Style), consult the [[Manual: Patterns#Paste Modes|Pattern Editor help]]. The two commands are identical when used in the sample editor.&lt;br /&gt;
|-&lt;br /&gt;
| Paste Flood || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Clipboard contents are pasted from the cursor, repeating the data paste until every row in the pattern has been filled and pasting over any data in its path.&lt;br /&gt;
|-&lt;br /&gt;
| Push Forward Paste (Insert) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Patterns: Clipboard contents are inserted at the row of the cursor, and pushing all data below that row further down the pattern. Any data of the affected channels pushed beyond the pattern’s last row is deleted. Samples: The sample data from the clipboard replaces the current selection. If there is no selection, the sample is inserted at the last selected position.&lt;br /&gt;
|-&lt;br /&gt;
| Select All || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;5&amp;lt;/kbd&amp;gt; || Selects all pattern or sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Find / Replace || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Opens the Find/Replace dialog, which allows you to search for and/or replace given pattern data. Find starts from the cursor location.&lt;br /&gt;
|-&lt;br /&gt;
| Find Next || &amp;lt;kbd&amp;gt;F3&amp;lt;/kbd&amp;gt; || Applies the current Find settings and searches for the next data that matches it, starting from the current cursor location.&lt;br /&gt;
|-&lt;br /&gt;
| View General || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Opens the [[Manual: General|General Tab]] of the currently focussed module.&lt;br /&gt;
|-&lt;br /&gt;
| View Pattern || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Patterns|Pattern Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Samples || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Samples|Sample Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Instruments || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Instruments|Instrument Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Comments || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F9&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Comments|Comments Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Main Toolbar || || Shows / hides the [[Manual: Main Toolbar|Main Toolbar]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Tree View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F2&amp;lt;/kbd&amp;gt; || Shows / hides the [[Manual: Tree View|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| View Options || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F1&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Setup|Setup dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Channel Manager || || Opens the [[Manual: Channel Manager|Channel Manager]].&lt;br /&gt;
|-&lt;br /&gt;
| View Plugin Manager || || Opens the [[Manual: Plugin Manager|Plugin Manager dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Song Properties || || Opens the [[Manual: Song Properties|Song Properties dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Global Tempo Swing Settings || || Opens the [[Manual: Tempo Swing Settings|Tempo Swing Settings dialog]] for the song’s global time signature. If modern tempo mode is not enabled yet, the [[Manual: Song Properties|Song Properties dialog]] is opened instead so that it can be enabled.&lt;br /&gt;
|-&lt;br /&gt;
| View Zxx Macro Configuration || || Opens the [[Manual: Macro Configuration|MIDI Macro Configuration]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| View MIDI Mapping || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F3&amp;lt;/kbd&amp;gt; || Opens the [[Manual: MIDI Mapping|MIDI Mapping dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Edit History || || Opens the [[Manual: Edit History|Edit History]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Between Upper / Lower View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Switches keyboard focus between the upper and lower half of the currently focussed song view.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Instrument Library  || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Sets keyboard focus to the [[Manual: Tree View|Instrument Library]], or switches back to the last used editor window if the tree view already has focus.&lt;br /&gt;
|-&lt;br /&gt;
| Help || &amp;lt;kbd&amp;gt;F1&amp;lt;/kbd&amp;gt; || Opens the manual.&lt;br /&gt;
|-&lt;br /&gt;
| Open Context Menu || &amp;lt;kbd&amp;gt;▤ Application&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Opens the context menu for the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad/&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Changes the current instrument to the previous one. In the sample editor, the previous sample is chosen.&lt;br /&gt;
|-&lt;br /&gt;
| Next Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad*&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Changes the current instrument to the next one. In the sample editor, the next sample is chosen.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Octave || &amp;lt;kbd&amp;gt;Numpad/&amp;lt;/kbd&amp;gt; || Changes the current octave to the next lower octave.&lt;br /&gt;
|-&lt;br /&gt;
| Next Octave || &amp;lt;kbd&amp;gt;Numpad*&amp;lt;/kbd&amp;gt; || Changes the current octave to the next higher octave.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Changes the current pattern to the previous one in the pattern order.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Changes the current pattern to the next one in the pattern order.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current measure) || || Changes the current pattern to the previous one in the pattern order once the current measure has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current measure) || || Changes the current pattern to the next one in the pattern order once the current measure has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current beat) || || Changes the current pattern to the previous one in the pattern order once the current beat has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current beat) || || Changes the current pattern to the next one in the pattern order once the current beat has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current row) || || Changes the current pattern to the previous one in the pattern order once the current row has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current row) || || Changes the current pattern to the next one in the pattern order once the current row has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Dummy Shortcut || || Some keyboard shortcuts are created automatically by OpenMPT (e.g. the combinations of pressing the selection key together with navigation keys). If you need to prevent OpenMPT from automatically assigning a specific key combination, you can assign it to this dummy shortcut instead, so it will not be usable by automatically generated shortcuts. This will also prevent the key combination from being used by new default key combinations added by future OpenMPT updates.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pattern ==&lt;br /&gt;
&lt;br /&gt;
=== Order List ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts operate while the cursor focus is in the Order List.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Delete Order || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Erases the currently selected pattern(s) in the Order List (the pattern itself is not removed, only the reference).&lt;br /&gt;
|-&lt;br /&gt;
| Insert Order || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Duplicates the currently selected pattern &#039;&#039;reference&#039;&#039;(s) in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Separator || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts a separator item (+++) at the next position.&lt;br /&gt;
|-&lt;br /&gt;
| Copy Orders || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Copies the currently selected pattern &#039;&#039;references&#039;&#039; in the Order List to the clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Pattern || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Resets the Pattern Editor to show the highlighted pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pattern Editor || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor focus to the Pattern Editor. There is also a more general version of this shortcut that works for all other song views as well (“Toggle Between Upper / Lower View”).&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Selects the previous pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Selects the following pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| First Order || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Selects the first pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Last Order || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Selects the final pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Pattern Index Digit [0 - 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the respective numeral into the pattern ID box.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Pattern Index || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Adds one to the pattern number, up to the highest indexed pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Pattern Index || &amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Subtracts one from the pattern number, to a minimum of index 0.&lt;br /&gt;
|-&lt;br /&gt;
| Separator Index || &amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Adds a separator pattern item (+++) at the current position.&lt;br /&gt;
|-&lt;br /&gt;
| Stop Index || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Adds a stop pattern item (---) at the current position.&lt;br /&gt;
|-&lt;br /&gt;
| Lock Playback to Selection || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Song playback is locked to the patterns in the current order selection.&lt;br /&gt;
|-&lt;br /&gt;
| Unlock Playback || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || If playback has been limited to an order selection before, the playback lock can be removed here.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current pattern) || &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current pattern has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current measure) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current measure has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current beat) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current beat has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current row) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current row has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Stream Export || || Opens the [[Manual: Saving and exporting#Stream Export|Wave Export dialog]] for the selected patterns.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quick Channel Settings ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts operate while the [[Manual: Quick Channel Settings|Quick Channel Settings dialog]] is open.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Previous Channel || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Shows the channel settings for the previous channel.&lt;br /&gt;
|-&lt;br /&gt;
| Next Channel || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Shows the channel settings for the next channel.&lt;br /&gt;
|-&lt;br /&gt;
| Pick Color from Previous Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Assigns the color of the previous channel to the current channel.&lt;br /&gt;
|-&lt;br /&gt;
| Pick Color from Next Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Assigns the color of the next channel to the current channel.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pattern Editor || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Closes the dialog and returns to the Pattern Editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== General Context ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts will work if the cursor focus is within any of the columns of the Pattern Editor, except where noted. When navigating (moving the cursor) to before the first row or after the last row in the pattern, the cursor “wraps” to the other side of the same pattern, if the “Cursor Wrap” option is enabled (in the Options section of the [[Manual: Setup/General|General tab]] of the Setup dialog). If navigating beyond the first or last row when the “Continuous Scroll” option is enabled, the cursor will instead move to the previous/next pattern in the order list. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|- &lt;br /&gt;
| Navigate Down by 1 Row || &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor to the next row in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Up by 1 Row || &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor to the previous row in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Down by Spacing || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor down by the value in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Up by Spacing || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor up by the value in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Left || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the cursor to the previous column in the same row, going to the previous channel′s last column if moving from the first column of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Right || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the cursor to the next column in the same row, going to the next channel’s first column if moving from the last column of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate to Next Channel || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor to the same column in the same row in the next channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate to Previous Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor to the same column in the same row in the previous channel.&lt;br /&gt;
|- &lt;br /&gt;
| Jump Down by Measure || &amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Up by Measure || &amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Down by Beat || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Up by Beat || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Down to Measure || || Moves the cursor down to the first row of the next measure, as determined by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Up to Measure || || Moves the cursor up to the first row of the previous measure, as determined by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Down to Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down to the first row of the next beat, as determined by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Up to Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up to the first row of the previous beat, as determined by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump to Previous Entry in Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor to the next non-empty cell (note, instrument, etc.) of the currently selected column above the current cursor position. When combined with the Selection key, the selection will be extended to the next non-empty cell in the current pattern only. Otherwise, this command continues to search for a non-empty cell in the previous patterns.&lt;br /&gt;
|-&lt;br /&gt;
| Jump to Next Entry in Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor to the next non-empty cell (note, instrument, etc.) of the currently selected column below the current cursor position. When combined with the Selection key, the selection will be extended to the next non-empty cell in the current pattern only. Otherwise, this command continues to search for a non-empty cell in the next patterns.&lt;br /&gt;
|-&lt;br /&gt;
| Go to First Channel || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first column of the first channel in the same row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to First Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first row of the same channel in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Go to First Row of First Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first column of the first channel in the first row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Channel || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last column of the last channel in the same row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last row of the same channel in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Row of Last Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last column of the last channel in the last row. &lt;br /&gt;
|- &lt;br /&gt;
| Go to note column || || Moves the cursor to the note column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to instrument column || || Moves the cursor to the instrument column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to volume effect column || || Moves the cursor to the volume effect column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to effect comamnd column || || Moves the cursor to the effect command column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to effect parameter column || || Moves the cursor to the effect parameter column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Previous Pattern || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Displays the previous pattern in the order list, moving the cursor to its equivalent position in it.&lt;br /&gt;
|- &lt;br /&gt;
| Next Pattern || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Displays the next pattern in the order list, moving the cursor to its equivalent position in it.&lt;br /&gt;
|- &lt;br /&gt;
| Previous Sequence || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Cycles to the previous sequence. If the current sequence is the first, the last sequence is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Next Sequence || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Cycles to the next sequence. If the current sequence is the last, the first sequence is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Left || || Scrolls the pattern editor to the left without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Right || || Scrolls the pattern editor to the right without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Up || || Scrolls the pattern editor up without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Down || || Scrolls the pattern editor down without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Selection Key || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; || The modifier key to be used to extend the selection when navigating with keyboard shortcuts.&lt;br /&gt;
|- &lt;br /&gt;
| Copy Select Key || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; || The modifier key to be used to copy the selection when dragging with the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Select Channel / Select All || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Selects all events of the channel where the cursor is located in the current pattern, or all events in the pattern if the entire channel is already selected.&lt;br /&gt;
|- &lt;br /&gt;
| Select Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Selects the column in which the cursor is located in all rows of the current pattern.&lt;br /&gt;
|- &lt;br /&gt;
| Select Row || || Completely selects all rows covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Select Event || || Completely selects all events covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Select Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Extends the current selection so that it starts on the first row of a beat and ends on the last row of a beat.&lt;br /&gt;
|- &lt;br /&gt;
| Select Measure || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Extends the current selection so that it starts on the first row of a measure and ends on the last row of a measure.&lt;br /&gt;
|- &lt;br /&gt;
| Lose Selection || || Resets the selection rectangle to contain only the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Copy and Lose Selection || || Copies the selected events to the clipboard and unselects them.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Copy || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Copies only one event of data (where the cursor is located) to OpenMPT′s “Quick” clipboard; the standard clipboard is not erased. Each column pair has its own Quick clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Paste || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Pastes the data in OpenMPT′s “Quick” clipboard to the location of the cursor. The data last saved in that column’s clipboard will be pasted in the cursor′s corresponding column.&lt;br /&gt;
|-&lt;br /&gt;
| Cut to Pattern Channel Clipboard || || Copies and clears the entire channel the cursor is located in. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Channel Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Cut to Pattern Clipboard || || Copies and clears the entire current pattern. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Copy to Pattern Channel Clipboard || || Copies the entire channel the cursor is located in. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Channel Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Copy to Pattern Clipboard || || Copies the entire current pattern. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Paste from Pattern Channel Clipboard || || Replaces the contents of the channel the cursor is located in with the contents of the pattern channel clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Paste from Pattern Clipboard || || Replaces the contents of the current pattern with the contents of the pattern clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Clipboard Manager || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Toggles the visibility of the pattern clipboard manager.&lt;br /&gt;
|-&lt;br /&gt;
| Cycle to Previous Clipboard || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Makes the previous internal clipboard the current clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Cycle to Next Clipboard || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Makes the next internal clipboard the current clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Clear Row || || Deletes all event data in the same row in the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the selected pattern data, or just the data under the current cursor position if no selection has been made.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field (IT Style) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;.&amp;lt;/kbd&amp;gt; || Same as “Clear field”, but also clears the instrument number if a note event is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Row and Step || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Clear row”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field and Step || || Same as “Clear field”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field and Step (IT Style) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Clear field (IT Style)”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same number of rows as the selection, affecting the same number of channels where the selection extends; the data is moved up to replace the cleared data, and empty rows are added at the end of the affected channels.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (All Channels) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same amount of rows as the selection, on all channels; the data is moved up to replace the cleared data, and empty rows are added at the end of the pattern.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (Global) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same number of rows as the selection, affecting the same number of channels where the selection extends; this also affect all following patterns as no empty rows are inserted.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (All Channels, Global) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same amount of rows as the selection, on all channels; this also affect all following patterns as no empty rows are inserted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in the selected channel down by the amount of selected rows. Event data in the last row of those channels is deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (All Channels) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in all channels down by the amount of selected rows. Event data in the last row of all channels is deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (Global) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in the selected channel down by the amount of selected rows. Event data in the last rows is pushed to the next pattern(s), where the same action is repeated.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (All Channels, Global) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in all channels down by the amount of selected rows. Event data in the last rows is pushed to the next pattern(s), where the same action is repeated.&lt;br /&gt;
|- &lt;br /&gt;
| Mute Current Channel || &amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Toggles the sound output (mute) for the channel(s) covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Solo Current Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Toggles the sound output (mute) for all channels except the channel(s) covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Unmute All Channels || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Unmutes the sound output for all channels.&lt;br /&gt;
|- &lt;br /&gt;
| (Un)mute Channel on Pattern Transition || || Toggles the sound output (mute) for the channel(s) covered by the current selection, but the change takes place when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Unmute All Channels on Pattern Transition || || Unmutes the sound output for all channels when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Solo Channel on Pattern Transition || || Toggles the sound output (mute) for all channels except the one where the cursor is located, but the change takes place when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Channel Record Select || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Toggles the channel(s) covered by the current selection to belong to the primary record group.&lt;br /&gt;
|- &lt;br /&gt;
| Channel Split Record Select || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Toggles the channel(s) covered by the current selection to belong to the [[Manual: Keyboard Split|split record]] group.&lt;br /&gt;
|- &lt;br /&gt;
| Reset Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Stops all note processing, and resets all channel variables to their defaults (volume, panning, etc.) on the selected channel(s).&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Channel || || Changes the pitch of all notes on the selected channel in all patterns by a selectable amount of semitones.&lt;br /&gt;
|- &lt;br /&gt;
| Duplicate Channel || || Adds a new channel to the module and carries over all note data from the channel containing the edit cursor to this new channel.&lt;br /&gt;
|- &lt;br /&gt;
| Add Channel Before Current || || Adds a new empty channel before the channel containing the edit cursor.&lt;br /&gt;
|- &lt;br /&gt;
| Add Channel After Current || || Adds a new empty channel after the channel containing the edit cursor.&lt;br /&gt;
|- &lt;br /&gt;
| Remove Current || || Removes the channel containing the edit cursor. If the channel contains any data on any pattern, a confirmation prompt is shown.&lt;br /&gt;
|- &lt;br /&gt;
| Move Channels to Left || || Moves the channels covered by the current selection (if there is none, just the channel where the edit cursor is located) to the left by one channel.&lt;br /&gt;
|- &lt;br /&gt;
| Move Channels to Right || || Moves the channels covered by the current selection (if there is none, just the channel where the edit cursor is located) to the right by one channel.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Channel Settings || || Opens the [[Manual: Quick Channel Settings|Quick Channel Settings dialog]] for the channel where the cursor is located.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises by one the note number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers by one the note number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises by one the octave number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers by one the octave number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Custom || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || Lowers or raises the selected notes by an arbitrary amount of semitones.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Custom (Quick) || || Applies a previously chosen custom transpose amount. If no amount has been chosen before, the behaviour of this shortcut is identical to Transpose Custom.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry +1 || || Increases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry -1 || || Decreases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry Up (Coarse) || || Increases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one octave (notes), 10 (instruments and volume effect parameters) or 16 (effect parameters).&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry Down (Coarse) || || Decreases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one octave (notes), 10 (instruments and volume effect parameters) or 16 (effect parameters).&lt;br /&gt;
|- &lt;br /&gt;
| Insert New Pattern || || Inserts a new blank pattern after the current pattern, displays it, and moves the cursor to the same position in it. Also functions when cursor focus is in the Order list.&lt;br /&gt;
|- &lt;br /&gt;
| Duplicate Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Inserts a new pattern with the current pattern′s contents.&lt;br /&gt;
|- &lt;br /&gt;
| Split Pattern || || Splits the current pattern at the cursor location.&lt;br /&gt;
|- &lt;br /&gt;
| Amplify Selection || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Opens a dialog to change the note volume commands of the selected volume data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Note || || Transitions smoothly (using all available notes) between notes in the selection, filling in (and replacing if necessary) all rows with new note data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Instrument || || Transitions smoothly (using all available instrument numbers) between instrument numbers in the selection, filling in all rows with new instrument data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Volume || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;J&amp;lt;/kbd&amp;gt; || Transitions smoothly between data amounts in the selection, filling in (and replacing if necessary) all rows with new volume effects. The first and last rows of the selection must contain the same volume effect, or one of the two rows might be empty.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Effect || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;K&amp;lt;/kbd&amp;gt; || Transitions smoothly between data amounts in the selection, filling in (and replacing if necessary) all rows with new effect data. The first and last rows of the selection must contain the same effect, or one of the two rows might be empty. Different effects within the selection are not overwritten.&lt;br /&gt;
|- &lt;br /&gt;
| Apply Current Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Applies the current instrument to all cells in the selection that contain note data.&lt;br /&gt;
|- &lt;br /&gt;
| Apply Current Instrument to Existing Only || || Applies the current instrument to all cells in the selection that contain an instrument numbers. Notes without instrument numbers are not updated.&lt;br /&gt;
|- &lt;br /&gt;
| Grow Selection || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || “Expands” the selection by doubling the number of the selected rows, and evenly spacing out the event data within it. The expansion will replace event data below it in the same channels as the selection.&lt;br /&gt;
|- &lt;br /&gt;
| Shrink Selection || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || “Shrinks” the selection by deleting every other row of the selection. However, if only part of any row is selected, the data corresponding to the deleted selected data is also deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Expand Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || “Expands” the entire pattern by doubling the number of the rows, and evenly spacing out the event data within it.&lt;br /&gt;
|- &lt;br /&gt;
| Shrink Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || “Shrinks” the entire pattern by removing every other row.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Follow Song || &amp;lt;kbd&amp;gt;F11&amp;lt;/kbd&amp;gt; || Toggles the “Follow Song” function.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Loop Pattern || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F11&amp;lt;/kbd&amp;gt; || Toggles the Loop Pattern feature. &lt;br /&gt;
|- &lt;br /&gt;
| Play Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Process and play only the events in the current row where the cursor is located.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Row/Channel/… || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Go To|Go To]] dialog to allow you to jump to a different position in the module.&lt;br /&gt;
|- &lt;br /&gt;
| Pick Up Nearest Instrument Number || || Seeks for the nearest instrument number in the pattern channel the cursor currently is in. If an instrument number is found, it is set as the currently active instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Enable Recording || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Toggles the Event Record feature. When enabled, patterns may be edited.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Metronome || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Toggles the [[Manual: Metronome Settings|Metronome]].&lt;br /&gt;
|- &lt;br /&gt;
| Set Edit Step on Note Entry || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt; || The modifier key(s) that, when pressed with digits 0-9, allows you to change the Edit Step amount without using the mouse or moving the cursor focus out of the editor.&lt;br /&gt;
|- &lt;br /&gt;
| Increase Edit Step || || Increases the Edit Step by one row.&lt;br /&gt;
|- &lt;br /&gt;
| Decrease Edit Step || || Decreases the Edit Step by one row.&lt;br /&gt;
|- &lt;br /&gt;
| Switch to Order List || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Toggles the cursor focus between the pattern editor and the current pattern in the Pattern Order list. There is also a more general version of this shortcut that works for all other song views as well (“Toggle Between Upper / Lower View”).&lt;br /&gt;
|- &lt;br /&gt;
| Toggle PC Event/Instrument Plugin Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;/&amp;lt;/kbd&amp;gt; || Opens the editor for the plugin of the selected Parameter Control Event or instrument number.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Channel’s Plugin Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the editor for the current channel′s assigned plugin.&lt;br /&gt;
|- &lt;br /&gt;
| Show Note Properties || &amp;lt;kbd&amp;gt;▤ Application&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Note Properties|Note Properties]] dialog, where you can assign any event data to the current row of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Show Pattern Properties || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Pattern Properties|Pattern Properties]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Split Keyboard Settings Dialog || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Keyboard Split|Keyboard Split]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| Open Effect Visualizer || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Parameter Editor|Parameter Editor]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| Show Chord Editor || || opens the [[Manual: Chord Editor|Chord Editor]] dialog. &lt;br /&gt;
|-&lt;br /&gt;
| Show Context (Right-Click) Menu || || Opens the edit context menu at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Channel Context (Right-Click) Menu || || Opens the channel context menu at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Channel Plugin Context (Right-Click) Menu || || Opens the plugin context menu of the channel at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Playback Time at Current Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Shows the estimated time within the track at the start of the current row.&lt;br /&gt;
|- &lt;br /&gt;
| Lock Playback to Rows || || If a selection is made, playback is locked to the selected rows. Otherwise, a previous playback lock is removed.&lt;br /&gt;
|-&lt;br /&gt;
| Quantize Settings || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Opens the record quantization settings.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle row playback when navigating ||  || Toggles the state of the &amp;quot;play whole row when navigating&amp;quot; feature. The new state of the feature is announced in the status bar.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Overflow Paste || || When enabled, pasting will continue to the next pattern if the data overflows the current pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Note Off Record (PC Keyboard) || || Toggles the recording of Note Off events from the PC keyboard in the pattern editor (also configurable from the [[Manual: Setup/General#Record note off|General setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Note Off Record (MIDI) || || Toggles the recording of Note Off events from MIDI in the pattern editor (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Apply Octave Transpose to incoming MIDI Notes || || Toggles application of the base octave transposition to notes received via MIDI in the pattern editor (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Continue Song when MIDI Note is received || || Toggles whether pattern playback continues when a note is received via MIDI (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Respond to Play / Continue / Stop Song MIDI messages || || Toggles whether pattern playback starts / stops / continues when the corresponding MIDI commands are received (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI Velocity || || Toggles whether MIDI velocity is recorded (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI Pitch Bend || || Toggles whether MIDI pitch bends are recorded to patterns (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI CCs || || Toggles whether MIDI CC events are recorded to patterns (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Instrument Column Visibility || || Shows or hides the instrument column.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Volume Column Visibility || || Shows or hides the volume column.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Effect Column Visibility || || Shows or hides the effect column.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Note Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the note column (the first column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Base Octave [note] || &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt;, ... || Enters a note in the octave indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +1 [note] || &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt;, ... || Enters a note in the next higher octave indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +2 [note] || &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;X&amp;lt;/kbd&amp;gt;, ... || Enters a note two octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +3 [note] || || Enters a note three octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +4 [note] || || Enters a note four octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Set Octave [0 – 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Sets the selected note’s octave.&lt;br /&gt;
|-&lt;br /&gt;
| Chord Modifier || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; || The modifier key(s) that calls a chord rather than a note. The chords are set and assigned in the [[Manual: Chord Editor|Chord Editor]].&lt;br /&gt;
|-&lt;br /&gt;
| Note Cut || &amp;lt;kbd&amp;gt;`&amp;lt;/kbd&amp;gt; || Enters a Note Cut command (^^). Note: The default shortcut is position-independent and is bound to the key that is usually left of &amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt;. &lt;br /&gt;
|-&lt;br /&gt;
| Note Off || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a Note Off command (==). Note: The default shortcut is position-independent and is bound to the key that is usually left of &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Note Fade || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a Note Fade command (~~). Note: The default shortcut is position-independent and is bound to the key that is usually lef of &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Control || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Enters an absolute [[Manual:_Parameter_Control_Events|Parameter Control event]] (PC). Note: The default shortcut is position-independent and is bound to the key that is usually right of &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Control (Smooth) || &amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Enters a smooth sliding Parameter Control event (PCs). Note: The default shortcut is position-independent and is bound to the key that is usually right of &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Instrument Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the instrument column (the second column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Set Instrument Digit [0 – 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the instrument field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the volume column (the third column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Set Volume Digit [0 - 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the volume parameter field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
| Set Volume Digit [A - F] || || Enters the digit into the rightmost place in the volume parameter field, moving the existing digits to the left. By default, volume column parameters are shown in decimal and these shortcuts are not assigned. You can use them after enabling the [[Manual: Hidden Settings#.5BPattern Editor.5D|Pattern Editor.VolumeColumnInHex]] hidden setting.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume || &amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Enters a note volume (vxx) command into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Panning || &amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Enters a panning command (pxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume Slide Up || &amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Enters volume slide up (cxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume Slide Down || &amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Enters a volume slide down (dxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Fine Volume Slide Up || &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Enters a fine volume slide up (axx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Fine Volume Slide Down || &amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Enters a fine volume slide down (bxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Vibrato Speed || &amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || Enters a vibrato speed command (uxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Vibrato Depth || &amp;lt;kbd&amp;gt;H&amp;lt;/kbd&amp;gt; || Enters a vibrato depth command (hxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - XM Pan Slide Left || &amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enters a pan slide to the left (lxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - XM Pan Slide Right || &amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Enters a pan slide to the right (rxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Tone Portamento || &amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Enters a tone portamento command (gxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Portamento Up || &amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enters a pitch bend up command (fxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Portamento Down || &amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Enters a pitch bend down command (exx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Offset || &amp;lt;kbd&amp;gt;O&amp;lt;/kbd&amp;gt; || Enters a coarse sample offset command (oxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the effect column (the fourth column). Alphanumeric effect letters (0-9, A-Z) are currently not editable — they are automatically assigned to the respective keys on your keyboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Smooth MIDI Macro Slide || &amp;lt;kbd&amp;gt;\&amp;lt;/kbd&amp;gt; || Enters a Smooth MIDI Macro Slide (\xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Combined Note Delay and Note Cut || &amp;lt;kbd&amp;gt;;&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;;&amp;lt;/kbd&amp;gt; || Enters a Delay-Cut (:xy) command into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Extension Command || &amp;lt;kbd&amp;gt;/&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Parameter Extension Command]] (#xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Finetune || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Finetune Command]] (+xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Finetune (Smooth) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Smooth Finetune Command]] (*xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Parameter Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the effect parameter column (the fifth column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Effect Parameter Digit [0 – F] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the effect parameter field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Samples|Samples Tab]] is active.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Trim Sample around Loop Points || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || Trims the sample to the selection, if there is one. Otherwise, if loop points are specified, all sample data outside of these start/end times are deleted.&lt;br /&gt;
|-&lt;br /&gt;
| Trim to Loop End || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || If loop points are specified, all sample data past the loop end is deleted.&lt;br /&gt;
|-&lt;br /&gt;
| Silence Sample Selection || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || All of the sample data within the selected area is set to zero, effectively placing silence in that span.&lt;br /&gt;
|-&lt;br /&gt;
| Normalize Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Applies Normalisation to the sample.&lt;br /&gt;
|-&lt;br /&gt;
| Amplify Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Amplify|Amplify]] dialog, allowing you to alter the volume of the sample and apply Fade In or Fade Out (from / to silence).&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Puts the selected sample data in reverse order, so it is being played backwards.&lt;br /&gt;
|-&lt;br /&gt;
| Delete Sample Selection || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the sample data within the selection, moving the remaining data together.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Sample Drawing || || Turns sample drawing mode on or off.&lt;br /&gt;
|-&lt;br /&gt;
| Add Silence / Create Sample || || Opens the dialog for adding silence, resizing samples and initializing FM instruments.&lt;br /&gt;
|-&lt;br /&gt;
| Configure Sample Grid || || Opens the dialog for setting the sample grid properties.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom In || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Increases the data-to-display ratio, effectively zooming in to show more graphic detail of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom Out || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Decreases the data-to-display ratio, effectively zooming out to show less graphic detail of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Selection || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Zooms so much into the sample data that the current selection covers as much of the sample display as possible. If no selection has been made, auto-zoom is enabled.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Sample Start || &amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Zooms into the sample and ensures that the sample start is visible in the view.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Sample End || &amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Zooms into the sample and ensures that the sample end is visible in the view.&lt;br /&gt;
|-&lt;br /&gt;
| Center Loop Start in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Ensures that the normal sample loop’s start point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Loop End in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Ensures that the normal sample loop’s end point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Sustain Loop Start in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;3&amp;lt;/kbd&amp;gt; || Ensures that the sample sustain loop’s start point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Sustain Loop End in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;4&amp;lt;/kbd&amp;gt; || Ensures that the sample sustain loop’s end point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Convert Ping-Pong Loop to Unidirectional || || Turns a bidi-looped sample loop into a sample with a regular loop by adding a reversed copy of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Convert Ping-Pong Sustain Loop to Unidirectional || || Turns a bidi-looped sustain loop into a sample with a regular loop by adding a reversed copy of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Loop || || Switches the sample loop to the next supported loop type (off, on, bidi).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Sustain Loop || || Switches the sustain loop to the next supported loop type (off, on, bidi).&lt;br /&gt;
|-&lt;br /&gt;
| Convert to 8-bit / 16-bit || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;8&amp;lt;/kbd&amp;gt; || Changes the sample’s bit depth between 8-bit and 16-bit.&lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Mix) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Mixes the left and right channels of a stereo sample equally together. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Left Channel) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Only keeps the left channel of a stereo sample. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Right Channel) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Only keeps the right channel of a stereo sample. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Split Sample) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Create two sample slots for this sample, one containing only the left channel and the other containing just the right channel. If the sample is referenced by an instrument, this instrument is duplicated as well for the right channel. &lt;br /&gt;
|-&lt;br /&gt;
| Change Stereo Separation || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Adjusts the stereo separation of the sample by a given amount, either widening or narrowing the stereo width.&lt;br /&gt;
|-&lt;br /&gt;
| Upsample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt;|| Doubles the sample’s middle-C frequency using the interpolation filter last chosen in the [[Manual: Resample|Resample dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| Downsample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt;|| Halves the sample’s middle-C frequency using the interpolation filter last chosen in the [[Manual: Resample|Resample dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| Resample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Changes the sample’s middle-C frequency to a new arbitrary frequency.&lt;br /&gt;
|-&lt;br /&gt;
| Invert Sample Phase || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Inverts the sample’s phase, i.e. it is mirrored along the time axis.&lt;br /&gt;
|-&lt;br /&gt;
| Signed / Unsigned Conversion || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || Re-interprets the sample data as a signed or unsigned sample.&lt;br /&gt;
|-&lt;br /&gt;
| Remove DC Offset || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Removes an unwanted static DC Offset from the waveform, i.e. it is centered around the time axis.&lt;br /&gt;
|-&lt;br /&gt;
| Quick Fade || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Applies a fade-in for the selected sample data if the selection includes the beginning of the sample, or applies a fade-out if the selection includes the end of the sample. If neither the beginning or end of the waveform is part of the selection, the Amplify dialog is shown.&lt;br /&gt;
|-&lt;br /&gt;
| Crossfade Sample Loop || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Opens the Crossfade Loop dialog to crossfade the sample loop’s end with the loop start, to create seamless loop transitions.&lt;br /&gt;
|-&lt;br /&gt;
| Tune Sample to Given Note || || Opens the [[Manual: Sample Tuner|Sample Tuner]] dialog, where the sample can be tuned to a given note.&lt;br /&gt;
|-&lt;br /&gt;
| Load Sample || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens the Open File dialog to allow you to import a sample file into the sample slot. This command also works in the Instrument Tab, importing an instrument to the current Instrument slot.&lt;br /&gt;
|-&lt;br /&gt;
| Load Raw Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens the Open File dialog to allow you to import a sample file into the sample slot. The [[Manual: Raw Sample Import|Raw Sample Import]] is shown, ignoring the sample format even if it is known to OpenMPT.&lt;br /&gt;
|-&lt;br /&gt;
| Save Sample || || Opens the Save File dialog to allow you to save the sample as a Wave Audio or Raw file into a folder of your choice. This command also works in the Instrument Tab, saving the instrument and its accompanying samples as an .iti, .xi or .sfz file.&lt;br /&gt;
|-&lt;br /&gt;
| New Sample || || Creates a blank sample in the next unused slot. This command also works in the Instrument Tab.&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Sample || || Duplicates the current sample slot into the next unused slot.&lt;br /&gt;
|-&lt;br /&gt;
| Initialize OPL Instrument || || Configures the current sample slot to be a synthesized OPL instrument and recalls the default instrument parameters.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises the middle-C frequency by one semitone.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers the middle-C frequency by one semitone.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises (doubles) the middle-C frequency by one octave.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers (halves) the middle-C frequency by one octave.&lt;br /&gt;
|- &lt;br /&gt;
| Increment Finetune || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Raises the middle-C frequency by the configured [[Manual: Setup/Samples#Frequency Finetune Steps|frequency finetune step]], or by one finetune unit in MOD / XM Files.&lt;br /&gt;
|- &lt;br /&gt;
| Decrement Finetune || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Lowers the middle-C frequency by the configured [[Manual: Setup/Samples#Frequency Finetune Steps|frequency finetune step]], or by one finetune unit in MOD / XM Files.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Follow Sample Play Cursor|| &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Cycles through all three [[Manual: Setup/Samples#Automatic Scrolling when_Zoomed-In|sample playback cursor follow modes]]. The new follow mode is announced in the status bar.&lt;br /&gt;
|-&lt;br /&gt;
| Preview / Set Sample Cue [1 - 9] || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt; || Previews the sample at middle-C, starting from the chosen cue point. If the cue point is unset and the sample is currently being previewed, the cue point is set to the current play position.&lt;br /&gt;
|- &lt;br /&gt;
| Slice at Cue Points || || Creates new samples from the current sample by splitting the sample at its cue points.&lt;br /&gt;
|- &lt;br /&gt;
| Slice at Grid || || Creates new samples from the current sample by splitting the sample at the currently configured sample grid.&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instrument Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Instruments#Sample Map|Sample Map]] on the Instrument Tab is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Creates a new instrument slot using &#039;&#039;all&#039;&#039; the same instrument attributes as the currently displayed instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Sample Map || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Sample Map|Sample Map]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Current Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the Samples page of the currently selected sample slot.&lt;br /&gt;
|-&lt;br /&gt;
| Map All Notes to Selected Note || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Sets the currently selected note to all notes.&lt;br /&gt;
|-&lt;br /&gt;
| Map All Notes to Selected Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Sets the currently selected sample slot to all notes.&lt;br /&gt;
|-&lt;br /&gt;
| Reset Note Mapping || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Resets the note assignments, so that each note maps to itself (C-5 → C-5, D-5 → D-5, and so on).&lt;br /&gt;
|-&lt;br /&gt;
| Remove All Samples || || Removes any sample associations from the instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 (Note Map) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Transposes the whole note map up one semitone.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose -1 (Note Map) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Transposes the whole note map down one semitone.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 Octave (Note Map) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Transposes the whole note map up one octave.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose -1 Octave (Note Map) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Transposes the whole note map down one octave.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Envelope Editor ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Instruments#Envelope Editor|envelope editor]] on the Instrument Tab is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Load Envelope || || Replaces the currently active envelope with an envelope from disk.&lt;br /&gt;
|-&lt;br /&gt;
| Save Envelope || || Stores the currently active envelope to disk.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom In || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Increases the detail of the Envelope Window, showing a smaller excerpt of the envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom Out || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Decreases the detail of the Envelope Window, showing a bigger excerpt of the envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Scale Envelope Points || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Scale Envelope Points|Scale Envelope Points]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Volume Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Selects the Volume Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Panning Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Selects the Panning Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pitch / Filter Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Selects the Pitch / Filter Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Volume Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Enables or disables the Volume Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Panning Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Enables or disables the Panning Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Pitch Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Enables or disables the Pitch Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Filter Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enables or disables the Filter Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Loop || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Loop.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Loop Start || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope loop start.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Loop End || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope loop end.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Sustain Loop || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Sustain Loop.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Sustain Start || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope sustain start.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Sustain End || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope sustain end.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Carry || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Carry.&lt;br /&gt;
|-&lt;br /&gt;
| Select Previous Envelope Point || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the selection to the previous envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Select Next Envelope Point || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the selection to the following envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Left || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the selected envelope point left one tick.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Left (Coarse) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the selected envelope point left one beat.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Right || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the selected envelope point right one tick.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Right (Coarse) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the selected envelope point right one beat.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Up || &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the selected envelope point up one unit.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Up (Coarse) || &amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the selected envelope point up 8 units.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Down || &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the selected envelope point down one unit.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Down (Coarse) || &amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the selected envelope point down 8 units.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Envelope Point || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts an envelope point after the selected point.&lt;br /&gt;
|-&lt;br /&gt;
| Remove Envelope Point || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the selected envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Loop Start || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Envelope Loop start point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Loop End || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Envelope Loop end point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Sustain Loop Start || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Sustain Loop start point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Sustain Loop End || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Sustain Loop end point.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Release Node || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Toggles the selected envelope point as the start point for the Release Envelope.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comments [Bottom] ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the lower half of the [[Manual: Comments|Comments tab]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Between Lists || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Toggles between the sample and instrument list.&lt;br /&gt;
|-&lt;br /&gt;
| Open Item in Editor || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Switches to the sample or instrument editor to edit the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Rename Item || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Brings up an edit box for renaming the selected sample or instrument.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Plugin Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when a [[Manual: Plugin Window|plugin window]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Previous Plugin Preset || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Selects the previous plugin preset / patch.&lt;br /&gt;
|-&lt;br /&gt;
| Next Plugin Preset || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Selects the following plugin preset / patch.&lt;br /&gt;
|-&lt;br /&gt;
| Plugin Preset Backward Jump || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Jumps back 10 entries in the preset list.&lt;br /&gt;
|-&lt;br /&gt;
| Plugin Preset Forward Jump || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Jumps forward 10 entries in the preset list.&lt;br /&gt;
|-&lt;br /&gt;
| Randomize Plugin Parameters || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Give random values to all parameters of the current plugin.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Parameter Recording || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Toggles the parameter recording function, which allows you to record parameter changes from plugin window into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Record MIDI Out to Pattern Editor || || Toggles the MIDI Out recording function, which allows you to route the plugin’s MIDI output to the pattern, sample or instrument editor.&lt;br /&gt;
|-&lt;br /&gt;
| Pass Key Presses to Plugin || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;K&amp;lt;/kbd&amp;gt; || Toggles the Pass Keys function, which sends all keyboard input to the currently open plugin window (e.g. for entering a serial number in the plugin GUI).&lt;br /&gt;
|-&lt;br /&gt;
| Bypass Plugin || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Toggles plugin’s bypass property to control whether audio is routed through the plugin or not.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tree View ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual:_Tree_View|Tree View]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Switch between Upper / Lower Tree View || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Switches focus between the upper and lower panel of the Tree View.&lt;br /&gt;
|-&lt;br /&gt;
| Open / View Item || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens / views / previews the selected item (same action as double-click).&lt;br /&gt;
|-&lt;br /&gt;
| Play Item || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Previews the selected item if it is a sample, instrument or file.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Item || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts an empty item (e.g. sample or instrument slot) after the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Item || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Duplicates the currently selected item (e.g. sample or instrument slot).&lt;br /&gt;
|-&lt;br /&gt;
| Delete Item || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Delete Item Permanently || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Delete Item”, but if the selected item is a file, it will not be moved to the recycling bin.&lt;br /&gt;
|-&lt;br /&gt;
| Rename Item / Send To Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || For items belonging to an open module (e.g. patterns, samples, instruments, ...): The selected item is renamed. For items in the instrument library: The item is sent to the last active sample or instrument editor and replaces the currently selected sample or instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Send To Editor (Insert New) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || For items in the instrument library: The item is sent to the last active sample or instrument editor and is loaded into a new sample or instrument slot.&lt;br /&gt;
|-&lt;br /&gt;
| Go to Parent Folder || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Changes the instrument library folder to the current location′s parent folder.&lt;br /&gt;
|-&lt;br /&gt;
| Find in Instrument Library || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt;|| Opens the search filter to quickly locate files and folders in the instrument library.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Name || || Items in the instrument library are sorted by their file name.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Date || || Items in the instrument library are sorted by their last file modification date.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Size || || Items in the instrument library are sorted by their file size.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Keyboard Actions]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Development:_228_Extensions&amp;diff=4977</id>
		<title>Development: 228 Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Development:_228_Extensions&amp;diff=4977"/>
		<updated>2025-09-05T17:46:14Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: Pattern colors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is for OpenMPT 1.17.02.48 r192 and newer (&amp;lt;code&amp;gt;cwtv&amp;lt;/code&amp;gt; &amp;amp;ge; 0x088D). For older versions, check [[Development:_OpenMPT_Format_Extensions#Custom_Tunings_(old)|OpenMPT Format Extensions &amp;amp;sect; Custom Tunings (old)]].&amp;lt;!-- Impulse Tracker 8 lol --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MPTM format is nearly identical to the IT format. The only difference is that OpenMPT stores additional data (besides the ModPlug/OpenMPT song extensions) in MPTM files to store the settings for MPTM features like custom tunings, and to specify that a file is in the MPTM format in the first place (otherwise it would be detected as IT).&lt;br /&gt;
&lt;br /&gt;
This additional data is stored in a chunk at the end of MPTM files (after the OpenMPT song extensions).&lt;br /&gt;
&lt;br /&gt;
The chunk contains settings for these features:&lt;br /&gt;
* Custom tunings.&lt;br /&gt;
* Pattern time signature overrides, and Parameter Control notes in patterns.&lt;br /&gt;
* All sequences and their order lists.&lt;br /&gt;
&lt;br /&gt;
Other MPTM features (e.g. fractional tempos) use [[Development:_OpenMPT_Format_Extensions|regular OpenMPT extensions]].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
These are the datatypes used in this document (&#039;&#039;&#039;all numbers&#039;&#039;&#039; are stored in little-endian format, &#039;&#039;&#039;even floating-point numbers&#039;&#039;&#039;):&lt;br /&gt;
* &amp;lt;code&amp;gt;uint8&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;uint32&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;uint40&amp;lt;/code&amp;gt;: an unsigned integer with the given bit width.&lt;br /&gt;
* &amp;lt;code&amp;gt;int8&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;int16&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;int32&amp;lt;/code&amp;gt;: a signed integer with the given bit width.&lt;br /&gt;
* &amp;lt;code&amp;gt;float32&amp;lt;/code&amp;gt;: a 32-bit (single-precision) IEEE-754 floating-point number.&lt;br /&gt;
* &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;: a text character (text encoding may vary, so a single character is not necessarily one byte).&lt;br /&gt;
* Brackets (&amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;) after a datatype specify an array of that datatype.&lt;br /&gt;
** If there is a number between the brackets, it is the number of items in the array.&lt;br /&gt;
&lt;br /&gt;
There are also custom datatypes that are explained below:&lt;br /&gt;
&lt;br /&gt;
=== Adaptive Integers ===&lt;br /&gt;
&lt;br /&gt;
Adaptive integers are unsigned little-endian integer datatypes that can take less bytes to be stored (compared to regular integers), by storing their own length in themselves. In this document, the datatype of adaptive integers is written as &amp;lt;code&amp;gt;auint&amp;lt;/code&amp;gt; followed by its bit width (e.g., &amp;lt;code&amp;gt;auint64&amp;lt;/code&amp;gt;).&lt;br /&gt;
* In a 16-bit adaptive integer, the least significant bit of the first byte (&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) specifies whether the integer is stored in 1 or 2 bytes respectively. The remaining 7 or 15 bits store the integer.&lt;br /&gt;
* In a 32-bit adaptive integer, the least significant two bits of the first byte (&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;11&amp;lt;/code&amp;gt;) specify whether the integer is stored in 1, 2, 3, or 4 bytes respectively. The remaining 6, 14, 22, or 30 bits store the integer.&lt;br /&gt;
* In a 64-bit adaptive integer, the least significant two bits of the first byte (&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;11&amp;lt;/code&amp;gt;) specify whether the integer is stored in 1, 2, 4, or 8 bytes respectively. The remaining 6, 14, 30, or 62 bits store the integer.&lt;br /&gt;
&lt;br /&gt;
=== Strings ===&lt;br /&gt;
&lt;br /&gt;
Most text strings are stored as follows: the string&#039;s length (&#039;&#039;&#039;in bytes, not characters&#039;&#039;&#039;) stored as a 64-bit adaptive integer, followed by the string itself. OpenMPT will stop reading a string if a &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt; byte (null character) is present anywhere in the string, or the string is longer than 255 characters. In this document, the datatype of this type of strings is written as &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt;. If a string is stored in a different format, it will be specified.&lt;br /&gt;
&lt;br /&gt;
=== Additional Notes ===&lt;br /&gt;
&lt;br /&gt;
* In this document, &amp;quot;Windows codepage&amp;quot; refers to the user&#039;s selected ACP codepage in Windows (&amp;lt;code&amp;gt;HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ACP&amp;lt;/code&amp;gt;), which is &#039;&#039;&#039;usually&#039;&#039;&#039; set to [[Wikipedia:Windows-1252|1252]], but may be different depending on the system locale.&lt;br /&gt;
&lt;br /&gt;
== 228 Chunk Structure ==&lt;br /&gt;
&lt;br /&gt;
Each 228 chunk contains a header, a set of entries, and a map.&lt;br /&gt;
&lt;br /&gt;
The header contains information about the chunk, such as its number of entries, or the starting position of its map.&lt;br /&gt;
&lt;br /&gt;
The main data section of the chunk can have any number of entries in it. Each entry is a set of bytes that can represent anything, such as an integer, a floating-point number, a string, or even a 228 chunk (a chunk can be an entry of another chunk).&lt;br /&gt;
&lt;br /&gt;
The map contains information about the entries of the chunk, such as the ID, position, and size of each entry.&lt;br /&gt;
&lt;br /&gt;
In the list and table below, features that are never written to files by the current version of OpenMPT are shown in &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;green text&amp;lt;/span&amp;gt; (see [[#Default_Chunk_Settings|Default Chunk Settings]] for more information).&lt;br /&gt;
&lt;br /&gt;
This is the general structure of a 228 chunk:&lt;br /&gt;
&lt;br /&gt;
* Header&lt;br /&gt;
** Signature bytes (&amp;lt;code&amp;gt;228&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Chunk ID&lt;br /&gt;
** &amp;quot;Header byte&amp;quot;&lt;br /&gt;
** Additional header data, including the &amp;quot;flag byte&amp;quot;&lt;br /&gt;
** Numeric form of version number&lt;br /&gt;
** &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;String form of version number&amp;lt;/span&amp;gt;&lt;br /&gt;
** Custom ID length for entries&lt;br /&gt;
** &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Fixed entry size&amp;lt;/span&amp;gt;&lt;br /&gt;
** &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Chunk description&amp;lt;/span&amp;gt;&lt;br /&gt;
** &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
** Number of entries in the chunk&lt;br /&gt;
** Starting position of the map in this chunk&lt;br /&gt;
* Entries&lt;br /&gt;
** (Entry 1)&lt;br /&gt;
** (Entry 2)&lt;br /&gt;
** (Entry 3)&lt;br /&gt;
** (etc.)&lt;br /&gt;
* Map&lt;br /&gt;
** ID of Entry 1&lt;br /&gt;
** Start position of Entry 1&lt;br /&gt;
** Size of Entry 1&lt;br /&gt;
** &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Description of Entry 1&amp;lt;/span&amp;gt;&lt;br /&gt;
** ID of Entry 2&lt;br /&gt;
** Start position of Entry 2&lt;br /&gt;
** Size of Entry 2&lt;br /&gt;
** &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Description of Entry 2&amp;lt;/span&amp;gt;&lt;br /&gt;
** ID of Entry 3&lt;br /&gt;
** Start position of Entry 3&lt;br /&gt;
** Size of Entry 3&lt;br /&gt;
** &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Description of Entry 3&amp;lt;/span&amp;gt;&lt;br /&gt;
** (etc.)&lt;br /&gt;
&lt;br /&gt;
=== Header Structure ===&lt;br /&gt;
&lt;br /&gt;
This is the structure of the header of a chunk:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;char[3]&amp;lt;/code&amp;gt;&lt;br /&gt;
| 3-byte signature: &amp;lt;code&amp;gt;228&amp;lt;/code&amp;gt;. Identifies the start of a 228 chunk.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8&amp;lt;/code&amp;gt;&lt;br /&gt;
| Length of the chunk&#039;s ID (in bytes).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| The chunk&#039;s ID. Usually readable as a string, but can be any set of bytes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;quot;Header byte&amp;quot;. The bits of this byte specify what is and isn&#039;t stored in the chunk.&lt;br /&gt;
* Bits 0 and 1 specify the length of the IDs of this chunk&#039;s entries, unless the chunk has a &amp;quot;flag byte&amp;quot; (explained later) and its bit 0 is set.&lt;br /&gt;
** &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;: all entries in this chunk have IDs with length 0 (i.e., they do not have IDs).&lt;br /&gt;
** &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;11&amp;lt;/code&amp;gt;: all entries in this chunk have IDs with length 1, 2, or 4 respectively.&lt;br /&gt;
* Bit 2: whether this chunk&#039;s map stores the starting position of each entry.&lt;br /&gt;
* Bit 3: whether this chunk&#039;s map stores the size of each entry.&lt;br /&gt;
* Bit 4: whether this chunk&#039;s header stores a numeric form of its version number.&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Bit 5: whether this chunk&#039;s header stores a string (text) form of its version number.&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Bit 6: whether this chunk&#039;s descriptions (explained later) use a fixed 16-bit encoding (e.g. [[Wikipedia:Universal_Coded_Character_Set|UCS-2]]) instead of a fixed 8-bit encoding (e.g. [[Wikipedia:ISO/IEC_8859-1|ISO-8859-1]] / [[Wikipedia:Windows-1252|Windows-1252]]).&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Bit 7: whether this chunk&#039;s map contains descriptions for each entry.&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auint32&amp;lt;/code&amp;gt;&lt;br /&gt;
| Size of additional header data.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| Additional header data.&amp;lt;br/&amp;gt;&lt;br /&gt;
If the additional header data is at least 2 bytes long, &#039;&#039;&#039;and&#039;&#039;&#039; the first byte is &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt;, the second byte is read as the &amp;quot;flag byte&amp;quot;.&amp;lt;br/&amp;gt;&lt;br /&gt;
The bits of the flag byte contain additional information about the chunk:&lt;br /&gt;
* Bit 0: whether the chunk uses custom ID lengths for its entries.&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Bit 1: whether all entries in this chunk have a fixed size.&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Bit 2: whether the chunk contains a description about itself.&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Bit 3: whether the chunk contains a timestamp.&amp;lt;/span&amp;gt;&lt;br /&gt;
The flag byte does not need to exist if none of its bits are supposed to be set.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auint64&amp;lt;/code&amp;gt;&lt;br /&gt;
| Numeric form of the version number. Usually contains the same integer stored in the &amp;lt;code&amp;gt;VWSL&amp;lt;/code&amp;gt; value in the OpenMPT song extensions, but there are exceptions.&amp;lt;br/&amp;gt;&lt;br /&gt;
This adaptive integer only exists if bit 4 of the header byte is set.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Length of the string form of the version number, in bytes.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;This byte only exists if bit 5 of the header byte is set.&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;char[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;String form of the version number. It was never used in any version of OpenMPT.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;This string only exists if bit 5 of the header byte is set.&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8&amp;lt;/code&amp;gt;&lt;br /&gt;
| Custom ID length for entries.&lt;br /&gt;
* If bit 0 is set, the length of the IDs of this chunk&#039;s entries are not constant, and are stored next to the IDs in the map. In this case, the remaining 7 bits of this byte are ignored.&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;If bit 0 is not set, the length of the IDs of this chunk&#039;s entries are stored in the remaining 7 bits of this byte.&amp;lt;/span&amp;gt;&lt;br /&gt;
This byte only exists if the chunk has a flag byte and its bit 0 is set.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auint32&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Fixed entry size. Determines the size of all entries in this chunk.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;This adaptive integer only exists if the chunk has a flag byte and its bit 1 is set.&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Length of this chunk&#039;s description (in characters).&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;This adaptive integer only exists if the chunk has a flag byte and its bit 2 is set.&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;char[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Chunk description. If bit 6 of the header byte is set, the string uses use a fixed 16-bit encoding (e.g. [[Wikipedia:Universal_Coded_Character_Set|UCS-2]]) instead of a fixed 8-bit encoding (e.g. [[Wikipedia:ISO/IEC_8859-1|ISO-8859-1]] / [[Wikipedia:Windows-1252|Windows-1252]]).&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;This string only exists if the chunk has a flag byte and its bit 2 is set.&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint40&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Timestamp, stored as a little-endian unsigned integer in 5 bytes (40 bits).&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;This was originally intended to store the Unix time (number of seconds past 1970-01-01 00:00:00 UTC) at the time of saving the file.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;This integer only exists if the chunk has a flag byte and its bit 3 is set.&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auint64&amp;lt;/code&amp;gt;&lt;br /&gt;
| Number of entries in this chunk.&amp;lt;br/&amp;gt;&lt;br /&gt;
The current version of OpenMPT always writes this adaptive integer in two bytes, even if it only needs one.&amp;lt;br/&amp;gt;&lt;br /&gt;
Additionally, this causes OpenMPT to be unable to write chunks with more than 16383 entries.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auint64&amp;lt;/code&amp;gt;&lt;br /&gt;
| Start position of this chunk&#039;s map, relative to the start of this chunk (where the &amp;lt;code&amp;gt;228&amp;lt;/code&amp;gt; bytes start).&amp;lt;br/&amp;gt;&lt;br /&gt;
This adaptive integer does not exist if this chunk does not have a map (see [[#Map_Structure|the section on maps]] for an explanation on whether a map exists or not).&amp;lt;br/&amp;gt;&lt;br /&gt;
The current version of OpenMPT always writes this adaptive integer in eight bytes, even if it needs fewer bytes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Entry Structure ===&lt;br /&gt;
&lt;br /&gt;
The entries in a chunk start right where the header ends. Entries are just sets of bytes, and they are stored right after each other.&lt;br /&gt;
&lt;br /&gt;
Entries of a chunk can be chunks themselves, allowing a chunk to be &amp;quot;nested&amp;quot; in another chunk by being one of the outer chunk&#039;s entries. Note that a nested chunk is a chunk on its own, and its header, entries, and map have nothing to do with those of the outer chunk that contains it.&lt;br /&gt;
&lt;br /&gt;
Additionally, each entry can have an ID, and if said entry is a chunk, its entry ID when referred to as an entry of the outer chunk is &#039;&#039;&#039;not necessarily related&#039;&#039;&#039; to its chunk ID (which is stored in the inner chunk&#039;s header). &#039;&#039;&#039;It can be the same ID or a different one&#039;&#039;&#039;.&lt;br /&gt;
That is very important to know, because OpenMPT stores a lot of inner chunks as entries of other chunks, so having to deal with their IDs can be quite confusing.&lt;br /&gt;
&lt;br /&gt;
Note: Entries do &#039;&#039;&#039;not&#039;&#039;&#039; need to be stored in a specific order, &#039;&#039;&#039;as long as the chunk that contains them specifies entry IDs in its map&#039;&#039;&#039;. Otherwise, they have to be stored in the same order that OpenMPT reads them.&lt;br /&gt;
&lt;br /&gt;
=== Map Structure ===&lt;br /&gt;
&lt;br /&gt;
Chunks usually have maps. A chunk will not have a map if bits 2, 3, and 7, of the header byte, are not set, and the ID length for entries is fixed to 0. However, chunks written by the current version of OpenMPT do not meet this requirement, so they always have maps. If a chunk does not have a map, its header will also not store the start position of the map.&lt;br /&gt;
&lt;br /&gt;
This is the structure of a section of a map corresponding to a &#039;&#039;&#039;single entry&#039;&#039;&#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| Length of the entry&#039;s ID.&amp;lt;br/&amp;gt;&lt;br /&gt;
This adaptive integer only exists if the ID length for entries is not fixed (i.e., bit 0 of the flag byte and bit 0 of the custom ID length byte are both set).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| The entry&#039;s ID. Usually readable as a string, but can be any set of bytes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auint64&amp;lt;/code&amp;gt;&lt;br /&gt;
| Start position of this entry in the chunk, relative to the start of the chunk itself.&amp;lt;br/&amp;gt;&lt;br /&gt;
This adaptive integer only exists if bit 2 of the header byte is set.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auint64&amp;lt;/code&amp;gt;&lt;br /&gt;
| Size of this entry in the chunk (in bytes).&amp;lt;br/&amp;gt;&lt;br /&gt;
This adaptive integer only exists if bit 3 of the header byte is set, and bit 1 of the flag byte is &#039;&#039;&#039;not&#039;&#039;&#039; set (or if there is no flag byte).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Length of this entry&#039;s description (in characters).&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;This adaptive integer only exists if bit 7 of the header byte is set.&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;char[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Description of the entry. If bit 6 of the header byte is set, the string uses a fixed 16-bit encoding (e.g. [[Wikipedia:Universal_Coded_Character_Set|UCS-2]]) instead of a fixed 8-bit encoding (e.g. [[Wikipedia:ISO/IEC_8859-1|ISO-8859-1]] / [[Wikipedia:Windows-1252|Windows-1252]]).&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;This string only exists if bit 7 of the header byte is set.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
An entire map of a chunk is made of several copies of the structure shown in the table above, each copy corresponding to one of the entries of the chunk.&lt;br /&gt;
&lt;br /&gt;
Note: The sections of a chunk&#039;s map which each correspond to an entry, do &#039;&#039;&#039;not&#039;&#039;&#039; need to be in the same order as the way the entries themselves are stored in the chunk, &#039;&#039;&#039;as long as the chunk specifies starting positions and sizes of entries in the map&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 228 Chunks in MPTM Files ==&lt;br /&gt;
&lt;br /&gt;
Reading the previous sections of this document is absolutely necessary to understand the rest of this document!&lt;br /&gt;
&lt;br /&gt;
The last four bytes of a valid MPTM file should contain an unsigned 32-bit integer that points to a 228 chunk with an ID of &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt;, which contains all the settings for MPTM features (like custom tunings) in its entries. OpenMPT writes this chunk after the OpenMPT song extensions, and before the last four bytes of the file that specify its position.&lt;br /&gt;
&lt;br /&gt;
=== Default Chunk Settings ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ALL chunks&#039;&#039;&#039; (and their &amp;quot;sub-chunks&amp;quot;, a.k.a. the entries that are chunks themselves) that are &#039;&#039;&#039;written by the current version of OpenMPT&#039;&#039;&#039; have a header byte of &amp;lt;code&amp;gt;00011111&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;0x1F&amp;lt;/code&amp;gt;), an additional header data size of 2 (byte &amp;lt;code&amp;gt;00001000&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;0x08&amp;lt;/code&amp;gt;)), a flag byte of &amp;lt;code&amp;gt;00000001&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;) and a &amp;quot;custom entry ID length&amp;quot; byte of &amp;lt;code&amp;gt;00000001&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;0x01&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
This means that all chunks written by the current version of OpenMPT:&lt;br /&gt;
* Have a map.&lt;br /&gt;
* Have variable ID lengths for their entries, so they have to be stored in the map.&lt;br /&gt;
* Store the starting position of their entries in their maps.&lt;br /&gt;
* Store the size of their entries in their maps.&lt;br /&gt;
* Store the numeric form of their version number in their headers.&lt;br /&gt;
* Do &#039;&#039;&#039;not&#039;&#039;&#039; store a string form of their version number in their headers.&lt;br /&gt;
* Do &#039;&#039;&#039;not&#039;&#039;&#039; store a timestamp in their headers.&lt;br /&gt;
* Do &#039;&#039;&#039;not&#039;&#039;&#039; store descriptions about themselves in their headers.&lt;br /&gt;
* Do &#039;&#039;&#039;not&#039;&#039;&#039; store descriptions about their entries in their maps.&lt;br /&gt;
* Do &#039;&#039;&#039;not&#039;&#039;&#039; have fixed sizes for their entries.&lt;br /&gt;
&lt;br /&gt;
However, OpenMPT &#039;&#039;&#039;does&#039;&#039;&#039; know how to properly read any chunks that were written by older versions of OpenMPT or by modifying a file using some external program, even if the chunks do &#039;&#039;&#039;not&#039;&#039;&#039; have the properties described above, &#039;&#039;&#039;as long as the structure of the chunks are written &amp;quot;correctly&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Files made with really old versions of OpenMPT, especially earlier versions of 1.17, may have differences in their header bytes and flag bytes compared to recent versions, but the chunk structure is always correct.&lt;br /&gt;
&lt;br /&gt;
Additionally, new chunks and entries have been added to many versions, such as the Custom Tuning UTF-8 entry, which specifies that the names of custom tunings are encoded in UTF-8. Files with custom tunings that have been made with OpenMPT 1.29.00.40 or older will not have that entry, causing newer versions of OpenMPT to correctly read the names in the 8-bit Windows codepage.&lt;br /&gt;
&lt;br /&gt;
=== Main Chunk ===&lt;br /&gt;
&lt;br /&gt;
As of OpenMPT 1.17.03.01 r323, the &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk&#039;s version number is the same integer stored in the &amp;lt;code&amp;gt;VWSL&amp;lt;/code&amp;gt; value in the OpenMPT song extensions (e.g., 1.29.14.01 would be 0x01291401). Before r323, the chunk&#039;s version number was 1.&lt;br /&gt;
&lt;br /&gt;
=== Custom Tunings ===&lt;br /&gt;
&lt;br /&gt;
This section documents how custom tunings are stored in MPTM files made with OpenMPT 1.17.02.48 r192 and newer (&amp;lt;code&amp;gt;cwtv&amp;lt;/code&amp;gt; &amp;amp;ge; 0x088D). In older versions, custom tunings are the only MPTM feature, and they do not use 228 chunks. The old format is documented in [[Development:_OpenMPT_Format_Extensions#Custom_Tunings_(old)|OpenMPT Format Extensions &amp;amp;sect; Custom Tunings (old)]].&lt;br /&gt;
&lt;br /&gt;
Entries containing custom tunings are stored in the &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk, and only if the song has (or uses) any custom tunings (the default IT tuning does not count).&lt;br /&gt;
&lt;br /&gt;
==== UTF-8 Text Encoding Indicator ====&lt;br /&gt;
&lt;br /&gt;
This entry is a single byte with an entry ID of &amp;lt;code&amp;gt;UTF8Tuning&amp;lt;/code&amp;gt;, stored as one of the entries of the base &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk. It determines the global text encoding of the names of the tunings (and their note names). However, the tuning collection and each tuning can have their own text encoding indicator that overrides this one.&lt;br /&gt;
&lt;br /&gt;
* If this entry exists and its byte value is not 0: UTF-8.&lt;br /&gt;
* If this entry does not exist or its byte value is 0: Windows codepage.&lt;br /&gt;
&lt;br /&gt;
Currently, OpenMPT always writes this entry with a value of 1 (UTF-8). It will be written if there are any custom tunings, even if no instruments use them.&lt;br /&gt;
&lt;br /&gt;
==== Tuning Collection ====&lt;br /&gt;
&lt;br /&gt;
Tuning collections are chunks that contain custom tunings. They can exist separately in .TC files and can be imported into MPTM files using the [[Manual:_Tuning_Properties|Tuning Properties]] dialog.&lt;br /&gt;
&lt;br /&gt;
In MPTM files, there is only one tuning collection called the &amp;quot;Tune-specific&amp;quot; tuning collection. For MPTM files made with OpenMPT versions older than 1.27.00.55, although there are &amp;quot;local tunings&amp;quot; and &amp;quot;built-in tunings&amp;quot; (which are now discontinued) besides the &amp;quot;tune-specific&amp;quot; ones, they are &#039;&#039;&#039;not&#039;&#039;&#039; stored in the MPTM files themselves.&lt;br /&gt;
&lt;br /&gt;
In MPTM files, the &amp;quot;tune-specific tunings&amp;quot; collection is stored as an entry of the base &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk.&lt;br /&gt;
&lt;br /&gt;
* The entry ID of the &amp;quot;tune-specific tunings&amp;quot; collection chunk in MPTM files, which is stored in the map of the &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk, is &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The chunk ID of any tuning collection chunk (regardless of the collection type, or whether it is stored in an MPTM or TC file), which is stored in its own header, is &amp;lt;code&amp;gt;TC&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The chunk&#039;s version number is 3.&lt;br /&gt;
&lt;br /&gt;
These are the entries stored in a tuning collection (&amp;lt;code&amp;gt;TC&amp;lt;/code&amp;gt;) chunk:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Entry ID&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;UTF8&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8&amp;lt;/code&amp;gt;&lt;br /&gt;
| The text encoding of this collection&#039;s name, and the name of its tunings.&lt;br /&gt;
* If this entry exists and its byte value is not 0: UTF-8 (override global encoding).&lt;br /&gt;
* If this entry does not exist or its byte value is 0: Inherit encoding from global encoding.&lt;br /&gt;
The current version of OpenMPT always writes this entry with a value of 1 (UTF-8).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt;&lt;br /&gt;
| The collection&#039;s name.&amp;lt;br/&amp;gt;&lt;br /&gt;
In TC files, the name would be the same as what it was when the TC file was exported in OpenMPT.&amp;lt;br/&amp;gt;&lt;br /&gt;
In MPTM files, the only stored tuning collection is the Tune-specific tunings, and its name is &amp;lt;code&amp;gt;Tune specific tunings&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;The collection&#039;s edit mask. This value was used to specify which settings of the collection can be changed, but it is no longer used.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Currently, OpenMPT always writes this entry with a value of 0xFFFF (allow editing everything).&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In addition to the three entries listed above, the rest of the entries are all chunks, where each one is a custom tuning. They all have an entry ID of &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Tuning ====&lt;br /&gt;
&lt;br /&gt;
For each custom tuning:&lt;br /&gt;
* Its entry ID, which is stored in the map of the &amp;lt;code&amp;gt;TC&amp;lt;/code&amp;gt; chunk, is &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Its chunk ID, which is stored in its own header, is &amp;lt;code&amp;gt;CTB244RTI&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The chunk&#039;s version number is 67108868 (&amp;lt;code&amp;gt;0x04000004&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
These custom tuning chunks can also exist separately in .TUN files, and can be exported from / imported to MPTM files using the [[Manual:_Tuning_Properties|Tuning Properties]] dialog.&lt;br /&gt;
&lt;br /&gt;
These are the entries stored in a custom tuning (&amp;lt;code&amp;gt;CTB244RTI&amp;lt;/code&amp;gt;) chunk:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Entry ID&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;UTF8&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8&amp;lt;/code&amp;gt;&lt;br /&gt;
| The text encoding of the tuning&#039;s name.&lt;br /&gt;
* If this entry exists and its value is not 0: UTF-8 (override collection&#039;s encoding).&lt;br /&gt;
* If this entry does not exist or its value is 0: Inherit encoding from collection&#039;s encoding.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt;&lt;br /&gt;
| The custom tuning&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;The tuning&#039;s edit mask. This value was used to specify which settings of the tuning can be changed, but it is no longer used.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Currently, OpenMPT always writes this entry with a value of 0xFFFF (allow editing everything).&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| Tuning type.&lt;br /&gt;
* 0 = General&lt;br /&gt;
* 1 = Group-geometric&lt;br /&gt;
* 3 = Geometric&lt;br /&gt;
Any other value will result in OpenMPT failing to load the custom tuning data.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&lt;br /&gt;
| (custom structure)&lt;br /&gt;
| Note names (see [[#Tuning_Note_Name_Structure|the Tuning Note Name Structure]]).&amp;lt;br/&amp;gt;&lt;br /&gt;
If this entry does not exist, OpenMPT will use the &amp;quot;default&amp;quot; note names (the predefined note names when creating a new tuning in OpenMPT).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint32&amp;lt;/code&amp;gt;&lt;br /&gt;
| Finetune steps.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RTI0&amp;lt;/code&amp;gt;&lt;br /&gt;
| (custom structure)&lt;br /&gt;
| Ratio table (see [[#Tuning_Ratio_Table_Structure|the Ratio Table Structure]]).&lt;br /&gt;
* For General tunings, the ratio table stores the ratios for all notes.&lt;br /&gt;
* For Group-geometric tunings, the ratio table stores the ratios for only the first (lowest pitch) group.&lt;br /&gt;
OpenMPT only writes this entry if the tuning type is General or Group-geometric.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RTI1&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;int16&amp;lt;/code&amp;gt;&lt;br /&gt;
| First note index.&amp;lt;br/&amp;gt;&lt;br /&gt;
OpenMPT writes this entry for all types of tunings, and usually with a value of -64.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RTI2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| Group size.&amp;lt;br/&amp;gt;&lt;br /&gt;
OpenMPT only writes this entry if the tuning type is Geometric.&amp;lt;br/&amp;gt;&lt;br /&gt;
(For group-geometric tunings, the group size is equal to the size of the ratio table.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RTI3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;float32&amp;lt;/code&amp;gt;&lt;br /&gt;
| Group ratio.&amp;lt;br/&amp;gt;&lt;br /&gt;
OpenMPT only writes this entry if the group ratio is greater than 0 and if the tuning type is Geometric or Group-geometric.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RTI4&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| Number of ratios in the ratio table.&amp;lt;br/&amp;gt;&lt;br /&gt;
OpenMPT only writes this entry if the tuning type is Geometric or Group-geomtric, with a value of 128 for Geometric tunings, and the group size for Group-geometric tunings.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Tuning Note Name Structure =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auint64&amp;lt;/code&amp;gt;&lt;br /&gt;
| Number of note names.&amp;lt;br/&amp;gt;&lt;br /&gt;
OpenMPT uses the same number as the group size for Geometric and Group-geometric tunings, and 128 for General tunings.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the adaptive integer above, there are multiple note names that specify the names of notes in the entire table of notes (in Generic tunings) or only the notes of a single group (in Geometric and Group-geometric tunings).&lt;br /&gt;
&lt;br /&gt;
This is the structure of a single note name:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;int16&amp;lt;/code&amp;gt;&lt;br /&gt;
| Note index. A zero-based index specifying which note this name corresponds to (0=first note, 1=second note, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8&amp;lt;/code&amp;gt;&lt;br /&gt;
| Length of the note name (&#039;&#039;&#039;in bytes, not characters&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;char[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| Note name. The text encoding is inherited from the custom tuning&#039;s text encoding entry.&amp;lt;br/&amp;gt;&lt;br /&gt;
OpenMPT will stop reading the name if a &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt; byte (null character) is present anywhere in the name.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The structure above is repeated for every note (or every note &#039;&#039;&#039;in the group&#039;&#039;&#039; if the tuning is Geometric or Group-geometric) that has a custom name.&lt;br /&gt;
&lt;br /&gt;
Note: In Geometric and Group-geometric tunings, the group numbers / octave numbers are &#039;&#039;&#039;not&#039;&#039;&#039; a part of the note names.&lt;br /&gt;
&lt;br /&gt;
===== Tuning Ratio Table Structure =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auint64&amp;lt;/code&amp;gt;&lt;br /&gt;
| Number of ratios in the ratio table.&amp;lt;/br&amp;gt;&lt;br /&gt;
OpenMPT writes the same number as the group size for Group-geometric tunings, and 128 for General tunings.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;float32[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ratios.&amp;lt;br/&amp;gt;&lt;br /&gt;
For Group-geometric tunings, only the ratios of the first (lowest pitch) group are stored.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Tuning Map ====&lt;br /&gt;
&lt;br /&gt;
(Not to be confused with &amp;quot;maps&amp;quot; of chunks!)&lt;br /&gt;
&lt;br /&gt;
The tuning map is one of the entries of the base &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk. It is a structure that stores what tuning each instrument should use. Its entry ID, stored in the map of the &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk, is &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In a file made using OpenMPT 1.27.00.55 or older, local and built-in tunings are also specified in the tuning map, even though they are not written to the tuning collection chunk. If the file is loaded in newer versions, they will be converted to tune-specific ones and will then be stored in the MPTM file&#039;s tune-specific tuning collection chunk.&lt;br /&gt;
&lt;br /&gt;
The first item in the structure is a &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;, containing the number of tunings that are used by instruments, including the default IT tuning and non-tune-specific tunings:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| Number of tunings that are used by instruments, including non-tune-specific tunings.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Following the number of tunings, there are mappings that map each tuning to an index number. This is the structure of a single tuning-to-index mapping:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8&amp;lt;/code&amp;gt;&lt;br /&gt;
| Length of the tuning&#039;s name (&#039;&#039;&#039;in bytes, not characters&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;char[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| The tuning&#039;s name.&lt;br /&gt;
* The name of the default IT tuning (called &amp;lt;code&amp;gt;OpenMPT IT behaviour&amp;lt;/code&amp;gt; in OpenMPT), is written as &amp;lt;code&amp;gt;-&amp;gt;MPT_ORIGINAL_IT&amp;lt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In files made with OpenMPT 1.27.00.55 or older, the names of the built-in tunings are written as &amp;lt;code&amp;gt;12TET&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;12TET &amp;lt;nowiki&amp;gt;[[fs15 1.17.02.49]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
OpenMPT will stop reading the name if a &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt; byte (null character) is present anywhere in the name.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| The index that this tuning is mapped to.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The structure shown in the table above is repeated for every tuning.&lt;br /&gt;
&lt;br /&gt;
Finally, there is an array of &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;s, each one corresponding to an instrument of the song, where the value of each one is the index that is mapped to the tuning that the corresponding instrument should use.&lt;br /&gt;
&lt;br /&gt;
Note: Due to the way the tunings are located when a file is loaded, if there are multiple tunings with the same name, some instruments might be loaded with the wrong tunings.&lt;br /&gt;
&lt;br /&gt;
=== Extended Pattern Data ===&lt;br /&gt;
&lt;br /&gt;
Extended pattern data is used to store data for patterns that use features exclusive to the MPTM format: Pattern-specific time signature overrides and Parameter Control notes.&lt;br /&gt;
&lt;br /&gt;
All extended pattern data is stored in a &amp;quot;pattern collection&amp;quot; chunk.&lt;br /&gt;
&lt;br /&gt;
==== Extended Pattern Collection ====&lt;br /&gt;
&lt;br /&gt;
The pattern collection (or &amp;quot;pattern container&amp;quot; according to the source code) is a chunk, stored as one of the entries of the base &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk. It contains extended pattern data.&lt;br /&gt;
* Its entry ID, which is stored in the map of the &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk, is &amp;lt;code&amp;gt;mptPc&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Its chunk ID, which is stored in its own header, is also &amp;lt;code&amp;gt;mptPc&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The chunk&#039;s version number is the same integer stored in the &amp;lt;code&amp;gt;VWSL&amp;lt;/code&amp;gt; value in the OpenMPT song extensions (e.g., 1.29.14.01 would be 0x01291401).&lt;br /&gt;
&lt;br /&gt;
The entries stored in the &amp;lt;code&amp;gt;mptPc&amp;lt;/code&amp;gt; chunk consist of &amp;quot;extended pattern&amp;quot; chunks, and a &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt; with an entry ID of &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt; which specifies how many patterns will have their extended data read when loading the file. Its recommended value is the number of patterns in the song, but the song will still be loaded correctly if the number is at least bigger than the last pattern number that uses extended data.&lt;br /&gt;
&lt;br /&gt;
If any pattern has extended data, OpenMPT writes the extended data for all patterns (not just the required ones), followed by the &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt; entry containing the number of patterns in the song.&lt;br /&gt;
&lt;br /&gt;
==== Extended Pattern ====&lt;br /&gt;
&lt;br /&gt;
For each pattern:&lt;br /&gt;
* Its entry ID, which is stored in the map of the &amp;lt;code&amp;gt;mptPc&amp;lt;/code&amp;gt; chunk, is not readable as a string, but instead, is a little-endian 16-bit unsigned integer, specifying its pattern number (pattern 0 = 0x0000, pattern 1 = 0x0001, and so on).&lt;br /&gt;
* Its chunk ID, which is stored in its own header, is &amp;lt;code&amp;gt;mptP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The chunk&#039;s version number is the same integer stored in the &amp;lt;code&amp;gt;VWSL&amp;lt;/code&amp;gt; value in the OpenMPT song extensions (e.g., 1.29.14.01 would be 0x01291401).&lt;br /&gt;
&lt;br /&gt;
These are the entries stored in an &amp;lt;code&amp;gt;mptP&amp;lt;/code&amp;gt; chunk:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Entry ID&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt;&lt;br /&gt;
| (custom structure)&lt;br /&gt;
| The extended pattern data, which will be merged onto the IT pattern data when the file is read.&amp;lt;br/&amp;gt;&lt;br /&gt;
Technically, it can be used for storing any pattern data, but OpenMPT uses it for storing only the Parameter Control notes of each pattern.&amp;lt;/br&amp;gt;&lt;br /&gt;
The data is stored in the same format as the [https://github.com/schismtracker/schismtracker/wiki/ITTECH.TXT#impulse-pattern-format IT pattern format], but without the first 8 bytes, and with a different format for mask bytes:&amp;lt;br/&amp;gt;&lt;br /&gt;
* Bit 0: Include note (PC: &amp;lt;code&amp;gt;0xFC&amp;lt;/code&amp;gt;, PCs: &amp;lt;code&amp;gt;0xFB&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Bit 1: Include plugin number&lt;br /&gt;
* Bit 2: Include high byte of controller ID&lt;br /&gt;
* Bit 3: Include low byte of controller ID&lt;br /&gt;
* Bit 4: Include high byte of parameter&lt;br /&gt;
* Bit 5: Include low byte of parameter&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;Bit 6: Include extra data&amp;lt;/span&amp;gt;&lt;br /&gt;
The bytes after the mask byte (specifically the ones that need to be written) are written in the same order shown in the list above.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00aa00;&amp;quot;&amp;gt;The extra data (enabled via bit 6 of the mask byte) consists of an 8-bit unsigned integer specifying the size, followed by a set of bytes of that size. It is ignored by OpenMPT.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Any data that is specified by the mask byte to &#039;&#039;&#039;not&#039;&#039;&#039; be included will have the same data as the previous PC/PCs note in the channel.&amp;lt;br/&amp;gt;&lt;br /&gt;
OpenMPT writes this entry for all patterns, even if they do not contain PC/PCs notes.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;COL&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint32&amp;lt;/code&amp;gt;&lt;br /&gt;
| The color assigned to the pattern. Format is [R, G, B, 0], or [x, x, x, non-zero] for a pattern with no color&amp;lt;br/&amp;gt;OpeMPT only writes this entry for patterns that have a color assigned.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RPB.&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint32&amp;lt;/code&amp;gt;&lt;br /&gt;
| Custom &amp;quot;rows per beat&amp;quot; value for this pattern.&amp;lt;br/&amp;gt;&lt;br /&gt;
OpenMPT only writes this entry for patterns that use a custom time signature.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RPM.&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint32&amp;lt;/code&amp;gt;&lt;br /&gt;
| Custom &amp;quot;rows per measure&amp;quot; value for this pattern.&amp;lt;br/&amp;gt;&lt;br /&gt;
OpenMPT only writes this entry for patterns that use a custom time signature.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SWNG&amp;lt;/code&amp;gt;&lt;br /&gt;
| (custom structure)&lt;br /&gt;
| Custom tempo swing for this pattern.&amp;lt;br/&amp;gt;&lt;br /&gt;
Stored in the same format as the &amp;lt;code&amp;gt;SWNG&amp;lt;/code&amp;gt; value in the OpenMPT song extensions.&amp;lt;br/&amp;gt;&lt;br /&gt;
OpenMPT only writes this entry for patterns that use a custom tempo swing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sequences ===&lt;br /&gt;
&lt;br /&gt;
Currently, the main way sequences are stored is a &amp;quot;sequence collection&amp;quot; chunk, but there is also an older format that was used when an MPTM file could only have one sequence, which is still used by OpenMPT to make the file somewhat compatible with those old versions.&lt;br /&gt;
Here is a history of how order lists were stored throughout different versions:&lt;br /&gt;
* 2006-08-20: OpenMPT 1.17.02.45, r166 (MPTM format introduced)&lt;br /&gt;
** Only one sequence, order list stored at 0x00C0 (exactly like Impulse Tracker).&lt;br /&gt;
* 2006-10-02: OpenMPT 1.17.02.45, r168&lt;br /&gt;
** &amp;lt;code&amp;gt;cwtv&amp;lt;/code&amp;gt; changed from 0x088A to 0x088B.&lt;br /&gt;
** The order list stored at 0x00C0 now uses a custom structure (documented in [[Development:_OpenMPT_Format_Extensions#Order_list_(old)|OpenMPT Format Extensions &amp;amp;sect; Order list (old)]]), and uses 32-bit pattern indices instead of 8-bit, allowing patterns over 253.&lt;br /&gt;
* 2008-01-12: OpenMPT 1.17.02.49, r195&lt;br /&gt;
** &amp;lt;code&amp;gt;cwtv&amp;lt;/code&amp;gt; changed from 0x088D to 0x088E.&lt;br /&gt;
** The order list stored at 0x00C0 now stores orders like Impulse Tracker again, which is limited up to pattern 253. However, there is now an entry in the &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk that is used to store the order list if there are patterns over 253. If a file has this entry, OpenMPT will read the order list from it, and not from 0x00C0.&lt;br /&gt;
* 2009-09-16: OpenMPT 1.17.03.01, r366&lt;br /&gt;
** MPTM files can now have multiple sequences, where one of them can be the &amp;quot;default sequence&amp;quot;. All sequences are now stored in a 228 chunk called the &amp;quot;sequence collection&amp;quot; chunk. A copy of the default sequence will also be stored at 0x00C0, and the old sequence entry if there are patterns over 253. However, in these new files, OpenMPT will ignore the order list at 0x00C0 entirely. This means that if there is no sequence collection or old sequence entry, even if there is an order list at 0x00C0, OpenMPT will load the file without an order list.&lt;br /&gt;
&amp;lt;!-- todo: I might have made some mistakes in writing all of that, check if there are any mistakes --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the rest of this document, the new multi-sequence format introduced in r366 is documented first, and after that is the &amp;quot;old&amp;quot; sequence format introduced in r195 (which is still written to files if the default sequence contains patterns beyond 253).&lt;br /&gt;
&lt;br /&gt;
==== Sequence Collection (r366 and newer) ====&lt;br /&gt;
&lt;br /&gt;
The sequence collection is a chunk, stored as one of the entries of the base &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk. It contains the sequences of the MPTM file.&lt;br /&gt;
&lt;br /&gt;
* Its entry ID, which is stored in the map of the &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk, is &amp;lt;code&amp;gt;mptSeqC&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Its chunk ID, which is stored in its own header, is also &amp;lt;code&amp;gt;mptSeqC&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The chunk&#039;s version number is the same integer stored in the &amp;lt;code&amp;gt;VWSL&amp;lt;/code&amp;gt; value in the OpenMPT song extensions (e.g., 1.29.14.01 would be 0x01291401).&lt;br /&gt;
&lt;br /&gt;
These are the entries stored in the &amp;lt;code&amp;gt;mptSeqC&amp;lt;/code&amp;gt; chunk:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Entry ID&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8&amp;lt;/code&amp;gt;&lt;br /&gt;
| Number of sequences in the file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8&amp;lt;/code&amp;gt;&lt;br /&gt;
| The &amp;quot;default sequence&amp;quot; of the file.&amp;lt;br/&amp;gt;&lt;br /&gt;
Uses zero-based numbering. (0=first sequence, 1=second sequence, etc.)&amp;lt;br/&amp;gt;&lt;br /&gt;
The &amp;quot;default sequence&amp;quot; is the one that is selected (the one shown in the order list) when the file is loaded, or the last time the file was saved.&amp;lt;br/&amp;gt;&lt;br /&gt;
It is also the one that is stored in the IT order list at 0x00C0 (and the old sequence entry if it contains patterns over 253).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In addition to the two entries listed above, the rest of the entries are all chunks, each one representing a sequence. Each one has an entry ID of the corresponding sequence&#039;s number, as a byte, with 0-based numbering.&lt;br /&gt;
&lt;br /&gt;
For example, the ID of the entry corresponding to the first sequence is a 0x00 byte. If a second sequence existed, its entry ID would be 0x01, the next would be 0x02, and so on.&lt;br /&gt;
&lt;br /&gt;
Currently, OpenMPT only allows creating up to 50 (0x32 in hex) sequences, so the limit (0xFF) is never reached (at least without editing the file externally).&lt;br /&gt;
&lt;br /&gt;
==== Sequence (r366 and newer) ====&lt;br /&gt;
&lt;br /&gt;
For each sequence:&lt;br /&gt;
&lt;br /&gt;
* Its entry ID, which is stored in the map of the &amp;lt;code&amp;gt;mptSeqC&amp;lt;/code&amp;gt; chunk, is a single byte that determines which sequence it is (sequence 1 = 0x00, sequence 2 = 0x01, and so on).&lt;br /&gt;
* Its chunk ID, which is stored in its own header, is &amp;lt;code&amp;gt;mptSeq&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The chunk&#039;s version number is the same integer stored in the &amp;lt;code&amp;gt;VWSL&amp;lt;/code&amp;gt; value in the OpenMPT song extensions (e.g., 1.29.14.01 would be 0x01291401).&lt;br /&gt;
&lt;br /&gt;
These are the entries stored in an &amp;lt;code&amp;gt;mptSeq&amp;lt;/code&amp;gt; chunk:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Entry ID&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;u&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint8&amp;lt;/code&amp;gt;&lt;br /&gt;
| The text encoding of the sequence&#039;s name.&amp;lt;br/&amp;gt;&lt;br /&gt;
* If this entry exists and its value is not 0: UTF-8.&lt;br /&gt;
* If this entry does not exist or its value is 0: Windows codepage.&lt;br /&gt;
The current version of OpenMPT always writes this entry with a value of 1 (UTF-8).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&lt;br /&gt;
| (custom structure)&lt;br /&gt;
| Sequence name.&amp;lt;br/&amp;gt;&lt;br /&gt;
Contains the length of the name (&#039;&#039;&#039;in bytes, not characters&#039;&#039;&#039;), followed by the name.&amp;lt;br/&amp;gt;&lt;br /&gt;
The length is stored similarly to a 32-bit adaptive integer, except that the two bits that specify the size of the adaptive integer are bits 2 and 3 instead of 0 and 1, and bits 0 and 1 are unused.&lt;br /&gt;
Depending on bits 2 and 3, the remaining 4, 12, 20, or 28 bits store the integer, which in this case, is the length of the name (in bytes).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| Length of the sequence (in orders).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint16[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| The sequence&#039;s order list. Each order has the pattern number associated with it stored as a &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
For special (&amp;quot;non-pattern&amp;quot;) orders:&lt;br /&gt;
* &amp;lt;code&amp;gt;+++&amp;lt;/code&amp;gt; (separator) orders are stored as 0xFFFE.&lt;br /&gt;
* &amp;lt;code&amp;gt;---&amp;lt;/code&amp;gt; (end of song) orders are stored as 0xFFFF.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| Restart position. OpenMPT only writes this entry if the sequence&#039;s restart position is not 0.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint32&amp;lt;/code&amp;gt;&lt;br /&gt;
| Default tempo. This is a fixed-point number with 4 digits of fractional precision, i.e. divide the value by 10.000 to get the real tempo.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uint32&amp;lt;/code&amp;gt;&lt;br /&gt;
| Default speed (ticks per row).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;Old&amp;quot; Sequence (r195 and newer) ====&lt;br /&gt;
&lt;br /&gt;
The old r195 sequence, which is used to store the default sequence if it has orders corresponding to patterns over 253, is a simple structure stored as one of the entries of the base &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk. Its entry ID, which is stored in the map of the &amp;lt;code&amp;gt;mptm&amp;lt;/code&amp;gt; chunk, is &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The structure of this entry is as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Datatype&lt;br /&gt;
! Content&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;&lt;br /&gt;
| Length of the sequence (in orders).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;uint16[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| The order list. Each order has the pattern number associated with it stored as a &amp;lt;code&amp;gt;uint16&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
For special (&amp;quot;non-pattern&amp;quot;) orders:&lt;br /&gt;
* &amp;lt;code&amp;gt;+++&amp;lt;/code&amp;gt; (separator) orders are stored as 0xFFFE.&lt;br /&gt;
* &amp;lt;code&amp;gt;---&amp;lt;/code&amp;gt; (end of song) orders are stored as 0xFFFF.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Development|228 Extensions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
- cs127&lt;br /&gt;
first version completed: 2022-02-28&lt;br /&gt;
last edit:               2023-02-28&lt;br /&gt;
&lt;br /&gt;
1 year!&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&amp;diff=4975</id>
		<title>Development: Test Cases/IT</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&amp;diff=4975"/>
		<updated>2025-08-31T15:16:36Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: S7B_StillAppliesFilter.it&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Testsuite Introduction|format=IT|tracker=Impulse Tracker}}&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Autovibrato-Reset.it|pass=???}}&lt;br /&gt;
The autovibrato sweep is not reset when using portamento.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Bidi-Loops.it|pass=793}}&lt;br /&gt;
In Impulse Tracker’s software mixer, ping-pong loops are shortened by one sample. This does not happen with the GUS hardware driver, but I assume that the software drivers were more popular due to the limitations of the GUS, so OpenMPT emulates this behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=BidiPrecision.it|pass=15871}}&lt;br /&gt;
An extension to [[#Bidi-Loops.it|Bidi-Loops.it]], this test verifies that the loop length of ping-pong loops is precise. The test is not required to stay absolutely silent, but the two channels may not phase, i.e. the sound should be a static buzz.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=CarryNNA.it|pass=1503 + 22849}}&lt;br /&gt;
This is a very interesting test case, because it actually sounds different when using Impulse Tracker’s WAV writer and Sound Blaster (and probably other drivers) output (the Sound Blaster 16 MMX driver also follows the behaviour of the WAV writer, to make things even more confusing).&lt;br /&gt;
The main difference is that the Sound Blaster driver will only consider the envelope carry flag if the New Note Action is not “Note Cut”. The WAV writer does not check for the NNA and will always apply the carry flag if it’s set. OpenMPT goes after the WAV writer, while e.g. XMPlay used the Sound Blaster behaviour for the volume and panning envelope, but the WAV writer’s behaviour for the filter envelope (because of a bug report some years ago) up until 2016. Obviously it is hard to consider which of the two behaviours is correct, so I would just say that both are. :) However, the WAV writer behaviour definitely is more useful (not being able to use Envelope Carry despite it being enabled is quite misleading), I strongly encourage everyone to implement this behaviour.&lt;br /&gt;
&lt;br /&gt;
The reason for the difference is most likely that the non-MMX Sound Blaster driver does not volume-ramp cut notes, while the MMX driver and WAV writer do. The volume ramping requires a NNA channel to be set up, which is a precondition for the envelope carry code to work.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=cut-carry.it|pass=1165}}&lt;br /&gt;
Envelopes that have the carry flag set cannot be “picked up” / continued after the note has been cut.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=dct_smp_note_test.it|pass=12819}}&lt;br /&gt;
Instrument Duplicate Check Type “Sample” should only be carried out if the old and new instrument match (like all other check types).&amp;lt;br&amp;gt;&lt;br /&gt;
Instrument Duplicate Check Type “Note” should compare the old and new pattern note, not translated notes according to the instrument’s mapping.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=DNA-NoInstr.it|pass=6311}}&lt;br /&gt;
OpenMPT previously did not properly check for the correct sample slot or sample map entry in DNA and NNA checks if no instrument number was provided. This testcase should remain silent when played correctly, i.e. both the first and second note on channel 1 should sound until the end of the pattern.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=DoubleSlide.it|pass=21807}}&lt;br /&gt;
Impulse Tracker generally initializes effect parameters, effect working memory and similar stuff once per row, before the effects actually run. When using (tone) portamento commands simulatenously in the effect column and volume column, this can lead to surprising results, and in order to emulate them correctly, it is crucial to implement the effect memory initialization in the exact same order as Impulse Tracker does:&lt;br /&gt;
&lt;br /&gt;
# Evaluate effect column Gxx parameter&lt;br /&gt;
# Evaluate volume column gx parameter&lt;br /&gt;
# Evaluate volume column ex / fx parameter&lt;br /&gt;
# Evaluate effect column Exx / Fxx parameter&lt;br /&gt;
&lt;br /&gt;
If played correctly, The left and right channel of this module should sound identical. The last few rows should stay silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=DoubleSlideCompatGxx.it|pass=21807}}&lt;br /&gt;
A variation of of [[#DoubleSlide.it|DoubleSlide.it]] with the Compatible Gxx flag turned on. The same rules as above apply, but since portamento up / down and tone portamento memory is not linked, there are some natural differences in handling.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=empty_sample_offset.it|pass=6343}}&lt;br /&gt;
In instrument mode, if an offset effect is found next to a note that maps to an invalid sample slot, the offset and illegal note should be ignored completely. Note that this behaviour is different from sample mode, where a previously playing sample will be stopped.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=emptyslot.it|pass=1671}}&lt;br /&gt;
I think, Impulse Tracker treats instruments like an additional layer of abstraction and first replaces the note and instrument in the pattern by the sample and note assignments from the sample map table before further evaluating the pattern. That would explain why for example the empty sample map slots do nothing in this module.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=env-flt-max.it|pass=1090 (?)}}&lt;br /&gt;
If resonance is not applied, the filter envelope’s maximum value does not &#039;&#039;enable&#039;&#039; any filtering. However, it also does not &#039;&#039;disable&#039;&#039; any filtering when returning from a non-maximum point. This pretty much works like Zxx commands.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=EnvLoopEscape.it|pass=4009}}&lt;br /&gt;
I created [[#EnvOffLength.it|EnvOffLength.it]] without realizing that it is essentially the same bug as this one.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=EnvLoops.it|pass=1213}}&lt;br /&gt;
In this test, all possible combinations of the envelope sustain point and envelope loops are tested, and you can see their behaviour on note-off.&lt;br /&gt;
If the sustain point is at the loop end and the sustain loop has been released, don&#039;t loop anymore.&lt;br /&gt;
Probably the most important thing for this test is that in Impulse Tracker (and Fasttracker 2), envelope position is incremented before the point is evaluated, not afterwards, so when no ticks have been processed yet, the envelope position should be invalid.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=EnvOffLength.it|pass=4009}}&lt;br /&gt;
If an envelope sustain loop happens to end on exactly the same tick as a note-off event occurs, the envelope is not yet released. It will be released whenever the loop end is being hit again.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=EnvReset.it|pass=1481}}&lt;br /&gt;
Impulse Tracker resets envelopes under some more or less weird conditions. This tests some of them.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=extreme-filter-test-1.it|pass=1090}}&lt;br /&gt;
If resonant filters are rendered with integer arithmetic, they may produce scratching noises in some edge cases. You should not hear any scratches or other weird noises when playing this example.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=extreme-filter-test-2.it|pass=1090}}&lt;br /&gt;
Same as the above test case. xmp breaks this module’s output even more than older versions of OpenMPT.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Fade-Porta.it|pass=1144}}&lt;br /&gt;
After a note has been stopped in some way (for example through fade-out or note cut), tone portamento effects on the following note are ignored, i.e. there is no portamento from the stopped note to the new note.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-7F.it|pass=1090 (?)}}&lt;br /&gt;
A small test case that demonstrates that full cutoff should not enable the filter if no resonance is applied. Resonance is only ever applied if the cutoff is not full or the resonance is not zero.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FilterEnvReset.it|pass=1132}}&lt;br /&gt;
A cutoff value of 0 should not be reset to full cutoff when triggering a note just because the filter envelope is enabled. This bug is probably very specific to OpenMPT, because it gets rid of some unneccessary code.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FilterPortaSmpChange.it|pass=18417}}&lt;br /&gt;
Normally Impulse Tracker does not disable the filter on portamento if cutoff was previously at 127 and resonance at 0, but in sample mode that is not the case when the new note plays a different sample.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FilterPortaSmpChange-InsMode.it|pass=?}}&lt;br /&gt;
Complementary test for [[#FilterPortaSmpChange.it|FilterPortaSmpChange.it]] in instrument mode. Here the cutoff should never be reset on portamento.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-nna.it|pass=1169}}&lt;br /&gt;
This test is just there to be sure that the filter-reset.it and filter-reset-carry.it test cases do not break NNA background channels.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-reset.it|pass=1165}}&lt;br /&gt;
As mentioned already, filtering is only ever done in IT if either cutoff is not full or if resonance is set. When a Z7F command is found next to a note and no portamento is applied, it &#039;&#039;disables&#039;&#039; the filter, however in other cases this should not happen.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-reset-carry.it|pass=1165}}&lt;br /&gt;
I think this is also just an extenion to the previous test case, to make sure that it does not break anything else.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-reset-envelope.it|pass=16016}}&lt;br /&gt;
This test checks that the filter is reset correctly for delayed filtered notes, and also acts as a regression test for [[#filter-reset.it|filter-reset.it]], because the first implementation for this test broke the other test. The output should stay silent (small pops are okay).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FilterResetPatDelay.it|pass=16137}}&lt;br /&gt;
An extension of [[#filter-reset-envelope.it|filter-reset-envelope.it]], this verifies the filter reset behaviour on rows with a Pattern Delay. The filter reset logic should only be applied on rows that are actually retriggering the note: If there is no note delay, the note is retriggered only on the first tick. If there is a note delay, the note is retriggered on every repetition of that row (see [[#PatternDelay-NoteDelay.it|PatternDelay-NoteDelay.it]]).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FineVolColSlide.it|pass=2400}}&lt;br /&gt;
Unlike fine volume slides in the effect column, fine volume slides in the volume column are only ever executed on the first tick — not on multiples of the first tick if there is a pattern delay. Thus, the left and right channel of this example should always have the same volume.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=flt-env-carry.it|pass=693 (?)}}&lt;br /&gt;
Envelope carry on the filter envelope. I think this is just a general test on how envelope carry is applied. It is possible that Impulse Tracker’s MMX drivers will play this in a different way from the WAV writer.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=fltmacro.it|pass=???}}&lt;br /&gt;
This test uses a custom macro configuration that uses the instrument volume to control the filter cutoff. A correctly implemented MIDI Macro system should pass this test.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=freqreset-noins.it|pass=325}}&lt;br /&gt;
When using multisample instruments, even notes with no instrument number next to them can change the sample (based on the active instrument’s sample map). When switching between samples, you must not forget to update the C-5 frequency of the playing sample as well.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=GlobalVolFirstTick.it|pass=6362}}&lt;br /&gt;
Set Global Volume (Vxx) should be applied on the first tick (and multiples in case of pattern delays). If played correctly, the first and second row of this module should sound more or less identical, i.e. each row should play 16 fading notes.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=globalvol-invalid.it|pass=290}}&lt;br /&gt;
Out-of-range global volume commands (V81...VFF) should not change the current global volume. This test module should remain completely silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=GlobalVolume-Macro.it}}&lt;br /&gt;
Global volume, channel volume and various other parameters are taken into account when interpreting the &#039;u&#039; and &#039;v&#039; letters in MIDI macros. However, this feature seems to be quirky, and I have decided not to support these quirks in OpenMPT, as I do not think that anyone used this feature in Impulse Tracker very much and I would want it to work in a sane way when using it to control instrument plugins in OpenMPT. The quirks are:&lt;br /&gt;
* Channel and global volume seem to be applied one row after they have been set. This does not seem to be the whole truth, though, as looking at pattern 0, row 9, you should hear that IT applies the M40 channel volume change on row 10.&lt;br /&gt;
* Instrument / sample volume also seems to be applied one row late when using the &#039;u&#039; macro, but not the &#039;v&#039; macro (compare first and second pattern, row 15 - 22 each).&lt;br /&gt;
There are also some problems with volume swing which might be fixed later.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=gxsmp.it|pass=1671}}&lt;br /&gt;
Another test case with an empty sample map slot which is simply ignored by Impulse Tracker.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=gxsmp2.it|pass=1671}}&lt;br /&gt;
Going one step further by also changing the sample next to that portamento.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=gxxtest.it|pass=4330}}&lt;br /&gt;
And another similar test.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=InitialNoteMemory.it|pass=18838}}&lt;br /&gt;
The initial &amp;quot;last note&amp;quot; memory of each channel in Impulse Tracker is initialized to C-0. So the first lone instrument number without any note next to it will play a C-0 of that instrument.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=InitialNoteMemoryInstrMode.it|pass=18838}}&lt;br /&gt;
A variation of [[#InitialNoteMemory.it|InitialNoteMemory.it]], but in instrument mode. The lowest note of instrument 1 has no sample association, which will also cause subsequent notes without instrument number to not play.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-flt-porta-reset.it|pass=???}}&lt;br /&gt;
Instrument filter settings should not be applied if there is a portamento effect.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-oc.it|pass=11293 + 22849}}&lt;br /&gt;
Instrument number resets envelope behaviour test with Old Effects enabled, Compatible Gxx enabled: Always reset envelopes.&lt;br /&gt;
&lt;br /&gt;
Note: Some output drivers play the instruments with Envelope Carry enabled differently in Impulse Tracker (see [[#CarryNNA.it|CarryNNA.it]] for an explanation why this happens). A previous version of this test reflected the behaviour of those drivers, but technically for the wrong reason (they relied on a bug / misunderstanding of the Carry feature in OpenMPT). As this OpenMPT bug was fixed, the test case was adjusted to follow the WAV writer / SB16 MMX driver behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-ox.it|pass=11293 + 22849}}&lt;br /&gt;
Instrument number resets envelope behaviour test with Old Effects enabled, Compatible Gxx disabled: Reset envelopes if there is no tone portamento.&lt;br /&gt;
&lt;br /&gt;
Note: Some output drivers play the instruments with Envelope Carry enabled differently in Impulse Tracker (see [[#CarryNNA.it|CarryNNA.it]] for an explanation why this happens). A previous version of this test reflected the behaviour of those drivers, but technically for the wrong reason (they relied on a bug / misunderstanding of the Carry feature in OpenMPT). As this OpenMPT bug was fixed, the test case was adjusted to follow the WAV writer / SB16 MMX driver behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-xc.it|pass=11293 + 22849}}&lt;br /&gt;
Instrument number resets envelope behaviour test with Old Effects disabled, Compatible Gxx enabled: Reset envelopes if there is a tone portamento.&lt;br /&gt;
&lt;br /&gt;
Note: Some output drivers play the instruments with Envelope Carry enabled differently in Impulse Tracker (see [[#CarryNNA.it|CarryNNA.it]] for an explanation why this happens). A previous version of this test reflected the behaviour of those drivers, but technically for the wrong reason (they relied on a bug / misunderstanding of the Carry feature in OpenMPT). As this OpenMPT bug was fixed, the test case was adjusted to follow the WAV writer / SB16 MMX driver behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-xx.it|pass=0}}&lt;br /&gt;
Instrument number resets envelope behaviour test with Old Effects disabled, Compatible Gxx disabled: Never reset envelopes.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=InstrAfterMultisamplePorta.it|pass=7465}}&lt;br /&gt;
A lone instrument number should only reset sample properties to those of the corresponding sample in instrument mode. Example:&lt;br /&gt;
 C#5 01 ... &amp;lt;-- sample 1&lt;br /&gt;
 C-5 .. g02 &amp;lt;-- sample 2&lt;br /&gt;
 ... 01 ... &amp;lt;-- still sample 1, but with properties of sample 2&lt;br /&gt;
In the above example, no sample change happens on the second row. In the third row, sample 1 keeps playing but with the volume and panning properties of sample 2.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=InstrumentNumberChange.it|pass=1902}}&lt;br /&gt;
While Impulse Tracker cuts playing samples if it encounters an invalid sample number in sample mode, the same does not happen if we are in instrument mode.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=JxxTicks.it|pass=1537}}&lt;br /&gt;
Impulse Tracker’s arpeggio logic is pretty sane compared to some other trackers, but one detail should be kept in mind: Pattern Delays reset the tick counter, but it keeps incrementing with Fine Pattern Delays. The arpeggio sequence thus resets every (ticks per row + fine pattern delay) ticks.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LinearSlides.it|pass=4330}}&lt;br /&gt;
Impulse Tracker internally uses actual frequency values, while Fasttracker 2 still uses exponentially scaled fine Amiga periods. When doing fine slides, errors from using periods instead of frequency can add up very quickly, and thus the two channel&#039;s frequency in this test will converge noticeably.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LoopBreak.it|pass=5413}}&lt;br /&gt;
A pattern break (Cxx) on the same row as the end of a pattern loop (SBx) repeats the pattern loop x times and then jumps to the desired row. However, a position jump (Bxx) on the same row as the end of a pattern loop prevents the loop from being executed if it is right of the SBx effect. In this test, the left and right channel of the module should produce the same click patterns.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LoopStartAfterPatternEnd.it|pass=7791}}&lt;br /&gt;
Since the start row of a pattern loop is not reset on pattern transitions, it is possible to use a loop start past the end of the current pattern when using a pattern loop without explicit start command (SB0). In this case, playback should continue in the next pattern. In the example, this happens because the loop start is set to one row after the loop end after properly terminating the loop in pattern 0.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LxxWith0Portamento-Amiga.it|pass=r22552}}&lt;br /&gt;
A strange edge case when using Lxx (Volume Slide + Tone Portamento) while the tone portamento effect memory is 0: The tone portamento comamnd is not initialized properly in this case, causing it always to assume that it&#039;s trying to execute a portamento down. If the current note is below the note to which the tone portamento would lead, this causes the note to immediately jump to the target note. If the current note is above the target note, nothing happens.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LxxWith0Portamento-Linear.it|pass=r22552}}&lt;br /&gt;
Same as [[#LxxWith0Portamento-Amiga.it|LxxWith0Portamento-Amiga.it]], but with linear slides. The difference is that when the current note is above the target note, the frequency is decremented by 1 Hz on every tick (linear slides always slide by at least 1 Hz).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=macro-lastnote.it|pass=947 (?)}}&lt;br /&gt;
A test of the MIDI macro letter “n”. This letter will always send the MIDI note value of the last triggered note, note cuts and similar “notes” are not considered. This module should remain silent as both channels should receive exactly the same cutoff values.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=MacroExtendedParam.it|pass=16715}}&lt;br /&gt;
Even fixed macros (Z80-ZFF) can contain the letter “z”, which inserts the raw command parameter into the macro (i.e. a value in [80, FF[). In this file, macro ZF0 is used to insert byte F0 into the string. This way, two MIDI messages to set both the filter cutoff and resonance to 60h are created, which are the same filter settings as used in instrument 2, so the module should stay silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=MultiZxx.it|pass=947 (?)}}&lt;br /&gt;
A MIDI macro can contain more than one MIDI message. In this case, the Z90 macro sets both the filter cutoff frequency and resonance, so if only the first MIDI message is considered in this macro, the module will no longer stay silent at row 8.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoMap.it|pass=1671}}&lt;br /&gt;
Yet another sample map test case. Why are there so many of them? They are all fixed by the same code...&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoMapEffects.it|pass=20790 + 20820}}&lt;br /&gt;
Empty instrument note map slots are truly one of the most mysterious parts of Impulse Tracker’s reply routines. This particular test started out to verify that a currently playing instrument’s envelopes are not reset by sample-less note map slots, but it quickly evolved into a complete nightmare. In this test you see many global effects, and not a single one of them does anything. They do not jump around in the pattern, they do not modify the tempo. Anything in a cell where a sample-less note map slot is hit is ignored completely. This also affects the first row of the module due to [[#InitialNoteMemory.it|InitialNoteMemory.it]] - this mechanism also takes previously triggered notes into account. Only on row 3 it does not apply, because Note Off / Note Cut / Note Fade invalidate the previously triggered note.&lt;br /&gt;
&lt;br /&gt;
All in all, this absolutely crazy test case should play identically on the left and right channel.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoSlide.it|pass=???}}&lt;br /&gt;
This seems to be just a fancy test of portamento from a stopped note, but in this case an empty sample slot assigned to the same instrument was played before.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoteFade-SmpMode.it|pass=317}}&lt;br /&gt;
A “note fade” note (any invalid note) should not do anything in sample mode. The sample should not be stopped.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoteFade-InsMode.it|pass=317}}&lt;br /&gt;
A “note fade” note (any invalid note) should fade out the instrument using its fadeout value.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=noteoff2.it|pass=??? + 5829}}&lt;br /&gt;
The sample changes on rows 4 and 20, but not on rows 8 and 24. However, the new sample′s default volume is loaded.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=noteoff3.it|pass=12284}}&lt;br /&gt;
This is the same as noteoff2.it, but with old effects enabled. In this case, the sample should never fade out.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoteOffInstr.it|pass=5829}}&lt;br /&gt;
Any kind of Note Cut (SCx or ^^^) should stop the sample and not set its volume to 0. A subsequent volume command cannot continue the sample, but a note, even without an instrument number can do so. When played back correctly, the module should stay silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Off-Porta.it|pass=1344}}&lt;br /&gt;
When &amp;quot;Compatible Gxx&amp;quot; is disabled, the key-off flag should only be removed when triggering new notes, but not when continuing a note using a portamento command.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Off-Porta-CompatGxx.it|pass=0 (temporarily broken in rev. 1344)}}&lt;br /&gt;
When &amp;quot;Compatible Gxx&amp;quot; is enabled, the key-off flag should also be removed when continuing a note using a portamento command (row 2, 4, 6). This test case was written to discover a code regression  when fixing [[#Off-Porta.it|Off-Porta.it]]).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=OffsetWithInstr.it|pass=20863}}&lt;br /&gt;
An offset effect can be triggered if only an instrument number and no note is next to it, if the last triggered note was not a note cut, note off or note fade.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PanbrelloHold.it|pass=4712}}&lt;br /&gt;
The panbrello offset should not only be added on the same row as the panbrello effect appears on, but also on all follow-up rows, until a panning command or a new note is encountered. This test case should remain mostly silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PanReset.it|pass=4713}}&lt;br /&gt;
Contrary to XM, the default instrument and sample panning should only be reset when a &#039;&#039;&#039;note&#039;&#039;&#039; is encountered, not when an &#039;&#039;&#039;instrument number&#039;&#039;&#039; (without note) is encountered. The two channels of this module should be panned identically.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PanResetInstr.it|pass=11856}}&lt;br /&gt;
Instruments and samples with a defined panning should not override the channel panning for following notes. That is, if a different instrument with no panning set follows an instrument that has panning set, the first instrument’s panning should not be applied to the second instrument, but rather the channel panning as it was set before playing the first instrument (or if the channel panning was changed while that instrument was playing, the new channel panning applies as well).&lt;br /&gt;
If played correctly, this test case should remain silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PatternDelay-NoteDelay.it|pass=1240}}&lt;br /&gt;
Delayed notes (using SDx) that are on the same row as a Row Delay effect are retriggered on every repetition. Notes &#039;&#039;without&#039;&#039; a note delay are &#039;&#039;not&#039;&#039; retriggered.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PatternDelays.it|pass=1224}}&lt;br /&gt;
Tick delays (S6x) are added up, but when there are multiple row delays (SEx), only the first one is considered. The tricky part here is that Impulse Tracker even ignores all row delays next to a SE0 row delay. I suggest to do the following:&lt;br /&gt;
* Initialize a &amp;lt;tt&amp;gt;row delay&amp;lt;/tt&amp;gt; variable with &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Go through all channels. If there is a row delay on the current row and &amp;lt;tt&amp;gt;row delay&amp;lt;/tt&amp;gt; is 0, set &amp;lt;tt&amp;gt;row delay = parameter + 1&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Calculate the complete row length: &amp;lt;tt&amp;gt;row length = (speed + tick delay) * max(1, row delay)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PatternDelaysRetrig.it|pass=1221}}&lt;br /&gt;
Rows on which a row delay (SEx) effect is placed have multiple “first ticks”, i.e. you should set your “first tick flag” on every tick that is a multiple of &amp;lt;tt&amp;gt;speed + tick delay&amp;lt;/tt&amp;gt;. In this test module, the note pitch is changed multiple times per row, depending on the row and tick delay values.&lt;br /&gt;
&amp;lt;br/&amp;gt;Note: This test case broke in r3520 and was fixed again in r4895.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PitchPanReset.it|pass=15870}}&lt;br /&gt;
Pitch/Pan Separation can be overriden by panning commands, and should not be affected by Note Off or Note Fade notes.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaCutCompat.it|pass=9139}}&lt;br /&gt;
A follow-up test to [[#PortaSampleCompat.it|PortaSampleCompat.it]] and  [[#PortaInsNumCompat.it|PortaInsNumCompat.it]] to verify that the behaviour described in these tests is not used when currently no note is playing. Both channels should sound identical.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaInsNum.it|pass=1671}}&lt;br /&gt;
Portamento with funny sample maps. Without compatible Gxx, portamento between different samples should play the new sample.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaInsNumCompat.it|pass=2842}}&lt;br /&gt;
Portamento with funny sample maps, in compatible Gxx mode. With compatible Gxx, portamento between different samples should keep playing the old sample.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaJustStoppedNote.it|pass=6193}}&lt;br /&gt;
[[#Fade-Porta.it|Fade-Porta.it]] already tests the general case of portamento picking up a stopped note (portamento should just be ignored in this case), but there is an edge case when the note just stopped on the previous tick. In this case, OpenMPT did previously behave differently and still execute the portamento effect.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=porta-offset.it|pass=0}}&lt;br /&gt;
Unlike Fasttracker 2, Impulse Tracker does not ignore offset commands next to portamentos and executes them both. Even ModPlug Tracker 1.16 gets this test right.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaReset.it|pass=4181}}&lt;br /&gt;
Impulse Tracker completely resets the tone portamento target on every new non-portamento note, i.e. a follow-up Gxx effect should not slide back to the previously triggered note.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaResetAfterRetrigger.it|pass=7465}}&lt;br /&gt;
After a note has stopped playing, a lone instrument number can restart the note. In this case, portamento and other properties should be reset.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaSample.it|pass=1671}}&lt;br /&gt;
Impulse Tracker executes the portamento when switching to instrument two on the second row when compatible Gxx is disabled.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaSampleCompat.it|pass=2842}}&lt;br /&gt;
Impulse Tracker executes the portamento and doesn&#039;t switch to the new sample on the second row when compatible Gxx is enabled.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=RandomPan.it|pass=2545}}&lt;br /&gt;
Pan swing should not be overridden by effects such as instrument panning or panning envelopes. Previously, pan swing was overridden in OpenMPT if the instrument also had a panning envelope. In this file, pan swing should be applied to every note.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=RandomWaveform.it|pass=3670}}&lt;br /&gt;
When selecting the random waveform for panbrello, the “speed” nibble indicates for how many ticks the random value will be held. This behaviour is &#039;&#039;not&#039;&#039; used for vibrato / tremolo.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ResetEnvNoteOffOldFx.it|pass=11276 - 11283}}&lt;br /&gt;
In Old Effects mode, an instrument number next to a note-off does not just recall the default volume and panning, but also resets the envelopes.&lt;br /&gt;
&lt;br /&gt;
If the instrument is different from the currently playing instrument, the new instrument&#039;s envelope and default sample settings (default volume, panning, but not global volume) are loaded, but the old sample waveform keeps playing.&lt;br /&gt;
&lt;br /&gt;
When played correctly, the left and right audio channel should sound identical. On the last note, the tracker channels swap their stereo position.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ResetEnvNoteOffOldFx2.it|pass=11284}}&lt;br /&gt;
An extension of ResetEnvNoteOffOldFx.it which also tests instrument note-off and sample sustain loop behaviour: While the sample sustain loop should be released, the instrument should not be faded out.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=retrig.it|pass=364}}&lt;br /&gt;
A combination of the retrigger effect and instrument envelopes. Not sure how this works.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=retrig-short.it|pass=1140}}&lt;br /&gt;
Impulse Tracker does not retrigger notes that are shorter than the duration of a tick. One might argue that this is a bug in Impulse Tracker, but OpenMPT emulates it anyway.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=s7xinsnum.it|pass=1062}}&lt;br /&gt;
Changing the NNA action through the S7x command only affects the current note - The NNA action is reset on every &#039;&#039;note change&#039;&#039;, and not on every &#039;&#039;instrument change&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=s77.it|pass=561 (preliminary), 1112}}&lt;br /&gt;
The S77 / S79 / S7B commands pause the instrument envelopes, they do not turn them off. S78 / S7A / S7C should resume the envelope at exactly the position where it was paused. In this test, it is again very important that the envelope position is incremented &#039;&#039;before&#039;&#039; the point is evaluated, not &#039;&#039;afterwards&#039;&#039; (see [[#EnvLoops.it|EnvLoops.it]]).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=S7B_StillAppliesFilter.it|pass=24090}}&lt;br /&gt;
Even when the filter envelope is turned off before its first tick is even processed through command S7B, the filter should still be applied. In this case, a filter cutoff equivalent to the midway envelope value is applied.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SampleNumberChange.it|pass=0}}&lt;br /&gt;
Contrary to [[#InstrumentNumberChange.it|InstrumentNumberChange.it]], even ModPlug Tracker 1.16 passes it.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SampleSustainAfterPorta.it|pass=20760}}&lt;br /&gt;
When a sample’s sustain loop was released, and a new note from a different sample is played with tone portamento applied, the second sample’s sustain loop also stays released.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SampleSustainAfterPortaCompatGxx.it|pass=20760}}&lt;br /&gt;
Same as [[#SampleSustainAfterPorta.it|SampleSustainAfterPorta.it]], but with Compatible Gxx turned on.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SampleSustainAfterPortaInstrMode.it|pass=20760}}&lt;br /&gt;
Same as [[#SampleSustainAfterPorta.it|SampleSustainAfterPorta.it]], but in instrument mode. Here a difference in the behaviour can be observed when doing a second switch after the initial note-off: The first time, the sustain loop remains disabled, but for the subsequent note, the sustain loop is used again. This does not happen in sample mode.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=sbx-priority.it|pass=12171}}&lt;br /&gt;
This is an extension of [[#LoopBreak.it|LoopBreak.it]]. A position jump (Bxx) on the same row as the end of a pattern loop prevents the loop from being executed if it is right of the SBx effect, but if the position jump is left of the SBx effect, the loop should be prioritized. In this test, the left and right channel of the module should produce the same beep patterns.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=scx.it|pass=1109}}&lt;br /&gt;
The SCx command cuts notes just like a normal note cut (^^^), it does not simply mute them. However, there is a difference when placing a lone instrument number after a note that was cut with SCx and one cut with ^^^, as it can be seen in this test case.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SCx-Reset.it|pass=23476}}&lt;br /&gt;
When a lone instrument number after a SCx command picks up the previous note, it resets its pitch to the original note, undoing any portamento effects - the same as if there was a note next to the instrument number.&lt;br /&gt;
&lt;br /&gt;
If there is a note and a tone portamento next to an SCx command, the Note Cut is not executed - unless there is also a row delay effect and we are on the second repetition of the row.&lt;br /&gt;
&lt;br /&gt;
When played correctly, this test should remain silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SlideDelay.it|pass=3520}}&lt;br /&gt;
If there&#039;s a note delay, slide and vibrato commands in the volume column next to it should not start before the delay has finished.&lt;br /&gt;
So if there&#039;s a fine volume slide next to a SD5 effect should start on the 6th (one-based) tick. If this was a normal volume or pitch slide and the speed was 6 ticks per row, it would never execute, as the first non-zero tick would be the seventh tick.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SmpInsPanSurround.it|pass=1259}}&lt;br /&gt;
Sample and instrument panning override the channel surround status, i.e. surround is turned off by samples or instruments with panning enabled.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=surround-pan.it|pass=1134}}&lt;br /&gt;
Pan swing, panbrello, panning envelopes, etc. should have no effect on surround channels.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=StoppedInstrSwap.it|pass=5829}}&lt;br /&gt;
An instrument number with no note or next to a ^^^ should always be remembered for the next instrument-less note, even if sample playback is stopped.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SusAfterLoop.it|pass=1085}}&lt;br /&gt;
When a sample sustain loop, which is placed partly or completely behind a “normal” sample loop is exited (through a note-off event), and the current sample playback position is past the normal loop’s end, it is adjusted to &amp;lt;tt&amp;gt;loop start + ((current position - loop start) % loop length)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SwapNNA.it|pass=10239}}&lt;br /&gt;
Related to [[#s7xinsnum.it|s7xinsnum.it]], the NNA action should be reset when doing an instrument swap with portamento.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swaptest.it|pass=???}}&lt;br /&gt;
A test focussing on finding the correct sample playback position when switching samples “on the fly” (using instrument numbers without notes next to them). The module should remain silent when being played.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing1.it|pass=1046 (?)}}&lt;br /&gt;
Probably a very MPT-specific bug, as OpenMPT was adding the volume swing to the current volume, so even after setting the volume to 0, it was possible that you could hear the sample playing.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing2.it|pass=1046 (?)}}&lt;br /&gt;
This module should remain completely silent, as the random variation is multiplied with the sample volume.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing3.it|pass=1046 (?)}}&lt;br /&gt;
Of course you are not supposed to produce the same sequence of random number to fulfil this test case. I think this was just a test to explore which volume variables are actually affected by volume swing, and how it is applied.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing4.it|pass=1046 (?)}}&lt;br /&gt;
Same as above.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing5.it|pass=1046 (?)}}&lt;br /&gt;
Same as above.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=tickdelay.it|pass=4948}}&lt;br /&gt;
This test detects whether out-of-range note delays are handled properly. If the SDx parameter is greater than the row length (&#039;&#039;including&#039;&#039; tick delay, but &#039;&#039;excluding&#039;&#039; row delay), any note and volume effects next to it are supposed to ignored (interestingly, the instrument number is saved, but not instantly used). The first two rows test tick delay behaviour (OpenMPT passes this test since revision 1306), the third row tests row delay behaviour. &lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=tremolo.it|pass=345 (?)}}&lt;br /&gt;
A test for checking if tremolo tables are implemented correctly.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=vibrato.it|pass=1189}}&lt;br /&gt;
A test for checking if vibrato tables are implemented correctly when old FX are disabled.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=VibratoDouble.it|pass=7804}}&lt;br /&gt;
Vibrato in the volume column should be applied separately from vibrato in the effect column. The two commands will add up when occuring at the same time. However, since there is only one vibrato effect memory for both commands, the volume column’s vibrato parameter has precedence if it is not 0.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=vibrato-oldfx.it|pass=1189}}&lt;br /&gt;
A test for checking if vibrato tables are implemented correctly when old FX are enabled. Vibrato is played backwards in this mode!&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=VibratoSweep0.it|pass=7134}}&lt;br /&gt;
Auto-vibrato should not be processed at all if the rate (speed) is 0. This is relevant for vibrato waveforms that do not start at zero, i.e. all except sine.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=VolColMemory.it|pass=1545}}&lt;br /&gt;
Volume column commands a, b, c and d (volume slide) share one effect memory, but it should not be shared with Dxy in the effect column. Furthermore, there is &#039;&#039;&#039;no&#039;&#039;&#039; unified effect memory across different kinds of volume column effects (that&#039;s how OpenMPT used to handle it up to revision 1544).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=VolColNoSlideMemoryPropagation.it|pass=23742}}&lt;br /&gt;
An extension of [[#VolColMemory.it|VolColMemory.it]]. While that test case verifies that regular Dxy volume slides do not propagate their effect memory to the volume column, it fails to verify the other way around. This test case rectifies that, also checking that volume column commands a, b, c and d do not update the Dxy effect memory.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=vol-env-carry.it|pass=1781}}&lt;br /&gt;
Similar to [[#flt-env-carry.it|flt-env-carry.it]]. This test case temporarily broke in revision 1481 and was fixed in revision 1781.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Volume-Macro-Letters.it|pass=1465}}&lt;br /&gt;
This test demonstrates how Zxx macros are parsed in Impulse Tracker:&lt;br /&gt;
* Macros are evaluated only on the first tick.&lt;br /&gt;
* They appear to be parsed after note / instrument information has been read from the pattern, but before any other effects (excluding &amp;quot;Set Volume&amp;quot;).&lt;br /&gt;
* &#039;u&#039; and &#039;v&#039; macros seem to emit at least a value of 1, not 0 - v00 corresponds to Z01.&lt;br /&gt;
I am not quite sure why the first row with notes on it emits a filter value of 1, and I am not even completely sure why OpenMPT gets this right.&lt;br /&gt;
If interpreted correctly, the module should stay silent (minus slight filter artefacts, of course - but they should be nearly inaudible).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=weirdloop.it|pass=0}}&lt;br /&gt;
A nice broken pattern loop. The voice should say “1 4 2 1 4 2” and then repeat forever “3 4 2”. Theoretically, this would even work in ModPlug Tracker 1.16, if it did not reset the Cxx target on song loop.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ZxxSecrets.it|pass=9855}}&lt;br /&gt;
Impulse Tracker supports three MIDI macro characters which are not documented in MIDI.TXT:&lt;br /&gt;
* &amp;lt;tt&amp;gt;h&amp;lt;/tt&amp;gt;: Host channel, i.e. the pattern channel in which the Zxx command is encountered (0-based).&lt;br /&gt;
* &amp;lt;tt&amp;gt;o&amp;lt;/tt&amp;gt;: The last used sample offset value. The high offset (SAx) is not taken into account. Note that offsets above 80h are not clamped, i.e. they generate MIDI command bytes (e.g. O90 would cause a note-on command to be emitted).&lt;br /&gt;
* &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt;: This command sends the current MIDI note if the channel is a MIDI channel, but on sample channels the current loop direction (forward = 0, backward = 1) of the sample is stored in the same memory location, so the macro evaluates to that instead of a note number.&lt;br /&gt;
&lt;br /&gt;
In addition, the MIDI messages FA (start song), FC (stop song) and FF (reset) reset the resonant filter parameters (cutoff = 127, resonance = 0) for all channels, but do not immediately update the filter coefficients.&lt;br /&gt;
&lt;br /&gt;
{{Testcase Summary}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Development|Test Cases/IT]]&lt;br /&gt;
[[Category:IT Format|Test Cases]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Development:_Foreign_Bugs&amp;diff=4973</id>
		<title>Development: Foreign Bugs</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Development:_Foreign_Bugs&amp;diff=4973"/>
		<updated>2025-08-23T16:06:37Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Foreign Bugs ==&lt;br /&gt;
&lt;br /&gt;
This page intends to track bugs in other projects that affect OpenMPT and libopenmpt in some way or another.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ List of bug reports&lt;br /&gt;
|-&lt;br /&gt;
! Project !! Status !! affects !! Description !! Link&lt;br /&gt;
|-&lt;br /&gt;
| Wine || open || OpenMPT || winepath changes behaviour and strips ending path separator now || https://bugs.winehq.org/show_bug.cgi?id=58615&lt;br /&gt;
|-&lt;br /&gt;
| GCC || open || libopenmpt || x86: Inefficient code generation with -m3dnow -msse since GCC 12 || https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121230&lt;br /&gt;
|-&lt;br /&gt;
| cross-platform-actions || open / work-around 2025-07-05 || libopenmpt || wrong file permissions on Haiku || https://github.com/cross-platform-actions/action/issues/108&lt;br /&gt;
|-&lt;br /&gt;
| GCC || open || libopenmpt || false-positive Wmaybe-uninitialized in std::optional::reset() || https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121173&lt;br /&gt;
|-&lt;br /&gt;
| GCC || open || libopenmpt || false positive Warray-bounds while building openmpt with -O3 -fsanitize=undefined / missed optimization with ubsan at -O3 due to phiprop not working with UBSAN_NULL || https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121165 / https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121168&lt;br /&gt;
|-&lt;br /&gt;
| GCC || open || libopenmpt || analyzer support for C++ new expression || https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94355&lt;br /&gt;
|-&lt;br /&gt;
| cross-platform-actions || open / work-around 2025-07-05 || libopenmpt || Runner to VM file sync doesn&#039;t work for Haiku || https://github.com/cross-platform-actions/action/issues/104&lt;br /&gt;
|-&lt;br /&gt;
| cross-platform-actions || open / work-around 2025-07-05 || libopenmpt || Installing (some) packages on Haiku requires reboot || https://github.com/cross-platform-actions/action/issues/103&lt;br /&gt;
|-&lt;br /&gt;
| FLAC || open || OpenMPT/openmpt123 || max thread count is not directly settable or queryable || https://github.com/xiph/flac/issues/823&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || open || OpenMPT/libopenmpt || Iterator Debugging breaks C++20 constexpr containers || https://developercommunity.visualstudio.com/t/Iterator-Debugging-breaks-C20-constexp/10861623 / https://github.com/microsoft/STL/issues/4427&lt;br /&gt;
|-&lt;br /&gt;
| stb_vorbis || open || libopenmpt || stb_vorbis: 1404:75: warning: pointer comparison always evaluates to false [-Wtautological-compare] || https://github.com/nothings/stb/issues/1745&lt;br /&gt;
|-&lt;br /&gt;
| GCC || open || libopenmpt || std::filesystem::remove_all() hangs on Windows on directories containing a deep tree with long paths || https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118003&lt;br /&gt;
|-&lt;br /&gt;
| minimp3 || open || libopenmpt || Change extern &amp;quot;C&amp;quot; block to include all API declarations, including structure definitions, instead of just function declarations. || https://github.com/lieff/minimp3/pull/127&lt;br /&gt;
|-&lt;br /&gt;
| minimp3 || open || libopenmpt || Fix function signature of have_simd. || https://github.com/lieff/minimp3/pull/126&lt;br /&gt;
|-&lt;br /&gt;
| minimp3 || open || libopenmpt || Support for MP3 files &amp;lt; MAX_FRAME_SYNC_MATCHES || https://github.com/lieff/minimp3/pull/125&lt;br /&gt;
|-&lt;br /&gt;
| minimp3 || open || libopenmpt || Reduce stack usage to help usage on embedded systems || https://github.com/lieff/minimp3/pull/117&lt;br /&gt;
|-&lt;br /&gt;
| minimp3 || open || libopenmpt || Don&#039;t enable ARMv6 features for ARMv6-m || https://github.com/lieff/minimp3/pull/97&lt;br /&gt;
|-&lt;br /&gt;
| minimp3 || open || libopenmpt || Eliminated warnings in Visual Studio 2019. || https://github.com/lieff/minimp3/pull/96&lt;br /&gt;
|-&lt;br /&gt;
| afl++ || open || OpenMPT/libopenmpt || Fuzzing process freezes completely || https://github.com/AFLplusplus/AFLplusplus/issues/2127&lt;br /&gt;
|-&lt;br /&gt;
| GitHub || open || libopenmpt || git config safe.directory inside docker containers || https://github.com/actions/runner/issues/2033&lt;br /&gt;
|-&lt;br /&gt;
| emscripten || open || libopenmpt || Closure has warnings with wasm2js || https://github.com/emscripten-core/emscripten/issues/17080&lt;br /&gt;
|-&lt;br /&gt;
| vorbis || open || OpenMPT/libopenmpt || misleading-indentation warning in lib/block.c || https://gitlab.xiph.org/xiph/vorbis/-/issues/2349&lt;br /&gt;
|-&lt;br /&gt;
| vorbis || open || OpenMPT/libopenmpt || strict-prototypes warning in lib/vorbisfile.c || https://gitlab.xiph.org/xiph/vorbis/-/issues/2350&lt;br /&gt;
|-&lt;br /&gt;
| C++ || open || OpenMPT/libopenmpt || lexically_relative on UNC drive paths (\\?\C:\...) results in a default-constructed value || https://cplusplus.github.io/LWG/issue3699&lt;br /&gt;
|-&lt;br /&gt;
| GitHub || open || libopenmpt || Can we suppress &#039;Run cancelled&#039; notifications? || https://github.com/orgs/community/discussions/13015&lt;br /&gt;
|-&lt;br /&gt;
| GCC (Debian) || open || libopenmpt || i686-w64-mingw32-gcc reports wrong version in __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__ || https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1028580&lt;br /&gt;
|-&lt;br /&gt;
| LLVM || open || libopenmpt || -march=i386 should not generate bswap instruction || https://github.com/llvm/llvm-project/issues/58470&lt;br /&gt;
|-&lt;br /&gt;
| glibc || open || libopenmpt || stdio wide character output conversion appears to enter confused state after setlocale || https://sourceware.org/bugzilla/show_bug.cgi?id=29510&lt;br /&gt;
|-&lt;br /&gt;
| GCC || open || libopenmpt || [12/13 Regression] bogus &amp;quot;may overlap&amp;quot; memcpy warning with std::string and operator+ at -O3 / [12/13 Regression] Bogus restrict warning when assigning 1-char string literal to std::string since r12-3347-g8af8abfbbace49e6 / std::string::replace uses memcpy incorrectly and warns about it / [12/13/14/15 regression] -Wrestrict false positive creating std::string from iterators || https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105651 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105329 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116494 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114385&lt;br /&gt;
|-&lt;br /&gt;
| Wine || open || OpenMPT || Wine should provide icu.dll || https://bugs.winehq.org/show_bug.cgi?id=53354&lt;br /&gt;
|-&lt;br /&gt;
| Wine || open || OpenMPT || Missing functions SystemTimeToTzSpecificLocalTimeEx and TzSpecificLocalTimeToSystemTimeEx || https://bugs.winehq.org/show_bug.cgi?id=53355&lt;br /&gt;
|-&lt;br /&gt;
| QEMU (Debian) || open || libopenmpt || qemu-user-static: lli-13/arm64 causes segfault on amd64 host || https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=999421 &lt;br /&gt;
|-&lt;br /&gt;
| MSVC || open || OpenMPT/libopenmpt || &amp;lt;filesystem&amp;gt;: weakly_canonical fails for UNC path with \\?\UNC prefix || https://github.com/microsoft/STL/issues/2823&lt;br /&gt;
|-&lt;br /&gt;
| emscripten || open || libopenmpt || emscripten with AudioWorklets: performance.now and crypto || https://github.com/emscripten-core/emscripten/issues/13224&lt;br /&gt;
|-&lt;br /&gt;
| mingw-std-threads || open || libopenmpt || Trouble compiling with gcc 11.1 || https://github.com/meganz/mingw-std-threads/issues/79&lt;br /&gt;
|-&lt;br /&gt;
| GCC || open || libopenmpt || `extern &amp;quot;C&amp;quot; int t = 1;` warns about being declared as extern and initialized&amp;lt;br&amp;gt;&amp;quot;warning: &#039;i&#039; initialized and declared &#039;extern&#039;&amp;quot; could use a separate warning flag controlling it&amp;lt;br&amp;gt;https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108013 || https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45977 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108013&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || open || OpenMPT/libopenmpt || std::chrono::get_tzdb_list() memory leak || https://github.com/microsoft/STL/issues/2504 https://developercommunity.visualstudio.com/t/stdchronoget-tzdb-list-memory-leak/1644641&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || open || OpenMPT/libopenmpt || &amp;lt;chrono&amp;gt;: Implement fallback mechanism for chrono&#039;s [time.zone] || https://github.com/microsoft/STL/issues/1911&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || open || OpenMPT/libopenmpt || &amp;lt;chrono&amp;gt;: Cannot parse &amp;quot;23:59:59&amp;quot; as system_clock::time_point on older Windows versions || https://github.com/microsoft/STL/issues/2163&lt;br /&gt;
|-&lt;br /&gt;
| zlib/minizip || open || OpenMPT || Add a null check in case ALLOC fails. || https://github.com/madler/zlib/pull/566&lt;br /&gt;
|-&lt;br /&gt;
| emscripten || open || libopenmpt || function signature mismatch with thinLTO and iostreams since 3.0.0 || https://github.com/emscripten-core/emscripten/issues/15638&lt;br /&gt;
|-&lt;br /&gt;
| GCC || open || libopenmpt || Bogus shift-negative-value warning in C++20 mode || https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103826&lt;br /&gt;
|-&lt;br /&gt;
| --- || --- || --- || --- || ---&lt;br /&gt;
|-&lt;br /&gt;
| FLAC || pending 2025-06-13 (1.5.1) || OpenMPT/openmpt123 || Add C11 threads.h implementation in addition to pthread implementation for multithreaded encoding. || https://github.com/xiph/flac/pull/822&lt;br /&gt;
|-&lt;br /&gt;
| nlohmann-json || pending || OpenMPT || Build issue with std::optional || https://github.com/nlohmann/json/issues/4740 https://github.com/nlohmann/json/pull/4742&lt;br /&gt;
|-&lt;br /&gt;
| Autoconf || pending 2024-05-28 (2.73) || libopenmpt || revert forcing/setting -std=gnu++11 by default (introduced in Autoconf 2.70) || https://savannah.gnu.org/support/index.php?110879 https://savannah.gnu.org/support/index.php?110286 https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=056518b94ecd487bcbefdb69046b3f52c4168222 https://bugs.openmpt.org/view.php?id=1701&lt;br /&gt;
|-&lt;br /&gt;
| --- || --- || --- || --- || ---&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || ignored 2023-02-21 || OpenMPT || no Release Notes for Windows 11 SDK 10.0.22621.0 || https://developercommunity.visualstudio.com/t/no-Release-Notes-for-Windows-11-SDK-100/10061520&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || wontfix 2023-07-07 || OpenMPT/libopenmpt || &amp;lt;filesystem&amp;gt; long path support || https://github.com/MicrosoftDocs/cpp-docs/issues/3138&lt;br /&gt;
|-&lt;br /&gt;
| MSVC (VS2019-VS2022) || wontfix 2023-04-04 || OpenMPT/libopenmpt || XP toolset uses non-XP compatible libraries || https://developercommunity.visualstudio.com/t/xp-toolset-uses-non-xp-compatible-libraries/1620439&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || ignored 2021-12-20 || OpenMPT/libopenmpt || BSOD when single-stepping over `popfd` instruction on *some* Windows 10 installs || https://developercommunity.visualstudio.com/t/BSOD-when-single-stepping-over-popfd-i/1617674 https://github.com/x64dbg/x64dbg/issues/2603&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || wontfix 2021-05-18 || OpenMPT/libopenmpt || &amp;lt;filesystem&amp;gt;: Does it naturally support all functions with a long path (&amp;gt;260) on Windows? || https://github.com/microsoft/STL/issues/1921&lt;br /&gt;
|-&lt;br /&gt;
| MSVC (VS2019-VS2022) || wontfix || OpenMPT/libopenmpt || XP toolset doesn&#039;t target XP properly || https://developercommunity2.visualstudio.com/t/XP-toolset-doesnt-target-XP-properly/1586002&lt;br /&gt;
|-&lt;br /&gt;
| MSVC (VS2017) || wontfix || OpenMPT || Static inline variable gets destroyed multiple times in Debug mode || https://developercommunity.visualstudio.com/t/Static-inline-variable-gets-destroyed-mu/297876&lt;br /&gt;
|-&lt;br /&gt;
| emscripten || wontfix || libopenmpt || Single precision floating point issues || https://github.com/emscripten-core/emscripten/issues/4251&lt;br /&gt;
|-&lt;br /&gt;
| GCC || wontfix || OpenMPT/libopenmpt || std::fstream ctr and open member functions fail to compile with argument of custom type convertible to std::filesystem::path || https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95642 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90704&lt;br /&gt;
|-&lt;br /&gt;
| --- || --- || --- || --- || ---&lt;br /&gt;
|-&lt;br /&gt;
| MSYS2 || fixed 2025-08-20 || libopenmpt || help2man fails to load gettext.dll || https://github.com/msys2/MSYS2-packages/issues/5579&lt;br /&gt;
|-&lt;br /&gt;
| GCC || fixed 2025-04-25 (15.1), fixed 2024-08-01 (14.2), fixed 2025-06-05 (13.4), fixed 2025-07-11 (GCC 12.5) || OpenMPT/libopenmpt || Silent severe miscompilation around inline functions || https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115049&lt;br /&gt;
|-&lt;br /&gt;
| DJGPP || fixed 2025-04-01 || libopenmpt || dxegen: unresolved symbol `___libemu_ident_string&#039; || https://github.com/jwt27/build-gcc/issues/46&lt;br /&gt;
|-&lt;br /&gt;
| cross-platform-actions || fixed 2025-03-17 || libopenmpt || FreeBSD 13.5 || https://github.com/cross-platform-actions/action/issues/99&lt;br /&gt;
|-&lt;br /&gt;
| NetBSD pkgsrc || fixed 2024-12-10 || libopenmpt || pkg subversion missing for NetBSD 9.4 amd64 || https://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=58432&lt;br /&gt;
|-&lt;br /&gt;
| mpg123 || fixed 2024-10-28 (mpg123 1.32.9) || OpenMPT/libopenmpt || weird warning when building against ARM64EC UCRT || https://sourceforge.net/p/mpg123/bugs/373/&lt;br /&gt;
|-&lt;br /&gt;
| autoconf-archive || fixed 2024-10-16 || libopenmpt || Revert broken part of commit 5b0d43b767bf3f800f97892905b6d1ba50150f1a || https://github.com/autoconf-archive/autoconf-archive/pull/307&lt;br /&gt;
|-&lt;br /&gt;
| autoconf-archive || fixed 2024-10-16 || libopenmpt || AX_CXX_COMPILE_STDCXX C++23 changes || https://github.com/autoconf-archive/autoconf-archive/pull/300&lt;br /&gt;
|-&lt;br /&gt;
| AppVeyor || fixed 2024-09-04 || OpenMPT || Windows 11 SDK 10.0.26100.0 in VS2022 image || https://github.com/appveyor/ci/issues/3929&lt;br /&gt;
|-&lt;br /&gt;
| build-gcc || fixed 2024-08-17 || libopenmpt || building GDB 8.2.1 fails with GCC 14 || https://github.com/jwt27/build-gcc/issues/43&lt;br /&gt;
|-&lt;br /&gt;
| mpg123 || fixed 2024-08-07 (1.32.7) || OpenMPT/libopenmpt || warning in readers.c with debugging enabled || https://sourceforge.net/p/mpg123/bugs/371/&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2024-07-23 || OpenMPT || Possible speed improvement for PMC files || https://github.com/temisu/ancient/issues/78&lt;br /&gt;
|-&lt;br /&gt;
| GCC || fixed 2024-07-19 (GCC 11.5) || libopenmpt || (Wfree-nonheap-object) - invalid/missing -Wfree-nonheap-object warnings || https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99098&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2024-07-15 || OpenMPT || Fix dereferencing of end iterator in PPMQ decompressor || https://github.com/temisu/ancient/pull/77&lt;br /&gt;
|-&lt;br /&gt;
| cross-platform-actions || fixed 2024-07-11 (0.25.0) || libopempt || FreeBSD 14.1 || https://github.com/cross-platform-actions/action/issues/87&lt;br /&gt;
|-&lt;br /&gt;
| Linux || fixed 2024-06-31 (6.9.6) || libopenmpt || Crash during early boot || https://lore.kernel.org/linux-kernel/ebb0791c-60a5-4fe3-bc85-4921ad026605@heusipp.de/T/#u https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1071378&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2024-06-29 || OpenMPT || Pack-Ice support || https://github.com/temisu/ancient/issues/72&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2024-06-07 (ancient 2.2.0) || OpenMPT || Some more slow PX20 cases || https://github.com/temisu/ancient/pull/70&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2024-06-05 (ancient 2.2.0) || OpenMPT || Don&#039;t rely on implementation-defined behaviour of std::realloc(0) || https://github.com/temisu/ancient/pull/69&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2024-05-21 (VS2022 17.10.0 / LLVM 14) || OpenMPT/libopenmpt || lots of lld-link warnings about PDB with VS2022 17.1.0 and Clang-cl 13 || https://developercommunity.visualstudio.com/t/lots-of-lld-link-warnings-about-PDB-with/1667797 https://github.com/llvm/llvm-project/issues/54487&lt;br /&gt;
|-&lt;br /&gt;
| DJGPP || fixed 2024-04-12 || libopenmpt || &amp;quot;Improve documentation of &#039;__djgpp_map_physical_memory&#039;.&amp;quot; breaks build || https://www.delorie.com/djgpp/mail-archives/browse.cgi?p=djgpp/2024/04/11/03:39:41&lt;br /&gt;
|-&lt;br /&gt;
| Cirrus-CI || fixed 2024-03-04 || libopenmpt || FreeBSD 13.2 VM fails to start || https://github.com/cirruslabs/cirrus-ci-docs/issues/1265&lt;br /&gt;
|-&lt;br /&gt;
| cross-platform-actions || work-around 2024-02-18 (0.23.0) || libopenmpt || OpenBSD is flaky with QEMU on macOS || https://github.com/cross-platform-actions/action/issues/80&lt;br /&gt;
|-&lt;br /&gt;
| cross-platform-actions || work-around 2024-02-18 (0.23.0) || libopenmpt || spurious failures with OpenBSD 7.4 on xhyve || https://github.com/cross-platform-actions/action/issues/77&lt;br /&gt;
|-&lt;br /&gt;
| cross-platform-actions || fixed 2024-02-18 (0.23.0) || libopenmpt || OpenBSD VM fails during &amp;quot;Initializing VM&amp;quot; with QEMU on macOS || https://github.com/cross-platform-actions/action/issues/73&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2024-02-13 (VS2022 17.9) || OpenMPT/libopenmpt || v143 14.37 istringstream incorrectly converts numbers with exponents with leading zeroes due to change in xlocnum header || https://developercommunity.visualstudio.com/t/v143-1437-istringstream-incorrectly-con/10450662&lt;br /&gt;
|-&lt;br /&gt;
| cross-platform-actions || fixed 2023-12-27 (0.22.0) / work-around || libopenmpt || Very frequent freezing of FreeBSD VM during teardown || https://github.com/cross-platform-actions/action/issues/61&lt;br /&gt;
|-&lt;br /&gt;
| emscripten || fixed 2023-12-13 (3.1.51) || libopenmpt || RangeError: Maximum call stack size exceeded when building libopenmpt test suite with -s WASM=2 || https://github.com/emscripten-core/emscripten/issues/17897&lt;br /&gt;
|-&lt;br /&gt;
| emscripten || fixed 2023-12-13 (3.1.51) / work-around || libopenmpt || -s WASM=0 -s LEGACY_VM_SUPPORT=1 results in JSC_CONSTANT_REASSIGNED_VALUE_ERROR warning during linking || https://github.com/emscripten-core/emscripten/issues/20810&lt;br /&gt;
|-&lt;br /&gt;
| emscripten || fixed 2023-12-01 (3.1.51) || libopenmpt || bogus warning &#039;Output contains some very large functions&#039; || https://github.com/emscripten-core/emscripten/issues/20811&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2023-11-14 (VS2022 17.8) || OpenMPT/libopenmpt || ICE when compiling for ARM64 due to alignment confusion (&amp;quot;operand 2: Memory offset must be aligned&amp;quot;) || https://developercommunity.visualstudio.com/t/ICE-when-compiling-for-ARM64-due-to-alig/10367205&lt;br /&gt;
|-&lt;br /&gt;
| Homebrew || fixed 2023-10-10 || libopenmpt || mpg123 1.32.3 || https://github.com/Homebrew/homebrew-core/pull/146321&lt;br /&gt;
|-&lt;br /&gt;
| cross-platform-actions || fixed 2023-10-07 || libopenmpt || NetBSD - VM doesn&#039;t start after a 120s timeout || https://github.com/cross-platform-actions/action/issues/62&lt;br /&gt;
|-&lt;br /&gt;
| Crypto++ || fixed 2023-10-02 || OpenMPT || CRYPTOPP_DISABLE_ASM is broken in 8.9.0 for MSVC x64 builds || https://github.com/weidai11/cryptopp/issues/1240&lt;br /&gt;
|-&lt;br /&gt;
| LLVM || fixed 2023-09-19 (LLVM 17.0.1) || OpenMPT/libopenmpt || clang-format 14 is extremely slow || https://github.com/llvm/llvm-project/issues/57117&lt;br /&gt;
|-&lt;br /&gt;
| zlib || fixed 2023-08-18 (zlib 1.3) || OpenMPT/libopenmpt || warning C4244: &#039;=&#039;: conversion from &#039;ush&#039; to &#039;uchf&#039;, possible loss of data || https://github.com/madler/zlib/issues/606&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2023-08-08 (VS2022 17.7) || OpenMPT/libopenmpt || INTERNAL COMPILER ERROR when compiling std:chrono code || https://developercommunity.visualstudio.com/t/INTERNAL-COMPILER-ERROR-when-compiling-s/10366948 https://developercommunity.visualstudio.com/t/Internal-compiler-error-when-using-chron/10308841&lt;br /&gt;
|-&lt;br /&gt;
| FLAC || fixed 2023-07-27 (1.5.0) || OpenMPT/libopenmpt || incompatible pointer types in bitmath.h || https://github.com/xiph/flac/issues/637&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2023-07-19 || OpenMPT || trivial warnings with clang-cl || https://github.com/temisu/ancient/issues/50&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2023-07-12 (2.1.1) || OpenMPT || new VS2022 warnings in 2.1.0 || https://github.com/temisu/ancient/issues/43&lt;br /&gt;
|-&lt;br /&gt;
| cross-platform-actions || fixed 2023-05-28|| libopenmpt || NetBSD 9.3 || https://github.com/cross-platform-actions/action/issues/53&lt;br /&gt;
|-&lt;br /&gt;
| GCC || fixed 2023-05-08 (GCC 12.3) || libopenmpt || false-positive -Wstringop-overflow warning when using std::vector with UBsan / [12 Regression] spurious warning - std::vector::clear followed by std::vector::insert(vec.end(), ...) with -O2 || https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109455 / https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100366&lt;br /&gt;
|-&lt;br /&gt;
| mpg123 || fixed 2022-10-28 (1.31.0) || libopenmpt || checking for _FILE_OFFSET_BITS is wrong on platforms where it does nothing || https://sourceforge.net/p/mpg123/bugs/330/&lt;br /&gt;
|-&lt;br /&gt;
| ffmpeg || fixed 2022-11-05 || OpenMPT / libopenmpt || 8-Bit FLAC Playback Skips Silent Portions || https://trac.ffmpeg.org/ticket/9270&lt;br /&gt;
|-&lt;br /&gt;
| FLAC || fixed 2022-10-20 || libopenmpt || configure must not pass -msse2 by default on x86 || https://github.com/xiph/flac/issues/486&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2022-09-27 (VS2022 17.3.5) || OpenMPT || warning C4311 in MFC header afxrecovery.h with VS2022 17.2.0 / Compiler warnings after upgrading to 17.2.0 (C4311) / Compiler warnings after upgrading to 17.2.0 (C4311) (now 17.3.x too) || https://developercommunity.visualstudio.com/t/warning-C4311-in-MFC-header-afxrecovery/10041328 https://developercommunity.visualstudio.com/t/Compiler-warnings-after-upgrading-to-17/10036311 https://developercommunity.visualstudio.com/t/Compiler-warnings-after-upgrading-to-17/10119333&lt;br /&gt;
|-&lt;br /&gt;
| QEMU (Debian) || fixed 2022-09-13 (QEMU 7.1) || libopenmpt || QEMU aarch64 user mode emulation always segfaults || https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1014177&lt;br /&gt;
|-&lt;br /&gt;
| MSVC / LLVM || fixed 2022-09-06 (LLVM 15.0.0) || OpenMPT / libopenmpt || Visual Studio 2022 lld-link: warning/error: ignoring unknown debug$S subsection kind 0xFF in file libucrt.lib || https://github.com/llvm/llvm-project/issues/56285&lt;br /&gt;
|-&lt;br /&gt;
| FLAC || fixed 2022-09-14 || OpenMPT/libopenmpt || Wrong printf format specifier in stream_decoder.c || https://github.com/xiph/flac/issues/433&lt;br /&gt;
|-&lt;br /&gt;
| sndfile || fixed 2022-09-12 || libopenmpt || public API header sndfile.h unneccessarily depends on Autoconf/CMake variables || https://github.com/libsndfile/libsndfile/issues/868&lt;br /&gt;
|-&lt;br /&gt;
| GCC || fixed 2022-08-19 (12.2) || libopenmpt || g++-mingw-w64-posix fails to set __STDCPP_THREADS__=1 even though it supports std::thread || https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1003382&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2022-07-16 || OpenMPT/libopenmpt || &amp;lt;filesystem&amp;gt;: lexically_relative() can not handle long path with prefix \\?\ || https://github.com/microsoft/STL/issues/2256&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2022-07-06 (Windows 11 SDK 10.0.22621.0) || OpenMPT || 64-bit EXEs built with VS2019 crash under Wine on macOS because of direct TEB access || https://developercommunity.visualstudio.com/t/64-bit-EXEs-built-with-VS2019-crash-unde/1248753&lt;br /&gt;
|-&lt;br /&gt;
| clang || fixed 2022-06-14 (Clang 15) || libopenmpt || Inconsistent shift-overflow warnings in C++20 || https://github.com/llvm/llvm-project/issues/52873&lt;br /&gt;
|-&lt;br /&gt;
| AppVeyor || fixed 2022-06-06 || OpenMPT || Windows 11 SDK 10.0.22621.0 in VS2022 image || https://github.com/appveyor/ci/issues/3822&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2022-05-11 (VS2022 17.2) || OpenMPT/libopenmpt || VS 2022 RC inappropriately assigns /MP[N] when invoking cl.exe which makes compilation extremely slow || https://developercommunity.visualstudio.com/t/msbuild-slow-c-solution-build-times-when-upgrading/1666033 https://developercommunity.visualstudio.com/t/VS-2022-RC-inappropriately-assigns-MPN/1560595&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2022-05-11 (VS2022 17.2) / work-around || OpenMPT || link errors when building MFC application with clang-cl || https://developercommunity.visualstudio.com/t/link-errors-when-building-MFC-applicatio/1617786&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2022-02-15 (VS2022 17.1) || OpenMPT/libopenmpt || VS2022 cl 19.30.30705 generates non-universally-available tzcnt instruction for std::countr_one || https://developercommunity.visualstudio.com/t/VS2022-cl-193030705-generates-non-univ/1578571&lt;br /&gt;
|-&lt;br /&gt;
| autoconf || fixed 2022-02-11 || libopenmpt || AX_CXX_COMPILE_STDCXX: add C++20 support || https://github.com/autoconf-archive/autoconf-archive/pull/244&lt;br /&gt;
|-&lt;br /&gt;
| emscripten || fixed 2022-01-10 (3.1.1) || libopenmpt || missing C++20 safe integers comparisons (cmp_equal) in &amp;lt;utility&amp;gt; in C++20 mode || https://github.com/emscripten-core/emscripten/issues/15851 https://github.com/emscripten-core/emscripten/issues/15396&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2022-01-08 (1.1) || OpenMPT/libopenmpt || warnings with VS2019 /W3 || https://github.com/temisu/ancient/issues/25&lt;br /&gt;
|-&lt;br /&gt;
| miniz || fixed 2021-11-28 || libopenmpt || unnecessary hastle to contribute || https://github.com/richgel999/miniz/issues/211&lt;br /&gt;
|-&lt;br /&gt;
| miniz || fixed 2021-11-28 || libopenmpt || various fixes || https://github.com/richgel999/miniz/issues/212&lt;br /&gt;
|-&lt;br /&gt;
| miniz || fixed 2021-11-28 || libopenmpt || unconditional #define MINIZ_EXPORT in miniz.h in 2.2.0 || https://github.com/richgel999/miniz/issues/213&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2021-11-09 || OpenMPT/libopenmpt || ICE with consteval in VS2019 16.10 || https://developercommunity.visualstudio.com/t/ICE-with-consteval-in-VS2019-1610/1436186&lt;br /&gt;
|-&lt;br /&gt;
| mpg123 || fixed  2021-10-23 || OpenMPT/libopenmpt || MSVC logic warning in 1.29.1 || https://sourceforge.net/p/mpg123/bugs/324/&lt;br /&gt;
|-&lt;br /&gt;
| mpg123 || fixed 2021-07-12 || OpenMPT/libopenmpt || Removal of #ifndef MPG123_NO_CONFIGURE breaks build || https://sourceforge.net/p/mpg123/bugs/313/&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2021-06-17 || OpenMPT/libopenmpt || Tons of bogus C28251 and C28301 warnings when running /analyze on C code || https://developercommunity.visualstudio.com/t/Tons-of-bogus-C28251-and-C28301-warnings/1436757&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2021-05-26 || OpenMPT|| GdiplusTypes.h does not compile with NOMINMAX || https://developercommunity.visualstudio.com/t/GdiplusTypesh-does-not-compile-with-NOM/727770&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2021-05-26 || OpenMPT || Registry does not work when built as a static library || https://github.com/temisu/ancient/issues/31&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2021-05-25 || OpenMPT/libopenmpt || Incorrect checksum calculation for older MMCMP files || https://github.com/temisu/ancient/issues/32&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2021-05-23 || OpenMPT/libopenmpt || fails to decompress some MMCMP files || https://github.com/temisu/ancient/issues/20&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2021-05-23 || libopenmpt || warning in main.cpp with GCC 9 (Ubuntu 20.04) || https://github.com/temisu/ancient/issues/27&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2021-05-23 || libopenmpt || warning in LH3Decompressor with GCC 9 (autotools build) || https://github.com/temisu/ancient/issues/28&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2021-05-22 || libopenmpt || A cleaner public API || https://github.com/temisu/ancient/issues/18&lt;br /&gt;
|-&lt;br /&gt;
| ancient || fixed 2021-05-21 || libopenmpt || Allow for better packaging and system integration || https://github.com/temisu/ancient/issues/13&lt;br /&gt;
|-&lt;br /&gt;
| MacPorts || fixed 2021-05-12 || libopenmpt || libsndfile 1.0.28 has multiple security issues || https://trac.macports.org/ticket/60820&lt;br /&gt;
|-&lt;br /&gt;
| mpg123 || fixed 2021-05-08 || OpenMPT/libopenmpt || #define warning clashes with MSVC pragmas, runtime headers, and Windows SDK headers || https://sourceforge.net/p/mpg123/bugs/308/&lt;br /&gt;
|-&lt;br /&gt;
| mpg123 || fixed 2021-05-08 || libopenmpt || warnings in debug printf format strings on obscure platforms  || https://sourceforge.net/p/mpg123/bugs/309/&lt;br /&gt;
|-&lt;br /&gt;
| clang || fixed 2020-09-09 (11.0) || libopenmpt || LLVM generates illegal instruction with -O3 on powerpc (32bit) || https://bugs.llvm.org/show_bug.cgi?id=46683&lt;br /&gt;
|-&lt;br /&gt;
| Homebrew || fixed 2020-07-11 || libopenmpt || libsndfile 1.0.28 contains multiple security bugs || https://github.com/Homebrew/homebrew-core/issues/57833&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2019-08-02 || OpenMPT/libopenmpt || MFC headers conflict with C++17 charconv header in MBCS mode || https://developercommunity.visualstudio.com/t/MFC-headers-conflict-with-C17-charconv/629849 https://developercommunity.visualstudio.com/t/charconv-vs-mbctype-in-VS2019/425926&lt;br /&gt;
|-&lt;br /&gt;
| glibc || fixed 2018-11-12 (2.28) || libopenmpt || Crash in glibc&#039;s mktime in low-memory situations || https://sourceware.org/bugzilla/show_bug.cgi?id=21716 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=867283&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2017-12-18 || OpenMPT/libopenmpt || Random engines crashing VS 15.5 optimizer || https://developercommunity.visualstudio.com/t/Random-engines-crashing-VS-155-optimize/162089&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2017-12-06 || OpenMPT/libopenmpt || C1063 and C1001 while compiling trivial code in VS2017.3 || https://developercommunity.visualstudio.com/t/C1063-and-C1001-while-compiling-trivial/96687&lt;br /&gt;
|-&lt;br /&gt;
| MSVC || fixed 2017-08-02 || OpenMPT/libopenmpt || Compiler out of heap space when compiling constexpr struct with bitfields || https://developercommunity.visualstudio.com/t/Compiler-out-of-heap-space-when-compilin/28057&lt;br /&gt;
|-&lt;br /&gt;
| sndfile || fixed 2017-06-15 (1.0.29) || libopenmpt || Heap buffer overflows in psf_binheader_writef in 1.0.28 and later || https://github.com/libsndfile/libsndfile/issues/292&lt;br /&gt;
|-&lt;br /&gt;
| mpg123 || fixed 2017-05-30 || libopenmpt || Missing libgcc DLL in the 1.24 Win32 binary package || https://sourceforge.net/p/mpg123/bugs/246/&lt;br /&gt;
|-&lt;br /&gt;
| mpg123 || fixed 2017-05-30 || OpenMPT/libopenmpt || Unclear and/or confusing licensing of src/libmpg123/synth_sse3d.h || https://sourceforge.net/p/mpg123/bugs/249/&lt;br /&gt;
|-&lt;br /&gt;
| mpg123 || fixed 2017-03-08 || OpenMPT/libopenmpt || Build failure with VS2015 64bit due to conflicting ssize_t typedef || https://sourceforge.net/p/mpg123/bugs/243/&lt;br /&gt;
|-&lt;br /&gt;
| C++ (11..14) || fixed 2016-07 || OpenMPT/libopenmpt || std::abs(short), std::abs(signed char) and others should return int instead of double in order to be compatible with C++98 and C || https://cplusplus.github.io/LWG/issue2735&lt;br /&gt;
|-&lt;br /&gt;
| TODO-product || TODO-status || TODO-affects || TODO-description || TODO-link&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Development|Foreign Bugs]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Setup/MIDI&amp;diff=4969</id>
		<title>Manual: Setup/MIDI</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Setup/MIDI&amp;diff=4969"/>
		<updated>2025-08-04T19:20:31Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* Pass MIDI to Active Plugin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Settings MIDI.png|thumb|350px|MIDI tab of the settings dialog]]&lt;br /&gt;
&lt;br /&gt;
OpenMPT’s MIDI recording is limited, but there are some settings that are worth looking into.&lt;br /&gt;
&lt;br /&gt;
== MIDI Recording ==&lt;br /&gt;
&lt;br /&gt;
===  MIDI Input Device ===&lt;br /&gt;
Shows the device from which MIDI data will be received. Clicking on the field opens a popup menu where you can choose from all available MIDI input devices.&lt;br /&gt;
If the list is empty, Windows did not recognize any MIDI device — check if you have installed your MIDI interface drivers properly.&lt;br /&gt;
&lt;br /&gt;
You can use the &#039;&#039;&#039;Rename&#039;&#039;&#039; button to assign more easily recognizable (“friendly”) names for MIDI devices to be shown in this list, the MIDI device dropdown menu in the main toolbar and in the MIDI Input / Output plugin. The plugin also uses these friendly names to open the correct MIDI ports for a device even if it was plugged into a different port. For example, if a synthesizer was plugged into “Port A” when a module file was created but is now plugged into “Port B”, OpenMPT will open “Port B” if its friendly name has been updated to the friendly name that was previously used for “Port A”.&lt;br /&gt;
&lt;br /&gt;
For help with setting up MIDI devices for input and output, be sure to also consult the [[Manual: MIDI Reference#OpenMPT Setup|MIDI Reference]].&lt;br /&gt;
&lt;br /&gt;
=== Apply Octave Transpose ===&lt;br /&gt;
Checking this box applies the pattern editor′s base octave setting to incoming MIDI notes. Effectively, this means that if the base octave differs from Octave 4, this difference is also applied to MIDI notes that are being received.&lt;br /&gt;
&lt;br /&gt;
=== Respond to Song Messages ===&lt;br /&gt;
Checking this box allows OpenMPT to receive MIDI messages that cause the currently active song to play, stop, or continue.&lt;br /&gt;
&lt;br /&gt;
=== Continue Song ===&lt;br /&gt;
Checking this box allows for playback to resume (after being paused) when any note key on the MIDI device is pressed.&lt;br /&gt;
You can choose from the dropdown list whether you want to resume playback from the current cursor position or rather restart the pattern from the beginning.&lt;br /&gt;
&lt;br /&gt;
=== Pass MIDI to Active Plugin ===&lt;br /&gt;
By default, OpenMPT passes all MIDI messages received from external MIDI devices that it did not process by itself to the active instrument plugin. Unchecking this box will avoid passing those MIDI messages on, which avoids potentially modifying the plugin state through MIDI CCs and the like. Messages that OpenMPT intercepts (such as note-on and note-off messages) are still processed as normal.&lt;br /&gt;
&lt;br /&gt;
=== Enable MIDI recording when OpenMPT starts ===&lt;br /&gt;
If this box is checked, MIDI In Record is enabled automatically when starting OpenMPT.&lt;br /&gt;
&lt;br /&gt;
== MIDI Recording - Volume and Controllers ==&lt;br /&gt;
&lt;br /&gt;
=== Record Note Off ===&lt;br /&gt;
Checking this box records Note Off commands (&amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; in instrument mode, &amp;lt;code&amp;gt;^^&amp;lt;/code&amp;gt; in sample mode) when recording from the MIDI device.&lt;br /&gt;
&lt;br /&gt;
=== Record Note Velocity ===&lt;br /&gt;
Checking this box records the note′s key velocity into the pattern as a volume effect. Some MIDI controllers may not support note velocity and will always send the same velocity value. You may also change the velocity amplification factor depending on your play style. If you have a hard playing style and use an amplification greater than 100%, this setting may decrease the dynamic range of the recorded note velocity, unless your MIDI hardware compensates for your play style, for example by applying a velocity curve.&lt;br /&gt;
&lt;br /&gt;
=== Combine MIDI volume to Note Velocity ===&lt;br /&gt;
Checking this box takes transmitted MIDI volume changes (MIDI CC 7) into account and multiplies them with the note velocity when notes are entered from a MIDI device, given that “Record Note Velocity” is enabled.&lt;br /&gt;
&lt;br /&gt;
=== Record Controllers to Macros ===&lt;br /&gt;
Checking this box makes OpenMPT record incoming MIDI CCs as MIDI macro commands. Note that only macro values are entered; you will need to set up macro assignments in order for the proper controllers to be manipulated. For an easier and more versatile method of recording MIDI events, have a look at the [[Manual: MIDI Mapping|MIDI Mapping]].&lt;br /&gt;
&lt;br /&gt;
If you want certain MIDI CCs to be ignored (e.g. because they are triggered automatically by your MIDI device), you can add their decimal number in the exception list.&lt;br /&gt;
&lt;br /&gt;
=== Record Aftertouch ===&lt;br /&gt;
If you are using a MIDI device that supports aftertouch (both channel pressure and polyphonic aftertouch are supported), you can enable this option to record pressure changes to the pattern as either volume commands or MIDI Macro commands.&lt;br /&gt;
&lt;br /&gt;
=== Record Pitch Bend messages ===&lt;br /&gt;
MIDI pitch bend messages can be record in one of four ways:&lt;br /&gt;
* &#039;&#039;&#039;Do not record Pitch Bends&#039;&#039;&#039;: Pitch bend messages are never recorded to patterns.&lt;br /&gt;
* &#039;&#039;&#039;Record only as MIDI Macros&#039;&#039;&#039;: In formats that support MIDI macros, pitch bend messages are recorded as MIDI macro commands. Note that only macro values are entered; you will need to [[Manual: Macro Configuration#Parametered Macros|set up a macro assignment]] in order to send these macros as MIDI Pitch Bend messages to plugins.&lt;br /&gt;
* &#039;&#039;&#039;Record as Finetune or MIDI Macros&#039;&#039;&#039;: In the MPTM format, pitch bend messages are recorded as finetune commands; in other formats, MIDI macros are used if supported by the format.&lt;br /&gt;
* &#039;&#039;&#039;Record only as Finetune&#039;&#039;&#039;: In the MPTM format, pitch bend messages are recorded as finetune commands; in other formats, nothing is recorded.&lt;br /&gt;
&lt;br /&gt;
== MIDI File Import ==&lt;br /&gt;
&lt;br /&gt;
The following options are used when [[Manual: Module formats#The MIDI format .28.mid.29|importing MIDI files]].&lt;br /&gt;
&lt;br /&gt;
=== Quantize ===&lt;br /&gt;
Since MIDI files are not pattern-based, you need to decide how many time units you want to put within a single pattern row. This setting lets you choose the note length of a single pattern row. For typical MIDI files, 16th or 32nd notes should be sufficient. The correct value of this setting depends on the smallest note unit used in the imported MIDI files, and there is no “one correct setting”.&lt;br /&gt;
&lt;br /&gt;
=== Ticks / Row ===&lt;br /&gt;
For further pattern detail, you can choose the amount of ticks per row in the range of 2 to 16. Higher values allow for very precise placement of note delays and note cuts — sometimes maybe &#039;&#039;too&#039;&#039; precise depending on how you want to further mangle the pattern data. On the other hand, higher values make it more difficult to import small pitch slides accurately, but with too low values pitch slides may sound too coarse. Hence, it is recommended to use an medium value (like 6) by default and only change it for importing particular files if it is required.&lt;br /&gt;
&lt;br /&gt;
=== Pattern Length ===&lt;br /&gt;
Since MIDI files are not pattern-based, you have to select the pattern length on your own.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Setup/MIDI]]&lt;br /&gt;
[[Category:MIDI|MIDI Setup]]&lt;br /&gt;
[[de:Handbuch: Setup/Midi]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Keyboard_Actions&amp;diff=4968</id>
		<title>Manual: Keyboard Actions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Keyboard_Actions&amp;diff=4968"/>
		<updated>2025-07-25T23:28:00Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* Sample Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of all customisable keyboard actions in OpenMPT. They can be configured in the [[Manual: Setup/Keyboard|Keyboard Setup dialog]].&lt;br /&gt;
&lt;br /&gt;
Default key combinations listed in the tables below assume a US keyboard layout. Generally, alphanumeric keys in shortcuts will stay the same in other keyboard layouts (so &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; does not turn into &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Y&amp;lt;/kbd&amp;gt; on a German layout), with the exception of note entry keys, which are set up based on their position on the keyboard instead (so on a French keyboard, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; and &amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; are used for playing a C across three octaves even though the table below says &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; and &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;). Non-alphanumeric keys generally vary a lot between keyboard layouts, so there might not be a direct mapping to your keyboard layout — the key might have a completely different label or not exist at all. You can always review the &#039;&#039;actual&#039;&#039; key combinations used by OpenMPT on your setup by reviewing them in the Keyboard setup dialog.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Keyboard shortcuts that clash with the default text editing shortcuts of the operating system (e.g. &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;, etc.) are ignored when the input focus is within a text field.&lt;br /&gt;
&lt;br /&gt;
== Global Keys ==&lt;br /&gt;
&lt;br /&gt;
Global keyboard shortcuts work on most parts of OpenMPT as long as one of the program’s windows is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| File/New || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Creates a new song. The currently edited song is not closed, as OpenMPT can have multiple documents open at the same time.&lt;br /&gt;
|-&lt;br /&gt;
| File/Open || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;O&amp;lt;/kbd&amp;gt; || Opens one or more existing songs.&lt;br /&gt;
|-&lt;br /&gt;
| File/Append Module || || [[Manual: Module Merging|Appends]] (merges) the song data (samples, instruments, plugins, patterns and sequences) of one or more existing songs to the currently active song.&lt;br /&gt;
|-&lt;br /&gt;
| File/Close || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; || Closes the current song. You are prompted to save the song if it has been modified.&lt;br /&gt;
|-&lt;br /&gt;
| File/Close All || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; || Closes all open songs. You are prompted to save modified songs.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Saves the song to disk.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save As || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Allows you to save the file with a new name or in another folder.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save Copy || || Allows you to save a copy of the file. The next Save action will update the file at its original location again.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save As Template || || Creates a template from the current song.&lt;br /&gt;
|-&lt;br /&gt;
| File/Open Template || || Opens a file picker in the template module folder.&lt;br /&gt;
|-&lt;br /&gt;
| File/Stream Export || || Exports the current track into a lossless or lossy [[Manual: Saving and exporting#Stream Export|streaming file]].&lt;br /&gt;
|-&lt;br /&gt;
| File/Export as MIDI || || Exports the current track into the .mid format. See the section on [[Manual: Saving and exporting#MIDI Export|MIDI export]] for a detailed explanation of how this file is exported.&lt;br /&gt;
|-&lt;br /&gt;
| File/Export OPL Register Dump || || Exports the current track into one of several OPL register dump formats. See the section on [[Manual: Saving and exporting#OPL Export|OPL export]] for a detailed explanation of how this file is exported.&lt;br /&gt;
|-&lt;br /&gt;
| File/Compatibility Export || || Exports the current track without any [[Manual: Saving and exporting#Compatibility Export|file format hacks]] to its original format.&lt;br /&gt;
|-&lt;br /&gt;
| File/Import MIDI Library || || Imports the MIDI Instrument Library of your choosing. The MIDI Library can be accessed from the [[Manual: Tree View#MIDI Library|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| File/Add Sound Bank || || Imports a sound bank of your choosing. Sound banks can be accessed from the [[Manual: Tree View#Sound Banks|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| Previous Document || || Goes to the previous module file that is open (these are visible in the Windows Menu).&lt;br /&gt;
|-&lt;br /&gt;
| Next Document || || Goes to the next module file that is open (these are visible in the Windows Menu).  &lt;br /&gt;
|-&lt;br /&gt;
| Play Song / Pause Song || &amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt; || Toggles the playback of the current track. The playback cursor is not reset when using this toggle; that is, it plays from where the cursor left off when it was last pressed.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song / Stop Song || || Toggles the playback of the current track. The playback cursor is reset to the start of the song.&lt;br /&gt;
|-&lt;br /&gt;
| Pause Song || &amp;lt;kbd&amp;gt;F8&amp;lt;/kbd&amp;gt; || Only stops the playback of the current track but does not reset the playback pointer.&lt;br /&gt;
|-&lt;br /&gt;
| Stop Song || &amp;lt;kbd&amp;gt;Escape&amp;lt;/kbd&amp;gt; || Stops the playback of the current track and resets the playback cursor to the start of the song.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Start || &amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; || Resets the playback cursor to the very first row and begins playback from there.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Cursor / Pause || || Resets the playback cursor to the row where the editing cursor is set, and begins playback from there if playback is currently stopped, otherwise it pauses playback. Playback will continue until the end of the track.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Cursor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; || Resets the playback cursor to the row where the editing cursor is set, and begins playback from there. Playback will continue until the end of the track.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Pattern Start / Pause || || Resets the playback cursor to the first row of the currently edited pattern and begins playback from there if playback is currently stopped, otherwise it pauses playback. &lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Pattern Start || || Resets the playback cursor to the first row of the currently edited pattern and begins playback from there.&lt;br /&gt;
|-&lt;br /&gt;
| Play Pattern from Start || &amp;lt;kbd&amp;gt;F7&amp;lt;/kbd&amp;gt; || Loops the current pattern, starting at the first row of the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Play Pattern from Cursor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F7&amp;lt;/kbd&amp;gt; || Loops the current pattern, starting at the row where the editing cursor is currently placed.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Loop Song || || Enables or disables the song loop status.&lt;br /&gt;
|-&lt;br /&gt;
| Panic || || Stops all sample, OPL and plugin instrument voices.&lt;br /&gt;
|-&lt;br /&gt;
| Estimate Song Length || || Estimates the playback length of the entire track.&lt;br /&gt;
|-&lt;br /&gt;
| Show Approx. Real BPM || || Estimates the beats per minute of the song, based on the current tempo and the number of ticks per row, plus the Tempo Mode in the Song Properties dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle MIDI Record || &amp;lt;kbd&amp;gt;F9&amp;lt;/kbd&amp;gt; || Toggles the MIDI Record option.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Tempo || || Increases the tempo of the currently playing module by 1 BPM. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Tempo || || Decreases the tempo of the currently playing module by 1 BPM. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Tempo (Fine) || || Increases the tempo of the currently playing module by 0.1 BPM if the module format supports fractional tempos. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Tempo (Fine) || || Decreases the tempo of the currently playing module by 0.1 BPM if the module format supports fractional tempos. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Ticks per Row || || Increases the speed of the currently playing module by 1 tick per row. This does not modify the initial Ticks per Row setting of the song, just current playback and can be overridden by speed pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Ticks per Row || || Decreases the speed of the currently playing module by 1 tick per row. This does not modify the initial Ticks per Row setting of the song, just current playback and can be overridden by speed pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Undo || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; || Rescinds the last edit in the pattern or sample editor.&lt;br /&gt;
|-&lt;br /&gt;
| Redo || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Y&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; || Reapplies the last undone action.&lt;br /&gt;
|-&lt;br /&gt;
| Cut || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;X&amp;lt;/kbd&amp;gt; || Copies the selected pattern, sample or instrument data into the clipboard, then removes it from the selection it occupies.&lt;br /&gt;
|-&lt;br /&gt;
| Copy || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Copies the selected pattern, sample or instrument data into the clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Paste || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Pastes data from the clipboard. In the pattern editor, it is pasted at the location of the cursor, overwriting any pattern data that falls within the paste area. With sample data, clipboard contents replace the &#039;&#039;&#039;whole&#039;&#039;&#039; sample.&lt;br /&gt;
|-&lt;br /&gt;
| Mix Paste || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Mixes clipboard contents with existing data. In the pattern editor, clipboard contents are pasted in the same row at the same column of the current (visible) pattern where the cursor is located, except where there is already any data in any corresponding field of the paste area. In the sample editor, the source and clipboard sample waveforms are mixed together.&lt;br /&gt;
|-&lt;br /&gt;
| Mix Paste (IT Style) || || For detailed differences between Mix Paste and Mix Paste (IT Style), consult the [[Manual: Patterns#Paste Modes|Pattern Editor help]]. The two commands are identical when used in the sample editor.&lt;br /&gt;
|-&lt;br /&gt;
| Paste Flood || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Clipboard contents are pasted from the cursor, repeating the data paste until every row in the pattern has been filled and pasting over any data in its path.&lt;br /&gt;
|-&lt;br /&gt;
| Push Forward Paste (Insert) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Patterns: Clipboard contents are inserted at the row of the cursor, and pushing all data below that row further down the pattern. Any data of the affected channels pushed beyond the pattern’s last row is deleted. Samples: The sample data from the clipboard replaces the current selection. If there is no selection, the sample is inserted at the last selected position.&lt;br /&gt;
|-&lt;br /&gt;
| Select All || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;5&amp;lt;/kbd&amp;gt; || Selects all pattern or sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Find / Replace || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Opens the Find/Replace dialog, which allows you to search for and/or replace given pattern data. Find starts from the cursor location.&lt;br /&gt;
|-&lt;br /&gt;
| Find Next || &amp;lt;kbd&amp;gt;F3&amp;lt;/kbd&amp;gt; || Applies the current Find settings and searches for the next data that matches it, starting from the current cursor location.&lt;br /&gt;
|-&lt;br /&gt;
| View General || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Opens the [[Manual: General|General Tab]] of the currently focussed module.&lt;br /&gt;
|-&lt;br /&gt;
| View Pattern || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Patterns|Pattern Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Samples || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Samples|Sample Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Instruments || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Instruments|Instrument Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Comments || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F9&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Comments|Comments Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Main Toolbar || || Shows / hides the [[Manual: Main Toolbar|Main Toolbar]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Tree View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F2&amp;lt;/kbd&amp;gt; || Shows / hides the [[Manual: Tree View|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| View Options || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F1&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Setup|Setup dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Channel Manager || || Opens the [[Manual: Channel Manager|Channel Manager]].&lt;br /&gt;
|-&lt;br /&gt;
| View Plugin Manager || || Opens the [[Manual: Plugin Manager|Plugin Manager dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Song Properties || || Opens the [[Manual: Song Properties|Song Properties dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Global Tempo Swing Settings || || Opens the [[Manual: Tempo Swing Settings|Tempo Swing Settings dialog]] for the song’s global time signature. If modern tempo mode is not enabled yet, the [[Manual: Song Properties|Song Properties dialog]] is opened instead so that it can be enabled.&lt;br /&gt;
|-&lt;br /&gt;
| View Zxx Macro Configuration || || Opens the [[Manual: Macro Configuration|MIDI Macro Configuration]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| View MIDI Mapping || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F3&amp;lt;/kbd&amp;gt; || Opens the [[Manual: MIDI Mapping|MIDI Mapping dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Edit History || || Opens the [[Manual: Edit History|Edit History]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Between Upper / Lower View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Switches keyboard focus between the upper and lower half of the currently focussed song view.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Instrument Library  || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Sets keyboard focus to the [[Manual: Tree View|Instrument Library]], or switches back to the last used editor window if the tree view already has focus.&lt;br /&gt;
|-&lt;br /&gt;
| Help || &amp;lt;kbd&amp;gt;F1&amp;lt;/kbd&amp;gt; || Opens the manual.&lt;br /&gt;
|-&lt;br /&gt;
| Open Context Menu || &amp;lt;kbd&amp;gt;▤ Application&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Opens the context menu for the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad/&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Changes the current instrument to the previous one. In the sample editor, the previous sample is chosen.&lt;br /&gt;
|-&lt;br /&gt;
| Next Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad*&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Changes the current instrument to the next one. In the sample editor, the next sample is chosen.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Octave || &amp;lt;kbd&amp;gt;Numpad/&amp;lt;/kbd&amp;gt; || Changes the current octave to the next lower octave.&lt;br /&gt;
|-&lt;br /&gt;
| Next Octave || &amp;lt;kbd&amp;gt;Numpad*&amp;lt;/kbd&amp;gt; || Changes the current octave to the next higher octave.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Changes the current pattern to the previous one in the pattern order.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Changes the current pattern to the next one in the pattern order.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current measure) || || Changes the current pattern to the previous one in the pattern order once the current measure has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current measure) || || Changes the current pattern to the next one in the pattern order once the current measure has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current beat) || || Changes the current pattern to the previous one in the pattern order once the current beat has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current beat) || || Changes the current pattern to the next one in the pattern order once the current beat has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current row) || || Changes the current pattern to the previous one in the pattern order once the current row has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current row) || || Changes the current pattern to the next one in the pattern order once the current row has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Dummy Shortcut || || Some keyboard shortcuts are created automatically by OpenMPT (e.g. the combinations of pressing the selection key together with navigation keys). If you need to prevent OpenMPT from automatically assigning a specific key combination, you can assign it to this dummy shortcut instead, so it will not be usable by automatically generated shortcuts. This will also prevent the key combination from being used by new default key combinations added by future OpenMPT updates.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pattern ==&lt;br /&gt;
&lt;br /&gt;
=== Order List ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts operate while the cursor focus is in the Order List.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Delete Order || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Erases the currently selected pattern(s) in the Order List (the pattern itself is not removed, only the reference).&lt;br /&gt;
|-&lt;br /&gt;
| Insert Order || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Duplicates the currently selected pattern &#039;&#039;reference&#039;&#039;(s) in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Separator || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts a separator item (+++) at the next position.&lt;br /&gt;
|-&lt;br /&gt;
| Copy Orders || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Copies the currently selected pattern &#039;&#039;references&#039;&#039; in the Order List to the clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Pattern || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Resets the Pattern Editor to show the highlighted pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pattern Editor || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor focus to the Pattern Editor. There is also a more general version of this shortcut that works for all other song views as well (“Toggle Between Upper / Lower View”).&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Selects the previous pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Selects the following pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| First Order || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Selects the first pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Last Order || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Selects the final pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Pattern Index Digit [0 - 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the respective numeral into the pattern ID box.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Pattern Index || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Adds one to the pattern number, up to the highest indexed pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Pattern Index || &amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Subtracts one from the pattern number, to a minimum of index 0.&lt;br /&gt;
|-&lt;br /&gt;
| Separator Index || &amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Adds a separator pattern item (+++) at the current position.&lt;br /&gt;
|-&lt;br /&gt;
| Stop Index || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Adds a stop pattern item (---) at the current position.&lt;br /&gt;
|-&lt;br /&gt;
| Lock Playback to Selection || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Song playback is locked to the patterns in the current order selection.&lt;br /&gt;
|-&lt;br /&gt;
| Unlock Playback || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || If playback has been limited to an order selection before, the playback lock can be removed here.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current pattern) || &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current pattern has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current measure) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current measure has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current beat) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current beat has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current row) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current row has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Stream Export || || Opens the [[Manual: Saving and exporting#Stream Export|Wave Export dialog]] for the selected patterns.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quick Channel Settings ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts operate while the [[Manual: Quick Channel Settings|Quick Channel Settings dialog]] is open.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Previous Channel || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Shows the channel settings for the previous channel.&lt;br /&gt;
|-&lt;br /&gt;
| Next Channel || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Shows the channel settings for the next channel.&lt;br /&gt;
|-&lt;br /&gt;
| Pick Color from Previous Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Assigns the color of the previous channel to the current channel.&lt;br /&gt;
|-&lt;br /&gt;
| Pick Color from Next Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Assigns the color of the next channel to the current channel.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pattern Editor || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Closes the dialog and returns to the Pattern Editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== General Context ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts will work if the cursor focus is within any of the columns of the Pattern Editor, except where noted. When navigating (moving the cursor) to before the first row or after the last row in the pattern, the cursor “wraps” to the other side of the same pattern, if the “Cursor Wrap” option is enabled (in the Options section of the [[Manual: Setup/General|General tab]] of the Setup dialog). If navigating beyond the first or last row when the “Continuous Scroll” option is enabled, the cursor will instead move to the previous/next pattern in the order list. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|- &lt;br /&gt;
| Navigate Down by 1 Row || &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor to the next row in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Up by 1 Row || &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor to the previous row in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Down by Spacing || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor down by the value in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Up by Spacing || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor up by the value in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Left || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the cursor to the previous column in the same row, going to the previous channel′s last column if moving from the first column of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Right || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the cursor to the next column in the same row, going to the next channel’s first column if moving from the last column of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate to Next Channel || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor to the same column in the same row in the next channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate to Previous Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor to the same column in the same row in the previous channel.&lt;br /&gt;
|- &lt;br /&gt;
| Jump Down by Measure || &amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Up by Measure || &amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Down by Beat || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Up by Beat || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Down to Measure || || Moves the cursor down to the first row of the next measure, as determined by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Up to Measure || || Moves the cursor up to the first row of the previous measure, as determined by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Down to Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down to the first row of the next beat, as determined by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Up to Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up to the first row of the previous beat, as determined by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump to Previous Entry in Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor to the next non-empty cell (note, instrument, etc.) of the currently selected column above the current cursor position. When combined with the Selection key, the selection will be extended to the next non-empty cell in the current pattern only. Otherwise, this command continues to search for a non-empty cell in the previous patterns.&lt;br /&gt;
|-&lt;br /&gt;
| Jump to Next Entry in Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor to the next non-empty cell (note, instrument, etc.) of the currently selected column below the current cursor position. When combined with the Selection key, the selection will be extended to the next non-empty cell in the current pattern only. Otherwise, this command continues to search for a non-empty cell in the next patterns.&lt;br /&gt;
|-&lt;br /&gt;
| Go to First Channel || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first column of the first channel in the same row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to First Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first row of the same channel in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Go to First Row of First Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first column of the first channel in the first row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Channel || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last column of the last channel in the same row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last row of the same channel in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Row of Last Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last column of the last channel in the last row. &lt;br /&gt;
|- &lt;br /&gt;
| Go to note column || || Moves the cursor to the note column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to instrument column || || Moves the cursor to the instrument column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to volume effect column || || Moves the cursor to the volume effect column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to effect comamnd column || || Moves the cursor to the effect command column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to effect parameter column || || Moves the cursor to the effect parameter column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Previous Pattern || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Displays the previous pattern in the order list, moving the cursor to its equivalent position in it.&lt;br /&gt;
|- &lt;br /&gt;
| Next Pattern || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Displays the next pattern in the order list, moving the cursor to its equivalent position in it.&lt;br /&gt;
|- &lt;br /&gt;
| Previous Sequence || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Cycles to the previous sequence. If the current sequence is the first, the last sequence is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Next Sequence || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Cycles to the next sequence. If the current sequence is the last, the first sequence is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Left || || Scrolls the pattern editor to the left without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Right || || Scrolls the pattern editor to the right without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Up || || Scrolls the pattern editor up without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Down || || Scrolls the pattern editor down without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Selection Key || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; || The modifier key to be used to extend the selection when navigating with keyboard shortcuts.&lt;br /&gt;
|- &lt;br /&gt;
| Copy Select Key || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; || The modifier key to be used to copy the selection when dragging with the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Select Channel / Select All || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Selects all events of the channel where the cursor is located in the current pattern, or all events in the pattern if the entire channel is already selected.&lt;br /&gt;
|- &lt;br /&gt;
| Select Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Selects the column in which the cursor is located in all rows of the current pattern.&lt;br /&gt;
|- &lt;br /&gt;
| Select Row || || Completely selects all rows covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Select Event || || Completely selects all events covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Select Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Extends the current selection so that it starts on the first row of a beat and ends on the last row of a beat.&lt;br /&gt;
|- &lt;br /&gt;
| Select Measure || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Extends the current selection so that it starts on the first row of a measure and ends on the last row of a measure.&lt;br /&gt;
|- &lt;br /&gt;
| Lose Selection || || Resets the selection rectangle to contain only the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Copy and Lose Selection || || Copies the selected events to the clipboard and unselects them.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Copy || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Copies only one event of data (where the cursor is located) to OpenMPT′s “Quick” clipboard; the standard clipboard is not erased. Each column pair has its own Quick clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Paste || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Pastes the data in OpenMPT′s “Quick” clipboard to the location of the cursor. The data last saved in that column’s clipboard will be pasted in the cursor′s corresponding column.&lt;br /&gt;
|-&lt;br /&gt;
| Cut to Pattern Channel Clipboard || || Copies and clears the entire channel the cursor is located in. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Channel Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Cut to Pattern Clipboard || || Copies and clears the entire current pattern. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Copy to Pattern Channel Clipboard || || Copies the entire channel the cursor is located in. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Channel Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Copy to Pattern Clipboard || || Copies the entire current pattern. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Paste from Pattern Channel Clipboard || || Replaces the contents of the channel the cursor is located in with the contents of the pattern channel clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Paste from Pattern Clipboard || || Replaces the contents of the current pattern with the contents of the pattern clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Clipboard Manager || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Toggles the visibility of the pattern clipboard manager.&lt;br /&gt;
|-&lt;br /&gt;
| Cycle to Previous Clipboard || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Makes the previous internal clipboard the current clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Cycle to Next Clipboard || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Makes the next internal clipboard the current clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Clear Row || || Deletes all event data in the same row in the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the selected pattern data, or just the data under the current cursor position if no selection has been made.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field (IT Style) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;.&amp;lt;/kbd&amp;gt; || Same as “Clear field”, but also clears the instrument number if a note event is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Row and Step || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Clear row”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field and Step || || Same as “Clear field”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field and Step (IT Style) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Clear field (IT Style)”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same number of rows as the selection, affecting the same number of channels where the selection extends; the data is moved up to replace the cleared data, and empty rows are added at the end of the affected channels.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (All Channels) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same amount of rows as the selection, on all channels; the data is moved up to replace the cleared data, and empty rows are added at the end of the pattern.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (Global) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same number of rows as the selection, affecting the same number of channels where the selection extends; this also affect all following patterns as no empty rows are inserted.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (All Channels, Global) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same amount of rows as the selection, on all channels; this also affect all following patterns as no empty rows are inserted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in the selected channel down by the amount of selected rows. Event data in the last row of those channels is deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (All Channels) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in all channels down by the amount of selected rows. Event data in the last row of all channels is deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (Global) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in the selected channel down by the amount of selected rows. Event data in the last rows is pushed to the next pattern(s), where the same action is repeated.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (All Channels, Global) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in all channels down by the amount of selected rows. Event data in the last rows is pushed to the next pattern(s), where the same action is repeated.&lt;br /&gt;
|- &lt;br /&gt;
| Mute Current Channel || &amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Toggles the sound output (mute) for the channel(s) covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Solo Current Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Toggles the sound output (mute) for all channels except the channel(s) covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Unmute All Channels || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Unmutes the sound output for all channels.&lt;br /&gt;
|- &lt;br /&gt;
| (Un)mute Channel on Pattern Transition || || Toggles the sound output (mute) for the channel(s) covered by the current selection, but the change takes place when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Unmute All Channels on Pattern Transition || || Unmutes the sound output for all channels when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Solo Channel on Pattern Transition || || Toggles the sound output (mute) for all channels except the one where the cursor is located, but the change takes place when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Channel Record Select || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Toggles the channel(s) covered by the current selection to belong to the primary record group.&lt;br /&gt;
|- &lt;br /&gt;
| Channel Split Record Select || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Toggles the channel(s) covered by the current selection to belong to the [[Manual: Keyboard Split|split record]] group.&lt;br /&gt;
|- &lt;br /&gt;
| Reset Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Stops all note processing, and resets all channel variables to their defaults (volume, panning, etc.) on the selected channel(s).&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Channel || || Changes the pitch of all notes on the selected channel in all patterns by a selectable amount of semitones.&lt;br /&gt;
|- &lt;br /&gt;
| Duplicate Channel || || Adds a new channel to the module and carries over all note data from the channel containing the edit cursor to this new channel.&lt;br /&gt;
|- &lt;br /&gt;
| Add Channel Before Current || || Adds a new empty channel before the channel containing the edit cursor.&lt;br /&gt;
|- &lt;br /&gt;
| Add Channel After Current || || Adds a new empty channel after the channel containing the edit cursor.&lt;br /&gt;
|- &lt;br /&gt;
| Remove Current || || Removes the channel containing the edit cursor. If the channel contains any data on any pattern, a confirmation prompt is shown.&lt;br /&gt;
|- &lt;br /&gt;
| Move Channels to Left || || Moves the channels covered by the current selection (if there is none, just the channel where the edit cursor is located) to the left by one channel.&lt;br /&gt;
|- &lt;br /&gt;
| Move Channels to Right || || Moves the channels covered by the current selection (if there is none, just the channel where the edit cursor is located) to the right by one channel.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Channel Settings || || Opens the [[Manual: Quick Channel Settings|Quick Channel Settings dialog]] for the channel where the cursor is located.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises by one the note number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers by one the note number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises by one the octave number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers by one the octave number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Custom || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || Lowers or raises the selected notes by an arbitrary amount of semitones.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Custom (Quick) || || Applies a previously chosen custom transpose amount. If no amount has been chosen before, the behaviour of this shortcut is identical to Transpose Custom.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry +1 || || Increases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry -1 || || Decreases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry Up (Coarse) || || Increases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one octave (notes), 10 (instruments and volume effect parameters) or 16 (effect parameters).&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry Down (Coarse) || || Decreases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one octave (notes), 10 (instruments and volume effect parameters) or 16 (effect parameters).&lt;br /&gt;
|- &lt;br /&gt;
| Insert New Pattern || || Inserts a new blank pattern after the current pattern, displays it, and moves the cursor to the same position in it. Also functions when cursor focus is in the Order list.&lt;br /&gt;
|- &lt;br /&gt;
| Duplicate Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Inserts a new pattern with the current pattern′s contents.&lt;br /&gt;
|- &lt;br /&gt;
| Split Pattern || || Splits the current pattern at the cursor location.&lt;br /&gt;
|- &lt;br /&gt;
| Amplify Selection || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Opens a dialog to change the note volume commands of the selected volume data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Note || || Transitions smoothly (using all available notes) between notes in the selection, filling in (and replacing if necessary) all rows with new note data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Instrument || || Transitions smoothly (using all available instrument numbers) between instrument numbers in the selection, filling in all rows with new instrument data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Volume || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;J&amp;lt;/kbd&amp;gt; || Transitions smoothly between data amounts in the selection, filling in (and replacing if necessary) all rows with new volume effects. The first and last rows of the selection must contain the same volume effect, or one of the two rows might be empty.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Effect || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;K&amp;lt;/kbd&amp;gt; || Transitions smoothly between data amounts in the selection, filling in (and replacing if necessary) all rows with new effect data. The first and last rows of the selection must contain the same effect, or one of the two rows might be empty. Different effects within the selection are not overwritten.&lt;br /&gt;
|- &lt;br /&gt;
| Apply Current Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Applies the current instrument to all cells in the selection that contain note data.&lt;br /&gt;
|- &lt;br /&gt;
| Apply Current Instrument to Existing Only || || Applies the current instrument to all cells in the selection that contain an instrument numbers. Notes without instrument numbers are not updated.&lt;br /&gt;
|- &lt;br /&gt;
| Grow Selection || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || “Expands” the selection by doubling the number of the selected rows, and evenly spacing out the event data within it. The expansion will replace event data below it in the same channels as the selection.&lt;br /&gt;
|- &lt;br /&gt;
| Shrink Selection || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || “Shrinks” the selection by deleting every other row of the selection. However, if only part of any row is selected, the data corresponding to the deleted selected data is also deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Expand Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || “Expands” the entire pattern by doubling the number of the rows, and evenly spacing out the event data within it.&lt;br /&gt;
|- &lt;br /&gt;
| Shrink Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || “Shrinks” the entire pattern by removing every other row.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Follow Song || &amp;lt;kbd&amp;gt;F11&amp;lt;/kbd&amp;gt; || Toggles the “Follow Song” function.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Loop Pattern || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F11&amp;lt;/kbd&amp;gt; || Toggles the Loop Pattern feature. &lt;br /&gt;
|- &lt;br /&gt;
| Play Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Process and play only the events in the current row where the cursor is located.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Row/Channel/… || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Go To|Go To]] dialog to allow you to jump to a different position in the module.&lt;br /&gt;
|- &lt;br /&gt;
| Pick Up Nearest Instrument Number || || Seeks for the nearest instrument number in the pattern channel the cursor currently is in. If an instrument number is found, it is set as the currently active instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Enable Recording || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Toggles the Event Record feature. When enabled, patterns may be edited.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Metronome || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Toggles the [[Manual: Metronome Settings|Metronome]].&lt;br /&gt;
|- &lt;br /&gt;
| Set Edit Step on Note Entry || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt; || The modifier key(s) that, when pressed with digits 0-9, allows you to change the Edit Step amount without using the mouse or moving the cursor focus out of the editor.&lt;br /&gt;
|- &lt;br /&gt;
| Increase Edit Step || || Increases the Edit Step by one row.&lt;br /&gt;
|- &lt;br /&gt;
| Decrease Edit Step || || Decreases the Edit Step by one row.&lt;br /&gt;
|- &lt;br /&gt;
| Switch to Order List || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Toggles the cursor focus between the pattern editor and the current pattern in the Pattern Order list. There is also a more general version of this shortcut that works for all other song views as well (“Toggle Between Upper / Lower View”).&lt;br /&gt;
|- &lt;br /&gt;
| Toggle PC Event/Instrument Plugin Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;/&amp;lt;/kbd&amp;gt; || Opens the editor for the plugin of the selected Parameter Control Event or instrument number.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Channel’s Plugin Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the editor for the current channel′s assigned plugin.&lt;br /&gt;
|- &lt;br /&gt;
| Show Note Properties || &amp;lt;kbd&amp;gt;▤ Application&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Note Properties|Note Properties]] dialog, where you can assign any event data to the current row of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Show Pattern Properties || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Pattern Properties|Pattern Properties]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Split Keyboard Settings Dialog || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Keyboard Split|Keyboard Split]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| Open Effect Visualizer || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Parameter Editor|Parameter Editor]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| Show Chord Editor || || opens the [[Manual: Chord Editor|Chord Editor]] dialog. &lt;br /&gt;
|-&lt;br /&gt;
| Show Context (Right-Click) Menu || || Opens the edit context menu at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Channel Context (Right-Click) Menu || || Opens the channel context menu at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Channel Plugin Context (Right-Click) Menu || || Opens the plugin context menu of the channel at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Playback Time at Current Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Shows the estimated time within the track at the start of the current row.&lt;br /&gt;
|- &lt;br /&gt;
| Lock Playback to Rows || || If a selection is made, playback is locked to the selected rows. Otherwise, a previous playback lock is removed.&lt;br /&gt;
|-&lt;br /&gt;
| Quantize Settings || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Opens the record quantization settings.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle row playback when navigating ||  || Toggles the state of the &amp;quot;play whole row when navigating&amp;quot; feature. The new state of the feature is announced in the status bar.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Overflow Paste || || When enabled, pasting will continue to the next pattern if the data overflows the current pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Note Off Record (PC Keyboard) || || Toggles the recording of Note Off events from the PC keyboard in the pattern editor (also configurable from the [[Manual: Setup/General#Record note off|General setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Note Off Record (MIDI) || || Toggles the recording of Note Off events from MIDI in the pattern editor (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Apply Octave Transpose to incoming MIDI Notes || || Toggles application of the base octave transposition to notes received via MIDI in the pattern editor (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Continue Song when MIDI Note is received || || Toggles whether pattern playback continues when a note is received via MIDI (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Respond to Play / Continue / Stop Song MIDI messages || || Toggles whether pattern playback starts / stops / continues when the corresponding MIDI commands are received (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI Velocity || || Toggles whether MIDI velocity is recorded (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI Pitch Bend || || Toggles whether MIDI pitch bends are recorded to patterns (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI CCs || || Toggles whether MIDI CC events are recorded to patterns (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Instrument Column Visibility || || Shows or hides the instrument column.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Volume Column Visibility || || Shows or hides the volume column.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Effect Column Visibility || || Shows or hides the effect column.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Note Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the note column (the first column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Base Octave [note] || &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt;, ... || Enters a note in the octave indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +1 [note] || &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt;, ... || Enters a note in the next higher octave indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +2 [note] || &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;X&amp;lt;/kbd&amp;gt;, ... || Enters a note two octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +3 [note] || || Enters a note three octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +4 [note] || || Enters a note four octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Set Octave [0 – 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Sets the selected note’s octave.&lt;br /&gt;
|-&lt;br /&gt;
| Chord Modifier || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; || The modifier key(s) that calls a chord rather than a note. The chords are set and assigned in the [[Manual: Chord Editor|Chord Editor]].&lt;br /&gt;
|-&lt;br /&gt;
| Note Cut || &amp;lt;kbd&amp;gt;`&amp;lt;/kbd&amp;gt; || Enters a Note Cut command (^^). Note: The default shortcut is position-independent and is bound to the key that is usually left of &amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt;. &lt;br /&gt;
|-&lt;br /&gt;
| Note Off || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a Note Off command (==). Note: The default shortcut is position-independent and is bound to the key that is usually left of &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Note Fade || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a Note Fade command (~~). Note: The default shortcut is position-independent and is bound to the key that is usually lef of &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Control || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Enters an absolute [[Manual:_Parameter_Control_Events|Parameter Control event]] (PC). Note: The default shortcut is position-independent and is bound to the key that is usually right of &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Control (Smooth) || &amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Enters a smooth sliding Parameter Control event (PCs). Note: The default shortcut is position-independent and is bound to the key that is usually right of &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Instrument Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the instrument column (the second column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Set Instrument Digit [0 – 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the instrument field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the volume column (the third column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Set Volume Digit [0 - 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the volume parameter field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
| Set Volume Digit [A - F] || || Enters the digit into the rightmost place in the volume parameter field, moving the existing digits to the left. By default, volume column parameters are shown in decimal and these shortcuts are not assigned. You can use them after enabling the [[Manual: Hidden Settings#.5BPattern Editor.5D|Pattern Editor.VolumeColumnInHex]] hidden setting.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume || &amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Enters a note volume (vxx) command into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Panning || &amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Enters a panning command (pxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume Slide Up || &amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Enters volume slide up (cxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume Slide Down || &amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Enters a volume slide down (dxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Fine Volume Slide Up || &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Enters a fine volume slide up (axx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Fine Volume Slide Down || &amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Enters a fine volume slide down (bxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Vibrato Speed || &amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || Enters a vibrato speed command (uxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Vibrato Depth || &amp;lt;kbd&amp;gt;H&amp;lt;/kbd&amp;gt; || Enters a vibrato depth command (hxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - XM Pan Slide Left || &amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enters a pan slide to the left (lxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - XM Pan Slide Right || &amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Enters a pan slide to the right (rxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Tone Portamento || &amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Enters a tone portamento command (gxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Portamento Up || &amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enters a pitch bend up command (fxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Portamento Down || &amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Enters a pitch bend down command (exx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Offset || &amp;lt;kbd&amp;gt;O&amp;lt;/kbd&amp;gt; || Enters a coarse sample offset command (oxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the effect column (the fourth column). Alphanumeric effect letters (0-9, A-Z) are currently not editable — they are automatically assigned to the respective keys on your keyboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Smooth MIDI Macro Slide || &amp;lt;kbd&amp;gt;\&amp;lt;/kbd&amp;gt; || Enters a Smooth MIDI Macro Slide (\xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Combined Note Delay and Note Cut || &amp;lt;kbd&amp;gt;;&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;;&amp;lt;/kbd&amp;gt; || Enters a Delay-Cut (:xy) command into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Extension Command || &amp;lt;kbd&amp;gt;/&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Parameter Extension Command]] (#xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Finetune || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Finetune Command]] (+xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Finetune (Smooth) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Smooth Finetune Command]] (*xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Parameter Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the effect parameter column (the fifth column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Effect Parameter Digit [0 – F] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the effect parameter field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Samples|Samples Tab]] is active.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Trim Sample around Loop Points || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || Trims the sample to the selection, if there is one. Otherwise, if loop points are specified, all sample data outside of these start/end times are deleted.&lt;br /&gt;
|-&lt;br /&gt;
| Trim to Loop End || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || If loop points are specified, all sample data past the loop end is deleted.&lt;br /&gt;
|-&lt;br /&gt;
| Silence Sample Selection || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || All of the sample data within the selected area is set to zero, effectively placing silence in that span.&lt;br /&gt;
|-&lt;br /&gt;
| Normalize Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Applies Normalisation to the sample.&lt;br /&gt;
|-&lt;br /&gt;
| Amplify Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Amplify|Amplify]] dialog, allowing you to alter the volume of the sample and apply Fade In or Fade Out (from / to silence).&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Puts the selected sample data in reverse order, so it is being played backwards.&lt;br /&gt;
|-&lt;br /&gt;
| Delete Sample Selection || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the sample data within the selection, moving the remaining data together.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Sample Drawing || || Turns sample drawing mode on or off.&lt;br /&gt;
|-&lt;br /&gt;
| Add Silence / Create Sample || || Opens the dialog for adding silence, resizing samples and initializing FM instruments.&lt;br /&gt;
|-&lt;br /&gt;
| Configure Sample Grid || || Opens the dialog for setting the sample grid properties.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom In || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Increases the data-to-display ratio, effectively zooming in to show more graphic detail of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom Out || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Decreases the data-to-display ratio, effectively zooming out to show less graphic detail of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Selection || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Zooms so much into the sample data that the current selection covers as much of the sample display as possible. If no selection has been made, auto-zoom is enabled.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Sample Start || &amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Zooms into the sample and ensures that the sample start is visible in the view.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Sample End || &amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Zooms into the sample and ensures that the sample end is visible in the view.&lt;br /&gt;
|-&lt;br /&gt;
| Center Loop Start in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Ensures that the normal sample loop’s start point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Loop End in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Ensures that the normal sample loop’s end point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Sustain Loop Start in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;3&amp;lt;/kbd&amp;gt; || Ensures that the sample sustain loop’s start point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Sustain Loop End in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;4&amp;lt;/kbd&amp;gt; || Ensures that the sample sustain loop’s end point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Convert Ping-Pong Loop to Unidirectional || || Turns a bidi-looped sample loop into a sample with a regular loop by adding a reversed copy of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Convert Ping-Pong Sustain Loop to Unidirectional || || Turns a bidi-looped sustain loop into a sample with a regular loop by adding a reversed copy of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Loop || || Switches the sample loop to the next supported loop type (off, on, bidi).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Sustain Loop || || Switches the sustain loop to the next supported loop type (off, on, bidi).&lt;br /&gt;
|-&lt;br /&gt;
| Convert to 8-bit / 16-bit || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;8&amp;lt;/kbd&amp;gt; || Changes the sample’s bit depth between 8-bit and 16-bit.&lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Mix) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Mixes the left and right channels of a stereo sample equally together. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Left Channel) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Only keeps the left channel of a stereo sample. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Right Channel) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Only keeps the right channel of a stereo sample. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Split Sample) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Create two sample slots for this sample, one containing only the left channel and the other containing just the right channel. If the sample is referenced by an instrument, this instrument is duplicated as well for the right channel. &lt;br /&gt;
|-&lt;br /&gt;
| Change Stereo Separation || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Adjusts the stereo separation of the sample by a given amount, either widening or narrowing the stereo width.&lt;br /&gt;
|-&lt;br /&gt;
| Upsample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt;|| Doubles the sample’s middle-C frequency using the interpolation filter last chosen in the [[Manual: Resample|Resample dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| Downsample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt;|| Halves the sample’s middle-C frequency using the interpolation filter last chosen in the [[Manual: Resample|Resample dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| Resample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Changes the sample’s middle-C frequency to a new arbitrary frequency.&lt;br /&gt;
|-&lt;br /&gt;
| Invert Sample Phase || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Inverts the sample’s phase, i.e. it is mirrored along the time axis.&lt;br /&gt;
|-&lt;br /&gt;
| Signed / Unsigned Conversion || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || Re-interprets the sample data as a signed or unsigned sample.&lt;br /&gt;
|-&lt;br /&gt;
| Remove DC Offset || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Removes an unwanted static DC Offset from the waveform, i.e. it is centered around the time axis.&lt;br /&gt;
|-&lt;br /&gt;
| Quick Fade || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Applies a fade-in for the selected sample data if the selection includes the beginning of the sample, or applies a fade-out if the selection includes the end of the sample. If neither the beginning or end of the waveform is part of the selection, the Amplify dialog is shown.&lt;br /&gt;
|-&lt;br /&gt;
| Crossfade Sample Loop || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Opens the Crossfade Loop dialog to crossfade the sample loop’s end with the loop start, to create seamless loop transitions.&lt;br /&gt;
|-&lt;br /&gt;
| Tune Sample to Given Note || || Opens the [[Manual: Sample Tuner|Sample Tuner]] dialog, where the sample can be tuned to a given note.&lt;br /&gt;
|-&lt;br /&gt;
| Load Sample || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens the Open File dialog to allow you to import a sample file into the sample slot. This command also works in the Instrument Tab, importing an instrument to the current Instrument slot.&lt;br /&gt;
|-&lt;br /&gt;
| Load Raw Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens the Open File dialog to allow you to import a sample file into the sample slot. The [[Manual: Raw Sample Import|Raw Sample Import]] is shown, ignoring the sample format even if it is known to OpenMPT.&lt;br /&gt;
|-&lt;br /&gt;
| Save Sample || || Opens the Save File dialog to allow you to save the sample as a Wave Audio or Raw file into a folder of your choice. This command also works in the Instrument Tab, saving the instrument and its accompanying samples as an .iti, .xi or .sfz file.&lt;br /&gt;
|-&lt;br /&gt;
| New Sample || || Creates a blank sample in the next unused slot. This command also works in the Instrument Tab.&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Sample || || Duplicates the current sample slot into the next unused slot.&lt;br /&gt;
|-&lt;br /&gt;
| Initialize OPL Instrument || || Configures the current sample slot to be a synthesized OPL instrument and recalls the default instrument parameters.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises the middle-C frequency by one semitone.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers the middle-C frequency by one semitone.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises (doubles) the middle-C frequency by one octave.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers (halves) the middle-C frequency by one octave.&lt;br /&gt;
|- &lt;br /&gt;
| Increment Finetune || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Raises the middle-C frequency by the configured [[Manual: Setup/Samples#Frequency Finetune Steps|frequency finetune step]], or by one finetune unit in MOD / XM Files.&lt;br /&gt;
|- &lt;br /&gt;
| Decrement Finetune || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Lowers the middle-C frequency by the configured [[Manual: Setup/Samples#Frequency Finetune Steps|frequency finetune step]], or by one finetune unit in MOD / XM Files.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Follow Sample Play Cursor|| &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Cycles through all three [[Manual: Setup/Samples#Automatic Scrolling when_Zoomed-In|sample playback cursor follow modes]]. The new follow mode is announced in the status bar.&lt;br /&gt;
|-&lt;br /&gt;
| Preview / Set Sample Cue [1 - 9] || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt; || Previews the sample at middle-C, starting from the chosen cue point. If the cue point is unset and the sample is currently being previewed, the cue point is set to the current play position.&lt;br /&gt;
|- &lt;br /&gt;
| Slice at Cue Points || || Creates new samples from the current sample by splitting the sample at its cue points.&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instrument Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Instruments#Sample Map|Sample Map]] on the Instrument Tab is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Creates a new instrument slot using &#039;&#039;all&#039;&#039; the same instrument attributes as the currently displayed instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Sample Map || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Sample Map|Sample Map]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Current Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the Samples page of the currently selected sample slot.&lt;br /&gt;
|-&lt;br /&gt;
| Map All Notes to Selected Note || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Sets the currently selected note to all notes.&lt;br /&gt;
|-&lt;br /&gt;
| Map All Notes to Selected Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Sets the currently selected sample slot to all notes.&lt;br /&gt;
|-&lt;br /&gt;
| Reset Note Mapping || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Resets the note assignments, so that each note maps to itself (C-5 → C-5, D-5 → D-5, and so on).&lt;br /&gt;
|-&lt;br /&gt;
| Remove All Samples || || Removes any sample associations from the instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 (Note Map) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Transposes the whole note map up one semitone.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose -1 (Note Map) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Transposes the whole note map down one semitone.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 Octave (Note Map) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Transposes the whole note map up one octave.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose -1 Octave (Note Map) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Transposes the whole note map down one octave.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Envelope Editor ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Instruments#Envelope Editor|envelope editor]] on the Instrument Tab is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Load Envelope || || Replaces the currently active envelope with an envelope from disk.&lt;br /&gt;
|-&lt;br /&gt;
| Save Envelope || || Stores the currently active envelope to disk.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom In || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Increases the detail of the Envelope Window, showing a smaller excerpt of the envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom Out || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Decreases the detail of the Envelope Window, showing a bigger excerpt of the envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Scale Envelope Points || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Scale Envelope Points|Scale Envelope Points]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Volume Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Selects the Volume Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Panning Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Selects the Panning Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pitch / Filter Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Selects the Pitch / Filter Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Volume Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Enables or disables the Volume Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Panning Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Enables or disables the Panning Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Pitch Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Enables or disables the Pitch Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Filter Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enables or disables the Filter Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Loop || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Loop.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Loop Start || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope loop start.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Loop End || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope loop end.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Sustain Loop || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Sustain Loop.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Sustain Start || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope sustain start.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Sustain End || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope sustain end.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Carry || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Carry.&lt;br /&gt;
|-&lt;br /&gt;
| Select Previous Envelope Point || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the selection to the previous envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Select Next Envelope Point || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the selection to the following envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Left || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the selected envelope point left one tick.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Left (Coarse) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the selected envelope point left one beat.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Right || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the selected envelope point right one tick.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Right (Coarse) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the selected envelope point right one beat.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Up || &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the selected envelope point up one unit.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Up (Coarse) || &amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the selected envelope point up 8 units.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Down || &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the selected envelope point down one unit.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Down (Coarse) || &amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the selected envelope point down 8 units.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Envelope Point || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts an envelope point after the selected point.&lt;br /&gt;
|-&lt;br /&gt;
| Remove Envelope Point || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the selected envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Loop Start || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Envelope Loop start point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Loop End || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Envelope Loop end point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Sustain Loop Start || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Sustain Loop start point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Sustain Loop End || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Sustain Loop end point.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Release Node || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Toggles the selected envelope point as the start point for the Release Envelope.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comments [Bottom] ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the lower half of the [[Manual: Comments|Comments tab]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Between Lists || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Toggles between the sample and instrument list.&lt;br /&gt;
|-&lt;br /&gt;
| Open Item in Editor || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Switches to the sample or instrument editor to edit the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Rename Item || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Brings up an edit box for renaming the selected sample or instrument.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Plugin Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when a [[Manual: Plugin Window|plugin window]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Previous Plugin Preset || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Selects the previous plugin preset / patch.&lt;br /&gt;
|-&lt;br /&gt;
| Next Plugin Preset || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Selects the following plugin preset / patch.&lt;br /&gt;
|-&lt;br /&gt;
| Plugin Preset Backward Jump || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Jumps back 10 entries in the preset list.&lt;br /&gt;
|-&lt;br /&gt;
| Plugin Preset Forward Jump || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Jumps forward 10 entries in the preset list.&lt;br /&gt;
|-&lt;br /&gt;
| Randomize Plugin Parameters || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Give random values to all parameters of the current plugin.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Parameter Recording || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Toggles the parameter recording function, which allows you to record parameter changes from plugin window into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Record MIDI Out to Pattern Editor || || Toggles the MIDI Out recording function, which allows you to route the plugin’s MIDI output to the pattern, sample or instrument editor.&lt;br /&gt;
|-&lt;br /&gt;
| Pass Key Presses to Plugin || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;K&amp;lt;/kbd&amp;gt; || Toggles the Pass Keys function, which sends all keyboard input to the currently open plugin window (e.g. for entering a serial number in the plugin GUI).&lt;br /&gt;
|-&lt;br /&gt;
| Bypass Plugin || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Toggles plugin’s bypass property to control whether audio is routed through the plugin or not.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tree View ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual:_Tree_View|Tree View]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Switch between Upper / Lower Tree View || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Switches focus between the upper and lower panel of the Tree View.&lt;br /&gt;
|-&lt;br /&gt;
| Open / View Item || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens / views / previews the selected item (same action as double-click).&lt;br /&gt;
|-&lt;br /&gt;
| Play Item || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Previews the selected item if it is a sample, instrument or file.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Item || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts an empty item (e.g. sample or instrument slot) after the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Item || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Duplicates the currently selected item (e.g. sample or instrument slot).&lt;br /&gt;
|-&lt;br /&gt;
| Delete Item || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Delete Item Permanently || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Delete Item”, but if the selected item is a file, it will not be moved to the recycling bin.&lt;br /&gt;
|-&lt;br /&gt;
| Rename Item / Send To Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || For items belonging to an open module (e.g. patterns, samples, instruments, ...): The selected item is renamed. For items in the instrument library: The item is sent to the last active sample or instrument editor and replaces the currently selected sample or instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Send To Editor (Insert New) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || For items in the instrument library: The item is sent to the last active sample or instrument editor and is loaded into a new sample or instrument slot.&lt;br /&gt;
|-&lt;br /&gt;
| Go to Parent Folder || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Changes the instrument library folder to the current location′s parent folder.&lt;br /&gt;
|-&lt;br /&gt;
| Find in Instrument Library || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt;|| Opens the search filter to quickly locate files and folders in the instrument library.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Name || || Items in the instrument library are sorted by their file name.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Date || || Items in the instrument library are sorted by their last file modification date.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Size || || Items in the instrument library are sorted by their file size.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Keyboard Actions]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&amp;diff=4962</id>
		<title>Development: Test Cases/IT</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&amp;diff=4962"/>
		<updated>2025-07-12T21:18:46Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: VolColNoSlideMemoryPropagation.it&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Testsuite Introduction|format=IT|tracker=Impulse Tracker}}&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Autovibrato-Reset.it|pass=???}}&lt;br /&gt;
The autovibrato sweep is not reset when using portamento.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Bidi-Loops.it|pass=793}}&lt;br /&gt;
In Impulse Tracker’s software mixer, ping-pong loops are shortened by one sample. This does not happen with the GUS hardware driver, but I assume that the software drivers were more popular due to the limitations of the GUS, so OpenMPT emulates this behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=BidiPrecision.it|pass=15871}}&lt;br /&gt;
An extension to [[#Bidi-Loops.it|Bidi-Loops.it]], this test verifies that the loop length of ping-pong loops is precise. The test is not required to stay absolutely silent, but the two channels may not phase, i.e. the sound should be a static buzz.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=CarryNNA.it|pass=1503 + 22849}}&lt;br /&gt;
This is a very interesting test case, because it actually sounds different when using Impulse Tracker’s WAV writer and Sound Blaster (and probably other drivers) output (the Sound Blaster 16 MMX driver also follows the behaviour of the WAV writer, to make things even more confusing).&lt;br /&gt;
The main difference is that the Sound Blaster driver will only consider the envelope carry flag if the New Note Action is not “Note Cut”. The WAV writer does not check for the NNA and will always apply the carry flag if it’s set. OpenMPT goes after the WAV writer, while e.g. XMPlay used the Sound Blaster behaviour for the volume and panning envelope, but the WAV writer’s behaviour for the filter envelope (because of a bug report some years ago) up until 2016. Obviously it is hard to consider which of the two behaviours is correct, so I would just say that both are. :) However, the WAV writer behaviour definitely is more useful (not being able to use Envelope Carry despite it being enabled is quite misleading), I strongly encourage everyone to implement this behaviour.&lt;br /&gt;
&lt;br /&gt;
The reason for the difference is most likely that the non-MMX Sound Blaster driver does not volume-ramp cut notes, while the MMX driver and WAV writer do. The volume ramping requires a NNA channel to be set up, which is a precondition for the envelope carry code to work.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=cut-carry.it|pass=1165}}&lt;br /&gt;
Envelopes that have the carry flag set cannot be “picked up” / continued after the note has been cut.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=dct_smp_note_test.it|pass=12819}}&lt;br /&gt;
Instrument Duplicate Check Type “Sample” should only be carried out if the old and new instrument match (like all other check types).&amp;lt;br&amp;gt;&lt;br /&gt;
Instrument Duplicate Check Type “Note” should compare the old and new pattern note, not translated notes according to the instrument’s mapping.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=DNA-NoInstr.it|pass=6311}}&lt;br /&gt;
OpenMPT previously did not properly check for the correct sample slot or sample map entry in DNA and NNA checks if no instrument number was provided. This testcase should remain silent when played correctly, i.e. both the first and second note on channel 1 should sound until the end of the pattern.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=DoubleSlide.it|pass=21807}}&lt;br /&gt;
Impulse Tracker generally initializes effect parameters, effect working memory and similar stuff once per row, before the effects actually run. When using (tone) portamento commands simulatenously in the effect column and volume column, this can lead to surprising results, and in order to emulate them correctly, it is crucial to implement the effect memory initialization in the exact same order as Impulse Tracker does:&lt;br /&gt;
&lt;br /&gt;
# Evaluate effect column Gxx parameter&lt;br /&gt;
# Evaluate volume column gx parameter&lt;br /&gt;
# Evaluate volume column ex / fx parameter&lt;br /&gt;
# Evaluate effect column Exx / Fxx parameter&lt;br /&gt;
&lt;br /&gt;
If played correctly, The left and right channel of this module should sound identical. The last few rows should stay silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=DoubleSlideCompatGxx.it|pass=21807}}&lt;br /&gt;
A variation of of [[#DoubleSlide.it|DoubleSlide.it]] with the Compatible Gxx flag turned on. The same rules as above apply, but since portamento up / down and tone portamento memory is not linked, there are some natural differences in handling.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=empty_sample_offset.it|pass=6343}}&lt;br /&gt;
In instrument mode, if an offset effect is found next to a note that maps to an invalid sample slot, the offset and illegal note should be ignored completely. Note that this behaviour is different from sample mode, where a previously playing sample will be stopped.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=emptyslot.it|pass=1671}}&lt;br /&gt;
I think, Impulse Tracker treats instruments like an additional layer of abstraction and first replaces the note and instrument in the pattern by the sample and note assignments from the sample map table before further evaluating the pattern. That would explain why for example the empty sample map slots do nothing in this module.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=env-flt-max.it|pass=1090 (?)}}&lt;br /&gt;
If resonance is not applied, the filter envelope’s maximum value does not &#039;&#039;enable&#039;&#039; any filtering. However, it also does not &#039;&#039;disable&#039;&#039; any filtering when returning from a non-maximum point. This pretty much works like Zxx commands.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=EnvLoopEscape.it|pass=4009}}&lt;br /&gt;
I created [[#EnvOffLength.it|EnvOffLength.it]] without realizing that it is essentially the same bug as this one.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=EnvLoops.it|pass=1213}}&lt;br /&gt;
In this test, all possible combinations of the envelope sustain point and envelope loops are tested, and you can see their behaviour on note-off.&lt;br /&gt;
If the sustain point is at the loop end and the sustain loop has been released, don&#039;t loop anymore.&lt;br /&gt;
Probably the most important thing for this test is that in Impulse Tracker (and Fasttracker 2), envelope position is incremented before the point is evaluated, not afterwards, so when no ticks have been processed yet, the envelope position should be invalid.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=EnvOffLength.it|pass=4009}}&lt;br /&gt;
If an envelope sustain loop happens to end on exactly the same tick as a note-off event occurs, the envelope is not yet released. It will be released whenever the loop end is being hit again.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=EnvReset.it|pass=1481}}&lt;br /&gt;
Impulse Tracker resets envelopes under some more or less weird conditions. This tests some of them.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=extreme-filter-test-1.it|pass=1090}}&lt;br /&gt;
If resonant filters are rendered with integer arithmetic, they may produce scratching noises in some edge cases. You should not hear any scratches or other weird noises when playing this example.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=extreme-filter-test-2.it|pass=1090}}&lt;br /&gt;
Same as the above test case. xmp breaks this module’s output even more than older versions of OpenMPT.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Fade-Porta.it|pass=1144}}&lt;br /&gt;
After a note has been stopped in some way (for example through fade-out or note cut), tone portamento effects on the following note are ignored, i.e. there is no portamento from the stopped note to the new note.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-7F.it|pass=1090 (?)}}&lt;br /&gt;
A small test case that demonstrates that full cutoff should not enable the filter if no resonance is applied. Resonance is only ever applied if the cutoff is not full or the resonance is not zero.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FilterEnvReset.it|pass=1132}}&lt;br /&gt;
A cutoff value of 0 should not be reset to full cutoff when triggering a note just because the filter envelope is enabled. This bug is probably very specific to OpenMPT, because it gets rid of some unneccessary code.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FilterPortaSmpChange.it|pass=18417}}&lt;br /&gt;
Normally Impulse Tracker does not disable the filter on portamento if cutoff was previously at 127 and resonance at 0, but in sample mode that is not the case when the new note plays a different sample.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FilterPortaSmpChange-InsMode.it|pass=?}}&lt;br /&gt;
Complementary test for [[#FilterPortaSmpChange.it|FilterPortaSmpChange.it]] in instrument mode. Here the cutoff should never be reset on portamento.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-nna.it|pass=1169}}&lt;br /&gt;
This test is just there to be sure that the filter-reset.it and filter-reset-carry.it test cases do not break NNA background channels.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-reset.it|pass=1165}}&lt;br /&gt;
As mentioned already, filtering is only ever done in IT if either cutoff is not full or if resonance is set. When a Z7F command is found next to a note and no portamento is applied, it &#039;&#039;disables&#039;&#039; the filter, however in other cases this should not happen.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-reset-carry.it|pass=1165}}&lt;br /&gt;
I think this is also just an extenion to the previous test case, to make sure that it does not break anything else.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-reset-envelope.it|pass=16016}}&lt;br /&gt;
This test checks that the filter is reset correctly for delayed filtered notes, and also acts as a regression test for [[#filter-reset.it|filter-reset.it]], because the first implementation for this test broke the other test. The output should stay silent (small pops are okay).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FilterResetPatDelay.it|pass=16137}}&lt;br /&gt;
An extension of [[#filter-reset-envelope.it|filter-reset-envelope.it]], this verifies the filter reset behaviour on rows with a Pattern Delay. The filter reset logic should only be applied on rows that are actually retriggering the note: If there is no note delay, the note is retriggered only on the first tick. If there is a note delay, the note is retriggered on every repetition of that row (see [[#PatternDelay-NoteDelay.it|PatternDelay-NoteDelay.it]]).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FineVolColSlide.it|pass=2400}}&lt;br /&gt;
Unlike fine volume slides in the effect column, fine volume slides in the volume column are only ever executed on the first tick — not on multiples of the first tick if there is a pattern delay. Thus, the left and right channel of this example should always have the same volume.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=flt-env-carry.it|pass=693 (?)}}&lt;br /&gt;
Envelope carry on the filter envelope. I think this is just a general test on how envelope carry is applied. It is possible that Impulse Tracker’s MMX drivers will play this in a different way from the WAV writer.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=fltmacro.it|pass=???}}&lt;br /&gt;
This test uses a custom macro configuration that uses the instrument volume to control the filter cutoff. A correctly implemented MIDI Macro system should pass this test.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=freqreset-noins.it|pass=325}}&lt;br /&gt;
When using multisample instruments, even notes with no instrument number next to them can change the sample (based on the active instrument’s sample map). When switching between samples, you must not forget to update the C-5 frequency of the playing sample as well.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=GlobalVolFirstTick.it|pass=6362}}&lt;br /&gt;
Set Global Volume (Vxx) should be applied on the first tick (and multiples in case of pattern delays). If played correctly, the first and second row of this module should sound more or less identical, i.e. each row should play 16 fading notes.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=globalvol-invalid.it|pass=290}}&lt;br /&gt;
Out-of-range global volume commands (V81...VFF) should not change the current global volume. This test module should remain completely silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=GlobalVolume-Macro.it}}&lt;br /&gt;
Global volume, channel volume and various other parameters are taken into account when interpreting the &#039;u&#039; and &#039;v&#039; letters in MIDI macros. However, this feature seems to be quirky, and I have decided not to support these quirks in OpenMPT, as I do not think that anyone used this feature in Impulse Tracker very much and I would want it to work in a sane way when using it to control instrument plugins in OpenMPT. The quirks are:&lt;br /&gt;
* Channel and global volume seem to be applied one row after they have been set. This does not seem to be the whole truth, though, as looking at pattern 0, row 9, you should hear that IT applies the M40 channel volume change on row 10.&lt;br /&gt;
* Instrument / sample volume also seems to be applied one row late when using the &#039;u&#039; macro, but not the &#039;v&#039; macro (compare first and second pattern, row 15 - 22 each).&lt;br /&gt;
There are also some problems with volume swing which might be fixed later.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=gxsmp.it|pass=1671}}&lt;br /&gt;
Another test case with an empty sample map slot which is simply ignored by Impulse Tracker.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=gxsmp2.it|pass=1671}}&lt;br /&gt;
Going one step further by also changing the sample next to that portamento.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=gxxtest.it|pass=4330}}&lt;br /&gt;
And another similar test.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=InitialNoteMemory.it|pass=18838}}&lt;br /&gt;
The initial &amp;quot;last note&amp;quot; memory of each channel in Impulse Tracker is initialized to C-0. So the first lone instrument number without any note next to it will play a C-0 of that instrument.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=InitialNoteMemoryInstrMode.it|pass=18838}}&lt;br /&gt;
A variation of [[#InitialNoteMemory.it|InitialNoteMemory.it]], but in instrument mode. The lowest note of instrument 1 has no sample association, which will also cause subsequent notes without instrument number to not play.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-flt-porta-reset.it|pass=???}}&lt;br /&gt;
Instrument filter settings should not be applied if there is a portamento effect.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-oc.it|pass=11293 + 22849}}&lt;br /&gt;
Instrument number resets envelope behaviour test with Old Effects enabled, Compatible Gxx enabled: Always reset envelopes.&lt;br /&gt;
&lt;br /&gt;
Note: Some output drivers play the instruments with Envelope Carry enabled differently in Impulse Tracker (see [[#CarryNNA.it|CarryNNA.it]] for an explanation why this happens). A previous version of this test reflected the behaviour of those drivers, but technically for the wrong reason (they relied on a bug / misunderstanding of the Carry feature in OpenMPT). As this OpenMPT bug was fixed, the test case was adjusted to follow the WAV writer / SB16 MMX driver behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-ox.it|pass=11293 + 22849}}&lt;br /&gt;
Instrument number resets envelope behaviour test with Old Effects enabled, Compatible Gxx disabled: Reset envelopes if there is no tone portamento.&lt;br /&gt;
&lt;br /&gt;
Note: Some output drivers play the instruments with Envelope Carry enabled differently in Impulse Tracker (see [[#CarryNNA.it|CarryNNA.it]] for an explanation why this happens). A previous version of this test reflected the behaviour of those drivers, but technically for the wrong reason (they relied on a bug / misunderstanding of the Carry feature in OpenMPT). As this OpenMPT bug was fixed, the test case was adjusted to follow the WAV writer / SB16 MMX driver behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-xc.it|pass=11293 + 22849}}&lt;br /&gt;
Instrument number resets envelope behaviour test with Old Effects disabled, Compatible Gxx enabled: Reset envelopes if there is a tone portamento.&lt;br /&gt;
&lt;br /&gt;
Note: Some output drivers play the instruments with Envelope Carry enabled differently in Impulse Tracker (see [[#CarryNNA.it|CarryNNA.it]] for an explanation why this happens). A previous version of this test reflected the behaviour of those drivers, but technically for the wrong reason (they relied on a bug / misunderstanding of the Carry feature in OpenMPT). As this OpenMPT bug was fixed, the test case was adjusted to follow the WAV writer / SB16 MMX driver behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-xx.it|pass=0}}&lt;br /&gt;
Instrument number resets envelope behaviour test with Old Effects disabled, Compatible Gxx disabled: Never reset envelopes.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=InstrAfterMultisamplePorta.it|pass=7465}}&lt;br /&gt;
A lone instrument number should only reset sample properties to those of the corresponding sample in instrument mode. Example:&lt;br /&gt;
 C#5 01 ... &amp;lt;-- sample 1&lt;br /&gt;
 C-5 .. g02 &amp;lt;-- sample 2&lt;br /&gt;
 ... 01 ... &amp;lt;-- still sample 1, but with properties of sample 2&lt;br /&gt;
In the above example, no sample change happens on the second row. In the third row, sample 1 keeps playing but with the volume and panning properties of sample 2.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=InstrumentNumberChange.it|pass=1902}}&lt;br /&gt;
While Impulse Tracker cuts playing samples if it encounters an invalid sample number in sample mode, the same does not happen if we are in instrument mode.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=JxxTicks.it|pass=1537}}&lt;br /&gt;
Impulse Tracker’s arpeggio logic is pretty sane compared to some other trackers, but one detail should be kept in mind: Pattern Delays reset the tick counter, but it keeps incrementing with Fine Pattern Delays. The arpeggio sequence thus resets every (ticks per row + fine pattern delay) ticks.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LinearSlides.it|pass=4330}}&lt;br /&gt;
Impulse Tracker internally uses actual frequency values, while Fasttracker 2 still uses exponentially scaled fine Amiga periods. When doing fine slides, errors from using periods instead of frequency can add up very quickly, and thus the two channel&#039;s frequency in this test will converge noticeably.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LoopBreak.it|pass=5413}}&lt;br /&gt;
A pattern break (Cxx) on the same row as the end of a pattern loop (SBx) repeats the pattern loop x times and then jumps to the desired row. However, a position jump (Bxx) on the same row as the end of a pattern loop prevents the loop from being executed if it is right of the SBx effect. In this test, the left and right channel of the module should produce the same click patterns.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LoopStartAfterPatternEnd.it|pass=7791}}&lt;br /&gt;
Since the start row of a pattern loop is not reset on pattern transitions, it is possible to use a loop start past the end of the current pattern when using a pattern loop without explicit start command (SB0). In this case, playback should continue in the next pattern. In the example, this happens because the loop start is set to one row after the loop end after properly terminating the loop in pattern 0.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LxxWith0Portamento-Amiga.it|pass=r22552}}&lt;br /&gt;
A strange edge case when using Lxx (Volume Slide + Tone Portamento) while the tone portamento effect memory is 0: The tone portamento comamnd is not initialized properly in this case, causing it always to assume that it&#039;s trying to execute a portamento down. If the current note is below the note to which the tone portamento would lead, this causes the note to immediately jump to the target note. If the current note is above the target note, nothing happens.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LxxWith0Portamento-Linear.it|pass=r22552}}&lt;br /&gt;
Same as [[#LxxWith0Portamento-Amiga.it|LxxWith0Portamento-Amiga.it]], but with linear slides. The difference is that when the current note is above the target note, the frequency is decremented by 1 Hz on every tick (linear slides always slide by at least 1 Hz).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=macro-lastnote.it|pass=947 (?)}}&lt;br /&gt;
A test of the MIDI macro letter “n”. This letter will always send the MIDI note value of the last triggered note, note cuts and similar “notes” are not considered. This module should remain silent as both channels should receive exactly the same cutoff values.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=MacroExtendedParam.it|pass=16715}}&lt;br /&gt;
Even fixed macros (Z80-ZFF) can contain the letter “z”, which inserts the raw command parameter into the macro (i.e. a value in [80, FF[). In this file, macro ZF0 is used to insert byte F0 into the string. This way, two MIDI messages to set both the filter cutoff and resonance to 60h are created, which are the same filter settings as used in instrument 2, so the module should stay silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=MultiZxx.it|pass=947 (?)}}&lt;br /&gt;
A MIDI macro can contain more than one MIDI message. In this case, the Z90 macro sets both the filter cutoff frequency and resonance, so if only the first MIDI message is considered in this macro, the module will no longer stay silent at row 8.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoMap.it|pass=1671}}&lt;br /&gt;
Yet another sample map test case. Why are there so many of them? They are all fixed by the same code...&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoMapEffects.it|pass=20790 + 20820}}&lt;br /&gt;
Empty instrument note map slots are truly one of the most mysterious parts of Impulse Tracker’s reply routines. This particular test started out to verify that a currently playing instrument’s envelopes are not reset by sample-less note map slots, but it quickly evolved into a complete nightmare. In this test you see many global effects, and not a single one of them does anything. They do not jump around in the pattern, they do not modify the tempo. Anything in a cell where a sample-less note map slot is hit is ignored completely. This also affects the first row of the module due to [[#InitialNoteMemory.it|InitialNoteMemory.it]] - this mechanism also takes previously triggered notes into account. Only on row 3 it does not apply, because Note Off / Note Cut / Note Fade invalidate the previously triggered note.&lt;br /&gt;
&lt;br /&gt;
All in all, this absolutely crazy test case should play identically on the left and right channel.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoSlide.it|pass=???}}&lt;br /&gt;
This seems to be just a fancy test of portamento from a stopped note, but in this case an empty sample slot assigned to the same instrument was played before.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoteFade-SmpMode.it|pass=317}}&lt;br /&gt;
A “note fade” note (any invalid note) should not do anything in sample mode. The sample should not be stopped.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoteFade-InsMode.it|pass=317}}&lt;br /&gt;
A “note fade” note (any invalid note) should fade out the instrument using its fadeout value.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=noteoff2.it|pass=??? + 5829}}&lt;br /&gt;
The sample changes on rows 4 and 20, but not on rows 8 and 24. However, the new sample′s default volume is loaded.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=noteoff3.it|pass=12284}}&lt;br /&gt;
This is the same as noteoff2.it, but with old effects enabled. In this case, the sample should never fade out.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoteOffInstr.it|pass=5829}}&lt;br /&gt;
Any kind of Note Cut (SCx or ^^^) should stop the sample and not set its volume to 0. A subsequent volume command cannot continue the sample, but a note, even without an instrument number can do so. When played back correctly, the module should stay silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Off-Porta.it|pass=1344}}&lt;br /&gt;
When &amp;quot;Compatible Gxx&amp;quot; is disabled, the key-off flag should only be removed when triggering new notes, but not when continuing a note using a portamento command.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Off-Porta-CompatGxx.it|pass=0 (temporarily broken in rev. 1344)}}&lt;br /&gt;
When &amp;quot;Compatible Gxx&amp;quot; is enabled, the key-off flag should also be removed when continuing a note using a portamento command (row 2, 4, 6). This test case was written to discover a code regression  when fixing [[#Off-Porta.it|Off-Porta.it]]).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=OffsetWithInstr.it|pass=20863}}&lt;br /&gt;
An offset effect can be triggered if only an instrument number and no note is next to it, if the last triggered note was not a note cut, note off or note fade.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PanbrelloHold.it|pass=4712}}&lt;br /&gt;
The panbrello offset should not only be added on the same row as the panbrello effect appears on, but also on all follow-up rows, until a panning command or a new note is encountered. This test case should remain mostly silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PanReset.it|pass=4713}}&lt;br /&gt;
Contrary to XM, the default instrument and sample panning should only be reset when a &#039;&#039;&#039;note&#039;&#039;&#039; is encountered, not when an &#039;&#039;&#039;instrument number&#039;&#039;&#039; (without note) is encountered. The two channels of this module should be panned identically.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PanResetInstr.it|pass=11856}}&lt;br /&gt;
Instruments and samples with a defined panning should not override the channel panning for following notes. That is, if a different instrument with no panning set follows an instrument that has panning set, the first instrument’s panning should not be applied to the second instrument, but rather the channel panning as it was set before playing the first instrument (or if the channel panning was changed while that instrument was playing, the new channel panning applies as well).&lt;br /&gt;
If played correctly, this test case should remain silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PatternDelay-NoteDelay.it|pass=1240}}&lt;br /&gt;
Delayed notes (using SDx) that are on the same row as a Row Delay effect are retriggered on every repetition. Notes &#039;&#039;without&#039;&#039; a note delay are &#039;&#039;not&#039;&#039; retriggered.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PatternDelays.it|pass=1224}}&lt;br /&gt;
Tick delays (S6x) are added up, but when there are multiple row delays (SEx), only the first one is considered. The tricky part here is that Impulse Tracker even ignores all row delays next to a SE0 row delay. I suggest to do the following:&lt;br /&gt;
* Initialize a &amp;lt;tt&amp;gt;row delay&amp;lt;/tt&amp;gt; variable with &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Go through all channels. If there is a row delay on the current row and &amp;lt;tt&amp;gt;row delay&amp;lt;/tt&amp;gt; is 0, set &amp;lt;tt&amp;gt;row delay = parameter + 1&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Calculate the complete row length: &amp;lt;tt&amp;gt;row length = (speed + tick delay) * max(1, row delay)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PatternDelaysRetrig.it|pass=1221}}&lt;br /&gt;
Rows on which a row delay (SEx) effect is placed have multiple “first ticks”, i.e. you should set your “first tick flag” on every tick that is a multiple of &amp;lt;tt&amp;gt;speed + tick delay&amp;lt;/tt&amp;gt;. In this test module, the note pitch is changed multiple times per row, depending on the row and tick delay values.&lt;br /&gt;
&amp;lt;br/&amp;gt;Note: This test case broke in r3520 and was fixed again in r4895.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PitchPanReset.it|pass=15870}}&lt;br /&gt;
Pitch/Pan Separation can be overriden by panning commands, and should not be affected by Note Off or Note Fade notes.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaCutCompat.it|pass=9139}}&lt;br /&gt;
A follow-up test to [[#PortaSampleCompat.it|PortaSampleCompat.it]] and  [[#PortaInsNumCompat.it|PortaInsNumCompat.it]] to verify that the behaviour described in these tests is not used when currently no note is playing. Both channels should sound identical.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaInsNum.it|pass=1671}}&lt;br /&gt;
Portamento with funny sample maps. Without compatible Gxx, portamento between different samples should play the new sample.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaInsNumCompat.it|pass=2842}}&lt;br /&gt;
Portamento with funny sample maps, in compatible Gxx mode. With compatible Gxx, portamento between different samples should keep playing the old sample.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaJustStoppedNote.it|pass=6193}}&lt;br /&gt;
[[#Fade-Porta.it|Fade-Porta.it]] already tests the general case of portamento picking up a stopped note (portamento should just be ignored in this case), but there is an edge case when the note just stopped on the previous tick. In this case, OpenMPT did previously behave differently and still execute the portamento effect.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=porta-offset.it|pass=0}}&lt;br /&gt;
Unlike Fasttracker 2, Impulse Tracker does not ignore offset commands next to portamentos and executes them both. Even ModPlug Tracker 1.16 gets this test right.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaReset.it|pass=4181}}&lt;br /&gt;
Impulse Tracker completely resets the tone portamento target on every new non-portamento note, i.e. a follow-up Gxx effect should not slide back to the previously triggered note.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaResetAfterRetrigger.it|pass=7465}}&lt;br /&gt;
After a note has stopped playing, a lone instrument number can restart the note. In this case, portamento and other properties should be reset.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaSample.it|pass=1671}}&lt;br /&gt;
Impulse Tracker executes the portamento when switching to instrument two on the second row when compatible Gxx is disabled.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaSampleCompat.it|pass=2842}}&lt;br /&gt;
Impulse Tracker executes the portamento and doesn&#039;t switch to the new sample on the second row when compatible Gxx is enabled.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=RandomPan.it|pass=2545}}&lt;br /&gt;
Pan swing should not be overridden by effects such as instrument panning or panning envelopes. Previously, pan swing was overridden in OpenMPT if the instrument also had a panning envelope. In this file, pan swing should be applied to every note.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=RandomWaveform.it|pass=3670}}&lt;br /&gt;
When selecting the random waveform for panbrello, the “speed” nibble indicates for how many ticks the random value will be held. This behaviour is &#039;&#039;not&#039;&#039; used for vibrato / tremolo.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ResetEnvNoteOffOldFx.it|pass=11276 - 11283}}&lt;br /&gt;
In Old Effects mode, an instrument number next to a note-off does not just recall the default volume and panning, but also resets the envelopes.&lt;br /&gt;
&lt;br /&gt;
If the instrument is different from the currently playing instrument, the new instrument&#039;s envelope and default sample settings (default volume, panning, but not global volume) are loaded, but the old sample waveform keeps playing.&lt;br /&gt;
&lt;br /&gt;
When played correctly, the left and right audio channel should sound identical. On the last note, the tracker channels swap their stereo position.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ResetEnvNoteOffOldFx2.it|pass=11284}}&lt;br /&gt;
An extension of ResetEnvNoteOffOldFx.it which also tests instrument note-off and sample sustain loop behaviour: While the sample sustain loop should be released, the instrument should not be faded out.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=retrig.it|pass=364}}&lt;br /&gt;
A combination of the retrigger effect and instrument envelopes. Not sure how this works.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=retrig-short.it|pass=1140}}&lt;br /&gt;
Impulse Tracker does not retrigger notes that are shorter than the duration of a tick. One might argue that this is a bug in Impulse Tracker, but OpenMPT emulates it anyway.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=s7xinsnum.it|pass=1062}}&lt;br /&gt;
Changing the NNA action through the S7x command only affects the current note - The NNA action is reset on every &#039;&#039;note change&#039;&#039;, and not on every &#039;&#039;instrument change&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=s77.it|pass=561 (preliminary), 1112}}&lt;br /&gt;
The S77 / S79 / S7B commands pause the instrument envelopes, they do not turn them off. S78 / S7A / S7C should resume the envelope at exactly the position where it was paused. In this test, it is again very important that the envelope position is incremented &#039;&#039;before&#039;&#039; the point is evaluated, not &#039;&#039;afterwards&#039;&#039; (see [[#EnvLoops.it|EnvLoops.it]]).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SampleNumberChange.it|pass=0}}&lt;br /&gt;
Contrary to [[#InstrumentNumberChange.it|InstrumentNumberChange.it]], even ModPlug Tracker 1.16 passes it.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SampleSustainAfterPorta.it|pass=20760}}&lt;br /&gt;
When a sample’s sustain loop was released, and a new note from a different sample is played with tone portamento applied, the second sample’s sustain loop also stays released.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SampleSustainAfterPortaCompatGxx.it|pass=20760}}&lt;br /&gt;
Same as [[#SampleSustainAfterPorta.it|SampleSustainAfterPorta.it]], but with Compatible Gxx turned on.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SampleSustainAfterPortaInstrMode.it|pass=20760}}&lt;br /&gt;
Same as [[#SampleSustainAfterPorta.it|SampleSustainAfterPorta.it]], but in instrument mode. Here a difference in the behaviour can be observed when doing a second switch after the initial note-off: The first time, the sustain loop remains disabled, but for the subsequent note, the sustain loop is used again. This does not happen in sample mode.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=sbx-priority.it|pass=12171}}&lt;br /&gt;
This is an extension of [[#LoopBreak.it|LoopBreak.it]]. A position jump (Bxx) on the same row as the end of a pattern loop prevents the loop from being executed if it is right of the SBx effect, but if the position jump is left of the SBx effect, the loop should be prioritized. In this test, the left and right channel of the module should produce the same beep patterns.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=scx.it|pass=1109}}&lt;br /&gt;
The SCx command cuts notes just like a normal note cut (^^^), it does not simply mute them. However, there is a difference when placing a lone instrument number after a note that was cut with SCx and one cut with ^^^, as it can be seen in this test case.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SCx-Reset.it|pass=23476}}&lt;br /&gt;
When a lone instrument number after a SCx command picks up the previous note, it resets its pitch to the original note, undoing any portamento effects - the same as if there was a note next to the instrument number.&lt;br /&gt;
&lt;br /&gt;
If there is a note and a tone portamento next to an SCx command, the Note Cut is not executed - unless there is also a row delay effect and we are on the second repetition of the row.&lt;br /&gt;
&lt;br /&gt;
When played correctly, this test should remain silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SlideDelay.it|pass=3520}}&lt;br /&gt;
If there&#039;s a note delay, slide and vibrato commands in the volume column next to it should not start before the delay has finished.&lt;br /&gt;
So if there&#039;s a fine volume slide next to a SD5 effect should start on the 6th (one-based) tick. If this was a normal volume or pitch slide and the speed was 6 ticks per row, it would never execute, as the first non-zero tick would be the seventh tick.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SmpInsPanSurround.it|pass=1259}}&lt;br /&gt;
Sample and instrument panning override the channel surround status, i.e. surround is turned off by samples or instruments with panning enabled.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=surround-pan.it|pass=1134}}&lt;br /&gt;
Pan swing, panbrello, panning envelopes, etc. should have no effect on surround channels.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=StoppedInstrSwap.it|pass=5829}}&lt;br /&gt;
An instrument number with no note or next to a ^^^ should always be remembered for the next instrument-less note, even if sample playback is stopped.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SusAfterLoop.it|pass=1085}}&lt;br /&gt;
When a sample sustain loop, which is placed partly or completely behind a “normal” sample loop is exited (through a note-off event), and the current sample playback position is past the normal loop’s end, it is adjusted to &amp;lt;tt&amp;gt;loop start + ((current position - loop start) % loop length)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SwapNNA.it|pass=10239}}&lt;br /&gt;
Related to [[#s7xinsnum.it|s7xinsnum.it]], the NNA action should be reset when doing an instrument swap with portamento.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swaptest.it|pass=???}}&lt;br /&gt;
A test focussing on finding the correct sample playback position when switching samples “on the fly” (using instrument numbers without notes next to them). The module should remain silent when being played.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing1.it|pass=1046 (?)}}&lt;br /&gt;
Probably a very MPT-specific bug, as OpenMPT was adding the volume swing to the current volume, so even after setting the volume to 0, it was possible that you could hear the sample playing.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing2.it|pass=1046 (?)}}&lt;br /&gt;
This module should remain completely silent, as the random variation is multiplied with the sample volume.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing3.it|pass=1046 (?)}}&lt;br /&gt;
Of course you are not supposed to produce the same sequence of random number to fulfil this test case. I think this was just a test to explore which volume variables are actually affected by volume swing, and how it is applied.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing4.it|pass=1046 (?)}}&lt;br /&gt;
Same as above.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing5.it|pass=1046 (?)}}&lt;br /&gt;
Same as above.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=tickdelay.it|pass=4948}}&lt;br /&gt;
This test detects whether out-of-range note delays are handled properly. If the SDx parameter is greater than the row length (&#039;&#039;including&#039;&#039; tick delay, but &#039;&#039;excluding&#039;&#039; row delay), any note and volume effects next to it are supposed to ignored (interestingly, the instrument number is saved, but not instantly used). The first two rows test tick delay behaviour (OpenMPT passes this test since revision 1306), the third row tests row delay behaviour. &lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=tremolo.it|pass=345 (?)}}&lt;br /&gt;
A test for checking if tremolo tables are implemented correctly.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=vibrato.it|pass=1189}}&lt;br /&gt;
A test for checking if vibrato tables are implemented correctly when old FX are disabled.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=VibratoDouble.it|pass=7804}}&lt;br /&gt;
Vibrato in the volume column should be applied separately from vibrato in the effect column. The two commands will add up when occuring at the same time. However, since there is only one vibrato effect memory for both commands, the volume column’s vibrato parameter has precedence if it is not 0.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=vibrato-oldfx.it|pass=1189}}&lt;br /&gt;
A test for checking if vibrato tables are implemented correctly when old FX are enabled. Vibrato is played backwards in this mode!&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=VibratoSweep0.it|pass=7134}}&lt;br /&gt;
Auto-vibrato should not be processed at all if the rate (speed) is 0. This is relevant for vibrato waveforms that do not start at zero, i.e. all except sine.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=VolColMemory.it|pass=1545}}&lt;br /&gt;
Volume column commands a, b, c and d (volume slide) share one effect memory, but it should not be shared with Dxy in the effect column. Furthermore, there is &#039;&#039;&#039;no&#039;&#039;&#039; unified effect memory across different kinds of volume column effects (that&#039;s how OpenMPT used to handle it up to revision 1544).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=VolColNoSlideMemoryPropagation.it|pass=23742}}&lt;br /&gt;
An extension of [[#VolColMemory.it|VolColMemory.it]]. While that test case verifies that regular Dxy volume slides do not propagate their effect memory to the volume column, it fails to verify the other way around. This test case rectifies that, also checking that volume column commands a, b, c and d do not update the Dxy effect memory.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=vol-env-carry.it|pass=1781}}&lt;br /&gt;
Similar to [[#flt-env-carry.it|flt-env-carry.it]]. This test case temporarily broke in revision 1481 and was fixed in revision 1781.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Volume-Macro-Letters.it|pass=1465}}&lt;br /&gt;
This test demonstrates how Zxx macros are parsed in Impulse Tracker:&lt;br /&gt;
* Macros are evaluated only on the first tick.&lt;br /&gt;
* They appear to be parsed after note / instrument information has been read from the pattern, but before any other effects (excluding &amp;quot;Set Volume&amp;quot;).&lt;br /&gt;
* &#039;u&#039; and &#039;v&#039; macros seem to emit at least a value of 1, not 0 - v00 corresponds to Z01.&lt;br /&gt;
I am not quite sure why the first row with notes on it emits a filter value of 1, and I am not even completely sure why OpenMPT gets this right.&lt;br /&gt;
If interpreted correctly, the module should stay silent (minus slight filter artefacts, of course - but they should be nearly inaudible).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=weirdloop.it|pass=0}}&lt;br /&gt;
A nice broken pattern loop. The voice should say “1 4 2 1 4 2” and then repeat forever “3 4 2”. Theoretically, this would even work in ModPlug Tracker 1.16, if it did not reset the Cxx target on song loop.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ZxxSecrets.it|pass=9855}}&lt;br /&gt;
Impulse Tracker supports three MIDI macro characters which are not documented in MIDI.TXT:&lt;br /&gt;
* &amp;lt;tt&amp;gt;h&amp;lt;/tt&amp;gt;: Host channel, i.e. the pattern channel in which the Zxx command is encountered (0-based).&lt;br /&gt;
* &amp;lt;tt&amp;gt;o&amp;lt;/tt&amp;gt;: The last used sample offset value. The high offset (SAx) is not taken into account. Note that offsets above 80h are not clamped, i.e. they generate MIDI command bytes (e.g. O90 would cause a note-on command to be emitted).&lt;br /&gt;
* &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt;: This command sends the current MIDI note if the channel is a MIDI channel, but on sample channels the current loop direction (forward = 0, backward = 1) of the sample is stored in the same memory location, so the macro evaluates to that instead of a note number.&lt;br /&gt;
&lt;br /&gt;
In addition, the MIDI messages FA (start song), FC (stop song) and FF (reset) reset the resonant filter parameters (cutoff = 127, resonance = 0) for all channels, but do not immediately update the filter coefficients.&lt;br /&gt;
&lt;br /&gt;
{{Testcase Summary}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Development|Test Cases/IT]]&lt;br /&gt;
[[Category:IT Format|Test Cases]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Compatible_Playback&amp;diff=4961</id>
		<title>Manual: Compatible Playback</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Compatible_Playback&amp;diff=4961"/>
		<updated>2025-07-12T21:11:50Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* IT compatibility settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Why a compatible playback mode? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Compatible Mode.png|thumb|300px|More compatible playback of modules can be enabled in the [[Manual: Song Properties#Miscellaneous Flags|Song Properties]].&amp;lt;br&amp;gt;When you see this warning icon, it might be a good idea to review the compatibility settings.]]&lt;br /&gt;
&lt;br /&gt;
Playback accuracy has always been a problem with tracked music. While the tracker interface with its effect letters and such is simple and fast to use, the internal algorithms used to process effects are not always as simple as they might appear on-screen. For example, due to a little typo, an effect might behave erratically under certain conditions in its original tracker application.&lt;br /&gt;
&lt;br /&gt;
When another tracker (like OpenMPT) decides to support a certain third-party format (for example the XM format of Fasttracker 2), it should faithfully reproduce the meaning of every effect letter and all other behaviour. Sadly, this has not always been the case with (Open)MPT. In the past, users of other trackers have often complained that OpenMPT does not behave like other trackers and thus replays their music (that has been written in another tracker like Fasttracker 2) incorrectly.&lt;br /&gt;
&lt;br /&gt;
Often, making OpenMPT “emulate” those original behaviours, or indeed “quirks”, is the matter of changing a single line of code. However, the same feature that has previously been playing wrong in (Open)MPT may of course, after having fixed it, sound “wrong” in any modules composed with (Open)MPT that made use of this feature. Thus, the programmers of OpenMPT found it necessary to add a “Compatible Playback” option (to be found in the [[Manual: Song Properties#Miscellaneous Flags|Song Properties]]) to switch between OpenMPT’s and other tracker’s behaviour. That way, people do not have to fear that their modules made with older versions of OpenMPT suddenly sound wrong after upgrading, and people who want to listen to their tunes made with another application can also happily listen to them without problems.&lt;br /&gt;
&lt;br /&gt;
== What should I do when composing a track in OpenMPT? ==&lt;br /&gt;
&lt;br /&gt;
That depends on your intentions and goals. When using OpenMPT’s own MPTM format, you do not need to care about compatibility settings. You do not need to enable any compatible playback settings — it does not hurt to do so, but some commands behave in more logical or consistent way when some compatibility settings are disabled.&lt;br /&gt;
&lt;br /&gt;
However, if you are composing IT and XM modules, you most likely want to spread them on the internet and share them with friends. In that case, it is important to set all compatibility settings to their defaults, because many people are using other players (such as XMPlay, Schism Tracker, MilkyTracker or indeed Impulse Tracker and Fasttracker 2), and all of those try to “emulate” Impulse Tracker and Fasttracker 2 as precisely as possible - they do not want to emulate OpenMPT’s own “quirks”. Thus, if you compose a track in those formats, you are absolutely recommended to enable the most compatible playback by clicking the &#039;&#039;&#039;Set Defaults&#039;&#039;&#039; button in the compatibility section of the [[Manual: Song Properties#Miscellaneous Flags|Song Properties]] dialog - you do not want to get a bad review on your music because it sounds “totally horrible” in XMPlay, just because you forgot to turn on compatible playback, do you?&lt;br /&gt;
&lt;br /&gt;
You should take Impulse Tracker (for IT files) or Fasttracker 2 (for XM files) as a reference when composing your tracks, or at least XMPlay (a very accurate player for both file formats) if you cannot get the original trackers to run. Upcoming OpenMPT updates will bring further improvements to the compatible playback mode, so if something in OpenMPT sounds different from Impulse Tracker / Fasttracker 2, do not hesitate to report it on our [https://bugs.openmpt.org/ Issue Tracker] and it will most likely sound correct in the next version of OpenMPT - when enabling the respective compatibility setting, that is.&lt;br /&gt;
&lt;br /&gt;
It is advised to use [[Manual: Saving and exporting#Compatibility Export|Compatibility Export]] together with this feature.&lt;br /&gt;
&lt;br /&gt;
== Upgrading from an old OpenMPT version ==&lt;br /&gt;
&lt;br /&gt;
When loading a module made with an earlier version of OpenMPT, only the compatibility settings that apply to this old version are enabled; newer settings will not be enabled automatically. This way, playback will be as close as possible to the version the module was last saved with.&lt;br /&gt;
&lt;br /&gt;
If you resume your work on a module made with an earlier version, it is recommended to switch to the default compatibility settings in the Song Properties dialog — as long as your module still sounds identical afterwards, of course. If it does not, you may want to go through all compatibility settings and review what changes they introduce, and if applicable modify the module so that it will also sound correct after enabling these compatibility settings.&lt;br /&gt;
&lt;br /&gt;
== Playback Compatibility Settings ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Playback Compatibility Settings.png|thumb|300px|Playback Compatibility Settings dialog]]&lt;br /&gt;
&lt;br /&gt;
The Playback Compatibility Settings dialog allows you to edit the detailed compatibility settings. Below is a list of all possible compatibility settings that can be toggled in this dialog.&lt;br /&gt;
&lt;br /&gt;
=== Common compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
The following compatibility settings apply to all formats. Some of them may only be visible in legacy modules saved with old OpenMPT versions.&lt;br /&gt;
&lt;br /&gt;
Greyed out checkboxes indicate the emulation of &#039;&#039;really&#039;&#039; old OpenMPT bugs. After disabling those checkboxes, they will remain unavailable.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OpenMPT 1.17 compatible random variation behaviour for instruments&#039;&#039;&#039;&amp;lt;br&amp;gt; Random volume and panning variation behaves like in early OpenMPT versions.&lt;br /&gt;
* &#039;&#039;&#039;Plugin volume MIDI CC bug emulation&#039;&#039;&#039;&amp;lt;br&amp;gt; Swaps the controller and parameter byte of the MIDI channel volume CC when choosing “MIDI volume” as an instrument’s volume command handling, effectively breaking the MIDI command.&lt;br /&gt;
* &#039;&#039;&#039;Old Pitch Wheel behaviour for instrument plugins&#039;&#039;&#039;&amp;lt;br&amp;gt; Enables the counterintuitive MIDI pitch wheel behaviour found in earlier OpenMPT versions where sample and plugin portamento did not match.&lt;br /&gt;
* &#039;&#039;&#039;Execute regular portamento slides at speed 1&#039;&#039;&#039;&amp;lt;br&amp;gt; Only fine and extra-fine portamentos are supposed to do something at a speed of one tick per row. This setting is automatically enabled for modules made with very old versions of OpenMPT.&lt;br /&gt;
* &#039;&#039;&#039;Compute note frequency in Hertz rather than periods&#039;&#039;&#039;&amp;lt;br&amp;gt; For best accuracy of high-pitched notes, all note slides etc. are computed in Hertz rather than tracker periods.&lt;br /&gt;
* &#039;&#039;&#039;Clamp tempo to 32-255 range&#039;&#039;&#039;&amp;lt;br&amp;gt; Tempo slides cannot exceed a tempo of 255.&lt;br /&gt;
* &#039;&#039;&#039;Global volume slide memory is per-channel&#039;&#039;&#039;&amp;lt;br&amp;gt; If disabled, there is only one effect memory for global volume slide commands.&lt;br /&gt;
* &#039;&#039;&#039;Panning commands override surround and random pan variation&#039;&#039;&#039;&amp;lt;br&amp;gt; If disabled, surround and random pan variation effects are not interrupted by panning commands.&lt;br /&gt;
* &#039;&#039;&#039;Note delays next to a row delay are repeated on every row repetition&#039;&#039;&#039;&amp;lt;br&amp;gt; Delayed notes that are on the same row as a row delay are retriggered on every row repetition.&lt;br /&gt;
* &#039;&#039;&#039;Old volume envelope release node scaling behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; This option is only available when importing modules saved with OpenMPT 1.27 or earlier that make use of the volume envelope release node. With this setting enabled, the volume envelope after the release node is added to the volume at release time, while the new behaviour causes this part of the envelope to be relative to the volume at release time.&lt;br /&gt;
* &#039;&#039;&#039;Reset VST volume on note-off&#039;&#039;&#039;&amp;lt;br&amp;gt; Previous versions of OpenMPT sent bogus volume commands or dry / wet ratio settings on plugin note-offs. This setting retains this behaviour.&lt;br /&gt;
* &#039;&#039;&#039;Send OPL key-off when triggering notes&#039;&#039;&#039;&amp;lt;br&amp;gt; Note-off events are sent for OPL instruments also when two notes are played on the same channel without interruption.&lt;br /&gt;
* &#039;&#039;&#039;Use old imprecise ping-pong loop end calculation&#039;&#039;&#039;&amp;lt;br&amp;gt; In previous versions of OpenMPT, the loop length could be noticeably off for very short ping-pong loops and thus cause those samples to be slightly detuned. This setting retains this behaviour.&lt;br /&gt;
* &#039;&#039;&#039;Assume initial plugin MIDI program and bank number is 1&#039;&#039;&#039;&amp;lt;br&amp;gt; In previous versions of OpenMPT, if an instrument was set to use MIDI program 1 or bank 1, this program or bank change was not set to plugins (unless another instrument previously explicitly selected a different program or bank for this plugin). Importing such a legacy module will enable this compatibility setting to restore the old behaviour, otherwise it is not available.&lt;br /&gt;
* &#039;&#039;&#039;MIDI notes can be sent to channel plugins&#039;&#039;&#039;&amp;lt;br&amp;gt; MIDI notes can be sent to channel plugins in addition to instrument plugins. Only available when importing modules made with OpenMPT 1.25 or older.&lt;br /&gt;
* &#039;&#039;&#039;Report inaccurate PPQ position to VST plugins (like OpenMPT 1.31 and older)&#039;&#039;&#039;&amp;lt;br&amp;gt; When importing a module made with OpenMPT 1.31 or older that contains any VST plugins, this setting is enabled automatically to report the song PPQ position to plugins the same incomplete, broken way as those old versions did.&lt;br /&gt;
* &#039;&#039;&#039;Plugin notes with New Note Action set to Continue are affected by note-offs (like OpenMPT 1.31 and older)&#039;&#039;&#039;&amp;lt;br&amp;gt; When importing a module made with OpenMPT 1.31 or older that contains any VST plugins, this setting is enabled automatically to use the same buggy New Note Action behaviour for plugins as found in those old versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MPTM compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
The following settings address behaviour changes that were made to make the MPTM format more intuitive:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Full control over OPL notes after note-off&#039;&#039;&#039;&amp;lt;br&amp;gt; Allows OPL notes to be controlled (volume, panning, pitch, etc.) after the note has been released.&lt;br /&gt;
* &#039;&#039;&#039;New Note Action / Duplicate Note Action set to Note Off and Note Fade affect OPL notes like samples&#039;&#039;&#039;&amp;lt;br&amp;gt; Previously, New Note Action / Duplicate Note Action types Note Off and Note Fade would both simply release OPL notes. With this setting enabled, Note Fade fades the note the same way as with samples, and with Note Off the post-sustain part of the volume envelope is applied as well.&lt;br /&gt;
* &#039;&#039;&#039;Do not reset OPL channel status at end of envelopes&#039;&#039;&#039;&amp;lt;br&amp;gt; This setting is only available in files made with OpenMPT 1.28. It re-enables the old end-of-envelope behaviour that was inconsistent with sample channels.&lt;br /&gt;
&lt;br /&gt;
In addition, all the following compatibility settings for the IT format also apply to MPTM files:&lt;br /&gt;
&lt;br /&gt;
=== IT compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
Impulse Tracker’s playback routine is relatively bug-free and logical.&lt;br /&gt;
OpenMPT’s IT playback is already relatively good even with compatible mode being disabled, however some small (and not-so-small) details are not handled correctly. Sometimes they can cause quite drastic differences in playback.&lt;br /&gt;
&lt;br /&gt;
The following compatibility settings are only available in IT and MPTM modules.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Retrigger instrument envelopes on instrument change&#039;&#039;&#039;&amp;lt;br&amp;gt; An instrument number with no note next to it plays the new instrument and plays its envelopes from start.&lt;br /&gt;
* &#039;&#039;&#039;Volume column portamento never does fine portamento&#039;&#039;&#039;&amp;lt;br&amp;gt; A fine portamento followed by e00 and f00 is not continued as a fine portamento. Instead, its parameter is treated as if it was a normal portamento.&lt;br /&gt;
* &#039;&#039;&#039;IT arpeggio algorithm&#039;&#039;&#039;&amp;lt;br&amp;gt; Handles arpeggio slightly differently than OpenMPT does by default.&lt;br /&gt;
* &#039;&#039;&#039;Out-of-range delay commands queue new instrument&#039;&#039;&#039;&amp;lt;br&amp;gt; A note next to a delay command that exceeds the current row’s length is not played, but its instrument number will be used for the next note (if it has no instrument number).&lt;br /&gt;
* &#039;&#039;&#039;Gxx shares memory with Exx and Fxx&#039;&#039;&#039;&amp;lt;br&amp;gt; All portamento commands use the same memory.&lt;br /&gt;
* &#039;&#039;&#039;After finishing a pattern loop, set the pattern loop target to the next row&#039;&#039;&#039;&amp;lt;br&amp;gt; A lone SBx effect with no corresponding SB0 will restart its loop one row after the previous loop, if there was one in the same pattern.&lt;br /&gt;
* &#039;&#039;&#039;Nested pattern loop behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; If there are several pattern loops running concurrently, execute them like IT and FT2 do.&lt;br /&gt;
* &#039;&#039;&#039;Do not reset ping pong direction with instrument numbers&#039;&#039;&#039;&amp;lt;br&amp;gt; An instrument number does not cause a ping-pong loop to change its direction.&lt;br /&gt;
* &#039;&#039;&#039;IT envelope reset behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; The rules for when to restart envelopes are changed to Impulse Tracker’s WAV writer behaviour.&lt;br /&gt;
* &#039;&#039;&#039;Forget the previous note after cutting it&#039;&#039;&#039;&amp;lt;br&amp;gt; An instrument number after a note cut cannot restart the previously playing note.&lt;br /&gt;
* &#039;&#039;&#039;More IT-like Vibrato, Tremolo and Panbrello handling&#039;&#039;&#039;&amp;lt;br&amp;gt; These effects will use Impulse Tracker’s waveforms and retrigger behaviour.&lt;br /&gt;
* &#039;&#039;&#039;Ixx behaves like in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; Tremor reset and tick counting behaviour is more like in IT.&lt;br /&gt;
* &#039;&#039;&#039;Qxx behaves like in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; Retrigger tick counting is more like in IT.&lt;br /&gt;
* &#039;&#039;&#039;Properly update C-5 frequency when changing note in multisampled instrument&#039;&#039;&#039;&amp;lt;br&amp;gt; When playing a multisampled instrument with no instrument numbers in the pattern, the middle-C frequency is still updated properly.&lt;br /&gt;
* &#039;&#039;&#039;Clear portamento target after it has been reached&#039;&#039;&#039;&amp;lt;br&amp;gt; Once the portamento target has been reached, any subsequent Tone Portamento effects will do nothing.&lt;br /&gt;
* &#039;&#039;&#039;Do not reset loop count on pattern break&#039;&#039;&#039;&amp;lt;br&amp;gt; If a pattern loop is interrupted by a pattern break, the loop count is remembered for subsequent loops.&lt;br /&gt;
* &#039;&#039;&#039;Offset after sample end is treated like in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; With “Old Effects” enabled, the offset is clamped to the sample end (so when there is no sample loop, the note will not sound). Otherwise, the sample plays from start.&lt;br /&gt;
* &#039;&#039;&#039;Volume and panning random variation work more like in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; Among the biggest differences, volume random variation is a percentage of the instrument’s global volume, not of its note volume.&lt;br /&gt;
* &#039;&#039;&#039;NNA is reset on every note change, not every instrument change&#039;&#039;&#039;&amp;lt;br&amp;gt; When using S7x effects to change an instrument’s NNA behaviour, the original value is reset with the next note rather than the next instrument number.&lt;br /&gt;
* &#039;&#039;&#039;SCx really stops the sample and does not just mute it&#039;&#039;&#039;&amp;lt;br&amp;gt; A subsequent volume effect cannot pick up a note that was previously stopped using the SCx command.&lt;br /&gt;
* &#039;&#039;&#039;IT-style envelope position advance + enable/disable behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; When disabling envelopes, the last value of the envelope keeps being applied.&lt;br /&gt;
* &#039;&#039;&#039;More compatible instrument change + portamento&#039;&#039;&#039;&amp;lt;br&amp;gt; Resets the volume envelope even on notes with Tone Portamento. A sample change during a Tone Portamento with “Compatible Gxx” enabled does not cause the new sample to be played.&lt;br /&gt;
* &#039;&#039;&#039;Do not repeat last sample point in ping pong loop, like IT’s software mixer&#039;&#039;&#039;&amp;lt;br&amp;gt; Not noticeable unless you use ping-pong-looped chip samples. If disabled, OpenMPT sounds more like IT’s Gravis Ultrasound driver.&lt;br /&gt;
* &#039;&#039;&#039;Use triggered note rather than translated note for PPS and DNA note check&#039;&#039;&#039;&amp;lt;br&amp;gt; When modifying the note-to-note mapping of an instrument, the Pitch-Pan-Separation and Duplicate Note Action are based on the note found in the pattern rather than the “translated” note.&lt;br /&gt;
* &#039;&#039;&#039;SAx does not apply an offset effect to a note next to it&#039;&#039;&#039;&amp;lt;br&amp;gt; High Offset commands next to a note do not instantly apply an offset effect, they only affect subsequent Offset commands.&lt;br /&gt;
* &#039;&#039;&#039;User IT’s filter coefficients (unless extended filter range is used) and behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; Higher resonance than OpenMPT’s original filter implementation, and slightly different rules when to enable and disable filters.&lt;br /&gt;
* &#039;&#039;&#039;Panning modulation is disabled on surround channels&#039;&#039;&#039;&amp;lt;br&amp;gt; Panning random variation, panbrello and panning envelopes are ignored on surround channels, unless OpenMPT’s “Quad Surround” panning mode (S9B command) is enabled.&lt;br /&gt;
* &#039;&#039;&#039;Do not retrigger already stopped channels&#039;&#039;&#039;&amp;lt;br&amp;gt; A sample is not retriggered if it already stopped playing. Unfortunately, this also affects retriggering very short samples (such as Hi-Hats), so it is advised to put a silent loop at the end of such samples if they need to be retriggered.&lt;br /&gt;
* &#039;&#039;&#039;Do not apply any portamento if no previous note is playing&#039;&#039;&#039;&amp;lt;br&amp;gt; Applying Tone Portamento on a channel where a note was previously stopped will not slide from this stopped note to the new note but rather play the new note directly at its target frequency.&lt;br /&gt;
* &#039;&#039;&#039;Reset note-off on portamento if there is an instrument number in Compatible Gxx mode&#039;&#039;&#039;&amp;lt;br&amp;gt; Only reset the “Note Off” status of a note with Tone Portamento if “Compatible Gxx” is enabled.&lt;br /&gt;
* &#039;&#039;&#039;Volume column effects share their memory with the effect column&#039;&#039;&#039;&amp;lt;br&amp;gt; Volume slides in the volume column have no own effect memory but share it with their effect column counterparts. This setting also ensures that fine volume slides in the volume column are only applied on the very first tick of a row, and not on multiples of the first tick if there is a Pattern Delay command.&lt;br /&gt;
* &#039;&#039;&#039;Portamento with sample swap plays the new sample from the beginning&#039;&#039;&#039;&amp;lt;br&amp;gt; When swapping samples during a Tone Portamento, they are played from the start rather than being continued at the play position of the old sample.&lt;br /&gt;
* &#039;&#039;&#039;Ignore instrument note map entries with no note completely&#039;&#039;&#039;&amp;lt;br&amp;gt; When triggering a note that is mapped to nothing at all in an instrument’s sample map, it should not even trigger New Note Actions and such.&lt;br /&gt;
* &#039;&#039;&#039;IT-style first tick handling&#039;&#039;&#039;&amp;lt;br&amp;gt; If there is a note delay, fine volume slides next to it will be executed on the tick that matches the delay rather than the “true” first tick of the row.&lt;br /&gt;
* &#039;&#039;&#039;IT-style sample&amp;amp;hold panbrello waveform&#039;&#039;&#039;&amp;lt;br&amp;gt; Setting the panbrello waveform to “random” will cause the speed parameter of the Panbrello command to hold the current random value for the given number of ticks. &lt;br /&gt;
* &#039;&#039;&#039;New notes reset portamento target in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; A previous portamento target is not remembered after a note change with no Tone Portamento.&lt;br /&gt;
* &#039;&#039;&#039;Do not reset panbrello effect until next note or panning effect&#039;&#039;&#039;&amp;lt;br&amp;gt; After executing Panbrello, its panning offset remains on the following rows until a new note or other panning effect is encountered. If disabled, the panning offset is reset immediately.&lt;br /&gt;
* &#039;&#039;&#039;Sample and instrument panning is only applied on note change, not instrument change&#039;&#039;&#039;&amp;lt;br&amp;gt; An instrument number does not re-apply the sample’s or instrument’s default panning, only a new note does.&lt;br /&gt;
* &#039;&#039;&#039;Bxx on the same row as SBx terminates the loop in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; Pattern loops that also have a Position Jump on the last row are never executed.&lt;br /&gt;
* &#039;&#039;&#039;Instrument number with note-off recalls default volume&#039;&#039;&#039;&amp;lt;br&amp;gt; An instrument number next to a Note-Off note will apply the sample’s default volume.&lt;br /&gt;
* &#039;&#039;&#039;Lone instrument number after portamento within multi-sampled instrument sets the target sample&#039;s settings&#039;&#039;&#039;&amp;lt;br&amp;gt; A tone portamento between two notes of the same instrument that are assigned to different samples does not switch to new samples; however, a lone instrument number after such a tone portamento will apply the sample settings (volume and panning) of the target sample while continuing to play the first sample. Additionally, this setting resets the portamento on a stopped note if it is picked up using a lone instrument number.&lt;br /&gt;
* &#039;&#039;&#039;Broken release node after sustain end behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; From OpenMPT 1.23 to OpenMPT 1.27, a release node past the sustain loop end did not work correctly if the “IT-style envelope position advance + enable/disable behaviour” compatibility setting was enabled as well. If such a module is loaded, this option is enabled automatically. Otherwise, it is not available.&lt;br /&gt;
* &#039;&#039;&#039;Instrument number with note-off retriggers envelopes with Old Effects enabled&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Instruments / samples with forced panning do not override channel panning for following instruments / samples&#039;&#039;&#039;&amp;lt;br&amp;gt; The panning options of samples and instruments do not override channel panning for any following notes.&lt;br /&gt;
* &#039;&#039;&#039;Bxx right of SBx terminates the loop in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; If a Bxx command is found right of the terminating SBx command of a pattern loop, the pattern loop is never executed.&lt;br /&gt;
* &#039;&#039;&#039;Duplicate Sample Check requires same instrument, Duplicate Note Check uses pattern notes for comparison&#039;&#039;&#039;&amp;lt;br&amp;gt; If an instrument has its duplicate check type set to &#039;&#039;Sample&#039;&#039;, then these checks are carried out only if the old and new instrument match. If an instrument has its duplicate check type set to &#039;&#039;Note&#039;&#039;, the old and new pattern note are compared, regardless of how they are transposed in the instrument.&lt;br /&gt;
* &#039;&#039;&#039;Pitch / Pan Separation can be overridden by panning commands&#039;&#039;&#039;&amp;lt;br&amp;gt; Rather than applying Pitch / Pan Separation as an offset on top of all other panning, this setting causes it to behave more like an implicit panning command that is overridden if a real panning command is encountered in the pattern data.&lt;br /&gt;
* &#039;&#039;&#039;Ignore tone portamento for instrument plugins&#039;&#039;&#039;&amp;lt;br&amp;gt; If enabled, tone portamento commands do not slide from one instrument plugin note to the next, but instead keep the old note playing while also triggering the new note simultaneously.&lt;br /&gt;
* &#039;&#039;&#039;Reset filter on portamento if new note plays a different sample&#039;&#039;&#039;&amp;lt;br&amp;gt; In sample mode, when doing a tone portmento between two differetn samples, the filter may be deactivated in the same way as it can be deactivated when triggering a new note (i.e. when the previous note was playing with filter cutoff fully open and resonance at 0).&lt;br /&gt;
* &#039;&#039;&#039;Initial Last Note Memory of each channel is C-0 instead of No Note&#039;&#039;&#039;&amp;lt;br&amp;gt; When this setting is active, a lone instrument number with no previous note on the same channel will trigger a C-0 note instead of not doing anything.&lt;br /&gt;
* &#039;&#039;&#039;Portamento after note-off does not re-enable sample sustain loop&#039;&#039;&#039;&amp;lt;br&amp;gt; When using tone portamento after a note-off event, the sample sustain loop is not re-enabled.&lt;br /&gt;
* &#039;&#039;&#039;Ignore pattern cell completely when trying to play unmapped instrument note&#039;&#039;&#039;&amp;lt;br&amp;gt; Any effects in a pattern cell are ignored if that pattern cell contains a note or instrument that points to an unmapped entry in the instrument’s sample map.&lt;br /&gt;
* &#039;&#039;&#039;Offset command with instrument number recalls offset with last note&#039;&#039;&#039;&amp;lt;br&amp;gt; If there is no note, but an instrument number and offset effect, the previous note is used to apply the offset effect to.&lt;br /&gt;
* &#039;&#039;&#039;Parameters of conflicting volume and effect column portamento commands may overwrite each other&#039;&#039;&#039;&amp;lt;br&amp;gt; This setting emulates the strange interactions between different portamento commands when they are encountered in both the volume and effect column at the same time.&lt;br /&gt;
* &#039;&#039;&#039;Note-Off status does not influence Envelope Carry behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; Previously, instrument envelopes restarted after a note-off even if Envelope Carry was enabled. With this setting enabled, they reset only if there is an instrument number without a note.&lt;br /&gt;
* &#039;&#039;&#039;Note Cut (SCx) resets note pitch and interacts with tone portamento + row delay&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt; This setting enables two quirks: When a lone instrument number picks up a note cancelled by an SCx command, any previous portamento effects are undone and the original note pitch is restored. A combination of SCx with a note and tone portamento also ignores the SCx command, unless there is also a pattern delay effect on the same row.&lt;br /&gt;
* &#039;&#039;&#039;Do not propagate volume column volume slide memory to regular effect column&#039;&#039;&#039;&amp;lt;br&amp;gt;This setting prevents the volume column volume slides c and d from propagating their effect parameter to the memory of the regular effect column Dxy volume slide command.&lt;br /&gt;
&lt;br /&gt;
=== XM compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
Fasttracker 2 has a &#039;&#039;&#039;very quirky&#039;&#039;&#039; playback routine which makes even common pattern effects (and combinations thereof) behave totally unpredictable.&lt;br /&gt;
These idiosyncrasies are not handled very well (or not at all) when compatible playback is disabled,  so you are &#039;&#039;&#039;absolutely advised&#039;&#039;&#039; to use the default compatible playback settings for XM Files.&lt;br /&gt;
Many people listen to those files with MilkyTracker and XMPlay, and those two programs emulate Fasttracker 2’s quirks rather well - and so does OpenMPT’s compatible playback mode.&lt;br /&gt;
&lt;br /&gt;
The following compatibility settings are only available in XM modules.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Use smooth Fasttracker 2 volume ramping&#039;&#039;&#039;&amp;lt;br&amp;gt; Enables extra smooth sample ramping, like Fasttracker 2 did it. When enabled, percussive instruments (e.g. Bass Drums) will sound very muffled, as most of their attack will be lost.&lt;br /&gt;
* &#039;&#039;&#039;Reset note-off on portamento if there is an instrument number&#039;&#039;&#039;&amp;lt;br&amp;gt; Resets the “Note Off” status of a note with Tone Portamento.&lt;br /&gt;
* &#039;&#039;&#039;FT2 arpeggio algorithm&#039;&#039;&#039;&amp;lt;br&amp;gt; FT2 has a very buggy arpeggio command that, among other things, plays arpeggios backwards (second parameter’s note comes first).&lt;br /&gt;
* &#039;&#039;&#039;Rxx behaves like in FT2&#039;&#039;&#039;&amp;lt;br&amp;gt; The Retrigger command also has very erratic behaviour in FT2, which is emulated by this setting.&lt;br /&gt;
* &#039;&#039;&#039;Vibrato depth in volume column does not actually execute the vibrato effect&#039;&#039;&#039;&amp;lt;br&amp;gt; The uxx command only sets the vibrato speed for subsequent vibrato commands, but does not actually play a vibrato.&lt;br /&gt;
* &#039;&#039;&#039;Do not play portamento-ed note if no previous note is playing&#039;&#039;&#039;&amp;lt;br&amp;gt; If there is no playing note, a new note with a Tone Portamento command next to it will not sound.&lt;br /&gt;
* &#039;&#039;&#039;FT2-style Kxx handling&#039;&#039;&#039;&amp;lt;br&amp;gt; Key Off is another weird command in FT2 and behaves differently with volume commands and instrument numbers next to it.&lt;br /&gt;
* &#039;&#039;&#039;Volume-column pan slides are finer&#039;&#039;&#039;&amp;lt;br&amp;gt; lxx and rxx are as fine as fine panning slides in Impulse Tracker.&lt;br /&gt;
* &#039;&#039;&#039;Offset past sample end stops the note&#039;&#039;&#039;&amp;lt;br&amp;gt; Notes with offset commands beyond the sample length are never triggered.&lt;br /&gt;
* &#039;&#039;&#039;Do not allow ModPlug extensions to X command&#039;&#039;&#039;&amp;lt;br&amp;gt; Only X1x and X2x commands will work, X5x and higher do not.&lt;br /&gt;
* &#039;&#039;&#039;Retrigger envelopes if there is a note delay with no note&#039;&#039;&#039;&amp;lt;br&amp;gt; A note delay with no note next to it will still retrigger instrument envelopes.&lt;br /&gt;
* &#039;&#039;&#039;Lxx only sets the pan envelope position if the volume envelope&#039;s sustain flag is set&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Portamento with instrument number applies volume settings of new sample, but not the new sample itself&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;No volume column memory&#039;&#039;&#039;&amp;lt;br&amp;gt; Volume column slides do not have a parameter memory.&lt;br /&gt;
* &#039;&#039;&#039;Next pattern starts on the same row as the last E60 command&#039;&#039;&#039;&amp;lt;br&amp;gt; After a pattern loop has been executed, the next pattern will start from the row where the loop started rather than from the first row. To avoid this, put a Pattern Break command at the end of the pattern.&lt;br /&gt;
* &#039;&#039;&#039;Keep processing faded channels for later portamento pickup&#039;&#039;&#039;&amp;lt;br&amp;gt; After a channel has been faded out, a Tone Portamento can still pick up this silent note.&lt;br /&gt;
* &#039;&#039;&#039;Reload sample settings even if a note-off is placed next to an instrument number&#039;&#039;&#039;&amp;lt;br&amp;gt; Even an instrument number next to a Note-Off note will apply the sample’s default volume and panning. &lt;br /&gt;
* &#039;&#039;&#039;Portamento with note delay next to it is ignored&#039;&#039;&#039;&amp;lt;br&amp;gt; Tone Portamentos only work on notes with no note delays.&lt;br /&gt;
* &#039;&#039;&#039;Ignore out-of-range transposed notes&#039;&#039;&#039;&amp;lt;br&amp;gt; A note, after applying the sample’s transpose amount, may not leave a certain range of notes. If it does, it is ignored.&lt;br /&gt;
* &#039;&#039;&#039;Bxx or Dxx on the same row as E6x terminates the loop&#039;&#039;&#039;&amp;lt;br&amp;gt; Pattern loops that also have a Position Jump or Pattern Break effect on the last row are never executed.&lt;br /&gt;
* &#039;&#039;&#039;Portamento target is not reset with new notes&#039;&#039;&#039;&amp;lt;br&amp;gt; Applying a Tone Portamento after a new note with no portamento has been triggered will slide back to the last note with portamento.&lt;br /&gt;
* &#039;&#039;&#039;Sustain point at end of envelope loop stops the loop after release&#039;&#039;&#039;&amp;lt;br&amp;gt; If the sustain point is at the loop end and the sustain point has been released, do not loop anymore. &lt;br /&gt;
* &#039;&#039;&#039;Txx behaves like in FT2&#039;&#039;&#039;&amp;lt;br&amp;gt; Tremor is another somewhat idiosyncratic command in FT2.&lt;br /&gt;
* &#039;&#039;&#039;Do not trigger notes with out-of-range note delay&#039;&#039;&#039;&amp;lt;br&amp;gt; If the note delay is greater than the ticks per row (ignoring any pattern delays), it is ignored. &lt;br /&gt;
* &#039;&#039;&#039;Use FT2&#039;s broken period handling&#039;&#039;&#039;&amp;lt;br&amp;gt; When sliding a note too deep, it will wrap around at some point and become a very high note.&lt;br /&gt;
* &#039;&#039;&#039;Panning command with delayed note-off is ignored&#039;&#039;&#039;&amp;lt;br&amp;gt; If there is a Note Delay and Note-Off, a panning command next to them is ignored.&lt;br /&gt;
* &#039;&#039;&#039;FT2-style volume column handling if there is a note delay&#039;&#039;&#039;&amp;lt;br&amp;gt; If there is a note delay, volume column effects are &#039;&#039;not&#039;&#039; executed on the first tick and, if there is an instrument number, on the delayed tick.&lt;br /&gt;
* &#039;&#039;&#039;Round sample finetune to multiples of 8&#039;&#039;&#039;&amp;lt;br&amp;gt; FT2 has a finetune ranging from -128 to 127, but a finetune change only be heard at every multiple of 8.&lt;br /&gt;
* &#039;&#039;&#039;Fade instrument on note-off when there is no volume envelope; instrument numbers reset note-off status.&#039;&#039;&#039;&amp;lt;br&amp;gt; Instruments with no instrument envelope are instantly muted when a note-off is encountered. If this note-off is not delayed (i.e. there is no EDx effect next to it), the instrument is also faded out, which is only relevant if a volume effect is encountered after the note-off. Additionally, instrument numbers after a note-off reset the note-off status, so the sustain status of the envelope is reset.&lt;br /&gt;
* &#039;&#039;&#039;Emulate FT2/ProTracker tremolo ramp down / triangle waveform&#039;&#039;&#039;&amp;lt;br&amp;gt; The “ramp down” tremolo waveform (E71) is very buggy and even influenced by vibrato in FT2.&lt;br /&gt;
* &#039;&#039;&#039;Portamento Up and Down have separate effect memory&#039;&#039;&#039;&amp;lt;br&amp;gt; 1xx and 2xx do not share effect memory.&lt;br /&gt;
* &#039;&#039;&#039;If the sustain point of the panning envelope is reached before key-off, it is never released&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Delayed instrument-less notes should not recall volume and panning&#039;&#039;&#039;&amp;lt;br&amp;gt; From OpenMPT 1.19 to 1.27, notes with a note delay but no instrument number accidentally recalled the sample’s default volume and panning settings, which should only happen if there is an instrument number.&lt;br /&gt;
* &#039;&#039;&#039;Tone Portamento direction resets after reaching portamento target from below&#039;&#039;&#039;&amp;lt;br&amp;gt; After a tone portamento has reached its target note, FT2 will act as if the tone portamento should always decrease the frequency of the note, so if the note’s frequency is decreased (e.g. with 2xx) afterwards and another Tone Portamento effect is encountered, it will directly jump back to the target note.&lt;br /&gt;
* &#039;&#039;&#039;Ignore tone portamento and fine pitch slides for instrument plugins&#039;&#039;&#039;&amp;lt;br&amp;gt;If enabled, tone portamento commands do not slide from one instrument plugin note to the next, but instead keep the old note playing while also triggering the new note simultaneously. Additionally, fine and extra-fine pitch slides are not applied to instrument plugins.&lt;br /&gt;
* &#039;&#039;&#039;Key-off before auto-vibrato sweep-in is complete resets auto-vibrato depth&#039;&#039;&#039;&amp;lt;br&amp;gt; After a note-off / key-off event, sample auto-vibrato only continues to play if it already reached its full depth before the note-off / key-off event.&lt;br /&gt;
* &#039;&#039;&#039;Offset effect memory is only updated when the command is next to a note&#039;&#039;&#039;&amp;lt;br&amp;gt; The effect memory of the Offset command (9xx) is only updated when the command is placed next to a note.&lt;br /&gt;
&lt;br /&gt;
=== S3M compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
The following compatibility settings are only available in S3M modules. They are not saved in S3M files, but OpenMPT tries to guess the most appropriate settings when loading such files.&lt;br /&gt;
&lt;br /&gt;
S3M files made with OpenMPT always use all compatibility settings. However, when loading S3M files made with less compatible trackers (such as Impulse Tracker), compatible playback settings are disabled automatically as required. Re-saving such a file in OpenMPT will re-enable them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Do not reset panbrello effect until next note or panning effect&#039;&#039;&#039;&amp;lt;br&amp;gt; After executing Panbrello, its panning offset remains on the following rows until a new note or other panning effect is encountered. If disabled, the panning offset is reset immediately.&lt;br /&gt;
* &#039;&#039;&#039;Offset past sample end stops the note&#039;&#039;&#039;&amp;lt;br&amp;gt; Notes with offset commands beyond the sample length are never triggered.&lt;br /&gt;
* &#039;&#039;&#039;Do not process any effects on muted S3M channels&#039;&#039;&#039;&amp;lt;br&amp;gt; Any effect commands (even tempo and global volume commands) on muted channels are completely ignored. Many trackers and players still apply these commands on muted channels.&lt;br /&gt;
* &#039;&#039;&#039;Most effects share the same memory&#039;&#039;&#039;&amp;lt;br&amp;gt; Most effects in Scream Tracker 3 share a single effect memory (the only exception being vibrato and tone portamento effects). Many trackers and players implement effect-specific memory instead.&lt;br /&gt;
* &#039;&#039;&#039;Portamento with instrument number applies volume settings of new sample, but not the new sample itself (GUS)&#039;&#039;&#039;&amp;lt;br&amp;gt; The default volume of the sample number next to a Tone Portamento command is applied, but no sample swap happens. This emulates the Gravis Ultrasound driver in Scream Tracker 3. Disable this option to emulate Sound Blaster playback instead.&lt;br /&gt;
* &#039;&#039;&#039;Do not remember vibrato type in effect memory&#039;&#039;&#039;&amp;lt;br&amp;gt; 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.&lt;br /&gt;
* &#039;&#039;&#039;Stop note when reaching the format&#039;s maximum note frequency&#039;&#039;&#039;&amp;lt;br&amp;gt; Only available when importing modules made with old ModPlug Tracker versions or BeRoTracker, notes stop playing when their pitch exceeds the S3M frequency limits after a portamento slide. Otherwise, the poratmento slide stops at the frequency limit.&lt;br /&gt;
* &#039;&#039;&#039;Portamento immediately following an arpeggio effect continues at the last arpeggiated note&#039;&#039;&#039;&amp;lt;br&amp;gt; If a portamento up or portamento down effect immediately follows an arpeggio effect, it starts sliding from the last arpeggiated note, and not from the channel frequency as it was before the arpeggio.&lt;br /&gt;
* &#039;&#039;&#039;Notes without instrument use the previous note&#039;s sample offset&#039;&#039;&#039;&amp;lt;br&amp;gt; Similarly to the MOD format, this setting causes notes without an instrument number to use the same sample offset as the previous note.&lt;br /&gt;
* &#039;&#039;&#039;Notes cannot be retriggered after they have been cut&#039;&#039;&#039;&amp;lt;br&amp;gt; The Qxy command (with no note next to it) will not retrigger notes after the previous note has been forcefully cut.&lt;br /&gt;
* &#039;&#039;&#039;Enable on-the-fly sample swapping (SoundBlaster driver)&#039;&#039;&#039;&amp;lt;br&amp;gt; The Sound Blaster driver in Scream Tracker 3 supports MOD-like sample swapping by just providing a new sample number without a note. As OpenMPT mostly follows Gravis Ultrasound playback for S3M modules, this setting is disabled by default.&lt;br /&gt;
* &#039;&#039;&#039;Retrigger effect (Qxy) affects OPL notes&#039;&#039;&#039;&amp;lt;br&amp;gt; If disabled, only the note volume is affected by the Qxy effect (like in Scream Tracker 3). Otherwise, OPL notes are restarted like sample notes. This setting is only available for files made with OpenMPT 1.28, which did not use the same retrigger behaviour as Scream Tracker 3.&lt;br /&gt;
* &#039;&#039;&#039;Apply lower frequency limit&#039;&#039;&#039;&amp;lt;br&amp;gt; This stops notes from sliding down lower than Scream Tracker 3 supports.&lt;br /&gt;
* &#039;&#039;&#039;OPL notes with Tone Portamento are delayed until the next row&#039;&#039;&#039;&amp;lt;br&amp;gt;Tone Portamento is not available for OPL notes, instead the new note starts playing on the next row without any portamento.&lt;br /&gt;
* &#039;&#039;&#039;Ignore combined fine slides (Kxy / Lxy)&#039;&#039;&#039;&amp;lt;br&amp;gt; Fine volume slides are not possible with commands K and L, like in Scream Tracker 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MOD compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
The following compatibility settings are only available in MOD modules. They are not saved in MOD files, but OpenMPT tries to guess the most appropriate settings when loading such files.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;VBlank timing&#039;&#039;&#039;&amp;lt;br&amp;gt; F20 and above sets speed instead of tempo.&lt;br /&gt;
* &#039;&#039;&#039;ProTracker one-shot loops&#039;&#039;&#039;&amp;lt;br&amp;gt; If (and only if) a sample’s loop starts at 0, the sample is first played in its &#039;&#039;entire&#039;&#039; length. Afterwards, only the loop section of the sample is repeated.&lt;br /&gt;
* &#039;&#039;&#039;Ignore panning commands&#039;&#039;&#039;&amp;lt;br&amp;gt; 8xx and E8x commands will do nothing.&lt;br /&gt;
* &#039;&#039;&#039;Enable on-the-fly sample swapping&#039;&#039;&#039;&amp;lt;br&amp;gt; Instrument numbers with no note next to them cause the playing sample to be exchanged by the newly specified sample. The effect takes place as soon as the currently played sample reaches its loop end.&lt;br /&gt;
* &#039;&#039;&#039;Emulate FT2/ProTracker tremolo ramp down / triangle waveform&#039;&#039;&#039;&amp;lt;br&amp;gt; The “ramp down” tremolo waveform (E71) is very buggy and even influenced by vibrato in ProTracker.&lt;br /&gt;
* &#039;&#039;&#039;Out-of-range note delay is played on next row&#039;&#039;&#039;&amp;lt;br&amp;gt; A note that is played with a note delay greater than the current ticks per row is postponed to the first tick of the next row, unless the next row already plays another note. The postponed note is played with an instant portamento from a previously playing note rather than being played from start.&lt;br /&gt;
* &#039;&#039;&#039;Tempo changes are handled on second tick instead of first&#039;&#039;&#039;&amp;lt;br&amp;gt; F20 and above are only applied after the first tick of the row. At a speed of one tick per row, the change happens on the next row.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
The following compatibility settings belong to neither of the aforementioned formats; they may be set when importing files from other formats and are not available otherwise.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Beating OPL oscillators&#039;&#039;&#039;&amp;lt;br&amp;gt; Only available when importing C67 files, this option slightly detunes OPL instruments based on the channel they are played on to create a fatter sound.&lt;br /&gt;
* &#039;&#039;&#039;OPL key-off sets note frequency to 0 Hz&#039;&#039;&#039;&amp;lt;br&amp;gt; Only available when importing FMT files, this options sets the note pitch to 0 Hz to cut notes in addition to releasing the note-on flag.&lt;br /&gt;
* &#039;&#039;&#039;Offset commands work without a note next to them&#039;&#039;&#039;&amp;lt;br&amp;gt; Offset commands can change the playback position of the sample without a note next to them. This behaviour is for example supported in the DMF, MDL and PLM formats.&lt;br /&gt;
* &#039;&#039;&#039;New note without instrument number does not play looped samples from the start&#039;&#039;&#039;&amp;lt;br&amp;gt; Looped samples continue to play when a new note has no instrument number next to it, as if there was an instant tone portamento effect.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Compatible Playback]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Hidden_Settings&amp;diff=4960</id>
		<title>Manual: Hidden Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Hidden_Settings&amp;diff=4960"/>
		<updated>2025-07-11T15:33:36Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: Remove empty section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Settings Advanced.png|thumb|300px|Advanced tab of the settings dialog]]&lt;br /&gt;
&lt;br /&gt;
Some settings for advanced users cannot be changed directly in OpenMPT, however they can be changed by modifying OpenMPT’s configuration file, mptrack.ini, or from the [[Manual:_Setup/Advanced|Advanced Settings]]. When using the latter method, it might be necessary to restart OpenMPT for some options to take effect.&lt;br /&gt;
&lt;br /&gt;
== [Broken Plugin Workarounds] ==&lt;br /&gt;
* &#039;&#039;&#039;VSTMaskAllCrashes&#039;&#039;&#039;: Determines whether crashes in VST plugins should be reported to the user (1) or passed on to the system, i.e. OpenMPT crashes (0). Note that if a plugin crashed, its internal state or even OpenMPT’s state may be inconsistent, so in this situation it is best to close and reopen the tracker anyway.&lt;br /&gt;
* &#039;&#039;&#039;VSTNeverUnloadAnyPlugin&#039;&#039;&#039;: If set to 1, VST plugins are not fully unloaded when closing them. This may help with some buggy plugins (e.g. made with older versions of SynthEdit 1.4). Do not enable this setting unless you have issues when unloading plugins that cannot be solved by using the plugin bridge.&lt;br /&gt;
&lt;br /&gt;
== [Components] ==&lt;br /&gt;
* &#039;&#039;&#039;BlockASIO&#039;&#039;&#039;, &#039;&#039;&#039;BlockPortAudio&#039;&#039;&#039;, &#039;&#039;&#039;BlockRtAudio&#039;&#039;&#039;, &#039;&#039;&#039;BlockWaveOut&#039;&#039;&#039;: If set to 1, the respective sound device types do not get initialized or queried by OpenMPT. You should not need to disable any of these unless told to do so by the OpenMPT developers in order to diagnose problems.&lt;br /&gt;
* &#039;&#039;&#039;BlockMediaFoundation&#039;&#039;&#039;: If set to 1, OpenMPT will not load any samples using MediaFoundation codecs.&lt;br /&gt;
* &#039;&#039;&#039;BlockWineWrapper&#039;&#039;&#039;: If set to 1, OpenMPT will not load the Wine native audio wrapper.&lt;br /&gt;
* &#039;&#039;&#039;KeepLoaded&#039;&#039;&#039;: If set to 0, optional OpenMPT components (e.g. MP3 codecs) are unloaded after usage. This frees up memory used by these components but slows down subsequent uses.&lt;br /&gt;
* &#039;&#039;&#039;LoadOnStartUp&#039;&#039;&#039;: If set to 1, some optional components are loaded right on statup instead of when they are first used.&lt;br /&gt;
&lt;br /&gt;
== [Debug] ==&lt;br /&gt;
Options in this section should generally only be changed if you are advised by an OpenMPT developer to do so.&lt;br /&gt;
* &#039;&#039;&#039;DelegateToWindowsHandler&#039;&#039;&#039;: If set to 1, OpenMPT will invoke the Windows default crash handler after its own crash handler has finished generating the crash report which had been the behaviour in OpenMPT before 1.27.&lt;br /&gt;
* &#039;&#039;&#039;StopSoundDeviceBeforeDump&#039;&#039;&#039;: By default, the sound device is closed after writing out a crash dump. Setting this option to 1 inverts the behaviour.&lt;br /&gt;
* &#039;&#039;&#039;StopSoundDeviceOnCrash&#039;&#039;&#039;: If set to 0, OpenMPT will not close or otherwise touch the state of the sound device when writing out a crash dump. Only change this setting when asked by the OpenMPT developers to do so in order to diagnose sound device related crashes.&lt;br /&gt;
* &#039;&#039;&#039;TraceAlwaysDump&#039;&#039;&#039;: If set to 1 and &#039;&#039;&#039;TraceEnable&#039;&#039;&#039; is also set to 1, OpenMPT will always write out the trace log on program exit even if no crash happened. Do not enable this setting unless you are advised by the developers to do so.&lt;br /&gt;
* &#039;&#039;&#039;TraceEnable&#039;&#039;&#039;: If set to 1, a trace logging system is enabled which can be used by the OpenMPT developers to debug certain problems. Do not enable this setting unless you are advised by the developers to do so.&lt;br /&gt;
* &#039;&#039;&#039;TraceSize&#039;&#039;&#039;: Configures the tracer buffer size. By default, it contains 1,000,000 entries.&lt;br /&gt;
&lt;br /&gt;
== [Display] ==&lt;br /&gt;
* &#039;&#039;&#039;FSUpdateInterval&#039;&#039;&#039;: OpenMPT watches the &#039;&#039;&#039;f&#039;&#039;&#039;ile &#039;&#039;&#039;s&#039;&#039;&#039;ystem in order to update the [[Manual:_Tree_View#Instrument_Library|instrument library]] tree view when files get added or removed to the directory while OpenMPT is running. This setting limits the rate of the GUI updates in these cases to the given value in milliseconds. The default is 500ms.&lt;br /&gt;
* &#039;&#039;&#039;GUIUpdateInterval&#039;&#039;&#039;: Defines the update interval of the GUI in milliseconds (default: depends on the period value found in the sound card settings).&lt;br /&gt;
* &#039;&#039;&#039;ShowSplashScreen&#039;&#039;&#039;: If set to 0, no splash screen is shown when starting the program (same effect as [[Manual: Command-line Parameters|command line option]] /NoLogo).&lt;br /&gt;
* &#039;&#039;&#039;UseOldStyleFolderBrowser&#039;&#039;&#039;: When set to 1, the classic tree-style folder picker is used on Windows Vista and newer. On older systems and Wine, it is always used.&lt;br /&gt;
* &#039;&#039;&#039;VuMeterUpdateInterval&#039;&#039;&#039;: Defines the update interval of the VU meters in milliseconds (default: 15ms).&lt;br /&gt;
* &#039;&#039;&#039;VuMeterDecaySpeedDecibelPerSecond &#039;&#039;&#039;: Sets the VU meter&#039;s decay speed The default value is 88 dB/s.&lt;br /&gt;
&lt;br /&gt;
== [Export] ==&lt;br /&gt;
* &#039;&#039;&#039;DefaultToSoundcardSamplerate&#039;&#039;&#039;: By default, the [[Manual: Saving and exporting#Exporting tracks|export dialog]] presets the export frequency to the tracker’s currently selected sample rate. One reason for this behaviour is that some plugins do not like it when the sample rate is changed between normal playback and export. If you do not like this behaviour, you can set this value to 0. In this case, OpenMPT remembers the previously selected sample rate instead.&lt;br /&gt;
* &#039;&#039;&#039;FLACCompressionLevel&#039;&#039;&#039;: When [[Manual: Saving and exporting#Exporting tracks|exporting]] to FLAC format, this value sets the FLAC compression level. Higher values mean better compression ratio and require more CPU time. For details, please refer to the FLAC documentation.&lt;br /&gt;
* &#039;&#039;&#039;FLACMultithreading&#039;&#039;&#039;: By default, the FLAC encoder uses all available CPU cores for FLAC encoding. Setting this to 0 disables the multithreaded encoding.&lt;br /&gt;
* &#039;&#039;&#039;MP3ID3v2MinPadding&#039;&#039;&#039;: This value is the minimum amount of padding bytes to add to ID3v2 tags. &lt;br /&gt;
* &#039;&#039;&#039;MP3ID3v2PaddingAlignHint&#039;&#039;&#039;: This aligns the MP3 data after the ID3v2 tag in addition to the minimum padding to a multiple of the configured value. Set to 0 to disable additional aligning.&lt;br /&gt;
* &#039;&#039;&#039;MP3ID3v2WriteReplayGainTXXX&#039;&#039;&#039;: Write ReplayGain information (if calculated, see &#039;&#039;&#039;MP3LameCalculateReplayGain&#039;&#039;&#039; and &#039;&#039;&#039;MP3LameCalculatePeakSample&#039;&#039;&#039;) to the ID3v2 tag. This setting defaults to 1.&lt;br /&gt;
* &#039;&#039;&#039;MP3LameCalculateReplayGain&#039;&#039;&#039; and &#039;&#039;&#039;MP3LameCalculatePeakSample&#039;&#039;&#039;: When [[Manual: Saving and exporting#Exporting tracks|exporting]] to MP3 format, calculate the ReplayGain track gain adjustment and the peak sample value (as require by ReplaGain) respectively. The calculated values get written to the VBR/Lame info header automatically in VBR mode. Additionally, the values can be written to the ID3v2 tags when enabled (see &#039;&#039;&#039;MP3ID3v2WriteReplayGainTXXX&#039;&#039;&#039;). Both settings default to 1.&lt;br /&gt;
* &#039;&#039;&#039;MP3LameID3v2UseLame&#039;&#039;&#039;: If set to 1, when [[Manual: Saving and exporting#Exporting tracks|exporting]] to MP3 format, uses the libmp3lame ID3v2.3 implementation instead of the OpenMPT ID3v2.4 implementation. ID3v2.3 is more widely supported by older player software.&lt;br /&gt;
* &#039;&#039;&#039;MP3LameQuality&#039;&#039;&#039;: When [[Manual: Saving and exporting#Exporting tracks|exporting]] to MP3 format using libmp3lame, this value selects the internal algorithm quality used by LAME. Lower values mean better quality and require more CPU time. This is the same as the -q command line parameter for LAME. More details can be found e.g. on [http://wiki.hydrogenaud.io/index.php?title=LAME_-q_switch Hydrogenaudio].&lt;br /&gt;
* &#039;&#039;&#039;OpusComplexity&#039;&#039;&#039;: When [[Manual: Saving and exporting#Exporting tracks|exporting]] to Opus format, this value selects the internal complexity used by libopus. Higher values mean better encoding efficiency and require more CPU time. Value -1 uses the libopus default value. For details, please refer to the [https://opus-codec.org/docs/ libopus documentation].&lt;br /&gt;
&lt;br /&gt;
== [MIDI Input Ports] ==&lt;br /&gt;
In this section, you can set “friendly names” for all MIDI input ports. If you have lots of MIDI ports with undescriptive names (such as “MIDI Device Port 1”, “MIDI Device Port 2”, …), it can be useful to replace those names with more suitable names, e.g. to describe which device is connected to a specific port. To replace a name, add a pair like &amp;lt;code&amp;gt;MIDI Device Port 1=Synthesizer 1&amp;lt;/code&amp;gt; to this section.&lt;br /&gt;
&lt;br /&gt;
Friendly names are also recognized by the MIDI Input / Output plugin: If the selected ports have friendly names assigned when the module is saved, the next time is opened it will try to find the correct device by its friendly name. So if a MIDI device is connected to a different MIDI port, you can rename the ports and OpenMPT will automatically choose the correct port.&lt;br /&gt;
&lt;br /&gt;
== [MIDI Output Ports] ==&lt;br /&gt;
Same as [[#.5BMIDI Input Ports.5D|[MIDI Input Ports]]], but for MIDI output ports.&lt;br /&gt;
&lt;br /&gt;
== [Misc] ==&lt;br /&gt;
* &#039;&#039;&#039;AllowMultipleCommandsPerKey&#039;&#039;&#039;: By default, a key combination can be used by only one command. Setting this to 1 allows you to bind more than one command to a key combination. Beware that this might lead to problems with existing keyboard mappings with overlapping commands!&lt;br /&gt;
* &#039;&#039;&#039;CacheCompleteFileBeforeLoading&#039;&#039;&#039;: If set to 1, OpenMPT caches entire (module, instrument, etc.) files in memory, which may improve file reading performance at the expense of more memory being used.&lt;br /&gt;
* &#039;&#039;&#039;DistinguishModifiers&#039;&#039;&#039;: Enable this option to distinguish between left and right &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; / &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt; / &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; modifiers, e.g. to create FastTracker 2-like pattern play shortcuts.&lt;br /&gt;
* &#039;&#039;&#039;FlushFileBuffersOnSave&#039;&#039;&#039;: Disabling this option avoids flushing of file buffers after saving modules, samples and other files on disk. This can speed up the write operation but increases the risk of data loss e.g. in case of a power failure.&lt;br /&gt;
* &#039;&#039;&#039;ITCompressionMono&#039;&#039;&#039;: Enables IT-compressed mono samples when saving IT/MPTM files, depending on the value. To enable saving for normal IT files, add 1 to the value, for IT files saved through Compatibility Export, add 2, and for MPTM files add 4. So to enable saving of compressed samples in compatible ITs and MPTMs only, you would use the value 6. Some caveats regarding the usage of compressed samples have been written down on the [https://forum.openmpt.org/index.php?topic=4961.0 forum].&lt;br /&gt;
* &#039;&#039;&#039;ITCompressionStereo&#039;&#039;&#039;: Enables IT-compressed stereo samples when saving IT/MPTM files, depending on the value (see above).&lt;br /&gt;
* &#039;&#039;&#039;MRUListLength&#039;&#039;&#039;: Sets the maximum length of the most recently used file list in the file menu. Allowed values are between 0 (no list) and 15 entries.&lt;br /&gt;
* &#039;&#039;&#039;ProcessPriorityClass&#039;&#039;&#039;: Set the Windows process priority class for OpenMPT. Possible values are: &amp;quot;idle&amp;quot;, &amp;quot;below&amp;quot;, &amp;quot;normal&amp;quot;, &amp;quot;above&amp;quot;, &amp;quot;high&amp;quot;, &amp;quot;realtime&amp;quot;. The default is &amp;quot;normal&amp;quot;. See further discussion on the [https://forum.openmpt.org/index.php?topic=5655.0 forum]. &#039;&#039;&#039;Warning&#039;&#039;&#039;: Changing this setting can cause system lockups requiring hard system reset.&lt;br /&gt;
* &#039;&#039;&#039;SaveChannelMuteStatus&#039;&#039;&#039;: If set to 1, OpenMPT will save the channel mute status in IT, MPTM and S3M files.&lt;br /&gt;
* &#039;&#039;&#039;SmoothFT2Ramping&#039;&#039;&#039;: If set to 1, XM files made with Fasttracker 2 will automatically use [[Manual:_Compatible_Playback#XM_compatibility_settings|very smooth sample ramping]] settings (like Fasttracker 2 did).&lt;br /&gt;
* &#039;&#039;&#039;UseSingleInstance&#039;&#039;&#039;: Always forces OpenMPT to only use a single program instance, even when the &#039;&#039;&#039;/shared&#039;&#039;&#039; command line switch is not specified.&lt;br /&gt;
&lt;br /&gt;
== [Paths] ==&lt;br /&gt;
* &#039;&#039;&#039;Export_Directory&#039;&#039;&#039;: The default export directory for lossless and lossy audio export. OpenMPT always uses the last used directory for exporting, so changing this setting does not make a lot of sense.&lt;br /&gt;
* &#039;&#039;&#039;UseAppDataDirectory&#039;&#039;&#039;: This is a legacy setting imported from portable OpenMPT installations prior to version 1.29. If &amp;lt;code&amp;gt;mptrack.ini&amp;lt;/code&amp;gt; is found next to &amp;lt;code&amp;gt;OpenMPT.exe&amp;lt;/code&amp;gt; and this value is to 0, portable mode is assumed and all other configuration files are searched directly in the same directory as OpenMPT’s executable (by default they are placed in %APPDATA%\OpenMPT). When upgrading to a newer OpenMPT version, this setting is automatically converted to the new way of enabling portability. See also: [[Manual: System Setup#Portability|System Setup]].&lt;br /&gt;
&lt;br /&gt;
== [Pattern Editor] ==&lt;br /&gt;
* &#039;&#039;&#039;AccessibilityFormat&#039;&#039;&#039;: Defines the description of the pattern editor that can be obtained by screen readers. The string may contain the following variables: &amp;lt;code&amp;gt;%sequence%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%order%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%pattern%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%row%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%channel%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%channel_name%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%column_type%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%column_description%&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;AlwaysDrawWholePatternOnScrollSlow&#039;&#039;&#039;: If set to 1, OpenMPT will always repaint the whole pattern display instead of re-using parts of the window that have only moved and not changed. This will be measurably slower, however in some situation the display will look broken otherwise (like jittering play cursor, not updating regions of the pattern display properly when switching to and from the window, or generally sluggish/jerky display). The problem is related to certain graphics drivers (known examples are systems with multiple AMD GPUs in Windows 7, Windows XP in VirtualBox, and all Wine systems). By default, this setting is 0. On Wine, this setting has no effect and is treated as always 1, regardless of its actual value.&lt;br /&gt;
* &#039;&#039;&#039;AutoHideVolumeColumnForMOD&#039;&#039;&#039;: When set to 1, the volume column is hidden by default for MOD and other formats that do not have a volume column.&lt;br /&gt;
* &#039;&#039;&#039;DefaultSequenceMargins&#039;&#039;&#039;: Defines how many order items are shown at least before and after the currently selected order item (0 by default).&lt;br /&gt;
* &#039;&#039;&#039;EditStepAppliesToCommands&#039;&#039;&#039;: When set to 1, the edit step setting is also applied when entering a command into the volume or effect column.&lt;br /&gt;
* &#039;&#039;&#039;FontDot&#039;&#039;&#039;: Overriding this setting allows to specify a custom character to be used for empty cells with user-configured pattern fonts.&lt;br /&gt;
* &#039;&#039;&#039;NoEditPopup&#039;&#039;&#039;: Disables the reminder popup when trying to edit patterns while editing is disabled and treats all channel columns like the note column to simplify jamming (keyjazz).&lt;br /&gt;
* &#039;&#039;&#039;OrderListOldDropBehaviour&#039;&#039;&#039;: Restores pre-OpenMPT 1.29 drag &amp;amp; drop behaviour in the order list editor. That is, patterns are always dropped left of the drop position, even if the drop position is right of the source.&lt;br /&gt;
* &#039;&#039;&#039;RowDisplayOffset&#039;&#039;&#039;: Defines the displayed number of the first pattern row; by default, it is 0. This does not affect the Goto dialog or break commands in patterns.&lt;br /&gt;
* &#039;&#039;&#039;VolumeColumnInHex&#039;&#039;&#039;: If set to 1, parameters in the volume column are shown in hexadecimal rather than decimal. In order to be able to enter hex digits A-F, the corresponding [[Manual: Keyboard Actions#Volume Column|keyboard shortcuts]] need to be assigned (note that you may have to re-assign effect letters a-f to avoid conflicts).&lt;br /&gt;
&lt;br /&gt;
== [Sample Editor] ==&lt;br /&gt;
* &#039;&#039;&#039;FLACMultithreading&#039;&#039;&#039;: By default, the FLAC encoder uses one thread for FLAC sample saving. Setting this to 1 enables multithreaded FLAC encoding for samples.&lt;br /&gt;
&lt;br /&gt;
== [Sound Settings] ==&lt;br /&gt;
* &#039;&#039;&#039;AllowDeferredProcessing&#039;&#039;&#039;: If set to 0, deferred processing is never used for ASIO drivers.&lt;br /&gt;
* &#039;&#039;&#039;BoostedThreadPriority&#039;&#039;&#039;: Set the priority (for Windows XP) used for sound devices which have &amp;quot;Boost thread priority&amp;quot; set. Possible values are -15,-2,-1,0,1,2,15 (or the full range -15..15 if [Misc]ProcessPriorityClass is set to &amp;quot;realtime&amp;quot;). Default value is 2. See further discussion on the [https://forum.openmpt.org/index.php?topic=5655.0 forum]. &#039;&#039;&#039;Warning&#039;&#039;&#039;: Changing this setting can cause system lockups requiring hard system reset.&lt;br /&gt;
* &#039;&#039;&#039;BoostedThreadMMCSSClass&#039;&#039;&#039;: Set the Multimedia Class Scheduler Service (MMCSS) class used for sound devices which have &amp;quot;Boost thread priority&amp;quot; set. Possible values are &amp;quot;Pro Audio&amp;quot;, &amp;quot;Games&amp;quot;, &amp;quot;Audio&amp;quot; or anything else that may be configured on your systems MMCSS. Default value is &amp;quot;Pro Audio&amp;quot;. See further discussion on the [https://forum.openmpt.org/index.php?topic=5655.0 forum]. &#039;&#039;&#039;Warning&#039;&#039;&#039;: Changing this setting can cause system lockups requiring hard system reset.&lt;br /&gt;
* &#039;&#039;&#039;MaskDriverCrashes&#039;&#039;&#039;: If set to 1, OpenMPT will try ignore crashes in ASIO drivers.&lt;br /&gt;
* &#039;&#039;&#039;MixChannels&#039;&#039;&#039;: Default is 256. The maximum number of sound channels that OpenMPT will use to render. In other words, Polyphony is the allowable number of notes that OpenMPT will process at once. Any computer that has been built in the last ten years should be able to handle the maximum amount of channels for most modules, but while older, low-end computers you will want to decrease the number of channels. Note that reducing the maximum polyphony only reduces the CPU load if those extra channels were actually used — if you play a 10-channel MOD file, it does matter little, if at all, whether the maximum polyphony is set to 16 or 256.&lt;br /&gt;
* &#039;&#039;&#039;ResamplerWFIRCutoff&#039;&#039;&#039;: Configures the bandwidth of the audio signal that is retained by the 8-tap Sinc filter (without low-pass) in percent. The default of 97% offers a good compromise between “freshness” and quality of the resampled sound.&lt;br /&gt;
* &#039;&#039;&#039;SampleRates&#039;&#039;&#039;: A comma-separated list of sample rates that OpenMPT will show in the sound device settings (if supported by the device) and when exporting a WAVE or FLAC file.&lt;br /&gt;
* &#039;&#039;&#039;XMMSModplugResamplerWFIRType&#039;&#039;&#039;: Configures the windowing function of the 8-tap Sinc filter (without low-pass). The windowing functions, from 0 to 7, are: Hann, Hamming, Blackman Exact, Blackman 3-Tap 61, Blackman 3-Tap 67, Blackman-Harris, Blackman 4-Tap 74, Kaiser α=7.5&lt;br /&gt;
&lt;br /&gt;
== [VST Plugins] ==&lt;br /&gt;
* &#039;&#039;&#039;BridgeAllPlugins&#039;&#039;&#039;: All plugins are forced to be used through the integrated plugin bridge.&lt;br /&gt;
* &#039;&#039;&#039;EnableAutoSuspend&#039;&#039;&#039;: Enables auto-suspend for all plugins newly added to modules after this setting is turned on. If a plugin did not emit any sound during the last four seconds, it is suspended until new notes or sound data are fed into the plugin.&lt;br /&gt;
* &#039;&#039;&#039;EnableMidiMappingInEditor&#039;&#039;&#039;: If set to 0, holding &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; while modifying a plugin parameter does not open the [[Manual: MIDI Mapping|MIDI Mapping dialog]].&lt;br /&gt;
* &#039;&#039;&#039;HostProductString&#039;&#039;&#039;: Here you can enter a custom host name that is sent to VST plugins. This can be useful if a plugin claims to only run in certain hosts and refuses to run in others.&lt;br /&gt;
* &#039;&#039;&#039;HostVendorString&#039;&#039;&#039;: Here you can enter the host vendor name for the same reasons as above.&lt;br /&gt;
* &#039;&#039;&#039;HostVendorVersion&#039;&#039;&#039;: Here you can enter the host version as a 32-Bit integer for the same reasons as above.&lt;br /&gt;
* &#039;&#039;&#039;ProjectPath&#039;&#039;&#039;: Some plugins can store extra data alongside the module file. This behaviour can be overridden so that plugins use a different path. This setting can be either a normal absolute path or use the variables &amp;lt;code&amp;gt;%1&amp;lt;/code&amp;gt; (module path) and &amp;lt;code&amp;gt;%2&amp;lt;/code&amp;gt; (module filename) to build a path relative to the module location. So if all external plugin data should be stored in the folder &amp;lt;code&amp;gt;module.mptm-data&amp;lt;/code&amp;gt; (assuming module.mptm is the module filename) next to the module, this value should be set to &amp;lt;code&amp;gt;%1%2-data&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt; Due to restrictions posed by the VST architecture, this path must not contain characters outside the current [https://en.wikipedia.org/wiki/Windows_code_page#ANSI Windows ANSI code page].&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Hidden Settings]]&lt;br /&gt;
[[de:Handbuch: Versteckte Optionen]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Tutorial:_Getting_Started&amp;diff=4956</id>
		<title>Tutorial: Getting Started</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Tutorial:_Getting_Started&amp;diff=4956"/>
		<updated>2025-07-05T21:31:47Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Welcome to this beginners tutorial. It is directed towards newbies who have just downloaded OpenMPT and are about to get started with using the program. Read this tutorial to get the hang of this piece of software. In easy steps, you will learn how to load samples and use them to create a simple song. This tutorial will not cover each screen in depth. There are other pages in this manual that do this.&lt;br /&gt;
&lt;br /&gt;
This tutorial will use the song Aryx.s3m as a reference. You can download Aryx at [https://modarchive.org/module.php?191789 The Mod Archive].&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
If you have not even downloaded OpenMPT yet, you should read the [[Manual: System Setup#Installation|System Setup]] page first for instructions on how to download and install OpenMPT.&lt;br /&gt;
&lt;br /&gt;
Assuming that you did everything on that page, you can now start OpenMPT. If it is the first time that you start the program, the Welcome dialog will pop up. You can configure OpenMPT to your needs in this dialog and the [[Manual: Setup|Setup dialog]] now, or you can do that at a later stage by pressing View → Setup.&lt;br /&gt;
&lt;br /&gt;
=== Setting up the sound card ===&lt;br /&gt;
&lt;br /&gt;
The only important thing right now is to set up the sound card properly. Go to the [[Manual: Setup/Soundcard|Sound Card]] tab of the Setup dialog. Check the available sound devices by pulling down the list. If you have a WASAPI device available, select it (this is the default). If you have professional audio hardware with a dedicated ASIO driver, you may also select that. WASAPI devices usually work fine with a latency of 20-30ms. If using an ASIO or WaveRT driver, you should be able set the latency to less than 10ms without problems. If you use MME (not recommended), try a value between 30-100ms.&lt;br /&gt;
&lt;br /&gt;
The lower this latency is, the better — but setting it too low will result in crackling. The Update Interval should also be as low as possible, to keep the GUI as tightly in sync with the audio as possible.&lt;br /&gt;
&lt;br /&gt;
[[Image:Settings Keyboard.png|thumb|300px|Setting up the keyboard]]&lt;br /&gt;
&lt;br /&gt;
=== Setting up the keyboard ===&lt;br /&gt;
&lt;br /&gt;
This tutorial references key combinations that are used by the default keyboard configuration of OpenMPT. If available, you might have chosen a language-specific keyboard mapping in the Welcome dialog. Almost all default keyboard configurations are almost identical and are mostly adjusted to fit differening keyboard layouts, though. If some of the keys referenced in this tutorial do not “fit”, you may want to go to the [[Manual: Setup/Keyboard|Keyboard Settings]] and hit the “Restore default configuration” button or look up the correct shortcut there.&lt;br /&gt;
&lt;br /&gt;
When you are done, press OK to close the dialog.&lt;br /&gt;
&lt;br /&gt;
== Creating a new song ==&lt;br /&gt;
&lt;br /&gt;
In the menu bar, go to the “[[Manual: Menus#File|File]]” menu, open the sub menu “New” and choose “IT” from the list of offered formats.&lt;br /&gt;
&lt;br /&gt;
== Loading drum samples from Aryx ==&lt;br /&gt;
&lt;br /&gt;
OpenMPT can handle working on several songs at once. You probably will not want to actually edit two songs at the same time in most situations, but you can view one while working on another. :) We are going to use this principle to load in samples from Aryx, which you should have downloaded from [https://modarchive.org/module.php?34036 The Mod Archive]..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second icon in the toolbar is the open button. Press this button to open an existing song. Browse to the Aryx song. Note, OpenMPT can load songs inside ZIP archives, and also from RAR, LHA and GZ archives. You must set the file filter to &#039;&#039;&#039;All files&#039;&#039;&#039; to let the ZIP files be shown though… and saving to a ZIP file is not possible. :)&lt;br /&gt;
&lt;br /&gt;
[[Image:Tutorial Tree View.png|thumb|184px|“Aryx” in the tree view.]]&lt;br /&gt;
&lt;br /&gt;
Once you have loaded Aryx, you will see that it appears in the [[Manual: Tree View|Tree View]] on the left. It will also be the active song.&lt;br /&gt;
&lt;br /&gt;
* In the tree view, click on the &#039;&#039;&#039;Module 1&#039;&#039;&#039; folder to jump back to our newly created module.&lt;br /&gt;
* Click on the &#039;&#039;&#039;[[Manual: Samples|Samples]]&#039;&#039;&#039; tab.&lt;br /&gt;
* In the tree view on your left, locate Aryx again. Do not click on Aryx, but on the little plus sign next to the &#039;&#039;&#039;Samples&#039;&#039;&#039; folder to expand it.&lt;br /&gt;
* Drag “3: Time: 2:21” to the big black screen on the right to load that sample.&lt;br /&gt;
* Click on the first icon in the toolbar on this screen (New Sample). Drag “6: Tune composed using” to the right to load it too.&lt;br /&gt;
* Click on the New Sample button. Drag “5:” to the right to load it as well.&lt;br /&gt;
* Click on the New Sample button. Drag “4: ___________________________” to the right to load it too.&lt;br /&gt;
&lt;br /&gt;
When you see these waveforms, note that you can use any key on your keyboard (&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;) to get sound out of them. This works like a piano. In fact, most keyboard configurations will actually set it as a piano with the white and black keys positioned as that too. The default configuration however allows you to have more notes to work with. Note that when pressing QWERT in that order (AZERT on a French keyboard), the tone pitch raises by semitones. ASDFG does the same but one octave higher, and ZXCVB is the same too but another octave higher.&lt;br /&gt;
&lt;br /&gt;
We have now loaded some basic samples which we can use to make a drum pattern.&lt;br /&gt;
&lt;br /&gt;
== Making your first 4/4 drum pattern ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Tutorial Bass Drum.png|thumb|150px|Select the first instrument and start jamming!]]&lt;br /&gt;
4/4 drum patterns (aka “Four-to-the-Floor”) are common in all kinds of disco and dance music. Really simple stuff so it is great to start with that. First, let us go to the &#039;&#039;&#039;[[Manual: Patterns|Patterns]]&#039;&#039;&#039; tab to be able to enter notes.&lt;br /&gt;
&lt;br /&gt;
Since making a beat largely depends on the time signature used, it is nice to actually see the beats in your pattern. If every row in the pattern looks the same to you, row highlighting has probably been turned off. In that case, you can turn it on again in the [[Manual: Setup/Display|Display setup]]. Turn on both “Primary highlight” and “Secondary highlight”.&lt;br /&gt;
&lt;br /&gt;
As you see, every 16th row has a darker colour than every 4th row. These are measures and beats. By default, a pattern has four measures with four beats each. This can be changed, but we are not going to do that now.&lt;br /&gt;
&lt;br /&gt;
* In the toolbar, you see a dropdown list with a spin button on the left side. In this list, you can choose the &#039;&#039;&#039;main instrument&#039;&#039;&#039; that is used for editing. Set this to &#039;&#039;&#039;01:...&#039;&#039;&#039;, as it can be seen in the screenshot on the right.&lt;br /&gt;
* Next to this dropdown list, you see &#039;&#039;&#039;Edit Step&#039;&#039;&#039;. Set this value to 4. It will make the pattern cursor move down by four rows after having entered a note.&lt;br /&gt;
* In the toolbar on top (below the menu) there is a field &#039;&#039;&#039;Octave&#039;&#039;&#039; which configures the base octave of your keyboard. By default, this is to 4, so if you have changed it before, set it to 4 again.&lt;br /&gt;
* Click on the first row in Channel 1.&lt;br /&gt;
* Make sure that the cursor is positioned in the leftmost cell of that channel. This cell is used for entering notes.&lt;br /&gt;
* Start tapping A until you have a C-5 01 on row 12.&lt;br /&gt;
* Now, select the measure you have just entered using your mouse cursor: Click on the &#039;&#039;&#039;0&#039;&#039;&#039; left to the first row of the first pattern and hold the mouse button clicked while you drag the mouse down to the row that has &#039;&#039;&#039;15&#039;&#039;&#039; next to it. Release the mouse button and press &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; (or choose &#039;&#039;&#039;Copy&#039;&#039;&#039; from the &#039;&#039;&#039;Edit&#039;&#039;&#039; menu).&lt;br /&gt;
* Move the cursor to the leftmost column of the row that has &#039;&#039;&#039;16&#039;&#039;&#039; next to it. Right-click on that position, choose &#039;&#039;&#039;Paste Special&#039;&#039;&#039; from the menu, and in the now opening sub menu, choose &#039;&#039;&#039;Paste Flood&#039;&#039;&#039;. Great, now the whole pattern is filled with a 4/4 beat! Using &#039;&#039;&#039;Paste Flood&#039;&#039;&#039;, you can quickly create beats and other song structures that do not change a lot.&lt;br /&gt;
* Press F6 to play your first pattern.&lt;br /&gt;
&lt;br /&gt;
At any time, you can press &amp;lt;kbd&amp;gt;F8&amp;lt;/kbd&amp;gt; to stop the sound, so you can continue to work. Now would be a good time to press &amp;lt;kbd&amp;gt;F8&amp;lt;/kbd&amp;gt;. :)&lt;br /&gt;
&lt;br /&gt;
=== Adding percussion to your rhythm ===&lt;br /&gt;
&lt;br /&gt;
Of course this simple 4/4 drum beat is not enough. Let us add some Hi-Hats in between. &lt;br /&gt;
&lt;br /&gt;
* Start by selecting instrument 04 from the &#039;&#039;&#039;main instrument&#039;&#039;&#039; panel above.&lt;br /&gt;
* Scroll up so you can see row 0 again.&lt;br /&gt;
* Select the first cell in channel 2, row 2.&lt;br /&gt;
* Start tapping &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; until you have a C-6 04 on row 62. Again, you can speed up this process by using &#039;&#039;&#039;Paste Flood&#039;&#039;&#039; if you want.&lt;br /&gt;
* Press &amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; to audit the result.&lt;br /&gt;
* Set the &#039;&#039;&#039;Edit Step&#039;&#039;&#039; to 1 using the toolbar above.&lt;br /&gt;
* Select the cell in channel 2 on row 29 and press &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; to enter a note.&lt;br /&gt;
* Scroll down, select the cell: channel 2, row 61 and enter a note there too.&lt;br /&gt;
* Note how the cursor automatically moves to row 62. Press Delete to remove the note.&lt;br /&gt;
* If the instrument number next to the note is still there (this depends on the keymap you use), move the cursor to the instrument column and press delete again to also remove the 04.&lt;br /&gt;
* Move left again, and one down to row 63 and press &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; to enter a note.&lt;br /&gt;
* Press &amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; to audit the result.&lt;br /&gt;
&lt;br /&gt;
=== Adding a snare to give it even more depth ===&lt;br /&gt;
&lt;br /&gt;
* Select Instrument 2 from the &#039;&#039;&#039;main instrument&#039;&#039;&#039; panel above.&lt;br /&gt;
* Set &#039;&#039;&#039;Edit Step&#039;&#039;&#039; to 8.&lt;br /&gt;
* Select the first cell of channel 3, row 4.&lt;br /&gt;
* Start tapping &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; until you have a C-6 02 on row 60.&lt;br /&gt;
* Press &amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; to hear the result.&lt;br /&gt;
&lt;br /&gt;
=== A hint in between ===&lt;br /&gt;
&lt;br /&gt;
You have now succesfully created a drum loop. Before you continue, note how we made use of every fourth line for the beat to emphasize it, and every second line after to get a balanced feeling. Also note how between lines 29 and 31 and 61 and 63 we used the other two lines to make it out of balance to get a nice variation. You will learn how this works automatically by making (and listening to) more music, though it will probably not happen within a week, maybe not even in a month. To start with, you should therefore experiment with different settings and see if you can create different kind of drum loops. Often, you can make a beat sound more interesting by delaying or pushing up some notes by a line every now and then.&lt;br /&gt;
&lt;br /&gt;
This however just takes time, so do not worry and let us continue to the next part of this tutorial.&lt;br /&gt;
&lt;br /&gt;
== Adding a Bassline ==&lt;br /&gt;
&lt;br /&gt;
Before I just tell you what notes to enter, I would like to explain a bit how basslines work. A bassline is not just a melody played on a lower octave with a bass instrument. A bassline actually forms part of the rhythm. The bassline usually sets the base note for your rhythm. The bass section in a song can be seen as part of the background. Although it is strong and present, it usually does not play a melody of its own. In certain musical styles, it can be done to play a repetitive melody so that you get more groove.&lt;br /&gt;
&lt;br /&gt;
Okay, so let us add that bassline to our track! To start, we will need a sound for our bass.&lt;br /&gt;
&lt;br /&gt;
Select the sample tab and create a new sample (first button in the sample toolbar). From the treeview, drag in sample 8: ___________________________ from Aryx to your sample window. This will be our bass sound. Before we enter our bassline, let us play the pattern one more time by pressing the play button on the main toolbar (below the menu) to get some ideas on what to enter, and stop playback once you get an idea. As this is a tutorial, I do not expect you to actually get ideas yet, but at least you now know a way to look for inspiration. :)&lt;br /&gt;
&lt;br /&gt;
=== Entering a simple bassline ===&lt;br /&gt;
&lt;br /&gt;
Go back to the pattern screen and select sample 5 from the toolbar if that has not been set yet.&lt;br /&gt;
&lt;br /&gt;
Go to the first cell of channel 4, row 0, and press &amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt;, which will put in a D-4 05. Play the pattern to hear the result. As you can hear, the sound is there, but it certainly is not a bass sound. It is too high for that. We will need to adjust the octave in order to get the right range of notes. In the main tool bar, there is an &#039;&#039;&#039;Octave&#039;&#039;&#039; setting. Set it to 3 using the arrow buttons next to it.&lt;br /&gt;
&lt;br /&gt;
Again, go to the first cell in channel 4, row 0 and press &amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; to enter a D-3. Play it again to hear the difference. Note that pressing a number between 0 and 9 while having the cursor on a note is also a quick way to change the octave of an existing note, but doing this for every note can be quite tiresome.&lt;br /&gt;
Let us make the bassline more fancy. Remain in channel 4 and press the following keys in the following rows:&lt;br /&gt;
&lt;br /&gt;
* Row 16: Press &amp;lt;kbd&amp;gt;Y&amp;lt;/kbd&amp;gt;&lt;br /&gt;
* Row 32: Press &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt;&lt;br /&gt;
* Row 48: Press &amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And play your pattern.&lt;br /&gt;
&lt;br /&gt;
We have just created a really simple bassline, but frankly, it sounds rather dull at the moment. Let us make it a bit better by adding silence.&lt;br /&gt;
&lt;br /&gt;
Enter the following notes:&lt;br /&gt;
&lt;br /&gt;
* Row 8: Press the key left to the &amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; key to put a Stop note (“^^”) in the pattern. On US keyboards, this key is labelled &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt; and will from now on be referenced as such.&lt;br /&gt;
* Row 24: press &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;&lt;br /&gt;
* Row 40: press &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;&lt;br /&gt;
* Row 56: press &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Press &amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; to hear the results.&lt;br /&gt;
[[Image:Tutorial Bassline.png|thumb|300px|Adding a bassline makes our song a lot more interesting.]]&lt;br /&gt;
&lt;br /&gt;
=== Entering a more complex bassline ===&lt;br /&gt;
&lt;br /&gt;
Okay, so this is indeed a better bassline, but you will probably be like: “But how about those fancy dance basslines?” Sure, We will make one. To start, remove the notes in channel 4 first. Make sure that you are in channel 4, and hit &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt;. This will make a selection in that column. If you accidentally hit &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; again, it will select the entire pattern. Hit it again to select just one channel. Press Delete to delete the content.&lt;br /&gt;
&lt;br /&gt;
Go back to row 0. At this time, we are going to make it easy for us. Set the Edit Step to 2, and repeat the following four times:&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;&lt;br /&gt;
* Press &amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then do the following 4 times:&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;&lt;br /&gt;
* Press &amp;lt;kbd&amp;gt;Y&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do the same 4 times with &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; and &amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you have done it right, you should have this nice dancy baseline, so go ahead, play your pattern to find out.&lt;br /&gt;
&lt;br /&gt;
== Creating your first sample ==&lt;br /&gt;
&lt;br /&gt;
Sometimes, you need a sample with a very basic waveform, or you have to fix the waveform of an existing sample (probably because it contains unwanted “clicks”). For these purposes, OpenMPT offers a sample drawing functionality, which is especially popular among chiptune artists. With this feature, you can easily create small chiptune samples within seconds. So let’s try this!&lt;br /&gt;
&lt;br /&gt;
[[Image:Tutorial Pencil and New.png|thumb|61px|Sample Drawing]]&lt;br /&gt;
Go to the Sample tab and, as always, create a new sample slot by pressing the upper-left button in the sample editor.&lt;br /&gt;
This time, we will not drag an existing sample into the sample editor, but rather create our own. To do this, click the yellow icon next to the pencil icon, right above the sample view (which is still completely blank). You are asked to enter a sample length; in this case we choose a length of &#039;&#039;&#039;173&#039;&#039;&#039; sampling points. Press OK to confirm the choice — you now have an empty sample!&lt;br /&gt;
&lt;br /&gt;
Now you can start doodling around in the sample view by pressing the pencil icon. Draw a straight line that goes from the lower-left to the upper-right corner. Press the note icon (next to the sample name) to preview your sample. Keep doodling around by drawing other kinds of lines until you like the result. Press the note icon again to stop playback and the pencil icon to disable sample drawing.&lt;br /&gt;
&lt;br /&gt;
[[Image:Tutorial Sample Freq.png|thumb|133px|Middle-C Frequency]]&lt;br /&gt;
Next up, we are going to modify the middle-C frequency of this sample, so that it is tune with the bass sample. To accomplish this, locate the “Freq. (Hz)” in the upper half of the sample editor and enter &#039;&#039;&#039;44125&#039;&#039;&#039; in the box next to it. This is the playback frequency at middle-C (C-5).&lt;br /&gt;
&lt;br /&gt;
[[Image:Tutorial Loop Sample.png|thumb|123px|Loop Settings]]&lt;br /&gt;
Since we are using a very short sample (a “chip” sample), the perceived pitch of the sample does not only depend on the middle-C frequency, but also the loop length of the sample. Go back to sample 5. Play it, and you will notice that it does not have quite the same pitch as sample 6, even though they have the same middle-C frequency. To fix this, go back to sample 6 and enter &#039;&#039;&#039;7&#039;&#039;&#039; in the “Start” box in the “Loop” section. Now the sample’s loop is exactly as long as the bass sample’s loop and thus they have the same pitch.&lt;br /&gt;
&lt;br /&gt;
== Adding a Melody ==&lt;br /&gt;
&lt;br /&gt;
Basically this is the same as adding a bassline, except that you will be focussing on that what plays in the foreground.&lt;br /&gt;
&lt;br /&gt;
The melody is something that can continuously change throughout the entire track, or can be a repetition with certain variations. In order to know what types of melodies there are, listen to music, focus on the melodies and start noticing. :)&lt;br /&gt;
&lt;br /&gt;
But at this stage, we just want to add a melody to our tutorial song. Go back to the pattern editor and let us enter a simple melody. Select Sample 6 from the toolbar for that.&lt;br /&gt;
&lt;br /&gt;
Assuming that you still have the Edit Step set to 2, go to channel 5 row 0, and enter the following notes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then go to row 24 and enter the following notes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;kbd&amp;gt;&amp;amp;lt;&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then go to row 56 and enter the following notes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;~&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You now have created a basic melody.&lt;br /&gt;
&lt;br /&gt;
== Adding depth to your melody to make it cool! ==&lt;br /&gt;
&lt;br /&gt;
Yes, I have to admit, the melody is a bit dry like this. So let us put an echo on it. There are several ways to do it actually. You could program the echo in the patterns or you could use a sound processing plugin.&lt;br /&gt;
&lt;br /&gt;
[[Image:Tutorial Plugins.png|thumb|300px|Plugins are managed in the lower part of the General Tab.]]&lt;br /&gt;
&lt;br /&gt;
Here, we will actually discover both possibilites to learn about various techniques.&lt;br /&gt;
&lt;br /&gt;
First, we start with the easier solution (although I prefer the second solution).&lt;br /&gt;
&lt;br /&gt;
=== Adding an echo using a plugin ===&lt;br /&gt;
&lt;br /&gt;
* Go to the &#039;&#039;&#039;[[Manual: General|General tab]]&#039;&#039;&#039;.&lt;br /&gt;
* In the lower third of the tab, you see the plugin configuration area. There is a dropdown list which reads “FX1: undefined”.&lt;br /&gt;
* Next to that list, click the &#039;&#039;&#039;Select&#039;&#039;&#039; button.&lt;br /&gt;
* Expand the &#039;&#039;&#039;DirectX Media Audio Effects&#039;&#039;&#039; folder.&lt;br /&gt;
* Double-click &#039;&#039;&#039;Echo&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
“FX1: undefined” has now changed to “FX1: Echo”, and this plugin slot contains an instance of the built-in [[Manual: Echo Plugin|Echo plugin]]. Let us add it to our lead melody to hear its effect.&lt;br /&gt;
&lt;br /&gt;
[[Image:Plugin Manager.png|thumb|300px|From the plugin manager, load the Echo plugin.]]&lt;br /&gt;
[[Image:Tutorial Plugin Editor.png|thumb|300px|Edit the plugin parameters to make the echo sound as intended.]]&lt;br /&gt;
&lt;br /&gt;
* Above the plugin configuration area, you can find the channel settings. At the top of this area, there are tabs labelled “1 - 4”, “5 - 8”, and so on. As our melody is in channel 5, we select the &#039;&#039;&#039;5 - 8&#039;&#039;&#039; tab.&lt;br /&gt;
* Below Channel 5, there is a dropdown list labelled &#039;&#039;&#039;Effect&#039;&#039;&#039;. In that list, select &#039;&#039;&#039;FX1: Echo&#039;&#039;&#039;.&lt;br /&gt;
* If you play your song now, it sounds surprisingly nice already, but we are going to make it sound even nicer.&lt;br /&gt;
* In the plugin configuration area, press the &#039;&#039;&#039;Edit&#039;&#039;&#039; button next to the &#039;&#039;&#039;Select&#039;&#039;&#039; button we pressed earlier.&lt;br /&gt;
* Set the &#039;&#039;&#039;WetDryMix&#039;&#039;&#039; parameter to 44.40, by entering 444 in the edit box next to the corresponding slider.&lt;br /&gt;
* Set the &#039;&#039;&#039;Feedback&#039;&#039;&#039; to 50.00 (enter 500 in the edit box).&lt;br /&gt;
* Set the &#039;&#039;&#039;LeftDelay&#039;&#039;&#039; to 360.82 (enter 180)&lt;br /&gt;
* Set the &#039;&#039;&#039;RightDelay&#039;&#039;&#039; to 720.64 (enter 360) — Notice that the right delay is twice as long as the left delay.&lt;br /&gt;
* Set the &#039;&#039;&#039;PanDelay&#039;&#039;&#039; to Yes (drag the slider way to the right).&lt;br /&gt;
&lt;br /&gt;
And there we go, a nice echo on the lead!&lt;br /&gt;
&lt;br /&gt;
=== Adding an echo using pattern programming ===&lt;br /&gt;
&lt;br /&gt;
First, we remove the echo from the previous step again.&lt;br /&gt;
&lt;br /&gt;
* Go back to the General Tab if you have left it in the meanwhile.&lt;br /&gt;
* In the plugin area, check the &#039;&#039;&#039;Bypass&#039;&#039;&#039; checkbox, so that our echo effect will not be processed anymore.&lt;br /&gt;
&lt;br /&gt;
If you want, you can also remove the echo effect completely by clicking the &#039;&#039;&#039;Select&#039;&#039;&#039; button and choosing &#039;&#039;&#039;No plugin&#039;&#039;&#039; from the plugin list.&lt;br /&gt;
&lt;br /&gt;
Now, go back to the pattern editor.&lt;br /&gt;
&lt;br /&gt;
* Put your cursor on channel 5 and press &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
* Go to channel 6, or press &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; to go to the next channel. Go back to row 0, by pressing &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; and press &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
An exact copy of your channel has been made. That is of course not an echo yet.&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; 3 times.&lt;br /&gt;
* Press &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; and then &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
* Enter Amplify by 50%.&lt;br /&gt;
* Repeat the above steps for Channel 7, so &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt;, 3x &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt;, 50%.&lt;br /&gt;
* Repeat the above steps for Channel 8.&lt;br /&gt;
&lt;br /&gt;
If done correctly, the notes in channel 8 have a &#039;&#039;&#039;v08&#039;&#039;&#039; next to them. This means that play at a volume of 8, which is quite soft (the maximum volume is 64).&lt;br /&gt;
&lt;br /&gt;
Note: We have duplicated the channel using the Copy and Paste mechanism. Of course this would be quite tiresome if we want to duplicate a channel that contains some note data on several patterns already. For that reason, you can also use the &#039;&#039;&#039;Duplicate Channel&#039;&#039;&#039; menu item from the channel header’s context menu to speed this process up.&lt;br /&gt;
&lt;br /&gt;
== Working with the order list ==&lt;br /&gt;
&lt;br /&gt;
Now you know how to fill a pattern with notes so you can create some music. Let me explain how to create different patterns and play them as a song.&lt;br /&gt;
&lt;br /&gt;
Directly above the pattern view, you can see a big horizontal bar with squares in it. The first square is filled with &#039;&#039;&#039;0&#039;&#039;&#039;, the rest with &#039;&#039;&#039;---&#039;&#039;&#039;. This is the &#039;&#039;&#039;order list&#039;&#039;&#039;. It dictates in which order the different patterns are played. So far, only pattern 0 (the first pattern) is played at all, as we do not have any other patterns yet.&lt;br /&gt;
&lt;br /&gt;
Every number in the order list references a pattern. In the pattern editor, you can see the number of each pattern in the top left corner, above the row numbers. At the moment, it should say &#039;&#039;&#039;#0&#039;&#039;&#039;. Note that you can click this number to bring up the [[Manual: Pattern Properties|Pattern Properties dialog]] which you can use to &#039;&#039;&#039;change the length of the pattern&#039;&#039;&#039;, i.e. how many rows the current pattern contains.&lt;br /&gt;
&lt;br /&gt;
* Back to the order list. Right-click the &#039;&#039;&#039;0&#039;&#039;&#039; and select &#039;&#039;&#039;Duplicate Pattern&#039;&#039;&#039; from the context menu.&lt;br /&gt;
* Go back to the pattern editor and use the mouse to make a selection from channel 4, row 0 to channel 8, row 63.&lt;br /&gt;
* Press &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; 5 times. Now you have transposed the notes in those channels, which is one way to alter patterns.&lt;br /&gt;
&lt;br /&gt;
You can also remove and / or add notes to change the pattern. Here, creativity is your key.&lt;br /&gt;
&lt;br /&gt;
In the orderlist, you can also right-click a pattern and select &#039;&#039;&#039;Insert Pattern&#039;&#039;&#039; to make a new order with the same pattern. That way, when you play your song, it will have the same patterns played twice. Note that if you edit the first occurrence of a pattern, it will change &#039;&#039;&#039;all&#039;&#039;&#039; patterns with the same number.&lt;br /&gt;
&lt;br /&gt;
Now, select pattern 0 from the order list, right-click it, and select &#039;&#039;&#039;Insert Pattern&#039;&#039;&#039;. Now you should have an order list that contains pattern 0 twice and after that pattern 1.&lt;br /&gt;
Now, do the same for pattern 1, so that the order list reads 0-0-1-1.&lt;br /&gt;
&lt;br /&gt;
Now we want to listen to our song. In the main toolbar below the main menu, click the play button. Now you can  watch how the patterns play by checking the &#039;&#039;&#039;Follow Song&#039;&#039;&#039; checkbox.&lt;br /&gt;
&lt;br /&gt;
You can go on building your song from here. When you right-click an order list item, you can also choose &#039;&#039;&#039;Create New Pattern&#039;&#039;&#039;. This creates new, completely empty pattern. Sometimes, this is useful if you have made a transition and want to start with completely something new.&lt;br /&gt;
&lt;br /&gt;
=== Keeping your order list tidy ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Tutorial Order List.png|thumb|232px|A tidy order list can speed up editing significantly.]]&lt;br /&gt;
&lt;br /&gt;
A neat trick to keep the order list tidy is to add separator (&#039;&#039;&#039;+++&#039;&#039;&#039;) patterns. You can think of them as markers that do not contain an actual pattern but are being skipped. It is common to add a separator pattern after each four patterns, as that fits with most song structures. To insert a separator pattern, click on an empty pattern (&#039;&#039;&#039;---&#039;&#039;&#039;) and press the &amp;lt;kbd&amp;gt;Minus&amp;lt;/kbd&amp;gt; key once. If you want to add a separator pattern between two existing patterns, you can simply click on the pattern after which the separator should be added and press &amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt;. As with many other things in OpenMPT, there are mutiple ways to do the same thing. :)&lt;br /&gt;
&lt;br /&gt;
It is also worth knowing that you can select a range of patterns to insert or duplicate. Simply click on the first pattern that you want to insert / duplicate and &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;-click the last pattern. Now you can drag multiple patterns at the same time, duplicate them, etc...&lt;br /&gt;
&lt;br /&gt;
== Using Find / Replace ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Find_And_Replace.png|thumb|300px|Using Find / Replace can eliminate the need for searching manually.]]&lt;br /&gt;
&lt;br /&gt;
Let’s say you’ve been making your song now for quite a while. Maybe you want to replace an instrument with another one, or you entered a wrong effect and need to change it. You could do this by manually going through each and every pattern, but there is a more efficient method available: [[Manual:_Find_and_Replace|Find / Replace]].&lt;br /&gt;
&lt;br /&gt;
=== Accessing Find / Replace ===&lt;br /&gt;
&lt;br /&gt;
You can access the Find / Replace through “Edit” in the main menu bar by choosing “Find / Replace”, or through a hotkey, the default being &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt;. If you already have a search set up, you can select “Find Next” or its hotkey, the default being &amp;lt;kbd&amp;gt;F3&amp;lt;/kbd&amp;gt;, to cycle through each occurrence all the to the end of the module. Otherwise, the Find / Replace menu will appear.&lt;br /&gt;
&lt;br /&gt;
=== Setting up a Search ===&lt;br /&gt;
&lt;br /&gt;
With the Find / Replace menu open, select the &#039;&#039;&#039;Find&#039;&#039;&#039; tab. This is where you will set up your search parameters and what to look for in the module. There is a fairly comprehensive list of options available. Click the checkbox next to each option to have the search look for it. If multiple checkboxes are enabled, all criteria must be met for a term to be found.&lt;br /&gt;
&lt;br /&gt;
You can have the search only look in the current pattern, the entire song, or if you have a selection highlighted, your selection. You can also click the checkbox for “Only Certain Channels” to have the search only consider the channels in the range allotted (inclusive).&lt;br /&gt;
&lt;br /&gt;
For our tutorial module, we want to transpose the melody to sound an octave higher:&lt;br /&gt;
* Press &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; to open up the Find / Replace dialog.&lt;br /&gt;
* Select from the “Instrument” dropdown menu instrument 006. The “Instrument” checkbox will be checked automatically.&lt;br /&gt;
* At the bottom, select “Find in the whole song”&lt;br /&gt;
* Switch to the “Replace” tab at the top.&lt;br /&gt;
* Check the “Note” box, and select “+1 oct” from the dropdown menu.&lt;br /&gt;
* Make sure that “Replace All (no confirmation)” is checked, and hit OK.&lt;br /&gt;
&lt;br /&gt;
Now all of the melody, which is sample number 6, will sound 1 octave higher than it did before. If this is too high and you want to back to how it was, you can repeat the above steps and select “-1 oct” instead of “+1 oct”. Alternatively, you can undo the whole replacement by using the “Undo” functionality in the “Edit” menu.&lt;br /&gt;
&lt;br /&gt;
== Looking for Inspiration ==&lt;br /&gt;
&lt;br /&gt;
Just like with most things, the art of tracking requires time and effort in order to be mastered. To see good examples of what can be done in OpenMPT, open “Help” in the main menu bar, and then select a module from the “Example Modules” list to open it. Each of these modules are by a listed author and with their own title, all in OpenMPT&#039;s [[Manual:_Module_formats#Manual:_Module_formats_MPTM|‘MPTM’ Module Format]]. It is encouraged to look through all of these modules to see a variety of styles and genres that can be done in OpenMPT, and you may even pick up a few good habits and knowledge from closely studying them. The modules usually have comments that will provide helpful advice as well, so do not skimp on reading them. If you are just beginning your tracking journey, don&#039;t immediately expect to reach the quality of these modules, as great accomplishment comes from great practice first and foremost.&lt;br /&gt;
&lt;br /&gt;
== That’s all, folks! ==&lt;br /&gt;
&lt;br /&gt;
That’s it for now. If you have any questions, feel free to ask them at our [https://forum.openmpt.org/index.php forums].&lt;br /&gt;
&lt;br /&gt;
If you want to see the tutorial song as it should be if you have done everything as described above, you may [https://download.openmpt.org/resources/modules/beginner_tutorial.it download it].&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials|Getting Started]]&lt;br /&gt;
[[Category:Manual|Getting Started with OpenMPT]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Edit_History&amp;diff=4954</id>
		<title>Manual: Edit History</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Edit_History&amp;diff=4954"/>
		<updated>2025-07-02T13:52:42Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Edit History.png|thumb|400px|Edit History of a loaded IT module]]&lt;br /&gt;
&lt;br /&gt;
You can view this dialog by selecting “Edit History” from the [[Manual: Menus#View|View menu]]. The full edit history is only available for IT and MPTM files, but a more limited history may be available in other formats (e.g. S3M files saved with Impulse Tracker). This dialog lists the edit events, displaying the timestamps for each time the file was loaded into the tracker and modified. The first entry is when the track was created (if the history was never cleared). At the bottom of the window is the total time elapsed while the file was open, and the number of times the track was loaded. Clicking on the Clear button will erase all of this data, but the info is lost only if you save the track afterwards.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Edit History]]&lt;br /&gt;
[[Category:Windows|Edit History]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=File:OPL_Export.png&amp;diff=4953</id>
		<title>File:OPL Export.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=File:OPL_Export.png&amp;diff=4953"/>
		<updated>2025-06-29T12:25:55Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: Saga Musix uploaded a new version of File:OPL Export.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=File:MIDI_Conversion_Setup.png&amp;diff=4952</id>
		<title>File:MIDI Conversion Setup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=File:MIDI_Conversion_Setup.png&amp;diff=4952"/>
		<updated>2025-06-29T12:24:38Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: Saga Musix uploaded a new version of File:MIDI Conversion Setup.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MIDI Conversion Setup dialog&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=File:Wave_Convert.png&amp;diff=4951</id>
		<title>File:Wave Convert.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=File:Wave_Convert.png&amp;diff=4951"/>
		<updated>2025-06-29T12:24:31Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: Saga Musix uploaded a new version of File:Wave Convert.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wave Convert dialog&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Hidden_Settings&amp;diff=4950</id>
		<title>Manual: Hidden Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Hidden_Settings&amp;diff=4950"/>
		<updated>2025-06-29T11:10:07Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Settings Advanced.png|thumb|300px|Advanced tab of the settings dialog]]&lt;br /&gt;
&lt;br /&gt;
Some settings for advanced users cannot be changed directly in OpenMPT, however they can be changed by modifying OpenMPT’s configuration file, mptrack.ini, or from the [[Manual:_Setup/Advanced|Advanced Settings]]. When using the latter method, it might be necessary to restart OpenMPT for some options to take effect.&lt;br /&gt;
&lt;br /&gt;
== [Broken Plugin Workarounds] ==&lt;br /&gt;
* &#039;&#039;&#039;VSTMaskAllCrashes&#039;&#039;&#039;: Determines whether crashes in VST plugins should be reported to the user (1) or passed on to the system, i.e. OpenMPT crashes (0). Note that if a plugin crashed, its internal state or even OpenMPT’s state may be inconsistent, so in this situation it is best to close and reopen the tracker anyway.&lt;br /&gt;
* &#039;&#039;&#039;VSTNeverUnloadAnyPlugin&#039;&#039;&#039;: If set to 1, VST plugins are not fully unloaded when closing them. This may help with some buggy plugins (e.g. made with older versions of SynthEdit 1.4). Do not enable this setting unless you have issues when unloading plugins that cannot be solved by using the plugin bridge.&lt;br /&gt;
&lt;br /&gt;
== [Components] ==&lt;br /&gt;
* &#039;&#039;&#039;BlockASIO&#039;&#039;&#039;, &#039;&#039;&#039;BlockPortAudio&#039;&#039;&#039;, &#039;&#039;&#039;BlockRtAudio&#039;&#039;&#039;, &#039;&#039;&#039;BlockWaveOut&#039;&#039;&#039;: If set to 1, the respective sound device types do not get initialized or queried by OpenMPT. You should not need to disable any of these unless told to do so by the OpenMPT developers in order to diagnose problems.&lt;br /&gt;
* &#039;&#039;&#039;BlockMediaFoundation&#039;&#039;&#039;: If set to 1, OpenMPT will not load any samples using MediaFoundation codecs.&lt;br /&gt;
* &#039;&#039;&#039;BlockWineWrapper&#039;&#039;&#039;: If set to 1, OpenMPT will not load the Wine native audio wrapper.&lt;br /&gt;
* &#039;&#039;&#039;KeepLoaded&#039;&#039;&#039;: If set to 0, optional OpenMPT components (e.g. MP3 codecs) are unloaded after usage. This frees up memory used by these components but slows down subsequent uses.&lt;br /&gt;
* &#039;&#039;&#039;LoadOnStartUp&#039;&#039;&#039;: If set to 1, some optional components are loaded right on statup instead of when they are first used.&lt;br /&gt;
&lt;br /&gt;
== [Debug] ==&lt;br /&gt;
Options in this section should generally only be changed if you are advised by an OpenMPT developer to do so.&lt;br /&gt;
* &#039;&#039;&#039;DelegateToWindowsHandler&#039;&#039;&#039;: If set to 1, OpenMPT will invoke the Windows default crash handler after its own crash handler has finished generating the crash report which had been the behaviour in OpenMPT before 1.27.&lt;br /&gt;
* &#039;&#039;&#039;StopSoundDeviceBeforeDump&#039;&#039;&#039;: By default, the sound device is closed after writing out a crash dump. Setting this option to 1 inverts the behaviour.&lt;br /&gt;
* &#039;&#039;&#039;StopSoundDeviceOnCrash&#039;&#039;&#039;: If set to 0, OpenMPT will not close or otherwise touch the state of the sound device when writing out a crash dump. Only change this setting when asked by the OpenMPT developers to do so in order to diagnose sound device related crashes.&lt;br /&gt;
* &#039;&#039;&#039;TraceAlwaysDump&#039;&#039;&#039;: If set to 1 and &#039;&#039;&#039;TraceEnable&#039;&#039;&#039; is also set to 1, OpenMPT will always write out the trace log on program exit even if no crash happened. Do not enable this setting unless you are advised by the developers to do so.&lt;br /&gt;
* &#039;&#039;&#039;TraceEnable&#039;&#039;&#039;: If set to 1, a trace logging system is enabled which can be used by the OpenMPT developers to debug certain problems. Do not enable this setting unless you are advised by the developers to do so.&lt;br /&gt;
* &#039;&#039;&#039;TraceSize&#039;&#039;&#039;: Configures the tracer buffer size. By default, it contains 1,000,000 entries.&lt;br /&gt;
&lt;br /&gt;
== [Display] ==&lt;br /&gt;
* &#039;&#039;&#039;FSUpdateInterval&#039;&#039;&#039;: OpenMPT watches the &#039;&#039;&#039;f&#039;&#039;&#039;ile &#039;&#039;&#039;s&#039;&#039;&#039;ystem in order to update the [[Manual:_Tree_View#Instrument_Library|instrument library]] tree view when files get added or removed to the directory while OpenMPT is running. This setting limits the rate of the GUI updates in these cases to the given value in milliseconds. The default is 500ms.&lt;br /&gt;
* &#039;&#039;&#039;GUIUpdateInterval&#039;&#039;&#039;: Defines the update interval of the GUI in milliseconds (default: depends on the period value found in the sound card settings).&lt;br /&gt;
* &#039;&#039;&#039;ShowSplashScreen&#039;&#039;&#039;: If set to 0, no splash screen is shown when starting the program (same effect as [[Manual: Command-line Parameters|command line option]] /NoLogo).&lt;br /&gt;
* &#039;&#039;&#039;UseOldStyleFolderBrowser&#039;&#039;&#039;: When set to 1, the classic tree-style folder picker is used on Windows Vista and newer. On older systems and Wine, it is always used.&lt;br /&gt;
* &#039;&#039;&#039;VuMeterUpdateInterval&#039;&#039;&#039;: Defines the update interval of the VU meters in milliseconds (default: 15ms).&lt;br /&gt;
* &#039;&#039;&#039;VuMeterDecaySpeedDecibelPerSecond &#039;&#039;&#039;: Sets the VU meter&#039;s decay speed The default value is 88 dB/s.&lt;br /&gt;
&lt;br /&gt;
== [Export] ==&lt;br /&gt;
* &#039;&#039;&#039;DefaultToSoundcardSamplerate&#039;&#039;&#039;: By default, the [[Manual: Saving and exporting#Exporting tracks|export dialog]] presets the export frequency to the tracker’s currently selected sample rate. One reason for this behaviour is that some plugins do not like it when the sample rate is changed between normal playback and export. If you do not like this behaviour, you can set this value to 0. In this case, OpenMPT remembers the previously selected sample rate instead.&lt;br /&gt;
* &#039;&#039;&#039;FLACCompressionLevel&#039;&#039;&#039;: When [[Manual: Saving and exporting#Exporting tracks|exporting]] to FLAC format, this value sets the FLAC compression level. Higher values mean better compression ratio and require more CPU time. For details, please refer to the FLAC documentation.&lt;br /&gt;
* &#039;&#039;&#039;FLACMultithreading&#039;&#039;&#039;: By default, the FLAC encoder uses all available CPU cores for FLAC encoding. Setting this to 0 disables the multithreaded encoding.&lt;br /&gt;
* &#039;&#039;&#039;MP3ID3v2MinPadding&#039;&#039;&#039;: This value is the minimum amount of padding bytes to add to ID3v2 tags. &lt;br /&gt;
* &#039;&#039;&#039;MP3ID3v2PaddingAlignHint&#039;&#039;&#039;: This aligns the MP3 data after the ID3v2 tag in addition to the minimum padding to a multiple of the configured value. Set to 0 to disable additional aligning.&lt;br /&gt;
* &#039;&#039;&#039;MP3ID3v2WriteReplayGainTXXX&#039;&#039;&#039;: Write ReplayGain information (if calculated, see &#039;&#039;&#039;MP3LameCalculateReplayGain&#039;&#039;&#039; and &#039;&#039;&#039;MP3LameCalculatePeakSample&#039;&#039;&#039;) to the ID3v2 tag. This setting defaults to 1.&lt;br /&gt;
* &#039;&#039;&#039;MP3LameCalculateReplayGain&#039;&#039;&#039; and &#039;&#039;&#039;MP3LameCalculatePeakSample&#039;&#039;&#039;: When [[Manual: Saving and exporting#Exporting tracks|exporting]] to MP3 format, calculate the ReplayGain track gain adjustment and the peak sample value (as require by ReplaGain) respectively. The calculated values get written to the VBR/Lame info header automatically in VBR mode. Additionally, the values can be written to the ID3v2 tags when enabled (see &#039;&#039;&#039;MP3ID3v2WriteReplayGainTXXX&#039;&#039;&#039;). Both settings default to 1.&lt;br /&gt;
* &#039;&#039;&#039;MP3LameID3v2UseLame&#039;&#039;&#039;: If set to 1, when [[Manual: Saving and exporting#Exporting tracks|exporting]] to MP3 format, uses the libmp3lame ID3v2.3 implementation instead of the OpenMPT ID3v2.4 implementation. ID3v2.3 is more widely supported by older player software.&lt;br /&gt;
* &#039;&#039;&#039;MP3LameQuality&#039;&#039;&#039;: When [[Manual: Saving and exporting#Exporting tracks|exporting]] to MP3 format using libmp3lame, this value selects the internal algorithm quality used by LAME. Lower values mean better quality and require more CPU time. This is the same as the -q command line parameter for LAME. More details can be found e.g. on [http://wiki.hydrogenaud.io/index.php?title=LAME_-q_switch Hydrogenaudio].&lt;br /&gt;
* &#039;&#039;&#039;OpusComplexity&#039;&#039;&#039;: When [[Manual: Saving and exporting#Exporting tracks|exporting]] to Opus format, this value selects the internal complexity used by libopus. Higher values mean better encoding efficiency and require more CPU time. Value -1 uses the libopus default value. For details, please refer to the [https://opus-codec.org/docs/ libopus documentation].&lt;br /&gt;
&lt;br /&gt;
== [MIDI Input Ports] ==&lt;br /&gt;
In this section, you can set “friendly names” for all MIDI input ports. If you have lots of MIDI ports with undescriptive names (such as “MIDI Device Port 1”, “MIDI Device Port 2”, …), it can be useful to replace those names with more suitable names, e.g. to describe which device is connected to a specific port. To replace a name, add a pair like &amp;lt;code&amp;gt;MIDI Device Port 1=Synthesizer 1&amp;lt;/code&amp;gt; to this section.&lt;br /&gt;
&lt;br /&gt;
Friendly names are also recognized by the MIDI Input / Output plugin: If the selected ports have friendly names assigned when the module is saved, the next time is opened it will try to find the correct device by its friendly name. So if a MIDI device is connected to a different MIDI port, you can rename the ports and OpenMPT will automatically choose the correct port.&lt;br /&gt;
&lt;br /&gt;
== [MIDI Output Ports] ==&lt;br /&gt;
Same as [[#.5BMIDI Input Ports.5D|[MIDI Input Ports]]], but for MIDI output ports.&lt;br /&gt;
&lt;br /&gt;
== [Misc] ==&lt;br /&gt;
* &#039;&#039;&#039;AllowMultipleCommandsPerKey&#039;&#039;&#039;: By default, a key combination can be used by only one command. Setting this to 1 allows you to bind more than one command to a key combination. Beware that this might lead to problems with existing keyboard mappings with overlapping commands!&lt;br /&gt;
* &#039;&#039;&#039;CacheCompleteFileBeforeLoading&#039;&#039;&#039;: If set to 1, OpenMPT caches entire (module, instrument, etc.) files in memory, which may improve file reading performance at the expense of more memory being used.&lt;br /&gt;
* &#039;&#039;&#039;DistinguishModifiers&#039;&#039;&#039;: Enable this option to distinguish between left and right &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; / &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt; / &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; modifiers, e.g. to create FastTracker 2-like pattern play shortcuts.&lt;br /&gt;
* &#039;&#039;&#039;FlushFileBuffersOnSave&#039;&#039;&#039;: Disabling this option avoids flushing of file buffers after saving modules, samples and other files on disk. This can speed up the write operation but increases the risk of data loss e.g. in case of a power failure.&lt;br /&gt;
* &#039;&#039;&#039;ITCompressionMono&#039;&#039;&#039;: Enables IT-compressed mono samples when saving IT/MPTM files, depending on the value. To enable saving for normal IT files, add 1 to the value, for IT files saved through Compatibility Export, add 2, and for MPTM files add 4. So to enable saving of compressed samples in compatible ITs and MPTMs only, you would use the value 6. Some caveats regarding the usage of compressed samples have been written down on the [https://forum.openmpt.org/index.php?topic=4961.0 forum].&lt;br /&gt;
* &#039;&#039;&#039;ITCompressionStereo&#039;&#039;&#039;: Enables IT-compressed stereo samples when saving IT/MPTM files, depending on the value (see above).&lt;br /&gt;
* &#039;&#039;&#039;MRUListLength&#039;&#039;&#039;: Sets the maximum length of the most recently used file list in the file menu. Allowed values are between 0 (no list) and 15 entries.&lt;br /&gt;
* &#039;&#039;&#039;ProcessPriorityClass&#039;&#039;&#039;: Set the Windows process priority class for OpenMPT. Possible values are: &amp;quot;idle&amp;quot;, &amp;quot;below&amp;quot;, &amp;quot;normal&amp;quot;, &amp;quot;above&amp;quot;, &amp;quot;high&amp;quot;, &amp;quot;realtime&amp;quot;. The default is &amp;quot;normal&amp;quot;. See further discussion on the [https://forum.openmpt.org/index.php?topic=5655.0 forum]. &#039;&#039;&#039;Warning&#039;&#039;&#039;: Changing this setting can cause system lockups requiring hard system reset.&lt;br /&gt;
* &#039;&#039;&#039;SaveChannelMuteStatus&#039;&#039;&#039;: If set to 1, OpenMPT will save the channel mute status in IT, MPTM and S3M files.&lt;br /&gt;
* &#039;&#039;&#039;SmoothFT2Ramping&#039;&#039;&#039;: If set to 1, XM files made with Fasttracker 2 will automatically use [[Manual:_Compatible_Playback#XM_compatibility_settings|very smooth sample ramping]] settings (like Fasttracker 2 did).&lt;br /&gt;
* &#039;&#039;&#039;UseSingleInstance&#039;&#039;&#039;: Always forces OpenMPT to only use a single program instance, even when the &#039;&#039;&#039;/shared&#039;&#039;&#039; command line switch is not specified.&lt;br /&gt;
&lt;br /&gt;
== [Paths] ==&lt;br /&gt;
* &#039;&#039;&#039;Export_Directory&#039;&#039;&#039;: The default export directory for lossless and lossy audio export. OpenMPT always uses the last used directory for exporting, so changing this setting does not make a lot of sense.&lt;br /&gt;
* &#039;&#039;&#039;UseAppDataDirectory&#039;&#039;&#039;: This is a legacy setting imported from portable OpenMPT installations prior to version 1.29. If &amp;lt;code&amp;gt;mptrack.ini&amp;lt;/code&amp;gt; is found next to &amp;lt;code&amp;gt;OpenMPT.exe&amp;lt;/code&amp;gt; and this value is to 0, portable mode is assumed and all other configuration files are searched directly in the same directory as OpenMPT’s executable (by default they are placed in %APPDATA%\OpenMPT). When upgrading to a newer OpenMPT version, this setting is automatically converted to the new way of enabling portability. See also: [[Manual: System Setup#Portability|System Setup]].&lt;br /&gt;
&lt;br /&gt;
== [Pattern Editor] ==&lt;br /&gt;
* &#039;&#039;&#039;AccessibilityFormat&#039;&#039;&#039;: Defines the description of the pattern editor that can be obtained by screen readers. The string may contain the following variables: &amp;lt;code&amp;gt;%sequence%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%order%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%pattern%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%row%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%channel%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%channel_name%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%column_type%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%column_description%&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;AlwaysDrawWholePatternOnScrollSlow&#039;&#039;&#039;: If set to 1, OpenMPT will always repaint the whole pattern display instead of re-using parts of the window that have only moved and not changed. This will be measurably slower, however in some situation the display will look broken otherwise (like jittering play cursor, not updating regions of the pattern display properly when switching to and from the window, or generally sluggish/jerky display). The problem is related to certain graphics drivers (known examples are systems with multiple AMD GPUs in Windows 7, Windows XP in VirtualBox, and all Wine systems). By default, this setting is 0. On Wine, this setting has no effect and is treated as always 1, regardless of its actual value.&lt;br /&gt;
* &#039;&#039;&#039;AutoHideVolumeColumnForMOD&#039;&#039;&#039;: When set to 1, the volume column is hidden by default for MOD and other formats that do not have a volume column.&lt;br /&gt;
* &#039;&#039;&#039;DefaultSequenceMargins&#039;&#039;&#039;: Defines how many order items are shown at least before and after the currently selected order item (0 by default).&lt;br /&gt;
* &#039;&#039;&#039;EditStepAppliesToCommands&#039;&#039;&#039;: When set to 1, the edit step setting is also applied when entering a command into the volume or effect column.&lt;br /&gt;
* &#039;&#039;&#039;FontDot&#039;&#039;&#039;: Overriding this setting allows to specify a custom character to be used for empty cells with user-configured pattern fonts.&lt;br /&gt;
* &#039;&#039;&#039;NoEditPopup&#039;&#039;&#039;: Disables the reminder popup when trying to edit patterns while editing is disabled and treats all channel columns like the note column to simplify jamming (keyjazz).&lt;br /&gt;
* &#039;&#039;&#039;OrderListOldDropBehaviour&#039;&#039;&#039;: Restores pre-OpenMPT 1.29 drag &amp;amp; drop behaviour in the order list editor. That is, patterns are always dropped left of the drop position, even if the drop position is right of the source.&lt;br /&gt;
* &#039;&#039;&#039;RowDisplayOffset&#039;&#039;&#039;: Defines the displayed number of the first pattern row; by default, it is 0. This does not affect the Goto dialog or break commands in patterns.&lt;br /&gt;
* &#039;&#039;&#039;VolumeColumnInHex&#039;&#039;&#039;: If set to 1, parameters in the volume column are shown in hexadecimal rather than decimal. In order to be able to enter hex digits A-F, the corresponding [[Manual: Keyboard Actions#Volume Column|keyboard shortcuts]] need to be assigned (note that you may have to re-assign effect letters a-f to avoid conflicts).&lt;br /&gt;
&lt;br /&gt;
== [Sample Editor] ==&lt;br /&gt;
* &#039;&#039;&#039;FLACMultithreading&#039;&#039;&#039;: By default, the FLAC encoder uses one thread for FLAC sample saving. Setting this to 1 enables multithreaded FLAC encoding for samples.&lt;br /&gt;
&lt;br /&gt;
== [Sound Settings] ==&lt;br /&gt;
* &#039;&#039;&#039;AllowDeferredProcessing&#039;&#039;&#039;: If set to 0, deferred processing is never used for ASIO drivers.&lt;br /&gt;
* &#039;&#039;&#039;BoostedThreadPriority&#039;&#039;&#039;: Set the priority (for Windows XP) used for sound devices which have &amp;quot;Boost thread priority&amp;quot; set. Possible values are -15,-2,-1,0,1,2,15 (or the full range -15..15 if [Misc]ProcessPriorityClass is set to &amp;quot;realtime&amp;quot;). Default value is 2. See further discussion on the [https://forum.openmpt.org/index.php?topic=5655.0 forum]. &#039;&#039;&#039;Warning&#039;&#039;&#039;: Changing this setting can cause system lockups requiring hard system reset.&lt;br /&gt;
* &#039;&#039;&#039;BoostedThreadMMCSSClass&#039;&#039;&#039;: Set the Multimedia Class Scheduler Service (MMCSS) class used for sound devices which have &amp;quot;Boost thread priority&amp;quot; set. Possible values are &amp;quot;Pro Audio&amp;quot;, &amp;quot;Games&amp;quot;, &amp;quot;Audio&amp;quot; or anything else that may be configured on your systems MMCSS. Default value is &amp;quot;Pro Audio&amp;quot;. See further discussion on the [https://forum.openmpt.org/index.php?topic=5655.0 forum]. &#039;&#039;&#039;Warning&#039;&#039;&#039;: Changing this setting can cause system lockups requiring hard system reset.&lt;br /&gt;
* &#039;&#039;&#039;MaskDriverCrashes&#039;&#039;&#039;: If set to 1, OpenMPT will try ignore crashes in ASIO drivers.&lt;br /&gt;
* &#039;&#039;&#039;MixChannels&#039;&#039;&#039;: Default is 256. The maximum number of sound channels that OpenMPT will use to render. In other words, Polyphony is the allowable number of notes that OpenMPT will process at once. Any computer that has been built in the last ten years should be able to handle the maximum amount of channels for most modules, but while older, low-end computers you will want to decrease the number of channels. Note that reducing the maximum polyphony only reduces the CPU load if those extra channels were actually used — if you play a 10-channel MOD file, it does matter little, if at all, whether the maximum polyphony is set to 16 or 256.&lt;br /&gt;
* &#039;&#039;&#039;ResamplerWFIRCutoff&#039;&#039;&#039;: Configures the bandwidth of the audio signal that is retained by the 8-tap Sinc filter (without low-pass) in percent. The default of 97% offers a good compromise between “freshness” and quality of the resampled sound.&lt;br /&gt;
* &#039;&#039;&#039;SampleRates&#039;&#039;&#039;: A comma-separated list of sample rates that OpenMPT will show in the sound device settings (if supported by the device) and when exporting a WAVE or FLAC file.&lt;br /&gt;
* &#039;&#039;&#039;XMMSModplugResamplerWFIRType&#039;&#039;&#039;: Configures the windowing function of the 8-tap Sinc filter (without low-pass). The windowing functions, from 0 to 7, are: Hann, Hamming, Blackman Exact, Blackman 3-Tap 61, Blackman 3-Tap 67, Blackman-Harris, Blackman 4-Tap 74, Kaiser α=7.5&lt;br /&gt;
&lt;br /&gt;
== [Update] ==&lt;br /&gt;
&lt;br /&gt;
== [VST Plugins] ==&lt;br /&gt;
* &#039;&#039;&#039;BridgeAllPlugins&#039;&#039;&#039;: All plugins are forced to be used through the integrated plugin bridge.&lt;br /&gt;
* &#039;&#039;&#039;EnableAutoSuspend&#039;&#039;&#039;: Enables auto-suspend for all plugins newly added to modules after this setting is turned on. If a plugin did not emit any sound during the last four seconds, it is suspended until new notes or sound data are fed into the plugin.&lt;br /&gt;
* &#039;&#039;&#039;EnableMidiMappingInEditor&#039;&#039;&#039;: If set to 0, holding &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; while modifying a plugin parameter does not open the [[Manual: MIDI Mapping|MIDI Mapping dialog]].&lt;br /&gt;
* &#039;&#039;&#039;HostProductString&#039;&#039;&#039;: Here you can enter a custom host name that is sent to VST plugins. This can be useful if a plugin claims to only run in certain hosts and refuses to run in others.&lt;br /&gt;
* &#039;&#039;&#039;HostVendorString&#039;&#039;&#039;: Here you can enter the host vendor name for the same reasons as above.&lt;br /&gt;
* &#039;&#039;&#039;HostVendorVersion&#039;&#039;&#039;: Here you can enter the host version as a 32-Bit integer for the same reasons as above.&lt;br /&gt;
* &#039;&#039;&#039;ProjectPath&#039;&#039;&#039;: Some plugins can store extra data alongside the module file. This behaviour can be overridden so that plugins use a different path. This setting can be either a normal absolute path or use the variables &amp;lt;code&amp;gt;%1&amp;lt;/code&amp;gt; (module path) and &amp;lt;code&amp;gt;%2&amp;lt;/code&amp;gt; (module filename) to build a path relative to the module location. So if all external plugin data should be stored in the folder &amp;lt;code&amp;gt;module.mptm-data&amp;lt;/code&amp;gt; (assuming module.mptm is the module filename) next to the module, this value should be set to &amp;lt;code&amp;gt;%1%2-data&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt; Due to restrictions posed by the VST architecture, this path must not contain characters outside the current [https://en.wikipedia.org/wiki/Windows_code_page#ANSI Windows ANSI code page].&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Hidden Settings]]&lt;br /&gt;
[[de:Handbuch: Versteckte Optionen]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Hidden_Settings&amp;diff=4949</id>
		<title>Manual: Hidden Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Hidden_Settings&amp;diff=4949"/>
		<updated>2025-06-29T11:08:49Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* [Export] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Settings Advanced.png|thumb|300px|Advanced tab of the settings dialog]]&lt;br /&gt;
&lt;br /&gt;
Some settings for advanced users cannot be changed directly in OpenMPT, however they can be changed by modifying OpenMPT’s configuration file, mptrack.ini, or from the [[Manual:_Setup/Advanced|Advanced Settings]]. When using the latter method, it might be necessary to restart OpenMPT for some options to take effect.&lt;br /&gt;
&lt;br /&gt;
== [Broken Plugin Workarounds] ==&lt;br /&gt;
* &#039;&#039;&#039;VSTMaskAllCrashes&#039;&#039;&#039;: Determines whether crashes in VST plugins should be reported to the user (1) or passed on to the system, i.e. OpenMPT crashes (0). Note that if a plugin crashed, its internal state or even OpenMPT’s state may be inconsistent, so in this situation it is best to close and reopen the tracker anyway.&lt;br /&gt;
* &#039;&#039;&#039;VSTNeverUnloadAnyPlugin&#039;&#039;&#039;: If set to 1, VST plugins are not fully unloaded when closing them. This may help with some buggy plugins (e.g. made with older versions of SynthEdit 1.4). Do not enable this setting unless you have issues when unloading plugins that cannot be solved by using the plugin bridge.&lt;br /&gt;
&lt;br /&gt;
== [Components] ==&lt;br /&gt;
* &#039;&#039;&#039;BlockASIO&#039;&#039;&#039;, &#039;&#039;&#039;BlockPortAudio&#039;&#039;&#039;, &#039;&#039;&#039;BlockRtAudio&#039;&#039;&#039;, &#039;&#039;&#039;BlockWaveOut&#039;&#039;&#039;: If set to 1, the respective sound device types do not get initialized or queried by OpenMPT. You should not need to disable any of these unless told to do so by the OpenMPT developers in order to diagnose problems.&lt;br /&gt;
* &#039;&#039;&#039;BlockMediaFoundation&#039;&#039;&#039;: If set to 1, OpenMPT will not load any samples using MediaFoundation codecs.&lt;br /&gt;
* &#039;&#039;&#039;BlockWineWrapper&#039;&#039;&#039;: If set to 1, OpenMPT will not load the Wine native audio wrapper.&lt;br /&gt;
* &#039;&#039;&#039;KeepLoaded&#039;&#039;&#039;: If set to 0, optional OpenMPT components (e.g. MP3 codecs) are unloaded after usage. This frees up memory used by these components but slows down subsequent uses.&lt;br /&gt;
* &#039;&#039;&#039;LoadOnStartUp&#039;&#039;&#039;: If set to 1, some optional components are loaded right on statup instead of when they are first used.&lt;br /&gt;
&lt;br /&gt;
== [Debug] ==&lt;br /&gt;
Options in this section should generally only be changed if you are advised by an OpenMPT developer to do so.&lt;br /&gt;
* &#039;&#039;&#039;DelegateToWindowsHandler&#039;&#039;&#039;: If set to 1, OpenMPT will invoke the Windows default crash handler after its own crash handler has finished generating the crash report which had been the behaviour in OpenMPT before 1.27.&lt;br /&gt;
* &#039;&#039;&#039;StopSoundDeviceBeforeDump&#039;&#039;&#039;: By default, the sound device is closed after writing out a crash dump. Setting this option to 1 inverts the behaviour.&lt;br /&gt;
* &#039;&#039;&#039;StopSoundDeviceOnCrash&#039;&#039;&#039;: If set to 0, OpenMPT will not close or otherwise touch the state of the sound device when writing out a crash dump. Only change this setting when asked by the OpenMPT developers to do so in order to diagnose sound device related crashes.&lt;br /&gt;
* &#039;&#039;&#039;TraceAlwaysDump&#039;&#039;&#039;: If set to 1 and &#039;&#039;&#039;TraceEnable&#039;&#039;&#039; is also set to 1, OpenMPT will always write out the trace log on program exit even if no crash happened. Do not enable this setting unless you are advised by the developers to do so.&lt;br /&gt;
* &#039;&#039;&#039;TraceEnable&#039;&#039;&#039;: If set to 1, a trace logging system is enabled which can be used by the OpenMPT developers to debug certain problems. Do not enable this setting unless you are advised by the developers to do so.&lt;br /&gt;
* &#039;&#039;&#039;TraceSize&#039;&#039;&#039;: Configures the tracer buffer size. By default, it contains 1,000,000 entries.&lt;br /&gt;
&lt;br /&gt;
== [Display] ==&lt;br /&gt;
* &#039;&#039;&#039;FSUpdateInterval&#039;&#039;&#039;: OpenMPT watches the &#039;&#039;&#039;f&#039;&#039;&#039;ile &#039;&#039;&#039;s&#039;&#039;&#039;ystem in order to update the [[Manual:_Tree_View#Instrument_Library|instrument library]] tree view when files get added or removed to the directory while OpenMPT is running. This setting limits the rate of the GUI updates in these cases to the given value in milliseconds. The default is 500ms.&lt;br /&gt;
* &#039;&#039;&#039;GUIUpdateInterval&#039;&#039;&#039;: Defines the update interval of the GUI in milliseconds (default: depends on the period value found in the sound card settings).&lt;br /&gt;
* &#039;&#039;&#039;ShowSplashScreen&#039;&#039;&#039;: If set to 0, no splash screen is shown when starting the program (same effect as [[Manual: Command-line Parameters|command line option]] /NoLogo).&lt;br /&gt;
* &#039;&#039;&#039;UseOldStyleFolderBrowser&#039;&#039;&#039;: When set to 1, the classic tree-style folder picker is used on Windows Vista and newer. On older systems and Wine, it is always used.&lt;br /&gt;
* &#039;&#039;&#039;VuMeterUpdateInterval&#039;&#039;&#039;: Defines the update interval of the VU meters in milliseconds (default: 15ms).&lt;br /&gt;
* &#039;&#039;&#039;VuMeterDecaySpeedDecibelPerSecond &#039;&#039;&#039;: Sets the VU meter&#039;s decay speed The default value is 88 dB/s.&lt;br /&gt;
&lt;br /&gt;
== [Export] ==&lt;br /&gt;
* &#039;&#039;&#039;DefaultToSoundcardSamplerate&#039;&#039;&#039;: By default, the [[Manual: Saving and exporting#Exporting tracks|export dialog]] presets the export frequency to the tracker’s currently selected sample rate. One reason for this behaviour is that some plugins do not like it when the sample rate is changed between normal playback and export. If you do not like this behaviour, you can set this value to 0. In this case, OpenMPT remembers the previously selected sample rate instead.&lt;br /&gt;
* &#039;&#039;&#039;FLACCompressionLevel&#039;&#039;&#039;: When [[Manual: Saving and exporting#Exporting tracks|exporting]] to FLAC format, this value sets the FLAC compression level. Higher values mean better compression ratio and require more CPU time. For details, please refer to the FLAC documentation.&lt;br /&gt;
* &#039;&#039;&#039;FLACMultithreading&#039;&#039;&#039;: By default, the FLAC encoder uses all available CPU cores for FLAC encoding. Setting this to 0 disables the multithreaded encoding.&lt;br /&gt;
* &#039;&#039;&#039;MP3ID3v2MinPadding&#039;&#039;&#039;: This value is the minimum amount of padding bytes to add to ID3v2 tags. &lt;br /&gt;
* &#039;&#039;&#039;MP3ID3v2PaddingAlignHint&#039;&#039;&#039;: This aligns the MP3 data after the ID3v2 tag in addition to the minimum padding to a multiple of the configured value. Set to 0 to disable additional aligning.&lt;br /&gt;
* &#039;&#039;&#039;MP3ID3v2WriteReplayGainTXXX&#039;&#039;&#039;: Write ReplayGain information (if calculated, see &#039;&#039;&#039;MP3LameCalculateReplayGain&#039;&#039;&#039; and &#039;&#039;&#039;MP3LameCalculatePeakSample&#039;&#039;&#039;) to the ID3v2 tag. This setting defaults to 1.&lt;br /&gt;
* &#039;&#039;&#039;MP3LameCalculateReplayGain&#039;&#039;&#039; and &#039;&#039;&#039;MP3LameCalculatePeakSample&#039;&#039;&#039;: When [[Manual: Saving and exporting#Exporting tracks|exporting]] to MP3 format, calculate the ReplayGain track gain adjustment and the peak sample value (as require by ReplaGain) respectively. The calculated values get written to the VBR/Lame info header automatically in VBR mode. Additionally, the values can be written to the ID3v2 tags when enabled (see &#039;&#039;&#039;MP3ID3v2WriteReplayGainTXXX&#039;&#039;&#039;). Both settings default to 1.&lt;br /&gt;
* &#039;&#039;&#039;MP3LameID3v2UseLame&#039;&#039;&#039;: If set to 1, when [[Manual: Saving and exporting#Exporting tracks|exporting]] to MP3 format, uses the libmp3lame ID3v2.3 implementation instead of the OpenMPT ID3v2.4 implementation. ID3v2.3 is more widely supported by older player software.&lt;br /&gt;
* &#039;&#039;&#039;MP3LameQuality&#039;&#039;&#039;: When [[Manual: Saving and exporting#Exporting tracks|exporting]] to MP3 format using libmp3lame, this value selects the internal algorithm quality used by LAME. Lower values mean better quality and require more CPU time. This is the same as the -q command line parameter for LAME. More details can be found e.g. on [http://wiki.hydrogenaud.io/index.php?title=LAME_-q_switch Hydrogenaudio].&lt;br /&gt;
* &#039;&#039;&#039;OpusComplexity&#039;&#039;&#039;: When [[Manual: Saving and exporting#Exporting tracks|exporting]] to Opus format, this value selects the internal complexity used by libopus. Higher values mean better encoding efficiency and require more CPU time. Value -1 uses the libopus default value. For details, please refer to the [https://opus-codec.org/docs/ libopus documentation].&lt;br /&gt;
&lt;br /&gt;
== [MIDI Input Ports] ==&lt;br /&gt;
In this section, you can set “friendly names” for all MIDI input ports. If you have lots of MIDI ports with undescriptive names (such as “MIDI Device Port 1”, “MIDI Device Port 2”, …), it can be useful to replace those names with more suitable names, e.g. to describe which device is connected to a specific port. To replace a name, add a pair like &amp;lt;code&amp;gt;MIDI Device Port 1=Synthesizer 1&amp;lt;/code&amp;gt; to this section.&lt;br /&gt;
&lt;br /&gt;
Friendly names are also recognized by the MIDI Input / Output plugin: If the selected ports have friendly names assigned when the module is saved, the next time is opened it will try to find the correct device by its friendly name. So if a MIDI device is connected to a different MIDI port, you can rename the ports and OpenMPT will automatically choose the correct port.&lt;br /&gt;
&lt;br /&gt;
== [MIDI Output Ports] ==&lt;br /&gt;
Same as [[#.5BMIDI Input Ports.5D|[MIDI Input Ports]]], but for MIDI output ports.&lt;br /&gt;
&lt;br /&gt;
== [Misc] ==&lt;br /&gt;
* &#039;&#039;&#039;AllowMultipleCommandsPerKey&#039;&#039;&#039;: By default, a key combination can be used by only one command. Setting this to 1 allows you to bind more than one command to a key combination. Beware that this might lead to problems with existing keyboard mappings with overlapping commands!&lt;br /&gt;
* &#039;&#039;&#039;CacheCompleteFileBeforeLoading&#039;&#039;&#039;: If set to 1, OpenMPT caches entire (module, instrument, etc.) files in memory, which may improve file reading performance at the expense of more memory being used.&lt;br /&gt;
* &#039;&#039;&#039;DistinguishModifiers&#039;&#039;&#039;: Enable this option to distinguish between left and right &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; / &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt; / &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; modifiers, e.g. to create FastTracker 2-like pattern play shortcuts.&lt;br /&gt;
* &#039;&#039;&#039;FlushFileBuffersOnSave&#039;&#039;&#039;: Disabling this option avoids flushing of file buffers after saving modules, samples and other files on disk. This can speed up the write operation but increases the risk of data loss e.g. in case of a power failure.&lt;br /&gt;
* &#039;&#039;&#039;ITCompressionMono&#039;&#039;&#039;: Enables IT-compressed mono samples when saving IT/MPTM files, depending on the value. To enable saving for normal IT files, add 1 to the value, for IT files saved through Compatibility Export, add 2, and for MPTM files add 4. So to enable saving of compressed samples in compatible ITs and MPTMs only, you would use the value 6. Some caveats regarding the usage of compressed samples have been written down on the [https://forum.openmpt.org/index.php?topic=4961.0 forum].&lt;br /&gt;
* &#039;&#039;&#039;ITCompressionStereo&#039;&#039;&#039;: Enables IT-compressed stereo samples when saving IT/MPTM files, depending on the value (see above).&lt;br /&gt;
* &#039;&#039;&#039;MRUListLength&#039;&#039;&#039;: Sets the maximum length of the most recently used file list in the file menu. Allowed values are between 0 (no list) and 15 entries.&lt;br /&gt;
* &#039;&#039;&#039;ProcessPriorityClass&#039;&#039;&#039;: Set the Windows process priority class for OpenMPT. Possible values are: &amp;quot;idle&amp;quot;, &amp;quot;below&amp;quot;, &amp;quot;normal&amp;quot;, &amp;quot;above&amp;quot;, &amp;quot;high&amp;quot;, &amp;quot;realtime&amp;quot;. The default is &amp;quot;normal&amp;quot;. See further discussion on the [https://forum.openmpt.org/index.php?topic=5655.0 forum]. &#039;&#039;&#039;Warning&#039;&#039;&#039;: Changing this setting can cause system lockups requiring hard system reset.&lt;br /&gt;
* &#039;&#039;&#039;SaveChannelMuteStatus&#039;&#039;&#039;: If set to 1, OpenMPT will save the channel mute status in IT, MPTM and S3M files.&lt;br /&gt;
* &#039;&#039;&#039;SmoothFT2Ramping&#039;&#039;&#039;: If set to 1, XM files made with Fasttracker 2 will automatically use [[Manual:_Compatible_Playback#XM_compatibility_settings|very smooth sample ramping]] settings (like Fasttracker 2 did).&lt;br /&gt;
* &#039;&#039;&#039;UseSingleInstance&#039;&#039;&#039;: Always forces OpenMPT to only use a single program instance, even when the &#039;&#039;&#039;/shared&#039;&#039;&#039; command line switch is not specified.&lt;br /&gt;
&lt;br /&gt;
== [Paths] ==&lt;br /&gt;
* &#039;&#039;&#039;Export_Directory&#039;&#039;&#039;: The default export directory for lossless and lossy audio export. OpenMPT always uses the last used directory for exporting, so changing this setting does not make a lot of sense.&lt;br /&gt;
* &#039;&#039;&#039;UseAppDataDirectory&#039;&#039;&#039;: This is a legacy setting imported from portable OpenMPT installations prior to version 1.29. If &amp;lt;code&amp;gt;mptrack.ini&amp;lt;/code&amp;gt; is found next to &amp;lt;code&amp;gt;OpenMPT.exe&amp;lt;/code&amp;gt; and this value is to 0, portable mode is assumed and all other configuration files are searched directly in the same directory as OpenMPT’s executable (by default they are placed in %APPDATA%\OpenMPT). When upgrading to a newer OpenMPT version, this setting is automatically converted to the new way of enabling portability. See also: [[Manual: System Setup#Portability|System Setup]].&lt;br /&gt;
&lt;br /&gt;
== [Pattern Editor] ==&lt;br /&gt;
* &#039;&#039;&#039;AccessibilityFormat&#039;&#039;&#039;: Defines the description of the pattern editor that can be obtained by screen readers. The string may contain the following variables: &amp;lt;code&amp;gt;%sequence%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%order%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%pattern%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%row%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%channel%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%channel_name%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%column_type%&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%column_description%&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;AlwaysDrawWholePatternOnScrollSlow&#039;&#039;&#039;: If set to 1, OpenMPT will always repaint the whole pattern display instead of re-using parts of the window that have only moved and not changed. This will be measurably slower, however in some situation the display will look broken otherwise (like jittering play cursor, not updating regions of the pattern display properly when switching to and from the window, or generally sluggish/jerky display). The problem is related to certain graphics drivers (known examples are systems with multiple AMD GPUs in Windows 7, Windows XP in VirtualBox, and all Wine systems). By default, this setting is 0. On Wine, this setting has no effect and is treated as always 1, regardless of its actual value.&lt;br /&gt;
* &#039;&#039;&#039;AutoHideVolumeColumnForMOD&#039;&#039;&#039;: When set to 1, the volume column is hidden by default for MOD and other formats that do not have a volume column.&lt;br /&gt;
* &#039;&#039;&#039;DefaultSequenceMargins&#039;&#039;&#039;: Defines how many order items are shown at least before and after the currently selected order item (0 by default).&lt;br /&gt;
* &#039;&#039;&#039;EditStepAppliesToCommands&#039;&#039;&#039;: When set to 1, the edit step setting is also applied when entering a command into the volume or effect column.&lt;br /&gt;
* &#039;&#039;&#039;FontDot&#039;&#039;&#039;: Overriding this setting allows to specify a custom character to be used for empty cells with user-configured pattern fonts.&lt;br /&gt;
* &#039;&#039;&#039;NoEditPopup&#039;&#039;&#039;: Disables the reminder popup when trying to edit patterns while editing is disabled and treats all channel columns like the note column to simplify jamming (keyjazz).&lt;br /&gt;
* &#039;&#039;&#039;OrderListOldDropBehaviour&#039;&#039;&#039;: Restores pre-OpenMPT 1.29 drag &amp;amp; drop behaviour in the order list editor. That is, patterns are always dropped left of the drop position, even if the drop position is right of the source.&lt;br /&gt;
* &#039;&#039;&#039;RowDisplayOffset&#039;&#039;&#039;: Defines the displayed number of the first pattern row; by default, it is 0. This does not affect the Goto dialog or break commands in patterns.&lt;br /&gt;
* &#039;&#039;&#039;VolumeColumnInHex&#039;&#039;&#039;: If set to 1, parameters in the volume column are shown in hexadecimal rather than decimal. In order to be able to enter hex digits A-F, the corresponding [[Manual: Keyboard Actions#Volume Column|keyboard shortcuts]] need to be assigned (note that you may have to re-assign effect letters a-f to avoid conflicts).&lt;br /&gt;
&lt;br /&gt;
== [Sound Settings] ==&lt;br /&gt;
* &#039;&#039;&#039;AllowDeferredProcessing&#039;&#039;&#039;: If set to 0, deferred processing is never used for ASIO drivers.&lt;br /&gt;
* &#039;&#039;&#039;BoostedThreadPriority&#039;&#039;&#039;: Set the priority (for Windows XP) used for sound devices which have &amp;quot;Boost thread priority&amp;quot; set. Possible values are -15,-2,-1,0,1,2,15 (or the full range -15..15 if [Misc]ProcessPriorityClass is set to &amp;quot;realtime&amp;quot;). Default value is 2. See further discussion on the [https://forum.openmpt.org/index.php?topic=5655.0 forum]. &#039;&#039;&#039;Warning&#039;&#039;&#039;: Changing this setting can cause system lockups requiring hard system reset.&lt;br /&gt;
* &#039;&#039;&#039;BoostedThreadMMCSSClass&#039;&#039;&#039;: Set the Multimedia Class Scheduler Service (MMCSS) class used for sound devices which have &amp;quot;Boost thread priority&amp;quot; set. Possible values are &amp;quot;Pro Audio&amp;quot;, &amp;quot;Games&amp;quot;, &amp;quot;Audio&amp;quot; or anything else that may be configured on your systems MMCSS. Default value is &amp;quot;Pro Audio&amp;quot;. See further discussion on the [https://forum.openmpt.org/index.php?topic=5655.0 forum]. &#039;&#039;&#039;Warning&#039;&#039;&#039;: Changing this setting can cause system lockups requiring hard system reset.&lt;br /&gt;
* &#039;&#039;&#039;MaskDriverCrashes&#039;&#039;&#039;: If set to 1, OpenMPT will try ignore crashes in ASIO drivers.&lt;br /&gt;
* &#039;&#039;&#039;MixChannels&#039;&#039;&#039;: Default is 256. The maximum number of sound channels that OpenMPT will use to render. In other words, Polyphony is the allowable number of notes that OpenMPT will process at once. Any computer that has been built in the last ten years should be able to handle the maximum amount of channels for most modules, but while older, low-end computers you will want to decrease the number of channels. Note that reducing the maximum polyphony only reduces the CPU load if those extra channels were actually used — if you play a 10-channel MOD file, it does matter little, if at all, whether the maximum polyphony is set to 16 or 256.&lt;br /&gt;
* &#039;&#039;&#039;ResamplerWFIRCutoff&#039;&#039;&#039;: Configures the bandwidth of the audio signal that is retained by the 8-tap Sinc filter (without low-pass) in percent. The default of 97% offers a good compromise between “freshness” and quality of the resampled sound.&lt;br /&gt;
* &#039;&#039;&#039;SampleRates&#039;&#039;&#039;: A comma-separated list of sample rates that OpenMPT will show in the sound device settings (if supported by the device) and when exporting a WAVE or FLAC file.&lt;br /&gt;
* &#039;&#039;&#039;XMMSModplugResamplerWFIRType&#039;&#039;&#039;: Configures the windowing function of the 8-tap Sinc filter (without low-pass). The windowing functions, from 0 to 7, are: Hann, Hamming, Blackman Exact, Blackman 3-Tap 61, Blackman 3-Tap 67, Blackman-Harris, Blackman 4-Tap 74, Kaiser α=7.5&lt;br /&gt;
&lt;br /&gt;
== [Update] ==&lt;br /&gt;
&lt;br /&gt;
== [VST Plugins] ==&lt;br /&gt;
* &#039;&#039;&#039;BridgeAllPlugins&#039;&#039;&#039;: All plugins are forced to be used through the integrated plugin bridge.&lt;br /&gt;
* &#039;&#039;&#039;EnableAutoSuspend&#039;&#039;&#039;: Enables auto-suspend for all plugins newly added to modules after this setting is turned on. If a plugin did not emit any sound during the last four seconds, it is suspended until new notes or sound data are fed into the plugin.&lt;br /&gt;
* &#039;&#039;&#039;EnableMidiMappingInEditor&#039;&#039;&#039;: If set to 0, holding &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; while modifying a plugin parameter does not open the [[Manual: MIDI Mapping|MIDI Mapping dialog]].&lt;br /&gt;
* &#039;&#039;&#039;HostProductString&#039;&#039;&#039;: Here you can enter a custom host name that is sent to VST plugins. This can be useful if a plugin claims to only run in certain hosts and refuses to run in others.&lt;br /&gt;
* &#039;&#039;&#039;HostVendorString&#039;&#039;&#039;: Here you can enter the host vendor name for the same reasons as above.&lt;br /&gt;
* &#039;&#039;&#039;HostVendorVersion&#039;&#039;&#039;: Here you can enter the host version as a 32-Bit integer for the same reasons as above.&lt;br /&gt;
* &#039;&#039;&#039;ProjectPath&#039;&#039;&#039;: Some plugins can store extra data alongside the module file. This behaviour can be overridden so that plugins use a different path. This setting can be either a normal absolute path or use the variables &amp;lt;code&amp;gt;%1&amp;lt;/code&amp;gt; (module path) and &amp;lt;code&amp;gt;%2&amp;lt;/code&amp;gt; (module filename) to build a path relative to the module location. So if all external plugin data should be stored in the folder &amp;lt;code&amp;gt;module.mptm-data&amp;lt;/code&amp;gt; (assuming module.mptm is the module filename) next to the module, this value should be set to &amp;lt;code&amp;gt;%1%2-data&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt; Due to restrictions posed by the VST architecture, this path must not contain characters outside the current [https://en.wikipedia.org/wiki/Windows_code_page#ANSI Windows ANSI code page].&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Hidden Settings]]&lt;br /&gt;
[[de:Handbuch: Versteckte Optionen]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Keyboard_Actions&amp;diff=4948</id>
		<title>Manual: Keyboard Actions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Keyboard_Actions&amp;diff=4948"/>
		<updated>2025-06-28T10:31:11Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of all customisable keyboard actions in OpenMPT. They can be configured in the [[Manual: Setup/Keyboard|Keyboard Setup dialog]].&lt;br /&gt;
&lt;br /&gt;
Default key combinations listed in the tables below assume a US keyboard layout. Generally, alphanumeric keys in shortcuts will stay the same in other keyboard layouts (so &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; does not turn into &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Y&amp;lt;/kbd&amp;gt; on a German layout), with the exception of note entry keys, which are set up based on their position on the keyboard instead (so on a French keyboard, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; and &amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; are used for playing a C across three octaves even though the table below says &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; and &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;). Non-alphanumeric keys generally vary a lot between keyboard layouts, so there might not be a direct mapping to your keyboard layout — the key might have a completely different label or not exist at all. You can always review the &#039;&#039;actual&#039;&#039; key combinations used by OpenMPT on your setup by reviewing them in the Keyboard setup dialog.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Keyboard shortcuts that clash with the default text editing shortcuts of the operating system (e.g. &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;, etc.) are ignored when the input focus is within a text field.&lt;br /&gt;
&lt;br /&gt;
== Global Keys ==&lt;br /&gt;
&lt;br /&gt;
Global keyboard shortcuts work on most parts of OpenMPT as long as one of the program’s windows is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| File/New || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Creates a new song. The currently edited song is not closed, as OpenMPT can have multiple documents open at the same time.&lt;br /&gt;
|-&lt;br /&gt;
| File/Open || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;O&amp;lt;/kbd&amp;gt; || Opens one or more existing songs.&lt;br /&gt;
|-&lt;br /&gt;
| File/Append Module || || [[Manual: Module Merging|Appends]] (merges) the song data (samples, instruments, plugins, patterns and sequences) of one or more existing songs to the currently active song.&lt;br /&gt;
|-&lt;br /&gt;
| File/Close || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; || Closes the current song. You are prompted to save the song if it has been modified.&lt;br /&gt;
|-&lt;br /&gt;
| File/Close All || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; || Closes all open songs. You are prompted to save modified songs.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Saves the song to disk.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save As || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Allows you to save the file with a new name or in another folder.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save Copy || || Allows you to save a copy of the file. The next Save action will update the file at its original location again.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save As Template || || Creates a template from the current song.&lt;br /&gt;
|-&lt;br /&gt;
| File/Open Template || || Opens a file picker in the template module folder.&lt;br /&gt;
|-&lt;br /&gt;
| File/Stream Export || || Exports the current track into a lossless or lossy [[Manual: Saving and exporting#Stream Export|streaming file]].&lt;br /&gt;
|-&lt;br /&gt;
| File/Export as MIDI || || Exports the current track into the .mid format. See the section on [[Manual: Saving and exporting#MIDI Export|MIDI export]] for a detailed explanation of how this file is exported.&lt;br /&gt;
|-&lt;br /&gt;
| File/Export OPL Register Dump || || Exports the current track into one of several OPL register dump formats. See the section on [[Manual: Saving and exporting#OPL Export|OPL export]] for a detailed explanation of how this file is exported.&lt;br /&gt;
|-&lt;br /&gt;
| File/Compatibility Export || || Exports the current track without any [[Manual: Saving and exporting#Compatibility Export|file format hacks]] to its original format.&lt;br /&gt;
|-&lt;br /&gt;
| File/Import MIDI Library || || Imports the MIDI Instrument Library of your choosing. The MIDI Library can be accessed from the [[Manual: Tree View#MIDI Library|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| File/Add Sound Bank || || Imports a sound bank of your choosing. Sound banks can be accessed from the [[Manual: Tree View#Sound Banks|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| Previous Document || || Goes to the previous module file that is open (these are visible in the Windows Menu).&lt;br /&gt;
|-&lt;br /&gt;
| Next Document || || Goes to the next module file that is open (these are visible in the Windows Menu).  &lt;br /&gt;
|-&lt;br /&gt;
| Play Song / Pause Song || &amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt; || Toggles the playback of the current track. The playback cursor is not reset when using this toggle; that is, it plays from where the cursor left off when it was last pressed.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song / Stop Song || || Toggles the playback of the current track. The playback cursor is reset to the start of the song.&lt;br /&gt;
|-&lt;br /&gt;
| Pause Song || &amp;lt;kbd&amp;gt;F8&amp;lt;/kbd&amp;gt; || Only stops the playback of the current track but does not reset the playback pointer.&lt;br /&gt;
|-&lt;br /&gt;
| Stop Song || &amp;lt;kbd&amp;gt;Escape&amp;lt;/kbd&amp;gt; || Stops the playback of the current track and resets the playback cursor to the start of the song.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Start || &amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; || Resets the playback cursor to the very first row and begins playback from there.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Cursor / Pause || || Resets the playback cursor to the row where the editing cursor is set, and begins playback from there if playback is currently stopped, otherwise it pauses playback. Playback will continue until the end of the track.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Cursor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; || Resets the playback cursor to the row where the editing cursor is set, and begins playback from there. Playback will continue until the end of the track.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Pattern Start / Pause || || Resets the playback cursor to the first row of the currently edited pattern and begins playback from there if playback is currently stopped, otherwise it pauses playback. &lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Pattern Start || || Resets the playback cursor to the first row of the currently edited pattern and begins playback from there.&lt;br /&gt;
|-&lt;br /&gt;
| Play Pattern from Start || &amp;lt;kbd&amp;gt;F7&amp;lt;/kbd&amp;gt; || Loops the current pattern, starting at the first row of the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Play Pattern from Cursor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F7&amp;lt;/kbd&amp;gt; || Loops the current pattern, starting at the row where the editing cursor is currently placed.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Loop Song || || Enables or disables the song loop status.&lt;br /&gt;
|-&lt;br /&gt;
| Panic || || Stops all sample, OPL and plugin instrument voices.&lt;br /&gt;
|-&lt;br /&gt;
| Estimate Song Length || || Estimates the playback length of the entire track.&lt;br /&gt;
|-&lt;br /&gt;
| Show Approx. Real BPM || || Estimates the beats per minute of the song, based on the current tempo and the number of ticks per row, plus the Tempo Mode in the Song Properties dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle MIDI Record || &amp;lt;kbd&amp;gt;F9&amp;lt;/kbd&amp;gt; || Toggles the MIDI Record option.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Tempo || || Increases the tempo of the currently playing module by 1 BPM. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Tempo || || Decreases the tempo of the currently playing module by 1 BPM. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Tempo (Fine) || || Increases the tempo of the currently playing module by 0.1 BPM if the module format supports fractional tempos. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Tempo (Fine) || || Decreases the tempo of the currently playing module by 0.1 BPM if the module format supports fractional tempos. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Ticks per Row || || Increases the speed of the currently playing module by 1 tick per row. This does not modify the initial Ticks per Row setting of the song, just current playback and can be overridden by speed pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Ticks per Row || || Decreases the speed of the currently playing module by 1 tick per row. This does not modify the initial Ticks per Row setting of the song, just current playback and can be overridden by speed pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Undo || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; || Rescinds the last edit in the pattern or sample editor.&lt;br /&gt;
|-&lt;br /&gt;
| Redo || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Y&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; || Reapplies the last undone action.&lt;br /&gt;
|-&lt;br /&gt;
| Cut || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;X&amp;lt;/kbd&amp;gt; || Copies the selected pattern, sample or instrument data into the clipboard, then removes it from the selection it occupies.&lt;br /&gt;
|-&lt;br /&gt;
| Copy || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Copies the selected pattern, sample or instrument data into the clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Paste || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Pastes data from the clipboard. In the pattern editor, it is pasted at the location of the cursor, overwriting any pattern data that falls within the paste area. With sample data, clipboard contents replace the &#039;&#039;&#039;whole&#039;&#039;&#039; sample.&lt;br /&gt;
|-&lt;br /&gt;
| Mix Paste || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Mixes clipboard contents with existing data. In the pattern editor, clipboard contents are pasted in the same row at the same column of the current (visible) pattern where the cursor is located, except where there is already any data in any corresponding field of the paste area. In the sample editor, the source and clipboard sample waveforms are mixed together.&lt;br /&gt;
|-&lt;br /&gt;
| Mix Paste (IT Style) || || For detailed differences between Mix Paste and Mix Paste (IT Style), consult the [[Manual: Patterns#Paste Modes|Pattern Editor help]]. The two commands are identical when used in the sample editor.&lt;br /&gt;
|-&lt;br /&gt;
| Paste Flood || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Clipboard contents are pasted from the cursor, repeating the data paste until every row in the pattern has been filled and pasting over any data in its path.&lt;br /&gt;
|-&lt;br /&gt;
| Push Forward Paste (Insert) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Patterns: Clipboard contents are inserted at the row of the cursor, and pushing all data below that row further down the pattern. Any data of the affected channels pushed beyond the pattern’s last row is deleted. Samples: The sample data from the clipboard replaces the current selection. If there is no selection, the sample is inserted at the last selected position.&lt;br /&gt;
|-&lt;br /&gt;
| Select All || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;5&amp;lt;/kbd&amp;gt; || Selects all pattern or sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Find / Replace || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Opens the Find/Replace dialog, which allows you to search for and/or replace given pattern data. Find starts from the cursor location.&lt;br /&gt;
|-&lt;br /&gt;
| Find Next || &amp;lt;kbd&amp;gt;F3&amp;lt;/kbd&amp;gt; || Applies the current Find settings and searches for the next data that matches it, starting from the current cursor location.&lt;br /&gt;
|-&lt;br /&gt;
| View General || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Opens the [[Manual: General|General Tab]] of the currently focussed module.&lt;br /&gt;
|-&lt;br /&gt;
| View Pattern || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Patterns|Pattern Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Samples || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Samples|Sample Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Instruments || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Instruments|Instrument Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Comments || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F9&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Comments|Comments Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Main Toolbar || || Shows / hides the [[Manual: Main Toolbar|Main Toolbar]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Tree View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F2&amp;lt;/kbd&amp;gt; || Shows / hides the [[Manual: Tree View|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| View Options || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F1&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Setup|Setup dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Channel Manager || || Opens the [[Manual: Channel Manager|Channel Manager]].&lt;br /&gt;
|-&lt;br /&gt;
| View Plugin Manager || || Opens the [[Manual: Plugin Manager|Plugin Manager dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Song Properties || || Opens the [[Manual: Song Properties|Song Properties dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Global Tempo Swing Settings || || Opens the [[Manual: Tempo Swing Settings|Tempo Swing Settings dialog]] for the song’s global time signature. If modern tempo mode is not enabled yet, the [[Manual: Song Properties|Song Properties dialog]] is opened instead so that it can be enabled.&lt;br /&gt;
|-&lt;br /&gt;
| View Zxx Macro Configuration || || Opens the [[Manual: Macro Configuration|MIDI Macro Configuration]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| View MIDI Mapping || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F3&amp;lt;/kbd&amp;gt; || Opens the [[Manual: MIDI Mapping|MIDI Mapping dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Edit History || || Opens the [[Manual: Edit History|Edit History]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Between Upper / Lower View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Switches keyboard focus between the upper and lower half of the currently focussed song view.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Instrument Library  || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Sets keyboard focus to the [[Manual: Tree View|Instrument Library]], or switches back to the last used editor window if the tree view already has focus.&lt;br /&gt;
|-&lt;br /&gt;
| Help || &amp;lt;kbd&amp;gt;F1&amp;lt;/kbd&amp;gt; || Opens the manual.&lt;br /&gt;
|-&lt;br /&gt;
| Open Context Menu || &amp;lt;kbd&amp;gt;▤ Application&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Opens the context menu for the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad/&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Changes the current instrument to the previous one. In the sample editor, the previous sample is chosen.&lt;br /&gt;
|-&lt;br /&gt;
| Next Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad*&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Changes the current instrument to the next one. In the sample editor, the next sample is chosen.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Octave || &amp;lt;kbd&amp;gt;Numpad/&amp;lt;/kbd&amp;gt; || Changes the current octave to the next lower octave.&lt;br /&gt;
|-&lt;br /&gt;
| Next Octave || &amp;lt;kbd&amp;gt;Numpad*&amp;lt;/kbd&amp;gt; || Changes the current octave to the next higher octave.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Changes the current pattern to the previous one in the pattern order.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Changes the current pattern to the next one in the pattern order.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current measure) || || Changes the current pattern to the previous one in the pattern order once the current measure has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current measure) || || Changes the current pattern to the next one in the pattern order once the current measure has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current beat) || || Changes the current pattern to the previous one in the pattern order once the current beat has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current beat) || || Changes the current pattern to the next one in the pattern order once the current beat has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current row) || || Changes the current pattern to the previous one in the pattern order once the current row has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current row) || || Changes the current pattern to the next one in the pattern order once the current row has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Dummy Shortcut || || Some keyboard shortcuts are created automatically by OpenMPT (e.g. the combinations of pressing the selection key together with navigation keys). If you need to prevent OpenMPT from automatically assigning a specific key combination, you can assign it to this dummy shortcut instead, so it will not be usable by automatically generated shortcuts. This will also prevent the key combination from being used by new default key combinations added by future OpenMPT updates.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pattern ==&lt;br /&gt;
&lt;br /&gt;
=== Order List ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts operate while the cursor focus is in the Order List.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Delete Order || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Erases the currently selected pattern(s) in the Order List (the pattern itself is not removed, only the reference).&lt;br /&gt;
|-&lt;br /&gt;
| Insert Order || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Duplicates the currently selected pattern &#039;&#039;reference&#039;&#039;(s) in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Separator || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts a separator item (+++) at the next position.&lt;br /&gt;
|-&lt;br /&gt;
| Copy Orders || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Copies the currently selected pattern &#039;&#039;references&#039;&#039; in the Order List to the clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Pattern || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Resets the Pattern Editor to show the highlighted pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pattern Editor || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor focus to the Pattern Editor. There is also a more general version of this shortcut that works for all other song views as well (“Toggle Between Upper / Lower View”).&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Selects the previous pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Selects the following pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| First Order || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Selects the first pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Last Order || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Selects the final pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Pattern Index Digit [0 - 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the respective numeral into the pattern ID box.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Pattern Index || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Adds one to the pattern number, up to the highest indexed pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Pattern Index || &amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Subtracts one from the pattern number, to a minimum of index 0.&lt;br /&gt;
|-&lt;br /&gt;
| Separator Index || &amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Adds a separator pattern item (+++) at the current position.&lt;br /&gt;
|-&lt;br /&gt;
| Stop Index || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Adds a stop pattern item (---) at the current position.&lt;br /&gt;
|-&lt;br /&gt;
| Lock Playback to Selection || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Song playback is locked to the patterns in the current order selection.&lt;br /&gt;
|-&lt;br /&gt;
| Unlock Playback || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || If playback has been limited to an order selection before, the playback lock can be removed here.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current pattern) || &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current pattern has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current measure) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current measure has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current beat) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current beat has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current row) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current row has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Stream Export || || Opens the [[Manual: Saving and exporting#Stream Export|Wave Export dialog]] for the selected patterns.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quick Channel Settings ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts operate while the [[Manual: Quick Channel Settings|Quick Channel Settings dialog]] is open.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Previous Channel || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Shows the channel settings for the previous channel.&lt;br /&gt;
|-&lt;br /&gt;
| Next Channel || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Shows the channel settings for the next channel.&lt;br /&gt;
|-&lt;br /&gt;
| Pick Color from Previous Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Assigns the color of the previous channel to the current channel.&lt;br /&gt;
|-&lt;br /&gt;
| Pick Color from Next Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Assigns the color of the next channel to the current channel.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pattern Editor || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Closes the dialog and returns to the Pattern Editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== General Context ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts will work if the cursor focus is within any of the columns of the Pattern Editor, except where noted. When navigating (moving the cursor) to before the first row or after the last row in the pattern, the cursor “wraps” to the other side of the same pattern, if the “Cursor Wrap” option is enabled (in the Options section of the [[Manual: Setup/General|General tab]] of the Setup dialog). If navigating beyond the first or last row when the “Continuous Scroll” option is enabled, the cursor will instead move to the previous/next pattern in the order list. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|- &lt;br /&gt;
| Navigate Down by 1 Row || &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor to the next row in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Up by 1 Row || &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor to the previous row in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Down by Spacing || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor down by the value in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Up by Spacing || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor up by the value in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Left || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the cursor to the previous column in the same row, going to the previous channel′s last column if moving from the first column of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Right || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the cursor to the next column in the same row, going to the next channel’s first column if moving from the last column of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate to Next Channel || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor to the same column in the same row in the next channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate to Previous Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor to the same column in the same row in the previous channel.&lt;br /&gt;
|- &lt;br /&gt;
| Jump Down by Measure || &amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Up by Measure || &amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Down by Beat || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Up by Beat || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Down to Measure || || Moves the cursor down to the first row of the next measure, as determined by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Up to Measure || || Moves the cursor up to the first row of the previous measure, as determined by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Down to Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down to the first row of the next beat, as determined by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Up to Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up to the first row of the previous beat, as determined by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump to Previous Entry in Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor to the next non-empty cell (note, instrument, etc.) of the currently selected column above the current cursor position. When combined with the Selection key, the selection will be extended to the next non-empty cell in the current pattern only. Otherwise, this command continues to search for a non-empty cell in the previous patterns.&lt;br /&gt;
|-&lt;br /&gt;
| Jump to Next Entry in Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor to the next non-empty cell (note, instrument, etc.) of the currently selected column below the current cursor position. When combined with the Selection key, the selection will be extended to the next non-empty cell in the current pattern only. Otherwise, this command continues to search for a non-empty cell in the next patterns.&lt;br /&gt;
|-&lt;br /&gt;
| Go to First Channel || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first column of the first channel in the same row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to First Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first row of the same channel in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Go to First Row of First Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first column of the first channel in the first row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Channel || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last column of the last channel in the same row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last row of the same channel in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Row of Last Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last column of the last channel in the last row. &lt;br /&gt;
|- &lt;br /&gt;
| Go to note column || || Moves the cursor to the note column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to instrument column || || Moves the cursor to the instrument column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to volume effect column || || Moves the cursor to the volume effect column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to effect comamnd column || || Moves the cursor to the effect command column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to effect parameter column || || Moves the cursor to the effect parameter column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Previous Pattern || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Displays the previous pattern in the order list, moving the cursor to its equivalent position in it.&lt;br /&gt;
|- &lt;br /&gt;
| Next Pattern || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Displays the next pattern in the order list, moving the cursor to its equivalent position in it.&lt;br /&gt;
|- &lt;br /&gt;
| Previous Sequence || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Cycles to the previous sequence. If the current sequence is the first, the last sequence is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Next Sequence || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Cycles to the next sequence. If the current sequence is the last, the first sequence is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Left || || Scrolls the pattern editor to the left without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Right || || Scrolls the pattern editor to the right without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Up || || Scrolls the pattern editor up without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Down || || Scrolls the pattern editor down without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Selection Key || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; || The modifier key to be used to extend the selection when navigating with keyboard shortcuts.&lt;br /&gt;
|- &lt;br /&gt;
| Copy Select Key || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; || The modifier key to be used to copy the selection when dragging with the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Select Channel / Select All || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Selects all events of the channel where the cursor is located in the current pattern, or all events in the pattern if the entire channel is already selected.&lt;br /&gt;
|- &lt;br /&gt;
| Select Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Selects the column in which the cursor is located in all rows of the current pattern.&lt;br /&gt;
|- &lt;br /&gt;
| Select Row || || Completely selects all rows covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Select Event || || Completely selects all events covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Select Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Extends the current selection so that it starts on the first row of a beat and ends on the last row of a beat.&lt;br /&gt;
|- &lt;br /&gt;
| Select Measure || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Extends the current selection so that it starts on the first row of a measure and ends on the last row of a measure.&lt;br /&gt;
|- &lt;br /&gt;
| Lose Selection || || Resets the selection rectangle to contain only the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Copy and Lose Selection || || Copies the selected events to the clipboard and unselects them.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Copy || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Copies only one event of data (where the cursor is located) to OpenMPT′s “Quick” clipboard; the standard clipboard is not erased. Each column pair has its own Quick clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Paste || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Pastes the data in OpenMPT′s “Quick” clipboard to the location of the cursor. The data last saved in that column’s clipboard will be pasted in the cursor′s corresponding column.&lt;br /&gt;
|-&lt;br /&gt;
| Cut to Pattern Channel Clipboard || || Copies and clears the entire channel the cursor is located in. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Channel Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Cut to Pattern Clipboard || || Copies and clears the entire current pattern. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Copy to Pattern Channel Clipboard || || Copies the entire channel the cursor is located in. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Channel Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Copy to Pattern Clipboard || || Copies the entire current pattern. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Paste from Pattern Channel Clipboard || || Replaces the contents of the channel the cursor is located in with the contents of the pattern channel clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Paste from Pattern Clipboard || || Replaces the contents of the current pattern with the contents of the pattern clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Clipboard Manager || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Toggles the visibility of the pattern clipboard manager.&lt;br /&gt;
|-&lt;br /&gt;
| Cycle to Previous Clipboard || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Makes the previous internal clipboard the current clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Cycle to Next Clipboard || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Makes the next internal clipboard the current clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Clear Row || || Deletes all event data in the same row in the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the selected pattern data, or just the data under the current cursor position if no selection has been made.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field (IT Style) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;.&amp;lt;/kbd&amp;gt; || Same as “Clear field”, but also clears the instrument number if a note event is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Row and Step || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Clear row”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field and Step || || Same as “Clear field”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field and Step (IT Style) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Clear field (IT Style)”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same number of rows as the selection, affecting the same number of channels where the selection extends; the data is moved up to replace the cleared data, and empty rows are added at the end of the affected channels.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (All Channels) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same amount of rows as the selection, on all channels; the data is moved up to replace the cleared data, and empty rows are added at the end of the pattern.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (Global) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same number of rows as the selection, affecting the same number of channels where the selection extends; this also affect all following patterns as no empty rows are inserted.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (All Channels, Global) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same amount of rows as the selection, on all channels; this also affect all following patterns as no empty rows are inserted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in the selected channel down by the amount of selected rows. Event data in the last row of those channels is deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (All Channels) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in all channels down by the amount of selected rows. Event data in the last row of all channels is deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (Global) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in the selected channel down by the amount of selected rows. Event data in the last rows is pushed to the next pattern(s), where the same action is repeated.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (All Channels, Global) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in all channels down by the amount of selected rows. Event data in the last rows is pushed to the next pattern(s), where the same action is repeated.&lt;br /&gt;
|- &lt;br /&gt;
| Mute Current Channel || &amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Toggles the sound output (mute) for the channel(s) covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Solo Current Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Toggles the sound output (mute) for all channels except the channel(s) covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Unmute All Channels || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Unmutes the sound output for all channels.&lt;br /&gt;
|- &lt;br /&gt;
| (Un)mute Channel on Pattern Transition || || Toggles the sound output (mute) for the channel(s) covered by the current selection, but the change takes place when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Unmute All Channels on Pattern Transition || || Unmutes the sound output for all channels when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Solo Channel on Pattern Transition || || Toggles the sound output (mute) for all channels except the one where the cursor is located, but the change takes place when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Channel Record Select || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Toggles the channel(s) covered by the current selection to belong to the primary record group.&lt;br /&gt;
|- &lt;br /&gt;
| Channel Split Record Select || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Toggles the channel(s) covered by the current selection to belong to the [[Manual: Keyboard Split|split record]] group.&lt;br /&gt;
|- &lt;br /&gt;
| Reset Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Stops all note processing, and resets all channel variables to their defaults (volume, panning, etc.) on the selected channel(s).&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Channel || || Changes the pitch of all notes on the selected channel in all patterns by a selectable amount of semitones.&lt;br /&gt;
|- &lt;br /&gt;
| Duplicate Channel || || Adds a new channel to the module and carries over all note data from the channel containing the edit cursor to this new channel.&lt;br /&gt;
|- &lt;br /&gt;
| Add Channel Before Current || || Adds a new empty channel before the channel containing the edit cursor.&lt;br /&gt;
|- &lt;br /&gt;
| Add Channel After Current || || Adds a new empty channel after the channel containing the edit cursor.&lt;br /&gt;
|- &lt;br /&gt;
| Remove Current || || Removes the channel containing the edit cursor. If the channel contains any data on any pattern, a confirmation prompt is shown.&lt;br /&gt;
|- &lt;br /&gt;
| Move Channels to Left || || Moves the channels covered by the current selection (if there is none, just the channel where the edit cursor is located) to the left by one channel.&lt;br /&gt;
|- &lt;br /&gt;
| Move Channels to Right || || Moves the channels covered by the current selection (if there is none, just the channel where the edit cursor is located) to the right by one channel.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Channel Settings || || Opens the [[Manual: Quick Channel Settings|Quick Channel Settings dialog]] for the channel where the cursor is located.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises by one the note number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers by one the note number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises by one the octave number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers by one the octave number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Custom || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || Lowers or raises the selected notes by an arbitrary amount of semitones.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Custom (Quick) || || Applies a previously chosen custom transpose amount. If no amount has been chosen before, the behaviour of this shortcut is identical to Transpose Custom.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry +1 || || Increases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry -1 || || Decreases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry Up (Coarse) || || Increases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one octave (notes), 10 (instruments and volume effect parameters) or 16 (effect parameters).&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry Down (Coarse) || || Decreases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one octave (notes), 10 (instruments and volume effect parameters) or 16 (effect parameters).&lt;br /&gt;
|- &lt;br /&gt;
| Insert New Pattern || || Inserts a new blank pattern after the current pattern, displays it, and moves the cursor to the same position in it. Also functions when cursor focus is in the Order list.&lt;br /&gt;
|- &lt;br /&gt;
| Duplicate Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Inserts a new pattern with the current pattern′s contents.&lt;br /&gt;
|- &lt;br /&gt;
| Split Pattern || || Splits the current pattern at the cursor location.&lt;br /&gt;
|- &lt;br /&gt;
| Amplify Selection || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Opens a dialog to change the note volume commands of the selected volume data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Note || || Transitions smoothly (using all available notes) between notes in the selection, filling in (and replacing if necessary) all rows with new note data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Instrument || || Transitions smoothly (using all available instrument numbers) between instrument numbers in the selection, filling in all rows with new instrument data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Volume || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;J&amp;lt;/kbd&amp;gt; || Transitions smoothly between data amounts in the selection, filling in (and replacing if necessary) all rows with new volume effects. The first and last rows of the selection must contain the same volume effect, or one of the two rows might be empty.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Effect || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;K&amp;lt;/kbd&amp;gt; || Transitions smoothly between data amounts in the selection, filling in (and replacing if necessary) all rows with new effect data. The first and last rows of the selection must contain the same effect, or one of the two rows might be empty. Different effects within the selection are not overwritten.&lt;br /&gt;
|- &lt;br /&gt;
| Apply Current Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Applies the current instrument to all cells in the selection that contain note data.&lt;br /&gt;
|- &lt;br /&gt;
| Apply Current Instrument to Existing Only || || Applies the current instrument to all cells in the selection that contain an instrument numbers. Notes without instrument numbers are not updated.&lt;br /&gt;
|- &lt;br /&gt;
| Grow Selection || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || “Expands” the selection by doubling the number of the selected rows, and evenly spacing out the event data within it. The expansion will replace event data below it in the same channels as the selection.&lt;br /&gt;
|- &lt;br /&gt;
| Shrink Selection || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || “Shrinks” the selection by deleting every other row of the selection. However, if only part of any row is selected, the data corresponding to the deleted selected data is also deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Expand Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || “Expands” the entire pattern by doubling the number of the rows, and evenly spacing out the event data within it.&lt;br /&gt;
|- &lt;br /&gt;
| Shrink Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || “Shrinks” the entire pattern by removing every other row.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Follow Song || &amp;lt;kbd&amp;gt;F11&amp;lt;/kbd&amp;gt; || Toggles the “Follow Song” function.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Loop Pattern || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F11&amp;lt;/kbd&amp;gt; || Toggles the Loop Pattern feature. &lt;br /&gt;
|- &lt;br /&gt;
| Play Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Process and play only the events in the current row where the cursor is located.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Row/Channel/… || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Go To|Go To]] dialog to allow you to jump to a different position in the module.&lt;br /&gt;
|- &lt;br /&gt;
| Pick Up Nearest Instrument Number || || Seeks for the nearest instrument number in the pattern channel the cursor currently is in. If an instrument number is found, it is set as the currently active instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Enable Recording || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Toggles the Event Record feature. When enabled, patterns may be edited.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Metronome || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Toggles the [[Manual: Metronome Settings|Metronome]].&lt;br /&gt;
|- &lt;br /&gt;
| Set Edit Step on Note Entry || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt; || The modifier key(s) that, when pressed with digits 0-9, allows you to change the Edit Step amount without using the mouse or moving the cursor focus out of the editor.&lt;br /&gt;
|- &lt;br /&gt;
| Increase Edit Step || || Increases the Edit Step by one row.&lt;br /&gt;
|- &lt;br /&gt;
| Decrease Edit Step || || Decreases the Edit Step by one row.&lt;br /&gt;
|- &lt;br /&gt;
| Switch to Order List || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Toggles the cursor focus between the pattern editor and the current pattern in the Pattern Order list. There is also a more general version of this shortcut that works for all other song views as well (“Toggle Between Upper / Lower View”).&lt;br /&gt;
|- &lt;br /&gt;
| Toggle PC Event/Instrument Plugin Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;/&amp;lt;/kbd&amp;gt; || Opens the editor for the plugin of the selected Parameter Control Event or instrument number.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Channel’s Plugin Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the editor for the current channel′s assigned plugin.&lt;br /&gt;
|- &lt;br /&gt;
| Show Note Properties || &amp;lt;kbd&amp;gt;▤ Application&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Note Properties|Note Properties]] dialog, where you can assign any event data to the current row of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Show Pattern Properties || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Pattern Properties|Pattern Properties]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Split Keyboard Settings Dialog || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Keyboard Split|Keyboard Split]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| Open Effect Visualizer || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Parameter Editor|Parameter Editor]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| Show Chord Editor || || opens the [[Manual: Chord Editor|Chord Editor]] dialog. &lt;br /&gt;
|-&lt;br /&gt;
| Show Context (Right-Click) Menu || || Opens the edit context menu at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Channel Context (Right-Click) Menu || || Opens the channel context menu at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Channel Plugin Context (Right-Click) Menu || || Opens the plugin context menu of the channel at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Playback Time at Current Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Shows the estimated time within the track at the start of the current row.&lt;br /&gt;
|- &lt;br /&gt;
| Lock Playback to Rows || || If a selection is made, playback is locked to the selected rows. Otherwise, a previous playback lock is removed.&lt;br /&gt;
|-&lt;br /&gt;
| Quantize Settings || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Opens the record quantization settings.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle row playback when navigating ||  || Toggles the state of the &amp;quot;play whole row when navigating&amp;quot; feature. The new state of the feature is announced in the status bar.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Overflow Paste || || When enabled, pasting will continue to the next pattern if the data overflows the current pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Note Off Record (PC Keyboard) || || Toggles the recording of Note Off events from the PC keyboard in the pattern editor (also configurable from the [[Manual: Setup/General#Record note off|General setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Note Off Record (MIDI) || || Toggles the recording of Note Off events from MIDI in the pattern editor (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Apply Octave Transpose to incoming MIDI Notes || || Toggles application of the base octave transposition to notes received via MIDI in the pattern editor (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Continue Song when MIDI Note is received || || Toggles whether pattern playback continues when a note is received via MIDI (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Respond to Play / Continue / Stop Song MIDI messages || || Toggles whether pattern playback starts / stops / continues when the corresponding MIDI commands are received (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI Velocity || || Toggles whether MIDI velocity is recorded (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI Pitch Bend || || Toggles whether MIDI pitch bends are recorded to patterns (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI CCs || || Toggles whether MIDI CC events are recorded to patterns (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Instrument Column Visibility || || Shows or hides the instrument column.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Volume Column Visibility || || Shows or hides the volume column.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Effect Column Visibility || || Shows or hides the effect column.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Note Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the note column (the first column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Base Octave [note] || &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt;, ... || Enters a note in the octave indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +1 [note] || &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt;, ... || Enters a note in the next higher octave indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +2 [note] || &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;X&amp;lt;/kbd&amp;gt;, ... || Enters a note two octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +3 [note] || || Enters a note three octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +4 [note] || || Enters a note four octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Set Octave [0 – 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Sets the selected note’s octave.&lt;br /&gt;
|-&lt;br /&gt;
| Chord Modifier || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; || The modifier key(s) that calls a chord rather than a note. The chords are set and assigned in the [[Manual: Chord Editor|Chord Editor]].&lt;br /&gt;
|-&lt;br /&gt;
| Note Cut || &amp;lt;kbd&amp;gt;`&amp;lt;/kbd&amp;gt; || Enters a Note Cut command (^^). Note: The default shortcut is position-independent and is bound to the key that is usually left of &amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt;. &lt;br /&gt;
|-&lt;br /&gt;
| Note Off || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a Note Off command (==). Note: The default shortcut is position-independent and is bound to the key that is usually left of &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Note Fade || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a Note Fade command (~~). Note: The default shortcut is position-independent and is bound to the key that is usually lef of &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Control || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Enters an absolute [[Manual:_Parameter_Control_Events|Parameter Control event]] (PC). Note: The default shortcut is position-independent and is bound to the key that is usually right of &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Control (Smooth) || &amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Enters a smooth sliding Parameter Control event (PCs). Note: The default shortcut is position-independent and is bound to the key that is usually right of &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Instrument Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the instrument column (the second column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Set Instrument Digit [0 – 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the instrument field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the volume column (the third column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Set Volume Digit [0 - 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the volume parameter field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
| Set Volume Digit [A - F] || || Enters the digit into the rightmost place in the volume parameter field, moving the existing digits to the left. By default, volume column parameters are shown in decimal and these shortcuts are not assigned. You can use them after enabling the [[Manual: Hidden Settings#.5BPattern Editor.5D|Pattern Editor.VolumeColumnInHex]] hidden setting.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume || &amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Enters a note volume (vxx) command into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Panning || &amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Enters a panning command (pxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume Slide Up || &amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Enters volume slide up (cxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume Slide Down || &amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Enters a volume slide down (dxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Fine Volume Slide Up || &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Enters a fine volume slide up (axx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Fine Volume Slide Down || &amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Enters a fine volume slide down (bxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Vibrato Speed || &amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || Enters a vibrato speed command (uxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Vibrato Depth || &amp;lt;kbd&amp;gt;H&amp;lt;/kbd&amp;gt; || Enters a vibrato depth command (hxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - XM Pan Slide Left || &amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enters a pan slide to the left (lxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - XM Pan Slide Right || &amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Enters a pan slide to the right (rxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Tone Portamento || &amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Enters a tone portamento command (gxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Portamento Up || &amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enters a pitch bend up command (fxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Portamento Down || &amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Enters a pitch bend down command (exx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Offset || &amp;lt;kbd&amp;gt;O&amp;lt;/kbd&amp;gt; || Enters a coarse sample offset command (oxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the effect column (the fourth column). Alphanumeric effect letters (0-9, A-Z) are currently not editable — they are automatically assigned to the respective keys on your keyboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Smooth MIDI Macro Slide || &amp;lt;kbd&amp;gt;\&amp;lt;/kbd&amp;gt; || Enters a Smooth MIDI Macro Slide (\xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Combined Note Delay and Note Cut || &amp;lt;kbd&amp;gt;;&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;;&amp;lt;/kbd&amp;gt; || Enters a Delay-Cut (:xy) command into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Extension Command || &amp;lt;kbd&amp;gt;/&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Parameter Extension Command]] (#xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Finetune || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Finetune Command]] (+xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Finetune (Smooth) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Smooth Finetune Command]] (*xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Parameter Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the effect parameter column (the fifth column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Effect Parameter Digit [0 – F] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the effect parameter field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Samples|Samples Tab]] is active.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Trim Sample around Loop Points || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || Trims the sample to the selection, if there is one. Otherwise, if loop points are specified, all sample data outside of these start/end times are deleted.&lt;br /&gt;
|-&lt;br /&gt;
| Trim to Loop End || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || If loop points are specified, all sample data past the loop end is deleted.&lt;br /&gt;
|-&lt;br /&gt;
| Silence Sample Selection || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || All of the sample data within the selected area is set to zero, effectively placing silence in that span.&lt;br /&gt;
|-&lt;br /&gt;
| Normalize Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Applies Normalisation to the sample.&lt;br /&gt;
|-&lt;br /&gt;
| Amplify Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Amplify|Amplify]] dialog, allowing you to alter the volume of the sample and apply Fade In or Fade Out (from / to silence).&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Puts the selected sample data in reverse order, so it is being played backwards.&lt;br /&gt;
|-&lt;br /&gt;
| Delete Sample Selection || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the sample data within the selection, moving the remaining data together.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Sample Drawing || || Turns sample drawing mode on or off.&lt;br /&gt;
|-&lt;br /&gt;
| Add Silence / Create Sample || || Opens the dialog for adding silence, resizing samples and initializing FM instruments.&lt;br /&gt;
|-&lt;br /&gt;
| Configure Sample Grid || || Opens the dialog for setting the sample grid properties.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom In || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Increases the data-to-display ratio, effectively zooming in to show more graphic detail of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom Out || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Decreases the data-to-display ratio, effectively zooming out to show less graphic detail of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Selection || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Zooms so much into the sample data that the current selection covers as much of the sample display as possible. If no selection has been made, auto-zoom is enabled.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Sample Start || &amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Zooms into the sample and ensures that the sample start is visible in the view.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Sample End || &amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Zooms into the sample and ensures that the sample end is visible in the view.&lt;br /&gt;
|-&lt;br /&gt;
| Center Loop Start in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Ensures that the normal sample loop’s start point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Loop End in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Ensures that the normal sample loop’s end point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Sustain Loop Start in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;3&amp;lt;/kbd&amp;gt; || Ensures that the sample sustain loop’s start point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Sustain Loop End in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;4&amp;lt;/kbd&amp;gt; || Ensures that the sample sustain loop’s end point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Convert Ping-Pong Loop to Unidirectional || || Turns a bidi-looped sample loop into a sample with a regular loop by adding a reversed copy of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Convert Ping-Pong Sustain Loop to Unidirectional || || Turns a bidi-looped sustain loop into a sample with a regular loop by adding a reversed copy of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Convert to 8-bit / 16-bit || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;8&amp;lt;/kbd&amp;gt; || Changes the sample’s bit depth between 8-bit and 16-bit.&lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Mix) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Mixes the left and right channels of a stereo sample equally together. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Left Channel) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Only keeps the left channel of a stereo sample. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Right Channel) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Only keeps the right channel of a stereo sample. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Split Sample) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Create two sample slots for this sample, one containing only the left channel and the other containing just the right channel. If the sample is referenced by an instrument, this instrument is duplicated as well for the right channel. &lt;br /&gt;
|-&lt;br /&gt;
| Change Stereo Separation || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Adjusts the stereo separation of the sample by a given amount, either widening or narrowing the stereo width.&lt;br /&gt;
|-&lt;br /&gt;
| Upsample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt;|| Doubles the sample’s middle-C frequency using the interpolation filter last chosen in the [[Manual: Resample|Resample dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| Downsample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt;|| Halves the sample’s middle-C frequency using the interpolation filter last chosen in the [[Manual: Resample|Resample dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| Resample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Changes the sample’s middle-C frequency to a new arbitrary frequency.&lt;br /&gt;
|-&lt;br /&gt;
| Invert Sample Phase || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Inverts the sample’s phase, i.e. it is mirrored along the time axis.&lt;br /&gt;
|-&lt;br /&gt;
| Signed / Unsigned Conversion || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || Re-interprets the sample data as a signed or unsigned sample.&lt;br /&gt;
|-&lt;br /&gt;
| Remove DC Offset || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Removes an unwanted static DC Offset from the waveform, i.e. it is centered around the time axis.&lt;br /&gt;
|-&lt;br /&gt;
| Quick Fade || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Applies a fade-in for the selected sample data if the selection includes the beginning of the sample, or applies a fade-out if the selection includes the end of the sample. If neither the beginning or end of the waveform is part of the selection, the Amplify dialog is shown.&lt;br /&gt;
|-&lt;br /&gt;
| Crossfade Sample Loop || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Opens the Crossfade Loop dialog to crossfade the sample loop’s end with the loop start, to create seamless loop transitions.&lt;br /&gt;
|-&lt;br /&gt;
| Tune Sample to Given Note || || Opens the [[Manual: Sample Tuner|Sample Tuner]] dialog, where the sample can be tuned to a given note.&lt;br /&gt;
|-&lt;br /&gt;
| Load Sample || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens the Open File dialog to allow you to import a sample file into the sample slot. This command also works in the Instrument Tab, importing an instrument to the current Instrument slot.&lt;br /&gt;
|-&lt;br /&gt;
| Load Raw Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens the Open File dialog to allow you to import a sample file into the sample slot. The [[Manual: Raw Sample Import|Raw Sample Import]] is shown, ignoring the sample format even if it is known to OpenMPT.&lt;br /&gt;
|-&lt;br /&gt;
| Save Sample || || Opens the Save File dialog to allow you to save the sample as a Wave Audio or Raw file into a folder of your choice. This command also works in the Instrument Tab, saving the instrument and its accompanying samples as an .iti, .xi or .sfz file.&lt;br /&gt;
|-&lt;br /&gt;
| New Sample || || Creates a blank sample in the next unused slot. This command also works in the Instrument Tab.&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Sample || || Duplicates the current sample slot into the next unused slot.&lt;br /&gt;
|-&lt;br /&gt;
| Initialize OPL Instrument || || Configures the current sample slot to be a synthesized OPL instrument and recalls the default instrument parameters.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises the middle-C frequency by one semitone.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers the middle-C frequency by one semitone.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises (doubles) the middle-C frequency by one octave.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers (halves) the middle-C frequency by one octave.&lt;br /&gt;
|- &lt;br /&gt;
| Increment Finetune || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Raises the middle-C frequency by the configured [[Manual: Setup/Samples#Frequency Finetune Steps|frequency finetune step]], or by one finetune unit in MOD / XM Files.&lt;br /&gt;
|- &lt;br /&gt;
| Decrement Finetune || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Lowers the middle-C frequency by the configured [[Manual: Setup/Samples#Frequency Finetune Steps|frequency finetune step]], or by one finetune unit in MOD / XM Files.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Follow Sample Play Cursor|| &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Cycles through all three [[Manual: Setup/Samples#Automatic Scrolling when_Zoomed-In|sample playback cursor follow modes]]. The new follow mode is announced in the status bar.&lt;br /&gt;
|-&lt;br /&gt;
| Preview / Set Sample Cue [1 - 9] || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt; || Previews the sample at middle-C, starting from the chosen cue point. If the cue point is unset and the sample is currently being previewed, the cue point is set to the current play position.&lt;br /&gt;
|- &lt;br /&gt;
| Slice at Cue Points || || Creates new samples from the current sample by splitting the sample at its cue points.&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instrument Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Instruments#Sample Map|Sample Map]] on the Instrument Tab is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Creates a new instrument slot using &#039;&#039;all&#039;&#039; the same instrument attributes as the currently displayed instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Sample Map || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Sample Map|Sample Map]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Current Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the Samples page of the currently selected sample slot.&lt;br /&gt;
|-&lt;br /&gt;
| Map All Notes to Selected Note || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Sets the currently selected note to all notes.&lt;br /&gt;
|-&lt;br /&gt;
| Map All Notes to Selected Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Sets the currently selected sample slot to all notes.&lt;br /&gt;
|-&lt;br /&gt;
| Reset Note Mapping || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Resets the note assignments, so that each note maps to itself (C-5 → C-5, D-5 → D-5, and so on).&lt;br /&gt;
|-&lt;br /&gt;
| Remove All Samples || || Removes any sample associations from the instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 (Note Map) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Transposes the whole note map up one semitone.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose -1 (Note Map) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Transposes the whole note map down one semitone.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 Octave (Note Map) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Transposes the whole note map up one octave.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose -1 Octave (Note Map) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Transposes the whole note map down one octave.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Envelope Editor ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Instruments#Envelope Editor|envelope editor]] on the Instrument Tab is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Load Envelope || || Replaces the currently active envelope with an envelope from disk.&lt;br /&gt;
|-&lt;br /&gt;
| Save Envelope || || Stores the currently active envelope to disk.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom In || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Increases the detail of the Envelope Window, showing a smaller excerpt of the envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom Out || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Decreases the detail of the Envelope Window, showing a bigger excerpt of the envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Scale Envelope Points || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Scale Envelope Points|Scale Envelope Points]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Volume Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Selects the Volume Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Panning Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Selects the Panning Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pitch / Filter Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Selects the Pitch / Filter Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Volume Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Enables or disables the Volume Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Panning Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Enables or disables the Panning Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Pitch Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Enables or disables the Pitch Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Filter Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enables or disables the Filter Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Loop || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Loop.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Loop Start || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope loop start.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Loop End || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope loop end.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Sustain Loop || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Sustain Loop.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Sustain Start || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope sustain start.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Sustain End || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope sustain end.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Carry || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Carry.&lt;br /&gt;
|-&lt;br /&gt;
| Select Previous Envelope Point || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the selection to the previous envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Select Next Envelope Point || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the selection to the following envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Left || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the selected envelope point left one tick.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Left (Coarse) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the selected envelope point left one beat.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Right || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the selected envelope point right one tick.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Right (Coarse) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the selected envelope point right one beat.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Up || &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the selected envelope point up one unit.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Up (Coarse) || &amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the selected envelope point up 8 units.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Down || &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the selected envelope point down one unit.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Down (Coarse) || &amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the selected envelope point down 8 units.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Envelope Point || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts an envelope point after the selected point.&lt;br /&gt;
|-&lt;br /&gt;
| Remove Envelope Point || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the selected envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Loop Start || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Envelope Loop start point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Loop End || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Envelope Loop end point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Sustain Loop Start || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Sustain Loop start point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Sustain Loop End || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Sustain Loop end point.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Release Node || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Toggles the selected envelope point as the start point for the Release Envelope.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comments [Bottom] ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the lower half of the [[Manual: Comments|Comments tab]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Between Lists || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Toggles between the sample and instrument list.&lt;br /&gt;
|-&lt;br /&gt;
| Open Item in Editor || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Switches to the sample or instrument editor to edit the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Rename Item || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Brings up an edit box for renaming the selected sample or instrument.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Plugin Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when a [[Manual: Plugin Window|plugin window]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Previous Plugin Preset || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Selects the previous plugin preset / patch.&lt;br /&gt;
|-&lt;br /&gt;
| Next Plugin Preset || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Selects the following plugin preset / patch.&lt;br /&gt;
|-&lt;br /&gt;
| Plugin Preset Backward Jump || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Jumps back 10 entries in the preset list.&lt;br /&gt;
|-&lt;br /&gt;
| Plugin Preset Forward Jump || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Jumps forward 10 entries in the preset list.&lt;br /&gt;
|-&lt;br /&gt;
| Randomize Plugin Parameters || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Give random values to all parameters of the current plugin.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Parameter Recording || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Toggles the parameter recording function, which allows you to record parameter changes from plugin window into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Record MIDI Out to Pattern Editor || || Toggles the MIDI Out recording function, which allows you to route the plugin’s MIDI output to the pattern, sample or instrument editor.&lt;br /&gt;
|-&lt;br /&gt;
| Pass Key Presses to Plugin || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;K&amp;lt;/kbd&amp;gt; || Toggles the Pass Keys function, which sends all keyboard input to the currently open plugin window (e.g. for entering a serial number in the plugin GUI).&lt;br /&gt;
|-&lt;br /&gt;
| Bypass Plugin || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Toggles plugin’s bypass property to control whether audio is routed through the plugin or not.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tree View ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual:_Tree_View|Tree View]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Switch between Upper / Lower Tree View || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Switches focus between the upper and lower panel of the Tree View.&lt;br /&gt;
|-&lt;br /&gt;
| Open / View Item || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens / views / previews the selected item (same action as double-click).&lt;br /&gt;
|-&lt;br /&gt;
| Play Item || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Previews the selected item if it is a sample, instrument or file.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Item || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts an empty item (e.g. sample or instrument slot) after the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Item || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Duplicates the currently selected item (e.g. sample or instrument slot).&lt;br /&gt;
|-&lt;br /&gt;
| Delete Item || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Delete Item Permanently || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Delete Item”, but if the selected item is a file, it will not be moved to the recycling bin.&lt;br /&gt;
|-&lt;br /&gt;
| Rename Item / Send To Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || For items belonging to an open module (e.g. patterns, samples, instruments, ...): The selected item is renamed. For items in the instrument library: The item is sent to the last active sample or instrument editor and replaces the currently selected sample or instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Send To Editor (Insert New) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || For items in the instrument library: The item is sent to the last active sample or instrument editor and is loaded into a new sample or instrument slot.&lt;br /&gt;
|-&lt;br /&gt;
| Go to Parent Folder || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Changes the instrument library folder to the current location′s parent folder.&lt;br /&gt;
|-&lt;br /&gt;
| Find in Instrument Library || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt;|| Opens the search filter to quickly locate files and folders in the instrument library.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Name || || Items in the instrument library are sorted by their file name.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Date || || Items in the instrument library are sorted by their last file modification date.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Size || || Items in the instrument library are sorted by their file size.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Keyboard Actions]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Keyboard_Actions&amp;diff=4947</id>
		<title>Manual: Keyboard Actions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Keyboard_Actions&amp;diff=4947"/>
		<updated>2025-06-24T20:28:47Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: Expand/Shrink Pattern&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of all customisable keyboard actions in OpenMPT. They can be configured in the [[Manual: Setup/Keyboard|Keyboard Setup dialog]].&lt;br /&gt;
&lt;br /&gt;
Default key combinations listed in the tables below assume a US keyboard layout. Generally, alphanumeric keys in shortcuts will stay the same in other keyboard layouts (so &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; does not turn into &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Y&amp;lt;/kbd&amp;gt; on a German layout), with the exception of note entry keys, which are set up based on their position on the keyboard instead (so on a French keyboard, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; and &amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; are used for playing a C across three octaves even though the table below says &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; and &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;). Non-alphanumeric keys generally vary a lot between keyboard layouts, so there might not be a direct mapping to your keyboard layout — the key might have a completely different label or not exist at all. You can always review the &#039;&#039;actual&#039;&#039; key combinations used by OpenMPT on your setup by reviewing them in the Keyboard setup dialog.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Keyboard shortcuts that clash with the default text editing shortcuts of the operating system (e.g. &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;, etc.) are ignored when the input focus is within a text field.&lt;br /&gt;
&lt;br /&gt;
== Global Keys ==&lt;br /&gt;
&lt;br /&gt;
Global keyboard shortcuts work on most parts of OpenMPT as long as one of the program’s windows is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| File/New || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Creates a new song. The currently edited song is not closed, as OpenMPT can have multiple documents open at the same time.&lt;br /&gt;
|-&lt;br /&gt;
| File/Open || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;O&amp;lt;/kbd&amp;gt; || Opens one or more existing songs.&lt;br /&gt;
|-&lt;br /&gt;
| File/Append Module || || [[Manual: Module Merging|Appends]] (merges) the song data (samples, instruments, plugins, patterns and sequences) of one or more existing songs to the currently active song.&lt;br /&gt;
|-&lt;br /&gt;
| File/Close || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; || Closes the current song. You are prompted to save the song if it has been modified.&lt;br /&gt;
|-&lt;br /&gt;
| File/Close All || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; || Closes all open songs. You are prompted to save modified songs.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Saves the song to disk.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save As || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Allows you to save the file with a new name or in another folder.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save Copy || || Allows you to save a copy of the file. The next Save action will update the file at its original location again.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save As Template || || Creates a template from the current song.&lt;br /&gt;
|-&lt;br /&gt;
| File/Open Template || || Opens a file picker in the template module folder.&lt;br /&gt;
|-&lt;br /&gt;
| File/Stream Export || || Exports the current track into a lossless or lossy [[Manual: Saving and exporting#Stream Export|streaming file]].&lt;br /&gt;
|-&lt;br /&gt;
| File/Export as MIDI || || Exports the current track into the .mid format. See the section on [[Manual: Saving and exporting#MIDI Export|MIDI export]] for a detailed explanation of how this file is exported.&lt;br /&gt;
|-&lt;br /&gt;
| File/Export OPL Register Dump || || Exports the current track into one of several OPL register dump formats. See the section on [[Manual: Saving and exporting#OPL Export|OPL export]] for a detailed explanation of how this file is exported.&lt;br /&gt;
|-&lt;br /&gt;
| File/Compatibility Export || || Exports the current track without any [[Manual: Saving and exporting#Compatibility Export|file format hacks]] to its original format.&lt;br /&gt;
|-&lt;br /&gt;
| File/Import MIDI Library || || Imports the MIDI Instrument Library of your choosing. The MIDI Library can be accessed from the [[Manual: Tree View#MIDI Library|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| File/Add Sound Bank || || Imports a sound bank of your choosing. Sound banks can be accessed from the [[Manual: Tree View#Sound Banks|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| Previous Document || || Goes to the previous module file that is open (these are visible in the Windows Menu).&lt;br /&gt;
|-&lt;br /&gt;
| Next Document || || Goes to the next module file that is open (these are visible in the Windows Menu).  &lt;br /&gt;
|-&lt;br /&gt;
| Play Song / Pause Song || &amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt; || Toggles the playback of the current track. The playback cursor is not reset when using this toggle; that is, it plays from where the cursor left off when it was last pressed.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song / Stop Song || || Toggles the playback of the current track. The playback cursor is reset to the start of the song.&lt;br /&gt;
|-&lt;br /&gt;
| Pause Song || &amp;lt;kbd&amp;gt;F8&amp;lt;/kbd&amp;gt; || Only stops the playback of the current track but does not reset the playback pointer.&lt;br /&gt;
|-&lt;br /&gt;
| Stop Song || &amp;lt;kbd&amp;gt;Escape&amp;lt;/kbd&amp;gt; || Stops the playback of the current track and resets the playback cursor to the start of the song.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Start || &amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; || Resets the playback cursor to the very first row and begins playback from there.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Cursor / Pause || || Resets the playback cursor to the row where the editing cursor is set, and begins playback from there if playback is currently stopped, otherwise it pauses playback. Playback will continue until the end of the track.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Cursor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; || Resets the playback cursor to the row where the editing cursor is set, and begins playback from there. Playback will continue until the end of the track.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Pattern Start / Pause || || Resets the playback cursor to the first row of the currently edited pattern and begins playback from there if playback is currently stopped, otherwise it pauses playback. &lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Pattern Start || || Resets the playback cursor to the first row of the currently edited pattern and begins playback from there.&lt;br /&gt;
|-&lt;br /&gt;
| Play Pattern from Start || &amp;lt;kbd&amp;gt;F7&amp;lt;/kbd&amp;gt; || Loops the current pattern, starting at the first row of the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Play Pattern from Cursor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F7&amp;lt;/kbd&amp;gt; || Loops the current pattern, starting at the row where the editing cursor is currently placed.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Loop Song || || Enables or disables the song loop status.&lt;br /&gt;
|-&lt;br /&gt;
| Panic || || Stops all sample, OPL and plugin instrument voices.&lt;br /&gt;
|-&lt;br /&gt;
| Estimate Song Length || || Estimates the playback length of the entire track.&lt;br /&gt;
|-&lt;br /&gt;
| Show Approx. Real BPM || || Estimates the beats per minute of the song, based on the current tempo and the number of ticks per row, plus the Tempo Mode in the Song Properties dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle MIDI Record || &amp;lt;kbd&amp;gt;F9&amp;lt;/kbd&amp;gt; || Toggles the MIDI Record option.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Tempo || || Increases the tempo of the currently playing module by 1 BPM. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Tempo || || Decreases the tempo of the currently playing module by 1 BPM. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Tempo (Fine) || || Increases the tempo of the currently playing module by 0.1 BPM if the module format supports fractional tempos. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Tempo (Fine) || || Decreases the tempo of the currently playing module by 0.1 BPM if the module format supports fractional tempos. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Ticks per Row || || Increases the speed of the currently playing module by 1 tick per row. This does not modify the initial Ticks per Row setting of the song, just current playback and can be overridden by speed pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Ticks per Row || || Decreases the speed of the currently playing module by 1 tick per row. This does not modify the initial Ticks per Row setting of the song, just current playback and can be overridden by speed pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Undo || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; || Rescinds the last edit in the pattern or sample editor.&lt;br /&gt;
|-&lt;br /&gt;
| Redo || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Y&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; || Reapplies the last undone action.&lt;br /&gt;
|-&lt;br /&gt;
| Cut || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;X&amp;lt;/kbd&amp;gt; || Copies the selected pattern, sample or instrument data into the clipboard, then removes it from the selection it occupies.&lt;br /&gt;
|-&lt;br /&gt;
| Copy || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Copies the selected pattern, sample or instrument data into the clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Paste || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Pastes data from the clipboard. In the pattern editor, it is pasted at the location of the cursor, overwriting any pattern data that falls within the paste area. With sample data, clipboard contents replace the &#039;&#039;&#039;whole&#039;&#039;&#039; sample.&lt;br /&gt;
|-&lt;br /&gt;
| Mix Paste || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Mixes clipboard contents with existing data. In the pattern editor, clipboard contents are pasted in the same row at the same column of the current (visible) pattern where the cursor is located, except where there is already any data in any corresponding field of the paste area. In the sample editor, the source and clipboard sample waveforms are mixed together.&lt;br /&gt;
|-&lt;br /&gt;
| Mix Paste (IT Style) || || For detailed differences between Mix Paste and Mix Paste (IT Style), consult the [[Manual: Patterns#Paste Modes|Pattern Editor help]]. The two commands are identical when used in the sample editor.&lt;br /&gt;
|-&lt;br /&gt;
| Paste Flood || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Clipboard contents are pasted from the cursor, repeating the data paste until every row in the pattern has been filled and pasting over any data in its path.&lt;br /&gt;
|-&lt;br /&gt;
| Push Forward Paste (Insert) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Patterns: Clipboard contents are inserted at the row of the cursor, and pushing all data below that row further down the pattern. Any data of the affected channels pushed beyond the pattern’s last row is deleted. Samples: The sample data from the clipboard replaces the current selection. If there is no selection, the sample is inserted at the last selected position.&lt;br /&gt;
|-&lt;br /&gt;
| Select All || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;5&amp;lt;/kbd&amp;gt; || Selects all pattern or sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Find / Replace || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Opens the Find/Replace dialog, which allows you to search for and/or replace given pattern data. Find starts from the cursor location.&lt;br /&gt;
|-&lt;br /&gt;
| Find Next || &amp;lt;kbd&amp;gt;F3&amp;lt;/kbd&amp;gt; || Applies the current Find settings and searches for the next data that matches it, starting from the current cursor location.&lt;br /&gt;
|-&lt;br /&gt;
| View General || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Opens the [[Manual: General|General Tab]] of the currently focussed module.&lt;br /&gt;
|-&lt;br /&gt;
| View Pattern || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Patterns|Pattern Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Samples || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Samples|Sample Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Instruments || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Instruments|Instrument Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Comments || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F9&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Comments|Comments Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Main Toolbar || || Shows / hides the [[Manual: Main Toolbar|Main Toolbar]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Tree View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F2&amp;lt;/kbd&amp;gt; || Shows / hides the [[Manual: Tree View|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| View Options || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F1&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Setup|Setup dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Channel Manager || || Opens the [[Manual: Channel Manager|Channel Manager]].&lt;br /&gt;
|-&lt;br /&gt;
| View Plugin Manager || || Opens the [[Manual: Plugin Manager|Plugin Manager dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Song Properties || || Opens the [[Manual: Song Properties|Song Properties dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Global Tempo Swing Settings || || Opens the [[Manual: Tempo Swing Settings|Tempo Swing Settings dialog]] for the song’s global time signature. If modern tempo mode is not enabled yet, the [[Manual: Song Properties|Song Properties dialog]] is opened instead so that it can be enabled.&lt;br /&gt;
|-&lt;br /&gt;
| View Zxx Macro Configuration || || Opens the [[Manual: Macro Configuration|MIDI Macro Configuration]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| View MIDI Mapping || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F3&amp;lt;/kbd&amp;gt; || Opens the [[Manual: MIDI Mapping|MIDI Mapping dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Edit History || || Opens the [[Manual: Edit History|Edit History]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Between Upper / Lower View || || Switches keyboard focus between the upper and lower half of the currently focussed song view.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Instrument Library  || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Sets keyboard focus to the [[Manual: Tree View|Instrument Library]], or switches back to the last used editor window if the tree view already has focus.&lt;br /&gt;
|-&lt;br /&gt;
| Help || &amp;lt;kbd&amp;gt;F1&amp;lt;/kbd&amp;gt; || Opens the manual.&lt;br /&gt;
|-&lt;br /&gt;
| Open Context Menu || &amp;lt;kbd&amp;gt;▤ Application&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Opens the context menu for the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad/&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Changes the current instrument to the previous one. In the sample editor, the previous sample is chosen.&lt;br /&gt;
|-&lt;br /&gt;
| Next Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad*&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Changes the current instrument to the next one. In the sample editor, the next sample is chosen.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Octave || &amp;lt;kbd&amp;gt;Numpad/&amp;lt;/kbd&amp;gt; || Changes the current octave to the next lower octave.&lt;br /&gt;
|-&lt;br /&gt;
| Next Octave || &amp;lt;kbd&amp;gt;Numpad*&amp;lt;/kbd&amp;gt; || Changes the current octave to the next higher octave.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Changes the current pattern to the previous one in the pattern order.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Changes the current pattern to the next one in the pattern order.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current measure) || || Changes the current pattern to the previous one in the pattern order once the current measure has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current measure) || || Changes the current pattern to the next one in the pattern order once the current measure has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current beat) || || Changes the current pattern to the previous one in the pattern order once the current beat has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current beat) || || Changes the current pattern to the next one in the pattern order once the current beat has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current row) || || Changes the current pattern to the previous one in the pattern order once the current row has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current row) || || Changes the current pattern to the next one in the pattern order once the current row has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Dummy Shortcut || || Some keyboard shortcuts are created automatically by OpenMPT (e.g. the combinations of pressing the selection key together with navigation keys). If you need to prevent OpenMPT from automatically assigning a specific key combination, you can assign it to this dummy shortcut instead, so it will not be usable by automatically generated shortcuts. This will also prevent the key combination from being used by new default key combinations added by future OpenMPT updates.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pattern ==&lt;br /&gt;
&lt;br /&gt;
=== Order List ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts operate while the cursor focus is in the Order List.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Delete Order || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Erases the currently selected pattern(s) in the Order List (the pattern itself is not removed, only the reference).&lt;br /&gt;
|-&lt;br /&gt;
| Insert Order || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Duplicates the currently selected pattern &#039;&#039;reference&#039;&#039;(s) in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Separator || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts a separator item (+++) at the next position.&lt;br /&gt;
|-&lt;br /&gt;
| Copy Orders || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Copies the currently selected pattern &#039;&#039;references&#039;&#039; in the Order List to the clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Pattern || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Resets the Pattern Editor to show the highlighted pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pattern Editor || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor focus to the Pattern Editor. There is also a more general version of this shortcut that works for all other song views as well (“Toggle Between Upper / Lower View”).&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Selects the previous pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Selects the following pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| First Order || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Selects the first pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Last Order || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Selects the final pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Pattern Index Digit [0 - 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the respective numeral into the pattern ID box.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Pattern Index || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Adds one to the pattern number, up to the highest indexed pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Pattern Index || &amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Subtracts one from the pattern number, to a minimum of index 0.&lt;br /&gt;
|-&lt;br /&gt;
| Separator Index || &amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Adds a separator pattern item (+++) at the current position.&lt;br /&gt;
|-&lt;br /&gt;
| Stop Index || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Adds a stop pattern item (---) at the current position.&lt;br /&gt;
|-&lt;br /&gt;
| Lock Playback to Selection || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Song playback is locked to the patterns in the current order selection.&lt;br /&gt;
|-&lt;br /&gt;
| Unlock Playback || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || If playback has been limited to an order selection before, the playback lock can be removed here.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current pattern) || &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current pattern has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current measure) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current measure has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current beat) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current beat has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current row) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current row has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Stream Export || || Opens the [[Manual: Saving and exporting#Stream Export|Wave Export dialog]] for the selected patterns.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quick Channel Settings ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts operate while the [[Manual: Quick Channel Settings|Quick Channel Settings dialog]] is open.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Previous Channel || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Shows the channel settings for the previous channel.&lt;br /&gt;
|-&lt;br /&gt;
| Next Channel || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Shows the channel settings for the next channel.&lt;br /&gt;
|-&lt;br /&gt;
| Pick Color from Previous Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Assigns the color of the previous channel to the current channel.&lt;br /&gt;
|-&lt;br /&gt;
| Pick Color from Next Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Assigns the color of the next channel to the current channel.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pattern Editor || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Closes the dialog and returns to the Pattern Editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== General Context ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts will work if the cursor focus is within any of the columns of the Pattern Editor, except where noted. When navigating (moving the cursor) to before the first row or after the last row in the pattern, the cursor “wraps” to the other side of the same pattern, if the “Cursor Wrap” option is enabled (in the Options section of the [[Manual: Setup/General|General tab]] of the Setup dialog). If navigating beyond the first or last row when the “Continuous Scroll” option is enabled, the cursor will instead move to the previous/next pattern in the order list. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|- &lt;br /&gt;
| Navigate Down by 1 Row || &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor to the next row in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Up by 1 Row || &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor to the previous row in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Down by Spacing || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor down by the value in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Up by Spacing || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor up by the value in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Left || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the cursor to the previous column in the same row, going to the previous channel′s last column if moving from the first column of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Right || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the cursor to the next column in the same row, going to the next channel’s first column if moving from the last column of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate to Next Channel || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor to the same column in the same row in the next channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate to Previous Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor to the same column in the same row in the previous channel.&lt;br /&gt;
|- &lt;br /&gt;
| Jump Down by Measure || &amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Up by Measure || &amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Down by Beat || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Up by Beat || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Down to Measure || || Moves the cursor down to the first row of the next measure, as determined by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Up to Measure || || Moves the cursor up to the first row of the previous measure, as determined by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Down to Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down to the first row of the next beat, as determined by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Up to Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up to the first row of the previous beat, as determined by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump to Previous Entry in Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor to the next non-empty cell (note, instrument, etc.) of the currently selected column above the current cursor position. When combined with the Selection key, the selection will be extended to the next non-empty cell in the current pattern only. Otherwise, this command continues to search for a non-empty cell in the previous patterns.&lt;br /&gt;
|-&lt;br /&gt;
| Jump to Next Entry in Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor to the next non-empty cell (note, instrument, etc.) of the currently selected column below the current cursor position. When combined with the Selection key, the selection will be extended to the next non-empty cell in the current pattern only. Otherwise, this command continues to search for a non-empty cell in the next patterns.&lt;br /&gt;
|-&lt;br /&gt;
| Go to First Channel || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first column of the first channel in the same row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to First Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first row of the same channel in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Go to First Row of First Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first column of the first channel in the first row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Channel || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last column of the last channel in the same row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last row of the same channel in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Row of Last Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last column of the last channel in the last row. &lt;br /&gt;
|- &lt;br /&gt;
| Go to note column || || Moves the cursor to the note column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to instrument column || || Moves the cursor to the instrument column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to volume effect column || || Moves the cursor to the volume effect column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to effect comamnd column || || Moves the cursor to the effect command column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to effect parameter column || || Moves the cursor to the effect parameter column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Previous Pattern || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Displays the previous pattern in the order list, moving the cursor to its equivalent position in it.&lt;br /&gt;
|- &lt;br /&gt;
| Next Pattern || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Displays the next pattern in the order list, moving the cursor to its equivalent position in it.&lt;br /&gt;
|- &lt;br /&gt;
| Previous Sequence || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Cycles to the previous sequence. If the current sequence is the first, the last sequence is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Next Sequence || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Cycles to the next sequence. If the current sequence is the last, the first sequence is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Left || || Scrolls the pattern editor to the left without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Right || || Scrolls the pattern editor to the right without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Up || || Scrolls the pattern editor up without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Down || || Scrolls the pattern editor down without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Selection Key || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; || The modifier key to be used to extend the selection when navigating with keyboard shortcuts.&lt;br /&gt;
|- &lt;br /&gt;
| Copy Select Key || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; || The modifier key to be used to copy the selection when dragging with the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Select Channel / Select All || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Selects all events of the channel where the cursor is located in the current pattern, or all events in the pattern if the entire channel is already selected.&lt;br /&gt;
|- &lt;br /&gt;
| Select Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Selects the column in which the cursor is located in all rows of the current pattern.&lt;br /&gt;
|- &lt;br /&gt;
| Select Row || || Completely selects all rows covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Select Event || || Completely selects all events covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Select Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Extends the current selection so that it starts on the first row of a beat and ends on the last row of a beat.&lt;br /&gt;
|- &lt;br /&gt;
| Select Measure || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Extends the current selection so that it starts on the first row of a measure and ends on the last row of a measure.&lt;br /&gt;
|- &lt;br /&gt;
| Lose Selection || || Resets the selection rectangle to contain only the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Copy and Lose Selection || || Copies the selected events to the clipboard and unselects them.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Copy || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Copies only one event of data (where the cursor is located) to OpenMPT′s “Quick” clipboard; the standard clipboard is not erased. Each column pair has its own Quick clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Paste || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Pastes the data in OpenMPT′s “Quick” clipboard to the location of the cursor. The data last saved in that column’s clipboard will be pasted in the cursor′s corresponding column.&lt;br /&gt;
|-&lt;br /&gt;
| Cut to Pattern Channel Clipboard || || Copies and clears the entire channel the cursor is located in. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Channel Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Cut to Pattern Clipboard || || Copies and clears the entire current pattern. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Copy to Pattern Channel Clipboard || || Copies the entire channel the cursor is located in. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Channel Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Copy to Pattern Clipboard || || Copies the entire current pattern. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Paste from Pattern Channel Clipboard || || Replaces the contents of the channel the cursor is located in with the contents of the pattern channel clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Paste from Pattern Clipboard || || Replaces the contents of the current pattern with the contents of the pattern clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Clipboard Manager || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Toggles the visibility of the pattern clipboard manager.&lt;br /&gt;
|-&lt;br /&gt;
| Cycle to Previous Clipboard || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Makes the previous internal clipboard the current clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Cycle to Next Clipboard || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Makes the next internal clipboard the current clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Clear Row || || Deletes all event data in the same row in the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the selected pattern data, or just the data under the current cursor position if no selection has been made.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field (IT Style) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;.&amp;lt;/kbd&amp;gt; || Same as “Clear field”, but also clears the instrument number if a note event is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Row and Step || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Clear row”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field and Step || || Same as “Clear field”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field and Step (IT Style) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Clear field (IT Style)”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same number of rows as the selection, affecting the same number of channels where the selection extends; the data is moved up to replace the cleared data, and empty rows are added at the end of the affected channels.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (All Channels) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same amount of rows as the selection, on all channels; the data is moved up to replace the cleared data, and empty rows are added at the end of the pattern.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (Global) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same number of rows as the selection, affecting the same number of channels where the selection extends; this also affect all following patterns as no empty rows are inserted.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (All Channels, Global) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same amount of rows as the selection, on all channels; this also affect all following patterns as no empty rows are inserted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in the selected channel down by the amount of selected rows. Event data in the last row of those channels is deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (All Channels) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in all channels down by the amount of selected rows. Event data in the last row of all channels is deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (Global) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in the selected channel down by the amount of selected rows. Event data in the last rows is pushed to the next pattern(s), where the same action is repeated.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (All Channels, Global) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in all channels down by the amount of selected rows. Event data in the last rows is pushed to the next pattern(s), where the same action is repeated.&lt;br /&gt;
|- &lt;br /&gt;
| Mute Current Channel || &amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Toggles the sound output (mute) for the channel(s) covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Solo Current Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Toggles the sound output (mute) for all channels except the channel(s) covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Unmute All Channels || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Unmutes the sound output for all channels.&lt;br /&gt;
|- &lt;br /&gt;
| (Un)mute Channel on Pattern Transition || || Toggles the sound output (mute) for the channel(s) covered by the current selection, but the change takes place when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Unmute All Channels on Pattern Transition || || Unmutes the sound output for all channels when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Solo Channel on Pattern Transition || || Toggles the sound output (mute) for all channels except the one where the cursor is located, but the change takes place when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Channel Record Select || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Toggles the channel(s) covered by the current selection to belong to the primary record group.&lt;br /&gt;
|- &lt;br /&gt;
| Channel Split Record Select || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Toggles the channel(s) covered by the current selection to belong to the [[Manual: Keyboard Split|split record]] group.&lt;br /&gt;
|- &lt;br /&gt;
| Reset Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Stops all note processing, and resets all channel variables to their defaults (volume, panning, etc.) on the selected channel(s).&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Channel || || Changes the pitch of all notes on the selected channel in all patterns by a selectable amount of semitones.&lt;br /&gt;
|- &lt;br /&gt;
| Duplicate Channel || || Adds a new channel to the module and carries over all note data from the channel containing the edit cursor to this new channel.&lt;br /&gt;
|- &lt;br /&gt;
| Add Channel Before Current || || Adds a new empty channel before the channel containing the edit cursor.&lt;br /&gt;
|- &lt;br /&gt;
| Add Channel After Current || || Adds a new empty channel after the channel containing the edit cursor.&lt;br /&gt;
|- &lt;br /&gt;
| Remove Current || || Removes the channel containing the edit cursor. If the channel contains any data on any pattern, a confirmation prompt is shown.&lt;br /&gt;
|- &lt;br /&gt;
| Move Channels to Left || || Moves the channels covered by the current selection (if there is none, just the channel where the edit cursor is located) to the left by one channel.&lt;br /&gt;
|- &lt;br /&gt;
| Move Channels to Right || || Moves the channels covered by the current selection (if there is none, just the channel where the edit cursor is located) to the right by one channel.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Channel Settings || || Opens the [[Manual: Quick Channel Settings|Quick Channel Settings dialog]] for the channel where the cursor is located.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises by one the note number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers by one the note number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises by one the octave number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers by one the octave number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Custom || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || Lowers or raises the selected notes by an arbitrary amount of semitones.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Custom (Quick) || || Applies a previously chosen custom transpose amount. If no amount has been chosen before, the behaviour of this shortcut is identical to Transpose Custom.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry +1 || || Increases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry -1 || || Decreases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry Up (Coarse) || || Increases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one octave (notes), 10 (instruments and volume effect parameters) or 16 (effect parameters).&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry Down (Coarse) || || Decreases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one octave (notes), 10 (instruments and volume effect parameters) or 16 (effect parameters).&lt;br /&gt;
|- &lt;br /&gt;
| Insert New Pattern || || Inserts a new blank pattern after the current pattern, displays it, and moves the cursor to the same position in it. Also functions when cursor focus is in the Order list.&lt;br /&gt;
|- &lt;br /&gt;
| Duplicate Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Inserts a new pattern with the current pattern′s contents.&lt;br /&gt;
|- &lt;br /&gt;
| Split Pattern || || Splits the current pattern at the cursor location.&lt;br /&gt;
|- &lt;br /&gt;
| Amplify Selection || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Opens a dialog to change the note volume commands of the selected volume data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Note || || Transitions smoothly (using all available notes) between notes in the selection, filling in (and replacing if necessary) all rows with new note data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Instrument || || Transitions smoothly (using all available instrument numbers) between instrument numbers in the selection, filling in all rows with new instrument data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Volume || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;J&amp;lt;/kbd&amp;gt; || Transitions smoothly between data amounts in the selection, filling in (and replacing if necessary) all rows with new volume effects. The first and last rows of the selection must contain the same volume effect, or one of the two rows might be empty.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Effect || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;K&amp;lt;/kbd&amp;gt; || Transitions smoothly between data amounts in the selection, filling in (and replacing if necessary) all rows with new effect data. The first and last rows of the selection must contain the same effect, or one of the two rows might be empty. Different effects within the selection are not overwritten.&lt;br /&gt;
|- &lt;br /&gt;
| Apply Current Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Applies the current instrument to all cells in the selection that contain note data.&lt;br /&gt;
|- &lt;br /&gt;
| Apply Current Instrument to Existing Only || || Applies the current instrument to all cells in the selection that contain an instrument numbers. Notes without instrument numbers are not updated.&lt;br /&gt;
|- &lt;br /&gt;
| Grow Selection || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || “Expands” the selection by doubling the number of the selected rows, and evenly spacing out the event data within it. The expansion will replace event data below it in the same channels as the selection.&lt;br /&gt;
|- &lt;br /&gt;
| Shrink Selection || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || “Shrinks” the selection by deleting every other row of the selection. However, if only part of any row is selected, the data corresponding to the deleted selected data is also deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Expand Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || “Expands” the entire pattern by doubling the number of the rows, and evenly spacing out the event data within it.&lt;br /&gt;
|- &lt;br /&gt;
| Shrink Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || “Shrinks” the entire pattern by removing every other row.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Follow Song || &amp;lt;kbd&amp;gt;F11&amp;lt;/kbd&amp;gt; || Toggles the “Follow Song” function.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Loop Pattern || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F11&amp;lt;/kbd&amp;gt; || Toggles the Loop Pattern feature. &lt;br /&gt;
|- &lt;br /&gt;
| Play Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Process and play only the events in the current row where the cursor is located.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Row/Channel/… || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Go To|Go To]] dialog to allow you to jump to a different position in the module.&lt;br /&gt;
|- &lt;br /&gt;
| Pick Up Nearest Instrument Number || || Seeks for the nearest instrument number in the pattern channel the cursor currently is in. If an instrument number is found, it is set as the currently active instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Enable Recording || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Toggles the Event Record feature. When enabled, patterns may be edited.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Metronome || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Toggles the [[Manual: Metronome Settings|Metronome]].&lt;br /&gt;
|- &lt;br /&gt;
| Set Edit Step on Note Entry || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt; || The modifier key(s) that, when pressed with digits 0-9, allows you to change the Edit Step amount without using the mouse or moving the cursor focus out of the editor.&lt;br /&gt;
|- &lt;br /&gt;
| Increase Edit Step || || Increases the Edit Step by one row.&lt;br /&gt;
|- &lt;br /&gt;
| Decrease Edit Step || || Decreases the Edit Step by one row.&lt;br /&gt;
|- &lt;br /&gt;
| Switch to Order List || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Toggles the cursor focus between the pattern editor and the current pattern in the Pattern Order list. There is also a more general version of this shortcut that works for all other song views as well (“Toggle Between Upper / Lower View”).&lt;br /&gt;
|- &lt;br /&gt;
| Toggle PC Event/Instrument Plugin Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;/&amp;lt;/kbd&amp;gt; || Opens the editor for the plugin of the selected Parameter Control Event or instrument number.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Channel’s Plugin Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the editor for the current channel′s assigned plugin.&lt;br /&gt;
|- &lt;br /&gt;
| Show Note Properties || &amp;lt;kbd&amp;gt;▤ Application&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Note Properties|Note Properties]] dialog, where you can assign any event data to the current row of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Show Pattern Properties || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Pattern Properties|Pattern Properties]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Split Keyboard Settings Dialog || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Keyboard Split|Keyboard Split]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| Open Effect Visualizer || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Parameter Editor|Parameter Editor]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| Show Chord Editor || || opens the [[Manual: Chord Editor|Chord Editor]] dialog. &lt;br /&gt;
|-&lt;br /&gt;
| Show Context (Right-Click) Menu || || Opens the edit context menu at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Channel Context (Right-Click) Menu || || Opens the channel context menu at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Channel Plugin Context (Right-Click) Menu || || Opens the plugin context menu of the channel at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Playback Time at Current Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Shows the estimated time within the track at the start of the current row.&lt;br /&gt;
|- &lt;br /&gt;
| Lock Playback to Rows || || If a selection is made, playback is locked to the selected rows. Otherwise, a previous playback lock is removed.&lt;br /&gt;
|-&lt;br /&gt;
| Quantize Settings || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Opens the record quantization settings.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle row playback when navigating ||  || Toggles the state of the &amp;quot;play whole row when navigating&amp;quot; feature. The new state of the feature is announced in the status bar.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Overflow Paste || || When enabled, pasting will continue to the next pattern if the data overflows the current pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Note Off Record (PC Keyboard) || || Toggles the recording of Note Off events from the PC keyboard in the pattern editor (also configurable from the [[Manual: Setup/General#Record note off|General setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Note Off Record (MIDI) || || Toggles the recording of Note Off events from MIDI in the pattern editor (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Apply Octave Transpose to incoming MIDI Notes || || Toggles application of the base octave transposition to notes received via MIDI in the pattern editor (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Continue Song when MIDI Note is received || || Toggles whether pattern playback continues when a note is received via MIDI (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Respond to Play / Continue / Stop Song MIDI messages || || Toggles whether pattern playback starts / stops / continues when the corresponding MIDI commands are received (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI Velocity || || Toggles whether MIDI velocity is recorded (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI Pitch Bend || || Toggles whether MIDI pitch bends are recorded to patterns (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI CCs || || Toggles whether MIDI CC events are recorded to patterns (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Instrument Column Visibility || || Shows or hides the instrument column.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Volume Column Visibility || || Shows or hides the volume column.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Effect Column Visibility || || Shows or hides the effect column.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Note Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the note column (the first column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Base Octave [note] || &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt;, ... || Enters a note in the octave indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +1 [note] || &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt;, ... || Enters a note in the next higher octave indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +2 [note] || &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;X&amp;lt;/kbd&amp;gt;, ... || Enters a note two octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +3 [note] || || Enters a note three octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +4 [note] || || Enters a note four octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Set Octave [0 – 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Sets the selected note’s octave.&lt;br /&gt;
|-&lt;br /&gt;
| Chord Modifier || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; || The modifier key(s) that calls a chord rather than a note. The chords are set and assigned in the [[Manual: Chord Editor|Chord Editor]].&lt;br /&gt;
|-&lt;br /&gt;
| Note Cut || &amp;lt;kbd&amp;gt;`&amp;lt;/kbd&amp;gt; || Enters a Note Cut command (^^). Note: The default shortcut is position-independent and is bound to the key that is usually left of &amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt;. &lt;br /&gt;
|-&lt;br /&gt;
| Note Off || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a Note Off command (==). Note: The default shortcut is position-independent and is bound to the key that is usually left of &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Note Fade || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a Note Fade command (~~). Note: The default shortcut is position-independent and is bound to the key that is usually lef of &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Control || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Enters an absolute [[Manual:_Parameter_Control_Events|Parameter Control event]] (PC). Note: The default shortcut is position-independent and is bound to the key that is usually right of &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Control (Smooth) || &amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Enters a smooth sliding Parameter Control event (PCs). Note: The default shortcut is position-independent and is bound to the key that is usually right of &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Instrument Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the instrument column (the second column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Set Instrument Digit [0 – 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the instrument field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the volume column (the third column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Set Volume Digit [0 - 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the volume parameter field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
| Set Volume Digit [A - F] || || Enters the digit into the rightmost place in the volume parameter field, moving the existing digits to the left. By default, volume column parameters are shown in decimal and these shortcuts are not assigned. You can use them after enabling the [[Manual: Hidden Settings#.5BPattern Editor.5D|Pattern Editor.VolumeColumnInHex]] hidden setting.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume || &amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Enters a note volume (vxx) command into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Panning || &amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Enters a panning command (pxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume Slide Up || &amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Enters volume slide up (cxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume Slide Down || &amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Enters a volume slide down (dxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Fine Volume Slide Up || &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Enters a fine volume slide up (axx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Fine Volume Slide Down || &amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Enters a fine volume slide down (bxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Vibrato Speed || &amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || Enters a vibrato speed command (uxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Vibrato Depth || &amp;lt;kbd&amp;gt;H&amp;lt;/kbd&amp;gt; || Enters a vibrato depth command (hxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - XM Pan Slide Left || &amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enters a pan slide to the left (lxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - XM Pan Slide Right || &amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Enters a pan slide to the right (rxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Tone Portamento || &amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Enters a tone portamento command (gxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Portamento Up || &amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enters a pitch bend up command (fxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Portamento Down || &amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Enters a pitch bend down command (exx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Offset || &amp;lt;kbd&amp;gt;O&amp;lt;/kbd&amp;gt; || Enters a coarse sample offset command (oxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the effect column (the fourth column). Alphanumeric effect letters (0-9, A-Z) are currently not editable — they are automatically assigned to the respective keys on your keyboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Smooth MIDI Macro Slide || &amp;lt;kbd&amp;gt;\&amp;lt;/kbd&amp;gt; || Enters a Smooth MIDI Macro Slide (\xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Combined Note Delay and Note Cut || &amp;lt;kbd&amp;gt;;&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;;&amp;lt;/kbd&amp;gt; || Enters a Delay-Cut (:xy) command into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Extension Command || &amp;lt;kbd&amp;gt;/&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Parameter Extension Command]] (#xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Finetune || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Finetune Command]] (+xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Finetune (Smooth) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Smooth Finetune Command]] (*xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Parameter Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the effect parameter column (the fifth column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Effect Parameter Digit [0 – F] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the effect parameter field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Samples|Samples Tab]] is active.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Trim Sample around Loop Points || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || Trims the sample to the selection, if there is one. Otherwise, if loop points are specified, all sample data outside of these start/end times are deleted.&lt;br /&gt;
|-&lt;br /&gt;
| Trim to Loop End || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || If loop points are specified, all sample data past the loop end is deleted.&lt;br /&gt;
|-&lt;br /&gt;
| Silence Sample Selection || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || All of the sample data within the selected area is set to zero, effectively placing silence in that span.&lt;br /&gt;
|-&lt;br /&gt;
| Normalize Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Applies Normalisation to the sample.&lt;br /&gt;
|-&lt;br /&gt;
| Amplify Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Amplify|Amplify]] dialog, allowing you to alter the volume of the sample and apply Fade In or Fade Out (from / to silence).&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Puts the selected sample data in reverse order, so it is being played backwards.&lt;br /&gt;
|-&lt;br /&gt;
| Delete Sample Selection || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the sample data within the selection, moving the remaining data together.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Sample Drawing || || Turns sample drawing mode on or off.&lt;br /&gt;
|-&lt;br /&gt;
| Add Silence / Create Sample || || Opens the dialog for adding silence, resizing samples and initializing FM instruments.&lt;br /&gt;
|-&lt;br /&gt;
| Configure Sample Grid || || Opens the dialog for setting the sample grid properties.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom In || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Increases the data-to-display ratio, effectively zooming in to show more graphic detail of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom Out || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Decreases the data-to-display ratio, effectively zooming out to show less graphic detail of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Selection || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Zooms so much into the sample data that the current selection covers as much of the sample display as possible. If no selection has been made, auto-zoom is enabled.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Sample Start || &amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Zooms into the sample and ensures that the sample start is visible in the view.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Sample End || &amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Zooms into the sample and ensures that the sample end is visible in the view.&lt;br /&gt;
|-&lt;br /&gt;
| Center Loop Start in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Ensures that the normal sample loop’s start point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Loop End in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Ensures that the normal sample loop’s end point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Sustain Loop Start in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;3&amp;lt;/kbd&amp;gt; || Ensures that the sample sustain loop’s start point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Sustain Loop End in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;4&amp;lt;/kbd&amp;gt; || Ensures that the sample sustain loop’s end point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Convert Ping-Pong Loop to Unidirectional || || Turns a bidi-looped sample loop into a sample with a regular loop by adding a reversed copy of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Convert Ping-Pong Sustain Loop to Unidirectional || || Turns a bidi-looped sustain loop into a sample with a regular loop by adding a reversed copy of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Convert to 8-bit / 16-bit || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;8&amp;lt;/kbd&amp;gt; || Changes the sample’s bit depth between 8-bit and 16-bit.&lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Mix) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Mixes the left and right channels of a stereo sample equally together. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Left Channel) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Only keeps the left channel of a stereo sample. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Right Channel) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Only keeps the right channel of a stereo sample. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Split Sample) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Create two sample slots for this sample, one containing only the left channel and the other containing just the right channel. If the sample is referenced by an instrument, this instrument is duplicated as well for the right channel. &lt;br /&gt;
|-&lt;br /&gt;
| Change Stereo Separation || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Adjusts the stereo separation of the sample by a given amount, either widening or narrowing the stereo width.&lt;br /&gt;
|-&lt;br /&gt;
| Upsample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt;|| Doubles the sample’s middle-C frequency using the interpolation filter last chosen in the [[Manual: Resample|Resample dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| Downsample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt;|| Halves the sample’s middle-C frequency using the interpolation filter last chosen in the [[Manual: Resample|Resample dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| Resample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Changes the sample’s middle-C frequency to a new arbitrary frequency.&lt;br /&gt;
|-&lt;br /&gt;
| Invert Sample Phase || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Inverts the sample’s phase, i.e. it is mirrored along the time axis.&lt;br /&gt;
|-&lt;br /&gt;
| Signed / Unsigned Conversion || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || Re-interprets the sample data as a signed or unsigned sample.&lt;br /&gt;
|-&lt;br /&gt;
| Remove DC Offset || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Removes an unwanted static DC Offset from the waveform, i.e. it is centered around the time axis.&lt;br /&gt;
|-&lt;br /&gt;
| Quick Fade || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Applies a fade-in for the selected sample data if the selection includes the beginning of the sample, or applies a fade-out if the selection includes the end of the sample. If neither the beginning or end of the waveform is part of the selection, the Amplify dialog is shown.&lt;br /&gt;
|-&lt;br /&gt;
| Crossfade Sample Loop || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Opens the Crossfade Loop dialog to crossfade the sample loop’s end with the loop start, to create seamless loop transitions.&lt;br /&gt;
|-&lt;br /&gt;
| Tune Sample to Given Note || || Opens the [[Manual: Sample Tuner|Sample Tuner]] dialog, where the sample can be tuned to a given note.&lt;br /&gt;
|-&lt;br /&gt;
| Load Sample || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens the Open File dialog to allow you to import a sample file into the sample slot. This command also works in the Instrument Tab, importing an instrument to the current Instrument slot.&lt;br /&gt;
|-&lt;br /&gt;
| Load Raw Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens the Open File dialog to allow you to import a sample file into the sample slot. The [[Manual: Raw Sample Import|Raw Sample Import]] is shown, ignoring the sample format even if it is known to OpenMPT.&lt;br /&gt;
|-&lt;br /&gt;
| Save Sample || || Opens the Save File dialog to allow you to save the sample as a Wave Audio or Raw file into a folder of your choice. This command also works in the Instrument Tab, saving the instrument and its accompanying samples as an .iti, .xi or .sfz file.&lt;br /&gt;
|-&lt;br /&gt;
| New Sample || || Creates a blank sample in the next unused slot. This command also works in the Instrument Tab.&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Sample || || Duplicates the current sample slot into the next unused slot.&lt;br /&gt;
|-&lt;br /&gt;
| Initialize OPL Instrument || || Configures the current sample slot to be a synthesized OPL instrument and recalls the default instrument parameters.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises the middle-C frequency by one semitone.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers the middle-C frequency by one semitone.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises (doubles) the middle-C frequency by one octave.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers (halves) the middle-C frequency by one octave.&lt;br /&gt;
|- &lt;br /&gt;
| Increment Finetune || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Raises the middle-C frequency by the configured [[Manual: Setup/Samples#Frequency Finetune Steps|frequency finetune step]], or by one finetune unit in MOD / XM Files.&lt;br /&gt;
|- &lt;br /&gt;
| Decrement Finetune || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Lowers the middle-C frequency by the configured [[Manual: Setup/Samples#Frequency Finetune Steps|frequency finetune step]], or by one finetune unit in MOD / XM Files.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Follow Sample Play Cursor|| &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Cycles through all three [[Manual: Setup/Samples#Automatic Scrolling when_Zoomed-In|sample playback cursor follow modes]]. The new follow mode is announced in the status bar.&lt;br /&gt;
|-&lt;br /&gt;
| Preview / Set Sample Cue [1 - 9] || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt; || Previews the sample at middle-C, starting from the chosen cue point. If the cue point is unset and the sample is currently being previewed, the cue point is set to the current play position.&lt;br /&gt;
|- &lt;br /&gt;
| Slice at Cue Points || || Creates new samples from the current sample by splitting the sample at its cue points.&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instrument Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Instruments#Sample Map|Sample Map]] on the Instrument Tab is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Creates a new instrument slot using &#039;&#039;all&#039;&#039; the same instrument attributes as the currently displayed instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Sample Map || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Sample Map|Sample Map]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Current Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the Samples page of the currently selected sample slot.&lt;br /&gt;
|-&lt;br /&gt;
| Map All Notes to Selected Note || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Sets the currently selected note to all notes.&lt;br /&gt;
|-&lt;br /&gt;
| Map All Notes to Selected Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Sets the currently selected sample slot to all notes.&lt;br /&gt;
|-&lt;br /&gt;
| Reset Note Mapping || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Resets the note assignments, so that each note maps to itself (C-5 → C-5, D-5 → D-5, and so on).&lt;br /&gt;
|-&lt;br /&gt;
| Remove All Samples || || Removes any sample associations from the instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 (Note Map) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Transposes the whole note map up one semitone.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose -1 (Note Map) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Transposes the whole note map down one semitone.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 Octave (Note Map) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Transposes the whole note map up one octave.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose -1 Octave (Note Map) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Transposes the whole note map down one octave.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Envelope Editor ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Instruments#Envelope Editor|envelope editor]] on the Instrument Tab is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Load Envelope || || Replaces the currently active envelope with an envelope from disk.&lt;br /&gt;
|-&lt;br /&gt;
| Save Envelope || || Stores the currently active envelope to disk.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom In || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Increases the detail of the Envelope Window, showing a smaller excerpt of the envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom Out || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Decreases the detail of the Envelope Window, showing a bigger excerpt of the envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Scale Envelope Points || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Scale Envelope Points|Scale Envelope Points]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Volume Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Selects the Volume Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Panning Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Selects the Panning Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pitch / Filter Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Selects the Pitch / Filter Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Volume Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Enables or disables the Volume Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Panning Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Enables or disables the Panning Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Pitch Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Enables or disables the Pitch Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Filter Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enables or disables the Filter Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Loop || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Loop.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Loop Start || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope loop start.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Loop End || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope loop end.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Sustain Loop || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Sustain Loop.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Sustain Start || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope sustain start.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Sustain End || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope sustain end.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Carry || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Carry.&lt;br /&gt;
|-&lt;br /&gt;
| Select Previous Envelope Point || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the selection to the previous envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Select Next Envelope Point || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the selection to the following envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Left || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the selected envelope point left one tick.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Left (Coarse) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the selected envelope point left one beat.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Right || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the selected envelope point right one tick.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Right (Coarse) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the selected envelope point right one beat.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Up || &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the selected envelope point up one unit.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Up (Coarse) || &amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the selected envelope point up 8 units.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Down || &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the selected envelope point down one unit.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Down (Coarse) || &amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the selected envelope point down 8 units.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Envelope Point || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts an envelope point after the selected point.&lt;br /&gt;
|-&lt;br /&gt;
| Remove Envelope Point || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the selected envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Loop Start || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Envelope Loop start point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Loop End || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Envelope Loop end point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Sustain Loop Start || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Sustain Loop start point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Sustain Loop End || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Sustain Loop end point.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Release Node || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Toggles the selected envelope point as the start point for the Release Envelope.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comments [Bottom] ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the lower half of the [[Manual: Comments|Comments tab]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Between Lists || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Toggles between the sample and instrument list.&lt;br /&gt;
|-&lt;br /&gt;
| Open Item in Editor || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Switches to the sample or instrument editor to edit the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Rename Item || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Brings up an edit box for renaming the selected sample or instrument.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Plugin Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when a [[Manual: Plugin Window|plugin window]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Previous Plugin Preset || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Selects the previous plugin preset / patch.&lt;br /&gt;
|-&lt;br /&gt;
| Next Plugin Preset || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Selects the following plugin preset / patch.&lt;br /&gt;
|-&lt;br /&gt;
| Plugin Preset Backward Jump || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Jumps back 10 entries in the preset list.&lt;br /&gt;
|-&lt;br /&gt;
| Plugin Preset Forward Jump || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Jumps forward 10 entries in the preset list.&lt;br /&gt;
|-&lt;br /&gt;
| Randomize Plugin Parameters || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Give random values to all parameters of the current plugin.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Parameter Recording || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Toggles the parameter recording function, which allows you to record parameter changes from plugin window into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Record MIDI Out to Pattern Editor || || Toggles the MIDI Out recording function, which allows you to route the plugin’s MIDI output to the pattern, sample or instrument editor.&lt;br /&gt;
|-&lt;br /&gt;
| Pass Key Presses to Plugin || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;K&amp;lt;/kbd&amp;gt; || Toggles the Pass Keys function, which sends all keyboard input to the currently open plugin window (e.g. for entering a serial number in the plugin GUI).&lt;br /&gt;
|-&lt;br /&gt;
| Bypass Plugin || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Toggles plugin’s bypass property to control whether audio is routed through the plugin or not.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tree View ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual:_Tree_View|Tree View]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Switch between Upper / Lower Tree View || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Switches focus between the upper and lower panel of the Tree View.&lt;br /&gt;
|-&lt;br /&gt;
| Open / View Item || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens / views / previews the selected item (same action as double-click).&lt;br /&gt;
|-&lt;br /&gt;
| Play Item || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Previews the selected item if it is a sample, instrument or file.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Item || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts an empty item (e.g. sample or instrument slot) after the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Item || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Duplicates the currently selected item (e.g. sample or instrument slot).&lt;br /&gt;
|-&lt;br /&gt;
| Delete Item || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Delete Item Permanently || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Delete Item”, but if the selected item is a file, it will not be moved to the recycling bin.&lt;br /&gt;
|-&lt;br /&gt;
| Rename Item / Send To Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || For items belonging to an open module (e.g. patterns, samples, instruments, ...): The selected item is renamed. For items in the instrument library: The item is sent to the last active sample or instrument editor and replaces the currently selected sample or instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Send To Editor (Insert New) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || For items in the instrument library: The item is sent to the last active sample or instrument editor and is loaded into a new sample or instrument slot.&lt;br /&gt;
|-&lt;br /&gt;
| Go to Parent Folder || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Changes the instrument library folder to the current location′s parent folder.&lt;br /&gt;
|-&lt;br /&gt;
| Find in Instrument Library || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt;|| Opens the search filter to quickly locate files and folders in the instrument library.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Name || || Items in the instrument library are sorted by their file name.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Date || || Items in the instrument library are sorted by their last file modification date.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Size || || Items in the instrument library are sorted by their file size.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Keyboard Actions]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Menus&amp;diff=4945</id>
		<title>Manual: Menus</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Menus&amp;diff=4945"/>
		<updated>2025-06-15T21:38:47Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In all menu screenshots, the keyboard shortcuts are shown but may be different from your own. You can configure these in the [[Manual:_Setup/Keyboard|Keyboard setup]].&lt;br /&gt;
&lt;br /&gt;
[[Image: File Menu.png|thumb|250px|File Menu]]&lt;br /&gt;
&lt;br /&gt;
=== File ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;New&#039;&#039;&#039;: Creates a new song. You can select the module type from the sub menu. When using the shortcut for a new module, OpenMPT uses the default track settings as specified in the [[Manual: Setup/General#Defaults|general settings]].&lt;br /&gt;
* &#039;&#039;&#039;Open&#039;&#039;&#039;: Loads one or more songs you want to open and adds them to the Recent Files list. OpenMPT can open a variety of file formats, listed in the [[Manual: Module formats|Module formats]] section.&lt;br /&gt;
* &#039;&#039;&#039;Open Template&#039;&#039;&#039;: Provides a list of modules that have previously been saved as templates.&lt;br /&gt;
* &#039;&#039;&#039;Append Module&#039;&#039;&#039;: [[Manual: Module Merging|Appends]] (merges) the song data (samples, instruments, plugins, patterns and sequences) of one or more existing songs to the currently active song.&lt;br /&gt;
* &#039;&#039;&#039;Close&#039;&#039;&#039;: Closes the currently active song. If changes were made (shown by an asterisk in OpenMPT’s title bar), you will be prompted if you wish to save the changes.&lt;br /&gt;
* &#039;&#039;&#039;Close All&#039;&#039;&#039;: Closes all open songs. You will be prompted to save any modified songs.&lt;br /&gt;
* &#039;&#039;&#039;Save&#039;&#039;&#039;: Saves the file in its current directory with its current name. If the file is new and was never saved, this command is the same as the “Save As” menu item.&lt;br /&gt;
* &#039;&#039;&#039;Save As&#039;&#039;&#039;: Opens a dialog where you can specify a location you wish to store the file to.&lt;br /&gt;
* &#039;&#039;&#039;Save Copy&#039;&#039;&#039;: Opens a dialog where you can save a copy of the current module to. The next Save action will save the file at its original location again.&lt;br /&gt;
* &#039;&#039;&#039;Save as Template&#039;&#039;&#039;: Saves the currently open module as a template module.&lt;br /&gt;
* &#039;&#039;&#039;Compatibility Export&#039;&#039;&#039;: Exports the track to a “pure” version of the track format. See the section on [[Manual: Saving and exporting#Compatibility Export|Compatibility Export]] for more details. The track itself is not modified.&lt;br /&gt;
* &#039;&#039;&#039;Stream Export&#039;&#039;&#039;: Exports the track to a lossless (WAV, FLAC, AU, RAW) or lossy (Opus, Ogg Vorbis, MP3) audio file.&lt;br /&gt;
* &#039;&#039;&#039;Export as MIDI&#039;&#039;&#039;: Exports the track to a .mid sequencer file.&lt;br /&gt;
* &#039;&#039;&#039;Import MIDI Library&#039;&#039;&#039;: Shows the Open File dialog so you can load a new default MIDI library, which will overwrite your current MIDI library in the [[Manual: Tree View#MIDI Library|Tree View]].&lt;br /&gt;
* &#039;&#039;&#039;Add Sound Bank&#039;&#039;&#039;: Shows the Open File dialog so you can append another [[Manual: Tree View#Sound Banks|sound bank]] folder into the Tree View.&lt;br /&gt;
* &#039;&#039;&#039;Recent Files List&#039;&#039;&#039;: Lists the last 10 files that were opened in OpenMPT. The shortcut keys are the digits &amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; to &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Exit&#039;&#039;&#039;: Executes the Close command on all files (see above), saves all settings and quits ModPlug Tracker.&lt;br /&gt;
&lt;br /&gt;
[[Image: Player Menu.png|thumb|250px|Player Menu]]&lt;br /&gt;
&lt;br /&gt;
=== Player ===&lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;Pause / Resume&#039;&#039;&#039;: If playing, the active song is paused. All audio processing is stopped; when resuming playback from Pause, playback is continued from the position where it was paused.&lt;br /&gt;
* &#039;&#039;&#039;Play from Start&#039;&#039;&#039;: Resets the playback position to the beginning of the first pattern in the Order List, and begins playback.&lt;br /&gt;
* &#039;&#039;&#039;Stop&#039;&#039;&#039;: Stops all audio processing and resets the playback position.&lt;br /&gt;
* &#039;&#039;&#039;Pause&#039;&#039;&#039;: Pauses the song by stopping audio processing, but &#039;&#039;not&#039;&#039; resetting the playback position.&lt;br /&gt;
* &#039;&#039;&#039;MIDI Record&#039;&#039;&#039;: Allows MIDI messages to be received from the device specified in the [[Manual: Setup/MIDI|MIDI setup]]. This device can then be used to enter notes and other MIDI data in the pattern, sample and instrument editors. See the section on [[Manual: Setup/MIDI|MIDI Setup]], [[Manual: MIDI Mapping|MIDI Mapping]], or [[Manual: MIDI Reference#OpenMPT Setup|MIDI in OpenMPT]] for more details.&lt;br /&gt;
* &#039;&#039;&#039;Estimate Song Length&#039;&#039;&#039;: Displays an estimate of the song length. When working with multiple sequences, only the current sequence is considered in the calculation.&lt;br /&gt;
* &#039;&#039;&#039;Approximate Real BPM&#039;&#039;&#039;: Displays an estimate of the actual tempo in terms of Beats per Minute (BPM), based on the current tempo, ticks per row (speed) and rows per beat settings according to the chosen [[Manual: Song Properties#Tempo Mode|tempo mode]].&lt;br /&gt;
&lt;br /&gt;
[[Image: Edit Menu.png|thumb|250px|Edit Menu]]&lt;br /&gt;
&lt;br /&gt;
=== Edit ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Undo&#039;&#039;&#039;: Withdraws the last edit action taken. There is a limit to the number of Undo steps — 100,000 for Pattern edits and 100,000 for edits of &#039;&#039;&#039;each&#039;&#039;&#039; sample or instrument. For samples, you can also limit the amount of memory used by the Undo buffer in the [[Manual: Setup/Samples|Sample Editor settings]]. &lt;br /&gt;
* &#039;&#039;&#039;Redo&#039;&#039;&#039;: Reapplies the last undone action.&lt;br /&gt;
* &#039;&#039;&#039;Cut&#039;&#039;&#039;: Copies the selection to the clipboard and then erases all data from the selected area.&lt;br /&gt;
* &#039;&#039;&#039;Copy&#039;&#039;&#039;: Copies the selection to the clipboard.&lt;br /&gt;
* &#039;&#039;&#039;Paste&#039;&#039;&#039;: Transfers a copy of the clipboard contents where the cursor is located, overwriting any data within the bounds of the pasted data. For pattern data, the clipboard content will be pasted in the same cell as the cursor location, even if the cursor is not in the first column of the event. For sample data, pasting replaces the complete samples. To paste &#039;&#039;into&#039;&#039; an existing sample, use the &#039;&#039;&#039;Paste Special&#039;&#039;&#039; menu.&lt;br /&gt;
* &#039;&#039;&#039;Paste Special&#039;&#039;&#039;: This sub menu contains alternate forms of pasting data into patterns or samples, as described in the [[Manual: Patterns#Paste Modes|Pattern Editor manual]] and [[Manual: Samples#Sample Display Context Menu|Sample Editor manual]] respectively.&lt;br /&gt;
* &#039;&#039;&#039;Select All&#039;&#039;&#039;: Selects all data in the location of the input focus (the Pattern Editor or the Sample Display). The cursor remains in the same location. &lt;br /&gt;
* &#039;&#039;&#039;Cleanup&#039;&#039;&#039;: Opens the [[Manual: Cleanup Manager|Cleanup Manager dialog]], which allows you to remove, reset, or re-arrange track elements such as patterns and samples.&lt;br /&gt;
* &#039;&#039;&#039;Automatic Sample Trimmer&#039;&#039;&#039;: Trims samples to the maximum length that is played in the module. Muted and unused samples are not trimmed.&lt;br /&gt;
* &#039;&#039;&#039;Find&#039;&#039;&#039;: Opens the Find &amp;amp; Replace dialog, where you can search for data and replace it if necessary.&lt;br /&gt;
* &#039;&#039;&#039;Find Next&#039;&#039;&#039;: Finds the next occurrence of data according to your previous filters in the Find dialog.&lt;br /&gt;
* &#039;&#039;&#039;Go To&#039;&#039;&#039;: Opens the [[Manual: Go To|Go To]] dialog where you can choose to navigate to another pattern location.&lt;br /&gt;
* &#039;&#039;&#039;Split Keyboard Settings&#039;&#039;&#039;: Opens the [[Manual: Keyboard Split|Keyboard Split]] dialog.&lt;br /&gt;
&lt;br /&gt;
[[Image: View Menu.png|thumb|250px|View Menu]]&lt;br /&gt;
&lt;br /&gt;
=== View ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;General Tab&#039;&#039;&#039;: Displays the [[Manual: General|General Page]] of the currently active module.&lt;br /&gt;
* &#039;&#039;&#039;Patterns Tab&#039;&#039;&#039;: Displays the [[Manual: Patterns|Patterns]] Page.&lt;br /&gt;
* &#039;&#039;&#039;Samples Tab&#039;&#039;&#039;: Displays the [[Manual: Samples|Samples]] Page.&lt;br /&gt;
* &#039;&#039;&#039;Instruments Tab&#039;&#039;&#039;: Displays the [[Manual: Instruments|Instruments]] Page.&lt;br /&gt;
* &#039;&#039;&#039;Comments Tab&#039;&#039;&#039;: Displays the [[Manual: Comments|Comments]] Page.&lt;br /&gt;
* &#039;&#039;&#039;Toolbars&#039;&#039;&#039;:&lt;br /&gt;
** &#039;&#039;&#039;Show Main Toolbar&#039;&#039;&#039;: Toggles the display of the Main Toolbar, remembering its position.&lt;br /&gt;
** &#039;&#039;&#039;Show Tree View&#039;&#039;&#039;: Toggles the display of the [[Manual: Tree View|Folder Tree View]].&lt;br /&gt;
** &#039;&#039;&#039;Tree View on Left&#039;&#039;&#039;: Toggling this option moves the [[Manual: Tree View|Folder Tree View]] to the left or right side of the window.&lt;br /&gt;
** &#039;&#039;&#039;Main Toolbar items&#039;&#039;&#039;:&lt;br /&gt;
*** &#039;&#039;&#039;File Icons&#039;&#039;&#039;: Toggles the display of the New / Open / Save File icons in the main toolbar.&lt;br /&gt;
*** &#039;&#039;&#039;Edit Icons&#039;&#039;&#039;: Toggles the display of the Cut / Copy / Paste icons in the main toolbar.&lt;br /&gt;
*** &#039;&#039;&#039;Play / Record Icons&#039;&#039;&#039;: Toggles the display of the MIDI Record / Stop / Play Pause / Play From Start icons in the main toolbar.&lt;br /&gt;
*** &#039;&#039;&#039;Base Octave&#039;&#039;&#039;: Toggles the display of the Base Octave readout in the main toolbar.&lt;br /&gt;
*** &#039;&#039;&#039;Tempo&#039;&#039;&#039;: Toggles the display of the Tempo readout in the main toolbar.&lt;br /&gt;
*** &#039;&#039;&#039;Ticks / Row&#039;&#039;&#039;: Toggles the display of the Ticks / Row (Speed) readout in the main toolbar.&lt;br /&gt;
*** &#039;&#039;&#039;Rows Per Beat&#039;&#039;&#039;: Toggles the display of the Rows Per Beat readout in the main toolbar.&lt;br /&gt;
*** &#039;&#039;&#039;Global Volume&#039;&#039;&#039;: Toggles the display of the Global Volume readout in the main toolbar.&lt;br /&gt;
*** &#039;&#039;&#039;Misc Icons&#039;&#039;&#039;: Toggles the display of the Setup / Panic / Update Available icons in the main toolbar.&lt;br /&gt;
*** &#039;&#039;&#039;VU Meters&#039;&#039;&#039;: Toggles the display of the VU Meters in the main toolbar.&lt;br /&gt;
* &#039;&#039;&#039;Setup&#039;&#039;&#039;: Shows the [[Manual: Setup|Setup Options]] dialog at the last open page.&lt;br /&gt;
* &#039;&#039;&#039;Plugin Manager&#039;&#039;&#039;: Shows the [[Manual: Plugin Manager|Plugin Manager]] dialog.&lt;br /&gt;
* &#039;&#039;&#039;Channel Manager&#039;&#039;&#039;: Shows the [[Manual: Channel Manager|Channel Manager]] dialog.&lt;br /&gt;
* &#039;&#039;&#039;Clipboard Manager&#039;&#039;&#039;: Shows the [[Manual: Clipboard Manager|Clipboard Manager]] dialog.&lt;br /&gt;
* &#039;&#039;&#039;Song Properties&#039;&#039;&#039;: Shows the [[Manual: Song Properties|Song Properties]] dialog.&lt;br /&gt;
* &#039;&#039;&#039;Zxx Macro Configuration&#039;&#039;&#039;: Shows the [[Manual: Macro Configuration|MIDI Macro Configuration]] dialog.&lt;br /&gt;
* &#039;&#039;&#039;MIDI Mapping Options&#039;&#039;&#039;: Shows the [[Manual: MIDI Mapping|MIDI Mapping]] dialog.&lt;br /&gt;
* &#039;&#039;&#039;Edit History&#039;&#039;&#039;: Shows the [[Manual: Edit History|Edit History]] dialog.&lt;br /&gt;
* &#039;&#039;&#039;Find OpenMPT Hacks&#039;&#039;&#039;: Lists the non-standard (non-compatible) modifications in the current track introduced by ModPlug Tracker. This helps to show what needs to be changed so that other trackers or players can play the file correctly.&lt;br /&gt;
&lt;br /&gt;
When changing the visibility of main toolbar items, at least one icon group must remain visible. Once you try to hide the last visible icon group, trying to do so will have no effect.&lt;br /&gt;
&lt;br /&gt;
[[Image: Window Menu.png|thumb|250px|Window Menu]]&lt;br /&gt;
&lt;br /&gt;
=== Window ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;New Window&#039;&#039;&#039;: Opens an alternate window of the current track using the same page display.&lt;br /&gt;
* &#039;&#039;&#039;Cascade Windows&#039;&#039;&#039;: Resizes and “cascades” all open windows (by superimposing one over the other diagonally) so that any window can be brought to the front with a mouseclick on that window.&lt;br /&gt;
* &#039;&#039;&#039;Tile Windows Horizontal&#039;&#039;&#039;: Resizes all open windows so that horizontally they equal the width of OpenMPT’s window, and vertically they share an equal amount of space between the Menu Bar and the Status Bar.&lt;br /&gt;
* &#039;&#039;&#039;Tile Windows Vertical&#039;&#039;&#039;: Resizes all open windows so that vertically they equal the height of OpenMPT’s window, and horizontally they share an equal amount of space between the Folder Tree and the right side of OpenMPT’s window.&lt;br /&gt;
* &#039;&#039;&#039;Arrange Icons&#039;&#039;&#039;: All minimized child windows are moved back to the lower-left corner of the main window, where they are located by default.&lt;br /&gt;
* &#039;&#039;&#039;Split&#039;&#039;&#039;: Allows a page to be split horizontally. Selecting this menu item centers the mouse cursor in the screen and “grabs” the divider so you can reposition it.&lt;br /&gt;
* &#039;&#039;&#039;Current Open Files List&#039;&#039;&#039;: Shows all open tracks in the order they were loaded. The one with the check mark is the “current” track to which all the relevant menu items will be applied.&lt;br /&gt;
&lt;br /&gt;
[[Image: Help Menu.png|thumb|250px|Help Menu]]&lt;br /&gt;
&lt;br /&gt;
=== Help ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Help&#039;&#039;&#039;: Opens the help file.&lt;br /&gt;
* &#039;&#039;&#039;Report a Bug&#039;&#039;&#039;: Opens the OpenMPT Issue Tracker in your default Internet browser, where you can report a bug (obviously this only works if your computer is online).&lt;br /&gt;
* &#039;&#039;&#039;Example Modules&#039;&#039;&#039;: Shows a list of example tunes that are shipped with OpenMPT.&lt;br /&gt;
* &#039;&#039;&#039;Show Settings Folder&#039;&#039;&#039;: Opens the folder containing all the configuration files.&lt;br /&gt;
* &#039;&#039;&#039;OpenMPT Website&#039;&#039;&#039;: Opens the OpenMPT front page (openmpt.org) in your default Internet browser.&lt;br /&gt;
* &#039;&#039;&#039;Web Resources&#039;&#039;&#039;: Opens a list of interesting web resources related to OpenMPT in your default Internet browser.&lt;br /&gt;
* &#039;&#039;&#039;Check for Updates&#039;&#039;&#039;: Manually runs the [[Manual: Setup/Update|online update check]].&lt;br /&gt;
* &#039;&#039;&#039;About OpenMPT&#039;&#039;&#039;: Shows OpenMPT’s About window that displays the credits for OpenMPT, links to its website and various system information helpful for debugging.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Menus]]&lt;br /&gt;
[[de:Handbuch: Hauptfenster/Menuepunkte]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=File:View_Menu.png&amp;diff=4944</id>
		<title>File:View Menu.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=File:View_Menu.png&amp;diff=4944"/>
		<updated>2025-06-15T21:35:50Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: Saga Musix uploaded a new version of File:View Menu.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Compatible_Playback&amp;diff=4942</id>
		<title>Manual: Compatible Playback</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Compatible_Playback&amp;diff=4942"/>
		<updated>2025-06-12T19:42:28Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* IT compatibility settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Why a compatible playback mode? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Compatible Mode.png|thumb|300px|More compatible playback of modules can be enabled in the [[Manual: Song Properties#Miscellaneous Flags|Song Properties]].&amp;lt;br&amp;gt;When you see this warning icon, it might be a good idea to review the compatibility settings.]]&lt;br /&gt;
&lt;br /&gt;
Playback accuracy has always been a problem with tracked music. While the tracker interface with its effect letters and such is simple and fast to use, the internal algorithms used to process effects are not always as simple as they might appear on-screen. For example, due to a little typo, an effect might behave erratically under certain conditions in its original tracker application.&lt;br /&gt;
&lt;br /&gt;
When another tracker (like OpenMPT) decides to support a certain third-party format (for example the XM format of Fasttracker 2), it should faithfully reproduce the meaning of every effect letter and all other behaviour. Sadly, this has not always been the case with (Open)MPT. In the past, users of other trackers have often complained that OpenMPT does not behave like other trackers and thus replays their music (that has been written in another tracker like Fasttracker 2) incorrectly.&lt;br /&gt;
&lt;br /&gt;
Often, making OpenMPT “emulate” those original behaviours, or indeed “quirks”, is the matter of changing a single line of code. However, the same feature that has previously been playing wrong in (Open)MPT may of course, after having fixed it, sound “wrong” in any modules composed with (Open)MPT that made use of this feature. Thus, the programmers of OpenMPT found it necessary to add a “Compatible Playback” option (to be found in the [[Manual: Song Properties#Miscellaneous Flags|Song Properties]]) to switch between OpenMPT’s and other tracker’s behaviour. That way, people do not have to fear that their modules made with older versions of OpenMPT suddenly sound wrong after upgrading, and people who want to listen to their tunes made with another application can also happily listen to them without problems.&lt;br /&gt;
&lt;br /&gt;
== What should I do when composing a track in OpenMPT? ==&lt;br /&gt;
&lt;br /&gt;
That depends on your intentions and goals. When using OpenMPT’s own MPTM format, you do not need to care about compatibility settings. You do not need to enable any compatible playback settings — it does not hurt to do so, but some commands behave in more logical or consistent way when some compatibility settings are disabled.&lt;br /&gt;
&lt;br /&gt;
However, if you are composing IT and XM modules, you most likely want to spread them on the internet and share them with friends. In that case, it is important to set all compatibility settings to their defaults, because many people are using other players (such as XMPlay, Schism Tracker, MilkyTracker or indeed Impulse Tracker and Fasttracker 2), and all of those try to “emulate” Impulse Tracker and Fasttracker 2 as precisely as possible - they do not want to emulate OpenMPT’s own “quirks”. Thus, if you compose a track in those formats, you are absolutely recommended to enable the most compatible playback by clicking the &#039;&#039;&#039;Set Defaults&#039;&#039;&#039; button in the compatibility section of the [[Manual: Song Properties#Miscellaneous Flags|Song Properties]] dialog - you do not want to get a bad review on your music because it sounds “totally horrible” in XMPlay, just because you forgot to turn on compatible playback, do you?&lt;br /&gt;
&lt;br /&gt;
You should take Impulse Tracker (for IT files) or Fasttracker 2 (for XM files) as a reference when composing your tracks, or at least XMPlay (a very accurate player for both file formats) if you cannot get the original trackers to run. Upcoming OpenMPT updates will bring further improvements to the compatible playback mode, so if something in OpenMPT sounds different from Impulse Tracker / Fasttracker 2, do not hesitate to report it on our [https://bugs.openmpt.org/ Issue Tracker] and it will most likely sound correct in the next version of OpenMPT - when enabling the respective compatibility setting, that is.&lt;br /&gt;
&lt;br /&gt;
It is advised to use [[Manual: Saving and exporting#Compatibility Export|Compatibility Export]] together with this feature.&lt;br /&gt;
&lt;br /&gt;
== Upgrading from an old OpenMPT version ==&lt;br /&gt;
&lt;br /&gt;
When loading a module made with an earlier version of OpenMPT, only the compatibility settings that apply to this old version are enabled; newer settings will not be enabled automatically. This way, playback will be as close as possible to the version the module was last saved with.&lt;br /&gt;
&lt;br /&gt;
If you resume your work on a module made with an earlier version, it is recommended to switch to the default compatibility settings in the Song Properties dialog — as long as your module still sounds identical afterwards, of course. If it does not, you may want to go through all compatibility settings and review what changes they introduce, and if applicable modify the module so that it will also sound correct after enabling these compatibility settings.&lt;br /&gt;
&lt;br /&gt;
== Playback Compatibility Settings ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Playback Compatibility Settings.png|thumb|300px|Playback Compatibility Settings dialog]]&lt;br /&gt;
&lt;br /&gt;
The Playback Compatibility Settings dialog allows you to edit the detailed compatibility settings. Below is a list of all possible compatibility settings that can be toggled in this dialog.&lt;br /&gt;
&lt;br /&gt;
=== Common compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
The following compatibility settings apply to all formats. Some of them may only be visible in legacy modules saved with old OpenMPT versions.&lt;br /&gt;
&lt;br /&gt;
Greyed out checkboxes indicate the emulation of &#039;&#039;really&#039;&#039; old OpenMPT bugs. After disabling those checkboxes, they will remain unavailable.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OpenMPT 1.17 compatible random variation behaviour for instruments&#039;&#039;&#039;&amp;lt;br&amp;gt; Random volume and panning variation behaves like in early OpenMPT versions.&lt;br /&gt;
* &#039;&#039;&#039;Plugin volume MIDI CC bug emulation&#039;&#039;&#039;&amp;lt;br&amp;gt; Swaps the controller and parameter byte of the MIDI channel volume CC when choosing “MIDI volume” as an instrument’s volume command handling, effectively breaking the MIDI command.&lt;br /&gt;
* &#039;&#039;&#039;Old Pitch Wheel behaviour for instrument plugins&#039;&#039;&#039;&amp;lt;br&amp;gt; Enables the counterintuitive MIDI pitch wheel behaviour found in earlier OpenMPT versions where sample and plugin portamento did not match.&lt;br /&gt;
* &#039;&#039;&#039;Execute regular portamento slides at speed 1&#039;&#039;&#039;&amp;lt;br&amp;gt; Only fine and extra-fine portamentos are supposed to do something at a speed of one tick per row. This setting is automatically enabled for modules made with very old versions of OpenMPT.&lt;br /&gt;
* &#039;&#039;&#039;Compute note frequency in Hertz rather than periods&#039;&#039;&#039;&amp;lt;br&amp;gt; For best accuracy of high-pitched notes, all note slides etc. are computed in Hertz rather than tracker periods.&lt;br /&gt;
* &#039;&#039;&#039;Clamp tempo to 32-255 range&#039;&#039;&#039;&amp;lt;br&amp;gt; Tempo slides cannot exceed a tempo of 255.&lt;br /&gt;
* &#039;&#039;&#039;Global volume slide memory is per-channel&#039;&#039;&#039;&amp;lt;br&amp;gt; If disabled, there is only one effect memory for global volume slide commands.&lt;br /&gt;
* &#039;&#039;&#039;Panning commands override surround and random pan variation&#039;&#039;&#039;&amp;lt;br&amp;gt; If disabled, surround and random pan variation effects are not interrupted by panning commands.&lt;br /&gt;
* &#039;&#039;&#039;Note delays next to a row delay are repeated on every row repetition&#039;&#039;&#039;&amp;lt;br&amp;gt; Delayed notes that are on the same row as a row delay are retriggered on every row repetition.&lt;br /&gt;
* &#039;&#039;&#039;Old volume envelope release node scaling behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; This option is only available when importing modules saved with OpenMPT 1.27 or earlier that make use of the volume envelope release node. With this setting enabled, the volume envelope after the release node is added to the volume at release time, while the new behaviour causes this part of the envelope to be relative to the volume at release time.&lt;br /&gt;
* &#039;&#039;&#039;Reset VST volume on note-off&#039;&#039;&#039;&amp;lt;br&amp;gt; Previous versions of OpenMPT sent bogus volume commands or dry / wet ratio settings on plugin note-offs. This setting retains this behaviour.&lt;br /&gt;
* &#039;&#039;&#039;Send OPL key-off when triggering notes&#039;&#039;&#039;&amp;lt;br&amp;gt; Note-off events are sent for OPL instruments also when two notes are played on the same channel without interruption.&lt;br /&gt;
* &#039;&#039;&#039;Use old imprecise ping-pong loop end calculation&#039;&#039;&#039;&amp;lt;br&amp;gt; In previous versions of OpenMPT, the loop length could be noticeably off for very short ping-pong loops and thus cause those samples to be slightly detuned. This setting retains this behaviour.&lt;br /&gt;
* &#039;&#039;&#039;Assume initial plugin MIDI program and bank number is 1&#039;&#039;&#039;&amp;lt;br&amp;gt; In previous versions of OpenMPT, if an instrument was set to use MIDI program 1 or bank 1, this program or bank change was not set to plugins (unless another instrument previously explicitly selected a different program or bank for this plugin). Importing such a legacy module will enable this compatibility setting to restore the old behaviour, otherwise it is not available.&lt;br /&gt;
* &#039;&#039;&#039;MIDI notes can be sent to channel plugins&#039;&#039;&#039;&amp;lt;br&amp;gt; MIDI notes can be sent to channel plugins in addition to instrument plugins. Only available when importing modules made with OpenMPT 1.25 or older.&lt;br /&gt;
* &#039;&#039;&#039;Report inaccurate PPQ position to VST plugins (like OpenMPT 1.31 and older)&#039;&#039;&#039;&amp;lt;br&amp;gt; When importing a module made with OpenMPT 1.31 or older that contains any VST plugins, this setting is enabled automatically to report the song PPQ position to plugins the same incomplete, broken way as those old versions did.&lt;br /&gt;
* &#039;&#039;&#039;Plugin notes with New Note Action set to Continue are affected by note-offs (like OpenMPT 1.31 and older)&#039;&#039;&#039;&amp;lt;br&amp;gt; When importing a module made with OpenMPT 1.31 or older that contains any VST plugins, this setting is enabled automatically to use the same buggy New Note Action behaviour for plugins as found in those old versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MPTM compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
The following settings address behaviour changes that were made to make the MPTM format more intuitive:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Full control over OPL notes after note-off&#039;&#039;&#039;&amp;lt;br&amp;gt; Allows OPL notes to be controlled (volume, panning, pitch, etc.) after the note has been released.&lt;br /&gt;
* &#039;&#039;&#039;New Note Action / Duplicate Note Action set to Note Off and Note Fade affect OPL notes like samples&#039;&#039;&#039;&amp;lt;br&amp;gt; Previously, New Note Action / Duplicate Note Action types Note Off and Note Fade would both simply release OPL notes. With this setting enabled, Note Fade fades the note the same way as with samples, and with Note Off the post-sustain part of the volume envelope is applied as well.&lt;br /&gt;
* &#039;&#039;&#039;Do not reset OPL channel status at end of envelopes&#039;&#039;&#039;&amp;lt;br&amp;gt; This setting is only available in files made with OpenMPT 1.28. It re-enables the old end-of-envelope behaviour that was inconsistent with sample channels.&lt;br /&gt;
&lt;br /&gt;
In addition, all the following compatibility settings for the IT format also apply to MPTM files:&lt;br /&gt;
&lt;br /&gt;
=== IT compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
Impulse Tracker’s playback routine is relatively bug-free and logical.&lt;br /&gt;
OpenMPT’s IT playback is already relatively good even with compatible mode being disabled, however some small (and not-so-small) details are not handled correctly. Sometimes they can cause quite drastic differences in playback.&lt;br /&gt;
&lt;br /&gt;
The following compatibility settings are only available in IT and MPTM modules.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Retrigger instrument envelopes on instrument change&#039;&#039;&#039;&amp;lt;br&amp;gt; An instrument number with no note next to it plays the new instrument and plays its envelopes from start.&lt;br /&gt;
* &#039;&#039;&#039;Volume column portamento never does fine portamento&#039;&#039;&#039;&amp;lt;br&amp;gt; A fine portamento followed by e00 and f00 is not continued as a fine portamento. Instead, its parameter is treated as if it was a normal portamento.&lt;br /&gt;
* &#039;&#039;&#039;IT arpeggio algorithm&#039;&#039;&#039;&amp;lt;br&amp;gt; Handles arpeggio slightly differently than OpenMPT does by default.&lt;br /&gt;
* &#039;&#039;&#039;Out-of-range delay commands queue new instrument&#039;&#039;&#039;&amp;lt;br&amp;gt; A note next to a delay command that exceeds the current row’s length is not played, but its instrument number will be used for the next note (if it has no instrument number).&lt;br /&gt;
* &#039;&#039;&#039;Gxx shares memory with Exx and Fxx&#039;&#039;&#039;&amp;lt;br&amp;gt; All portamento commands use the same memory.&lt;br /&gt;
* &#039;&#039;&#039;After finishing a pattern loop, set the pattern loop target to the next row&#039;&#039;&#039;&amp;lt;br&amp;gt; A lone SBx effect with no corresponding SB0 will restart its loop one row after the previous loop, if there was one in the same pattern.&lt;br /&gt;
* &#039;&#039;&#039;Nested pattern loop behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; If there are several pattern loops running concurrently, execute them like IT and FT2 do.&lt;br /&gt;
* &#039;&#039;&#039;Do not reset ping pong direction with instrument numbers&#039;&#039;&#039;&amp;lt;br&amp;gt; An instrument number does not cause a ping-pong loop to change its direction.&lt;br /&gt;
* &#039;&#039;&#039;IT envelope reset behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; The rules for when to restart envelopes are changed to Impulse Tracker’s WAV writer behaviour.&lt;br /&gt;
* &#039;&#039;&#039;Forget the previous note after cutting it&#039;&#039;&#039;&amp;lt;br&amp;gt; An instrument number after a note cut cannot restart the previously playing note.&lt;br /&gt;
* &#039;&#039;&#039;More IT-like Vibrato, Tremolo and Panbrello handling&#039;&#039;&#039;&amp;lt;br&amp;gt; These effects will use Impulse Tracker’s waveforms and retrigger behaviour.&lt;br /&gt;
* &#039;&#039;&#039;Ixx behaves like in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; Tremor reset and tick counting behaviour is more like in IT.&lt;br /&gt;
* &#039;&#039;&#039;Qxx behaves like in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; Retrigger tick counting is more like in IT.&lt;br /&gt;
* &#039;&#039;&#039;Properly update C-5 frequency when changing note in multisampled instrument&#039;&#039;&#039;&amp;lt;br&amp;gt; When playing a multisampled instrument with no instrument numbers in the pattern, the middle-C frequency is still updated properly.&lt;br /&gt;
* &#039;&#039;&#039;Clear portamento target after it has been reached&#039;&#039;&#039;&amp;lt;br&amp;gt; Once the portamento target has been reached, any subsequent Tone Portamento effects will do nothing.&lt;br /&gt;
* &#039;&#039;&#039;Do not reset loop count on pattern break&#039;&#039;&#039;&amp;lt;br&amp;gt; If a pattern loop is interrupted by a pattern break, the loop count is remembered for subsequent loops.&lt;br /&gt;
* &#039;&#039;&#039;Offset after sample end is treated like in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; With “Old Effects” enabled, the offset is clamped to the sample end (so when there is no sample loop, the note will not sound). Otherwise, the sample plays from start.&lt;br /&gt;
* &#039;&#039;&#039;Volume and panning random variation work more like in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; Among the biggest differences, volume random variation is a percentage of the instrument’s global volume, not of its note volume.&lt;br /&gt;
* &#039;&#039;&#039;NNA is reset on every note change, not every instrument change&#039;&#039;&#039;&amp;lt;br&amp;gt; When using S7x effects to change an instrument’s NNA behaviour, the original value is reset with the next note rather than the next instrument number.&lt;br /&gt;
* &#039;&#039;&#039;SCx really stops the sample and does not just mute it&#039;&#039;&#039;&amp;lt;br&amp;gt; A subsequent volume effect cannot pick up a note that was previously stopped using the SCx command.&lt;br /&gt;
* &#039;&#039;&#039;IT-style envelope position advance + enable/disable behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; When disabling envelopes, the last value of the envelope keeps being applied.&lt;br /&gt;
* &#039;&#039;&#039;More compatible instrument change + portamento&#039;&#039;&#039;&amp;lt;br&amp;gt; Resets the volume envelope even on notes with Tone Portamento. A sample change during a Tone Portamento with “Compatible Gxx” enabled does not cause the new sample to be played.&lt;br /&gt;
* &#039;&#039;&#039;Do not repeat last sample point in ping pong loop, like IT’s software mixer&#039;&#039;&#039;&amp;lt;br&amp;gt; Not noticeable unless you use ping-pong-looped chip samples. If disabled, OpenMPT sounds more like IT’s Gravis Ultrasound driver.&lt;br /&gt;
* &#039;&#039;&#039;Use triggered note rather than translated note for PPS and DNA note check&#039;&#039;&#039;&amp;lt;br&amp;gt; When modifying the note-to-note mapping of an instrument, the Pitch-Pan-Separation and Duplicate Note Action are based on the note found in the pattern rather than the “translated” note.&lt;br /&gt;
* &#039;&#039;&#039;SAx does not apply an offset effect to a note next to it&#039;&#039;&#039;&amp;lt;br&amp;gt; High Offset commands next to a note do not instantly apply an offset effect, they only affect subsequent Offset commands.&lt;br /&gt;
* &#039;&#039;&#039;User IT’s filter coefficients (unless extended filter range is used) and behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; Higher resonance than OpenMPT’s original filter implementation, and slightly different rules when to enable and disable filters.&lt;br /&gt;
* &#039;&#039;&#039;Panning modulation is disabled on surround channels&#039;&#039;&#039;&amp;lt;br&amp;gt; Panning random variation, panbrello and panning envelopes are ignored on surround channels, unless OpenMPT’s “Quad Surround” panning mode (S9B command) is enabled.&lt;br /&gt;
* &#039;&#039;&#039;Do not retrigger already stopped channels&#039;&#039;&#039;&amp;lt;br&amp;gt; A sample is not retriggered if it already stopped playing. Unfortunately, this also affects retriggering very short samples (such as Hi-Hats), so it is advised to put a silent loop at the end of such samples if they need to be retriggered.&lt;br /&gt;
* &#039;&#039;&#039;Do not apply any portamento if no previous note is playing&#039;&#039;&#039;&amp;lt;br&amp;gt; Applying Tone Portamento on a channel where a note was previously stopped will not slide from this stopped note to the new note but rather play the new note directly at its target frequency.&lt;br /&gt;
* &#039;&#039;&#039;Reset note-off on portamento if there is an instrument number in Compatible Gxx mode&#039;&#039;&#039;&amp;lt;br&amp;gt; Only reset the “Note Off” status of a note with Tone Portamento if “Compatible Gxx” is enabled.&lt;br /&gt;
* &#039;&#039;&#039;Volume column effects share their memory with the effect column&#039;&#039;&#039;&amp;lt;br&amp;gt; Volume slides in the volume column have no own effect memory but share it with their effect column counterparts. This setting also ensures that fine volume slides in the volume column are only applied on the very first tick of a row, and not on multiples of the first tick if there is a Pattern Delay command.&lt;br /&gt;
* &#039;&#039;&#039;Portamento with sample swap plays the new sample from the beginning&#039;&#039;&#039;&amp;lt;br&amp;gt; When swapping samples during a Tone Portamento, they are played from the start rather than being continued at the play position of the old sample.&lt;br /&gt;
* &#039;&#039;&#039;Ignore instrument note map entries with no note completely&#039;&#039;&#039;&amp;lt;br&amp;gt; When triggering a note that is mapped to nothing at all in an instrument’s sample map, it should not even trigger New Note Actions and such.&lt;br /&gt;
* &#039;&#039;&#039;IT-style first tick handling&#039;&#039;&#039;&amp;lt;br&amp;gt; If there is a note delay, fine volume slides next to it will be executed on the tick that matches the delay rather than the “true” first tick of the row.&lt;br /&gt;
* &#039;&#039;&#039;IT-style sample&amp;amp;hold panbrello waveform&#039;&#039;&#039;&amp;lt;br&amp;gt; Setting the panbrello waveform to “random” will cause the speed parameter of the Panbrello command to hold the current random value for the given number of ticks. &lt;br /&gt;
* &#039;&#039;&#039;New notes reset portamento target in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; A previous portamento target is not remembered after a note change with no Tone Portamento.&lt;br /&gt;
* &#039;&#039;&#039;Do not reset panbrello effect until next note or panning effect&#039;&#039;&#039;&amp;lt;br&amp;gt; After executing Panbrello, its panning offset remains on the following rows until a new note or other panning effect is encountered. If disabled, the panning offset is reset immediately.&lt;br /&gt;
* &#039;&#039;&#039;Sample and instrument panning is only applied on note change, not instrument change&#039;&#039;&#039;&amp;lt;br&amp;gt; An instrument number does not re-apply the sample’s or instrument’s default panning, only a new note does.&lt;br /&gt;
* &#039;&#039;&#039;Bxx on the same row as SBx terminates the loop in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; Pattern loops that also have a Position Jump on the last row are never executed.&lt;br /&gt;
* &#039;&#039;&#039;Instrument number with note-off recalls default volume&#039;&#039;&#039;&amp;lt;br&amp;gt; An instrument number next to a Note-Off note will apply the sample’s default volume.&lt;br /&gt;
* &#039;&#039;&#039;Lone instrument number after portamento within multi-sampled instrument sets the target sample&#039;s settings&#039;&#039;&#039;&amp;lt;br&amp;gt; A tone portamento between two notes of the same instrument that are assigned to different samples does not switch to new samples; however, a lone instrument number after such a tone portamento will apply the sample settings (volume and panning) of the target sample while continuing to play the first sample. Additionally, this setting resets the portamento on a stopped note if it is picked up using a lone instrument number.&lt;br /&gt;
* &#039;&#039;&#039;Broken release node after sustain end behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; From OpenMPT 1.23 to OpenMPT 1.27, a release node past the sustain loop end did not work correctly if the “IT-style envelope position advance + enable/disable behaviour” compatibility setting was enabled as well. If such a module is loaded, this option is enabled automatically. Otherwise, it is not available.&lt;br /&gt;
* &#039;&#039;&#039;Instrument number with note-off retriggers envelopes with Old Effects enabled&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Instruments / samples with forced panning do not override channel panning for following instruments / samples&#039;&#039;&#039;&amp;lt;br&amp;gt; The panning options of samples and instruments do not override channel panning for any following notes.&lt;br /&gt;
* &#039;&#039;&#039;Bxx right of SBx terminates the loop in IT&#039;&#039;&#039;&amp;lt;br&amp;gt; If a Bxx command is found right of the terminating SBx command of a pattern loop, the pattern loop is never executed.&lt;br /&gt;
* &#039;&#039;&#039;Duplicate Sample Check requires same instrument, Duplicate Note Check uses pattern notes for comparison&#039;&#039;&#039;&amp;lt;br&amp;gt; If an instrument has its duplicate check type set to &#039;&#039;Sample&#039;&#039;, then these checks are carried out only if the old and new instrument match. If an instrument has its duplicate check type set to &#039;&#039;Note&#039;&#039;, the old and new pattern note are compared, regardless of how they are transposed in the instrument.&lt;br /&gt;
* &#039;&#039;&#039;Pitch / Pan Separation can be overridden by panning commands&#039;&#039;&#039;&amp;lt;br&amp;gt; Rather than applying Pitch / Pan Separation as an offset on top of all other panning, this setting causes it to behave more like an implicit panning command that is overridden if a real panning command is encountered in the pattern data.&lt;br /&gt;
* &#039;&#039;&#039;Ignore tone portamento for instrument plugins&#039;&#039;&#039;&amp;lt;br&amp;gt; If enabled, tone portamento commands do not slide from one instrument plugin note to the next, but instead keep the old note playing while also triggering the new note simultaneously.&lt;br /&gt;
* &#039;&#039;&#039;Reset filter on portamento if new note plays a different sample&#039;&#039;&#039;&amp;lt;br&amp;gt; In sample mode, when doing a tone portmento between two differetn samples, the filter may be deactivated in the same way as it can be deactivated when triggering a new note (i.e. when the previous note was playing with filter cutoff fully open and resonance at 0).&lt;br /&gt;
* &#039;&#039;&#039;Initial Last Note Memory of each channel is C-0 instead of No Note&#039;&#039;&#039;&amp;lt;br&amp;gt; When this setting is active, a lone instrument number with no previous note on the same channel will trigger a C-0 note instead of not doing anything.&lt;br /&gt;
* &#039;&#039;&#039;Portamento after note-off does not re-enable sample sustain loop&#039;&#039;&#039;&amp;lt;br&amp;gt; When using tone portamento after a note-off event, the sample sustain loop is not re-enabled.&lt;br /&gt;
* &#039;&#039;&#039;Ignore pattern cell completely when trying to play unmapped instrument note&#039;&#039;&#039;&amp;lt;br&amp;gt; Any effects in a pattern cell are ignored if that pattern cell contains a note or instrument that points to an unmapped entry in the instrument’s sample map.&lt;br /&gt;
* &#039;&#039;&#039;Offset command with instrument number recalls offset with last note&#039;&#039;&#039;&amp;lt;br&amp;gt; If there is no note, but an instrument number and offset effect, the previous note is used to apply the offset effect to.&lt;br /&gt;
* &#039;&#039;&#039;Parameters of conflicting volume and effect column portamento commands may overwrite each other&#039;&#039;&#039;&amp;lt;br&amp;gt; This setting emulates the strange interactions between different portamento commands when they are encountered in both the volume and effect column at the same time.&lt;br /&gt;
* &#039;&#039;&#039;Note-Off status does not influence Envelope Carry behaviour&#039;&#039;&#039;&amp;lt;br&amp;gt; Previously, instrument envelopes restarted after a note-off even if Envelope Carry was enabled. With this setting enabled, they reset only if there is an instrument number without a note.&lt;br /&gt;
* &#039;&#039;&#039;Note Cut (SCx) resets note pitch and interacts with tone portamento + row delay&#039;&#039;&#039;&#039;&amp;lt;br&amp;gt; This setting enables two quirks: When a lone instrument number picks up a note cancelled by an SCx command, any previous portamento effects are undone and the original note pitch is restored. A combination of SCx with a note and tone portamento also ignores the SCx command, unless there is also a pattern delay effect on the same row.&lt;br /&gt;
&lt;br /&gt;
=== XM compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
Fasttracker 2 has a &#039;&#039;&#039;very quirky&#039;&#039;&#039; playback routine which makes even common pattern effects (and combinations thereof) behave totally unpredictable.&lt;br /&gt;
These idiosyncrasies are not handled very well (or not at all) when compatible playback is disabled,  so you are &#039;&#039;&#039;absolutely advised&#039;&#039;&#039; to use the default compatible playback settings for XM Files.&lt;br /&gt;
Many people listen to those files with MilkyTracker and XMPlay, and those two programs emulate Fasttracker 2’s quirks rather well - and so does OpenMPT’s compatible playback mode.&lt;br /&gt;
&lt;br /&gt;
The following compatibility settings are only available in XM modules.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Use smooth Fasttracker 2 volume ramping&#039;&#039;&#039;&amp;lt;br&amp;gt; Enables extra smooth sample ramping, like Fasttracker 2 did it. When enabled, percussive instruments (e.g. Bass Drums) will sound very muffled, as most of their attack will be lost.&lt;br /&gt;
* &#039;&#039;&#039;Reset note-off on portamento if there is an instrument number&#039;&#039;&#039;&amp;lt;br&amp;gt; Resets the “Note Off” status of a note with Tone Portamento.&lt;br /&gt;
* &#039;&#039;&#039;FT2 arpeggio algorithm&#039;&#039;&#039;&amp;lt;br&amp;gt; FT2 has a very buggy arpeggio command that, among other things, plays arpeggios backwards (second parameter’s note comes first).&lt;br /&gt;
* &#039;&#039;&#039;Rxx behaves like in FT2&#039;&#039;&#039;&amp;lt;br&amp;gt; The Retrigger command also has very erratic behaviour in FT2, which is emulated by this setting.&lt;br /&gt;
* &#039;&#039;&#039;Vibrato depth in volume column does not actually execute the vibrato effect&#039;&#039;&#039;&amp;lt;br&amp;gt; The uxx command only sets the vibrato speed for subsequent vibrato commands, but does not actually play a vibrato.&lt;br /&gt;
* &#039;&#039;&#039;Do not play portamento-ed note if no previous note is playing&#039;&#039;&#039;&amp;lt;br&amp;gt; If there is no playing note, a new note with a Tone Portamento command next to it will not sound.&lt;br /&gt;
* &#039;&#039;&#039;FT2-style Kxx handling&#039;&#039;&#039;&amp;lt;br&amp;gt; Key Off is another weird command in FT2 and behaves differently with volume commands and instrument numbers next to it.&lt;br /&gt;
* &#039;&#039;&#039;Volume-column pan slides are finer&#039;&#039;&#039;&amp;lt;br&amp;gt; lxx and rxx are as fine as fine panning slides in Impulse Tracker.&lt;br /&gt;
* &#039;&#039;&#039;Offset past sample end stops the note&#039;&#039;&#039;&amp;lt;br&amp;gt; Notes with offset commands beyond the sample length are never triggered.&lt;br /&gt;
* &#039;&#039;&#039;Do not allow ModPlug extensions to X command&#039;&#039;&#039;&amp;lt;br&amp;gt; Only X1x and X2x commands will work, X5x and higher do not.&lt;br /&gt;
* &#039;&#039;&#039;Retrigger envelopes if there is a note delay with no note&#039;&#039;&#039;&amp;lt;br&amp;gt; A note delay with no note next to it will still retrigger instrument envelopes.&lt;br /&gt;
* &#039;&#039;&#039;Lxx only sets the pan envelope position if the volume envelope&#039;s sustain flag is set&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Portamento with instrument number applies volume settings of new sample, but not the new sample itself&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;No volume column memory&#039;&#039;&#039;&amp;lt;br&amp;gt; Volume column slides do not have a parameter memory.&lt;br /&gt;
* &#039;&#039;&#039;Next pattern starts on the same row as the last E60 command&#039;&#039;&#039;&amp;lt;br&amp;gt; After a pattern loop has been executed, the next pattern will start from the row where the loop started rather than from the first row. To avoid this, put a Pattern Break command at the end of the pattern.&lt;br /&gt;
* &#039;&#039;&#039;Keep processing faded channels for later portamento pickup&#039;&#039;&#039;&amp;lt;br&amp;gt; After a channel has been faded out, a Tone Portamento can still pick up this silent note.&lt;br /&gt;
* &#039;&#039;&#039;Reload sample settings even if a note-off is placed next to an instrument number&#039;&#039;&#039;&amp;lt;br&amp;gt; Even an instrument number next to a Note-Off note will apply the sample’s default volume and panning. &lt;br /&gt;
* &#039;&#039;&#039;Portamento with note delay next to it is ignored&#039;&#039;&#039;&amp;lt;br&amp;gt; Tone Portamentos only work on notes with no note delays.&lt;br /&gt;
* &#039;&#039;&#039;Ignore out-of-range transposed notes&#039;&#039;&#039;&amp;lt;br&amp;gt; A note, after applying the sample’s transpose amount, may not leave a certain range of notes. If it does, it is ignored.&lt;br /&gt;
* &#039;&#039;&#039;Bxx or Dxx on the same row as E6x terminates the loop&#039;&#039;&#039;&amp;lt;br&amp;gt; Pattern loops that also have a Position Jump or Pattern Break effect on the last row are never executed.&lt;br /&gt;
* &#039;&#039;&#039;Portamento target is not reset with new notes&#039;&#039;&#039;&amp;lt;br&amp;gt; Applying a Tone Portamento after a new note with no portamento has been triggered will slide back to the last note with portamento.&lt;br /&gt;
* &#039;&#039;&#039;Sustain point at end of envelope loop stops the loop after release&#039;&#039;&#039;&amp;lt;br&amp;gt; If the sustain point is at the loop end and the sustain point has been released, do not loop anymore. &lt;br /&gt;
* &#039;&#039;&#039;Txx behaves like in FT2&#039;&#039;&#039;&amp;lt;br&amp;gt; Tremor is another somewhat idiosyncratic command in FT2.&lt;br /&gt;
* &#039;&#039;&#039;Do not trigger notes with out-of-range note delay&#039;&#039;&#039;&amp;lt;br&amp;gt; If the note delay is greater than the ticks per row (ignoring any pattern delays), it is ignored. &lt;br /&gt;
* &#039;&#039;&#039;Use FT2&#039;s broken period handling&#039;&#039;&#039;&amp;lt;br&amp;gt; When sliding a note too deep, it will wrap around at some point and become a very high note.&lt;br /&gt;
* &#039;&#039;&#039;Panning command with delayed note-off is ignored&#039;&#039;&#039;&amp;lt;br&amp;gt; If there is a Note Delay and Note-Off, a panning command next to them is ignored.&lt;br /&gt;
* &#039;&#039;&#039;FT2-style volume column handling if there is a note delay&#039;&#039;&#039;&amp;lt;br&amp;gt; If there is a note delay, volume column effects are &#039;&#039;not&#039;&#039; executed on the first tick and, if there is an instrument number, on the delayed tick.&lt;br /&gt;
* &#039;&#039;&#039;Round sample finetune to multiples of 8&#039;&#039;&#039;&amp;lt;br&amp;gt; FT2 has a finetune ranging from -128 to 127, but a finetune change only be heard at every multiple of 8.&lt;br /&gt;
* &#039;&#039;&#039;Fade instrument on note-off when there is no volume envelope; instrument numbers reset note-off status.&#039;&#039;&#039;&amp;lt;br&amp;gt; Instruments with no instrument envelope are instantly muted when a note-off is encountered. If this note-off is not delayed (i.e. there is no EDx effect next to it), the instrument is also faded out, which is only relevant if a volume effect is encountered after the note-off. Additionally, instrument numbers after a note-off reset the note-off status, so the sustain status of the envelope is reset.&lt;br /&gt;
* &#039;&#039;&#039;Emulate FT2/ProTracker tremolo ramp down / triangle waveform&#039;&#039;&#039;&amp;lt;br&amp;gt; The “ramp down” tremolo waveform (E71) is very buggy and even influenced by vibrato in FT2.&lt;br /&gt;
* &#039;&#039;&#039;Portamento Up and Down have separate effect memory&#039;&#039;&#039;&amp;lt;br&amp;gt; 1xx and 2xx do not share effect memory.&lt;br /&gt;
* &#039;&#039;&#039;If the sustain point of the panning envelope is reached before key-off, it is never released&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Delayed instrument-less notes should not recall volume and panning&#039;&#039;&#039;&amp;lt;br&amp;gt; From OpenMPT 1.19 to 1.27, notes with a note delay but no instrument number accidentally recalled the sample’s default volume and panning settings, which should only happen if there is an instrument number.&lt;br /&gt;
* &#039;&#039;&#039;Tone Portamento direction resets after reaching portamento target from below&#039;&#039;&#039;&amp;lt;br&amp;gt; After a tone portamento has reached its target note, FT2 will act as if the tone portamento should always decrease the frequency of the note, so if the note’s frequency is decreased (e.g. with 2xx) afterwards and another Tone Portamento effect is encountered, it will directly jump back to the target note.&lt;br /&gt;
* &#039;&#039;&#039;Ignore tone portamento and fine pitch slides for instrument plugins&#039;&#039;&#039;&amp;lt;br&amp;gt;If enabled, tone portamento commands do not slide from one instrument plugin note to the next, but instead keep the old note playing while also triggering the new note simultaneously. Additionally, fine and extra-fine pitch slides are not applied to instrument plugins.&lt;br /&gt;
* &#039;&#039;&#039;Key-off before auto-vibrato sweep-in is complete resets auto-vibrato depth&#039;&#039;&#039;&amp;lt;br&amp;gt; After a note-off / key-off event, sample auto-vibrato only continues to play if it already reached its full depth before the note-off / key-off event.&lt;br /&gt;
* &#039;&#039;&#039;Offset effect memory is only updated when the command is next to a note&#039;&#039;&#039;&amp;lt;br&amp;gt; The effect memory of the Offset command (9xx) is only updated when the command is placed next to a note.&lt;br /&gt;
&lt;br /&gt;
=== S3M compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
The following compatibility settings are only available in S3M modules. They are not saved in S3M files, but OpenMPT tries to guess the most appropriate settings when loading such files.&lt;br /&gt;
&lt;br /&gt;
S3M files made with OpenMPT always use all compatibility settings. However, when loading S3M files made with less compatible trackers (such as Impulse Tracker), compatible playback settings are disabled automatically as required. Re-saving such a file in OpenMPT will re-enable them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Do not reset panbrello effect until next note or panning effect&#039;&#039;&#039;&amp;lt;br&amp;gt; After executing Panbrello, its panning offset remains on the following rows until a new note or other panning effect is encountered. If disabled, the panning offset is reset immediately.&lt;br /&gt;
* &#039;&#039;&#039;Offset past sample end stops the note&#039;&#039;&#039;&amp;lt;br&amp;gt; Notes with offset commands beyond the sample length are never triggered.&lt;br /&gt;
* &#039;&#039;&#039;Do not process any effects on muted S3M channels&#039;&#039;&#039;&amp;lt;br&amp;gt; Any effect commands (even tempo and global volume commands) on muted channels are completely ignored. Many trackers and players still apply these commands on muted channels.&lt;br /&gt;
* &#039;&#039;&#039;Most effects share the same memory&#039;&#039;&#039;&amp;lt;br&amp;gt; Most effects in Scream Tracker 3 share a single effect memory (the only exception being vibrato and tone portamento effects). Many trackers and players implement effect-specific memory instead.&lt;br /&gt;
* &#039;&#039;&#039;Portamento with instrument number applies volume settings of new sample, but not the new sample itself (GUS)&#039;&#039;&#039;&amp;lt;br&amp;gt; The default volume of the sample number next to a Tone Portamento command is applied, but no sample swap happens. This emulates the Gravis Ultrasound driver in Scream Tracker 3. Disable this option to emulate Sound Blaster playback instead.&lt;br /&gt;
* &#039;&#039;&#039;Do not remember vibrato type in effect memory&#039;&#039;&#039;&amp;lt;br&amp;gt; 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.&lt;br /&gt;
* &#039;&#039;&#039;Stop note when reaching the format&#039;s maximum note frequency&#039;&#039;&#039;&amp;lt;br&amp;gt; Only available when importing modules made with old ModPlug Tracker versions or BeRoTracker, notes stop playing when their pitch exceeds the S3M frequency limits after a portamento slide. Otherwise, the poratmento slide stops at the frequency limit.&lt;br /&gt;
* &#039;&#039;&#039;Portamento immediately following an arpeggio effect continues at the last arpeggiated note&#039;&#039;&#039;&amp;lt;br&amp;gt; If a portamento up or portamento down effect immediately follows an arpeggio effect, it starts sliding from the last arpeggiated note, and not from the channel frequency as it was before the arpeggio.&lt;br /&gt;
* &#039;&#039;&#039;Notes without instrument use the previous note&#039;s sample offset&#039;&#039;&#039;&amp;lt;br&amp;gt; Similarly to the MOD format, this setting causes notes without an instrument number to use the same sample offset as the previous note.&lt;br /&gt;
* &#039;&#039;&#039;Notes cannot be retriggered after they have been cut&#039;&#039;&#039;&amp;lt;br&amp;gt; The Qxy command (with no note next to it) will not retrigger notes after the previous note has been forcefully cut.&lt;br /&gt;
* &#039;&#039;&#039;Enable on-the-fly sample swapping (SoundBlaster driver)&#039;&#039;&#039;&amp;lt;br&amp;gt; The Sound Blaster driver in Scream Tracker 3 supports MOD-like sample swapping by just providing a new sample number without a note. As OpenMPT mostly follows Gravis Ultrasound playback for S3M modules, this setting is disabled by default.&lt;br /&gt;
* &#039;&#039;&#039;Retrigger effect (Qxy) affects OPL notes&#039;&#039;&#039;&amp;lt;br&amp;gt; If disabled, only the note volume is affected by the Qxy effect (like in Scream Tracker 3). Otherwise, OPL notes are restarted like sample notes. This setting is only available for files made with OpenMPT 1.28, which did not use the same retrigger behaviour as Scream Tracker 3.&lt;br /&gt;
* &#039;&#039;&#039;Apply lower frequency limit&#039;&#039;&#039;&amp;lt;br&amp;gt; This stops notes from sliding down lower than Scream Tracker 3 supports.&lt;br /&gt;
* &#039;&#039;&#039;OPL notes with Tone Portamento are delayed until the next row&#039;&#039;&#039;&amp;lt;br&amp;gt;Tone Portamento is not available for OPL notes, instead the new note starts playing on the next row without any portamento.&lt;br /&gt;
* &#039;&#039;&#039;Ignore combined fine slides (Kxy / Lxy)&#039;&#039;&#039;&amp;lt;br&amp;gt; Fine volume slides are not possible with commands K and L, like in Scream Tracker 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MOD compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
The following compatibility settings are only available in MOD modules. They are not saved in MOD files, but OpenMPT tries to guess the most appropriate settings when loading such files.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;VBlank timing&#039;&#039;&#039;&amp;lt;br&amp;gt; F20 and above sets speed instead of tempo.&lt;br /&gt;
* &#039;&#039;&#039;ProTracker one-shot loops&#039;&#039;&#039;&amp;lt;br&amp;gt; If (and only if) a sample’s loop starts at 0, the sample is first played in its &#039;&#039;entire&#039;&#039; length. Afterwards, only the loop section of the sample is repeated.&lt;br /&gt;
* &#039;&#039;&#039;Ignore panning commands&#039;&#039;&#039;&amp;lt;br&amp;gt; 8xx and E8x commands will do nothing.&lt;br /&gt;
* &#039;&#039;&#039;Enable on-the-fly sample swapping&#039;&#039;&#039;&amp;lt;br&amp;gt; Instrument numbers with no note next to them cause the playing sample to be exchanged by the newly specified sample. The effect takes place as soon as the currently played sample reaches its loop end.&lt;br /&gt;
* &#039;&#039;&#039;Emulate FT2/ProTracker tremolo ramp down / triangle waveform&#039;&#039;&#039;&amp;lt;br&amp;gt; The “ramp down” tremolo waveform (E71) is very buggy and even influenced by vibrato in ProTracker.&lt;br /&gt;
* &#039;&#039;&#039;Out-of-range note delay is played on next row&#039;&#039;&#039;&amp;lt;br&amp;gt; A note that is played with a note delay greater than the current ticks per row is postponed to the first tick of the next row, unless the next row already plays another note. The postponed note is played with an instant portamento from a previously playing note rather than being played from start.&lt;br /&gt;
* &#039;&#039;&#039;Tempo changes are handled on second tick instead of first&#039;&#039;&#039;&amp;lt;br&amp;gt; F20 and above are only applied after the first tick of the row. At a speed of one tick per row, the change happens on the next row.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous compatibility settings ===&lt;br /&gt;
&lt;br /&gt;
The following compatibility settings belong to neither of the aforementioned formats; they may be set when importing files from other formats and are not available otherwise.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Beating OPL oscillators&#039;&#039;&#039;&amp;lt;br&amp;gt; Only available when importing C67 files, this option slightly detunes OPL instruments based on the channel they are played on to create a fatter sound.&lt;br /&gt;
* &#039;&#039;&#039;OPL key-off sets note frequency to 0 Hz&#039;&#039;&#039;&amp;lt;br&amp;gt; Only available when importing FMT files, this options sets the note pitch to 0 Hz to cut notes in addition to releasing the note-on flag.&lt;br /&gt;
* &#039;&#039;&#039;Offset commands work without a note next to them&#039;&#039;&#039;&amp;lt;br&amp;gt; Offset commands can change the playback position of the sample without a note next to them. This behaviour is for example supported in the DMF, MDL and PLM formats.&lt;br /&gt;
* &#039;&#039;&#039;New note without instrument number does not play looped samples from the start&#039;&#039;&#039;&amp;lt;br&amp;gt; Looped samples continue to play when a new note has no instrument number next to it, as if there was an instant tone portamento effect.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Compatible Playback]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&amp;diff=4941</id>
		<title>Development: Test Cases/IT</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Development:_Test_Cases/IT&amp;diff=4941"/>
		<updated>2025-06-12T19:39:38Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: SCx-Reset.it&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Testsuite Introduction|format=IT|tracker=Impulse Tracker}}&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Autovibrato-Reset.it|pass=???}}&lt;br /&gt;
The autovibrato sweep is not reset when using portamento.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Bidi-Loops.it|pass=793}}&lt;br /&gt;
In Impulse Tracker’s software mixer, ping-pong loops are shortened by one sample. This does not happen with the GUS hardware driver, but I assume that the software drivers were more popular due to the limitations of the GUS, so OpenMPT emulates this behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=BidiPrecision.it|pass=15871}}&lt;br /&gt;
An extension to [[#Bidi-Loops.it|Bidi-Loops.it]], this test verifies that the loop length of ping-pong loops is precise. The test is not required to stay absolutely silent, but the two channels may not phase, i.e. the sound should be a static buzz.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=CarryNNA.it|pass=1503 + 22849}}&lt;br /&gt;
This is a very interesting test case, because it actually sounds different when using Impulse Tracker’s WAV writer and Sound Blaster (and probably other drivers) output (the Sound Blaster 16 MMX driver also follows the behaviour of the WAV writer, to make things even more confusing).&lt;br /&gt;
The main difference is that the Sound Blaster driver will only consider the envelope carry flag if the New Note Action is not “Note Cut”. The WAV writer does not check for the NNA and will always apply the carry flag if it’s set. OpenMPT goes after the WAV writer, while e.g. XMPlay used the Sound Blaster behaviour for the volume and panning envelope, but the WAV writer’s behaviour for the filter envelope (because of a bug report some years ago) up until 2016. Obviously it is hard to consider which of the two behaviours is correct, so I would just say that both are. :) However, the WAV writer behaviour definitely is more useful (not being able to use Envelope Carry despite it being enabled is quite misleading), I strongly encourage everyone to implement this behaviour.&lt;br /&gt;
&lt;br /&gt;
The reason for the difference is most likely that the non-MMX Sound Blaster driver does not volume-ramp cut notes, while the MMX driver and WAV writer do. The volume ramping requires a NNA channel to be set up, which is a precondition for the envelope carry code to work.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=cut-carry.it|pass=1165}}&lt;br /&gt;
Envelopes that have the carry flag set cannot be “picked up” / continued after the note has been cut.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=dct_smp_note_test.it|pass=12819}}&lt;br /&gt;
Instrument Duplicate Check Type “Sample” should only be carried out if the old and new instrument match (like all other check types).&amp;lt;br&amp;gt;&lt;br /&gt;
Instrument Duplicate Check Type “Note” should compare the old and new pattern note, not translated notes according to the instrument’s mapping.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=DNA-NoInstr.it|pass=6311}}&lt;br /&gt;
OpenMPT previously did not properly check for the correct sample slot or sample map entry in DNA and NNA checks if no instrument number was provided. This testcase should remain silent when played correctly, i.e. both the first and second note on channel 1 should sound until the end of the pattern.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=DoubleSlide.it|pass=21807}}&lt;br /&gt;
Impulse Tracker generally initializes effect parameters, effect working memory and similar stuff once per row, before the effects actually run. When using (tone) portamento commands simulatenously in the effect column and volume column, this can lead to surprising results, and in order to emulate them correctly, it is crucial to implement the effect memory initialization in the exact same order as Impulse Tracker does:&lt;br /&gt;
&lt;br /&gt;
# Evaluate effect column Gxx parameter&lt;br /&gt;
# Evaluate volume column gx parameter&lt;br /&gt;
# Evaluate volume column ex / fx parameter&lt;br /&gt;
# Evaluate effect column Exx / Fxx parameter&lt;br /&gt;
&lt;br /&gt;
If played correctly, The left and right channel of this module should sound identical. The last few rows should stay silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=DoubleSlideCompatGxx.it|pass=21807}}&lt;br /&gt;
A variation of of [[#DoubleSlide.it|DoubleSlide.it]] with the Compatible Gxx flag turned on. The same rules as above apply, but since portamento up / down and tone portamento memory is not linked, there are some natural differences in handling.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=empty_sample_offset.it|pass=6343}}&lt;br /&gt;
In instrument mode, if an offset effect is found next to a note that maps to an invalid sample slot, the offset and illegal note should be ignored completely. Note that this behaviour is different from sample mode, where a previously playing sample will be stopped.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=emptyslot.it|pass=1671}}&lt;br /&gt;
I think, Impulse Tracker treats instruments like an additional layer of abstraction and first replaces the note and instrument in the pattern by the sample and note assignments from the sample map table before further evaluating the pattern. That would explain why for example the empty sample map slots do nothing in this module.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=env-flt-max.it|pass=1090 (?)}}&lt;br /&gt;
If resonance is not applied, the filter envelope’s maximum value does not &#039;&#039;enable&#039;&#039; any filtering. However, it also does not &#039;&#039;disable&#039;&#039; any filtering when returning from a non-maximum point. This pretty much works like Zxx commands.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=EnvLoopEscape.it|pass=4009}}&lt;br /&gt;
I created [[#EnvOffLength.it|EnvOffLength.it]] without realizing that it is essentially the same bug as this one.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=EnvLoops.it|pass=1213}}&lt;br /&gt;
In this test, all possible combinations of the envelope sustain point and envelope loops are tested, and you can see their behaviour on note-off.&lt;br /&gt;
If the sustain point is at the loop end and the sustain loop has been released, don&#039;t loop anymore.&lt;br /&gt;
Probably the most important thing for this test is that in Impulse Tracker (and Fasttracker 2), envelope position is incremented before the point is evaluated, not afterwards, so when no ticks have been processed yet, the envelope position should be invalid.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=EnvOffLength.it|pass=4009}}&lt;br /&gt;
If an envelope sustain loop happens to end on exactly the same tick as a note-off event occurs, the envelope is not yet released. It will be released whenever the loop end is being hit again.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=EnvReset.it|pass=1481}}&lt;br /&gt;
Impulse Tracker resets envelopes under some more or less weird conditions. This tests some of them.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=extreme-filter-test-1.it|pass=1090}}&lt;br /&gt;
If resonant filters are rendered with integer arithmetic, they may produce scratching noises in some edge cases. You should not hear any scratches or other weird noises when playing this example.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=extreme-filter-test-2.it|pass=1090}}&lt;br /&gt;
Same as the above test case. xmp breaks this module’s output even more than older versions of OpenMPT.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Fade-Porta.it|pass=1144}}&lt;br /&gt;
After a note has been stopped in some way (for example through fade-out or note cut), tone portamento effects on the following note are ignored, i.e. there is no portamento from the stopped note to the new note.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-7F.it|pass=1090 (?)}}&lt;br /&gt;
A small test case that demonstrates that full cutoff should not enable the filter if no resonance is applied. Resonance is only ever applied if the cutoff is not full or the resonance is not zero.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FilterEnvReset.it|pass=1132}}&lt;br /&gt;
A cutoff value of 0 should not be reset to full cutoff when triggering a note just because the filter envelope is enabled. This bug is probably very specific to OpenMPT, because it gets rid of some unneccessary code.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FilterPortaSmpChange.it|pass=18417}}&lt;br /&gt;
Normally Impulse Tracker does not disable the filter on portamento if cutoff was previously at 127 and resonance at 0, but in sample mode that is not the case when the new note plays a different sample.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FilterPortaSmpChange-InsMode.it|pass=?}}&lt;br /&gt;
Complementary test for [[#FilterPortaSmpChange.it|FilterPortaSmpChange.it]] in instrument mode. Here the cutoff should never be reset on portamento.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-nna.it|pass=1169}}&lt;br /&gt;
This test is just there to be sure that the filter-reset.it and filter-reset-carry.it test cases do not break NNA background channels.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-reset.it|pass=1165}}&lt;br /&gt;
As mentioned already, filtering is only ever done in IT if either cutoff is not full or if resonance is set. When a Z7F command is found next to a note and no portamento is applied, it &#039;&#039;disables&#039;&#039; the filter, however in other cases this should not happen.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-reset-carry.it|pass=1165}}&lt;br /&gt;
I think this is also just an extenion to the previous test case, to make sure that it does not break anything else.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=filter-reset-envelope.it|pass=16016}}&lt;br /&gt;
This test checks that the filter is reset correctly for delayed filtered notes, and also acts as a regression test for [[#filter-reset.it|filter-reset.it]], because the first implementation for this test broke the other test. The output should stay silent (small pops are okay).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FilterResetPatDelay.it|pass=16137}}&lt;br /&gt;
An extension of [[#filter-reset-envelope.it|filter-reset-envelope.it]], this verifies the filter reset behaviour on rows with a Pattern Delay. The filter reset logic should only be applied on rows that are actually retriggering the note: If there is no note delay, the note is retriggered only on the first tick. If there is a note delay, the note is retriggered on every repetition of that row (see [[#PatternDelay-NoteDelay.it|PatternDelay-NoteDelay.it]]).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=FineVolColSlide.it|pass=2400}}&lt;br /&gt;
Unlike fine volume slides in the effect column, fine volume slides in the volume column are only ever executed on the first tick — not on multiples of the first tick if there is a pattern delay. Thus, the left and right channel of this example should always have the same volume.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=flt-env-carry.it|pass=693 (?)}}&lt;br /&gt;
Envelope carry on the filter envelope. I think this is just a general test on how envelope carry is applied. It is possible that Impulse Tracker’s MMX drivers will play this in a different way from the WAV writer.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=fltmacro.it|pass=???}}&lt;br /&gt;
This test uses a custom macro configuration that uses the instrument volume to control the filter cutoff. A correctly implemented MIDI Macro system should pass this test.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=freqreset-noins.it|pass=325}}&lt;br /&gt;
When using multisample instruments, even notes with no instrument number next to them can change the sample (based on the active instrument’s sample map). When switching between samples, you must not forget to update the C-5 frequency of the playing sample as well.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=GlobalVolFirstTick.it|pass=6362}}&lt;br /&gt;
Set Global Volume (Vxx) should be applied on the first tick (and multiples in case of pattern delays). If played correctly, the first and second row of this module should sound more or less identical, i.e. each row should play 16 fading notes.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=globalvol-invalid.it|pass=290}}&lt;br /&gt;
Out-of-range global volume commands (V81...VFF) should not change the current global volume. This test module should remain completely silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=GlobalVolume-Macro.it}}&lt;br /&gt;
Global volume, channel volume and various other parameters are taken into account when interpreting the &#039;u&#039; and &#039;v&#039; letters in MIDI macros. However, this feature seems to be quirky, and I have decided not to support these quirks in OpenMPT, as I do not think that anyone used this feature in Impulse Tracker very much and I would want it to work in a sane way when using it to control instrument plugins in OpenMPT. The quirks are:&lt;br /&gt;
* Channel and global volume seem to be applied one row after they have been set. This does not seem to be the whole truth, though, as looking at pattern 0, row 9, you should hear that IT applies the M40 channel volume change on row 10.&lt;br /&gt;
* Instrument / sample volume also seems to be applied one row late when using the &#039;u&#039; macro, but not the &#039;v&#039; macro (compare first and second pattern, row 15 - 22 each).&lt;br /&gt;
There are also some problems with volume swing which might be fixed later.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=gxsmp.it|pass=1671}}&lt;br /&gt;
Another test case with an empty sample map slot which is simply ignored by Impulse Tracker.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=gxsmp2.it|pass=1671}}&lt;br /&gt;
Going one step further by also changing the sample next to that portamento.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=gxxtest.it|pass=4330}}&lt;br /&gt;
And another similar test.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=InitialNoteMemory.it|pass=18838}}&lt;br /&gt;
The initial &amp;quot;last note&amp;quot; memory of each channel in Impulse Tracker is initialized to C-0. So the first lone instrument number without any note next to it will play a C-0 of that instrument.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=InitialNoteMemoryInstrMode.it|pass=18838}}&lt;br /&gt;
A variation of [[#InitialNoteMemory.it|InitialNoteMemory.it]], but in instrument mode. The lowest note of instrument 1 has no sample association, which will also cause subsequent notes without instrument number to not play.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-flt-porta-reset.it|pass=???}}&lt;br /&gt;
Instrument filter settings should not be applied if there is a portamento effect.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-oc.it|pass=11293 + 22849}}&lt;br /&gt;
Instrument number resets envelope behaviour test with Old Effects enabled, Compatible Gxx enabled: Always reset envelopes.&lt;br /&gt;
&lt;br /&gt;
Note: Some output drivers play the instruments with Envelope Carry enabled differently in Impulse Tracker (see [[#CarryNNA.it|CarryNNA.it]] for an explanation why this happens). A previous version of this test reflected the behaviour of those drivers, but technically for the wrong reason (they relied on a bug / misunderstanding of the Carry feature in OpenMPT). As this OpenMPT bug was fixed, the test case was adjusted to follow the WAV writer / SB16 MMX driver behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-ox.it|pass=11293 + 22849}}&lt;br /&gt;
Instrument number resets envelope behaviour test with Old Effects enabled, Compatible Gxx disabled: Reset envelopes if there is no tone portamento.&lt;br /&gt;
&lt;br /&gt;
Note: Some output drivers play the instruments with Envelope Carry enabled differently in Impulse Tracker (see [[#CarryNNA.it|CarryNNA.it]] for an explanation why this happens). A previous version of this test reflected the behaviour of those drivers, but technically for the wrong reason (they relied on a bug / misunderstanding of the Carry feature in OpenMPT). As this OpenMPT bug was fixed, the test case was adjusted to follow the WAV writer / SB16 MMX driver behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-xc.it|pass=11293 + 22849}}&lt;br /&gt;
Instrument number resets envelope behaviour test with Old Effects disabled, Compatible Gxx enabled: Reset envelopes if there is a tone portamento.&lt;br /&gt;
&lt;br /&gt;
Note: Some output drivers play the instruments with Envelope Carry enabled differently in Impulse Tracker (see [[#CarryNNA.it|CarryNNA.it]] for an explanation why this happens). A previous version of this test reflected the behaviour of those drivers, but technically for the wrong reason (they relied on a bug / misunderstanding of the Carry feature in OpenMPT). As this OpenMPT bug was fixed, the test case was adjusted to follow the WAV writer / SB16 MMX driver behaviour.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ins-xx.it|pass=0}}&lt;br /&gt;
Instrument number resets envelope behaviour test with Old Effects disabled, Compatible Gxx disabled: Never reset envelopes.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=InstrAfterMultisamplePorta.it|pass=7465}}&lt;br /&gt;
A lone instrument number should only reset sample properties to those of the corresponding sample in instrument mode. Example:&lt;br /&gt;
 C#5 01 ... &amp;lt;-- sample 1&lt;br /&gt;
 C-5 .. g02 &amp;lt;-- sample 2&lt;br /&gt;
 ... 01 ... &amp;lt;-- still sample 1, but with properties of sample 2&lt;br /&gt;
In the above example, no sample change happens on the second row. In the third row, sample 1 keeps playing but with the volume and panning properties of sample 2.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=InstrumentNumberChange.it|pass=1902}}&lt;br /&gt;
While Impulse Tracker cuts playing samples if it encounters an invalid sample number in sample mode, the same does not happen if we are in instrument mode.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=JxxTicks.it|pass=1537}}&lt;br /&gt;
Impulse Tracker’s arpeggio logic is pretty sane compared to some other trackers, but one detail should be kept in mind: Pattern Delays reset the tick counter, but it keeps incrementing with Fine Pattern Delays. The arpeggio sequence thus resets every (ticks per row + fine pattern delay) ticks.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LinearSlides.it|pass=4330}}&lt;br /&gt;
Impulse Tracker internally uses actual frequency values, while Fasttracker 2 still uses exponentially scaled fine Amiga periods. When doing fine slides, errors from using periods instead of frequency can add up very quickly, and thus the two channel&#039;s frequency in this test will converge noticeably.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LoopBreak.it|pass=5413}}&lt;br /&gt;
A pattern break (Cxx) on the same row as the end of a pattern loop (SBx) repeats the pattern loop x times and then jumps to the desired row. However, a position jump (Bxx) on the same row as the end of a pattern loop prevents the loop from being executed if it is right of the SBx effect. In this test, the left and right channel of the module should produce the same click patterns.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LoopStartAfterPatternEnd.it|pass=7791}}&lt;br /&gt;
Since the start row of a pattern loop is not reset on pattern transitions, it is possible to use a loop start past the end of the current pattern when using a pattern loop without explicit start command (SB0). In this case, playback should continue in the next pattern. In the example, this happens because the loop start is set to one row after the loop end after properly terminating the loop in pattern 0.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LxxWith0Portamento-Amiga.it|pass=r22552}}&lt;br /&gt;
A strange edge case when using Lxx (Volume Slide + Tone Portamento) while the tone portamento effect memory is 0: The tone portamento comamnd is not initialized properly in this case, causing it always to assume that it&#039;s trying to execute a portamento down. If the current note is below the note to which the tone portamento would lead, this causes the note to immediately jump to the target note. If the current note is above the target note, nothing happens.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=LxxWith0Portamento-Linear.it|pass=r22552}}&lt;br /&gt;
Same as [[#LxxWith0Portamento-Amiga.it|LxxWith0Portamento-Amiga.it]], but with linear slides. The difference is that when the current note is above the target note, the frequency is decremented by 1 Hz on every tick (linear slides always slide by at least 1 Hz).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=macro-lastnote.it|pass=947 (?)}}&lt;br /&gt;
A test of the MIDI macro letter “n”. This letter will always send the MIDI note value of the last triggered note, note cuts and similar “notes” are not considered. This module should remain silent as both channels should receive exactly the same cutoff values.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=MacroExtendedParam.it|pass=16715}}&lt;br /&gt;
Even fixed macros (Z80-ZFF) can contain the letter “z”, which inserts the raw command parameter into the macro (i.e. a value in [80, FF[). In this file, macro ZF0 is used to insert byte F0 into the string. This way, two MIDI messages to set both the filter cutoff and resonance to 60h are created, which are the same filter settings as used in instrument 2, so the module should stay silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=MultiZxx.it|pass=947 (?)}}&lt;br /&gt;
A MIDI macro can contain more than one MIDI message. In this case, the Z90 macro sets both the filter cutoff frequency and resonance, so if only the first MIDI message is considered in this macro, the module will no longer stay silent at row 8.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoMap.it|pass=1671}}&lt;br /&gt;
Yet another sample map test case. Why are there so many of them? They are all fixed by the same code...&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoMapEffects.it|pass=20790 + 20820}}&lt;br /&gt;
Empty instrument note map slots are truly one of the most mysterious parts of Impulse Tracker’s reply routines. This particular test started out to verify that a currently playing instrument’s envelopes are not reset by sample-less note map slots, but it quickly evolved into a complete nightmare. In this test you see many global effects, and not a single one of them does anything. They do not jump around in the pattern, they do not modify the tempo. Anything in a cell where a sample-less note map slot is hit is ignored completely. This also affects the first row of the module due to [[#InitialNoteMemory.it|InitialNoteMemory.it]] - this mechanism also takes previously triggered notes into account. Only on row 3 it does not apply, because Note Off / Note Cut / Note Fade invalidate the previously triggered note.&lt;br /&gt;
&lt;br /&gt;
All in all, this absolutely crazy test case should play identically on the left and right channel.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoSlide.it|pass=???}}&lt;br /&gt;
This seems to be just a fancy test of portamento from a stopped note, but in this case an empty sample slot assigned to the same instrument was played before.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoteFade-SmpMode.it|pass=317}}&lt;br /&gt;
A “note fade” note (any invalid note) should not do anything in sample mode. The sample should not be stopped.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoteFade-InsMode.it|pass=317}}&lt;br /&gt;
A “note fade” note (any invalid note) should fade out the instrument using its fadeout value.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=noteoff2.it|pass=??? + 5829}}&lt;br /&gt;
The sample changes on rows 4 and 20, but not on rows 8 and 24. However, the new sample′s default volume is loaded.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=noteoff3.it|pass=12284}}&lt;br /&gt;
This is the same as noteoff2.it, but with old effects enabled. In this case, the sample should never fade out.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=NoteOffInstr.it|pass=5829}}&lt;br /&gt;
Any kind of Note Cut (SCx or ^^^) should stop the sample and not set its volume to 0. A subsequent volume command cannot continue the sample, but a note, even without an instrument number can do so. When played back correctly, the module should stay silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Off-Porta.it|pass=1344}}&lt;br /&gt;
When &amp;quot;Compatible Gxx&amp;quot; is disabled, the key-off flag should only be removed when triggering new notes, but not when continuing a note using a portamento command.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Off-Porta-CompatGxx.it|pass=0 (temporarily broken in rev. 1344)}}&lt;br /&gt;
When &amp;quot;Compatible Gxx&amp;quot; is enabled, the key-off flag should also be removed when continuing a note using a portamento command (row 2, 4, 6). This test case was written to discover a code regression  when fixing [[#Off-Porta.it|Off-Porta.it]]).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=OffsetWithInstr.it|pass=20863}}&lt;br /&gt;
An offset effect can be triggered if only an instrument number and no note is next to it, if the last triggered note was not a note cut, note off or note fade.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PanbrelloHold.it|pass=4712}}&lt;br /&gt;
The panbrello offset should not only be added on the same row as the panbrello effect appears on, but also on all follow-up rows, until a panning command or a new note is encountered. This test case should remain mostly silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PanReset.it|pass=4713}}&lt;br /&gt;
Contrary to XM, the default instrument and sample panning should only be reset when a &#039;&#039;&#039;note&#039;&#039;&#039; is encountered, not when an &#039;&#039;&#039;instrument number&#039;&#039;&#039; (without note) is encountered. The two channels of this module should be panned identically.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PanResetInstr.it|pass=11856}}&lt;br /&gt;
Instruments and samples with a defined panning should not override the channel panning for following notes. That is, if a different instrument with no panning set follows an instrument that has panning set, the first instrument’s panning should not be applied to the second instrument, but rather the channel panning as it was set before playing the first instrument (or if the channel panning was changed while that instrument was playing, the new channel panning applies as well).&lt;br /&gt;
If played correctly, this test case should remain silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PatternDelay-NoteDelay.it|pass=1240}}&lt;br /&gt;
Delayed notes (using SDx) that are on the same row as a Row Delay effect are retriggered on every repetition. Notes &#039;&#039;without&#039;&#039; a note delay are &#039;&#039;not&#039;&#039; retriggered.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PatternDelays.it|pass=1224}}&lt;br /&gt;
Tick delays (S6x) are added up, but when there are multiple row delays (SEx), only the first one is considered. The tricky part here is that Impulse Tracker even ignores all row delays next to a SE0 row delay. I suggest to do the following:&lt;br /&gt;
* Initialize a &amp;lt;tt&amp;gt;row delay&amp;lt;/tt&amp;gt; variable with &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Go through all channels. If there is a row delay on the current row and &amp;lt;tt&amp;gt;row delay&amp;lt;/tt&amp;gt; is 0, set &amp;lt;tt&amp;gt;row delay = parameter + 1&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Calculate the complete row length: &amp;lt;tt&amp;gt;row length = (speed + tick delay) * max(1, row delay)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PatternDelaysRetrig.it|pass=1221}}&lt;br /&gt;
Rows on which a row delay (SEx) effect is placed have multiple “first ticks”, i.e. you should set your “first tick flag” on every tick that is a multiple of &amp;lt;tt&amp;gt;speed + tick delay&amp;lt;/tt&amp;gt;. In this test module, the note pitch is changed multiple times per row, depending on the row and tick delay values.&lt;br /&gt;
&amp;lt;br/&amp;gt;Note: This test case broke in r3520 and was fixed again in r4895.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PitchPanReset.it|pass=15870}}&lt;br /&gt;
Pitch/Pan Separation can be overriden by panning commands, and should not be affected by Note Off or Note Fade notes.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaCutCompat.it|pass=9139}}&lt;br /&gt;
A follow-up test to [[#PortaSampleCompat.it|PortaSampleCompat.it]] and  [[#PortaInsNumCompat.it|PortaInsNumCompat.it]] to verify that the behaviour described in these tests is not used when currently no note is playing. Both channels should sound identical.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaInsNum.it|pass=1671}}&lt;br /&gt;
Portamento with funny sample maps. Without compatible Gxx, portamento between different samples should play the new sample.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaInsNumCompat.it|pass=2842}}&lt;br /&gt;
Portamento with funny sample maps, in compatible Gxx mode. With compatible Gxx, portamento between different samples should keep playing the old sample.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaJustStoppedNote.it|pass=6193}}&lt;br /&gt;
[[#Fade-Porta.it|Fade-Porta.it]] already tests the general case of portamento picking up a stopped note (portamento should just be ignored in this case), but there is an edge case when the note just stopped on the previous tick. In this case, OpenMPT did previously behave differently and still execute the portamento effect.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=porta-offset.it|pass=0}}&lt;br /&gt;
Unlike Fasttracker 2, Impulse Tracker does not ignore offset commands next to portamentos and executes them both. Even ModPlug Tracker 1.16 gets this test right.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaReset.it|pass=4181}}&lt;br /&gt;
Impulse Tracker completely resets the tone portamento target on every new non-portamento note, i.e. a follow-up Gxx effect should not slide back to the previously triggered note.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaResetAfterRetrigger.it|pass=7465}}&lt;br /&gt;
After a note has stopped playing, a lone instrument number can restart the note. In this case, portamento and other properties should be reset.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaSample.it|pass=1671}}&lt;br /&gt;
Impulse Tracker executes the portamento when switching to instrument two on the second row when compatible Gxx is disabled.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=PortaSampleCompat.it|pass=2842}}&lt;br /&gt;
Impulse Tracker executes the portamento and doesn&#039;t switch to the new sample on the second row when compatible Gxx is enabled.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=RandomPan.it|pass=2545}}&lt;br /&gt;
Pan swing should not be overridden by effects such as instrument panning or panning envelopes. Previously, pan swing was overridden in OpenMPT if the instrument also had a panning envelope. In this file, pan swing should be applied to every note.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=RandomWaveform.it|pass=3670}}&lt;br /&gt;
When selecting the random waveform for panbrello, the “speed” nibble indicates for how many ticks the random value will be held. This behaviour is &#039;&#039;not&#039;&#039; used for vibrato / tremolo.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ResetEnvNoteOffOldFx.it|pass=11276 - 11283}}&lt;br /&gt;
In Old Effects mode, an instrument number next to a note-off does not just recall the default volume and panning, but also resets the envelopes.&lt;br /&gt;
&lt;br /&gt;
If the instrument is different from the currently playing instrument, the new instrument&#039;s envelope and default sample settings (default volume, panning, but not global volume) are loaded, but the old sample waveform keeps playing.&lt;br /&gt;
&lt;br /&gt;
When played correctly, the left and right audio channel should sound identical. On the last note, the tracker channels swap their stereo position.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ResetEnvNoteOffOldFx2.it|pass=11284}}&lt;br /&gt;
An extension of ResetEnvNoteOffOldFx.it which also tests instrument note-off and sample sustain loop behaviour: While the sample sustain loop should be released, the instrument should not be faded out.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=retrig.it|pass=364}}&lt;br /&gt;
A combination of the retrigger effect and instrument envelopes. Not sure how this works.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=retrig-short.it|pass=1140}}&lt;br /&gt;
Impulse Tracker does not retrigger notes that are shorter than the duration of a tick. One might argue that this is a bug in Impulse Tracker, but OpenMPT emulates it anyway.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=s7xinsnum.it|pass=1062}}&lt;br /&gt;
Changing the NNA action through the S7x command only affects the current note - The NNA action is reset on every &#039;&#039;note change&#039;&#039;, and not on every &#039;&#039;instrument change&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=s77.it|pass=561 (preliminary), 1112}}&lt;br /&gt;
The S77 / S79 / S7B commands pause the instrument envelopes, they do not turn them off. S78 / S7A / S7C should resume the envelope at exactly the position where it was paused. In this test, it is again very important that the envelope position is incremented &#039;&#039;before&#039;&#039; the point is evaluated, not &#039;&#039;afterwards&#039;&#039; (see [[#EnvLoops.it|EnvLoops.it]]).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SampleNumberChange.it|pass=0}}&lt;br /&gt;
Contrary to [[#InstrumentNumberChange.it|InstrumentNumberChange.it]], even ModPlug Tracker 1.16 passes it.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SampleSustainAfterPorta.it|pass=20760}}&lt;br /&gt;
When a sample’s sustain loop was released, and a new note from a different sample is played with tone portamento applied, the second sample’s sustain loop also stays released.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SampleSustainAfterPortaCompatGxx.it|pass=20760}}&lt;br /&gt;
Same as [[#SampleSustainAfterPorta.it|SampleSustainAfterPorta.it]], but with Compatible Gxx turned on.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SampleSustainAfterPortaInstrMode.it|pass=20760}}&lt;br /&gt;
Same as [[#SampleSustainAfterPorta.it|SampleSustainAfterPorta.it]], but in instrument mode. Here a difference in the behaviour can be observed when doing a second switch after the initial note-off: The first time, the sustain loop remains disabled, but for the subsequent note, the sustain loop is used again. This does not happen in sample mode.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=sbx-priority.it|pass=12171}}&lt;br /&gt;
This is an extension of [[#LoopBreak.it|LoopBreak.it]]. A position jump (Bxx) on the same row as the end of a pattern loop prevents the loop from being executed if it is right of the SBx effect, but if the position jump is left of the SBx effect, the loop should be prioritized. In this test, the left and right channel of the module should produce the same beep patterns.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=scx.it|pass=1109}}&lt;br /&gt;
The SCx command cuts notes just like a normal note cut (^^^), it does not simply mute them. However, there is a difference when placing a lone instrument number after a note that was cut with SCx and one cut with ^^^, as it can be seen in this test case.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SCx-Reset.it|pass=23476}}&lt;br /&gt;
When a lone instrument number after a SCx command picks up the previous note, it resets its pitch to the original note, undoing any portamento effects - the same as if there was a note next to the instrument number.&lt;br /&gt;
&lt;br /&gt;
If there is a note and a tone portamento next to an SCx command, the Note Cut is not executed - unless there is also a row delay effect and we are on the second repetition of the row.&lt;br /&gt;
&lt;br /&gt;
When played correctly, this test should remain silent.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SlideDelay.it|pass=3520}}&lt;br /&gt;
If there&#039;s a note delay, slide and vibrato commands in the volume column next to it should not start before the delay has finished.&lt;br /&gt;
So if there&#039;s a fine volume slide next to a SD5 effect should start on the 6th (one-based) tick. If this was a normal volume or pitch slide and the speed was 6 ticks per row, it would never execute, as the first non-zero tick would be the seventh tick.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SmpInsPanSurround.it|pass=1259}}&lt;br /&gt;
Sample and instrument panning override the channel surround status, i.e. surround is turned off by samples or instruments with panning enabled.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=surround-pan.it|pass=1134}}&lt;br /&gt;
Pan swing, panbrello, panning envelopes, etc. should have no effect on surround channels.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=StoppedInstrSwap.it|pass=5829}}&lt;br /&gt;
An instrument number with no note or next to a ^^^ should always be remembered for the next instrument-less note, even if sample playback is stopped.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SusAfterLoop.it|pass=1085}}&lt;br /&gt;
When a sample sustain loop, which is placed partly or completely behind a “normal” sample loop is exited (through a note-off event), and the current sample playback position is past the normal loop’s end, it is adjusted to &amp;lt;tt&amp;gt;loop start + ((current position - loop start) % loop length)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=SwapNNA.it|pass=10239}}&lt;br /&gt;
Related to [[#s7xinsnum.it|s7xinsnum.it]], the NNA action should be reset when doing an instrument swap with portamento.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swaptest.it|pass=???}}&lt;br /&gt;
A test focussing on finding the correct sample playback position when switching samples “on the fly” (using instrument numbers without notes next to them). The module should remain silent when being played.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing1.it|pass=1046 (?)}}&lt;br /&gt;
Probably a very MPT-specific bug, as OpenMPT was adding the volume swing to the current volume, so even after setting the volume to 0, it was possible that you could hear the sample playing.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing2.it|pass=1046 (?)}}&lt;br /&gt;
This module should remain completely silent, as the random variation is multiplied with the sample volume.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing3.it|pass=1046 (?)}}&lt;br /&gt;
Of course you are not supposed to produce the same sequence of random number to fulfil this test case. I think this was just a test to explore which volume variables are actually affected by volume swing, and how it is applied.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing4.it|pass=1046 (?)}}&lt;br /&gt;
Same as above.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=swing5.it|pass=1046 (?)}}&lt;br /&gt;
Same as above.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=tickdelay.it|pass=4948}}&lt;br /&gt;
This test detects whether out-of-range note delays are handled properly. If the SDx parameter is greater than the row length (&#039;&#039;including&#039;&#039; tick delay, but &#039;&#039;excluding&#039;&#039; row delay), any note and volume effects next to it are supposed to ignored (interestingly, the instrument number is saved, but not instantly used). The first two rows test tick delay behaviour (OpenMPT passes this test since revision 1306), the third row tests row delay behaviour. &lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=tremolo.it|pass=345 (?)}}&lt;br /&gt;
A test for checking if tremolo tables are implemented correctly.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=vibrato.it|pass=1189}}&lt;br /&gt;
A test for checking if vibrato tables are implemented correctly when old FX are disabled.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=VibratoDouble.it|pass=7804}}&lt;br /&gt;
Vibrato in the volume column should be applied separately from vibrato in the effect column. The two commands will add up when occuring at the same time. However, since there is only one vibrato effect memory for both commands, the volume column’s vibrato parameter has precedence if it is not 0.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=vibrato-oldfx.it|pass=1189}}&lt;br /&gt;
A test for checking if vibrato tables are implemented correctly when old FX are enabled. Vibrato is played backwards in this mode!&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=VibratoSweep0.it|pass=7134}}&lt;br /&gt;
Auto-vibrato should not be processed at all if the rate (speed) is 0. This is relevant for vibrato waveforms that do not start at zero, i.e. all except sine.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=VolColMemory.it|pass=1545}}&lt;br /&gt;
Volume column commands a, b, c and d (volume slide) share one effect memory, but it should not be shared with Dxy in the effect column. Furthermore, there is &#039;&#039;&#039;no&#039;&#039;&#039; unified effect memory across different kinds of volume column effects (that&#039;s how OpenMPT used to handle it up to revision 1544).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=vol-env-carry.it|pass=1781}}&lt;br /&gt;
Similar to flt-env-carry.it. This test case temporarily broke in revision 1481 and was fixed in revision 1781.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=Volume-Macro-Letters.it|pass=1465}}&lt;br /&gt;
This test demonstrates how Zxx macros are parsed in Impulse Tracker:&lt;br /&gt;
* Macros are evaluated only on the first tick.&lt;br /&gt;
* They appear to be parsed after note / instrument information has been read from the pattern, but before any other effects (excluding &amp;quot;Set Volume&amp;quot;).&lt;br /&gt;
* &#039;u&#039; and &#039;v&#039; macros seem to emit at least a value of 1, not 0 - v00 corresponds to Z01.&lt;br /&gt;
I am not quite sure why the first row with notes on it emits a filter value of 1, and I am not even completely sure why OpenMPT gets this right.&lt;br /&gt;
If interpreted correctly, the module should stay silent (minus slight filter artefacts, of course - but they should be nearly inaudible).&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=weirdloop.it|pass=0}}&lt;br /&gt;
A nice broken pattern loop. The voice should say “1 4 2 1 4 2” and then repeat forever “3 4 2”. Theoretically, this would even work in ModPlug Tracker 1.16, if it did not reset the Cxx target on song loop.&lt;br /&gt;
&lt;br /&gt;
{{Testcase|format=it|name=ZxxSecrets.it|pass=9855}}&lt;br /&gt;
Impulse Tracker supports three MIDI macro characters which are not documented in MIDI.TXT:&lt;br /&gt;
* &amp;lt;tt&amp;gt;h&amp;lt;/tt&amp;gt;: Host channel, i.e. the pattern channel in which the Zxx command is encountered (0-based).&lt;br /&gt;
* &amp;lt;tt&amp;gt;o&amp;lt;/tt&amp;gt;: The last used sample offset value. The high offset (SAx) is not taken into account. Note that offsets above 80h are not clamped, i.e. they generate MIDI command bytes (e.g. O90 would cause a note-on command to be emitted).&lt;br /&gt;
* &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt;: This command sends the current MIDI note if the channel is a MIDI channel, but on sample channels the current loop direction (forward = 0, backward = 1) of the sample is stored in the same memory location, so the macro evaluates to that instead of a note number.&lt;br /&gt;
&lt;br /&gt;
In addition, the MIDI messages FA (start song), FC (stop song) and FF (reset) reset the resonant filter parameters (cutoff = 127, resonance = 0) for all channels, but do not immediately update the filter coefficients.&lt;br /&gt;
&lt;br /&gt;
{{Testcase Summary}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Development|Test Cases/IT]]&lt;br /&gt;
[[Category:IT Format|Test Cases]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Keyboard_Actions&amp;diff=4937</id>
		<title>Manual: Keyboard Actions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Keyboard_Actions&amp;diff=4937"/>
		<updated>2025-06-07T13:42:58Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* Global Keys */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of all customisable keyboard actions in OpenMPT. They can be configured in the [[Manual: Setup/Keyboard|Keyboard Setup dialog]].&lt;br /&gt;
&lt;br /&gt;
Default key combinations listed in the tables below assume a US keyboard layout. Generally, alphanumeric keys in shortcuts will stay the same in other keyboard layouts (so &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; does not turn into &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Y&amp;lt;/kbd&amp;gt; on a German layout), with the exception of note entry keys, which are set up based on their position on the keyboard instead (so on a French keyboard, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; and &amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; are used for playing a C across three octaves even though the table below says &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; and &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;). Non-alphanumeric keys generally vary a lot between keyboard layouts, so there might not be a direct mapping to your keyboard layout — the key might have a completely different label or not exist at all. You can always review the &#039;&#039;actual&#039;&#039; key combinations used by OpenMPT on your setup by reviewing them in the Keyboard setup dialog.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Keyboard shortcuts that clash with the default text editing shortcuts of the operating system (e.g. &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;, etc.) are ignored when the input focus is within a text field.&lt;br /&gt;
&lt;br /&gt;
== Global Keys ==&lt;br /&gt;
&lt;br /&gt;
Global keyboard shortcuts work on most parts of OpenMPT as long as one of the program’s windows is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| File/New || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Creates a new song. The currently edited song is not closed, as OpenMPT can have multiple documents open at the same time.&lt;br /&gt;
|-&lt;br /&gt;
| File/Open || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;O&amp;lt;/kbd&amp;gt; || Opens one or more existing songs.&lt;br /&gt;
|-&lt;br /&gt;
| File/Append Module || || [[Manual: Module Merging|Appends]] (merges) the song data (samples, instruments, plugins, patterns and sequences) of one or more existing songs to the currently active song.&lt;br /&gt;
|-&lt;br /&gt;
| File/Close || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; || Closes the current song. You are prompted to save the song if it has been modified.&lt;br /&gt;
|-&lt;br /&gt;
| File/Close All || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt; || Closes all open songs. You are prompted to save modified songs.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Saves the song to disk.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save As || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Allows you to save the file with a new name or in another folder.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save Copy || || Allows you to save a copy of the file. The next Save action will update the file at its original location again.&lt;br /&gt;
|-&lt;br /&gt;
| File/Save As Template || || Creates a template from the current song.&lt;br /&gt;
|-&lt;br /&gt;
| File/Open Template || || Opens a file picker in the template module folder.&lt;br /&gt;
|-&lt;br /&gt;
| File/Stream Export || || Exports the current track into a lossless or lossy [[Manual: Saving and exporting#Stream Export|streaming file]].&lt;br /&gt;
|-&lt;br /&gt;
| File/Export as MIDI || || Exports the current track into the .mid format. See the section on [[Manual: Saving and exporting#MIDI Export|MIDI export]] for a detailed explanation of how this file is exported.&lt;br /&gt;
|-&lt;br /&gt;
| File/Export OPL Register Dump || || Exports the current track into one of several OPL register dump formats. See the section on [[Manual: Saving and exporting#OPL Export|OPL export]] for a detailed explanation of how this file is exported.&lt;br /&gt;
|-&lt;br /&gt;
| File/Compatibility Export || || Exports the current track without any [[Manual: Saving and exporting#Compatibility Export|file format hacks]] to its original format.&lt;br /&gt;
|-&lt;br /&gt;
| File/Import MIDI Library || || Imports the MIDI Instrument Library of your choosing. The MIDI Library can be accessed from the [[Manual: Tree View#MIDI Library|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| File/Add Sound Bank || || Imports a sound bank of your choosing. Sound banks can be accessed from the [[Manual: Tree View#Sound Banks|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| Previous Document || || Goes to the previous module file that is open (these are visible in the Windows Menu).&lt;br /&gt;
|-&lt;br /&gt;
| Next Document || || Goes to the next module file that is open (these are visible in the Windows Menu).  &lt;br /&gt;
|-&lt;br /&gt;
| Play Song / Pause Song || &amp;lt;kbd&amp;gt;F5&amp;lt;/kbd&amp;gt; || Toggles the playback of the current track. The playback cursor is not reset when using this toggle; that is, it plays from where the cursor left off when it was last pressed.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song / Stop Song || || Toggles the playback of the current track. The playback cursor is reset to the start of the song.&lt;br /&gt;
|-&lt;br /&gt;
| Pause Song || &amp;lt;kbd&amp;gt;F8&amp;lt;/kbd&amp;gt; || Only stops the playback of the current track but does not reset the playback pointer.&lt;br /&gt;
|-&lt;br /&gt;
| Stop Song || &amp;lt;kbd&amp;gt;Escape&amp;lt;/kbd&amp;gt; || Stops the playback of the current track and resets the playback cursor to the start of the song.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Start || &amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; || Resets the playback cursor to the very first row and begins playback from there.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Cursor / Pause || || Resets the playback cursor to the row where the editing cursor is set, and begins playback from there if playback is currently stopped, otherwise it pauses playback. Playback will continue until the end of the track.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Cursor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F6&amp;lt;/kbd&amp;gt; || Resets the playback cursor to the row where the editing cursor is set, and begins playback from there. Playback will continue until the end of the track.&lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Pattern Start / Pause || || Resets the playback cursor to the first row of the currently edited pattern and begins playback from there if playback is currently stopped, otherwise it pauses playback. &lt;br /&gt;
|-&lt;br /&gt;
| Play Song from Pattern Start || || Resets the playback cursor to the first row of the currently edited pattern and begins playback from there.&lt;br /&gt;
|-&lt;br /&gt;
| Play Pattern from Start || &amp;lt;kbd&amp;gt;F7&amp;lt;/kbd&amp;gt; || Loops the current pattern, starting at the first row of the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Play Pattern from Cursor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F7&amp;lt;/kbd&amp;gt; || Loops the current pattern, starting at the row where the editing cursor is currently placed.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Loop Song || || Enables or disables the song loop status.&lt;br /&gt;
|-&lt;br /&gt;
| Panic || || Stops all sample, OPL and plugin instrument voices.&lt;br /&gt;
|-&lt;br /&gt;
| Estimate Song Length || || Estimates the playback length of the entire track.&lt;br /&gt;
|-&lt;br /&gt;
| Show Approx. Real BPM || || Estimates the beats per minute of the song, based on the current tempo and the number of ticks per row, plus the Tempo Mode in the Song Properties dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle MIDI Record || &amp;lt;kbd&amp;gt;F9&amp;lt;/kbd&amp;gt; || Toggles the MIDI Record option.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Tempo || || Increases the tempo of the currently playing module by 1 BPM. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Tempo || || Decreases the tempo of the currently playing module by 1 BPM. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Tempo (Fine) || || Increases the tempo of the currently playing module by 0.1 BPM if the module format supports fractional tempos. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Tempo (Fine) || || Decreases the tempo of the currently playing module by 0.1 BPM if the module format supports fractional tempos. This does not modify the initial tempo setting of the song, just current playback and can be overridden by tempo pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Ticks per Row || || Increases the speed of the currently playing module by 1 tick per row. This does not modify the initial Ticks per Row setting of the song, just current playback and can be overridden by speed pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Ticks per Row || || Decreases the speed of the currently playing module by 1 tick per row. This does not modify the initial Ticks per Row setting of the song, just current playback and can be overridden by speed pattern commands.&lt;br /&gt;
|-&lt;br /&gt;
| Undo || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; || Rescinds the last edit in the pattern or sample editor.&lt;br /&gt;
|-&lt;br /&gt;
| Redo || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Y&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt; || Reapplies the last undone action.&lt;br /&gt;
|-&lt;br /&gt;
| Cut || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;X&amp;lt;/kbd&amp;gt; || Copies the selected pattern, sample or instrument data into the clipboard, then removes it from the selection it occupies.&lt;br /&gt;
|-&lt;br /&gt;
| Copy || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Copies the selected pattern, sample or instrument data into the clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Paste || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Pastes data from the clipboard. In the pattern editor, it is pasted at the location of the cursor, overwriting any pattern data that falls within the paste area. With sample data, clipboard contents replace the &#039;&#039;&#039;whole&#039;&#039;&#039; sample.&lt;br /&gt;
|-&lt;br /&gt;
| Mix Paste || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Mixes clipboard contents with existing data. In the pattern editor, clipboard contents are pasted in the same row at the same column of the current (visible) pattern where the cursor is located, except where there is already any data in any corresponding field of the paste area. In the sample editor, the source and clipboard sample waveforms are mixed together.&lt;br /&gt;
|-&lt;br /&gt;
| Mix Paste (IT Style) || || For detailed differences between Mix Paste and Mix Paste (IT Style), consult the [[Manual: Patterns#Paste Modes|Pattern Editor help]]. The two commands are identical when used in the sample editor.&lt;br /&gt;
|-&lt;br /&gt;
| Paste Flood || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Clipboard contents are pasted from the cursor, repeating the data paste until every row in the pattern has been filled and pasting over any data in its path.&lt;br /&gt;
|-&lt;br /&gt;
| Push Forward Paste (Insert) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Patterns: Clipboard contents are inserted at the row of the cursor, and pushing all data below that row further down the pattern. Any data of the affected channels pushed beyond the pattern’s last row is deleted. Samples: The sample data from the clipboard replaces the current selection. If there is no selection, the sample is inserted at the last selected position.&lt;br /&gt;
|-&lt;br /&gt;
| Select All || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;5&amp;lt;/kbd&amp;gt; || Selects all pattern or sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Find / Replace || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Opens the Find/Replace dialog, which allows you to search for and/or replace given pattern data. Find starts from the cursor location.&lt;br /&gt;
|-&lt;br /&gt;
| Find Next || &amp;lt;kbd&amp;gt;F3&amp;lt;/kbd&amp;gt; || Applies the current Find settings and searches for the next data that matches it, starting from the current cursor location.&lt;br /&gt;
|-&lt;br /&gt;
| View General || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Opens the [[Manual: General|General Tab]] of the currently focussed module.&lt;br /&gt;
|-&lt;br /&gt;
| View Pattern || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Patterns|Pattern Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Samples || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Samples|Sample Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Instruments || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Instruments|Instrument Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| View Comments || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F9&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Comments|Comments Tab]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Main Toolbar || || Shows / hides the [[Manual: Main Toolbar|Main Toolbar]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Tree View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F2&amp;lt;/kbd&amp;gt; || Shows / hides the [[Manual: Tree View|Tree View]].&lt;br /&gt;
|-&lt;br /&gt;
| View Options || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F1&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Setup|Setup dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Channel Manager || || Opens the [[Manual: Channel Manager|Channel Manager]].&lt;br /&gt;
|-&lt;br /&gt;
| View Plugin Manager || || Opens the [[Manual: Plugin Manager|Plugin Manager dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Song Properties || || Opens the [[Manual: Song Properties|Song Properties dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Global Tempo Swing Settings || || Opens the [[Manual: Tempo Swing Settings|Tempo Swing Settings dialog]] for the song’s global time signature. If modern tempo mode is not enabled yet, the [[Manual: Song Properties|Song Properties dialog]] is opened instead so that it can be enabled.&lt;br /&gt;
|-&lt;br /&gt;
| View Zxx Macro Configuration || || Opens the [[Manual: Macro Configuration|MIDI Macro Configuration]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| View MIDI Mapping || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F3&amp;lt;/kbd&amp;gt; || Opens the [[Manual: MIDI Mapping|MIDI Mapping dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| View Edit History || || Opens the [[Manual: Edit History|Edit History]].&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Between Upper / Lower View || || Switches keyboard focus between the upper and lower half of the currently focussed song view.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Instrument Library  || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Sets keyboard focus to the [[Manual: Tree View|Instrument Library]], or switches back to the last used editor window if the tree view already has focus.&lt;br /&gt;
|-&lt;br /&gt;
| Help || &amp;lt;kbd&amp;gt;F1&amp;lt;/kbd&amp;gt; || Opens the manual.&lt;br /&gt;
|-&lt;br /&gt;
| Open Context Menu || &amp;lt;kbd&amp;gt;▤ Application&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Opens the context menu for the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad/&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Changes the current instrument to the previous one. In the sample editor, the previous sample is chosen.&lt;br /&gt;
|-&lt;br /&gt;
| Next Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad*&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Changes the current instrument to the next one. In the sample editor, the next sample is chosen.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Octave || &amp;lt;kbd&amp;gt;Numpad/&amp;lt;/kbd&amp;gt; || Changes the current octave to the next lower octave.&lt;br /&gt;
|-&lt;br /&gt;
| Next Octave || &amp;lt;kbd&amp;gt;Numpad*&amp;lt;/kbd&amp;gt; || Changes the current octave to the next higher octave.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Changes the current pattern to the previous one in the pattern order.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Changes the current pattern to the next one in the pattern order.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current measure) || || Changes the current pattern to the previous one in the pattern order once the current measure has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current measure) || || Changes the current pattern to the next one in the pattern order once the current measure has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current beat) || || Changes the current pattern to the previous one in the pattern order once the current beat has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current beat) || || Changes the current pattern to the next one in the pattern order once the current beat has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order (Transition at end of current row) || || Changes the current pattern to the previous one in the pattern order once the current row has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Previous Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order (Transition at end of current row) || || Changes the current pattern to the next one in the pattern order once the current row has finished playing. The new pattern continues playing at the same position. If playback is paused, this shortcut is identical to “Next Order”.&lt;br /&gt;
|-&lt;br /&gt;
| Dummy Shortcut || || Some keyboard shortcuts are created automatically by OpenMPT (e.g. the combinations of pressing the selection key together with navigation keys). If you need to prevent OpenMPT from automatically assigning a specific key combination, you can assign it to this dummy shortcut instead, so it will not be usable by automatically generated shortcuts. This will also prevent the key combination from being used by new default key combinations added by future OpenMPT updates.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pattern ==&lt;br /&gt;
&lt;br /&gt;
=== Order List ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts operate while the cursor focus is in the Order List.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Delete Order || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Erases the currently selected pattern(s) in the Order List (the pattern itself is not removed, only the reference).&lt;br /&gt;
|-&lt;br /&gt;
| Insert Order || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Duplicates the currently selected pattern &#039;&#039;reference&#039;&#039;(s) in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Separator || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts a separator item (+++) at the next position.&lt;br /&gt;
|-&lt;br /&gt;
| Copy Orders || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Copies the currently selected pattern &#039;&#039;references&#039;&#039; in the Order List to the clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Pattern || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Resets the Pattern Editor to show the highlighted pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pattern Editor || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor focus to the Pattern Editor. There is also a more general version of this shortcut that works for all other song views as well (“Toggle Between Upper / Lower View”).&lt;br /&gt;
|-&lt;br /&gt;
| Previous Order || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Selects the previous pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Next Order || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Selects the following pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| First Order || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Selects the first pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Last Order || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Selects the final pattern in the Order List.&lt;br /&gt;
|-&lt;br /&gt;
| Pattern Index Digit [0 - 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the respective numeral into the pattern ID box.&lt;br /&gt;
|-&lt;br /&gt;
| Increase Pattern Index || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Adds one to the pattern number, up to the highest indexed pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Decrease Pattern Index || &amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Subtracts one from the pattern number, to a minimum of index 0.&lt;br /&gt;
|-&lt;br /&gt;
| Separator Index || &amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Adds a separator pattern item (+++) at the current position.&lt;br /&gt;
|-&lt;br /&gt;
| Stop Index || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Adds a stop pattern item (---) at the current position.&lt;br /&gt;
|-&lt;br /&gt;
| Lock Playback to Selection || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Song playback is locked to the patterns in the current order selection.&lt;br /&gt;
|-&lt;br /&gt;
| Unlock Playback || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || If playback has been limited to an order selection before, the playback lock can be removed here.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current pattern) || &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current pattern has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current measure) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current measure has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current beat) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current beat has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Queue Pattern (Transition at end of current row) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || The selected order list item is queued to be played next, after the current row has finished playing.&lt;br /&gt;
|-&lt;br /&gt;
| Stream Export || || Opens the [[Manual: Saving and exporting#Stream Export|Wave Export dialog]] for the selected patterns.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quick Channel Settings ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts operate while the [[Manual: Quick Channel Settings|Quick Channel Settings dialog]] is open.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Previous Channel || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Shows the channel settings for the previous channel.&lt;br /&gt;
|-&lt;br /&gt;
| Next Channel || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Shows the channel settings for the next channel.&lt;br /&gt;
|-&lt;br /&gt;
| Pick Color from Previous Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Assigns the color of the previous channel to the current channel.&lt;br /&gt;
|-&lt;br /&gt;
| Pick Color from Next Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Assigns the color of the next channel to the current channel.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pattern Editor || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Closes the dialog and returns to the Pattern Editor.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== General Context ===&lt;br /&gt;
&lt;br /&gt;
These keyboard shortcuts will work if the cursor focus is within any of the columns of the Pattern Editor, except where noted. When navigating (moving the cursor) to before the first row or after the last row in the pattern, the cursor “wraps” to the other side of the same pattern, if the “Cursor Wrap” option is enabled (in the Options section of the [[Manual: Setup/General|General tab]] of the Setup dialog). If navigating beyond the first or last row when the “Continuous Scroll” option is enabled, the cursor will instead move to the previous/next pattern in the order list. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|- &lt;br /&gt;
| Navigate Down by 1 Row || &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor to the next row in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Up by 1 Row || &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor to the previous row in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Down by Spacing || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor down by the value in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Up by Spacing || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor up by the value in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Left || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the cursor to the previous column in the same row, going to the previous channel′s last column if moving from the first column of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate Right || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the cursor to the next column in the same row, going to the next channel’s first column if moving from the last column of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate to Next Channel || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor to the same column in the same row in the next channel.&lt;br /&gt;
|- &lt;br /&gt;
| Navigate to Previous Channel || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the cursor to the same column in the same row in the previous channel.&lt;br /&gt;
|- &lt;br /&gt;
| Jump Down by Measure || &amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Up by Measure || &amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Down by Beat || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump Up by Beat || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Down to Measure || || Moves the cursor down to the first row of the next measure, as determined by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Up to Measure || || Moves the cursor up to the first row of the previous measure, as determined by the number in the Rows/measure field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Down to Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the cursor down to the first row of the next beat, as determined by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Snap Up to Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the cursor up to the first row of the previous beat, as determined by the number in the Rows/beat field (of the Song Properties dialog).&lt;br /&gt;
|- &lt;br /&gt;
| Jump to Previous Entry in Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the cursor to the next non-empty cell (note, instrument, etc.) of the currently selected column above the current cursor position. When combined with the Selection key, the selection will be extended to the next non-empty cell in the current pattern only. Otherwise, this command continues to search for a non-empty cell in the previous patterns.&lt;br /&gt;
|-&lt;br /&gt;
| Jump to Next Entry in Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the cursor to the next non-empty cell (note, instrument, etc.) of the currently selected column below the current cursor position. When combined with the Selection key, the selection will be extended to the next non-empty cell in the current pattern only. Otherwise, this command continues to search for a non-empty cell in the next patterns.&lt;br /&gt;
|-&lt;br /&gt;
| Go to First Channel || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first column of the first channel in the same row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to First Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first row of the same channel in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Go to First Row of First Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the cursor to the first column of the first channel in the first row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Channel || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last column of the last channel in the same row.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last row of the same channel in the same column.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Last Row of Last Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the cursor to the last column of the last channel in the last row. &lt;br /&gt;
|- &lt;br /&gt;
| Go to note column || || Moves the cursor to the note column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to instrument column || || Moves the cursor to the instrument column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to volume effect column || || Moves the cursor to the volume effect column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to effect comamnd column || || Moves the cursor to the effect command column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Go to effect parameter column || || Moves the cursor to the effect parameter column of the current pattern cell.&lt;br /&gt;
|- &lt;br /&gt;
| Previous Pattern || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Displays the previous pattern in the order list, moving the cursor to its equivalent position in it.&lt;br /&gt;
|- &lt;br /&gt;
| Next Pattern || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Displays the next pattern in the order list, moving the cursor to its equivalent position in it.&lt;br /&gt;
|- &lt;br /&gt;
| Previous Sequence || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Cycles to the previous sequence. If the current sequence is the first, the last sequence is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Next Sequence || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Cycles to the next sequence. If the current sequence is the last, the first sequence is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Left || || Scrolls the pattern editor to the left without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Right || || Scrolls the pattern editor to the right without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Up || || Scrolls the pattern editor up without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Scroll Down || || Scrolls the pattern editor down without changing the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Selection Key || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; || The modifier key to be used to extend the selection when navigating with keyboard shortcuts.&lt;br /&gt;
|- &lt;br /&gt;
| Copy Select Key || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt; || The modifier key to be used to copy the selection when dragging with the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Select Channel / Select All || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Selects all events of the channel where the cursor is located in the current pattern, or all events in the pattern if the entire channel is already selected.&lt;br /&gt;
|- &lt;br /&gt;
| Select Column || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Selects the column in which the cursor is located in all rows of the current pattern.&lt;br /&gt;
|- &lt;br /&gt;
| Select Row || || Completely selects all rows covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Select Event || || Completely selects all events covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Select Beat || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Extends the current selection so that it starts on the first row of a beat and ends on the last row of a beat.&lt;br /&gt;
|- &lt;br /&gt;
| Select Measure || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Extends the current selection so that it starts on the first row of a measure and ends on the last row of a measure.&lt;br /&gt;
|- &lt;br /&gt;
| Lose Selection || || Resets the selection rectangle to contain only the cursor position.&lt;br /&gt;
|- &lt;br /&gt;
| Copy and Lose Selection || || Copies the selected events to the clipboard and unselects them.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Copy || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Copies only one event of data (where the cursor is located) to OpenMPT′s “Quick” clipboard; the standard clipboard is not erased. Each column pair has its own Quick clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Paste || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Pastes the data in OpenMPT′s “Quick” clipboard to the location of the cursor. The data last saved in that column’s clipboard will be pasted in the cursor′s corresponding column.&lt;br /&gt;
|-&lt;br /&gt;
| Cut to Pattern Channel Clipboard || || Copies and clears the entire channel the cursor is located in. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Channel Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Cut to Pattern Clipboard || || Copies and clears the entire current pattern. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Copy to Pattern Channel Clipboard || || Copies the entire channel the cursor is located in. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Channel Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Copy to Pattern Clipboard || || Copies the entire current pattern. The content is copied is into a separate clipboard that can only be pasted using the “Paste from Pattern Clipboard” command.&lt;br /&gt;
|- &lt;br /&gt;
| Paste from Pattern Channel Clipboard || || Replaces the contents of the channel the cursor is located in with the contents of the pattern channel clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Paste from Pattern Clipboard || || Replaces the contents of the current pattern with the contents of the pattern clipboard.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Clipboard Manager || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Toggles the visibility of the pattern clipboard manager.&lt;br /&gt;
|-&lt;br /&gt;
| Cycle to Previous Clipboard || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Makes the previous internal clipboard the current clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Cycle to Next Clipboard || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Makes the next internal clipboard the current clipboard.&lt;br /&gt;
|-&lt;br /&gt;
| Clear Row || || Deletes all event data in the same row in the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the selected pattern data, or just the data under the current cursor position if no selection has been made.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field (IT Style) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;.&amp;lt;/kbd&amp;gt; || Same as “Clear field”, but also clears the instrument number if a note event is selected.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Row and Step || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Clear row”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field and Step || || Same as “Clear field”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Clear Field and Step (IT Style) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Clear field (IT Style)”, but also moves the cursor by the number of rows in the Row Spacing field.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same number of rows as the selection, affecting the same number of channels where the selection extends; the data is moved up to replace the cleared data, and empty rows are added at the end of the affected channels.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (All Channels) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same amount of rows as the selection, on all channels; the data is moved up to replace the cleared data, and empty rows are added at the end of the pattern.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (Global) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same number of rows as the selection, affecting the same number of channels where the selection extends; this also affect all following patterns as no empty rows are inserted.&lt;br /&gt;
|- &lt;br /&gt;
| Delete Row(s) (All Channels, Global) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the same amount of rows as the selection, on all channels; this also affect all following patterns as no empty rows are inserted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in the selected channel down by the amount of selected rows. Event data in the last row of those channels is deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (All Channels) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in all channels down by the amount of selected rows. Event data in the last row of all channels is deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (Global) || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in the selected channel down by the amount of selected rows. Event data in the last rows is pushed to the next pattern(s), where the same action is repeated.&lt;br /&gt;
|- &lt;br /&gt;
| Insert Row(s) (All Channels, Global) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Moves event data in the current and following rows in all channels down by the amount of selected rows. Event data in the last rows is pushed to the next pattern(s), where the same action is repeated.&lt;br /&gt;
|- &lt;br /&gt;
| Mute Current Channel || &amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Toggles the sound output (mute) for the channel(s) covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Solo Current Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Toggles the sound output (mute) for all channels except the channel(s) covered by the current selection.&lt;br /&gt;
|- &lt;br /&gt;
| Unmute All Channels || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F10&amp;lt;/kbd&amp;gt; || Unmutes the sound output for all channels.&lt;br /&gt;
|- &lt;br /&gt;
| (Un)mute Channel on Pattern Transition || || Toggles the sound output (mute) for the channel(s) covered by the current selection, but the change takes place when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Unmute All Channels on Pattern Transition || || Unmutes the sound output for all channels when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Solo Channel on Pattern Transition || || Toggles the sound output (mute) for all channels except the one where the cursor is located, but the change takes place when the current pattern is finished playing.&lt;br /&gt;
|- &lt;br /&gt;
| Channel Record Select || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Toggles the channel(s) covered by the current selection to belong to the primary record group.&lt;br /&gt;
|- &lt;br /&gt;
| Channel Split Record Select || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Toggles the channel(s) covered by the current selection to belong to the [[Manual: Keyboard Split|split record]] group.&lt;br /&gt;
|- &lt;br /&gt;
| Reset Channel || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Stops all note processing, and resets all channel variables to their defaults (volume, panning, etc.) on the selected channel(s).&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Channel || || Changes the pitch of all notes on the selected channel in all patterns by a selectable amount of semitones.&lt;br /&gt;
|- &lt;br /&gt;
| Duplicate Channel || || Adds a new channel to the module and carries over all note data from the channel containing the edit cursor to this new channel.&lt;br /&gt;
|- &lt;br /&gt;
| Add Channel Before Current || || Adds a new empty channel before the channel containing the edit cursor.&lt;br /&gt;
|- &lt;br /&gt;
| Add Channel After Current || || Adds a new empty channel after the channel containing the edit cursor.&lt;br /&gt;
|- &lt;br /&gt;
| Remove Current || || Removes the channel containing the edit cursor. If the channel contains any data on any pattern, a confirmation prompt is shown.&lt;br /&gt;
|- &lt;br /&gt;
| Move Channels to Left || || Moves the channels covered by the current selection (if there is none, just the channel where the edit cursor is located) to the left by one channel.&lt;br /&gt;
|- &lt;br /&gt;
| Move Channels to Right || || Moves the channels covered by the current selection (if there is none, just the channel where the edit cursor is located) to the right by one channel.&lt;br /&gt;
|- &lt;br /&gt;
| Quick Channel Settings || || Opens the [[Manual: Quick Channel Settings|Quick Channel Settings dialog]] for the channel where the cursor is located.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises by one the note number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers by one the note number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises by one the octave number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers by one the octave number of the currently selected notes.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Custom || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || Lowers or raises the selected notes by an arbitrary amount of semitones.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose Custom (Quick) || || Applies a previously chosen custom transpose amount. If no amount has been chosen before, the behaviour of this shortcut is identical to Transpose Custom.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry +1 || || Increases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry -1 || || Decreases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one.&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry Up (Coarse) || || Increases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one octave (notes), 10 (instruments and volume effect parameters) or 16 (effect parameters).&lt;br /&gt;
|- &lt;br /&gt;
| Data Entry Down (Coarse) || || Decreases the data (notes, instruments, effect parameters) in the currently selected pattern cells by one octave (notes), 10 (instruments and volume effect parameters) or 16 (effect parameters).&lt;br /&gt;
|- &lt;br /&gt;
| Insert New Pattern || || Inserts a new blank pattern after the current pattern, displays it, and moves the cursor to the same position in it. Also functions when cursor focus is in the Order list.&lt;br /&gt;
|- &lt;br /&gt;
| Duplicate Pattern || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Inserts a new pattern with the current pattern′s contents.&lt;br /&gt;
|- &lt;br /&gt;
| Split Pattern || || Splits the current pattern at the cursor location.&lt;br /&gt;
|- &lt;br /&gt;
| Amplify Selection || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Opens a dialog to change the note volume commands of the selected volume data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Note || || Transitions smoothly (using all available notes) between notes in the selection, filling in (and replacing if necessary) all rows with new note data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Instrument || || Transitions smoothly (using all available instrument numbers) between instrument numbers in the selection, filling in all rows with new instrument data.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Volume || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;J&amp;lt;/kbd&amp;gt; || Transitions smoothly between data amounts in the selection, filling in (and replacing if necessary) all rows with new volume effects. The first and last rows of the selection must contain the same volume effect, or one of the two rows might be empty.&lt;br /&gt;
|- &lt;br /&gt;
| Interpolate Effect || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;K&amp;lt;/kbd&amp;gt; || Transitions smoothly between data amounts in the selection, filling in (and replacing if necessary) all rows with new effect data. The first and last rows of the selection must contain the same effect, or one of the two rows might be empty. Different effects within the selection are not overwritten.&lt;br /&gt;
|- &lt;br /&gt;
| Apply Current Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Applies the current instrument to all cells in the selection that contain note data.&lt;br /&gt;
|- &lt;br /&gt;
| Apply Current Instrument to Existing Only || || Applies the current instrument to all cells in the selection that contain an instrument numbers. Notes without instrument numbers are not updated.&lt;br /&gt;
|- &lt;br /&gt;
| Grow Selection || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || “Expands” the selection by doubling the number of the selected rows, and evenly spacing out the event data within it. The expansion will replace event data below it in the same channels as the selection.&lt;br /&gt;
|- &lt;br /&gt;
| Shrink Selection || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || “Shrinks” the selection by deleting every other row of the selection. However, if only part of any row is selected, the data corresponding to the deleted selected data is also deleted.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Follow Song || &amp;lt;kbd&amp;gt;F11&amp;lt;/kbd&amp;gt; || Toggles the “Follow Song” function.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Loop Pattern || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F11&amp;lt;/kbd&amp;gt; || Toggles the Loop Pattern feature. &lt;br /&gt;
|- &lt;br /&gt;
| Play Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Process and play only the events in the current row where the cursor is located.&lt;br /&gt;
|- &lt;br /&gt;
| Go to Row/Channel/… || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Go To|Go To]] dialog to allow you to jump to a different position in the module.&lt;br /&gt;
|- &lt;br /&gt;
| Pick Up Nearest Instrument Number || || Seeks for the nearest instrument number in the pattern channel the cursor currently is in. If an instrument number is found, it is set as the currently active instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Enable Recording || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Toggles the Event Record feature. When enabled, patterns may be edited.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Metronome || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Toggles the [[Manual: Metronome Settings|Metronome]].&lt;br /&gt;
|- &lt;br /&gt;
| Set Edit Step on Note Entry || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt; || The modifier key(s) that, when pressed with digits 0-9, allows you to change the Edit Step amount without using the mouse or moving the cursor focus out of the editor.&lt;br /&gt;
|- &lt;br /&gt;
| Increase Edit Step || || Increases the Edit Step by one row.&lt;br /&gt;
|- &lt;br /&gt;
| Decrease Edit Step || || Decreases the Edit Step by one row.&lt;br /&gt;
|- &lt;br /&gt;
| Switch to Order List || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Toggles the cursor focus between the pattern editor and the current pattern in the Pattern Order list. There is also a more general version of this shortcut that works for all other song views as well (“Toggle Between Upper / Lower View”).&lt;br /&gt;
|- &lt;br /&gt;
| Toggle PC Event/Instrument Plugin Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;/&amp;lt;/kbd&amp;gt; || Opens the editor for the plugin of the selected Parameter Control Event or instrument number.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Channel’s Plugin Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the editor for the current channel′s assigned plugin.&lt;br /&gt;
|- &lt;br /&gt;
| Show Note Properties || &amp;lt;kbd&amp;gt;▤ Application&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Note Properties|Note Properties]] dialog, where you can assign any event data to the current row of the current channel.&lt;br /&gt;
|- &lt;br /&gt;
| Show Pattern Properties || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Pattern Properties|Pattern Properties]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Split Keyboard Settings Dialog || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Keyboard Split|Keyboard Split]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| Open Effect Visualizer || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Parameter Editor|Parameter Editor]] dialog.&lt;br /&gt;
|- &lt;br /&gt;
| Show Chord Editor || || opens the [[Manual: Chord Editor|Chord Editor]] dialog. &lt;br /&gt;
|-&lt;br /&gt;
| Show Context (Right-Click) Menu || || Opens the edit context menu at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Channel Context (Right-Click) Menu || || Opens the channel context menu at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Channel Plugin Context (Right-Click) Menu || || Opens the plugin context menu of the channel at the cursor location without using the mouse.&lt;br /&gt;
|- &lt;br /&gt;
| Show Playback Time at Current Row || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Shows the estimated time within the track at the start of the current row.&lt;br /&gt;
|- &lt;br /&gt;
| Lock Playback to Rows || || If a selection is made, playback is locked to the selected rows. Otherwise, a previous playback lock is removed.&lt;br /&gt;
|-&lt;br /&gt;
| Quantize Settings || &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Opens the record quantization settings.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle row playback when navigating ||  || Toggles the state of the &amp;quot;play whole row when navigating&amp;quot; feature. The new state of the feature is announced in the status bar.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Overflow Paste || || When enabled, pasting will continue to the next pattern if the data overflows the current pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Note Off Record (PC Keyboard) || || Toggles the recording of Note Off events from the PC keyboard in the pattern editor (also configurable from the [[Manual: Setup/General#Record note off|General setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Note Off Record (MIDI) || || Toggles the recording of Note Off events from MIDI in the pattern editor (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Apply Octave Transpose to incoming MIDI Notes || || Toggles application of the base octave transposition to notes received via MIDI in the pattern editor (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Continue Song when MIDI Note is received || || Toggles whether pattern playback continues when a note is received via MIDI (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Respond to Play / Continue / Stop Song MIDI messages || || Toggles whether pattern playback starts / stops / continues when the corresponding MIDI commands are received (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI Velocity || || Toggles whether MIDI velocity is recorded (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI Pitch Bend || || Toggles whether MIDI pitch bends are recorded to patterns (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Record MIDI CCs || || Toggles whether MIDI CC events are recorded to patterns (also configurable from the [[Manual: Setup/MIDI#Record Note Off|MIDI setup]] page).&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Instrument Column Visibility || || Shows or hides the instrument column.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Volume Column Visibility || || Shows or hides the volume column.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Effect Column Visibility || || Shows or hides the effect column.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Note Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the note column (the first column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Base Octave [note] || &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;W&amp;lt;/kbd&amp;gt;, ... || Enters a note in the octave indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +1 [note] || &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt;, ... || Enters a note in the next higher octave indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +2 [note] || &amp;lt;kbd&amp;gt;Z&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;X&amp;lt;/kbd&amp;gt;, ... || Enters a note two octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +3 [note] || || Enters a note three octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Base Octave +4 [note] || || Enters a note four octaves higher than the one indicated in the Octave field.&lt;br /&gt;
|-&lt;br /&gt;
| Set Octave [0 – 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Sets the selected note’s octave.&lt;br /&gt;
|-&lt;br /&gt;
| Chord Modifier || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt; || The modifier key(s) that calls a chord rather than a note. The chords are set and assigned in the [[Manual: Chord Editor|Chord Editor]].&lt;br /&gt;
|-&lt;br /&gt;
| Note Cut || &amp;lt;kbd&amp;gt;`&amp;lt;/kbd&amp;gt; || Enters a Note Cut command (^^). Note: The default shortcut is position-independent and is bound to the key that is usually left of &amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt;. &lt;br /&gt;
|-&lt;br /&gt;
| Note Off || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a Note Off command (==). Note: The default shortcut is position-independent and is bound to the key that is usually left of &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Note Fade || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a Note Fade command (~~). Note: The default shortcut is position-independent and is bound to the key that is usually lef of &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Control || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Enters an absolute [[Manual:_Parameter_Control_Events|Parameter Control event]] (PC). Note: The default shortcut is position-independent and is bound to the key that is usually right of &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Control (Smooth) || &amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Enters a smooth sliding Parameter Control event (PCs). Note: The default shortcut is position-independent and is bound to the key that is usually right of &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Instrument Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the instrument column (the second column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Set Instrument Digit [0 – 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the instrument field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the volume column (the third column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Set Volume Digit [0 - 9] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the volume parameter field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
| Set Volume Digit [A - F] || || Enters the digit into the rightmost place in the volume parameter field, moving the existing digits to the left. By default, volume column parameters are shown in decimal and these shortcuts are not assigned. You can use them after enabling the [[Manual: Hidden Settings#.5BPattern Editor.5D|Pattern Editor.VolumeColumnInHex]] hidden setting.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume || &amp;lt;kbd&amp;gt;V&amp;lt;/kbd&amp;gt; || Enters a note volume (vxx) command into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Panning || &amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Enters a panning command (pxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume Slide Up || &amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Enters volume slide up (cxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Volume Slide Down || &amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Enters a volume slide down (dxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Fine Volume Slide Up || &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Enters a fine volume slide up (axx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Fine Volume Slide Down || &amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Enters a fine volume slide down (bxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Vibrato Speed || &amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || Enters a vibrato speed command (uxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Vibrato Depth || &amp;lt;kbd&amp;gt;H&amp;lt;/kbd&amp;gt; || Enters a vibrato depth command (hxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - XM Pan Slide Left || &amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enters a pan slide to the left (lxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - XM Pan Slide Right || &amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Enters a pan slide to the right (rxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Tone Portamento || &amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt; || Enters a tone portamento command (gxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Portamento Up || &amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enters a pitch bend up command (fxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Portamento Down || &amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Enters a pitch bend down command (exx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Volume Command - Offset || &amp;lt;kbd&amp;gt;O&amp;lt;/kbd&amp;gt; || Enters a coarse sample offset command (oxx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the effect column (the fourth column). Alphanumeric effect letters (0-9, A-Z) are currently not editable — they are automatically assigned to the respective keys on your keyboard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Smooth MIDI Macro Slide || &amp;lt;kbd&amp;gt;\&amp;lt;/kbd&amp;gt; || Enters a Smooth MIDI Macro Slide (\xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Combined Note Delay and Note Cut || &amp;lt;kbd&amp;gt;;&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;;&amp;lt;/kbd&amp;gt; || Enters a Delay-Cut (:xy) command into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Parameter Extension Command || &amp;lt;kbd&amp;gt;/&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Parameter Extension Command]] (#xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Finetune || &amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Finetune Command]] (+xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Finetune (Smooth) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;=&amp;lt;/kbd&amp;gt; || Enters a [[Manual: Effect Reference#Effect Column 5|Smooth Finetune Command]] (*xx) into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Parameter Column ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the pattern editor has focus and the cursor is in the effect parameter column (the fifth column).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description &lt;br /&gt;
|-&lt;br /&gt;
| Effect Parameter Digit [0 – F] || &amp;lt;kbd&amp;gt;0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Numpad0&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;Numpad9&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enters the digit into the rightmost place in the effect parameter field, moving the existing digits to the left.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Samples|Samples Tab]] is active.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Trim Sample around Loop Points || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || Trims the sample to the selection, if there is one. Otherwise, if loop points are specified, all sample data outside of these start/end times are deleted.&lt;br /&gt;
|-&lt;br /&gt;
| Trim to Loop End || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;T&amp;lt;/kbd&amp;gt; || If loop points are specified, all sample data past the loop end is deleted.&lt;br /&gt;
|-&lt;br /&gt;
| Silence Sample Selection || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || All of the sample data within the selected area is set to zero, effectively placing silence in that span.&lt;br /&gt;
|-&lt;br /&gt;
| Normalize Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;N&amp;lt;/kbd&amp;gt; || Applies Normalisation to the sample.&lt;br /&gt;
|-&lt;br /&gt;
| Amplify Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Amplify|Amplify]] dialog, allowing you to alter the volume of the sample and apply Fade In or Fade Out (from / to silence).&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Puts the selected sample data in reverse order, so it is being played backwards.&lt;br /&gt;
|-&lt;br /&gt;
| Delete Sample Selection || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the sample data within the selection, moving the remaining data together.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Sample Drawing || || Turns sample drawing mode on or off.&lt;br /&gt;
|-&lt;br /&gt;
| Add Silence / Create Sample || || Opens the dialog for adding silence, resizing samples and initializing FM instruments.&lt;br /&gt;
|-&lt;br /&gt;
| Configure Sample Grid || || Opens the dialog for setting the sample grid properties.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom In || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Increases the data-to-display ratio, effectively zooming in to show more graphic detail of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom Out || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Decreases the data-to-display ratio, effectively zooming out to show less graphic detail of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Selection || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Zooms so much into the sample data that the current selection covers as much of the sample display as possible. If no selection has been made, auto-zoom is enabled.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Sample Start || &amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Zooms into the sample and ensures that the sample start is visible in the view.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom into Sample End || &amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Zooms into the sample and ensures that the sample end is visible in the view.&lt;br /&gt;
|-&lt;br /&gt;
| Center Loop Start in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt; || Ensures that the normal sample loop’s start point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Loop End in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;2&amp;lt;/kbd&amp;gt; || Ensures that the normal sample loop’s end point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Sustain Loop Start in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;3&amp;lt;/kbd&amp;gt; || Ensures that the sample sustain loop’s start point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Center Sustain Loop End in View || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;4&amp;lt;/kbd&amp;gt; || Ensures that the sample sustain loop’s end point is centered in the waveform display (if the current zoom level allows it).&lt;br /&gt;
|-&lt;br /&gt;
| Convert Ping-Pong Loop to Unidirectional || || Turns a bidi-looped sample loop into a sample with a regular loop by adding a reversed copy of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Convert Ping-Pong Sustain Loop to Unidirectional || || Turns a bidi-looped sustain loop into a sample with a regular loop by adding a reversed copy of the sample data.&lt;br /&gt;
|-&lt;br /&gt;
| Convert to 8-bit / 16-bit || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;8&amp;lt;/kbd&amp;gt; || Changes the sample’s bit depth between 8-bit and 16-bit.&lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Mix) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Mixes the left and right channels of a stereo sample equally together. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Left Channel) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Only keeps the left channel of a stereo sample. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Right Channel) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Only keeps the right channel of a stereo sample. &lt;br /&gt;
|-&lt;br /&gt;
| Convert to Mono (Split Sample) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;S&amp;lt;/kbd&amp;gt; || Create two sample slots for this sample, one containing only the left channel and the other containing just the right channel. If the sample is referenced by an instrument, this instrument is duplicated as well for the right channel. &lt;br /&gt;
|-&lt;br /&gt;
| Change Stereo Separation || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Adjusts the stereo separation of the sample by a given amount, either widening or narrowing the stereo width.&lt;br /&gt;
|-&lt;br /&gt;
| Upsample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt;|| Doubles the sample’s middle-C frequency using the interpolation filter last chosen in the [[Manual: Resample|Resample dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| Downsample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;G&amp;lt;/kbd&amp;gt;|| Halves the sample’s middle-C frequency using the interpolation filter last chosen in the [[Manual: Resample|Resample dialog]].&lt;br /&gt;
|-&lt;br /&gt;
| Resample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Changes the sample’s middle-C frequency to a new arbitrary frequency.&lt;br /&gt;
|-&lt;br /&gt;
| Invert Sample Phase || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Inverts the sample’s phase, i.e. it is mirrored along the time axis.&lt;br /&gt;
|-&lt;br /&gt;
| Signed / Unsigned Conversion || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;U&amp;lt;/kbd&amp;gt; || Re-interprets the sample data as a signed or unsigned sample.&lt;br /&gt;
|-&lt;br /&gt;
| Remove DC Offset || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Removes an unwanted static DC Offset from the waveform, i.e. it is centered around the time axis.&lt;br /&gt;
|-&lt;br /&gt;
| Quick Fade || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Applies a fade-in for the selected sample data if the selection includes the beginning of the sample, or applies a fade-out if the selection includes the end of the sample. If neither the beginning or end of the waveform is part of the selection, the Amplify dialog is shown.&lt;br /&gt;
|-&lt;br /&gt;
| Crossfade Sample Loop || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Opens the Crossfade Loop dialog to crossfade the sample loop’s end with the loop start, to create seamless loop transitions.&lt;br /&gt;
|-&lt;br /&gt;
| Tune Sample to Given Note || || Opens the [[Manual: Sample Tuner|Sample Tuner]] dialog, where the sample can be tuned to a given note.&lt;br /&gt;
|-&lt;br /&gt;
| Load Sample || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens the Open File dialog to allow you to import a sample file into the sample slot. This command also works in the Instrument Tab, importing an instrument to the current Instrument slot.&lt;br /&gt;
|-&lt;br /&gt;
| Load Raw Sample || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens the Open File dialog to allow you to import a sample file into the sample slot. The [[Manual: Raw Sample Import|Raw Sample Import]] is shown, ignoring the sample format even if it is known to OpenMPT.&lt;br /&gt;
|-&lt;br /&gt;
| Save Sample || || Opens the Save File dialog to allow you to save the sample as a Wave Audio or Raw file into a folder of your choice. This command also works in the Instrument Tab, saving the instrument and its accompanying samples as an .iti, .xi or .sfz file.&lt;br /&gt;
|-&lt;br /&gt;
| New Sample || || Creates a blank sample in the next unused slot. This command also works in the Instrument Tab.&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Sample || || Duplicates the current sample slot into the next unused slot.&lt;br /&gt;
|-&lt;br /&gt;
| Initialize OPL Instrument || || Configures the current sample slot to be a synthesized OPL instrument and recalls the default instrument parameters.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises the middle-C frequency by one semitone.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers the middle-C frequency by one semitone.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose +1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Raises (doubles) the middle-C frequency by one octave.&lt;br /&gt;
|- &lt;br /&gt;
| Transpose -1 Octave || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Lowers (halves) the middle-C frequency by one octave.&lt;br /&gt;
|- &lt;br /&gt;
| Increment Finetune || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Raises the middle-C frequency by the configured [[Manual: Setup/Samples#Frequency Finetune Steps|frequency finetune step]], or by one finetune unit in MOD / XM Files.&lt;br /&gt;
|- &lt;br /&gt;
| Decrement Finetune || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Lowers the middle-C frequency by the configured [[Manual: Setup/Samples#Frequency Finetune Steps|frequency finetune step]], or by one finetune unit in MOD / XM Files.&lt;br /&gt;
|- &lt;br /&gt;
| Toggle Follow Sample Play Cursor|| &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Cycles through all three [[Manual: Setup/Samples#Automatic Scrolling when_Zoomed-In|sample playback cursor follow modes]]. The new follow mode is announced in the status bar.&lt;br /&gt;
|-&lt;br /&gt;
| Preview / Set Sample Cue [1 - 9] || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;1&amp;lt;/kbd&amp;gt;-&amp;lt;kbd&amp;gt;9&amp;lt;/kbd&amp;gt; || Previews the sample at middle-C, starting from the chosen cue point. If the cue point is unset and the sample is currently being previewed, the cue point is set to the current play position.&lt;br /&gt;
|- &lt;br /&gt;
| Slice at Cue Points || || Creates new samples from the current sample by splitting the sample at its cue points.&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instrument Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Instruments#Sample Map|Sample Map]] on the Instrument Tab is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Instrument || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Creates a new instrument slot using &#039;&#039;all&#039;&#039; the same instrument attributes as the currently displayed instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Sample Map || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Sample Map|Sample Map]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Edit Current Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the Samples page of the currently selected sample slot.&lt;br /&gt;
|-&lt;br /&gt;
| Map All Notes to Selected Note || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Sets the currently selected note to all notes.&lt;br /&gt;
|-&lt;br /&gt;
| Map All Notes to Selected Sample || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Sets the currently selected sample slot to all notes.&lt;br /&gt;
|-&lt;br /&gt;
| Reset Note Mapping || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Resets the note assignments, so that each note maps to itself (C-5 → C-5, D-5 → D-5, and so on).&lt;br /&gt;
|-&lt;br /&gt;
| Remove All Samples || || Removes any sample associations from the instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 (Note Map) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Transposes the whole note map up one semitone.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose -1 (Note Map) || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Transposes the whole note map down one semitone.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose +1 Octave (Note Map) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; || Transposes the whole note map up one octave.&lt;br /&gt;
|-&lt;br /&gt;
| Transpose -1 Octave (Note Map) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;A&amp;lt;/kbd&amp;gt; || Transposes the whole note map down one octave.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Envelope Editor ===&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual: Instruments#Envelope Editor|envelope editor]] on the Instrument Tab is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Load Envelope || || Replaces the currently active envelope with an envelope from disk.&lt;br /&gt;
|-&lt;br /&gt;
| Save Envelope || || Stores the currently active envelope to disk.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom In || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;+&amp;lt;/kbd&amp;gt; || Increases the detail of the Envelope Window, showing a smaller excerpt of the envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Zoom Out || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;-&amp;lt;/kbd&amp;gt; || Decreases the detail of the Envelope Window, showing a bigger excerpt of the envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Scale Envelope Points || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;E&amp;lt;/kbd&amp;gt; || Opens the [[Manual: Scale Envelope Points|Scale Envelope Points]] dialog.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Volume Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Selects the Volume Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Panning Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Selects the Panning Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Switch to Pitch / Filter Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Selects the Pitch / Filter Envelope for editing.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Volume Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;M&amp;lt;/kbd&amp;gt; || Enables or disables the Volume Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Panning Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt; || Enables or disables the Panning Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Pitch Envelope || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;I&amp;lt;/kbd&amp;gt; || Enables or disables the Pitch Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Filter Envelope || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt; || Enables or disables the Filter Envelope.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Loop || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Loop.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Loop Start || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope loop start.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Loop End || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope loop end.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Sustain Loop || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;L&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Sustain Loop.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Sustain Start || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope sustain start.&lt;br /&gt;
|-&lt;br /&gt;
| Select Envelope Sustain End || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Moves the selection to the envelope sustain end.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Envelope Carry || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; || Enables or disables the Envelope Carry.&lt;br /&gt;
|-&lt;br /&gt;
| Select Previous Envelope Point || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the selection to the previous envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Select Next Envelope Point || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Moves the selection to the following envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Left || &amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the selected envelope point left one tick.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Left (Coarse) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Left&amp;lt;/kbd&amp;gt; || Moves the selected envelope point left one beat.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Right || &amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the selected envelope point right one tick.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Right (Coarse) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Right&amp;lt;/kbd&amp;gt; || Moves the selected envelope point right one beat.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Up || &amp;lt;kbd&amp;gt;Up&amp;lt;/kbd&amp;gt; || Moves the selected envelope point up one unit.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Up (Coarse) || &amp;lt;kbd&amp;gt;PageUp&amp;lt;/kbd&amp;gt; || Moves the selected envelope point up 8 units.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Down || &amp;lt;kbd&amp;gt;Down&amp;lt;/kbd&amp;gt; || Moves the selected envelope point down one unit.&lt;br /&gt;
|-&lt;br /&gt;
| Move Envelope Point Down (Coarse) || &amp;lt;kbd&amp;gt;PageDown&amp;lt;/kbd&amp;gt; || Moves the selected envelope point down 8 units.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Envelope Point || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts an envelope point after the selected point.&lt;br /&gt;
|-&lt;br /&gt;
| Remove Envelope Point || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Deletes the selected envelope point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Loop Start || &amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Envelope Loop start point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Loop End || &amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Envelope Loop end point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Sustain Loop Start || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Home&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Sustain Loop start point.&lt;br /&gt;
|-&lt;br /&gt;
| Set Sustain Loop End || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;End&amp;lt;/kbd&amp;gt; || Sets the selected envelope point as the Sustain Loop end point.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Release Node || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Toggles the selected envelope point as the start point for the Release Envelope.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comments [Bottom] ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the lower half of the [[Manual: Comments|Comments tab]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Between Lists || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Toggles between the sample and instrument list.&lt;br /&gt;
|-&lt;br /&gt;
| Open Item in Editor || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Switches to the sample or instrument editor to edit the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Rename Item || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Brings up an edit box for renaming the selected sample or instrument.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Plugin Editor ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when a [[Manual: Plugin Window|plugin window]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Previous Plugin Preset || &amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Selects the previous plugin preset / patch.&lt;br /&gt;
|-&lt;br /&gt;
| Next Plugin Preset || &amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Selects the following plugin preset / patch.&lt;br /&gt;
|-&lt;br /&gt;
| Plugin Preset Backward Jump || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad-&amp;lt;/kbd&amp;gt; || Jumps back 10 entries in the preset list.&lt;br /&gt;
|-&lt;br /&gt;
| Plugin Preset Forward Jump || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Numpad+&amp;lt;/kbd&amp;gt; || Jumps forward 10 entries in the preset list.&lt;br /&gt;
|-&lt;br /&gt;
| Randomize Plugin Parameters || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;D&amp;lt;/kbd&amp;gt; || Give random values to all parameters of the current plugin.&lt;br /&gt;
|-&lt;br /&gt;
| Toggle Parameter Recording || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;R&amp;lt;/kbd&amp;gt; || Toggles the parameter recording function, which allows you to record parameter changes from plugin window into the pattern.&lt;br /&gt;
|-&lt;br /&gt;
| Record MIDI Out to Pattern Editor || || Toggles the MIDI Out recording function, which allows you to route the plugin’s MIDI output to the pattern, sample or instrument editor.&lt;br /&gt;
|-&lt;br /&gt;
| Pass Key Presses to Plugin || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;K&amp;lt;/kbd&amp;gt; || Toggles the Pass Keys function, which sends all keyboard input to the currently open plugin window (e.g. for entering a serial number in the plugin GUI).&lt;br /&gt;
|-&lt;br /&gt;
| Bypass Plugin || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;B&amp;lt;/kbd&amp;gt; || Toggles plugin’s bypass property to control whether audio is routed through the plugin or not.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tree View ==&lt;br /&gt;
&lt;br /&gt;
These shortcuts are applied when the [[Manual:_Tree_View|Tree View]] is focussed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action !! Default Shortcut !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Switch between Upper / Lower Tree View || &amp;lt;kbd&amp;gt;Tab&amp;lt;/kbd&amp;gt; || Switches focus between the upper and lower panel of the Tree View.&lt;br /&gt;
|-&lt;br /&gt;
| Open / View Item || &amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || Opens / views / previews the selected item (same action as double-click).&lt;br /&gt;
|-&lt;br /&gt;
| Play Item || &amp;lt;kbd&amp;gt;Space&amp;lt;/kbd&amp;gt; || Previews the selected item if it is a sample, instrument or file.&lt;br /&gt;
|-&lt;br /&gt;
| Insert Item || &amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Inserts an empty item (e.g. sample or instrument slot) after the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Duplicate Item || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Insert&amp;lt;/kbd&amp;gt; || Duplicates the currently selected item (e.g. sample or instrument slot).&lt;br /&gt;
|-&lt;br /&gt;
| Delete Item || &amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Deletes the currently selected item.&lt;br /&gt;
|-&lt;br /&gt;
| Delete Item Permanently || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt; || Same as “Delete Item”, but if the selected item is a file, it will not be moved to the recycling bin.&lt;br /&gt;
|-&lt;br /&gt;
| Rename Item / Send To Editor || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || For items belonging to an open module (e.g. patterns, samples, instruments, ...): The selected item is renamed. For items in the instrument library: The item is sent to the last active sample or instrument editor and replaces the currently selected sample or instrument.&lt;br /&gt;
|-&lt;br /&gt;
| Send To Editor (Insert New) || &amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Enter&amp;lt;/kbd&amp;gt; || For items in the instrument library: The item is sent to the last active sample or instrument editor and is loaded into a new sample or instrument slot.&lt;br /&gt;
|-&lt;br /&gt;
| Go to Parent Folder || &amp;lt;kbd&amp;gt;Backspace&amp;lt;/kbd&amp;gt; || Changes the instrument library folder to the current location′s parent folder.&lt;br /&gt;
|-&lt;br /&gt;
| Find in Instrument Library || &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;F&amp;lt;/kbd&amp;gt;|| Opens the search filter to quickly locate files and folders in the instrument library.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Name || || Items in the instrument library are sorted by their file name.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Date || || Items in the instrument library are sorted by their last file modification date.&lt;br /&gt;
|-&lt;br /&gt;
| Sort Instrument Library By Size || || Items in the instrument library are sorted by their file size.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Keyboard Actions]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Edit_History&amp;diff=4936</id>
		<title>Manual: Edit History</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Edit_History&amp;diff=4936"/>
		<updated>2025-06-07T10:18:38Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Edit History.png|thumb|400px|Edit History of a loaded IT module]]&lt;br /&gt;
&lt;br /&gt;
You can view this dialog by selecting “Edit History” from the [[Manual: Menus#View|View menu]]. The full edit history is only available for IT and MPTM files, but a more limited history may be available in other formats (e.g. S3M files saved with Impulse Traker). This dialog lists the edit events, displaying the timestamps for each time the file was loaded into the tracker and modified. The first entry is when the track was created (if the history was never cleared). At the bottom of the window is the total time elapsed while the file was open, and the number of times the track was loaded. Clicking on the Clear button will erase all of this data, but the info is lost only if you save the track afterwards.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Edit History]]&lt;br /&gt;
[[Category:Windows|Edit History]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Edit_History&amp;diff=4935</id>
		<title>Manual: Edit History</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Edit_History&amp;diff=4935"/>
		<updated>2025-06-07T10:16:58Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Edit History.png|thumb|400px|Edit History of a loaded IT module]]&lt;br /&gt;
&lt;br /&gt;
You can view this dialog by selecting “Edit History” from the [[Manual: Menus#View|View menu]], but it is only available for IT and MPTM files. This dialog lists the edit events, displaying the timestamps for each time the file was loaded into the tracker and modified. The first entry is when the track was created (if the history was never cleared). At the bottom of the window is the total time elapsed while the file was open, and the number of times the track was loaded. Clicking on the Clear button will erase all of this data, but the info is lost only if you save the track afterwards.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Edit History]]&lt;br /&gt;
[[Category:Windows|Edit History]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Libopenmpt&amp;diff=4934</id>
		<title>Libopenmpt</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Libopenmpt&amp;diff=4934"/>
		<updated>2025-06-06T17:53:44Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* Players */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:libopenmpt}}&lt;br /&gt;
== libopenmpt ==&lt;br /&gt;
&lt;br /&gt;
https://lib.openmpt.org/&lt;br /&gt;
&lt;br /&gt;
=== Distribution packages ===&lt;br /&gt;
(As far as we know. If you know more, add it here.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Alpine&#039;&#039;&#039;: https://pkgs.alpinelinux.org/packages?name=libopenmpt&amp;amp;branch=edge&amp;amp;repo=&amp;amp;arch=&amp;amp;maintainer=&lt;br /&gt;
* &#039;&#039;&#039;Arch&#039;&#039;&#039;: https://archlinux.org/packages/?q=libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Cygwin&#039;&#039;&#039;: https://cygwin.com/packages/summary/libopenmpt-src.html&lt;br /&gt;
* &#039;&#039;&#039;Debian&#039;&#039;&#039;: https://tracker.debian.org/pkg/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Fedora&#039;&#039;&#039;: https://src.fedoraproject.org/rpms/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Fink&#039;&#039;&#039;: https://pdb.finkproject.org/pdb/package.php/libopenmpt-bin&lt;br /&gt;
* &#039;&#039;&#039;FreeBSD&#039;&#039;&#039;: https://www.freshports.org/audio/libopenmpt/&lt;br /&gt;
* &#039;&#039;&#039;Gentoo&#039;&#039;&#039;: https://packages.gentoo.org/packages/media-libs/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Haiku&#039;&#039;&#039;: https://depot.haiku-os.org/#!/pkg/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Homebrew&#039;&#039;&#039;: https://formulae.brew.sh/formula/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;MacPorts&#039;&#039;&#039;: https://ports.macports.org/port/libopenmpt/&lt;br /&gt;
* &#039;&#039;&#039;MSYS2&#039;&#039;&#039;: https://packages.msys2.org/base/mingw-w64-libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;NetBSD&#039;&#039;&#039;: https://cdn.netbsd.org/pub/pkgsrc/current/pkgsrc/audio/libopenmpt/index.html / https://pkgsrc.se/audio/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;NixOS&#039;&#039;&#039;: https://search.nixos.org/packages?show=libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;OpenBSD&#039;&#039;&#039;: https://openports.pl/path/audio/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;OpenEmbedded&#039;&#039;&#039; / &#039;&#039;&#039;Yocto&#039;&#039;&#039;: https://github.com/openembedded/meta-openembedded/tree/master/meta-multimedia/recipes-multimedia/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;openSUSE&#039;&#039;&#039;: https://software.opensuse.org/package/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Slackware&#039;&#039;&#039;: http://sotirov-bg.net/slackpack/search.cgi?q=libopenmpt&amp;amp;lo=1 libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Ubuntu&#039;&#039;&#039;: https://launchpad.net/ubuntu/+source/libopenmpt&lt;br /&gt;
&lt;br /&gt;
More packages with detailed version information may be found at [https://repology.org/project/libopenmpt/versions Repology].&lt;br /&gt;
&lt;br /&gt;
=== Software using libopenmpt ===&lt;br /&gt;
(As far as we know. If you know more, add it here. Please do not confuse libmodplug and libopenmpt when adding new software to this list. libmodplug is a different library.)&lt;br /&gt;
&lt;br /&gt;
==== Players ====&lt;br /&gt;
* &#039;&#039;&#039;Audacious&#039;&#039;&#039; (Linux, macOS, Windows): https://audacious-media-player.org/ (https://github.com/audacious-media-player/audacious-plugins/tree/master/src/openmpt)&lt;br /&gt;
* &#039;&#039;&#039;Chipmachine Music Player&#039;&#039;&#039; (Linux, macOS, Windows): https://sasq64.github.io/chipmachine/&lt;br /&gt;
* &#039;&#039;&#039;chiptune2.js&#039;&#039;&#039; (HTML5+JavaScript): https://github.com/deskjet/chiptune2.js&lt;br /&gt;
* &#039;&#039;&#039;cmod3&#039;&#039;&#039; (cross-platform (JavaScript+node-webkit)): https://github.com/jllodra/cmod3&lt;br /&gt;
* &#039;&#039;&#039;Cog (kode54 fork)&#039;&#039;&#039; (macOS): https://cog.losno.co/&lt;br /&gt;
* &#039;&#039;&#039;Droidsound&#039;&#039;&#039; (Android): https://github.com/droidmjt/Droidsound (note: Droidsound does not come under a free open source license)&lt;br /&gt;
* &#039;&#039;&#039;foxbox&#039;&#039;&#039; (cross-platform Qt5): https://github.com/nilsding/foxbox&lt;br /&gt;
* &#039;&#039;&#039;HippoPlayer&#039;&#039;&#039; (macOS, Windows, Linux): https://github.com/emoon/HippoPlayer&lt;br /&gt;
* &#039;&#039;&#039;LOMP&#039;&#039;&#039; (Windows): https://sourceforge.net/projects/lomp/&lt;br /&gt;
* &#039;&#039;&#039;modizer&#039;&#039;&#039; (iOS): https://github.com/yoyofr/modizer&lt;br /&gt;
* &#039;&#039;&#039;ModPlug Player (new version)&#039;&#039;&#039; (Windows, macOS, Linux): https://github.com/ModPlugPlayer/ModPlugPlayer&lt;br /&gt;
* &#039;&#039;&#039;modplug-tools&#039;&#039;&#039; (Linux/*BSD command-line): https://github.com/alexmyczko/modplug-tools&lt;br /&gt;
* &#039;&#039;&#039;mpd&#039;&#039;&#039;: https://github.com/MusicPlayerDaemon/MPD&lt;br /&gt;
* &#039;&#039;&#039;NXMilk&#039;&#039;&#039; (Nintendo Switch): https://github.com/proconsule/NXMilk&lt;br /&gt;
* &#039;&#039;&#039;openmpt123&#039;&#039;&#039; (cross-platform command-line): https://lib.openmpt.org/&lt;br /&gt;
* &#039;&#039;&#039;Pineapple Tracker Player&#039;&#039;&#039;: https://github.com/BLumia/pineapple-tracker-player&lt;br /&gt;
* &#039;&#039;&#039;rePlayer&#039;&#039;&#039; (Windows): https://github.com/arnaud-neny/rePlayer&lt;br /&gt;
* &#039;&#039;&#039;TrackMeister&#039;&#039;&#039; (Windows, Linux, macOS): https://github.com/kajott/TrackMeister&lt;br /&gt;
* &#039;&#039;&#039;WACUP&#039;&#039;&#039; (Windows): https://getwacup.com/&lt;br /&gt;
* &#039;&#039;&#039;Winamp (Desktop Version)&#039;&#039;&#039; (Windows): https://www.winamp.com/downloads/&lt;br /&gt;
* &#039;&#039;&#039;ZXTune&#039;&#039;&#039; (Android, Linux, macOS, Windows): https://zxtune.bitbucket.io/&lt;br /&gt;
&lt;br /&gt;
==== Player plugins ====&lt;br /&gt;
* &#039;&#039;&#039;foobar2000&#039;&#039;&#039; (foo_openmpt54): https://www.foobar2000.org/components/view/foo_openmpt54&lt;br /&gt;
* &#039;&#039;&#039;Kodi&#039;&#039;&#039; (audiodecoder.openmpt): https://github.com/notspiff/audiodecoder.openmpt&lt;br /&gt;
* &#039;&#039;&#039;qmmp&#039;&#039;&#039; (qmmp-openmpt): https://github.com/cspiegel/qmmp-openmpt&lt;br /&gt;
* &#039;&#039;&#039;XMPlay&#039;&#039;&#039; (xmp-openmpt): https://lib.openmpt.org/ / https://www.un4seen.com/forum/?topic=15448.0&lt;br /&gt;
&lt;br /&gt;
==== Other end-user tools ====&lt;br /&gt;
* &#039;&#039;&#039;asciimod&#039;&#039;&#039; (command-line tool to dump mod metadata): https://bitbucket.org/seece/asciimod/overview&lt;br /&gt;
* &#039;&#039;&#039;Mod Library&#039;&#039;&#039; (module librarian for Windows): https://github.com/sagamusix/ModLibrary&lt;br /&gt;
&lt;br /&gt;
==== Media framework plugins ====&lt;br /&gt;
* &#039;&#039;&#039;ffmpeg&#039;&#039;&#039; (libopenmpt demuxer): https://ffmpeg.org/ / https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/libavformat/libopenmpt.c / https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/libopenmpt.c&lt;br /&gt;
* &#039;&#039;&#039;gstreamer&#039;&#039;&#039; (openmptdec): https://gstreamer.freedesktop.org / https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/ext/openmpt / https://github.com/GStreamer/gst-plugins-bad/tree/master/ext/openmpt&lt;br /&gt;
&lt;br /&gt;
==== Streaming software ====&lt;br /&gt;
* &#039;&#039;&#039;demosauce&#039;&#039;&#039; (Streaming backend for Demovibes online radio platform): https://gitlab.com/maep/demosauce&lt;br /&gt;
&lt;br /&gt;
==== Audio libraries ====&lt;br /&gt;
* &#039;&#039;&#039;cl-mixed&#039;&#039;&#039; (Common Lisp): https://github.com/Shirakumo/cl-mixed&lt;br /&gt;
* &#039;&#039;&#039;Cowbell&#039;&#039;&#039; (Javascript): https://github.com/demozoo/cowbell&lt;br /&gt;
* &#039;&#039;&#039;node-chiptune&#039;&#039;&#039; (JavaScript / Node.js): https://github.com/Guichaguri/node-chiptune&lt;br /&gt;
* &#039;&#039;&#039;SoLoud&#039;&#039;&#039; (C++, C): https://github.com/jarikomppa/soloud&lt;br /&gt;
* &#039;&#039;&#039;tyrsound&#039;&#039;&#039; (C++, C): https://github.com/fgenesis/tyrsound&lt;br /&gt;
&lt;br /&gt;
==== Game libraries / 3D engines ====&lt;br /&gt;
* &#039;&#039;&#039;Godot&#039;&#039;&#039;: https://github.com/piptouque/godot_openmpt&lt;br /&gt;
&lt;br /&gt;
==== Live performance frameworks ====&lt;br /&gt;
* &#039;&#039;&#039;Modipulate&#039;&#039;&#039; (C++): https://github.com/MrEricSir/Modipulate &#039;&#039;&#039;Note:&#039;&#039;&#039; Modipulate uses a forked and patched version of libopenmpt.&lt;br /&gt;
&lt;br /&gt;
==== Language bindings ====&lt;br /&gt;
* &#039;&#039;&#039;C&#039;&#039;&#039;: https://lib.openmpt.org/&lt;br /&gt;
* &#039;&#039;&#039;C++&#039;&#039;&#039;: https://lib.openmpt.org/&lt;br /&gt;
* &#039;&#039;&#039;C# / .NET&#039;&#039;&#039;:  https://github.com/Xpl0itR/LibOpenMPT.NET&lt;br /&gt;
* &#039;&#039;&#039;D&#039;&#039;&#039;: http://code.dlang.org/packages/dlibopenmpt&lt;br /&gt;
* &#039;&#039;&#039;FreeBASIC&#039;&#039;&#039;: https://lib.openmpt.org/&lt;br /&gt;
* &#039;&#039;&#039;Lua&#039;&#039;&#039;: https://github.com/konsumer/lua-openmpt&lt;br /&gt;
* &#039;&#039;&#039;OCaml&#039;&#039;&#039;: https://github.com/demovibes/ocaml-openmpt&lt;br /&gt;
* &#039;&#039;&#039;Ruby&#039;&#039;&#039;: https://rubygems.org/gems/ffi-openmpt&lt;br /&gt;
* &#039;&#039;&#039;Rust&#039;&#039;&#039;: https://crates.io/crates/openmpt-sys / https://crates.io/crates/openmpt&lt;br /&gt;
&lt;br /&gt;
==== Websites ====&lt;br /&gt;
* &#039;&#039;&#039;keygenmusic.tk&#039;&#039;&#039; uses libopenmpt for their online module player: http://keygenmusic.tk/&lt;br /&gt;
* &#039;&#039;&#039;ModArchive&#039;&#039;&#039; uses libopenmpt for their online module player: https://modarchive.org/&lt;br /&gt;
&lt;br /&gt;
==== Games ====&lt;br /&gt;
* &#039;&#039;&#039;Sonic Robo Blast 2&#039;&#039;&#039; uses libopenmpt for playing music: https://github.com/STJr/SRB2 / https://www.srb2.org/&lt;br /&gt;
&lt;br /&gt;
=== libopenmpt-related discussion on other websites ===&lt;br /&gt;
* https://github.com/fink/fink-distributions/issues/1202&lt;br /&gt;
* https://www.pouet.net/topic.php?which=9733&lt;br /&gt;
* https://www.pouet.net/topic.php?which=10287&lt;br /&gt;
* https://www.un4seen.com/forum/?topic=15448.0&lt;br /&gt;
* https://openmpt.org/libopenmpt-released&lt;br /&gt;
* http://www.bitfellas.org/comment.php?comment.news.4523&lt;br /&gt;
* https://modarchive.org/forums/index.php?topic=3618.0&lt;br /&gt;
* https://trac.videolan.org/vlc/ticket/13055&lt;br /&gt;
* http://trac.kodi.tv/ticket/15846&lt;br /&gt;
* https://trac.ffmpeg.org/ticket/5623&lt;br /&gt;
* http://forums.winamp.com/showthread.php?p=3016650&lt;br /&gt;
* http://hcs64.com/mboard/forum.php?showthread=26210&amp;amp;showpage=5&lt;br /&gt;
* http://www.freebasic.net/forum/viewtopic.php?t=24123&lt;br /&gt;
* https://forums.unrealtournament.com/archive/index.php/t-9229.html&lt;br /&gt;
* https://www.pouet.net/topic.php?which=10708&lt;br /&gt;
* https://getwacup.com/blog//index.php/2016/03/06/week-6/&lt;br /&gt;
* http://www.oldunreal.com/cgi-bin/yabb2/YaBB.pl?num=1421249113/2&lt;br /&gt;
* http://forum.renoise.com/index.php/topic/48648-crashes-with-malformed-files/&lt;br /&gt;
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=849840&lt;br /&gt;
* https://redmine.audacious-media-player.org/issues/848&lt;br /&gt;
* https://bugs.launchpad.net/mixxx/+bug/1859511&lt;br /&gt;
&lt;br /&gt;
=== assorted links (need further review) ===&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Libopenmpt&amp;diff=4932</id>
		<title>Libopenmpt</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Libopenmpt&amp;diff=4932"/>
		<updated>2025-06-02T20:10:53Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* Players */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:libopenmpt}}&lt;br /&gt;
== libopenmpt ==&lt;br /&gt;
&lt;br /&gt;
https://lib.openmpt.org/&lt;br /&gt;
&lt;br /&gt;
=== Distribution packages ===&lt;br /&gt;
(As far as we know. If you know more, add it here.)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Alpine&#039;&#039;&#039;: https://pkgs.alpinelinux.org/packages?name=libopenmpt&amp;amp;branch=edge&amp;amp;repo=&amp;amp;arch=&amp;amp;maintainer=&lt;br /&gt;
* &#039;&#039;&#039;Arch&#039;&#039;&#039;: https://archlinux.org/packages/?q=libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Cygwin&#039;&#039;&#039;: https://cygwin.com/packages/summary/libopenmpt-src.html&lt;br /&gt;
* &#039;&#039;&#039;Debian&#039;&#039;&#039;: https://tracker.debian.org/pkg/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Fedora&#039;&#039;&#039;: https://src.fedoraproject.org/rpms/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Fink&#039;&#039;&#039;: https://pdb.finkproject.org/pdb/package.php/libopenmpt-bin&lt;br /&gt;
* &#039;&#039;&#039;FreeBSD&#039;&#039;&#039;: https://www.freshports.org/audio/libopenmpt/&lt;br /&gt;
* &#039;&#039;&#039;Gentoo&#039;&#039;&#039;: https://packages.gentoo.org/packages/media-libs/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Haiku&#039;&#039;&#039;: https://depot.haiku-os.org/#!/pkg/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Homebrew&#039;&#039;&#039;: https://formulae.brew.sh/formula/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;MacPorts&#039;&#039;&#039;: https://ports.macports.org/port/libopenmpt/&lt;br /&gt;
* &#039;&#039;&#039;MSYS2&#039;&#039;&#039;: https://packages.msys2.org/base/mingw-w64-libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;NetBSD&#039;&#039;&#039;: https://cdn.netbsd.org/pub/pkgsrc/current/pkgsrc/audio/libopenmpt/index.html / https://pkgsrc.se/audio/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;NixOS&#039;&#039;&#039;: https://search.nixos.org/packages?show=libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;OpenBSD&#039;&#039;&#039;: https://openports.pl/path/audio/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;OpenEmbedded&#039;&#039;&#039; / &#039;&#039;&#039;Yocto&#039;&#039;&#039;: https://github.com/openembedded/meta-openembedded/tree/master/meta-multimedia/recipes-multimedia/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;openSUSE&#039;&#039;&#039;: https://software.opensuse.org/package/libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Slackware&#039;&#039;&#039;: http://sotirov-bg.net/slackpack/search.cgi?q=libopenmpt&amp;amp;lo=1 libopenmpt&lt;br /&gt;
* &#039;&#039;&#039;Ubuntu&#039;&#039;&#039;: https://launchpad.net/ubuntu/+source/libopenmpt&lt;br /&gt;
&lt;br /&gt;
More packages with detailed version information may be found at [https://repology.org/project/libopenmpt/versions Repology].&lt;br /&gt;
&lt;br /&gt;
=== Software using libopenmpt ===&lt;br /&gt;
(As far as we know. If you know more, add it here. Please do not confuse libmodplug and libopenmpt when adding new software to this list. libmodplug is a different library.)&lt;br /&gt;
&lt;br /&gt;
==== Players ====&lt;br /&gt;
* &#039;&#039;&#039;Audacious&#039;&#039;&#039; (Linux, macOS, Windows): https://audacious-media-player.org/ (https://github.com/audacious-media-player/audacious-plugins/tree/master/src/openmpt)&lt;br /&gt;
* &#039;&#039;&#039;Chipmachine Music Player&#039;&#039;&#039; (Linux, macOS, Windows): https://sasq64.github.io/chipmachine/&lt;br /&gt;
* &#039;&#039;&#039;chiptune2.js&#039;&#039;&#039; (HTML5+JavaScript): https://github.com/deskjet/chiptune2.js&lt;br /&gt;
* &#039;&#039;&#039;cmod3&#039;&#039;&#039; (cross-platform (JavaScript+node-webkit)): https://github.com/jllodra/cmod3&lt;br /&gt;
* &#039;&#039;&#039;Cog (kode54 fork)&#039;&#039;&#039; (macOS): https://cog.losno.co/&lt;br /&gt;
* &#039;&#039;&#039;Droidsound&#039;&#039;&#039; (Android): https://github.com/droidmjt/Droidsound (note: Droidsound does not come under a free open source license)&lt;br /&gt;
* &#039;&#039;&#039;foxbox&#039;&#039;&#039; (cross-platform Qt5): https://github.com/nilsding/foxbox&lt;br /&gt;
* &#039;&#039;&#039;HippoPlayer&#039;&#039;&#039; (macOS, Windows, Linux): https://github.com/emoon/HippoPlayer&lt;br /&gt;
* &#039;&#039;&#039;modizer&#039;&#039;&#039; (iOS): https://github.com/yoyofr/modizer&lt;br /&gt;
* &#039;&#039;&#039;ModPlug Player (new version)&#039;&#039;&#039; (Windows, macOS, Linux): https://github.com/ModPlugPlayer/ModPlugPlayer&lt;br /&gt;
* &#039;&#039;&#039;modplug-tools&#039;&#039;&#039; (Linux/*BSD command-line): https://github.com/alexmyczko/modplug-tools&lt;br /&gt;
* &#039;&#039;&#039;mpd&#039;&#039;&#039;: https://github.com/MusicPlayerDaemon/MPD&lt;br /&gt;
* &#039;&#039;&#039;NXMilk&#039;&#039;&#039; (Nintendo Switch): https://github.com/proconsule/NXMilk&lt;br /&gt;
* &#039;&#039;&#039;openmpt123&#039;&#039;&#039; (cross-platform command-line): https://lib.openmpt.org/&lt;br /&gt;
* &#039;&#039;&#039;Pineapple Tracker Player&#039;&#039;&#039;: https://github.com/BLumia/pineapple-tracker-player&lt;br /&gt;
* &#039;&#039;&#039;rePlayer&#039;&#039;&#039; (Windows): https://github.com/arnaud-neny/rePlayer&lt;br /&gt;
* &#039;&#039;&#039;TrackMeister&#039;&#039;&#039; (Windows, Linux, macOS): https://github.com/kajott/TrackMeister&lt;br /&gt;
* &#039;&#039;&#039;WACUP&#039;&#039;&#039; (Windows): https://getwacup.com/&lt;br /&gt;
* &#039;&#039;&#039;Winamp (Desktop Version)&#039;&#039;&#039; (Windows): https://www.winamp.com/downloads/&lt;br /&gt;
* &#039;&#039;&#039;ZXTune&#039;&#039;&#039; (Android, Linux, macOS, Windows): https://zxtune.bitbucket.io/&lt;br /&gt;
&lt;br /&gt;
==== Player plugins ====&lt;br /&gt;
* &#039;&#039;&#039;foobar2000&#039;&#039;&#039; (foo_openmpt54): https://www.foobar2000.org/components/view/foo_openmpt54&lt;br /&gt;
* &#039;&#039;&#039;Kodi&#039;&#039;&#039; (audiodecoder.openmpt): https://github.com/notspiff/audiodecoder.openmpt&lt;br /&gt;
* &#039;&#039;&#039;qmmp&#039;&#039;&#039; (qmmp-openmpt): https://github.com/cspiegel/qmmp-openmpt&lt;br /&gt;
* &#039;&#039;&#039;XMPlay&#039;&#039;&#039; (xmp-openmpt): https://lib.openmpt.org/ / https://www.un4seen.com/forum/?topic=15448.0&lt;br /&gt;
&lt;br /&gt;
==== Other end-user tools ====&lt;br /&gt;
* &#039;&#039;&#039;asciimod&#039;&#039;&#039; (command-line tool to dump mod metadata): https://bitbucket.org/seece/asciimod/overview&lt;br /&gt;
* &#039;&#039;&#039;Mod Library&#039;&#039;&#039; (module librarian for Windows): https://github.com/sagamusix/ModLibrary&lt;br /&gt;
&lt;br /&gt;
==== Media framework plugins ====&lt;br /&gt;
* &#039;&#039;&#039;ffmpeg&#039;&#039;&#039; (libopenmpt demuxer): https://ffmpeg.org/ / https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/libavformat/libopenmpt.c / https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/libopenmpt.c&lt;br /&gt;
* &#039;&#039;&#039;gstreamer&#039;&#039;&#039; (openmptdec): https://gstreamer.freedesktop.org / https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/ext/openmpt / https://github.com/GStreamer/gst-plugins-bad/tree/master/ext/openmpt&lt;br /&gt;
&lt;br /&gt;
==== Streaming software ====&lt;br /&gt;
* &#039;&#039;&#039;demosauce&#039;&#039;&#039; (Streaming backend for Demovibes online radio platform): https://gitlab.com/maep/demosauce&lt;br /&gt;
&lt;br /&gt;
==== Audio libraries ====&lt;br /&gt;
* &#039;&#039;&#039;cl-mixed&#039;&#039;&#039; (Common Lisp): https://github.com/Shirakumo/cl-mixed&lt;br /&gt;
* &#039;&#039;&#039;Cowbell&#039;&#039;&#039; (Javascript): https://github.com/demozoo/cowbell&lt;br /&gt;
* &#039;&#039;&#039;node-chiptune&#039;&#039;&#039; (JavaScript / Node.js): https://github.com/Guichaguri/node-chiptune&lt;br /&gt;
* &#039;&#039;&#039;SoLoud&#039;&#039;&#039; (C++, C): https://github.com/jarikomppa/soloud&lt;br /&gt;
* &#039;&#039;&#039;tyrsound&#039;&#039;&#039; (C++, C): https://github.com/fgenesis/tyrsound&lt;br /&gt;
&lt;br /&gt;
==== Game libraries / 3D engines ====&lt;br /&gt;
* &#039;&#039;&#039;Godot&#039;&#039;&#039;: https://github.com/piptouque/godot_openmpt&lt;br /&gt;
&lt;br /&gt;
==== Live performance frameworks ====&lt;br /&gt;
* &#039;&#039;&#039;Modipulate&#039;&#039;&#039; (C++): https://github.com/MrEricSir/Modipulate &#039;&#039;&#039;Note:&#039;&#039;&#039; Modipulate uses a forked and patched version of libopenmpt.&lt;br /&gt;
&lt;br /&gt;
==== Language bindings ====&lt;br /&gt;
* &#039;&#039;&#039;C&#039;&#039;&#039;: https://lib.openmpt.org/&lt;br /&gt;
* &#039;&#039;&#039;C++&#039;&#039;&#039;: https://lib.openmpt.org/&lt;br /&gt;
* &#039;&#039;&#039;C# / .NET&#039;&#039;&#039;:  https://github.com/Xpl0itR/LibOpenMPT.NET&lt;br /&gt;
* &#039;&#039;&#039;D&#039;&#039;&#039;: http://code.dlang.org/packages/dlibopenmpt&lt;br /&gt;
* &#039;&#039;&#039;FreeBASIC&#039;&#039;&#039;: https://lib.openmpt.org/&lt;br /&gt;
* &#039;&#039;&#039;Lua&#039;&#039;&#039;: https://github.com/konsumer/lua-openmpt&lt;br /&gt;
* &#039;&#039;&#039;OCaml&#039;&#039;&#039;: https://github.com/demovibes/ocaml-openmpt&lt;br /&gt;
* &#039;&#039;&#039;Ruby&#039;&#039;&#039;: https://rubygems.org/gems/ffi-openmpt&lt;br /&gt;
* &#039;&#039;&#039;Rust&#039;&#039;&#039;: https://crates.io/crates/openmpt-sys / https://crates.io/crates/openmpt&lt;br /&gt;
&lt;br /&gt;
==== Websites ====&lt;br /&gt;
* &#039;&#039;&#039;keygenmusic.tk&#039;&#039;&#039; uses libopenmpt for their online module player: http://keygenmusic.tk/&lt;br /&gt;
* &#039;&#039;&#039;ModArchive&#039;&#039;&#039; uses libopenmpt for their online module player: https://modarchive.org/&lt;br /&gt;
&lt;br /&gt;
==== Games ====&lt;br /&gt;
* &#039;&#039;&#039;Sonic Robo Blast 2&#039;&#039;&#039; uses libopenmpt for playing music: https://github.com/STJr/SRB2 / https://www.srb2.org/&lt;br /&gt;
&lt;br /&gt;
=== libopenmpt-related discussion on other websites ===&lt;br /&gt;
* https://github.com/fink/fink-distributions/issues/1202&lt;br /&gt;
* https://www.pouet.net/topic.php?which=9733&lt;br /&gt;
* https://www.pouet.net/topic.php?which=10287&lt;br /&gt;
* https://www.un4seen.com/forum/?topic=15448.0&lt;br /&gt;
* https://openmpt.org/libopenmpt-released&lt;br /&gt;
* http://www.bitfellas.org/comment.php?comment.news.4523&lt;br /&gt;
* https://modarchive.org/forums/index.php?topic=3618.0&lt;br /&gt;
* https://trac.videolan.org/vlc/ticket/13055&lt;br /&gt;
* http://trac.kodi.tv/ticket/15846&lt;br /&gt;
* https://trac.ffmpeg.org/ticket/5623&lt;br /&gt;
* http://forums.winamp.com/showthread.php?p=3016650&lt;br /&gt;
* http://hcs64.com/mboard/forum.php?showthread=26210&amp;amp;showpage=5&lt;br /&gt;
* http://www.freebasic.net/forum/viewtopic.php?t=24123&lt;br /&gt;
* https://forums.unrealtournament.com/archive/index.php/t-9229.html&lt;br /&gt;
* https://www.pouet.net/topic.php?which=10708&lt;br /&gt;
* https://getwacup.com/blog//index.php/2016/03/06/week-6/&lt;br /&gt;
* http://www.oldunreal.com/cgi-bin/yabb2/YaBB.pl?num=1421249113/2&lt;br /&gt;
* http://forum.renoise.com/index.php/topic/48648-crashes-with-malformed-files/&lt;br /&gt;
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=849840&lt;br /&gt;
* https://redmine.audacious-media-player.org/issues/848&lt;br /&gt;
* https://bugs.launchpad.net/mixxx/+bug/1859511&lt;br /&gt;
&lt;br /&gt;
=== assorted links (need further review) ===&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_System_Setup&amp;diff=4930</id>
		<title>Manual: System Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_System_Setup&amp;diff=4930"/>
		<updated>2025-06-01T18:53:14Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* System requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
== System requirements ==&lt;br /&gt;
System requirements are few. There are different versions of OpenMPT for various hardware and software configurations. All you need to run and use OpenMPT is:&lt;br /&gt;
* &#039;&#039;&#039;32-bit version&#039;&#039;&#039;:&lt;br /&gt;
** Windows 7 SP 1 or newer / Wine 1.8 or newer&lt;br /&gt;
** An x86-compatible CPU with support for the SSE2 instruction set*&lt;br /&gt;
* &#039;&#039;&#039;64-bit version&#039;&#039;&#039;:&lt;br /&gt;
** Windows 7 SP 1 or newer / Wine 1.8 or newer&lt;br /&gt;
** An x64-compatible CPU&lt;br /&gt;
* &#039;&#039;&#039;ARM versions&#039;&#039;&#039;&lt;br /&gt;
** Windows 8 or newer (ARM) / Windows 10 or newer (ARM64) / Wine 1.8 or newer&lt;br /&gt;
** An ARM / ARM64 CPU&lt;br /&gt;
* Some kind of soundcard&lt;br /&gt;
* A display resolution of 800x600 or higher, preferably much higher.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;Most computers capable of running Windows 7 will fulfill this requirement.&lt;br /&gt;
&lt;br /&gt;
=== 64-bit vs. 32-bit ===&lt;br /&gt;
If you run a 64-bit operating system, you should generally use the 64-bit version of OpenMPT. &amp;lt;br /&amp;gt;&lt;br /&gt;
If you must use 32-bit VST plugins, then you should take care; plugins that do not match OpenMPT’s “bitness” need to be run in a bridge process, and every bridged plugin slows down OpenMPT’s audio mixer. If you use more 32-bit plugins than you do 64-bit plugins, you should use the 32-bit version of OpenMPT to lessen performance issues.&lt;br /&gt;
&lt;br /&gt;
If in doubt, you can try both versions and use either one at your discretion. When using the OpenMPT installer, all versions of OpenMPT supported by your setup are installed automatically. When using portable builds, you can extract them into separate directories to verify which one works better.&lt;br /&gt;
&lt;br /&gt;
== Expandability ==&lt;br /&gt;
OpenMPT can also take advantage of some peripherals, such as:&lt;br /&gt;
* A MIDI-compatible external device. See the [[Manual: MIDI Reference|MIDI Reference]] for setting up a MIDI device for use in OpenMPT.&lt;br /&gt;
* External speakers or headphones, including Quad Surround systems for soundcards that support this configuration.&lt;br /&gt;
* Software plugins (either VST or DirectX plugins) that are compatible with your computer and operating system.*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;OpenMPT&#039;s system requirements are independent from any software plugin(s) you might use with it. Since some plugins can require higher system requirements than OpenMPT itself, you should also check the system requirements of any plugin(s) you plan on using.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
# [https://openmpt.org/download Download] a version of OpenMPT.&lt;br /&gt;
# Install OpenMPT.&lt;br /&gt;
#* If you are using the &#039;&#039;&#039;Installer&#039;&#039;&#039; software for OpenMPT, you will be asked for the directory you wish to install OpenMPT into.&lt;br /&gt;
#* If you are &#039;&#039;&#039;updating&#039;&#039;&#039; from a previous version, the installer will replace the old files and folders with any new ones by default as well as update the registry (for file associations) if necessary. &amp;lt;br /&amp;gt; &#039;&#039;&#039;Note&#039;&#039;&#039;: As with all software, updates may not be as stable as their previous versions, or features that you have become accustomed to may have been reworked in the new version. Although the Installer will keep the old user files (by giving the files a new extension), it is recommended you backup your previous version of OpenMPT until you are satisfied with the upgrade.&lt;br /&gt;
#* If you are using the &#039;&#039;&#039;.zip archive&#039;&#039;&#039;, unzip the archive to the folder of your choice.&lt;br /&gt;
# Run OpenMPT.&lt;br /&gt;
:: When run for the first time, the Welcome dialog will appear automatically to allow you to set up some basic settings. There are many more ways to customize OpenMPT through the [[Manual: Setup|Setup dialog]], but you should first set up your soundcard settings by opening the “Sound Card” tab in the Setup dialog. Consult the section on [[Manual: Setup/Soundcard|Soundcard Options]] for determining the proper settings for your system. OpenMPT’s conservative default settings should work on all Windows systems, but adjusting the options to better meet your system&#039;s capabilities will likely give you a better experience.&lt;br /&gt;
&lt;br /&gt;
== Uninstallation ==&lt;br /&gt;
&lt;br /&gt;
If you wish to uninstall OpenMPT, you can use the provided uninstaller to remove all files and registry entries created during installation. However, this process will not remove files created during the use of OpenMPT, which you may want to remove manually. If you have installed OpenMPT for all users of the system, this step needs to be repeated for every Windows user account on which OpenMPT was used.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Auto saves&#039;&#039;&#039;: Before uninstalling OpenMPT, review your [[Manual: Setup/Paths / Auto_Save#Auto Save|Auto Save settings]]. If a fixed auto save location has been set up, make sure to empty that folder if you do not want to keep the auto save files.&lt;br /&gt;
* &#039;&#039;&#039;Configuration data&#039;&#039;&#039;:  Before uninstalling OpenMPT, choose “Show Settings Folder” from the “Help” menu to open the folder containing all configuration data. Uninstall OpenMPT, then delete the folder.&lt;br /&gt;
&lt;br /&gt;
== Portability ==&lt;br /&gt;
&lt;br /&gt;
If you would like to use OpenMPT on a flash drive or other removable media, there is an option to keep OpenMPT self-contained so that it does not leave a footprint on the computer’s system. Using OpenMPT’s installer affects the system registry and creates a new folder in the Settings directory. Portable Mode bypasses all of these. It can be achieved in multiple ways:&lt;br /&gt;
&lt;br /&gt;
=== Portable Zip Package ===&lt;br /&gt;
&lt;br /&gt;
This is the preferred option. On the [https://openmpt.org/download download page], download a portable zip package for the architecture(s) you want to run OpenMPT on. If you want to have a portable OpenMPT version for more than one architecture, you must extract those packages to separate folders.&lt;br /&gt;
&lt;br /&gt;
=== Command-line switch ===&lt;br /&gt;
&lt;br /&gt;
You can force OpenMPT into using Portable Mode by specifying the &amp;lt;code&amp;gt;/portable&amp;lt;/code&amp;gt; [[Manual: Command-line Parameters|command-line switch]]. Even if there is no configuration file present in OpenMPT’s directory, it will not look for an existing configuration in &amp;lt;code&amp;gt;%APPDATA%\OpenMPT&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This way, you can copy an existing OpenMPT installation to a different location and make it portable temporarily.&lt;br /&gt;
&lt;br /&gt;
=== Creating a permanent portable multi-architecture setup ===&lt;br /&gt;
&lt;br /&gt;
To manually create a portable multi-architecture OpenMPT setup, you can use an existing installation from a non-portable drive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- I apologize for the use of direct HTML but it looks like it&#039;s the only way to have proper indents for multi-line preformatted text --&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Copy all of the files in the original OpenMPT folder (typically &amp;lt;code&amp;gt;C:\Program Files\OpenMPT&amp;lt;/code&amp;gt;) to a new folder on the portable drive.&lt;br /&gt;
    &amp;lt;li&amp;gt; Create a file called &amp;lt;code&amp;gt;OpenMPT.portable&amp;lt;/code&amp;gt; in that folder.&lt;br /&gt;
    &amp;lt;li&amp;gt; If you want to import your previous configurations (like keyboard shortcuts, tunings, and other preferences), you will need to:&lt;br /&gt;
        &amp;lt;ol&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt; Navigate to OpenMPT&#039;s setting folder (&amp;lt;code&amp;gt;%APPDATA%\OpenMPT&amp;lt;/code&amp;gt;). This can be achieved by using the “Show Settings Folder” option from the [[Manual: Menus#Help|Help menu]].&lt;br /&gt;
            &amp;lt;li&amp;gt; Copy all files into the folder you created. This includes &amp;lt;code&amp;gt;mptrack.ini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Keybindings.mkb&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;plugin.cache&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SongSettings.ini&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;tunings&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
        &amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be sure to adjust the paths in the [[Manual: Setup/General|General]] and the [[Manual: Setup/Paths / Auto Save|Paths / Auto Save]] pages of the Options dialog.&lt;br /&gt;
&lt;br /&gt;
After the above changes, OpenMPT should be completely portable. If you will be working away from your main computer, remember to copy any samples, instrument files, and plugins you plan on using somewhere you can access them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:6px; border:1px solid #a00; background:#ffa;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Important notes:&#039;&#039;&#039; Special care has to be taken of modules with external content:&lt;br /&gt;
* Plugins need to be installed on the same removable drive as OpenMPT or else they cannot be found on another computer. Some plugins cannot be used in a portable fashion since they may depend on program data on the system drive or registry entries.&lt;br /&gt;
* Paths to [[Manual:_Samples#External_Samples|external samples]] in MPTM modules are stored as relative paths to the MPTM file if possible, so they are portable as long the samples are stored on the same drive as the module file.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|System Setup]]&lt;br /&gt;
[[de:Handbuch: Installation]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Effect_Reference&amp;diff=4929</id>
		<title>Manual: Effect Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Effect_Reference&amp;diff=4929"/>
		<updated>2025-06-01T18:23:15Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* Combined Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of all effects that can be used in the [[Manual: Patterns|Pattern Editor]]. &amp;lt;br /&amp;gt;&lt;br /&gt;
Commands that go into the effect column use &#039;&#039;&#039;uppercase&#039;&#039;&#039; effect letters (e.g. &amp;lt;code&amp;gt;G05&amp;lt;/code&amp;gt;), while effects that go into the volume column use &#039;&#039;&#039;lowercase&#039;&#039;&#039; effect letters (e.g. &amp;lt;code&amp;gt;g05&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The MOD and XM formats share a similar set of effects, with XM offering more effects than MOD. The S3M, IT, and MPTM formats share a different set of effects, of which many are compatible to those from the MOD and XM formats but have different letters (e.g. &amp;lt;code&amp;gt;F75&amp;lt;/code&amp;gt; in MOD turns into &amp;lt;code&amp;gt;T75&amp;lt;/code&amp;gt; in S3M).&lt;br /&gt;
&lt;br /&gt;
Currently, some effects, in particular those related to volume and panning, only directly affect samples, not instrument plugins (but their effect may be observed by a plugin through [[Manual: Zxx Macros|MIDI macros]]). Since this might change in the future, such effects should be avoided on channels that make use of instrument plugins.&lt;br /&gt;
&lt;br /&gt;
The behaviour of some effects is influenced by the [[Manual: Compatible Playback|Compatible Playback]] settings.&lt;br /&gt;
&lt;br /&gt;
== Effect Layout ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right; margin:10px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;&#039;&#039;&#039;A&#039;&#039;&#039;xy&amp;lt;/code&amp;gt;: Effect letter &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;A&#039;&#039;&#039;xy&#039;&#039;&#039;&amp;lt;/code&amp;gt;: Parameter&lt;br /&gt;
|}&lt;br /&gt;
An effect command consists of one character (the &#039;&#039;&#039;“effect letter”&#039;&#039;&#039;) followed by the value that will be applied (the &#039;&#039;&#039;“parameter”&#039;&#039;&#039;), which is a &#039;&#039;&#039;[[Manual: Basics#Hexadecimal Notation|hexadecimal]]&#039;&#039;&#039; number in the effect column and a &#039;&#039;&#039;decimal&#039;&#039;&#039; number in the volume column. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the notation for a parameter is given as &#039;&#039;&#039;&amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;, it means that a 2-digit hexadecimal number is expected. &amp;lt;br /&amp;gt; For this notation, 62h would be equal to 98, 29h would be equal to 41, and E8h would be equal to 232.&lt;br /&gt;
&lt;br /&gt;
If the notation is &#039;&#039;&#039;&amp;lt;code&amp;gt;xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;, it means that for &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; each, a 1-digit hexadecimal number is expected. &amp;lt;br /&amp;gt; For this notation, each of the digits in 62h would be read separately — as 6 and 2. Similarly, 29h would mean 2 and 9, and E8h would mean 14 and 8.&lt;br /&gt;
&lt;br /&gt;
If you do not wish to manually convert decimal to hexadecimal and vice versa, you can double-click on a pattern cell or press the &amp;lt;kbd&amp;gt;▤ Application&amp;lt;/kbd&amp;gt; key (by default) to open the [[Manual: Note Properties|Note Properties]] dialog. From there, you can adjust the effect parameters using sliders and see their meaning.&lt;br /&gt;
&lt;br /&gt;
Note that the parameter range of some commands is limited, such as the XM command &amp;lt;abbr title=&amp;quot;Set Volume&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, whose maximum value is 40h (64). Entering out-of-range values is not recommended as they might be interpreted differently by non-conforming players.&lt;br /&gt;
&lt;br /&gt;
== Frequency Units ==&lt;br /&gt;
&lt;br /&gt;
If [[Manual: Song Properties#Linear Frequency Slides|Linear Frequency Slides]] are enabled, each unit of a pitch sliding effect (e.g. &amp;lt;abbr title=&amp;quot;Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Exx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; or &amp;lt;abbr title=&amp;quot;Tone Portamento&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Gxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; in the IT / MPTM format) is equal to &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;⁄&amp;lt;sub&amp;gt;16&amp;lt;/sub&amp;gt; of a semitone. Extra fine (e.g. &amp;lt;abbr title=&amp;quot;Extra Fine Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; or &amp;lt;abbr title=&amp;quot;Extra Fine Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;FEx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;) units are equal to &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;⁄&amp;lt;sub&amp;gt;64&amp;lt;/sub&amp;gt; of a semitone.&lt;br /&gt;
&lt;br /&gt;
Otherwise, the unit of a pitch sliding effect is one &#039;&#039;period&#039;&#039;, a metric inverse to frequency. This means that the lower the current note, the smaller the effect of one pitch slide unit, and the higher the note, the bigger the effect is. The period of a frequency can be calculated by dividing 3,546,895 by the frequency (3,579,364 in the XM format).&lt;br /&gt;
&lt;br /&gt;
Linear Frequency Slides are not available in the MOD and S3M formats.&lt;br /&gt;
&lt;br /&gt;
== Common Effect Parameters ==&lt;br /&gt;
&lt;br /&gt;
Most effect parameters follow a simple scheme, but some effects also use a look-up table for their parameters. Depending on the effect, different parameters might do completely different things. Some common look-up table effects are described below.&lt;br /&gt;
&lt;br /&gt;
=== Waveform Types ===&lt;br /&gt;
&lt;br /&gt;
Some oscillator effects (namely Vibrato, Tremolo and Panbrello) use preset oscillator waveforms. They can be changed using special commands; the possible parameters of these commands are listed here.&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; |&lt;br /&gt;
==== S3M / IT / MPTM Formats ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left; margin-right:10px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Waveform&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;0&#039;&#039;&#039; (default) || Sine (retrigger)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1&#039;&#039;&#039; || Sawtooth (retrigger)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;2&#039;&#039;&#039; || Square (retrigger)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;3&#039;&#039;&#039; || Random (retrigger)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; |&lt;br /&gt;
==== MOD / XM Formats ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Waveform !! Parameter !! Waveform&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;0&#039;&#039;&#039; (default) || Sine (retrigger) || &#039;&#039;&#039;4&#039;&#039;&#039; || Sine (continue)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1&#039;&#039;&#039; || Sawtooth (retrigger) || &#039;&#039;&#039;5&#039;&#039;&#039; || Sawtooth (continue)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;2&#039;&#039;&#039; || Square (retrigger) || &#039;&#039;&#039;6&#039;&#039;&#039; || Square (continue)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;3&#039;&#039;&#039; || Random&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; (retrigger) || &#039;&#039;&#039;7&#039;&#039;&#039; || Random&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; (continue)&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Retrigger&#039;&#039;&#039; means that the oscillator waveform is played from its starting point when a new note is played. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Continue&#039;&#039;&#039; means that the waveform continues at its last playback position when a new note is played. This waveform type is exclusive to the MOD and XM formats.&lt;br /&gt;
&lt;br /&gt;
Every oscillator waveform is 64 points long, and the speed parameter denotes by how many points per tick the play position is advanced. So at a vibrato speed of 2, the vibrato waveform repeats after 32 ticks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; The &#039;&#039;&#039;Random&#039;&#039;&#039; waveforms are not supported by ProTracker and FastTracker. While they are supported by some MOD / XM players, they should be avoided.&lt;br /&gt;
&lt;br /&gt;
=== Retrigger Volume ===&lt;br /&gt;
&lt;br /&gt;
The Retrigger command (&amp;lt;code&amp;gt;Rxy&amp;lt;/code&amp;gt; in the XM format, &amp;lt;code&amp;gt;Qxy&amp;lt;/code&amp;gt; in the S3M / IT / MPTM formats) does not only retrigger the note every &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks, but also changes the note volume depending on the &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; value.&lt;br /&gt;
&lt;br /&gt;
The following table explains the meaning of every possible &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; parameter:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Effect !! Parameter !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;0&#039;&#039;&#039; || (XM) Last &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; value &amp;lt;br /&amp;gt; (S3M / IT / MPTM) No volume change || &#039;&#039;&#039;8&#039;&#039;&#039; || No volume change&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1&#039;&#039;&#039; || Volume - 1 || &#039;&#039;&#039;9&#039;&#039;&#039; || Volume + 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;2&#039;&#039;&#039; || Volume - 2 || &#039;&#039;&#039;A&#039;&#039;&#039; || Volume + 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;3&#039;&#039;&#039; || Volume - 4 || &#039;&#039;&#039;B&#039;&#039;&#039; || Volume + 4&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;4&#039;&#039;&#039; || Volume - 8 || &#039;&#039;&#039;C&#039;&#039;&#039; || Volume + 8&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;5&#039;&#039;&#039; || Volume - 16 || &#039;&#039;&#039;D&#039;&#039;&#039; || Volume + 16&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;6&#039;&#039;&#039; || Volume × ⅔ || &#039;&#039;&#039;E&#039;&#039;&#039; || Volume × 1.5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;7&#039;&#039;&#039; || Volume × ½ || &#039;&#039;&#039;F&#039;&#039;&#039; || Volume × 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sound Control ===&lt;br /&gt;
&lt;br /&gt;
The sound control effect (&amp;lt;code&amp;gt;X9x&amp;lt;/code&amp;gt; in the XM format, &amp;lt;code&amp;gt;S9x&amp;lt;/code&amp;gt; in the S3M / IT / MPTM formats) can be used to control various aspects of sound playback. Possible parameters are listed here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;{{Warning|1=Using any of these commands outside of the MPTM format (except &amp;lt;abbr title=&amp;quot;Surround On&amp;quot;&amp;gt;&amp;lt;code&amp;gt;S91&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; which is native to only the IT and MPTM formats) is considered a ModPlug hack.}}&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
| Surround Off&lt;br /&gt;
| Disables surround playback on the current channel. &amp;lt;br /&amp;gt; This should only be used when using Quad Surround Panning. &amp;lt;br /&amp;gt; To keep compatibility with other trackers, a normal panning effect should be used in Center Surround mode.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
| Surround On&lt;br /&gt;
| Enables surround playback on the current channel. &amp;lt;br /&amp;gt; When using stereo playback, the right channel of a sample is played with inversed phase (Pro Logic Surround). When using quad playback, the rear channels are used for playing this channel.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| Reverb Off&lt;br /&gt;
| Disables Reverb on the current channel.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;9&#039;&#039;&#039;&lt;br /&gt;
| Reverb On&lt;br /&gt;
| {{Warning|As there is no per-song configuration for reverb available, use of this command is discouraged. Use a reverb plugin such as [[Manual: I3DL2Reverb Plugin|I3DL2Reverb]] or [[Manual: WavesReverb Plugin|WavesReverb]] instead.}} &amp;lt;br /&amp;gt; Enables Reverb on the current channel. &amp;lt;br /&amp;gt; The reverb parameters from the [[Manual: Setup/DSP|DSP Setup]] are used.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
| Center Surround&lt;br /&gt;
| Sets the surround mode to Center Surround for all channels. This is the default mode. &amp;lt;br /&amp;gt; The &amp;lt;abbr title=&amp;quot;Surround On&amp;quot;&amp;gt;&amp;lt;code&amp;gt;S91&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; command will place the channel in the center of the rear channels. Any panning command will bring it back to the front channels.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;B&#039;&#039;&#039;&lt;br /&gt;
| Quad Surround&lt;br /&gt;
| Sets the surround mode to Quad Surround for all channels. &amp;lt;br /&amp;gt; In this mode, panning commands can adjust the position of the rear channels. &amp;lt;br /&amp;gt; Switching between the front and rear channels can only be done by using the &amp;lt;abbr title=&amp;quot;Surround On&amp;quot;&amp;gt;&amp;lt;code&amp;gt;S91&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Surround Off&amp;quot;&amp;gt;&amp;lt;code&amp;gt;S90&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; commands.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;C&#039;&#039;&#039;&lt;br /&gt;
| Global Filters&lt;br /&gt;
| Sets filter mode to Global on all channels (Impulse Tracker behaviour). &amp;lt;br /&amp;gt; In this mode, when resonant filters are enabled with a &amp;lt;abbr title=&amp;quot;MIDI Macro&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Zxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; effect, they will stay active until explicitly disabled by setting the cutoff frequency to the maximum (&amp;lt;code&amp;gt;Z7F&amp;lt;/code&amp;gt;), and the resonance to the minimum (&amp;lt;code&amp;gt;Z80&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;D&#039;&#039;&#039;&lt;br /&gt;
| Local Filters&lt;br /&gt;
| Sets filter mode to Local on all channels. &amp;lt;br /&amp;gt; In this mode, the resonant filter will only affect the current note and will revert when a new note is played.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E&#039;&#039;&#039;&lt;br /&gt;
| Play Forward&lt;br /&gt;
| Forces the current sample to play forward.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;F&#039;&#039;&#039;&lt;br /&gt;
| Play Backward&lt;br /&gt;
| Forces the current sample to play backward.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MOD Effect Commands ==&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
The MOD format only allows use of the effect column; there are no volume column commands.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;hexadecimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;0xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Arpeggio&lt;br /&gt;
| No&lt;br /&gt;
| Plays an arpeggiation of three notes in one row, cycling between the current note, current note + &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; semitones, and current note + &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; semitones.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;1xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Up&lt;br /&gt;
| No&lt;br /&gt;
| Increases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;2xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Down&lt;br /&gt;
| No&lt;br /&gt;
| Decreases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;3xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the pitch of the previous note towards the current note by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;4xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes vibrato with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected vibrato waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;5xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Tone Portamento&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;500 will call Tone Portamento memory&amp;quot;&amp;gt;No&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Tone Portamento memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;300&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;6xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Vibrato&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;600 will call Vibrato memory&amp;quot;&amp;gt;No&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;7xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremolo&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes tremolo with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected tremolo waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;8xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; Ranges from 00h (left) to FFh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;9xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sample Offset&lt;br /&gt;
| Yes&lt;br /&gt;
| Starts playing the current sample from position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; × 256, instead of position 0.  &amp;lt;br /&amp;gt; Ineffective if there is no note in the same pattern cell.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide&lt;br /&gt;
| No&lt;br /&gt;
| Slides the current note volume up or down.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;A0y&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;decreases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Ax0&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;increases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Position Jump&lt;br /&gt;
| —&lt;br /&gt;
| Causes playback to jump to pattern position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt; would restart a song from the beginning (first pattern in the Order List). &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Pattern Break&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt; jumps in. &amp;lt;br /&amp;gt; Ranges from 00h to 7Fh (127; maximum amount of patterns for the MOD format).&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current note volume to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 40h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Break&lt;br /&gt;
| —&lt;br /&gt;
| Jumps to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the next pattern in the Order List. &amp;lt;br /&amp;gt; If the current pattern is the last pattern in the Order List, &amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt; will jump to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the first pattern. &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt; jumps in. &amp;lt;br /&amp;gt; Ranges from 00h to 3Fh (64; maximum amount of rows for each pattern in the MOD format).&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E0x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Filter&lt;br /&gt;
| —&lt;br /&gt;
| Configures the Amiga&#039;s LED lowpass filter.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;E00&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;enables&#039;&#039;&#039; emulation of the lowpass filter.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;E01&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;disables&#039;&#039;&#039; emulation of the lowpass filter.&lt;br /&gt;
Enabling the filter makes the sound output more muffled and is not recommended. &amp;lt;br /&amp;gt; Using this effect is only recommended to explicitly disable the filter for environments where it might not be disabled by default (such as a real Amiga system). &amp;lt;br /&amp;gt;OpenMPT only emulates the lowpass filter if the [[Manual: Setup/Mixer#Use Amiga resampler for Amiga modules|Amiga resampler]] is enabled in the Mixer settings.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Portamento Up&lt;br /&gt;
| No&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;1xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E2x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Portamento Down&lt;br /&gt;
| No&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;2xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E3x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Glissando Control&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is not widely supported and behaves quirky in OpenMPT.}} &amp;lt;br /&amp;gt; Configures whether tone portamento effects slide by semitones or not.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;E30&amp;lt;/code&amp;gt; disables&#039;&#039;&#039; glissando.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;E31&amp;lt;/code&amp;gt; enables&#039;&#039;&#039; glissando.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E4x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Vibrato Waveform&lt;br /&gt;
| —&lt;br /&gt;
| Sets the waveform of future Vibrato effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E5x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Finetune&lt;br /&gt;
| —&lt;br /&gt;
| Overrides the finetune value for the currently playing note. &amp;lt;br /&amp;gt; Functions similarly to the same setting in the Sample Editor but is only applied temporarily. &amp;lt;br /&amp;gt; This command only works with a note next to it.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop Start&lt;br /&gt;
| —&lt;br /&gt;
| Marks the current row position to be used as the start of a pattern loop.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E6x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop&lt;br /&gt;
| —&lt;br /&gt;
| Each time this command is reached, jumps to the row marked by &amp;lt;abbr title=&amp;quot;Pattern Loop Start&amp;quot;&amp;gt;&amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; until &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; jumps have occured in total. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;E6x&amp;lt;/code&amp;gt; is used in a pattern with no &amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt; effect, &amp;lt;code&amp;gt;E6x&amp;lt;/code&amp;gt; will use the row position marked by any previous &amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt; effect. &amp;lt;br /&amp;gt; Pattern loops cannot span multiple patterns. &amp;lt;br /&amp;gt; Ranges from 1h to Fh.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E7x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Tremolo Waveform&lt;br /&gt;
| —&lt;br /&gt;
| Sets the waveform of future Tremolo effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E8x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| &#039;&#039;&amp;lt;small&amp;gt;&amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;8xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is a much finer panning effect.&amp;lt;/small&amp;gt;&#039;&#039; &amp;lt;br /&amp;gt; Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; Ranges from 0h (left) to Fh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E9x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Retrigger&lt;br /&gt;
| No&lt;br /&gt;
| Retriggers the current note every &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; This effect works with parameters greater than the current Speed setting if the row after it also contains an &amp;lt;code&amp;gt;E9x&amp;lt;/code&amp;gt; effect.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EAx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Volume Slide Up&lt;br /&gt;
| No&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Ax0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EBx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Volume Slide Down&lt;br /&gt;
| No&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;A0y&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;ECx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Cut&lt;br /&gt;
| —&lt;br /&gt;
| Sets note volume to 0 after &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, this command is ignored.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EDx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Delay&lt;br /&gt;
| —&lt;br /&gt;
| Delays the note or instrument change in the current pattern cell by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, the current pattern cell&#039;s contents are never played.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Delay&lt;br /&gt;
| —&lt;br /&gt;
| Repeats the current row &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; times. &amp;lt;br /&amp;gt; Notes are not retriggered on every repetition, but effects are still processed. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt; commands are found on the same row, only the rightmost is considered.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Invert Loop&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect permanently modifies the module file when encountered during playback.}}&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;&#039;&#039;&#039;, when used with a looped sample, goes through the sample loop and inverts all sampling points (i.e. changes the sign) one by one at speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;EF0&amp;lt;/code&amp;gt;&#039;&#039;&#039; cancels &amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;.&lt;br /&gt;
Samples modified by this effect cannot be recovered automatically (e.g. no undo point is created).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Speed / Tempo&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|Avoid using 20h or 00h as parameters.}}&lt;br /&gt;
* Sets the module &#039;&#039;&#039;Speed&#039;&#039;&#039; (ticks per row) if &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; is less than 20h.&lt;br /&gt;
* Sets the module &#039;&#039;&#039;Tempo&#039;&#039;&#039; if &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; greater than or equal to 20h.&lt;br /&gt;
Some players (including old OpenMPT versions) differ in their interpretations of &amp;lt;code&amp;gt;F20&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;F00&amp;lt;/code&amp;gt; does nothing in OpenMPT, but some players stop the song when they encounter it.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; Effect Memory&#039;&#039;&#039;: &amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming that all available parameters for a given effect (e.g. &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;) are equivalent to 0:&lt;br /&gt;
* &#039;&#039;&#039;No&#039;&#039;&#039; means that the command does nothing.&lt;br /&gt;
* &#039;&#039;&#039;Yes&#039;&#039;&#039; means that the effect calls its own parameter memory. &amp;lt;br /&amp;gt; For example, if the effect &amp;lt;abbr title=&amp;quot;Vibrato with speed 8 and depth 2&amp;quot;&amp;gt;&amp;lt;code&amp;gt;482&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is followed by the effect &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; on a subsequent row, the &amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt; effect recalls the effect parameter 82h.&lt;br /&gt;
* &#039;&#039;&#039;—&#039;&#039;&#039; means that the value has no special meaning. &amp;lt;br /&amp;gt; For example, &amp;lt;abbr title=&amp;quot;Set Volume&amp;quot;&amp;gt;&amp;lt;code&amp;gt;C00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets note volume to 0, &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;800&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the channel&#039;s panning position to hard left, &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; jumps to the first pattern, etc.&lt;br /&gt;
&lt;br /&gt;
== XM Effect Commands ==&lt;br /&gt;
&lt;br /&gt;
Fasttracker II&#039;s XM format uses an extended version of the MOD command set.&lt;br /&gt;
&lt;br /&gt;
As Fasttracker II was a rather buggy program, many effect commands may behave in a quirky way. Always enable the default [[Manual: Compatible Playback#XM compatibility settings|FT2 compatible playback settings]] for the best possible emulation of those quirks.&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
Some effects and features mentioned here are not actually part of the original XM format specifications. They will be labeled &#039;&#039;&#039;ModPlug hacks&#039;&#039;&#039;, as they are not compatible with Fasttracker II. Use of these effects in the XM format is strongly discouraged; if you wish to use them, you should use a different format with equivalent, natively implemented effects.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;hexadecimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;0xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Arpeggio&lt;br /&gt;
| No&lt;br /&gt;
| Plays an arpeggiation of three notes in one row, cycling between the current note, current note + &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; semitones, and current note + &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; semitones.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;1xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Increases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;2xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Decreases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;3xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the pitch of the previous note towards the current note by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;4xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes vibrato with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected vibrato waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;5xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Tone Portamento memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;300&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;6xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;7xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremolo&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes tremolo with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected tremolo waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;8xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current sample&#039;s panning position. &amp;lt;br /&amp;gt; As every sample has an enforced default panning, this setting is reset by any future entries in the instrument column. &amp;lt;br /&amp;gt; Ranges from 00h (left) to FFh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;9xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sample Offset&lt;br /&gt;
| Yes&lt;br /&gt;
| Starts playing the current sample from position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; × 256, instead of position 0. &amp;lt;br /&amp;gt; Ineffective if there is no note in the same pattern cell.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the current note volume up or down.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;A0y&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;decreases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Ax0&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;increases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Position Jump&lt;br /&gt;
| —&lt;br /&gt;
| Causes playback to jump to pattern position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt; would restart a song from the beginning (first pattern in the Order List). &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Pattern Break&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row and &#039;&#039;&#039;to the right&#039;&#039;&#039; of &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt; jumps in.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current note volume to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 40h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Break&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|To maintain compatibility with Fasttracker II, you should not jump past row 3Fh (63).}} &amp;lt;br /&amp;gt; Jumps to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the next pattern in the Order List. &amp;lt;br /&amp;gt; If the current pattern is the last pattern in the Order List, &amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt; will jump to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the first pattern. &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row and &#039;&#039;&#039;to the left&#039;&#039;&#039; of &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt; jumps in.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Portamento Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;1xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E2x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Portamento Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;2xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E3x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Glissando Control&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is not widely supported and behaves quirky in OpenMPT.}} &amp;lt;br /&amp;gt; Configures whether tone portamento effects slide by semitones or not.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;E30&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;disables&#039;&#039;&#039; glissando.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;E31&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;enables&#039;&#039;&#039; glissando.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E4x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Vibrato Waveform&lt;br /&gt;
| —&lt;br /&gt;
| Sets the waveform of future Vibrato effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E5x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Finetune&lt;br /&gt;
| —&lt;br /&gt;
| Overrides the finetune value for the currently playing note. &amp;lt;br /&amp;gt; Functions similarly to the same setting in the Sample Editor but is only applied temporarily. &amp;lt;br /&amp;gt; This command only works with a note next to it.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop Start&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|A Fasttracker II bug makes use of this command non-trivial.}} &amp;lt;br /&amp;gt; Marks the current row position to be used as the start of a pattern loop. &amp;lt;br /&amp;gt; {{Warning|1=When &amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt; is used on pattern row &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, the following pattern also starts from row &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; instead of row 0. &amp;lt;br /&amp;gt; This can be circumvented by using a &amp;lt;abbr title=&amp;quot;Pattern Break&amp;quot;&amp;gt;&amp;lt;code&amp;gt;D00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; command on the last row of the same pattern.}}&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E6x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop&lt;br /&gt;
| —&lt;br /&gt;
| Each time this command is reached, jumps to the row marked by &amp;lt;abbr title=&amp;quot;Pattern Loop Start&amp;quot;&amp;gt;&amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; until &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; jumps have occured in total. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;E6x&amp;lt;/code&amp;gt; is used in a pattern with no &amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt; effect, &amp;lt;code&amp;gt;E6x&amp;lt;/code&amp;gt; will use the row position marked by any previous &amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt; effect. &amp;lt;br /&amp;gt; Pattern loops cannot span multiple patterns. &amp;lt;br /&amp;gt; Ranges from 1h to Fh.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E7x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Tremolo Waveform&lt;br /&gt;
| —&lt;br /&gt;
| Sets the waveform of future Tremolo effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E8x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| &#039;&#039;&amp;lt;small&amp;gt;&amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;8xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is a much finer panning effect.&amp;lt;/small&amp;gt;&#039;&#039; &amp;lt;br /&amp;gt; Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; Ranges from 0h (left) to Fh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E9x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Retrigger&lt;br /&gt;
| No&lt;br /&gt;
| Retriggers the current note every &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; This effect works with parameters greater than the current Speed setting if the row after it also contains an &amp;lt;code&amp;gt;E9x&amp;lt;/code&amp;gt; effect.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EAx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Volume Slide Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Ax0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EBx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Volume Slide Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;A0y&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;ECx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Cut&lt;br /&gt;
| —&lt;br /&gt;
| Sets note volume to 0 after &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, this command is ignored.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EDx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Delay&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This command is very buggy (e.g. portamento effects next to a note delay are ignored). You should not rely on these bugs to be emulated by other players.}} &amp;lt;br /&amp;gt; Delays the note or instrument change in the current pattern cell by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, the current pattern cell&#039;s contents are never played.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Delay&lt;br /&gt;
| —&lt;br /&gt;
| Repeats the current row &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; times. &amp;lt;br /&amp;gt; Notes are not retriggered on every repetition, but effects are still processed. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt; commands are found on the same row, only the rightmost is considered.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Active Macro&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Selects the active [[Manual: Zxx Macros#Parametered Macros|parametered macro]] for the current channel.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Speed / Tempo&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|Avoid using 00h as a parameter.}}&lt;br /&gt;
* Sets the module &#039;&#039;&#039;Speed&#039;&#039;&#039; (ticks per row) if &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; is less than 20h.&lt;br /&gt;
* Sets the module &#039;&#039;&#039;Tempo&#039;&#039;&#039; if &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; greater than or equal to 20h.&lt;br /&gt;
In OpenMPT and Fasttracker II, &amp;lt;code&amp;gt;F00&amp;lt;/code&amp;gt; sets the Speed to 65535 ticks per row, but in other players it may stop the song entirely, or simply do nothing.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Gxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Global Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the global volume. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 40h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Global Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but applies to the global volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Kxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Key Off&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|Avoid using 00h as a parameter; it interferes with other entries (e.g. notes, instruments) in the same pattern cell.}} &amp;lt;br /&amp;gt; Triggers a Note Off command after &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; ticks.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Lxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Envelope Position&lt;br /&gt;
| —&lt;br /&gt;
| Sets the volume envelope playback position to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If the volume envelope’s sustain point is enabled, the panning envelope position is also changed.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Pxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the current sample&#039;s panning position left or right.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;P0y&amp;lt;/code&amp;gt;&#039;&#039;&#039; slides the panning to the &#039;&#039;&#039;left&#039;&#039;&#039; by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on the first tick of the row.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Px0&amp;lt;/code&amp;gt;&#039;&#039;&#039; slides the panning to the &#039;&#039;&#039;right&#039;&#039;&#039; by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Rxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Retrigger&lt;br /&gt;
| Yes&lt;br /&gt;
| {{Warning|This command is very buggy (e.g. if a volume command is in the same pattern cell as &amp;lt;code&amp;gt;Rxy&amp;lt;/code&amp;gt;, it will skip some ticks).}} &amp;lt;br /&amp;gt; Retriggers the current note every &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks and changes the volume based on the &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; value (see the [[#Retrigger Volume|Retrigger Volume table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Txy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremor&lt;br /&gt;
| Yes&lt;br /&gt;
| Rapidly switches the sample volume on and off on every tick of the row except the first. &amp;lt;br /&amp;gt; Volume is &#039;&#039;&#039;on&#039;&#039;&#039; for &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; + 1 ticks and &#039;&#039;&#039;off&#039;&#039;&#039; for &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; + 1 ticks. &amp;lt;br /&amp;gt; For instrument plugins {{Warning|(ModPlug hack)}}, this command sends note-on and note-off messages instead of modifying the volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;X1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Extra Fine Portamento Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Fine Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;E1x&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but with 4 times the precision.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;X2x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Extra Fine Portamento Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Fine Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;E2x&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but with 4 times the precision.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;X5x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panbrello Waveform&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Sets the waveform of future Panbrello effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;X6x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Pattern Delay&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Extends the current row by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;X6x&amp;lt;/code&amp;gt; commands are found on the same row, the sum of their parameters is used.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;X9x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sound Control&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Executes a sound control command (see the [[Manual: Effect Reference#Sound Control|Sound Control table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;XAx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| High Offset&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Sets the high offset for future &amp;lt;abbr title=&amp;quot;Sample Offset&amp;quot;&amp;gt;&amp;lt;code&amp;gt;9xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; commands. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; × 65536 (10000h) is added to all offset effects that follow this command.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Yxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panbrello&lt;br /&gt;
| Yes&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Executes Panbrello with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected Panbrello waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Zxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| MIDI Macro&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Executes a [[Manual: Zxx Macros|MIDI Macro]].&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;\xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Smooth MIDI Macro&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Executes an interpolated MIDI Macro.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
The following commands can be entered into the effect column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;decimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;axx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Volume Slide Up&lt;br /&gt;
| No&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Fine Volume Slide Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;EAx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume up &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; units on the first tick).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;bxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Volume Slide Down&lt;br /&gt;
| No&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Fine Volume Slide Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;EBx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume down &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; units on the first tick).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;cxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide Up&lt;br /&gt;
| No&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Ax0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume up &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; units on all ticks except the first).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;dxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide Down&lt;br /&gt;
| No&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;A0y&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume down &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; units on all ticks except the first).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;gxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Tone Portamento&amp;quot;&amp;gt;&amp;lt;code&amp;gt;3xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (pitch-bends from the previous note to the current note). &amp;lt;br /&amp;gt; Compared to &amp;lt;code&amp;gt;3xx&amp;lt;/code&amp;gt;, parameters are 16 times more coarse (e.g. &amp;lt;code&amp;gt;g01&amp;lt;/code&amp;gt; = &amp;lt;abbr title=&amp;quot;Tone Portamento with speed 16 (10h)&amp;quot;&amp;gt;&amp;lt;code&amp;gt;310&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;). &amp;lt;br /&amp;gt; Combining the effect with &amp;lt;code&amp;gt;3xx&amp;lt;/code&amp;gt; will double the effect parameter (e.g. &amp;lt;code&amp;gt;g01&amp;lt;/code&amp;gt; would act like &amp;lt;code&amp;gt;g02&amp;lt;/code&amp;gt;) and ignores the &amp;lt;code&amp;gt;3xx&amp;lt;/code&amp;gt; command. &amp;lt;br /&amp;gt; Ineffective if &amp;lt;abbr title=&amp;quot;Note Delay&amp;quot;&amp;gt;&amp;lt;code&amp;gt;EDx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is in the same pattern cell.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;hxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Vibrato Depth&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes vibrato with depth &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; and speed from the last &amp;lt;abbr title=&amp;quot;Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;4xy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; or &amp;lt;abbr title=&amp;quot;Vibrato Speed&amp;quot;&amp;gt;&amp;lt;code&amp;gt;u0x&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; command.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;lxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Slide Left&lt;br /&gt;
| No&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Panning Slide Left&amp;quot;&amp;gt;&amp;lt;code&amp;gt;P0y&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the panning left by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; units).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;pxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| No&lt;br /&gt;
| Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; This effect only accepts 4-bit parameters (with 16 distinct values); when saving the file, parameters that are not multiples of 4 will be rounded down to a multiple of 4 (e.g. 55 will save as 52 and 5 will save as 4). &amp;lt;br /&amp;gt; Ranges from 0 (left) to 64 (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;rxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Slide Right&lt;br /&gt;
| No&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Panning Slide Right&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Px0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the panning right by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; units).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;uxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Vibrato Speed&lt;br /&gt;
| No&lt;br /&gt;
| Sets the vibrato speed to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;, but does not execute a vibrato.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;vxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Volume&lt;br /&gt;
| No&lt;br /&gt;
| Sets the current note volume to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; The behaviour of this command when sent to instrument plugins can be configured in the [[Manual: Instruments#Plugin / MIDI|Instrument Editor]] {{Warning|(ModPlug hack)}}. &amp;lt;br /&amp;gt; Ranges from 0 (off) to 64 (full). &lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; Effect Memory&#039;&#039;&#039;: &amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming that all available parameters for a given effect (e.g. &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;) are equivalent to 0:&lt;br /&gt;
* &#039;&#039;&#039;No&#039;&#039;&#039; means that the command does nothing.&lt;br /&gt;
* &#039;&#039;&#039;Yes&#039;&#039;&#039; means that the effect calls its own parameter memory. &amp;lt;br /&amp;gt; For example, if the effect &amp;lt;abbr title=&amp;quot;Vibrato with speed 8 and depth 2&amp;quot;&amp;gt;&amp;lt;code&amp;gt;482&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is followed by the effect &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; on a subsequent row, the &amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt; effect recalls the effect parameter 82h.&lt;br /&gt;
* &#039;&#039;&#039;—&#039;&#039;&#039; means that the value has no special meaning. &amp;lt;br /&amp;gt; For example, &amp;lt;abbr title=&amp;quot;Set Volume&amp;quot;&amp;gt;&amp;lt;code&amp;gt;C00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets note volume to 0, &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;800&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the channel&#039;s panning position to hard left, &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; jumps to the first pattern, etc.&lt;br /&gt;
&lt;br /&gt;
== S3M Effect Commands ==&lt;br /&gt;
&lt;br /&gt;
Scream Tracker′s S3M format uses a command set that is entirely different from the MOD and XM formats&#039;. Its use of the volume column is very limited.&lt;br /&gt;
&lt;br /&gt;
The format was soon extended by other programs and players to support more effect commands (e.g. 7-Bit panning, panning slides, channel volume, etc.). Though these are also supported by OpenMPT, they are not original Scream Tracker 3 commands, and thus will be marked as such below.&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
The following commands can be entered into the effect column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;hexadecimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Axx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Speed&lt;br /&gt;
| No&lt;br /&gt;
| Sets the module Speed (ticks per row).&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Position Jump&lt;br /&gt;
| —&lt;br /&gt;
| Causes playback to jump to pattern position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt; would restart a song from the beginning (first pattern in the Order List). &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Pattern Break&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt; jumps in.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Break&lt;br /&gt;
| —&lt;br /&gt;
| Jumps to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the next pattern in the Order List. &amp;lt;br /&amp;gt; If the current pattern is the last pattern in the Order List, &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt; will jump to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the first pattern. &amp;lt;br /&amp;gt;If &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt; jumps in. &amp;lt;br /&amp;gt; Ranges from 00h to 3Fh (64; maximum amount of pattern rows for the S3M format); higher values are ignored.&lt;br /&gt;
| class=&amp;quot;eff-global | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Volume Slide&lt;br /&gt;
| Global&lt;br /&gt;
| Slides the current note volume up or down.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;D0y&amp;lt;/code&amp;gt; decreases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on every tick of the row except the first. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; is Fh and [[Manual: Song Properties#Fast Volume Slides|Fast Volume Slides]] are enabled, volume decreases on every tick.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Dx0&amp;lt;/code&amp;gt; increases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on every tick of the row except the first. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is Fh and [[Manual: Song Properties#Fast Volume Slides|Fast Volume Slides]] are enabled, volume decreases on every tick.&amp;lt;br /&amp;gt; Volume will not exceed 64 (40h).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;DFy&amp;lt;/code&amp;gt; finely decreases&#039;&#039;&#039; note volume by only applying &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;DxF&amp;lt;/code&amp;gt; finely increases&#039;&#039;&#039; note volume by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Exx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Down &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Portamento Down &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Extra Fine Portamento Down&lt;br /&gt;
| Global&lt;br /&gt;
| Decreases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; decreases note pitch by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on the first tick of the row.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt; extra-finely&#039;&#039;&#039; decreases note pitch by applying with 4 times the precision of &amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Up &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Portamento Up &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Extra Fine Portamento Up&lt;br /&gt;
| Global&lt;br /&gt;
| Increases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;FFx&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; increases note pitch by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on the first tick of the row.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;FEx&amp;lt;/code&amp;gt; extra-finely&#039;&#039;&#039; increases note pitch by applying with 4 times the precision of &amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Gxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the pitch of the previous note towards the current note by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes vibrato with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected vibrato waveform (see the [[#Waveform Types|Waveform Types table]] for more details). &amp;lt;br /&amp;gt; Shares memory with &amp;lt;abbr title=&amp;quot;Fine Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Uxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Ixy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremor&lt;br /&gt;
| Global&lt;br /&gt;
| Rapidly switches the sample volume on and off. &amp;lt;br /&amp;gt; Volume is on for &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks and off for &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Jxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Arpeggio&lt;br /&gt;
| Global&lt;br /&gt;
| Plays an arpeggiation of three notes in one row, cycling between the current note, current note + &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; semitones, and current note + &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; semitones.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Kxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Vibrato&lt;br /&gt;
| Global&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Lxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Tone Portamento&lt;br /&gt;
| Global&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Tone Portamento memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;G00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Mxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Channel Volume&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Sets the current channel volume, which multiplies all note volumes it encompasses. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 40h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Nxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Channel Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Similar to &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but applies to the current channel&#039;s volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sample Offset&lt;br /&gt;
| Yes&lt;br /&gt;
| Starts playing the current sample from position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; × 256, instead of position 0. &amp;lt;br /&amp;gt; Ineffective if there is no note in the same pattern cell.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Pxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Slide &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Panning Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Slides the current channel&#039;s panning position left or right.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;P0y&amp;lt;/code&amp;gt;&#039;&#039;&#039; slides the panning to the &#039;&#039;&#039;right&#039;&#039;&#039; by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Px0&amp;lt;/code&amp;gt;&#039;&#039;&#039; slides the panning to the &#039;&#039;&#039;left&#039;&#039;&#039; by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;PFy&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; slides the panning to the right by only applying &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;PxF&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; slides the panning to the left by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Qxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Retrigger&lt;br /&gt;
| Global&lt;br /&gt;
| Retriggers the current note every &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks and changes the volume based on the &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; value (see the [[#Retrigger Volume|Retrigger Volume table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Rxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremolo&lt;br /&gt;
| Global&lt;br /&gt;
| Executes tremolo with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected tremolo waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Glissando Control&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| {{Warning|This effect is not widely supported and behaves quirky in OpenMPT.}} &amp;lt;br /&amp;gt; Configures whether tone portamento effects slide by semitones or not.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;S10&amp;lt;/code&amp;gt; disables&#039;&#039;&#039; glissando.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;S11&amp;lt;/code&amp;gt; enables&#039;&#039;&#039; glissando.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S2x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Finetune&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&amp;lt;small&amp;gt;Considered a legacy command.&amp;lt;/small&amp;gt;&#039;&#039; &amp;lt;br /&amp;gt; Overrides the current sample&#039;s C-5 frequency with a MOD finetune value.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S3x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Vibrato Waveform&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the waveform of future Vibrato effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S4x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Tremolo Waveform&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the waveform of future Tremolo effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S5x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panbrello Waveform&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Sets the waveform of future Panbrello effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S6x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Pattern Delay&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Extends the current row by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;S6x&amp;lt;/code&amp;gt; commands are on the same row, the sum of their parameters is used.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S8x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&amp;lt;small&amp;gt;&amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is a much finer panning effect.&amp;lt;/small&amp;gt;&#039;&#039; &amp;lt;br /&amp;gt; Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; Ranges from 0h (left) to Fh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S9x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sound Control&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Executes a sound control command (see the [[#Sound Control|Sound Control table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SAx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| High Offset&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Sets the high offset for future &amp;lt;abbr title=&amp;quot;Sample Offset&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; commands. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; × 65536 (10000h) is added to all offset effects that follow this command.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop Start&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Marks the current row position to be used as the start of a pattern loop.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SBx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Each time this command is reached, jumps to the row marked by &amp;lt;abbr title=&amp;quot;Pattern Loop Start&amp;quot;&amp;gt;&amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; until &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; jumps have occurred in total. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;SBx&amp;lt;/code&amp;gt; is used in a pattern with no &amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt; effect, &amp;lt;code&amp;gt;SBx&amp;lt;/code&amp;gt; will use the row position marked by any previous &amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt; effect. &amp;lt;br /&amp;gt; Pattern loops cannot span multiple patterns. &amp;lt;br /&amp;gt; Ranges from 1h to Fh.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SCx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Cut&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Stops the current sample after &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is 0, or greater than or equal to the current module Speed, this command is ignored.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SDx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Delay&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Delays the note or instrument change in the current pattern cell by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is 0, or greater than or equal to the current module Speed, the current pattern cell&#039;s contents are never played.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SEx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Delay&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Repeats the current row &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; times. &amp;lt;br /&amp;gt; Notes are not retriggered on every repetition, but effects are still processed. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;SEx&amp;lt;/code&amp;gt; commands are on the same row, only the leftmost command is used.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;T0x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Decrease Tempo&lt;br /&gt;
| Yes&lt;br /&gt;
| Decreases the module Tempo by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; BPM on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;T1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Increase Tempo&lt;br /&gt;
| Yes&lt;br /&gt;
| Increases the module Tempo by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; BPM on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Txx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Tempo&lt;br /&gt;
| No&lt;br /&gt;
| Sets the module Tempo if &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; is greater than or equal to 20h.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Uxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but with 4 times the precision. &amp;lt;br /&amp;gt; Shares memory with &amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Vxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Global Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the global volume. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 40h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Wxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Global Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Similar to &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but applies to the global volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current channel&#039;s panning position.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;XA4&amp;lt;/code&amp;gt; enables surround playback&#039;&#039;&#039; on the current channel. &amp;lt;br /&amp;gt; When using &#039;&#039;&#039;stereo&#039;&#039;&#039; playback, the right channel of a sample is played with inversed phase (Pro Logic Surround). &amp;lt;br /&amp;gt; When using &#039;&#039;&#039;quad&#039;&#039;&#039; playback, the rear channels are used for playing this channel.&lt;br /&gt;
Surround mode can be disabled by using a different &amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt; command on the same channel it was enabled on. &amp;lt;br /&amp;gt; Ranges from 00h (left) to 80h (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Yxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panbrello&lt;br /&gt;
| Yes&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Executes panbrello with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected panbrello waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Zxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| MIDI Macro&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Executes a [[Manual: Zxx Macros|MIDI Macro]]. &amp;lt;br /&amp;gt; Since MIDI Macros are not stored in S3M files, only the default macro configuration can be used to control the resonant filter.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
The following commands can be entered into the volume column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;decimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;pxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| No&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Sets the current channel&#039;s panning position to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; Ranges from 0 to 64 (decimal).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;vxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Volume&lt;br /&gt;
| No&lt;br /&gt;
| Sets the current note volume to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; Ranges from 0 to 64 (decimal).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; Effect Memory:&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming that all available parameters for a given effect (e.g. &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;) are equivalent to 0:&lt;br /&gt;
* &#039;&#039;&#039;No&#039;&#039;&#039; means that the command does nothing.&lt;br /&gt;
* &#039;&#039;&#039;Yes&#039;&#039;&#039; means that the effect calls its own parameter memory. &amp;lt;br /&amp;gt; For example, if the effect &amp;lt;abbr title=&amp;quot;Vibrato with speed 8 and depth 2&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H82&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is followed by the effect &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; on a subsequent row, the &amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt; command recalls the effect parameter 82h.&lt;br /&gt;
* &#039;&#039;&#039;—&#039;&#039;&#039; means that the value has no special meaning. &amp;lt;br /&amp;gt; For example, &amp;lt;abbr title=&amp;quot;Set Global Volume&amp;quot;&amp;gt;&amp;lt;code&amp;gt;V00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the global volume to 0, &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;X00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the channel&#039;s panning position to hard left, &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; jumps to the first pattern, etc.&lt;br /&gt;
* &#039;&#039;&#039;Global&#039;&#039;&#039; means that the effect calls any previous non-zero parameter in the same column. &amp;lt;br /&amp;gt; For example, if the effect &amp;lt;abbr title=&amp;quot;Portamento Down by 22h (34) units&amp;quot;&amp;gt;&amp;lt;code&amp;gt;E22&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is followed by &amp;lt;abbr title=&amp;quot;Tremor memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;I00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, the &amp;lt;code&amp;gt;I00&amp;lt;/code&amp;gt; command recalls the effect parameter 22h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AdLib / OPL3 Instruments ===&lt;br /&gt;
OpenMPT supports AdLib / OPL3 instruments in the S3M format, but not all effects are compatible with them. Below is a list of effects that do not function with AdLib / OPL3 instruments in S3M files:&lt;br /&gt;
* &amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt; (Sample Offset)&lt;br /&gt;
* &amp;lt;code&amp;gt;S9x&amp;lt;/code&amp;gt; (Sound Control)&lt;br /&gt;
* &amp;lt;code&amp;gt;SAx&amp;lt;/code&amp;gt; (High Offset)&lt;br /&gt;
* &amp;lt;code&amp;gt;XA4&amp;lt;/code&amp;gt; (Enable Surround)&lt;br /&gt;
&lt;br /&gt;
The following effects are not supported in Scream Tracker 3 but work with AdLib / OPL3 instruments in OpenMPT:&lt;br /&gt;
* &amp;lt;code&amp;gt;Mxx&amp;lt;/code&amp;gt; (Set Channel Volume)&lt;br /&gt;
* &amp;lt;code&amp;gt;Nxy&amp;lt;/code&amp;gt; (Channel Volume Slide)&lt;br /&gt;
&lt;br /&gt;
Additionally, since AdLib / OPL3 instruments only support hard left, center, and hard right panning, the range of &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;pxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; are effectively restricted to those positions.&lt;br /&gt;
&lt;br /&gt;
== IT Effect Commands ==&lt;br /&gt;
&lt;br /&gt;
Impulse Tracker&#039;s IT format uses a command set that expands upon the S3M format&#039;s, adding several new effects and improving effect memory usage.&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
The following commands can be entered into the effect column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;hexadecimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Axx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Speed&lt;br /&gt;
| No&lt;br /&gt;
| Sets the module Speed (ticks per row).&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Position Jump&lt;br /&gt;
| —&lt;br /&gt;
| Causes playback to jump to pattern position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt; would restart a song from the beginning (first pattern in the Order List). &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Pattern Break&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt; jumps in.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Break&lt;br /&gt;
| —&lt;br /&gt;
| Jumps to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the next pattern in the Order List. &amp;lt;br /&amp;gt; If the current pattern is the last pattern in the Order List, &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt; will jump to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the first pattern. &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt; jumps in. &amp;lt;br /&amp;gt; Ranges from 00h to the next pattern&#039;s row length; higher values are treated as 00h.&lt;br /&gt;
| class=&amp;quot;eff-global | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the current note volume up or down.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;D0y&amp;lt;/code&amp;gt; decreases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on every tick of the row except the first. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; is Fh, volume decreases on every tick.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Dx0&amp;lt;/code&amp;gt; increases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on every tick of the row except the first. &amp;lt;br /&amp;gt; Volume will not exceed 64 (40h).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;DFy&amp;lt;/code&amp;gt; finely decreases&#039;&#039;&#039; note volume by only applying &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;DxF&amp;lt;/code&amp;gt; finely increases&#039;&#039;&#039; note volume by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Exx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Down &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Portamento Down &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Extra Fine Portamento Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Decreases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; decreases note pitch by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on the first tick of the row.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt; extra-finely&#039;&#039;&#039; decreases note pitch by applying with 4 times the precision of &amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Up &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Portamento Up &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Extra Fine Portamento Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Increases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;FFx&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; increases note pitch by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on the first tick of the row.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;FEx&amp;lt;/code&amp;gt; extra-finely&#039;&#039;&#039; increases note pitch by applying with 4 times the precision of &amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Gxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the pitch of the previous note towards the current note by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes vibrato with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected vibrato waveform (see the [[#Waveform Types|Waveform Types table]] for more details). &amp;lt;br /&amp;gt; Shares memory with &amp;lt;abbr title=&amp;quot;Fine Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Uxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Ixy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremor&lt;br /&gt;
| Yes&lt;br /&gt;
| Rapidly switches the sample volume on and off. &amp;lt;br /&amp;gt; Volume is on for &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks and off for &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; For instrument plugins {{Warning|(ModPlug hack)}}, this command sends note-on and note-off messages instead of modifying the volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Jxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Arpeggio&lt;br /&gt;
| Yes&lt;br /&gt;
| Plays an arpeggiation of three notes in one row, cycling between the current note, current note + &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; semitones, and current note + &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; semitones.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Kxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Lxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Tone Portamento memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;G00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Mxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Channel Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current channel volume, which multiplies all note volumes it encompasses. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 40h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Nxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Channel Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but applies to the current channel&#039;s volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sample Offset&lt;br /&gt;
| Yes&lt;br /&gt;
| Starts playing the current sample from position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; × 256, instead of position 0. &amp;lt;br /&amp;gt; Ineffective if there is no note in the same pattern cell.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Pxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Slide &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Panning Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the current channel&#039;s panning position left or right.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;P0y&amp;lt;/code&amp;gt;&#039;&#039;&#039; slides the panning to the &#039;&#039;&#039;right&#039;&#039;&#039; by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Px0&amp;lt;/code&amp;gt;&#039;&#039;&#039; slides the panning to the &#039;&#039;&#039;left&#039;&#039;&#039; by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;PFy&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; slides the panning to the right by only applying &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;PxF&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; slides the panning to the left by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Qxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Retrigger&lt;br /&gt;
| Yes&lt;br /&gt;
| Retriggers the current note every &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks and changes the volume based on the &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; value (see the [[#Retrigger Volume|Retrigger Volume table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Rxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremolo&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes tremolo with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected tremolo waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Glissando Control&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| {{Warning|This effect is not widely supported and behaves quirky in OpenMPT.}} &amp;lt;br /&amp;gt; Configures whether tone portamento effects slide by semitones or not.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;S10&amp;lt;/code&amp;gt; disables&#039;&#039;&#039; glissando.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;S11&amp;lt;/code&amp;gt; enables&#039;&#039;&#039; glissando.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S2x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Finetune&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&amp;lt;small&amp;gt;Considered a legacy command.&amp;lt;/small&amp;gt;&#039;&#039; &amp;lt;br /&amp;gt; Overrides the current sample&#039;s C-5 frequency with a MOD finetune value.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S3x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Vibrato Waveform&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the waveform of future Vibrato effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S4x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Tremolo Waveform&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the waveform of future Tremolo effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S5x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panbrello Waveform&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the waveform of future Panbrello effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S6x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Pattern Delay&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Extends the current row by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;S6x&amp;lt;/code&amp;gt; commands are on the same row, the sum of their parameters is used.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S70&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Past Note Cut&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Cuts&#039;&#039;&#039; all notes playing as a result of New Note Actions on the current channel.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S71&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Past Note Off&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Sends a Note Off&#039;&#039;&#039; to all notes playing as a result of New Note Actions on the current channel.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S72&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Past Note Fade&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Fades out&#039;&#039;&#039; all notes playing as a result of New Note Actions on the current channel.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S73&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| NNA Note Cut&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the currently active note&#039;s New Note Action to &#039;&#039;&#039;Note Cut&#039;&#039;&#039;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S74&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| NNA Note Continue&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the currently active note&#039;s New Note Action to &#039;&#039;&#039;Continue&#039;&#039;&#039;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S75&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| NNA Note Off&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the currently active note&#039;s New Note Action to &#039;&#039;&#039;Note Off&#039;&#039;&#039;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S76&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| NNA Note Fade&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the currently active note&#039;s New Note Action to &#039;&#039;&#039;Note Fade&#039;&#039;&#039;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S77&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Envelope Off&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Disables&#039;&#039;&#039; the currently active note&#039;s &#039;&#039;&#039;volume&#039;&#039;&#039; envelope.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S78&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Envelope On&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Enables&#039;&#039;&#039; the currently active note&#039;s &#039;&#039;&#039;volume&#039;&#039;&#039; envelope.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S79&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Envelope Off&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Disables&#039;&#039;&#039; the currently active note&#039;s &#039;&#039;&#039;panning&#039;&#039;&#039; envelope.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S7A&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Envelope On&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Enables&#039;&#039;&#039; the currently active note&#039;s &#039;&#039;&#039;panning&#039;&#039;&#039; envelope.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S7B&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pitch Envelope Off&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Disables&#039;&#039;&#039; the currently active note&#039;s &#039;&#039;&#039;pitch&#039;&#039;&#039; or &#039;&#039;&#039;filter&#039;&#039;&#039; envelope.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S7C&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pitch Envelope On&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Enables&#039;&#039;&#039; the currently active note&#039;s &#039;&#039;&#039;pitch&#039;&#039;&#039; envelope.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S8x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&amp;lt;small&amp;gt;&amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is a much finer panning effect.&amp;lt;/small&amp;gt;&#039;&#039; &amp;lt;br /&amp;gt; Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; Ranges from 0h (left) to Fh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S9x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sound Control&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| {{Warning|1=Only &amp;lt;abbr title=&amp;quot;Surround On&amp;quot;&amp;gt;&amp;lt;code&amp;gt;S91&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is an original Impulse Tracker command.}} &amp;lt;br /&amp;gt; Executes a sound control command (see the [[#Sound Control|Sound Control table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SAx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| High Offset&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the high offset for future &amp;lt;abbr title=&amp;quot;Sample Offset&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; commands. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; × 65536 (10000h) is added to all offset effects that follow this command.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop Start&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Marks the current row position to be used as the start of a pattern loop.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SBx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Each time this command is reached, jumps to the row marked by &amp;lt;abbr title=&amp;quot;Pattern Loop Start&amp;quot;&amp;gt;&amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; until &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; jumps have occurred in total. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;SBx&amp;lt;/code&amp;gt; is used in a pattern with no &amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt; effect, &amp;lt;code&amp;gt;SBx&amp;lt;/code&amp;gt; will use the row position marked by any previous &amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt; effect. &amp;lt;br /&amp;gt; Pattern loops cannot span multiple patterns. &amp;lt;br /&amp;gt; Ranges from 1h to Fh.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SCx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Cut&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Stops the current sample after &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, this command is ignored. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is 0, it will be treated as if it were 1.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SDx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Delay&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Delays the note or instrument change in the current pattern cell by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, the current cell&#039;s contents are not played. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is 0, it will be treated as if it were 1.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SEx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Delay&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Repeats the current row &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; times. &amp;lt;br /&amp;gt; Notes are not retriggered on every repetition, but effects are still processed. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;SEx&amp;lt;/code&amp;gt; commands are on the same row, only the leftmost command is used.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SFx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Active Macro&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the current channel&#039;s active [[Manual: Zxx Macros#Parametered Macros|parametered macro]].&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;T0x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Decrease Tempo&lt;br /&gt;
| Yes&lt;br /&gt;
| Decreases the module Tempo by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; BPM on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;T1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Increase Tempo&lt;br /&gt;
| Yes&lt;br /&gt;
| Increases the module Tempo by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; BPM on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Txx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Tempo&lt;br /&gt;
| No&lt;br /&gt;
| Sets the module Tempo if &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; is greater than or equal to 20h.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Uxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but with 4 times the precision. &amp;lt;br /&amp;gt; Shares memory with &amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Vxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Global Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the global volume. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 80h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Wxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Global Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but applies to the global volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; Ranges from 00h (left) to FFh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Yxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panbrello&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes panbrello with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected panbrello waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Zxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| MIDI Macro&lt;br /&gt;
| —&lt;br /&gt;
| Executes a [[Manual: Zxx Macros|MIDI Macro]].&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;\xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Smooth MIDI Macro&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Executes an interpolated MIDI Macro.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
The following commands can be entered into the volume column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;decimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;a0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Fine Volume Slide Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Fine Volume Slide Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;DxF&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume up &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;b0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Fine Volume Slide Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Fine Volume Slide Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;DFy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume down &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;c0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Volume Slide Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dx0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume up &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on all ticks except the first).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;d0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Volume Slide Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;D0y&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume down &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on all ticks except the first).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;e0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Portamento Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Exx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Compared to &amp;lt;code&amp;gt;Exx&amp;lt;/code&amp;gt;, parameters are 4 times more coarse (e.g. &amp;lt;code&amp;gt;e01&amp;lt;/code&amp;gt; = &amp;lt;abbr title=&amp;quot;Portamento Down by 4 units&amp;quot;&amp;gt;&amp;lt;code&amp;gt;E04&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;f0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Portamento Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Compared to &amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;, parameters are 4 times more coarse (e.g. &amp;lt;code&amp;gt;f01&amp;lt;/code&amp;gt; = &amp;lt;abbr title=&amp;quot;Portamento Up by 4 units&amp;quot;&amp;gt;&amp;lt;code&amp;gt;F04&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;g0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Tone Portamento&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Gxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Below is a table that translates &amp;lt;code&amp;gt;g0x&amp;lt;/code&amp;gt; parameters to &amp;lt;code&amp;gt;Gxx&amp;lt;/code&amp;gt; parameters:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;tt&amp;gt;g0x&amp;lt;/tt&amp;gt; !! &amp;lt;tt&amp;gt;Gxx&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g00&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G00&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g01&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G01&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g02&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G04&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g03&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G08&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g04&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G10&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;tt&amp;gt;g0x&amp;lt;/tt&amp;gt; !! &amp;lt;tt&amp;gt;Gxx&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g05&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G20&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g06&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G40&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g07&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G60&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g08&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G80&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g09&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;GFF&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;h0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Vibrato Depth&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes a vibrato with depth &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and speed from the last &amp;lt;abbr title=&amp;quot;Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; or &amp;lt;abbr title=&amp;quot;Fine Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Uxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; command.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;pxx&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current channel&#039;s panning position to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; Ranges from 0 to 64.&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;vxx&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Set Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current note volume to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; The behaviour of this command when sent to instrument plugins can be configured in the [[Manual: Instruments#Plugin / MIDI|Instrument Editor]] {{Warning|(ModPlug hack)}}.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; Effect Memory:&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming that all available parameters for a given effect (e.g. &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;) are equivalent to 0:&lt;br /&gt;
* &#039;&#039;&#039;No&#039;&#039;&#039; means that the command does nothing.&lt;br /&gt;
* &#039;&#039;&#039;Yes&#039;&#039;&#039; means that the effect calls its own parameter memory. &amp;lt;br /&amp;gt; For example, if the effect &amp;lt;abbr title=&amp;quot;Vibrato with speed 8 and depth 2&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H82&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is followed by the effect &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; on a subsequent row, the &amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt; command recalls the effect parameter 82h.&lt;br /&gt;
* &#039;&#039;&#039;—&#039;&#039;&#039; means that the value has no special meaning. &amp;lt;br /&amp;gt; For example, &amp;lt;abbr title=&amp;quot;Set Global Volume&amp;quot;&amp;gt;&amp;lt;code&amp;gt;V00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the global volume to 0, &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;X00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the channel&#039;s panning position to hard left, &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; jumps to the first pattern, etc.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Volume Column Effect Memory:&#039;&#039;&#039;&lt;br /&gt;
:*  All volume slide effects in the volume column share effect memory with each other.&lt;br /&gt;
:* &amp;lt;abbr title=&amp;quot;Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;e0x&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;f0x&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; share effect memory with &amp;lt;abbr title=&amp;quot;Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Exx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (respectively).&lt;br /&gt;
&lt;br /&gt;
== MPTM Effect Commands ==&lt;br /&gt;
&lt;br /&gt;
OpenMPT′s MPTM format is heavily based on the IT format and [[#IT Effect Commands|its effect command set]], but it does add several new features.&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
OpenMPT&#039;s MPTM format generally uses the same effect commands as the IT format. Commands from the IT section that are labeled as ModPlug hacks or unsupported by Impulse Tracker may be freely used in the MPTM format.&lt;br /&gt;
&lt;br /&gt;
The following additional commands, exclusive to the MPTM format, can be entered in the effect column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;hexadecimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S7D&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Force Pitch Envelope&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Enables the currently active note&#039;s pitch envelope and forces it to act as a pitch envelope (rather than a filter cutoff envelope).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S7E&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Force Filter Envelope&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Enables the currently active note&#039;s pitch envelope and forces it to act as a filter cutoff envelope (rather than a pitch envelope).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;:xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Delay + Cut&lt;br /&gt;
| —&lt;br /&gt;
| Delays the note in the current pattern cell by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks and cuts it after &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, the note will be ignored (and as such, cannot be cut with &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;). &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, only the note cut will be ignored.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;#xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Parameter Extension&lt;br /&gt;
| —&lt;br /&gt;
| Extends the parameter of the last &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Pattern Break&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Sample Offset&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Set Tempo&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Txx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Finetune&amp;quot;&amp;gt;&amp;lt;code&amp;gt;+xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; or &amp;lt;abbr title=&amp;quot;Finetune (Smooth)&amp;quot;&amp;gt;&amp;lt;code&amp;gt;*xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; command. If placed after such a command, the parameter values are combined. &amp;lt;br /&amp;gt; If there is only one &amp;lt;code&amp;gt;#xx&amp;lt;/code&amp;gt; command below the actual command (the limit for &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Txx&amp;lt;/code&amp;gt;), the original command is multiplied by 256 and then parameter &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; is added to it. &amp;lt;br /&amp;gt; For &amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;, up to 4 rows can be combined. The fourth row is multiplied by 1, the third by 256 (100h), the second by 65536 (10000h), and so on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pattern&amp;gt;&lt;br /&gt;
ModPlug Tracker MPT&lt;br /&gt;
|C-501...O21&lt;br /&gt;
|........#02&lt;br /&gt;
|........#01&lt;br /&gt;
&amp;lt;/pattern&amp;gt;&lt;br /&gt;
In this example, the &#039;&#039;&#039;hexadecimal&#039;&#039;&#039; sample offset is (21h × 10000h) + (2h × 100h) + 1h = 210201h. &amp;lt;br /&amp;gt; In &#039;&#039;&#039;decimal&#039;&#039;&#039;, it is (33 × 65536) + (2 × 256) + 1 = 2,163,201.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;+xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Finetune&lt;br /&gt;
| —&lt;br /&gt;
| Changes the current note’s tuning. &amp;lt;code&amp;gt;+80&amp;lt;/code&amp;gt; is center (no change to the tuning), lower values decrease the tuning and higher values increase the tuning. In sample mode, the depth of this command is fixed at ±1 semitone. For sample-based instruments, the depth is defined by the instrument’s [[Manual: Instruments#Plugin / MIDI|pitch bend range]] setting. For plugins, this command directly translates to MIDI pitch bend commands, so the depth is whatever the pitch bend depth of the plugin or MIDI device is set to.&amp;lt;br&amp;gt;This command can be extended by &amp;lt;code&amp;gt;#xx&amp;lt;/code&amp;gt; Parameter extensions for even finer control over the tuning.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;*xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Finetune (Smooth)&lt;br /&gt;
| —&lt;br /&gt;
| Exactly the same as &amp;lt;abbr title=&amp;quot;Finetune&amp;quot;&amp;gt;&amp;lt;code&amp;gt;+xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but slides from the previous finetune value to the new value on every tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
In addition to all of the IT format&#039;s [[#Volume Column_3|volume column commands]], the following commands can be entered in the volume column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;decimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;o0x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sample Cue&lt;br /&gt;
| Yes&lt;br /&gt;
| Starts playing the current sample from cue point &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, instead of position 0. &amp;lt;br /&amp;gt; Cue points can be chosen in the [[Manual: Samples#Sample Display Context Menu|Sample Editor]]. &amp;lt;br /&amp;gt; Ineffective if there is no note in the same pattern cell. &amp;lt;br /&amp;gt; Shares effect memory with &amp;lt;abbr title=&amp;quot;Sample Offset&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and can be [[#Combined Commands|combined]] with that command.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; Effect Memory:&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming that all available parameters for a given effect (e.g. &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;) are equivalent to 0:&lt;br /&gt;
* &#039;&#039;&#039;Yes&#039;&#039;&#039; means that the effect calls its own parameter memory. &amp;lt;br /&amp;gt; For example, if the effect &amp;lt;abbr title=&amp;quot;Vibrato with speed 8 and depth 2&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H82&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is followed by the effect &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; on a subsequent row, the &amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt; command recalls the effect parameter 82h.&lt;br /&gt;
* &#039;&#039;&#039;—&#039;&#039;&#039; means that the value has no special meaning. &amp;lt;br /&amp;gt; For example, &amp;lt;abbr title=&amp;quot;Set Global Volume&amp;quot;&amp;gt;&amp;lt;code&amp;gt;V00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the global volume to 0, &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;X00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the channel&#039;s panning position to hard left, &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; jumps to the first pattern, etc.&lt;br /&gt;
&lt;br /&gt;
=== Combined Commands ===&lt;br /&gt;
&lt;br /&gt;
By combining the volume column &amp;lt;abbr title=&amp;quot;Sample Cue&amp;quot;&amp;gt;&amp;lt;code&amp;gt;oxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and effect column &amp;lt;abbr title=&amp;quot;Sample Offset&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; commands, two special offset behaviours can be achieved:&lt;br /&gt;
* &amp;lt;code&amp;gt;o00&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;: A cue point command with a parameter of 0 turns the effect column offset into a percentage offset, i.e. the command jumps to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; × &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;/&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;th of the total sample length. For example &amp;lt;code&amp;gt;o00&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;O80&amp;lt;/code&amp;gt; plays the second half of any sample. Further precision can be achieved by combining the &amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt; command with &amp;lt;code&amp;gt;#xx&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;o0x&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;Oyy&amp;lt;/code&amp;gt;: For &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; &amp;gt; 0, the effect column &amp;lt;code&amp;gt;Oyy&amp;lt;/code&amp;gt; is added on top of the cue point, so &amp;lt;code&amp;gt;o05&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;O01&amp;lt;/code&amp;gt; plays from the 5th cue point of the sample + 256 samples.&lt;br /&gt;
&lt;br /&gt;
=== AdLib / OPL3 Instruments ===&lt;br /&gt;
OpenMPT supports AdLib / OPL3 instruments in the MPTM format, but not all effects are compatible with them. Below is a list of effects that do not function with AdLib / OPL3 instruments in MPTM files:&lt;br /&gt;
* &amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt; (Sample Offset)&lt;br /&gt;
* &amp;lt;code&amp;gt;S9x&amp;lt;/code&amp;gt; (Sound Control) parameters other than Ch and Dh (Global &amp;amp; Local Filters)&lt;br /&gt;
* &amp;lt;code&amp;gt;SAx&amp;lt;/code&amp;gt; (High Offset)&lt;br /&gt;
* &amp;lt;code&amp;gt;o0x&amp;lt;/code&amp;gt; (Sample Cue)&lt;br /&gt;
&lt;br /&gt;
Additionally, since AdLib / OPL3 instruments only support hard left, center, and hard right panning, the range of &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;pxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; are effectively restricted to those positions. Panning Slides like &amp;lt;abbr title=&amp;quot;Panning Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Pxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Panbrello&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Yxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; work with the same reduced granularity, but should be best avoided if possible.&lt;br /&gt;
&lt;br /&gt;
=== Parameter Control Events ===&lt;br /&gt;
&lt;br /&gt;
Another feature similar to effects that is only available in MPTM files are [[Manual: Parameter Control Events|Parameter Control Events]], which can be used to automate plugin parameters.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Effect Reference]]&lt;br /&gt;
[[de:Handbuch: Effektbefehle]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Setup/DSP&amp;diff=4928</id>
		<title>Manual: Setup/DSP</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Setup/DSP&amp;diff=4928"/>
		<updated>2025-06-01T18:16:07Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: /* Reverb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Settings DSP.png|thumb|350px|DSP tab of the settings dialog]]&lt;br /&gt;
&lt;br /&gt;
This page contains settings for audio post-processing effects that OpenMPT can apply. Keep in mind these settings are &#039;&#039;&#039;not&#039;&#039;&#039; saved with modules, but &#039;&#039;&#039;are&#039;&#039;&#039; applied to &#039;&#039;&#039;all&#039;&#039;&#039; tracks during playback and when exporting tracks to a streaming audio format (such as WAV).&lt;br /&gt;
&lt;br /&gt;
Most are self-explanatory, but &#039;&#039;&#039;it is not recommended to enable any of these options&#039;&#039;&#039;. In order for any of them to be applied, you must enable the appropriate checkboxes.&lt;br /&gt;
&lt;br /&gt;
== Equalizer ==&lt;br /&gt;
&lt;br /&gt;
Playback audio is processed through the Equalizer only if the “Enable Graphic Equalizer” checkbox is set. The Equalizer settings are not saved with the song; they are a global setting applied to any output from OpenMPT. For this reason, do &#039;&#039;&#039;not&#039;&#039;&#039; use this equalizer as part of your production process; only use it to correct deficiencies in your audio hardware.&lt;br /&gt;
&lt;br /&gt;
=== Equalizer Band Sliders ===&lt;br /&gt;
Move a slider higher to accentuate or bring out those frequencies, or lower to diminish the volume of those frequencies. Right-clicking on a slider shows a context menu from which you can change the center frequency for the selected band. The equalizer bands are by default set at 0 dB, which means no attenuation is applied to that band of frequencies.&lt;br /&gt;
&lt;br /&gt;
=== Presets ===&lt;br /&gt;
Clicking one of the buttons next to the sliders chooses a preset equalizer setting. You can save your own preset (up to four) by adjusting the equalizer to the desired settings, then clicking “Save Preset”.&lt;br /&gt;
&lt;br /&gt;
== DSP ==&lt;br /&gt;
&lt;br /&gt;
=== Automatic Gain Control ===&lt;br /&gt;
&lt;br /&gt;
The Automatic Gain Control (also abbreviated as AGC) applies a compressor / limiter-type effect that monitors and keeps the volume within a more-or-less steady amplification.&lt;br /&gt;
Softer sections will be made louder and loud sections will be softened in volume.&lt;br /&gt;
&lt;br /&gt;
=== Bit Crush ===&lt;br /&gt;
&lt;br /&gt;
Reduces the effective bit depth of the signal, e.g to emulate old hardware or trackers that only supported 8-bit output.&lt;br /&gt;
&lt;br /&gt;
=== Bass Expansion ===&lt;br /&gt;
&lt;br /&gt;
Applies a volume boost to the bass frequencies. Move the first slider to adjust bass gain, and the second slider to increase the frequency range to affect.&lt;br /&gt;
Best used without the equalizer, or not at all (time to get some proper speakers ;-).&lt;br /&gt;
&lt;br /&gt;
=== Reverb ===&lt;br /&gt;
&lt;br /&gt;
Applies a Reverb to sample output (not plugin output).&lt;br /&gt;
Move the slider to increase the reverb’s volume, and choose a Reverb type from the popup menu next to it.&lt;br /&gt;
Note that reverb can be explicitly turned on and off per pattern channel using effect commands.&lt;br /&gt;
However, since the reverb parameters are not stored with the module and cannot be changed using pattern commands, it is not recommended to rely on this setting.&lt;br /&gt;
It is wiser to use a dedicated reverb plugin such as [[Manual: I3DL2Reverb Plugin|I3DL2Reverb]] or [[Manual: WavesReverb Plugin|WavesReverb]] if you want reverb.&lt;br /&gt;
&lt;br /&gt;
=== Pro-Logic Surround ===&lt;br /&gt;
&lt;br /&gt;
Applies Surround Sound to the sound output.&lt;br /&gt;
When listening to music in stereo, this will mostly be noticeable as a slightly delayed echo signal with “wider” stereo sound, but in quad surround mode, the delayed signal is actually played on the rear speakers.&lt;br /&gt;
Move the first slider to set the amount of the Surround effect and the second slider to configure the delay of the echo signal.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Setup/DSP]]&lt;br /&gt;
[[de:Handbuch: Setup/DSP]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Effect_Reference&amp;diff=4927</id>
		<title>Manual: Effect Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Effect_Reference&amp;diff=4927"/>
		<updated>2025-06-01T18:13:58Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of all effects that can be used in the [[Manual: Patterns|Pattern Editor]]. &amp;lt;br /&amp;gt;&lt;br /&gt;
Commands that go into the effect column use &#039;&#039;&#039;uppercase&#039;&#039;&#039; effect letters (e.g. &amp;lt;code&amp;gt;G05&amp;lt;/code&amp;gt;), while effects that go into the volume column use &#039;&#039;&#039;lowercase&#039;&#039;&#039; effect letters (e.g. &amp;lt;code&amp;gt;g05&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The MOD and XM formats share a similar set of effects, with XM offering more effects than MOD. The S3M, IT, and MPTM formats share a different set of effects, of which many are compatible to those from the MOD and XM formats but have different letters (e.g. &amp;lt;code&amp;gt;F75&amp;lt;/code&amp;gt; in MOD turns into &amp;lt;code&amp;gt;T75&amp;lt;/code&amp;gt; in S3M).&lt;br /&gt;
&lt;br /&gt;
Currently, some effects, in particular those related to volume and panning, only directly affect samples, not instrument plugins (but their effect may be observed by a plugin through [[Manual: Zxx Macros|MIDI macros]]). Since this might change in the future, such effects should be avoided on channels that make use of instrument plugins.&lt;br /&gt;
&lt;br /&gt;
The behaviour of some effects is influenced by the [[Manual: Compatible Playback|Compatible Playback]] settings.&lt;br /&gt;
&lt;br /&gt;
== Effect Layout ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right; margin:10px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;&#039;&#039;&#039;A&#039;&#039;&#039;xy&amp;lt;/code&amp;gt;: Effect letter &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;A&#039;&#039;&#039;xy&#039;&#039;&#039;&amp;lt;/code&amp;gt;: Parameter&lt;br /&gt;
|}&lt;br /&gt;
An effect command consists of one character (the &#039;&#039;&#039;“effect letter”&#039;&#039;&#039;) followed by the value that will be applied (the &#039;&#039;&#039;“parameter”&#039;&#039;&#039;), which is a &#039;&#039;&#039;[[Manual: Basics#Hexadecimal Notation|hexadecimal]]&#039;&#039;&#039; number in the effect column and a &#039;&#039;&#039;decimal&#039;&#039;&#039; number in the volume column. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the notation for a parameter is given as &#039;&#039;&#039;&amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;, it means that a 2-digit hexadecimal number is expected. &amp;lt;br /&amp;gt; For this notation, 62h would be equal to 98, 29h would be equal to 41, and E8h would be equal to 232.&lt;br /&gt;
&lt;br /&gt;
If the notation is &#039;&#039;&#039;&amp;lt;code&amp;gt;xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;, it means that for &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; each, a 1-digit hexadecimal number is expected. &amp;lt;br /&amp;gt; For this notation, each of the digits in 62h would be read separately — as 6 and 2. Similarly, 29h would mean 2 and 9, and E8h would mean 14 and 8.&lt;br /&gt;
&lt;br /&gt;
If you do not wish to manually convert decimal to hexadecimal and vice versa, you can double-click on a pattern cell or press the &amp;lt;kbd&amp;gt;▤ Application&amp;lt;/kbd&amp;gt; key (by default) to open the [[Manual: Note Properties|Note Properties]] dialog. From there, you can adjust the effect parameters using sliders and see their meaning.&lt;br /&gt;
&lt;br /&gt;
Note that the parameter range of some commands is limited, such as the XM command &amp;lt;abbr title=&amp;quot;Set Volume&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, whose maximum value is 40h (64). Entering out-of-range values is not recommended as they might be interpreted differently by non-conforming players.&lt;br /&gt;
&lt;br /&gt;
== Frequency Units ==&lt;br /&gt;
&lt;br /&gt;
If [[Manual: Song Properties#Linear Frequency Slides|Linear Frequency Slides]] are enabled, each unit of a pitch sliding effect (e.g. &amp;lt;abbr title=&amp;quot;Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Exx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; or &amp;lt;abbr title=&amp;quot;Tone Portamento&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Gxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; in the IT / MPTM format) is equal to &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;⁄&amp;lt;sub&amp;gt;16&amp;lt;/sub&amp;gt; of a semitone. Extra fine (e.g. &amp;lt;abbr title=&amp;quot;Extra Fine Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; or &amp;lt;abbr title=&amp;quot;Extra Fine Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;FEx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;) units are equal to &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;⁄&amp;lt;sub&amp;gt;64&amp;lt;/sub&amp;gt; of a semitone.&lt;br /&gt;
&lt;br /&gt;
Otherwise, the unit of a pitch sliding effect is one &#039;&#039;period&#039;&#039;, a metric inverse to frequency. This means that the lower the current note, the smaller the effect of one pitch slide unit, and the higher the note, the bigger the effect is. The period of a frequency can be calculated by dividing 3,546,895 by the frequency (3,579,364 in the XM format).&lt;br /&gt;
&lt;br /&gt;
Linear Frequency Slides are not available in the MOD and S3M formats.&lt;br /&gt;
&lt;br /&gt;
== Common Effect Parameters ==&lt;br /&gt;
&lt;br /&gt;
Most effect parameters follow a simple scheme, but some effects also use a look-up table for their parameters. Depending on the effect, different parameters might do completely different things. Some common look-up table effects are described below.&lt;br /&gt;
&lt;br /&gt;
=== Waveform Types ===&lt;br /&gt;
&lt;br /&gt;
Some oscillator effects (namely Vibrato, Tremolo and Panbrello) use preset oscillator waveforms. They can be changed using special commands; the possible parameters of these commands are listed here.&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; |&lt;br /&gt;
==== S3M / IT / MPTM Formats ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left; margin-right:10px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Waveform&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;0&#039;&#039;&#039; (default) || Sine (retrigger)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1&#039;&#039;&#039; || Sawtooth (retrigger)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;2&#039;&#039;&#039; || Square (retrigger)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;3&#039;&#039;&#039; || Random (retrigger)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; |&lt;br /&gt;
==== MOD / XM Formats ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Waveform !! Parameter !! Waveform&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;0&#039;&#039;&#039; (default) || Sine (retrigger) || &#039;&#039;&#039;4&#039;&#039;&#039; || Sine (continue)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1&#039;&#039;&#039; || Sawtooth (retrigger) || &#039;&#039;&#039;5&#039;&#039;&#039; || Sawtooth (continue)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;2&#039;&#039;&#039; || Square (retrigger) || &#039;&#039;&#039;6&#039;&#039;&#039; || Square (continue)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;3&#039;&#039;&#039; || Random&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; (retrigger) || &#039;&#039;&#039;7&#039;&#039;&#039; || Random&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; (continue)&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Retrigger&#039;&#039;&#039; means that the oscillator waveform is played from its starting point when a new note is played. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Continue&#039;&#039;&#039; means that the waveform continues at its last playback position when a new note is played. This waveform type is exclusive to the MOD and XM formats.&lt;br /&gt;
&lt;br /&gt;
Every oscillator waveform is 64 points long, and the speed parameter denotes by how many points per tick the play position is advanced. So at a vibrato speed of 2, the vibrato waveform repeats after 32 ticks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; The &#039;&#039;&#039;Random&#039;&#039;&#039; waveforms are not supported by ProTracker and FastTracker. While they are supported by some MOD / XM players, they should be avoided.&lt;br /&gt;
&lt;br /&gt;
=== Retrigger Volume ===&lt;br /&gt;
&lt;br /&gt;
The Retrigger command (&amp;lt;code&amp;gt;Rxy&amp;lt;/code&amp;gt; in the XM format, &amp;lt;code&amp;gt;Qxy&amp;lt;/code&amp;gt; in the S3M / IT / MPTM formats) does not only retrigger the note every &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks, but also changes the note volume depending on the &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; value.&lt;br /&gt;
&lt;br /&gt;
The following table explains the meaning of every possible &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; parameter:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Effect !! Parameter !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;0&#039;&#039;&#039; || (XM) Last &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; value &amp;lt;br /&amp;gt; (S3M / IT / MPTM) No volume change || &#039;&#039;&#039;8&#039;&#039;&#039; || No volume change&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1&#039;&#039;&#039; || Volume - 1 || &#039;&#039;&#039;9&#039;&#039;&#039; || Volume + 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;2&#039;&#039;&#039; || Volume - 2 || &#039;&#039;&#039;A&#039;&#039;&#039; || Volume + 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;3&#039;&#039;&#039; || Volume - 4 || &#039;&#039;&#039;B&#039;&#039;&#039; || Volume + 4&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;4&#039;&#039;&#039; || Volume - 8 || &#039;&#039;&#039;C&#039;&#039;&#039; || Volume + 8&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;5&#039;&#039;&#039; || Volume - 16 || &#039;&#039;&#039;D&#039;&#039;&#039; || Volume + 16&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;6&#039;&#039;&#039; || Volume × ⅔ || &#039;&#039;&#039;E&#039;&#039;&#039; || Volume × 1.5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;7&#039;&#039;&#039; || Volume × ½ || &#039;&#039;&#039;F&#039;&#039;&#039; || Volume × 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sound Control ===&lt;br /&gt;
&lt;br /&gt;
The sound control effect (&amp;lt;code&amp;gt;X9x&amp;lt;/code&amp;gt; in the XM format, &amp;lt;code&amp;gt;S9x&amp;lt;/code&amp;gt; in the S3M / IT / MPTM formats) can be used to control various aspects of sound playback. Possible parameters are listed here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;{{Warning|1=Using any of these commands outside of the MPTM format (except &amp;lt;abbr title=&amp;quot;Surround On&amp;quot;&amp;gt;&amp;lt;code&amp;gt;S91&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; which is native to only the IT and MPTM formats) is considered a ModPlug hack.}}&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
| Surround Off&lt;br /&gt;
| Disables surround playback on the current channel. &amp;lt;br /&amp;gt; This should only be used when using Quad Surround Panning. &amp;lt;br /&amp;gt; To keep compatibility with other trackers, a normal panning effect should be used in Center Surround mode.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
| Surround On&lt;br /&gt;
| Enables surround playback on the current channel. &amp;lt;br /&amp;gt; When using stereo playback, the right channel of a sample is played with inversed phase (Pro Logic Surround). When using quad playback, the rear channels are used for playing this channel.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| Reverb Off&lt;br /&gt;
| Disables Reverb on the current channel.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;9&#039;&#039;&#039;&lt;br /&gt;
| Reverb On&lt;br /&gt;
| {{Warning|As there is no per-song configuration for reverb available, use of this command is discouraged. Use a reverb plugin such as [[Manual: I3DL2Reverb Plugin|I3DL2Reverb]] or [[Manual: WavesReverb Plugin|WavesReverb]] instead.}} &amp;lt;br /&amp;gt; Enables Reverb on the current channel. &amp;lt;br /&amp;gt; The reverb parameters from the [[Manual: Setup/DSP|DSP Setup]] are used.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
| Center Surround&lt;br /&gt;
| Sets the surround mode to Center Surround for all channels. This is the default mode. &amp;lt;br /&amp;gt; The &amp;lt;abbr title=&amp;quot;Surround On&amp;quot;&amp;gt;&amp;lt;code&amp;gt;S91&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; command will place the channel in the center of the rear channels. Any panning command will bring it back to the front channels.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;B&#039;&#039;&#039;&lt;br /&gt;
| Quad Surround&lt;br /&gt;
| Sets the surround mode to Quad Surround for all channels. &amp;lt;br /&amp;gt; In this mode, panning commands can adjust the position of the rear channels. &amp;lt;br /&amp;gt; Switching between the front and rear channels can only be done by using the &amp;lt;abbr title=&amp;quot;Surround On&amp;quot;&amp;gt;&amp;lt;code&amp;gt;S91&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Surround Off&amp;quot;&amp;gt;&amp;lt;code&amp;gt;S90&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; commands.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;C&#039;&#039;&#039;&lt;br /&gt;
| Global Filters&lt;br /&gt;
| Sets filter mode to Global on all channels (Impulse Tracker behaviour). &amp;lt;br /&amp;gt; In this mode, when resonant filters are enabled with a &amp;lt;abbr title=&amp;quot;MIDI Macro&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Zxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; effect, they will stay active until explicitly disabled by setting the cutoff frequency to the maximum (&amp;lt;code&amp;gt;Z7F&amp;lt;/code&amp;gt;), and the resonance to the minimum (&amp;lt;code&amp;gt;Z80&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;D&#039;&#039;&#039;&lt;br /&gt;
| Local Filters&lt;br /&gt;
| Sets filter mode to Local on all channels. &amp;lt;br /&amp;gt; In this mode, the resonant filter will only affect the current note and will revert when a new note is played.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E&#039;&#039;&#039;&lt;br /&gt;
| Play Forward&lt;br /&gt;
| Forces the current sample to play forward.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;F&#039;&#039;&#039;&lt;br /&gt;
| Play Backward&lt;br /&gt;
| Forces the current sample to play backward.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MOD Effect Commands ==&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
The MOD format only allows use of the effect column; there are no volume column commands.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;hexadecimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;0xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Arpeggio&lt;br /&gt;
| No&lt;br /&gt;
| Plays an arpeggiation of three notes in one row, cycling between the current note, current note + &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; semitones, and current note + &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; semitones.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;1xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Up&lt;br /&gt;
| No&lt;br /&gt;
| Increases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;2xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Down&lt;br /&gt;
| No&lt;br /&gt;
| Decreases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;3xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the pitch of the previous note towards the current note by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;4xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes vibrato with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected vibrato waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;5xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Tone Portamento&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;500 will call Tone Portamento memory&amp;quot;&amp;gt;No&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Tone Portamento memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;300&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;6xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Vibrato&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;600 will call Vibrato memory&amp;quot;&amp;gt;No&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;7xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremolo&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes tremolo with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected tremolo waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;8xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; Ranges from 00h (left) to FFh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;9xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sample Offset&lt;br /&gt;
| Yes&lt;br /&gt;
| Starts playing the current sample from position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; × 256, instead of position 0.  &amp;lt;br /&amp;gt; Ineffective if there is no note in the same pattern cell.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide&lt;br /&gt;
| No&lt;br /&gt;
| Slides the current note volume up or down.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;A0y&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;decreases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Ax0&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;increases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Position Jump&lt;br /&gt;
| —&lt;br /&gt;
| Causes playback to jump to pattern position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt; would restart a song from the beginning (first pattern in the Order List). &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Pattern Break&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt; jumps in. &amp;lt;br /&amp;gt; Ranges from 00h to 7Fh (127; maximum amount of patterns for the MOD format).&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current note volume to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 40h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Break&lt;br /&gt;
| —&lt;br /&gt;
| Jumps to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the next pattern in the Order List. &amp;lt;br /&amp;gt; If the current pattern is the last pattern in the Order List, &amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt; will jump to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the first pattern. &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt; jumps in. &amp;lt;br /&amp;gt; Ranges from 00h to 3Fh (64; maximum amount of rows for each pattern in the MOD format).&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E0x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Filter&lt;br /&gt;
| —&lt;br /&gt;
| Configures the Amiga&#039;s LED lowpass filter.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;E00&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;enables&#039;&#039;&#039; emulation of the lowpass filter.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;E01&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;disables&#039;&#039;&#039; emulation of the lowpass filter.&lt;br /&gt;
Enabling the filter makes the sound output more muffled and is not recommended. &amp;lt;br /&amp;gt; Using this effect is only recommended to explicitly disable the filter for environments where it might not be disabled by default (such as a real Amiga system). &amp;lt;br /&amp;gt;OpenMPT only emulates the lowpass filter if the [[Manual: Setup/Mixer#Use Amiga resampler for Amiga modules|Amiga resampler]] is enabled in the Mixer settings.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Portamento Up&lt;br /&gt;
| No&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;1xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E2x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Portamento Down&lt;br /&gt;
| No&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;2xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E3x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Glissando Control&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is not widely supported and behaves quirky in OpenMPT.}} &amp;lt;br /&amp;gt; Configures whether tone portamento effects slide by semitones or not.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;E30&amp;lt;/code&amp;gt; disables&#039;&#039;&#039; glissando.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;E31&amp;lt;/code&amp;gt; enables&#039;&#039;&#039; glissando.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E4x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Vibrato Waveform&lt;br /&gt;
| —&lt;br /&gt;
| Sets the waveform of future Vibrato effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E5x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Finetune&lt;br /&gt;
| —&lt;br /&gt;
| Overrides the finetune value for the currently playing note. &amp;lt;br /&amp;gt; Functions similarly to the same setting in the Sample Editor but is only applied temporarily. &amp;lt;br /&amp;gt; This command only works with a note next to it.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop Start&lt;br /&gt;
| —&lt;br /&gt;
| Marks the current row position to be used as the start of a pattern loop.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E6x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop&lt;br /&gt;
| —&lt;br /&gt;
| Each time this command is reached, jumps to the row marked by &amp;lt;abbr title=&amp;quot;Pattern Loop Start&amp;quot;&amp;gt;&amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; until &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; jumps have occured in total. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;E6x&amp;lt;/code&amp;gt; is used in a pattern with no &amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt; effect, &amp;lt;code&amp;gt;E6x&amp;lt;/code&amp;gt; will use the row position marked by any previous &amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt; effect. &amp;lt;br /&amp;gt; Pattern loops cannot span multiple patterns. &amp;lt;br /&amp;gt; Ranges from 1h to Fh.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E7x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Tremolo Waveform&lt;br /&gt;
| —&lt;br /&gt;
| Sets the waveform of future Tremolo effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E8x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| &#039;&#039;&amp;lt;small&amp;gt;&amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;8xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is a much finer panning effect.&amp;lt;/small&amp;gt;&#039;&#039; &amp;lt;br /&amp;gt; Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; Ranges from 0h (left) to Fh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E9x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Retrigger&lt;br /&gt;
| No&lt;br /&gt;
| Retriggers the current note every &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; This effect works with parameters greater than the current Speed setting if the row after it also contains an &amp;lt;code&amp;gt;E9x&amp;lt;/code&amp;gt; effect.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EAx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Volume Slide Up&lt;br /&gt;
| No&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Ax0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EBx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Volume Slide Down&lt;br /&gt;
| No&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;A0y&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;ECx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Cut&lt;br /&gt;
| —&lt;br /&gt;
| Sets note volume to 0 after &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, this command is ignored.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EDx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Delay&lt;br /&gt;
| —&lt;br /&gt;
| Delays the note or instrument change in the current pattern cell by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, the current pattern cell&#039;s contents are never played.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Delay&lt;br /&gt;
| —&lt;br /&gt;
| Repeats the current row &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; times. &amp;lt;br /&amp;gt; Notes are not retriggered on every repetition, but effects are still processed. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt; commands are found on the same row, only the rightmost is considered.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Invert Loop&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect permanently modifies the module file when encountered during playback.}}&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;&#039;&#039;&#039;, when used with a looped sample, goes through the sample loop and inverts all sampling points (i.e. changes the sign) one by one at speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;EF0&amp;lt;/code&amp;gt;&#039;&#039;&#039; cancels &amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;.&lt;br /&gt;
Samples modified by this effect cannot be recovered automatically (e.g. no undo point is created).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Speed / Tempo&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|Avoid using 20h or 00h as parameters.}}&lt;br /&gt;
* Sets the module &#039;&#039;&#039;Speed&#039;&#039;&#039; (ticks per row) if &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; is less than 20h.&lt;br /&gt;
* Sets the module &#039;&#039;&#039;Tempo&#039;&#039;&#039; if &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; greater than or equal to 20h.&lt;br /&gt;
Some players (including old OpenMPT versions) differ in their interpretations of &amp;lt;code&amp;gt;F20&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;F00&amp;lt;/code&amp;gt; does nothing in OpenMPT, but some players stop the song when they encounter it.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; Effect Memory&#039;&#039;&#039;: &amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming that all available parameters for a given effect (e.g. &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;) are equivalent to 0:&lt;br /&gt;
* &#039;&#039;&#039;No&#039;&#039;&#039; means that the command does nothing.&lt;br /&gt;
* &#039;&#039;&#039;Yes&#039;&#039;&#039; means that the effect calls its own parameter memory. &amp;lt;br /&amp;gt; For example, if the effect &amp;lt;abbr title=&amp;quot;Vibrato with speed 8 and depth 2&amp;quot;&amp;gt;&amp;lt;code&amp;gt;482&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is followed by the effect &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; on a subsequent row, the &amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt; effect recalls the effect parameter 82h.&lt;br /&gt;
* &#039;&#039;&#039;—&#039;&#039;&#039; means that the value has no special meaning. &amp;lt;br /&amp;gt; For example, &amp;lt;abbr title=&amp;quot;Set Volume&amp;quot;&amp;gt;&amp;lt;code&amp;gt;C00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets note volume to 0, &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;800&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the channel&#039;s panning position to hard left, &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; jumps to the first pattern, etc.&lt;br /&gt;
&lt;br /&gt;
== XM Effect Commands ==&lt;br /&gt;
&lt;br /&gt;
Fasttracker II&#039;s XM format uses an extended version of the MOD command set.&lt;br /&gt;
&lt;br /&gt;
As Fasttracker II was a rather buggy program, many effect commands may behave in a quirky way. Always enable the default [[Manual: Compatible Playback#XM compatibility settings|FT2 compatible playback settings]] for the best possible emulation of those quirks.&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
Some effects and features mentioned here are not actually part of the original XM format specifications. They will be labeled &#039;&#039;&#039;ModPlug hacks&#039;&#039;&#039;, as they are not compatible with Fasttracker II. Use of these effects in the XM format is strongly discouraged; if you wish to use them, you should use a different format with equivalent, natively implemented effects.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;hexadecimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;0xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Arpeggio&lt;br /&gt;
| No&lt;br /&gt;
| Plays an arpeggiation of three notes in one row, cycling between the current note, current note + &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; semitones, and current note + &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; semitones.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;1xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Increases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;2xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Decreases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;3xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the pitch of the previous note towards the current note by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;4xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes vibrato with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected vibrato waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;5xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Tone Portamento memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;300&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;6xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;7xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremolo&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes tremolo with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected tremolo waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;8xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current sample&#039;s panning position. &amp;lt;br /&amp;gt; As every sample has an enforced default panning, this setting is reset by any future entries in the instrument column. &amp;lt;br /&amp;gt; Ranges from 00h (left) to FFh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;9xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sample Offset&lt;br /&gt;
| Yes&lt;br /&gt;
| Starts playing the current sample from position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; × 256, instead of position 0. &amp;lt;br /&amp;gt; Ineffective if there is no note in the same pattern cell.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the current note volume up or down.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;A0y&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;decreases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Ax0&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;increases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Position Jump&lt;br /&gt;
| —&lt;br /&gt;
| Causes playback to jump to pattern position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt; would restart a song from the beginning (first pattern in the Order List). &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Pattern Break&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row and &#039;&#039;&#039;to the right&#039;&#039;&#039; of &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt; jumps in.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current note volume to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 40h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Break&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|To maintain compatibility with Fasttracker II, you should not jump past row 3Fh (63).}} &amp;lt;br /&amp;gt; Jumps to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the next pattern in the Order List. &amp;lt;br /&amp;gt; If the current pattern is the last pattern in the Order List, &amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt; will jump to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the first pattern. &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row and &#039;&#039;&#039;to the left&#039;&#039;&#039; of &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Dxx&amp;lt;/code&amp;gt; jumps in.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Portamento Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;1xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E2x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Portamento Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;2xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E3x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Glissando Control&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is not widely supported and behaves quirky in OpenMPT.}} &amp;lt;br /&amp;gt; Configures whether tone portamento effects slide by semitones or not.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;E30&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;disables&#039;&#039;&#039; glissando.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;E31&amp;lt;/code&amp;gt;&#039;&#039;&#039; &#039;&#039;&#039;enables&#039;&#039;&#039; glissando.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E4x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Vibrato Waveform&lt;br /&gt;
| —&lt;br /&gt;
| Sets the waveform of future Vibrato effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E5x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Finetune&lt;br /&gt;
| —&lt;br /&gt;
| Overrides the finetune value for the currently playing note. &amp;lt;br /&amp;gt; Functions similarly to the same setting in the Sample Editor but is only applied temporarily. &amp;lt;br /&amp;gt; This command only works with a note next to it.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop Start&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|A Fasttracker II bug makes use of this command non-trivial.}} &amp;lt;br /&amp;gt; Marks the current row position to be used as the start of a pattern loop. &amp;lt;br /&amp;gt; {{Warning|1=When &amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt; is used on pattern row &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, the following pattern also starts from row &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; instead of row 0. &amp;lt;br /&amp;gt; This can be circumvented by using a &amp;lt;abbr title=&amp;quot;Pattern Break&amp;quot;&amp;gt;&amp;lt;code&amp;gt;D00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; command on the last row of the same pattern.}}&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E6x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop&lt;br /&gt;
| —&lt;br /&gt;
| Each time this command is reached, jumps to the row marked by &amp;lt;abbr title=&amp;quot;Pattern Loop Start&amp;quot;&amp;gt;&amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; until &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; jumps have occured in total. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;E6x&amp;lt;/code&amp;gt; is used in a pattern with no &amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt; effect, &amp;lt;code&amp;gt;E6x&amp;lt;/code&amp;gt; will use the row position marked by any previous &amp;lt;code&amp;gt;E60&amp;lt;/code&amp;gt; effect. &amp;lt;br /&amp;gt; Pattern loops cannot span multiple patterns. &amp;lt;br /&amp;gt; Ranges from 1h to Fh.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E7x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Tremolo Waveform&lt;br /&gt;
| —&lt;br /&gt;
| Sets the waveform of future Tremolo effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E8x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| &#039;&#039;&amp;lt;small&amp;gt;&amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;8xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is a much finer panning effect.&amp;lt;/small&amp;gt;&#039;&#039; &amp;lt;br /&amp;gt; Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; Ranges from 0h (left) to Fh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;E9x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Retrigger&lt;br /&gt;
| No&lt;br /&gt;
| Retriggers the current note every &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; This effect works with parameters greater than the current Speed setting if the row after it also contains an &amp;lt;code&amp;gt;E9x&amp;lt;/code&amp;gt; effect.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EAx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Volume Slide Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Ax0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EBx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Volume Slide Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;A0y&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but only applies on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;ECx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Cut&lt;br /&gt;
| —&lt;br /&gt;
| Sets note volume to 0 after &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, this command is ignored.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EDx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Delay&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This command is very buggy (e.g. portamento effects next to a note delay are ignored). You should not rely on these bugs to be emulated by other players.}} &amp;lt;br /&amp;gt; Delays the note or instrument change in the current pattern cell by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, the current pattern cell&#039;s contents are never played.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Delay&lt;br /&gt;
| —&lt;br /&gt;
| Repeats the current row &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; times. &amp;lt;br /&amp;gt; Notes are not retriggered on every repetition, but effects are still processed. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt; commands are found on the same row, only the rightmost is considered.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Active Macro&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Selects the active [[Manual: Zxx Macros#Parametered Macros|parametered macro]] for the current channel.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Speed / Tempo&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|Avoid using 00h as a parameter.}}&lt;br /&gt;
* Sets the module &#039;&#039;&#039;Speed&#039;&#039;&#039; (ticks per row) if &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; is less than 20h.&lt;br /&gt;
* Sets the module &#039;&#039;&#039;Tempo&#039;&#039;&#039; if &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; greater than or equal to 20h.&lt;br /&gt;
In OpenMPT and Fasttracker II, &amp;lt;code&amp;gt;F00&amp;lt;/code&amp;gt; sets the Speed to 65535 ticks per row, but in other players it may stop the song entirely, or simply do nothing.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Gxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Global Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the global volume. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 40h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Global Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Axy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but applies to the global volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Kxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Key Off&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|Avoid using 00h as a parameter; it interferes with other entries (e.g. notes, instruments) in the same pattern cell.}} &amp;lt;br /&amp;gt; Triggers a Note Off command after &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; ticks.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Lxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Envelope Position&lt;br /&gt;
| —&lt;br /&gt;
| Sets the volume envelope playback position to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If the volume envelope’s sustain point is enabled, the panning envelope position is also changed.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Pxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the current sample&#039;s panning position left or right.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;P0y&amp;lt;/code&amp;gt;&#039;&#039;&#039; slides the panning to the &#039;&#039;&#039;left&#039;&#039;&#039; by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on the first tick of the row.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Px0&amp;lt;/code&amp;gt;&#039;&#039;&#039; slides the panning to the &#039;&#039;&#039;right&#039;&#039;&#039; by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Rxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Retrigger&lt;br /&gt;
| Yes&lt;br /&gt;
| {{Warning|This command is very buggy (e.g. if a volume command is in the same pattern cell as &amp;lt;code&amp;gt;Rxy&amp;lt;/code&amp;gt;, it will skip some ticks).}} &amp;lt;br /&amp;gt; Retriggers the current note every &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks and changes the volume based on the &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; value (see the [[#Retrigger Volume|Retrigger Volume table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Txy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremor&lt;br /&gt;
| Yes&lt;br /&gt;
| Rapidly switches the sample volume on and off on every tick of the row except the first. &amp;lt;br /&amp;gt; Volume is &#039;&#039;&#039;on&#039;&#039;&#039; for &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; + 1 ticks and &#039;&#039;&#039;off&#039;&#039;&#039; for &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; + 1 ticks. &amp;lt;br /&amp;gt; For instrument plugins {{Warning|(ModPlug hack)}}, this command sends note-on and note-off messages instead of modifying the volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;X1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Extra Fine Portamento Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Fine Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;E1x&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but with 4 times the precision.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;X2x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Extra Fine Portamento Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Fine Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;E2x&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but with 4 times the precision.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;X5x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panbrello Waveform&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Sets the waveform of future Panbrello effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;X6x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Pattern Delay&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Extends the current row by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;X6x&amp;lt;/code&amp;gt; commands are found on the same row, the sum of their parameters is used.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;X9x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sound Control&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Executes a sound control command (see the [[Manual: Effect Reference#Sound Control|Sound Control table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;XAx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| High Offset&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Sets the high offset for future &amp;lt;abbr title=&amp;quot;Sample Offset&amp;quot;&amp;gt;&amp;lt;code&amp;gt;9xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; commands. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; × 65536 (10000h) is added to all offset effects that follow this command.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Yxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panbrello&lt;br /&gt;
| Yes&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Executes Panbrello with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected Panbrello waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Zxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| MIDI Macro&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Executes a [[Manual: Zxx Macros|MIDI Macro]].&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;\xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Smooth MIDI Macro&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Executes an interpolated MIDI Macro.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
The following commands can be entered into the effect column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;decimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;axx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Volume Slide Up&lt;br /&gt;
| No&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Fine Volume Slide Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;EAx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume up &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; units on the first tick).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;bxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Volume Slide Down&lt;br /&gt;
| No&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Fine Volume Slide Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;EBx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume down &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; units on the first tick).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;cxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide Up&lt;br /&gt;
| No&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Ax0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume up &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; units on all ticks except the first).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;dxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide Down&lt;br /&gt;
| No&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;A0y&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume down &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; units on all ticks except the first).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;gxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Tone Portamento&amp;quot;&amp;gt;&amp;lt;code&amp;gt;3xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (pitch-bends from the previous note to the current note). &amp;lt;br /&amp;gt; Compared to &amp;lt;code&amp;gt;3xx&amp;lt;/code&amp;gt;, parameters are 16 times more coarse (e.g. &amp;lt;code&amp;gt;g01&amp;lt;/code&amp;gt; = &amp;lt;abbr title=&amp;quot;Tone Portamento with speed 16 (10h)&amp;quot;&amp;gt;&amp;lt;code&amp;gt;310&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;). &amp;lt;br /&amp;gt; Combining the effect with &amp;lt;code&amp;gt;3xx&amp;lt;/code&amp;gt; will double the effect parameter (e.g. &amp;lt;code&amp;gt;g01&amp;lt;/code&amp;gt; would act like &amp;lt;code&amp;gt;g02&amp;lt;/code&amp;gt;) and ignores the &amp;lt;code&amp;gt;3xx&amp;lt;/code&amp;gt; command. &amp;lt;br /&amp;gt; Ineffective if &amp;lt;abbr title=&amp;quot;Note Delay&amp;quot;&amp;gt;&amp;lt;code&amp;gt;EDx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is in the same pattern cell.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;hxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Vibrato Depth&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes vibrato with depth &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; and speed from the last &amp;lt;abbr title=&amp;quot;Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;4xy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; or &amp;lt;abbr title=&amp;quot;Vibrato Speed&amp;quot;&amp;gt;&amp;lt;code&amp;gt;u0x&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; command.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;lxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Slide Left&lt;br /&gt;
| No&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Panning Slide Left&amp;quot;&amp;gt;&amp;lt;code&amp;gt;P0y&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the panning left by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; units).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;pxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| No&lt;br /&gt;
| Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; This effect only accepts 4-bit parameters (with 16 distinct values); when saving the file, parameters that are not multiples of 4 will be rounded down to a multiple of 4 (e.g. 55 will save as 52 and 5 will save as 4). &amp;lt;br /&amp;gt; Ranges from 0 (left) to 64 (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;rxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Slide Right&lt;br /&gt;
| No&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Panning Slide Right&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Px0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the panning right by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; units).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;uxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Vibrato Speed&lt;br /&gt;
| No&lt;br /&gt;
| Sets the vibrato speed to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;, but does not execute a vibrato.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;vxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Volume&lt;br /&gt;
| No&lt;br /&gt;
| Sets the current note volume to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; The behaviour of this command when sent to instrument plugins can be configured in the [[Manual: Instruments#Plugin / MIDI|Instrument Editor]] {{Warning|(ModPlug hack)}}. &amp;lt;br /&amp;gt; Ranges from 0 (off) to 64 (full). &lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; Effect Memory&#039;&#039;&#039;: &amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming that all available parameters for a given effect (e.g. &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;) are equivalent to 0:&lt;br /&gt;
* &#039;&#039;&#039;No&#039;&#039;&#039; means that the command does nothing.&lt;br /&gt;
* &#039;&#039;&#039;Yes&#039;&#039;&#039; means that the effect calls its own parameter memory. &amp;lt;br /&amp;gt; For example, if the effect &amp;lt;abbr title=&amp;quot;Vibrato with speed 8 and depth 2&amp;quot;&amp;gt;&amp;lt;code&amp;gt;482&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is followed by the effect &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; on a subsequent row, the &amp;lt;code&amp;gt;400&amp;lt;/code&amp;gt; effect recalls the effect parameter 82h.&lt;br /&gt;
* &#039;&#039;&#039;—&#039;&#039;&#039; means that the value has no special meaning. &amp;lt;br /&amp;gt; For example, &amp;lt;abbr title=&amp;quot;Set Volume&amp;quot;&amp;gt;&amp;lt;code&amp;gt;C00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets note volume to 0, &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;800&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the channel&#039;s panning position to hard left, &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; jumps to the first pattern, etc.&lt;br /&gt;
&lt;br /&gt;
== S3M Effect Commands ==&lt;br /&gt;
&lt;br /&gt;
Scream Tracker′s S3M format uses a command set that is entirely different from the MOD and XM formats&#039;. Its use of the volume column is very limited.&lt;br /&gt;
&lt;br /&gt;
The format was soon extended by other programs and players to support more effect commands (e.g. 7-Bit panning, panning slides, channel volume, etc.). Though these are also supported by OpenMPT, they are not original Scream Tracker 3 commands, and thus will be marked as such below.&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
The following commands can be entered into the effect column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;hexadecimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Axx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Speed&lt;br /&gt;
| No&lt;br /&gt;
| Sets the module Speed (ticks per row).&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Position Jump&lt;br /&gt;
| —&lt;br /&gt;
| Causes playback to jump to pattern position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt; would restart a song from the beginning (first pattern in the Order List). &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Pattern Break&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt; jumps in.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Break&lt;br /&gt;
| —&lt;br /&gt;
| Jumps to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the next pattern in the Order List. &amp;lt;br /&amp;gt; If the current pattern is the last pattern in the Order List, &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt; will jump to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the first pattern. &amp;lt;br /&amp;gt;If &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt; jumps in. &amp;lt;br /&amp;gt; Ranges from 00h to 3Fh (64; maximum amount of pattern rows for the S3M format); higher values are ignored.&lt;br /&gt;
| class=&amp;quot;eff-global | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Volume Slide&lt;br /&gt;
| Global&lt;br /&gt;
| Slides the current note volume up or down.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;D0y&amp;lt;/code&amp;gt; decreases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on every tick of the row except the first. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; is Fh and [[Manual: Song Properties#Fast Volume Slides|Fast Volume Slides]] are enabled, volume decreases on every tick.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Dx0&amp;lt;/code&amp;gt; increases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on every tick of the row except the first. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is Fh and [[Manual: Song Properties#Fast Volume Slides|Fast Volume Slides]] are enabled, volume decreases on every tick.&amp;lt;br /&amp;gt; Volume will not exceed 64 (40h).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;DFy&amp;lt;/code&amp;gt; finely decreases&#039;&#039;&#039; note volume by only applying &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;DxF&amp;lt;/code&amp;gt; finely increases&#039;&#039;&#039; note volume by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Exx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Down &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Portamento Down &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Extra Fine Portamento Down&lt;br /&gt;
| Global&lt;br /&gt;
| Decreases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; decreases note pitch by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on the first tick of the row.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt; extra-finely&#039;&#039;&#039; decreases note pitch by applying with 4 times the precision of &amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Up &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Portamento Up &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Extra Fine Portamento Up&lt;br /&gt;
| Global&lt;br /&gt;
| Increases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;FFx&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; increases note pitch by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on the first tick of the row.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;FEx&amp;lt;/code&amp;gt; extra-finely&#039;&#039;&#039; increases note pitch by applying with 4 times the precision of &amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Gxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the pitch of the previous note towards the current note by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes vibrato with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected vibrato waveform (see the [[#Waveform Types|Waveform Types table]] for more details). &amp;lt;br /&amp;gt; Shares memory with &amp;lt;abbr title=&amp;quot;Fine Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Uxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Ixy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremor&lt;br /&gt;
| Global&lt;br /&gt;
| Rapidly switches the sample volume on and off. &amp;lt;br /&amp;gt; Volume is on for &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks and off for &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Jxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Arpeggio&lt;br /&gt;
| Global&lt;br /&gt;
| Plays an arpeggiation of three notes in one row, cycling between the current note, current note + &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; semitones, and current note + &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; semitones.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Kxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Vibrato&lt;br /&gt;
| Global&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Lxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Tone Portamento&lt;br /&gt;
| Global&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Tone Portamento memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;G00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Mxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Channel Volume&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Sets the current channel volume, which multiplies all note volumes it encompasses. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 40h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Nxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Channel Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Similar to &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but applies to the current channel&#039;s volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sample Offset&lt;br /&gt;
| Yes&lt;br /&gt;
| Starts playing the current sample from position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; × 256, instead of position 0. &amp;lt;br /&amp;gt; Ineffective if there is no note in the same pattern cell.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Pxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Slide &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Panning Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Slides the current channel&#039;s panning position left or right.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;P0y&amp;lt;/code&amp;gt;&#039;&#039;&#039; slides the panning to the &#039;&#039;&#039;right&#039;&#039;&#039; by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Px0&amp;lt;/code&amp;gt;&#039;&#039;&#039; slides the panning to the &#039;&#039;&#039;left&#039;&#039;&#039; by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;PFy&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; slides the panning to the right by only applying &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;PxF&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; slides the panning to the left by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Qxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Retrigger&lt;br /&gt;
| Global&lt;br /&gt;
| Retriggers the current note every &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks and changes the volume based on the &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; value (see the [[#Retrigger Volume|Retrigger Volume table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Rxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremolo&lt;br /&gt;
| Global&lt;br /&gt;
| Executes tremolo with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected tremolo waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Glissando Control&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| {{Warning|This effect is not widely supported and behaves quirky in OpenMPT.}} &amp;lt;br /&amp;gt; Configures whether tone portamento effects slide by semitones or not.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;S10&amp;lt;/code&amp;gt; disables&#039;&#039;&#039; glissando.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;S11&amp;lt;/code&amp;gt; enables&#039;&#039;&#039; glissando.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S2x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Finetune&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&amp;lt;small&amp;gt;Considered a legacy command.&amp;lt;/small&amp;gt;&#039;&#039; &amp;lt;br /&amp;gt; Overrides the current sample&#039;s C-5 frequency with a MOD finetune value.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S3x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Vibrato Waveform&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the waveform of future Vibrato effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S4x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Tremolo Waveform&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the waveform of future Tremolo effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S5x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panbrello Waveform&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Sets the waveform of future Panbrello effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S6x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Pattern Delay&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Extends the current row by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;S6x&amp;lt;/code&amp;gt; commands are on the same row, the sum of their parameters is used.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S8x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&amp;lt;small&amp;gt;&amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is a much finer panning effect.&amp;lt;/small&amp;gt;&#039;&#039; &amp;lt;br /&amp;gt; Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; Ranges from 0h (left) to Fh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S9x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sound Control&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Executes a sound control command (see the [[#Sound Control|Sound Control table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SAx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| High Offset&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Sets the high offset for future &amp;lt;abbr title=&amp;quot;Sample Offset&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; commands. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; × 65536 (10000h) is added to all offset effects that follow this command.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop Start&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Marks the current row position to be used as the start of a pattern loop.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SBx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Each time this command is reached, jumps to the row marked by &amp;lt;abbr title=&amp;quot;Pattern Loop Start&amp;quot;&amp;gt;&amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; until &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; jumps have occurred in total. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;SBx&amp;lt;/code&amp;gt; is used in a pattern with no &amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt; effect, &amp;lt;code&amp;gt;SBx&amp;lt;/code&amp;gt; will use the row position marked by any previous &amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt; effect. &amp;lt;br /&amp;gt; Pattern loops cannot span multiple patterns. &amp;lt;br /&amp;gt; Ranges from 1h to Fh.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SCx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Cut&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Stops the current sample after &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is 0, or greater than or equal to the current module Speed, this command is ignored.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SDx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Delay&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Delays the note or instrument change in the current pattern cell by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is 0, or greater than or equal to the current module Speed, the current pattern cell&#039;s contents are never played.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SEx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Delay&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Global memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Repeats the current row &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; times. &amp;lt;br /&amp;gt; Notes are not retriggered on every repetition, but effects are still processed. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;SEx&amp;lt;/code&amp;gt; commands are on the same row, only the leftmost command is used.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;T0x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Decrease Tempo&lt;br /&gt;
| Yes&lt;br /&gt;
| Decreases the module Tempo by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; BPM on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;T1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Increase Tempo&lt;br /&gt;
| Yes&lt;br /&gt;
| Increases the module Tempo by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; BPM on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Txx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Tempo&lt;br /&gt;
| No&lt;br /&gt;
| Sets the module Tempo if &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; is greater than or equal to 20h.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Uxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but with 4 times the precision. &amp;lt;br /&amp;gt; Shares memory with &amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Vxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Global Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the global volume. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 40h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Wxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Global Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Similar to &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but applies to the global volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current channel&#039;s panning position.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;XA4&amp;lt;/code&amp;gt; enables surround playback&#039;&#039;&#039; on the current channel. &amp;lt;br /&amp;gt; When using &#039;&#039;&#039;stereo&#039;&#039;&#039; playback, the right channel of a sample is played with inversed phase (Pro Logic Surround). &amp;lt;br /&amp;gt; When using &#039;&#039;&#039;quad&#039;&#039;&#039; playback, the rear channels are used for playing this channel.&lt;br /&gt;
Surround mode can be disabled by using a different &amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt; command on the same channel it was enabled on. &amp;lt;br /&amp;gt; Ranges from 00h (left) to 80h (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Yxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panbrello&lt;br /&gt;
| Yes&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Executes panbrello with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected panbrello waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Zxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| MIDI Macro&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Executes a [[Manual: Zxx Macros|MIDI Macro]]. &amp;lt;br /&amp;gt; Since MIDI Macros are not stored in S3M files, only the default macro configuration can be used to control the resonant filter.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
The following commands can be entered into the volume column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;decimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;pxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| No&lt;br /&gt;
| {{Warning|This is not an original Scream Tracker 3 effect.}} &amp;lt;br /&amp;gt; Sets the current channel&#039;s panning position to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; Ranges from 0 to 64 (decimal).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;vxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Volume&lt;br /&gt;
| No&lt;br /&gt;
| Sets the current note volume to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; Ranges from 0 to 64 (decimal).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; Effect Memory:&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming that all available parameters for a given effect (e.g. &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;) are equivalent to 0:&lt;br /&gt;
* &#039;&#039;&#039;No&#039;&#039;&#039; means that the command does nothing.&lt;br /&gt;
* &#039;&#039;&#039;Yes&#039;&#039;&#039; means that the effect calls its own parameter memory. &amp;lt;br /&amp;gt; For example, if the effect &amp;lt;abbr title=&amp;quot;Vibrato with speed 8 and depth 2&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H82&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is followed by the effect &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; on a subsequent row, the &amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt; command recalls the effect parameter 82h.&lt;br /&gt;
* &#039;&#039;&#039;—&#039;&#039;&#039; means that the value has no special meaning. &amp;lt;br /&amp;gt; For example, &amp;lt;abbr title=&amp;quot;Set Global Volume&amp;quot;&amp;gt;&amp;lt;code&amp;gt;V00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the global volume to 0, &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;X00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the channel&#039;s panning position to hard left, &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; jumps to the first pattern, etc.&lt;br /&gt;
* &#039;&#039;&#039;Global&#039;&#039;&#039; means that the effect calls any previous non-zero parameter in the same column. &amp;lt;br /&amp;gt; For example, if the effect &amp;lt;abbr title=&amp;quot;Portamento Down by 22h (34) units&amp;quot;&amp;gt;&amp;lt;code&amp;gt;E22&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is followed by &amp;lt;abbr title=&amp;quot;Tremor memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;I00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, the &amp;lt;code&amp;gt;I00&amp;lt;/code&amp;gt; command recalls the effect parameter 22h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AdLib / OPL3 Instruments ===&lt;br /&gt;
OpenMPT supports AdLib / OPL3 instruments in the S3M format, but not all effects are compatible with them. Below is a list of effects that do not function with AdLib / OPL3 instruments in S3M files:&lt;br /&gt;
* &amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt; (Sample Offset)&lt;br /&gt;
* &amp;lt;code&amp;gt;S9x&amp;lt;/code&amp;gt; (Sound Control)&lt;br /&gt;
* &amp;lt;code&amp;gt;SAx&amp;lt;/code&amp;gt; (High Offset)&lt;br /&gt;
* &amp;lt;code&amp;gt;XA4&amp;lt;/code&amp;gt; (Enable Surround)&lt;br /&gt;
&lt;br /&gt;
The following effects are not supported in Scream Tracker 3 but work with AdLib / OPL3 instruments in OpenMPT:&lt;br /&gt;
* &amp;lt;code&amp;gt;Mxx&amp;lt;/code&amp;gt; (Set Channel Volume)&lt;br /&gt;
* &amp;lt;code&amp;gt;Nxy&amp;lt;/code&amp;gt; (Channel Volume Slide)&lt;br /&gt;
&lt;br /&gt;
Additionally, since AdLib / OPL3 instruments only support hard left, center, and hard right panning, the range of &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;pxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; are effectively restricted to those positions.&lt;br /&gt;
&lt;br /&gt;
== IT Effect Commands ==&lt;br /&gt;
&lt;br /&gt;
Impulse Tracker&#039;s IT format uses a command set that expands upon the S3M format&#039;s, adding several new effects and improving effect memory usage.&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
The following commands can be entered into the effect column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;hexadecimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Axx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Speed&lt;br /&gt;
| No&lt;br /&gt;
| Sets the module Speed (ticks per row).&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Position Jump&lt;br /&gt;
| —&lt;br /&gt;
| Causes playback to jump to pattern position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt; would restart a song from the beginning (first pattern in the Order List). &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Pattern Break&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt; jumps in.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Break&lt;br /&gt;
| —&lt;br /&gt;
| Jumps to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the next pattern in the Order List. &amp;lt;br /&amp;gt; If the current pattern is the last pattern in the Order List, &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt; will jump to row &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; of the first pattern. &amp;lt;br /&amp;gt; If &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is on the same row, the pattern specified by &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt; will be the pattern &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt; jumps in. &amp;lt;br /&amp;gt; Ranges from 00h to the next pattern&#039;s row length; higher values are treated as 00h.&lt;br /&gt;
| class=&amp;quot;eff-global | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the current note volume up or down.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;D0y&amp;lt;/code&amp;gt; decreases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on every tick of the row except the first. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; is Fh, volume decreases on every tick.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Dx0&amp;lt;/code&amp;gt; increases&#039;&#039;&#039; note volume by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on every tick of the row except the first. &amp;lt;br /&amp;gt; Volume will not exceed 64 (40h).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;DFy&amp;lt;/code&amp;gt; finely decreases&#039;&#039;&#039; note volume by only applying &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;DxF&amp;lt;/code&amp;gt; finely increases&#039;&#039;&#039; note volume by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Exx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Down &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Portamento Down &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Extra Fine Portamento Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Decreases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; decreases note pitch by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on the first tick of the row.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;EEx&amp;lt;/code&amp;gt; extra-finely&#039;&#039;&#039; decreases note pitch by applying with 4 times the precision of &amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Portamento Up &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Portamento Up &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Extra Fine Portamento Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Increases current note pitch by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;FFx&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; increases note pitch by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on the first tick of the row.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;FEx&amp;lt;/code&amp;gt; extra-finely&#039;&#039;&#039; increases note pitch by applying with 4 times the precision of &amp;lt;code&amp;gt;EFx&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Gxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the pitch of the previous note towards the current note by &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; [[#Frequency Units|units]] on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes vibrato with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected vibrato waveform (see the [[#Waveform Types|Waveform Types table]] for more details). &amp;lt;br /&amp;gt; Shares memory with &amp;lt;abbr title=&amp;quot;Fine Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Uxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Ixy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremor&lt;br /&gt;
| Yes&lt;br /&gt;
| Rapidly switches the sample volume on and off. &amp;lt;br /&amp;gt; Volume is on for &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks and off for &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; For instrument plugins {{Warning|(ModPlug hack)}}, this command sends note-on and note-off messages instead of modifying the volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Jxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Arpeggio&lt;br /&gt;
| Yes&lt;br /&gt;
| Plays an arpeggiation of three notes in one row, cycling between the current note, current note + &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; semitones, and current note + &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; semitones.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Kxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Lxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Slide + Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; with &amp;lt;abbr title=&amp;quot;Tone Portamento memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;G00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Parameters are used like &amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Mxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Channel Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current channel volume, which multiplies all note volumes it encompasses. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 40h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Nxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Channel Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but applies to the current channel&#039;s volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sample Offset&lt;br /&gt;
| Yes&lt;br /&gt;
| Starts playing the current sample from position &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; × 256, instead of position 0. &amp;lt;br /&amp;gt; Ineffective if there is no note in the same pattern cell.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Pxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Slide &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;or&amp;lt;/small&amp;gt; Fine Panning Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Slides the current channel&#039;s panning position left or right.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;P0y&amp;lt;/code&amp;gt;&#039;&#039;&#039; slides the panning to the &#039;&#039;&#039;right&#039;&#039;&#039; by &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Px0&amp;lt;/code&amp;gt;&#039;&#039;&#039; slides the panning to the &#039;&#039;&#039;left&#039;&#039;&#039; by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on every tick of the row except the first.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;PFy&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; slides the panning to the right by only applying &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;PxF&amp;lt;/code&amp;gt; finely&#039;&#039;&#039; slides the panning to the left by only applying &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick of the row. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; cannot be Fh.&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Qxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Retrigger&lt;br /&gt;
| Yes&lt;br /&gt;
| Retriggers the current note every &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks and changes the volume based on the &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; value (see the [[#Retrigger Volume|Retrigger Volume table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Rxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Tremolo&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes tremolo with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected tremolo waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Glissando Control&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| {{Warning|This effect is not widely supported and behaves quirky in OpenMPT.}} &amp;lt;br /&amp;gt; Configures whether tone portamento effects slide by semitones or not.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;S10&amp;lt;/code&amp;gt; disables&#039;&#039;&#039; glissando.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;S11&amp;lt;/code&amp;gt; enables&#039;&#039;&#039; glissando.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S2x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Finetune&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&amp;lt;small&amp;gt;Considered a legacy command.&amp;lt;/small&amp;gt;&#039;&#039; &amp;lt;br /&amp;gt; Overrides the current sample&#039;s C-5 frequency with a MOD finetune value.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S3x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Vibrato Waveform&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the waveform of future Vibrato effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S4x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Tremolo Waveform&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the waveform of future Tremolo effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S5x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panbrello Waveform&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the waveform of future Panbrello effects (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S6x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Pattern Delay&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Extends the current row by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;S6x&amp;lt;/code&amp;gt; commands are on the same row, the sum of their parameters is used.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S70&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Past Note Cut&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Cuts&#039;&#039;&#039; all notes playing as a result of New Note Actions on the current channel.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S71&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Past Note Off&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Sends a Note Off&#039;&#039;&#039; to all notes playing as a result of New Note Actions on the current channel.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S72&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Past Note Fade&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Fades out&#039;&#039;&#039; all notes playing as a result of New Note Actions on the current channel.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S73&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| NNA Note Cut&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the currently active note&#039;s New Note Action to &#039;&#039;&#039;Note Cut&#039;&#039;&#039;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S74&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| NNA Note Continue&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the currently active note&#039;s New Note Action to &#039;&#039;&#039;Continue&#039;&#039;&#039;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S75&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| NNA Note Off&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the currently active note&#039;s New Note Action to &#039;&#039;&#039;Note Off&#039;&#039;&#039;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S76&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| NNA Note Fade&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the currently active note&#039;s New Note Action to &#039;&#039;&#039;Note Fade&#039;&#039;&#039;.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S77&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Envelope Off&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Disables&#039;&#039;&#039; the currently active note&#039;s &#039;&#039;&#039;volume&#039;&#039;&#039; envelope.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S78&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Volume Envelope On&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Enables&#039;&#039;&#039; the currently active note&#039;s &#039;&#039;&#039;volume&#039;&#039;&#039; envelope.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S79&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Envelope Off&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Disables&#039;&#039;&#039; the currently active note&#039;s &#039;&#039;&#039;panning&#039;&#039;&#039; envelope.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S7A&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panning Envelope On&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Enables&#039;&#039;&#039; the currently active note&#039;s &#039;&#039;&#039;panning&#039;&#039;&#039; envelope.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S7B&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pitch Envelope Off&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Disables&#039;&#039;&#039; the currently active note&#039;s &#039;&#039;&#039;pitch&#039;&#039;&#039; or &#039;&#039;&#039;filter&#039;&#039;&#039; envelope.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S7C&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pitch Envelope On&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&#039;Enables&#039;&#039;&#039; the currently active note&#039;s &#039;&#039;&#039;pitch&#039;&#039;&#039; envelope.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S8x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| &#039;&#039;&amp;lt;small&amp;gt;&amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is a much finer panning effect.&amp;lt;/small&amp;gt;&#039;&#039; &amp;lt;br /&amp;gt; Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; Ranges from 0h (left) to Fh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S9x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sound Control&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| {{Warning|1=Only &amp;lt;abbr title=&amp;quot;Surround On&amp;quot;&amp;gt;&amp;lt;code&amp;gt;S91&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is an original Impulse Tracker command.}} &amp;lt;br /&amp;gt; Executes a sound control command (see the [[#Sound Control|Sound Control table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SAx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| High Offset&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the high offset for future &amp;lt;abbr title=&amp;quot;Sample Offset&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; commands. &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; × 65536 (10000h) is added to all offset effects that follow this command.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop Start&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Marks the current row position to be used as the start of a pattern loop.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SBx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Loop&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Each time this command is reached, jumps to the row marked by &amp;lt;abbr title=&amp;quot;Pattern Loop Start&amp;quot;&amp;gt;&amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; until &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; jumps have occurred in total. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;SBx&amp;lt;/code&amp;gt; is used in a pattern with no &amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt; effect, &amp;lt;code&amp;gt;SBx&amp;lt;/code&amp;gt; will use the row position marked by any previous &amp;lt;code&amp;gt;SB0&amp;lt;/code&amp;gt; effect. &amp;lt;br /&amp;gt; Pattern loops cannot span multiple patterns. &amp;lt;br /&amp;gt; Ranges from 1h to Fh.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SCx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Cut&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Stops the current sample after &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, this command is ignored. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is 0, it will be treated as if it were 1.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SDx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Delay&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Delays the note or instrument change in the current pattern cell by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, the current cell&#039;s contents are not played. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is 0, it will be treated as if it were 1.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SEx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Pattern Delay&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Repeats the current row &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; times. &amp;lt;br /&amp;gt; Notes are not retriggered on every repetition, but effects are still processed. &amp;lt;br /&amp;gt; If multiple &amp;lt;code&amp;gt;SEx&amp;lt;/code&amp;gt; commands are on the same row, only the leftmost command is used.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Pattern)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;SFx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Active Macro&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Sets the current channel&#039;s active [[Manual: Zxx Macros#Parametered Macros|parametered macro]].&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;T0x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Decrease Tempo&lt;br /&gt;
| Yes&lt;br /&gt;
| Decreases the module Tempo by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; BPM on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;T1x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Increase Tempo&lt;br /&gt;
| Yes&lt;br /&gt;
| Increases the module Tempo by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; BPM on every tick of the row except the first.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Txx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Tempo&lt;br /&gt;
| No&lt;br /&gt;
| Sets the module Tempo if &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; is greater than or equal to 20h.&lt;br /&gt;
| class=&amp;quot;eff-global&amp;quot; | Global &amp;lt;small&amp;gt;(Timing)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Uxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Fine Vibrato&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but with 4 times the precision. &amp;lt;br /&amp;gt; Shares memory with &amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Vxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Global Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the global volume. &amp;lt;br /&amp;gt; Ranges from 00h (off) to 80h (full).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Wxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Global Volume Slide&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Volume Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but applies to the global volume.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current channel&#039;s panning position. &amp;lt;br /&amp;gt; Ranges from 00h (left) to FFh (right).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Yxy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Panbrello&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes panbrello with speed &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and depth &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; on the current note. &amp;lt;br /&amp;gt; Modulates with selected panbrello waveform (see the [[#Waveform Types|Waveform Types table]] for more details).&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Zxx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| MIDI Macro&lt;br /&gt;
| —&lt;br /&gt;
| Executes a [[Manual: Zxx Macros|MIDI Macro]].&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;\xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Smooth MIDI Macro&lt;br /&gt;
| —&lt;br /&gt;
| {{Warning|This effect is a ModPlug hack.}} &amp;lt;br /&amp;gt; Executes an interpolated MIDI Macro.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
The following commands can be entered into the volume column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;decimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;a0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Fine Volume Slide Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Fine Volume Slide Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;DxF&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume up &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;b0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Fine Volume Slide Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Fine Volume Slide Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;DFy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume down &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on the first tick).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;c0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Volume Slide Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Dx0&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume up &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on all ticks except the first).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;d0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Volume Slide Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Functions like &amp;lt;abbr title=&amp;quot;Volume Slide Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;D0y&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (slides the volume down &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; units on all ticks except the first).&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;e0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Portamento Down&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Exx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Compared to &amp;lt;code&amp;gt;Exx&amp;lt;/code&amp;gt;, parameters are 4 times more coarse (e.g. &amp;lt;code&amp;gt;e01&amp;lt;/code&amp;gt; = &amp;lt;abbr title=&amp;quot;Portamento Down by 4 units&amp;quot;&amp;gt;&amp;lt;code&amp;gt;E04&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;f0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Portamento Up&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Compared to &amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;, parameters are 4 times more coarse (e.g. &amp;lt;code&amp;gt;f01&amp;lt;/code&amp;gt; = &amp;lt;abbr title=&amp;quot;Portamento Up by 4 units&amp;quot;&amp;gt;&amp;lt;code&amp;gt;F04&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;).&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;g0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Tone Portamento&lt;br /&gt;
| Yes&lt;br /&gt;
| Similar to &amp;lt;abbr title=&amp;quot;Tone Portamento&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Gxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;. &amp;lt;br /&amp;gt; Below is a table that translates &amp;lt;code&amp;gt;g0x&amp;lt;/code&amp;gt; parameters to &amp;lt;code&amp;gt;Gxx&amp;lt;/code&amp;gt; parameters:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;tt&amp;gt;g0x&amp;lt;/tt&amp;gt; !! &amp;lt;tt&amp;gt;Gxx&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g00&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G00&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g01&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G01&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g02&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G04&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g03&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G08&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g04&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G10&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;tt&amp;gt;g0x&amp;lt;/tt&amp;gt; !! &amp;lt;tt&amp;gt;Gxx&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g05&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G20&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g06&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G40&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g07&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G60&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g08&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;G80&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g09&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;GFF&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;h0x&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Vibrato Depth&lt;br /&gt;
| Yes&lt;br /&gt;
| Executes a vibrato with depth &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and speed from the last &amp;lt;abbr title=&amp;quot;Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Hxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; or &amp;lt;abbr title=&amp;quot;Fine Vibrato&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Uxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; command.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;pxx&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Set Panning&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current channel&#039;s panning position to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; Ranges from 0 to 64.&lt;br /&gt;
| class=&amp;quot;eff-pan&amp;quot; | Panning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&#039;&#039;&#039;vxx&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Set Volume&lt;br /&gt;
| —&lt;br /&gt;
| Sets the current note volume to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;. &amp;lt;br /&amp;gt; The behaviour of this command when sent to instrument plugins can be configured in the [[Manual: Instruments#Plugin / MIDI|Instrument Editor]] {{Warning|(ModPlug hack)}}.&lt;br /&gt;
| class=&amp;quot;eff-vol&amp;quot; | Volume&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; Effect Memory:&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming that all available parameters for a given effect (e.g. &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;) are equivalent to 0:&lt;br /&gt;
* &#039;&#039;&#039;No&#039;&#039;&#039; means that the command does nothing.&lt;br /&gt;
* &#039;&#039;&#039;Yes&#039;&#039;&#039; means that the effect calls its own parameter memory. &amp;lt;br /&amp;gt; For example, if the effect &amp;lt;abbr title=&amp;quot;Vibrato with speed 8 and depth 2&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H82&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is followed by the effect &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; on a subsequent row, the &amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt; command recalls the effect parameter 82h.&lt;br /&gt;
* &#039;&#039;&#039;—&#039;&#039;&#039; means that the value has no special meaning. &amp;lt;br /&amp;gt; For example, &amp;lt;abbr title=&amp;quot;Set Global Volume&amp;quot;&amp;gt;&amp;lt;code&amp;gt;V00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the global volume to 0, &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;X00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the channel&#039;s panning position to hard left, &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; jumps to the first pattern, etc.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Volume Column Effect Memory:&#039;&#039;&#039;&lt;br /&gt;
:*  All volume slide effects in the volume column share effect memory with each other.&lt;br /&gt;
:* &amp;lt;abbr title=&amp;quot;Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;e0x&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;f0x&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; share effect memory with &amp;lt;abbr title=&amp;quot;Portamento Down&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Exx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Portamento Up&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Fxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; (respectively).&lt;br /&gt;
&lt;br /&gt;
== MPTM Effect Commands ==&lt;br /&gt;
&lt;br /&gt;
OpenMPT′s MPTM format is heavily based on the IT format and [[#IT Effect Commands|its effect command set]], but it does add several new features.&lt;br /&gt;
&lt;br /&gt;
=== Effect Column ===&lt;br /&gt;
&lt;br /&gt;
OpenMPT&#039;s MPTM format generally uses the same effect commands as the IT format. Commands from the IT section that are labeled as ModPlug hacks or unsupported by Impulse Tracker may be freely used in the MPTM format.&lt;br /&gt;
&lt;br /&gt;
The following additional commands, exclusive to the MPTM format, can be entered in the effect column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;hexadecimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S7D&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Force Pitch Envelope&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Enables the currently active note&#039;s pitch envelope and forces it to act as a pitch envelope (rather than a filter cutoff envelope).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;S7E&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Force Filter Envelope&lt;br /&gt;
| &amp;lt;abbr title=&amp;quot;Memory can be called with S00&amp;quot;&amp;gt;—&amp;lt;/abbr&amp;gt;&lt;br /&gt;
| Enables the currently active note&#039;s pitch envelope and forces it to act as a filter cutoff envelope (rather than a pitch envelope).&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;:xy&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Note Delay + Cut&lt;br /&gt;
| —&lt;br /&gt;
| Delays the note in the current pattern cell by &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ticks and cuts it after &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ticks. &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, the note will be ignored (and as such, cannot be cut with &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;). &amp;lt;br /&amp;gt; If &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; is greater than or equal to the current module Speed, only the note cut will be ignored.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;#xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Parameter Extension&lt;br /&gt;
| —&lt;br /&gt;
| Extends the parameter of the last &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Pattern Break&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Sample Offset&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Set Tempo&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Txx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Finetune&amp;quot;&amp;gt;&amp;lt;code&amp;gt;+xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; or &amp;lt;abbr title=&amp;quot;Finetune (Smooth)&amp;quot;&amp;gt;&amp;lt;code&amp;gt;*xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; command. If placed after such a command, the parameter values are combined. &amp;lt;br /&amp;gt; If there is only one &amp;lt;code&amp;gt;#xx&amp;lt;/code&amp;gt; command below the actual command (the limit for &amp;lt;code&amp;gt;Bxx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Cxx&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Txx&amp;lt;/code&amp;gt;), the original command is multiplied by 256 and then parameter &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; is added to it. &amp;lt;br /&amp;gt; For &amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;, up to 4 rows can be combined. The fourth row is multiplied by 1, the third by 256 (100h), the second by 65536 (10000h), and so on.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pattern&amp;gt;&lt;br /&gt;
ModPlug Tracker MPT&lt;br /&gt;
|C-501...O21&lt;br /&gt;
|........#02&lt;br /&gt;
|........#01&lt;br /&gt;
&amp;lt;/pattern&amp;gt;&lt;br /&gt;
In this example, the &#039;&#039;&#039;hexadecimal&#039;&#039;&#039; sample offset is (21h × 10000h) + (2h × 100h) + 1h = 210201h. &amp;lt;br /&amp;gt; In &#039;&#039;&#039;decimal&#039;&#039;&#039;, it is (33 × 65536) + (2 × 256) + 1 = 2,163,201.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;+xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Finetune&lt;br /&gt;
| —&lt;br /&gt;
| Changes the current note’s tuning. &amp;lt;code&amp;gt;+80&amp;lt;/code&amp;gt; is center (no change to the tuning), lower values decrease the tuning and higher values increase the tuning. In sample mode, the depth of this command is fixed at ±1 semitone. For sample-based instruments, the depth is defined by the instrument’s [[Manual: Instruments#Plugin / MIDI|pitch bend range]] setting. For plugins, this command directly translates to MIDI pitch bend commands, so the depth is whatever the pitch bend depth of the plugin or MIDI device is set to.&amp;lt;br&amp;gt;This command can be extended by &amp;lt;code&amp;gt;#xx&amp;lt;/code&amp;gt; Parameter extensions for even finer control over the tuning.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;*xx&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Finetune (Smooth)&lt;br /&gt;
| —&lt;br /&gt;
| Exactly the same as &amp;lt;abbr title=&amp;quot;Finetune&amp;quot;&amp;gt;&amp;lt;code&amp;gt;+xx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt;, but slides from the previous finetune value to the new value on every tick of the row.&lt;br /&gt;
| class=&amp;quot;eff-pitch&amp;quot; | Pitch&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Volume Column ===&lt;br /&gt;
&lt;br /&gt;
In addition to all of the IT format&#039;s [[#Volume Column_3|volume column commands]], the following commands can be entered in the volume column.&lt;br /&gt;
&lt;br /&gt;
All parameter values are &#039;&#039;&#039;decimal&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Effect&amp;quot;&amp;gt;Eff&amp;lt;/abbr&amp;gt;&lt;br /&gt;
! Name&lt;br /&gt;
! &amp;lt;abbr title=&amp;quot;Memory&amp;quot;&amp;gt;Mem&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;&lt;br /&gt;
! Description&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;o0x&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
| Sample Cue&lt;br /&gt;
| Yes&lt;br /&gt;
| Starts playing the current sample from cue point &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, instead of position 0. &amp;lt;br /&amp;gt; Cue points can be chosen in the [[Manual: Samples#Sample Display Context Menu|Sample Editor]]. &amp;lt;br /&amp;gt; Ineffective if there is no note in the same pattern cell. &amp;lt;br /&amp;gt; Shares effect memory with &amp;lt;abbr title=&amp;quot;Sample Offset&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and can be [[#Combined Commands|combined]] with that command.&lt;br /&gt;
| class=&amp;quot;eff-misc&amp;quot; | Miscellaneous&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; Effect Memory:&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming that all available parameters for a given effect (e.g. &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;) are equivalent to 0:&lt;br /&gt;
* &#039;&#039;&#039;Yes&#039;&#039;&#039; means that the effect calls its own parameter memory. &amp;lt;br /&amp;gt; For example, if the effect &amp;lt;abbr title=&amp;quot;Vibrato with speed 8 and depth 2&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H82&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; is followed by the effect &amp;lt;abbr title=&amp;quot;Vibrato memory&amp;quot;&amp;gt;&amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; on a subsequent row, the &amp;lt;code&amp;gt;H00&amp;lt;/code&amp;gt; command recalls the effect parameter 82h.&lt;br /&gt;
* &#039;&#039;&#039;—&#039;&#039;&#039; means that the value has no special meaning. &amp;lt;br /&amp;gt; For example, &amp;lt;abbr title=&amp;quot;Set Global Volume&amp;quot;&amp;gt;&amp;lt;code&amp;gt;V00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the global volume to 0, &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;X00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; sets the channel&#039;s panning position to hard left, &amp;lt;abbr title=&amp;quot;Position Jump&amp;quot;&amp;gt;&amp;lt;code&amp;gt;B00&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; jumps to the first pattern, etc.&lt;br /&gt;
&lt;br /&gt;
=== Combined Commands ===&lt;br /&gt;
&lt;br /&gt;
By combining the volume column &amp;lt;abbr title=&amp;quot;Sample Cue&amp;quot;&amp;gt;&amp;lt;code&amp;gt;oxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and effect column &amp;lt;abbr title=&amp;quot;Sample Offset&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; commands, two special offset behaviours can be achieved:&lt;br /&gt;
* &amp;lt;code&amp;gt;o00&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt;: A cue point command with a parameter of 0 turns the effect column offset into a percentage offset, i.e. the command jumps to &amp;lt;code&amp;gt;xx&amp;lt;/code&amp;gt; × &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;/&amp;lt;sub&amp;gt;256&amp;lt;/sub&amp;gt;th of the total sample length. For example &amp;lt;code&amp;gt;o00&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;O80&amp;lt;/code&amp;gt; plays the second half of any sample.&lt;br /&gt;
* &amp;lt;code&amp;gt;o0x&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;Oyy&amp;lt;/code&amp;gt;: For &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; &amp;gt; 0, the effect column &amp;lt;code&amp;gt;Oyy&amp;lt;/code&amp;gt; is added on top of the cue point, so &amp;lt;code&amp;gt;o05&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;O01&amp;lt;/code&amp;gt; plays from the 5th cue point of the sample + 256 samples.&lt;br /&gt;
&lt;br /&gt;
=== AdLib / OPL3 Instruments ===&lt;br /&gt;
OpenMPT supports AdLib / OPL3 instruments in the MPTM format, but not all effects are compatible with them. Below is a list of effects that do not function with AdLib / OPL3 instruments in MPTM files:&lt;br /&gt;
* &amp;lt;code&amp;gt;Oxx&amp;lt;/code&amp;gt; (Sample Offset)&lt;br /&gt;
* &amp;lt;code&amp;gt;S9x&amp;lt;/code&amp;gt; (Sound Control) parameters other than Ch and Dh (Global &amp;amp; Local Filters)&lt;br /&gt;
* &amp;lt;code&amp;gt;SAx&amp;lt;/code&amp;gt; (High Offset)&lt;br /&gt;
* &amp;lt;code&amp;gt;o0x&amp;lt;/code&amp;gt; (Sample Cue)&lt;br /&gt;
&lt;br /&gt;
Additionally, since AdLib / OPL3 instruments only support hard left, center, and hard right panning, the range of &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Xxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Set Panning&amp;quot;&amp;gt;&amp;lt;code&amp;gt;pxx&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; are effectively restricted to those positions. Panning Slides like &amp;lt;abbr title=&amp;quot;Panning Slide&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Pxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;Panbrello&amp;quot;&amp;gt;&amp;lt;code&amp;gt;Yxy&amp;lt;/code&amp;gt;&amp;lt;/abbr&amp;gt; work with the same reduced granularity, but should be best avoided if possible.&lt;br /&gt;
&lt;br /&gt;
=== Parameter Control Events ===&lt;br /&gt;
&lt;br /&gt;
Another feature similar to effects that is only available in MPTM files are [[Manual: Parameter Control Events|Parameter Control Events]], which can be used to automate plugin parameters.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Effect Reference]]&lt;br /&gt;
[[de:Handbuch: Effektbefehle]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Setup/Keyboard&amp;diff=4926</id>
		<title>Manual: Setup/Keyboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Setup/Keyboard&amp;diff=4926"/>
		<updated>2025-06-01T14:44:23Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Settings Keyboard.png|thumb|350px|Keyboard tab of the settings dialog]]&lt;br /&gt;
&lt;br /&gt;
In this page you can choose or edit keyboard and MIDI shortcuts for many of the actions in OpenMPT. OpenMPT has several built-in keyboard layouts you can choose from, but you can also load and save custom layouts, for example from the &amp;lt;code&amp;gt;ExtraKeymaps&amp;lt;/code&amp;gt; folder in OpenMPT’s application folder by clicking on the “Import Key Map...” button near the bottom of the page. The current shortcut configurations are kept in the &amp;lt;code&amp;gt;Keybindings.mkb&amp;lt;/code&amp;gt; file in the &amp;lt;code&amp;gt;%APPDATA%\OpenMPT&amp;lt;/code&amp;gt; folder (or OpenMPT’s application folder if in portable mode), but here you can save these shortcuts in a separate file for safekeeping or sharing as well.&lt;br /&gt;
The following is a description of the various items on the page.&lt;br /&gt;
&lt;br /&gt;
To view or edit keyboard shortcuts, first find the context to which the keypress would be applied by clicking on the Category field at the top. A dropdown list will open and you can choose the context to view. If you wanted, for example, to assign the &amp;lt;kbd&amp;gt;Q&amp;lt;/kbd&amp;gt; key to the base octave C when inputting a note in a pattern, this keypress would be needed in the Pattern Editor for the note column. So you would select “Pattern Editor – Note Column” from the popup menu. The list of assignable note messages will be displayed in the field below it. Select the “Base octave C” entry and select it. Alternatively, if you know (parts of) the shortcut name, you can type it into the “Find by Name” box.&lt;br /&gt;
&lt;br /&gt;
Limited support for MIDI message handling is also there: Additionally to computer keyboard keys, MIDI CCs and MIDI note events may be used to trigger shortcuts. To make use of them, first [[Manual: MIDI Reference#Enabling MIDI Input|enable MIDI Input]]. Then, go to this settings dialog, focus the Key input field and send the wanted MIDI CC or note using your MIDI device.&lt;br /&gt;
&lt;br /&gt;
It is possible to assign the same key combination to several shortcuts within the same context by means of the hidden setting [[Manual: Hidden Settings#.5BMisc.5D|Misc.AllowMultipleCommandsPerKey]], but a warning about this potentially unwanted situation is emitted if you are trying to re-use an existing key combination that may be conflicting.&lt;br /&gt;
&lt;br /&gt;
== Shortcut List ==&lt;br /&gt;
&lt;br /&gt;
=== Select Category ===&lt;br /&gt;
Shortcuts are sorted into categories, or contexts, in which a shortcut can be activated. The category list shows all available contexts, and clicking this field opens a dropdown list from where you can choose which set of shortcuts you wish to edit.&lt;br /&gt;
&lt;br /&gt;
Generally the same keyboard shortcut can be assigned in multiple contexts, but only the shortcut in the most specific context will be activated when the key is hit.&lt;br /&gt;
&lt;br /&gt;
=== Action List ===&lt;br /&gt;
Clicking on one of the entries selects it for key assignment. See the [[Manual: Keyboard Actions|Keyboard Actions]] table for a description of all available actions.&lt;br /&gt;
&lt;br /&gt;
In the right-hand column, you see the currently assigned shortcut(s) for each entry. Double-clicking this column allows you to directly change the primary choice for this entry.&lt;br /&gt;
&lt;br /&gt;
=== Find ===&lt;br /&gt;
This can be used to search for a specific shortcut in the complete shortcut list by its name. Instead of searching by name, you can also search by shortcut. Just click on the &#039;&#039;&#039;Find by Hotkey...&#039;&#039;&#039; button and enter the key combination that you want to find into the edit field that pops up (e.g. pressing &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;C&amp;lt;/kbd&amp;gt; would bring up the “Copy” shortcut when using the default configuration). Focus the edit box again to remove the search term.&lt;br /&gt;
&lt;br /&gt;
Pressing the &#039;&#039;&#039;Clear&#039;&#039;&#039; button cancels any active search filters.&lt;br /&gt;
&lt;br /&gt;
== Key Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Key setup choice ===&lt;br /&gt;
This field lets you switch between the choices of key assignments for this action. If there is no key assigned, it will display &amp;lt;code&amp;gt;&amp;lt;new&amp;gt;&amp;lt;/code&amp;gt;; otherwise, the text will read &amp;lt;code&amp;gt;&amp;quot;Choice &#039;&#039;x&#039;&#039; (of &#039;&#039;y&#039;&#039;)&amp;quot;&amp;lt;/code&amp;gt; where &#039;&#039;&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039; is the number of the current shortcut and &#039;&#039;&#039;&#039;&#039;y&#039;&#039;&#039;&#039;&#039; is the total count of this action’s current key assignments. Clicking in this field will display other choices, where you can select the one to edit.&lt;br /&gt;
&lt;br /&gt;
=== Keys ===&lt;br /&gt;
Shows the key assignment for this shortcut. Double-clicking in this field (after choosing an action in the Action List) will “listen” for a new key assignment. Any keypresses or recognized MIDI events will be entered into this field and assigned to the action as a keyboard shortcut. In order to stop “listening” for new key assignments, press the Cancel button right next to it or click on another control.&lt;br /&gt;
&lt;br /&gt;
=== Set / Cancel ===&lt;br /&gt;
You can also press the Set button to start “listening” for a new shortcut assignment. It then changes into a Cancel button, in case you want to abort the action and not assign a new key.&lt;br /&gt;
&lt;br /&gt;
=== Restore ===&lt;br /&gt;
Clicking on this button resets the key assignments of this action to when the action was first selected.&lt;br /&gt;
&lt;br /&gt;
=== On Key Down/Hold/Up ===&lt;br /&gt;
When any of these are checked, the action will be activated at the corresponding event of the keypress, either when the key is pressed down, when it is held down, and / or when the key is released.&lt;br /&gt;
&lt;br /&gt;
=== Delete Choice ===&lt;br /&gt;
Clicking on this button deletes the current key assignment. If there were other keyboard shortcuts for this action, they remain.&lt;br /&gt;
&lt;br /&gt;
=== Conflict / Warning Display ===&lt;br /&gt;
Shows conflicts between the currently chosen action and any other actions. Conflicts occur when one keypress or combination keypress is already assigned to an action within the same context or a parent context. A problem may also occur when modifier keys (&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;Alt&amp;lt;/kbd&amp;gt; or the &amp;lt;kbd&amp;gt;Windows&amp;lt;/kbd&amp;gt; key) are expected but another key is assigned. In this case, OpenMPT will not allow the non-modifier key to be assigned and a warning is displayed here.&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&lt;br /&gt;
=== Repeat Note Keys on Hold ===&lt;br /&gt;
&lt;br /&gt;
This checkbox indicates whether all assigned note keys have the “On Key Hold” property set and allows to toggle it quickly for all of them.&lt;br /&gt;
&lt;br /&gt;
If all assigned note keys have the “On Key Hold” property set, the checkbox is checked; if only some of them have the property set, the checkbox is shown in an indeterminate state. Clicking on the checkbox enables or disables the “On Key Hold” property for all note keys.&lt;br /&gt;
&lt;br /&gt;
=== Chord Detect Interval ===&lt;br /&gt;
If you have the Pattern Editor’s Edit Step setting set to some other value than 0 and have a record group set up, OpenMPT will put all notes detected within the Chord Detect Interval on the same row, regardless of the Edit Step setting, i.e. the notes are interpreted as a chord.&lt;br /&gt;
&lt;br /&gt;
=== Import Key Map... ===&lt;br /&gt;
Use this button to import an &amp;lt;code&amp;gt;.mkb&amp;lt;/code&amp;gt; (OpenMPT keyboard layout) file. This allows you to use an alternate set of pre-defined keyboard assignments. In the side bar of the file dialog, a shortcut to the &amp;lt;code&amp;gt;ExtraKeymaps&amp;lt;/code&amp;gt; can be found to quickly jump to the alternative keyboard layouts shipped with OpenMPT.&lt;br /&gt;
&lt;br /&gt;
=== Export Key Map... ===&lt;br /&gt;
Use this button to export the current set of keyboard shortcuts to a keyboard layout file. This is helpful not only for multiple users of one OpenMPT setup, but also for testing different setups for ease of use.&lt;br /&gt;
&lt;br /&gt;
=== Restore Default Configuration ===&lt;br /&gt;
Clicking on this button restores all keybindings to their default keys. From the dropdown menu, you can choose one of several key map “flavours” that change some of the default keys to be more similar to those of Impulse Tracker or Fast Tracker.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Setup/Keyboard]]&lt;br /&gt;
[[de:Handbuch: Setup/Keyboard]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_WavesReverb_Plugin&amp;diff=4925</id>
		<title>Manual: WavesReverb Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_WavesReverb_Plugin&amp;diff=4925"/>
		<updated>2025-06-01T13:52:18Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:WavesReverb Plugin.png|thumb|400px|WavesReverb plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;WavesReverb&#039;&#039;&#039; plugin is a simple reverb processor with few parameters, for adding depth and ambience to the signal while being easy to use.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
=== In Gain ===&lt;br /&gt;
* Controls the input level of the signal. It affects both the dry and wet signal, allowing you to reduce the volume of the final signal, in case it is too loud.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: -96 dB to 0 dB&lt;br /&gt;
&lt;br /&gt;
=== Reverb Mix ===&lt;br /&gt;
* Controls the level of the wet reverb signal. Lower, more negative values result in a more subtle reverb effect.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: -96 dB to 0 dB&lt;br /&gt;
&lt;br /&gt;
=== Reverb Time ===&lt;br /&gt;
* Sets the decay time of the reverb tail, determining how long the reverberated sound takes to fade away. Shorter reverb times simulate a smaller room, while longer reverb times create the impression of expansive, cathedral-like spaces.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0ms to 3,000ms&lt;br /&gt;
&lt;br /&gt;
=== HighFreqRTRatio ===&lt;br /&gt;
* The High Frequency Reverb Time Ratio is the ratio between high-frequency and low-frequency decay times in the reverb tail. A ratio of 1 means high frequencies decay at the same rate as low frequencies, creating a bright, artificial reverb. Lower ratios cause high frequencies to decay faster than low frequencies, resulting in warmer, more natural-sounding reverb.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0 to 1&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|WavesReverb Plugin]]&lt;br /&gt;
[[Category:Plugins|WavesReverb Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|WavesReverb Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_ParamEq_Plugin&amp;diff=4924</id>
		<title>Manual: ParamEq Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_ParamEq_Plugin&amp;diff=4924"/>
		<updated>2025-06-01T13:52:13Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:ParamEq Plugin.png|thumb|400px|ParamEq plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;ParamEq&#039;&#039;&#039; (Parametric Equalizer) plugin is a simple, single-band equalizer based on a biquad filter.&lt;br /&gt;
This effect lets you select the frequency to boost or cut, control the bandwidth of the affected range, and adjust the amount of gain applied.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Center Frequency ===&lt;br /&gt;
* Sets the center of the frequency range that will be boosted or cut as specified by the Gain parameter.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 80 Hz to 16,000 Hz&lt;br /&gt;
&lt;br /&gt;
=== Bandwidth ===&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 1 to 36 Semitones&lt;br /&gt;
* Controls the width of the frequency range affected by the EQ. Narrower bandwidths create precise adjustments that affect only a small frequency range, useful for removing specific resonances or feedback frequencies. Wider bandwidths instead affect larger frequency ranges with a more gentle gain slope.&lt;br /&gt;
&lt;br /&gt;
=== Gain ===&lt;br /&gt;
* Determines the amount of boost or cut at the center frequency.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: -15 dB to +15 dB&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|ParamEq Plugin]]&lt;br /&gt;
[[Category:Plugins|ParamEq Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|ParamEq Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_SymMOD_Echo_Plugin&amp;diff=4923</id>
		<title>Manual: SymMOD Echo Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_SymMOD_Echo_Plugin&amp;diff=4923"/>
		<updated>2025-06-01T13:52:09Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:SymMOD Echo Plugin.png|thumb|400px|SymMOD Echo plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;SymMOD Echo&#039;&#039;&#039; plugin is a specialized echo implementation provided primarily for the accurate playback of SymMOD modules by emulating the echo DSP effect of the Symphonie Pro tracker.&lt;br /&gt;
It is a basic echo effect with few options. Its main distinguishing feature is that the echo delay is synchronized to the module’s playback tempo.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Type ===&lt;br /&gt;
* Selects the echo processing mode.&lt;br /&gt;
* &#039;&#039;&#039;Options&#039;&#039;&#039;: Off, Normal, Cross, Cross 2, Center&lt;br /&gt;
** &#039;&#039;&#039;Off&#039;&#039;&#039;: Pauses the echo effect completely.&lt;br /&gt;
** &#039;&#039;&#039;Normal&#039;&#039;&#039;: The delayed signal appears in the same stereo position as the source.&lt;br /&gt;
** &#039;&#039;&#039;Cross&#039;&#039;&#039;: Cross-channel echo. The left channel’s echo appears in the right channel and vice versa, creating a ping-pong stereo effect.&lt;br /&gt;
** &#039;&#039;&#039;Cross 2&#039;&#039;&#039;: Same as &#039;&#039;&#039;Cross&#039;&#039;&#039;, but changes the Feedback parameter’s range (see below).&lt;br /&gt;
** &#039;&#039;&#039;Center&#039;&#039;&#039;: Creates a mono delay signal, mixing the left and right channel.&lt;br /&gt;
&lt;br /&gt;
=== Delay ===&lt;br /&gt;
* Sets the delay time measured in ticks, allowing for precise tempo synchronization. The actual delay time depends on the current tempo and speed settings and the [[Manual: Song Properties#Tempo Mode|tempo mode]] of the module. Lower values create short, tight echoes, while higher values produce longer, more spacious delays.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0 to 127 Ticks&lt;br /&gt;
&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
* Determines how much of the delayed signal is fed back into the delay line to create multiple repetitions. Higher feedback values produce longer echo tails with more repetitions, while lower values create fewer repetitions. Due to the original implementation of this effect in Symphonie Pro using an exponential parameter range, only roughly the first 10% of the total value range result in practical feedback values.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;:&lt;br /&gt;
** If the &#039;&#039;&#039;Type&#039;&#039;&#039; is not &#039;&#039;&#039;Cross 2&#039;&#039;&#039;: 100%, 50%, 25%, 12.5%, …&lt;br /&gt;
** If the &#039;&#039;&#039;Type&#039;&#039;&#039; is &#039;&#039;&#039;Cross 2&#039;&#039;&#039;: 50%, 75%, 87.5%, 93.75%, …&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|SymMOD Echo Plugin]]&lt;br /&gt;
[[Category:Plugins|SymMOD Echo Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|SymMOD Echo Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_MIDI_Input_/_Output_Plugin&amp;diff=4922</id>
		<title>Manual: MIDI Input / Output Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_MIDI_Input_/_Output_Plugin&amp;diff=4922"/>
		<updated>2025-06-01T13:52:02Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:MIDI Input Output Plugin.png|thumb|418px|MIDI Input / Output plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;MIDI Input / Output Plugin&#039;&#039;&#039; is a versatile plugin for sending MIDI data to external devices or receiving MIDI input from external controllers.&lt;br /&gt;
This plugin complements OpenMPT’s other [[Manual: MIDI Reference|MIDI capabilities]] by allowing to access multiple devices, creating routings between MIDI devices or plugins and offering an extended version of the [[Manual: Zxx Macros|MIDI Macro]] functionality.&lt;br /&gt;
&lt;br /&gt;
Multiple instances of the plugin can be used to address different devices simultaneously, though most MIDI drivers do not allow a single device to be used by multiple plugin instances at the same time.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== MIDI Input Device ===&lt;br /&gt;
Selects the MIDI input device from which the plugin will receive MIDI messages. The received MIDI data can be sent to another plugin (through the [[Manual: General#Mix Settings|plugin routing settings]]), or be recorded as pattern data through the &#039;&#039;&#039;Record Parameter Changes&#039;&#039;&#039; and &#039;&#039;&#039;Record MIDI Out to Pattern Editor&#039;&#039;&#039; options available from the plugin editor’s [[Manual: Plugin Window#Options|menu bar]].&lt;br /&gt;
&lt;br /&gt;
=== MIDI Output Device ===&lt;br /&gt;
Selects the destination for MIDI data sent by the plugin. This can be any external MIDI device, or virtual MIDI routing ports. The special &#039;&#039;&#039;Internal OpenMPT Output&#039;&#039;&#039; option sends MIDI data to the next plugin in the chain instead, allowing the extended MIDI macro system of this plugin (see below) to be used with other plugins.&lt;br /&gt;
&lt;br /&gt;
By default, the MIDI data is sent out at roughly the same moment OpenMPT’s output is heard. To synchronize the MIDI data with other sound sources, you can delay the MIDI output further by entering a positive &#039;&#039;&#039;Output Latency&#039;&#039;&#039; if the MIDI data is heard too early. On the other hand, if the MIDI data is heard too late, you can also enter a negative latency amount, down to OpenMPT’s own [[Manual: Setup/Soundcard#Latency|configured latency]], to compensate for any delays introduced by the MIDI port or target MIDI device.&lt;br /&gt;
&lt;br /&gt;
When the &#039;&#039;&#039;Send timing messages&#039;&#039;&#039; box is checked, OpenMPT will send the following additional MIDI messages:&lt;br /&gt;
* Song Start (&amp;lt;code&amp;gt;FA&amp;lt;/code&amp;gt;) and Song Stop (&amp;lt;code&amp;gt;FC&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Song Position Pointer (&amp;lt;code&amp;gt;F2&amp;lt;/code&amp;gt;) on every manual position change or start of new measure, up to the maximum possible PPQ position of 16,383 sixteenth notes.&lt;br /&gt;
* MIDI Clock (&amp;lt;code&amp;gt;F8&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Initial MIDI Dump ===&lt;br /&gt;
This allows you to configure specific MIDI messages to be sent either when the module plays for the first time or every time playback restarts. Typical use cases include sending device-specific SysEx configuration messages to external MIDI devices, or setting up initial patch changes and controller values.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Send Now&#039;&#039;&#039; button allows to test the entered MIDI messages immediately during playback.&lt;br /&gt;
&lt;br /&gt;
You can import SysEx dump files (.syx) to avoid manual entry of long MIDI messages using the &#039;&#039;&#039;Import Dump...&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
=== Parameter Macros ===&lt;br /&gt;
1,000 plugin parameters are available to be configured to send arbitrary MIDI messages. These macros offer several advantages over regular [[Manual: Zxx Macros|MIDI Macros]]:&lt;br /&gt;
&lt;br /&gt;
* Obviously, you are no longer limited to just 16 different macros.&lt;br /&gt;
* While regular MIDI macros have a 31-character limit, plugin macros can contain MIDI message sequences of any length.&lt;br /&gt;
&lt;br /&gt;
The plugin macros follow the same [[Manual: Macro Configuration#Macro Syntax|macro syntax]] as regular MIDI macros. The &#039;&#039;&#039;z&#039;&#039;&#039; variable is controlled by the plugin parameter value.&lt;br /&gt;
&lt;br /&gt;
You can use [[Manual: Parameter Control Events|Parameter Control Events]] to control these parameters, or, maybe a bit pointlessly, Zxx MIDI macros. &lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|MIDI Input / Output Plugin]]&lt;br /&gt;
[[Category:Plugins|MIDI Input / Output Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|MIDI Input / Output Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_LFO_Plugin&amp;diff=4921</id>
		<title>Manual: LFO Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_LFO_Plugin&amp;diff=4921"/>
		<updated>2025-06-01T13:51:55Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:LFO Plugin.png|thumb|400px|LFO plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;LFO&#039;&#039;&#039; (Low Frequency Oscillator) plugin is a versatile modulation source that can automatically control parameters of other plugins or send MIDI CC messages.&lt;br /&gt;
This allows for smooth and cyclic control of plugin parameters when the target plugin or MIDI device has no built-in LFO, or if its built-in LFO is not flexible enough.  &lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Amplitude ===&lt;br /&gt;
* Controls the depth of the LFO modulation. Higher values create more dramatic parameter changes, while lower values produce more subtle modulation. An amplitude of 0.5 allows to modulate the entire parameter range from 0 to 1, assuming that the offset is 0 (centered).&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0 to 1&lt;br /&gt;
&lt;br /&gt;
=== Offset ===&lt;br /&gt;
* Sets a DC offset that shifts the LFO waveform up or down from its center position, ensuring that the LFO stays within the desired parameter range.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: -1 to +1&lt;br /&gt;
&lt;br /&gt;
=== Frequency ===&lt;br /&gt;
* Controls the rate at which the LFO oscillates. When &#039;&#039;&#039;Tempo Sync&#039;&#039;&#039; is off, this sets the frequency in Hertz. When &#039;&#039;&#039;Tempo Sync&#039;&#039;&#039; is on, this sets the number of LFO cycles per beat, allowing for musically synchronized modulation that stays in time with the module’s tempo.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;:&lt;br /&gt;
** If &#039;&#039;&#039;Tempo Sync&#039;&#039;&#039; is &#039;&#039;&#039;Off&#039;&#039;&#039;: 0 Hz to 63.75 Hz&lt;br /&gt;
** If &#039;&#039;&#039;Tempo Sync&#039;&#039;&#039; is &#039;&#039;&#039;On&#039;&#039;&#039;: 0 to 32 Cycles Per Beat&lt;br /&gt;
&lt;br /&gt;
=== Tempo Sync ===&lt;br /&gt;
* Enables or disables tempo synchronization. When set to &#039;&#039;&#039;On&#039;&#039;&#039;, the LFO frequency is synchronized to the module’s tempo and measured in cycles per beat. When set to &#039;&#039;&#039;Off&#039;&#039;&#039;, the LFO runs freely at the specified frequency regardless of tempo changes.&lt;br /&gt;
* &#039;&#039;&#039;Options&#039;&#039;&#039;: Off, On&lt;br /&gt;
&lt;br /&gt;
=== Waveform ===&lt;br /&gt;
* Selects the shape of the LFO waveform:&lt;br /&gt;
* &#039;&#039;&#039;Options&#039;&#039;&#039;: Sine, Triangle, Saw, Square, Noise, Smoothed Noise&lt;br /&gt;
** &#039;&#039;&#039;Sine&#039;&#039;&#039;: Smooth modulation.&lt;br /&gt;
** &#039;&#039;&#039;Triangle&#039;&#039;&#039;: Linear ramp up and down.&lt;br /&gt;
** &#039;&#039;&#039;Saw&#039;&#039;&#039;: Rising sawtooth wave.&lt;br /&gt;
** &#039;&#039;&#039;Square&#039;&#039;&#039;: Abrupt switching between minimum and maximum modulation value.&lt;br /&gt;
** &#039;&#039;&#039;Noise&#039;&#039;&#039;: Random, stepped modulation.&lt;br /&gt;
** &#039;&#039;&#039;Smoothed Noise&#039;&#039;&#039;: Random modulation changing gradually.&lt;br /&gt;
&lt;br /&gt;
=== Invert Polarity ===&lt;br /&gt;
* When set to &#039;&#039;&#039;Yes&#039;&#039;&#039;, the LFO waveform is flipped upside down. This allows for example to ramp the Saw waveform down instead of up, or to create an up-down-up-down pattern instead of down-up-down-up with the Square waveform.&lt;br /&gt;
* &#039;&#039;&#039;Options&#039;&#039;&#039;: No, Yes&lt;br /&gt;
&lt;br /&gt;
=== Bypass LFO ===&lt;br /&gt;
* Allows to temporarily pause the LFO while keeping all settings intact.&lt;br /&gt;
* &#039;&#039;&#039;Options&#039;&#039;&#039;: No, Yes&lt;br /&gt;
&lt;br /&gt;
=== Loop Mode ===&lt;br /&gt;
* Controls whether the LFO waveform repeats infinitely or stops after one full cycle. &#039;&#039;&#039;Looped&#039;&#039;&#039; repeats the waveform for continuous modulation. &#039;&#039;&#039;One-Shot&#039;&#039;&#039; goes through the waveform once and then stops, allowing for a more envelope-like modulation that occurs only at the beginning of a note or phrase.&lt;br /&gt;
* &#039;&#039;&#039;Options&#039;&#039;&#039;: Looped, One-Shot&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
Here you can choose the plugin that should be affected by the LFO’s output. This is equivalent to choosing the output plugin in the regular [[Manual: General#Mix Settings|plugin routing settings]], hence only plugins with a slot ID higher than the current plugin’s slot ID can be chosen.&lt;br /&gt;
You can select whether you want to automate a specific plugin parameter, or instead send MIDI CC messages to the specified MIDI channel.&lt;br /&gt;
&lt;br /&gt;
== External Control ==&lt;br /&gt;
* The LFO plugin exposes parameter number 8 (&#039;&#039;&#039;Set LFO Phase&#039;&#039;&#039;) which can be used to manually reset the LFO phase at any point through pattern data, for example through [[Manual: Parameter Control Events|Parameter Control Events]]. Setting this parameter to 0 resets the LFO phase to the start of the waveform, setting it to 0.5 (setting the Parameter Control Event parameter to 500) restarts the the waveform halfway through, etc.&lt;br /&gt;
* If the LFO plugin is assigned to an instrument with a valid MIDI channel, sending a note to the LFO plugin will reset the LFO’s phase as well.&lt;br /&gt;
* All MIDI data sent to the LFO plugin is forwarded to the target plugin.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|LFO Plugin]]&lt;br /&gt;
[[Category:Plugins|LFO Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|LFO Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_I3DL2Reverb_Plugin&amp;diff=4920</id>
		<title>Manual: I3DL2Reverb Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_I3DL2Reverb_Plugin&amp;diff=4920"/>
		<updated>2025-06-01T13:51:49Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:I3DL2Reverb Plugin.png|thumb|400px|I3DL2Reverb plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;I3DL2Reverb&#039;&#039;&#039; plugin is an advanced reverberation processor based on the Interactive 3D Audio Level 2 (I3DL2) specification.&lt;br /&gt;
This reverb can simulate various acoustic spaces and environments, offering control over early reflections, reverb tail characteristics, and frequency response.&lt;br /&gt;
Various presets from the I3DL2 specification are provided as starting points for your own reverb parameter design.&lt;br /&gt;
&lt;br /&gt;
Note that this plugin outputs only the “wet” reverb signal, so enabling the “Dry Mix” option is recommended.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Room ===&lt;br /&gt;
* Controls the overall level of the reverb and thus allows to balance it against the dry signal. Higher values (closer to 0 dB) produce louder reverb, while lower values result in a more subtle reverb effect.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: -100 dB to 0 dB&lt;br /&gt;
&lt;br /&gt;
=== Room HF ===&lt;br /&gt;
* Adjusts the level of high-frequency content in the reverb. Lower values create warmer, more muffled reverb by reducing high frequencies, simulating absorption by soft materials like carpet or curtains. Higher values preserve brightness in the reverb tail, sounding more airy and artificial.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: -100 dB to 0 dB&lt;br /&gt;
&lt;br /&gt;
=== RoomRolloffFactor ===&lt;br /&gt;
* This parameter does not do anything. It only exists for backwards-compatibility with the original DMO plugin.&lt;br /&gt;
 &lt;br /&gt;
=== Decay Time ===&lt;br /&gt;
* Sets the time it takes for the reverb to decay by 60 dB. This is the fundamental parameter that determines the size of the simulated space. Shorter reverb times simulate a smaller room, while longer reverb times create the impression of expansive, cathedral-like spaces.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0.1s to 20s&lt;br /&gt;
&lt;br /&gt;
=== Decay HF Ratio ===&lt;br /&gt;
* Determines the ratio between the decay of high frequencies and low frequencies. Values less than 1 make high frequencies decay faster than low frequencies, creating warmer, more natural-sounding reverb. Values greater than 1 make high frequencies decay slower, creating a brighter, more airy and artificial reverb.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0.1 to 2.0&lt;br /&gt;
&lt;br /&gt;
=== Reflections ===&lt;br /&gt;
* Sets the level of early reflections, which are the first echoes that reach the listener after bouncing off nearby surfaces, providing spatial cues about room size and shape. Higher values make the space sound more reflective.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: -100 dB to +10 dB&lt;br /&gt;
&lt;br /&gt;
=== Reflections Delay ===&lt;br /&gt;
* Controls how long it takes until early reflections are heard. Longer delays suggest larger spaces with more distant walls, while shorter delays indicate a smaller space.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0s to 0.3s&lt;br /&gt;
&lt;br /&gt;
=== Reverb ===&lt;br /&gt;
* Adjusts the level of the late reverb tail, which is the dense mix of reflections that creates the sustained reverb sound. This parameter controls the prominence of the reverb tail relative to the early reflections and direct signal.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: -100 dB to +20 dB&lt;br /&gt;
&lt;br /&gt;
=== Reverb Delay ===&lt;br /&gt;
* Sets the delay between the early reflections and the onset of the late reverb tail. The gap between early reflections and late reverb helps define the perceived size and shape of the environment. Longer delays make the reverb sound more distinct from the source.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0s to 0.1s&lt;br /&gt;
&lt;br /&gt;
=== Diffusion ===&lt;br /&gt;
* Controls how quickly the echo density builds up in the reverb tail. Higher diffusion values create smoother, more even reverb with less distinct echoes. Lower values preserve more of the individual reflections, which can sound more spacious but less smooth.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0% to 100%&lt;br /&gt;
&lt;br /&gt;
=== Density ===&lt;br /&gt;
* Determines the spread in time between individual reverb delays, affecting how thick or sparse the reverb sounds. Higher density values create fuller, more lush reverb, while lower values produce thinner, more metallic reverb.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0% to 100%&lt;br /&gt;
&lt;br /&gt;
=== HF Reference ===&lt;br /&gt;
* Sets the reference frequency that defines what is considered “high frequencies” for the Room HF and Decay HF Ratio parameters.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 20 Hz to 20,000 Hz&lt;br /&gt;
&lt;br /&gt;
=== Quality ===&lt;br /&gt;
* Selects the reverb quality, directly affecting CPU usage by the plugin.&lt;br /&gt;
* &#039;&#039;&#039;Options&#039;&#039;&#039;: LQ, LQ+, HQ, HQ+&lt;br /&gt;
** &#039;&#039;&#039;LQ&#039;&#039;&#039;: The reverb is downsampled for processing, fewer delay lines are used.&lt;br /&gt;
** &#039;&#039;&#039;LQ+&#039;&#039;&#039;: The reverb is downsampled for processing, more delay lines are used.&lt;br /&gt;
** &#039;&#039;&#039;HQ&#039;&#039;&#039;: The reverb is processed at the original sample rate, fewer delay lines are used.&lt;br /&gt;
** &#039;&#039;&#039;HQ+&#039;&#039;&#039;: The reverb is processed at the original sample rate, more delay lines are used.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|I3DL2Reverb Plugin]]&lt;br /&gt;
[[Category:Plugins|I3DL2Reverb Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|I3DL2Reverb Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Gargle_Plugin&amp;diff=4919</id>
		<title>Manual: Gargle Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Gargle_Plugin&amp;diff=4919"/>
		<updated>2025-06-01T13:51:43Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Gargle Plugin.png|thumb|400px|Gargle plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Gargle&#039;&#039;&#039; plugin creates a gargling sound effect by rapidly modulating the amplitude (volume) of the input signal.&lt;br /&gt;
This effect produces rhythmic pulsations that can range from a simple tremolo to extreme, robotic modulation effects useful for special effects.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Rate ===&lt;br /&gt;
* Controls the frequency of the amplitude modulation, determining how rapidly the volume fluctuates. Lower rates (around 1 to 10 Hz) create slower, tremolo-like effects. High rates sound more robotic and can create ring modulation-like effects.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 1 Hz to 1,000 Hz&lt;br /&gt;
&lt;br /&gt;
=== Wave Shape ===&lt;br /&gt;
* Selects the waveform used for amplitude modulation. &#039;&#039;&#039;Triangle&#039;&#039;&#039; creates a smooth, gradual volume change, while &#039;&#039;&#039;Square&#039;&#039;&#039; abruptly switches the signal between full volume and silence, creating a gate effect at low rates and causing even more harmonic distortion at higher rates.&lt;br /&gt;
* &#039;&#039;&#039;Options&#039;&#039;&#039;: Triangle, Square&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Gargle Plugin]]&lt;br /&gt;
[[Category:Plugins|Gargle Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|Gargle Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Flanger_Plugin&amp;diff=4918</id>
		<title>Manual: Flanger Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Flanger_Plugin&amp;diff=4918"/>
		<updated>2025-06-01T13:51:37Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Flanger Plugin.png|thumb|400px|Flanger plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Flanger&#039;&#039;&#039; plugin creates a swooshing, jet-like effect by mixing the original signal with a modulated delayed copy.&lt;br /&gt;
It is very similar to the [[Manual: Chorus Plugin|Chorus plugin]], with a slightly different parameter range, and a stereo delay line (as opposed to mono in the Chorus plugin).&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Wet / Dry Mix ===&lt;br /&gt;
* Controls the balance between the original (dry) signal and the processed (wet) flanged signal. At 0% wet, only the original signal is heard. At 100% wet, only the flanged signal is audible. Values in between blend the two signals, where values around 50% provide the most pronounced flanging effect due to equal mixing of the signals.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0% to 100% wet&lt;br /&gt;
&lt;br /&gt;
=== Wave Shape ===&lt;br /&gt;
* Selects the waveform used by the low-frequency oscillator (LFO) for modulation. &#039;&#039;&#039;Sine&#039;&#039;&#039; smoothly sweeps the frequency of the flanged signal up and down. &#039;&#039;&#039;Square&#039;&#039;&#039; results in a more abrupt, stepped modulation that can sound more mechanical or rhythmic.&lt;br /&gt;
* &#039;&#039;&#039;Options&#039;&#039;&#039;: Square, Sine&lt;br /&gt;
&lt;br /&gt;
=== Frequency ===&lt;br /&gt;
* Sets the rate of the low-frequency oscillator (LFO) that modulates the flanger effect. Lower frequencies create a slow, subtle movement, while higher frequencies produce faster, more rapid modulation.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0 Hz to 10 Hz&lt;br /&gt;
&lt;br /&gt;
=== Depth ===&lt;br /&gt;
* Determines the intensity of the pitch modulation applied to the delayed signal. Higher values create more pronounced flanger effects with greater pitch variation, while lower values produce subtler modulation. The effective depth is limited by the &#039;&#039;&#039;Delay&#039;&#039;&#039; parameter; if the delay is small, the depth is also more limited.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0% to 100%&lt;br /&gt;
&lt;br /&gt;
=== Phase ===&lt;br /&gt;
* Sets the phase difference between the left and right channel modulation. This parameter controls the stereo width and movement of the flanger effect. 0° keeps both channels in phase, while ±180° creates maximum stereo separation.&lt;br /&gt;
* &#039;&#039;&#039;Options&#039;&#039;&#039;: -180°, -90°, 0°, 90°, 180°&lt;br /&gt;
&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
* Controls how much of the processed signal is fed back into the input. Negative values create phase-inverted feedback. Higher absolute values produce more intense, resonating effects.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: -99% to +99%&lt;br /&gt;
&lt;br /&gt;
=== Delay ===&lt;br /&gt;
* Sets the delay time for the flanger effect. This determines the timing offset between the original and processed signals. Longer delays create a more spacious sound, while shorter delays produce intense phasing.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0ms to 4ms&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Flanger Plugin]]&lt;br /&gt;
[[Category:Plugins|Flanger Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|Flanger Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Echo_Plugin&amp;diff=4917</id>
		<title>Manual: Echo Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Echo_Plugin&amp;diff=4917"/>
		<updated>2025-06-01T13:51:30Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Echo Plugin.png|thumb|400px|Echo plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Echo&#039;&#039;&#039; plugin creates delayed repetitions of the input signal, ranging from subtle slap-back delays to long stereo echoes.&lt;br /&gt;
While echos can traditionally be achieved in modules by inserting delayed and attenuated copies of pattern notes, the Echo plugin offers more flexible control over the resulting echo, and avoids having to update echo pattern data any time the original notes are modified, at the expense of not being synchronized to the module’s tempo.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Wet / Dry Mix ===&lt;br /&gt;
* Controls the balance between the original (dry) signal and the delayed (wet) echo. At 0% wet, only the original signal is heard. At 100% wet, only the echo is audible. Intermediate values blend the original and echo signals together.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0% wet / 100% dry to 100% wet / 0% dry&lt;br /&gt;
&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
* Determines how much of the delayed signal is fed back into the delay line to create multiple repetitions. Higher feedback values produce longer echo tails with more repetitions, while lower values create fewer repetitions. Note that the higher the feedback value, the quieter the initial echo will be.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0% to 100%&lt;br /&gt;
&lt;br /&gt;
=== Left Delay ===&lt;br /&gt;
* This controls the timing between the original signal and its echo in the left channel.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 1ms to 2,000ms&lt;br /&gt;
&lt;br /&gt;
=== Right Delay ===&lt;br /&gt;
* Sets the delay time for the right channel. When different from the left delay time, this creates a stereo effect where echoes appear to bounce between the left and right channels. Setting both channels to the same delay time creates a centered echo effect instead.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 1ms to 2,000ms&lt;br /&gt;
&lt;br /&gt;
=== Pan Delay ===&lt;br /&gt;
* When set to &#039;&#039;&#039;Yes&#039;&#039;&#039;, the echo bounces between the left and right channels, creating a ping-pong echo effect.  When set to &#039;&#039;&#039;No&#039;&#039;&#039;, the left and right channel are not mixed.&lt;br /&gt;
* &#039;&#039;&#039;Options&#039;&#039;&#039;: No, Yes&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Echo Plugin]]&lt;br /&gt;
[[Category:Plugins|Echo Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|Echo Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Distortion_Plugin&amp;diff=4916</id>
		<title>Manual: Distortion Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Distortion_Plugin&amp;diff=4916"/>
		<updated>2025-06-01T13:51:25Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Distortion Plugin.png|thumb|400px|Distortion plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Distortion&#039;&#039;&#039; plugin adds harmonic saturation and overdrive to the audio signal by deliberately clipping and reshaping the waveform.&lt;br /&gt;
The resulting effect can range from subtle saturation to aggressive, heavily distorted sounds.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Gain ===&lt;br /&gt;
* Sets the final output gain. If the signal is distorted heavily, it can be helpful to slighty reduce its gain, so that it does not over-power other instruments.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: -60 dB to 0 dB&lt;br /&gt;
&lt;br /&gt;
=== Edge ===&lt;br /&gt;
* Determines the character and intensity of the distortion effect. Lower values produce softer distortion with gentle clipping, while higher values create harsher, more aggressive distortion with hard clipping characteristics. This parameter shapes the overall tone and harmonic content of the distorted signal.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0 to 100&lt;br /&gt;
&lt;br /&gt;
=== Pre Lowpass Cutoff ===&lt;br /&gt;
* Sets the cutoff frequency of the lowpass filter applied to the signal before applying distortion. This filter removes high-frequency content that might cause harsh artifacts when distorted. Lower cutoff frequencies result in warmer, more muffled distortion, while higher frequencies preserve more brightness and edge.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 100 Hz to 8,000 Hz&lt;br /&gt;
&lt;br /&gt;
=== Post EQ Center Frequency ===&lt;br /&gt;
* Sets the cutoff frequency of the resonant lowpass filter applied after the distortion processing. This filter can be used take away some of the high frequencies added by the distortion, and to emphasize specific frequencies in the distorted signal, helping to shape the final tonal character of the sound.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 100 Hz to 8,000 Hz&lt;br /&gt;
&lt;br /&gt;
=== Post EQ Bandwidth ===&lt;br /&gt;
* Controls the bandwidth of the resonant lowpass filter applied after the distortion processing. A narrower bandwidth removes more high frequencies but also boost the filter’s center frequency, while a wider bandwidth results in a softer lowpass filter with less resonance.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 100 Hz to 8,000 Hz&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Distortion Plugin]]&lt;br /&gt;
[[Category:Plugins|Distortion Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|Distortion Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_DigiBooster_Pro_Echo_Plugin&amp;diff=4915</id>
		<title>Manual: DigiBooster Pro Echo Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_DigiBooster_Pro_Echo_Plugin&amp;diff=4915"/>
		<updated>2025-06-01T13:51:21Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:DigiBooster Pro Echo Plugin.png|thumb|400px|DigiBooster Pro Echo plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;DigiBooster Pro Echo&#039;&#039;&#039; plugin is a specialized echo implementation provided primarily for accurate playback of DBM modules by emulating the echo DSP effect of the DigiBooster Pro tracker.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Delay ===&lt;br /&gt;
* Sets the delay time of the echo. Setting the delay to the lowest-possible value results in a delay of 334ms instead, emulating a bug in the original DigiBooster Pro DSP code.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 2ms to 510ms&lt;br /&gt;
&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
* Determines how much of the delayed signal is fed back into the delay line to create multiple repetitions. Higher feedback values produce longer echo tails with more repetitions, while lower values create fewer repetitions. Note that the higher the feedback value, the quieter the initial echo will be.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0 to 255&lt;br /&gt;
&lt;br /&gt;
=== Wet / Dry Ratio ===&lt;br /&gt;
* Controls the balance between the original (dry) signal and the delayed (wet) echo effect. At 0% wet, only the original signal is heard. At 100% wet, only the echo is audible. Intermediate values blend the original and echoed signals together.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0% wet / 100% dry to 100% wet / 0% dry&lt;br /&gt;
&lt;br /&gt;
=== Cross Echo ===&lt;br /&gt;
* Controls how much the delayed signal is mixed between the left and right channels. At a value of 0, there is no cross-channel mixing and the echo appears in the same channel as the source. As the value increases, more of the echo signal is sent to the opposite channel and less to the source channel. At maximum (255), the echo completely swaps between channels, creating a ping-pong effect.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0 (no mixing) to 255 (echo completely swaps between channels)&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|DigiBooster Pro Echo Plugin]]&lt;br /&gt;
[[Category:Plugins|DigiBooster Pro Echo Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|DigiBooster Pro Echo Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
	<entry>
		<id>https://wiki.openmpt.org/index.php?title=Manual:_Compressor_Plugin&amp;diff=4914</id>
		<title>Manual: Compressor Plugin</title>
		<link rel="alternate" type="text/html" href="https://wiki.openmpt.org/index.php?title=Manual:_Compressor_Plugin&amp;diff=4914"/>
		<updated>2025-06-01T13:51:14Z</updated>

		<summary type="html">&lt;p&gt;Saga Musix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Compressor Plugin.png|thumb|400px|Compressor plugin window]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Compressor&#039;&#039;&#039; plugin reduces the dynamic range of audio signals by automatically lowering the volume of loud sounds and optionally adjusting the overall gain of the compressed signal.&lt;br /&gt;
Compressors are an essential tool for achieving consistent volume levels, adding punch to drums, and removing peaks in the signal.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Gain ===&lt;br /&gt;
* Sets the final output gain. Use this for example to compensate for volume reduction caused by compression.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: -60 dB to +60 dB&lt;br /&gt;
&lt;br /&gt;
=== Attack ===&lt;br /&gt;
* Determines how quickly the compressor responds to signals that exceed the threshold. Faster attack times (lower values) immediately act on loud transients, while slower attack times allow more of the initial transient to pass through before compression begins.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0.01ms to 500ms&lt;br /&gt;
&lt;br /&gt;
=== Release ===&lt;br /&gt;
* Controls how quickly or slowly the compressor recovers from compressing the signal after the signal drops below the threshold again. Fast release times restore the signal quickly but may cause undesired pumping effects, while slow release times provide smoother compression but may over-compress subsequent sounds.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 50ms to 3,000ms&lt;br /&gt;
&lt;br /&gt;
=== Threshold ===&lt;br /&gt;
* When the signal level is above the threshold, the signal will be compressed according to the ratio setting. Lower threshold values mean more of the signal will be compressed, while higher values only compress the loudest peaks.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: -60 dB to 0 dB&lt;br /&gt;
&lt;br /&gt;
=== Ratio ===&lt;br /&gt;
* Determines the amount of compression applied to signals above the threshold. A ratio of 1:1 means no compression, while higher ratios provide more aggressive compression. A ratio of &#039;&#039;x&#039;&#039;:1 means that for every &#039;&#039;x&#039;&#039; dB above the threshold, the compressor increases the output by 1 dB.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 1:1 to 100:1&lt;br /&gt;
&lt;br /&gt;
=== Predelay ===&lt;br /&gt;
* Introduces a small delay between when the compressor “looks” at the input signal to determine whether it is above the threshold or not, and when it applies them to the output signal. This allows the compressor to “look ahead” and begin compression slightly before loud transients occur, resulting in more consistent compression of fast attacks.&lt;br /&gt;
* &#039;&#039;&#039;Range&#039;&#039;&#039;: 0ms to 4ms&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|Compressor Plugin]]&lt;br /&gt;
[[Category:Plugins|Compressor Plugin]]&lt;br /&gt;
[[Category:Built-In Plugins|Compressor Plugin]]&lt;/div&gt;</summary>
		<author><name>Saga Musix</name></author>
	</entry>
</feed>