A music tracker, sample workshop, effects mixer and audio-reactive visual performance environment in one browser application.
Maxxlorr Tracker (MLT) makes music through patterns: vertically arranged rows of notes, instruments, volumes and compact commands. Patterns form a song in the sequencer. Instead of hiding musical instructions behind a timeline, the tracker keeps them visible and editable, down to individual ticks.
It brings this classic method together with multi-note tracks, graphical command editing, stereo sampling, FM instruments, native DSP racks, MIDI control and the Visual Lab. Use it to compose a piece from scratch, study and rework a tracker module, design an instrument, build a live performance, or turn a composition into sound and moving images.
MLT 5.04: Pattern view: a generated six-track demonstration, with a three-note chord track, a two-command track, instrument colours and graphical effect controls.
Who it is for
Tracker musicians who want precise, compact composition and modern sound-design tools.
Producers who want sample editing, synthesis, routing and modulation alongside pattern writing.
Performers who want MIDI-mapped controls and audio-reactive visuals within the same project.
Students exploring sequencing, digital audio, file formats, synthesis and browser-based interfaces.
This guide describes version 5.04. It documents available controls and implemented workflows, not a claim of perfect compatibility with every historical tracker or browser. The screenshots show the real application with an original generated demonstration song; they are not interface mockups.
02 / At a glance
Area
Capacity or architecture
Tracks
Up to 64 tracks; one audio bus and DSP rack per track.
Columns
Up to 4 note/instrument/volume columns and 3 effect columns per track.
Patterns
Up to 256 rows per pattern; sequence positions reference patterns.
Instruments
128 instruments; up to 16 sub-samples per instrument.
Pitch range
C-0 through B-9: 120 distinct notes in MLT. Legacy exports have their own pitch limits.
Envelopes
Volume, panning, filter and pitch; up to 25 points each.
Voice continuation
Cut, Continue, Note-Off and Fade new-note actions; a bounded pool of up to 32 additional NNA voices.
Sample data
Mono or stereo; editable 8-bit/16-bit sample modes, loops, markers and sample processing.
Markers
Up to 256 markers per sub-sample, addressed as hexadecimal 00 through FF.
Racks
Up to 16 DSP blocks per track or master rack. At most 16 automatable parameters per block.
Native devices
41 current DSP and meta-device definitions; detailed controls below.
Synthesis
Two oscillators, mono/stereo generation, unison, waveform library and 128 presets.
Visual Lab
8 effect categories with 16 choices each; four assignable parameter controls per effect.
Interface
Pattern, Instrument, Sample and Mix views; collapsible side panels; 50% to 125% scale.
Project
Self-contained .MLT project storage; legacy module and MIDI interchange, audio and video export.
Note columns share a track's bus and effects. Effect columns have their own memory and a deterministic left-to-right resolution order. More columns do not create independent mixer strips.
03 / Compose and perform
Pattern editing
Enter notes using a QWERTY or AZERTY computer keyboard, or edit hexadecimal values directly. Edit mode separates writing from auditioning.
Select individual fields rather than only whole cells. Note, instrument, volume and command masks allow selective copy, paste and cut.
Move selections, transpose by semitone or octave, interpolate effects and undo pattern edits. Add or remove rows and additional note/effect columns.
Edit track names, insert or remove tracks at a chosen position, and move whole tracks with their racks and associated routing references.
Select a track from its waveform or pattern area to keep the editing cursor and the lower Track FX/Track DSP rack in context.
Use instrument auto-selection, editable instrument names, instrument duplication and reordering, and batch instrument substitutions.
Use the graphical Track FX rack to monitor command values during playback. With Edit mode off it is read-only; with Edit mode on, supported slider/knob changes can be recorded into the pattern. Four-bit commands expose the appropriate nibble range.
The sequence is also a performance surface
Add, delete, copy, paste, duplicate and reorder sequence positions. While stopped, drag a pattern number to change its assignment. Give positions a short label for song structure and Visual Lab text. Green indicators define a loop range; an orange queued position requests the next pattern without immediately abandoning the current one. The timer toggles continuous sequence following.
Transport and timing
Play, Repstart, From, Loop and Stop serve different starting contexts. BPM, Speed and LPB are separate controls: Speed retains tracker tick semantics, while lines-per-beat contributes to musical timing. Start from the editing cursor with Shift + Space. A normal Space stops a running song without switching off Edit mode; when stopped, it toggles Edit mode. Caps Lock enters Note-Off. Shift + Enter toggles fullscreen.
Lock Follow keeps the playback row in view. The pattern grid is virtualized so the interface need not rebuild every cell of a large pattern. Sticky track headers, row numbers, coloured scopes and track meters remain visual reference points.
Pattern commands are part of the instrument
Arpeggios, pitch slides, tone portamento, vibrato, tremolo, retriggers, note delays, sample offsets, envelopes, channel volume, panning and control flow can be written directly into patterns. MLT also has commands for sample-loop manipulation, markers, DSP parameters, MIDI macros and Visual Lab performance. See the complete current helper inventory below.
Composition shortcuts
Pattern block selection requires Edit ON and stopped playback, whether using the mouse or Shift + arrow keys. Switching to Edit OFF clears the range. In Edit OFF, clicks still position the navigation cursor and select the track and its lower rack, without starting a selection.
Shortcut
Action
Shift + Arrow keys
Extend/reduce selection by field or row (Edit ON).
Shift + F3
Cut selected fields.
Shift + F4
Copy selected fields.
Shift + F6
Paste at the cursor or within selected fields.
Shift + F1 / F2
Transpose down/up one semitone.
Shift + F7 / F8
Transpose the selected instrument down/up one semitone.
Shift + Keypad - / +
Transpose down/up one octave.
Shift + Keypad Enter
Audition one row, then advance by Edit Step.
Shift + Space
Start at the editing cursor / stop.
Shift + Main Enter
Toggle fullscreen.
Use either Shift key. Ctrl, Alt, AltGr and Meta must not be held. The Pattern view must be active and song playback stopped.
The Pattern length control in the fixed left dock shows its editable row count above two horizontal arrows: left decreases the length and right increases it. You can also type a value from 1 to 256. Stop playback before resizing a pattern; resizing participates in Undo/Redo.
+Row and -Row are on the static bar below the Pattern editor, immediately before Inst. Auto-select. They insert or remove a row at the editing position; they are separate from changing the pattern's total length.
Without a selection, cut/copy/transpose use the current track in the current pattern, including its visible note/effect columns. They never move DSPs or change other patterns. Paste without a selection starts at the cursor and is clipped at pattern/track boundaries. Only matching field types are pasted. Note / Instrument / Volume / Command masks apply.
Cut, paste and transposition require Edit ON. Notes stay within C-0 through B-9; Note-Off values are not transposed.
Undo and Redo: the buttons beside the editor tabs share one project history with MCP (transaction.undo, transaction.redo and history.read). Stop playback and enable Edit ON before restoring an edit. Up to eight transactions are retained across both directions; a new edit after Undo replaces the Redo branch. A slider gesture is one transaction, rather than one entry per movement.
Edits made during playback remain available after Stop. This includes recorded pattern commands, track and Master DSP adjustments, instrument controls, Mixer faders and panning, and recorded Visual Lab actions. A continuous supported control gesture groups its changes even when playback reaches another pattern. Stop can end a gesture without losing its last committed input. Undo and Redo stay unavailable until playback has stopped.
Playback advancing by itself does not add Undo entries or discard Redo. Only the manual changes and their recorded pattern destinations are retained; voices, playback position and unrelated tick-driven parameter changes are not captured as part of a manual gesture. The same eight-entry and memory limits apply to live edits.
UI edits and permitted live MCP recording use the same chronological history. When a ninth transaction is retained, the oldest is dropped: eight Undo steps then return to the state after that dropped edit, not necessarily the state before playback. Switching between Pattern, Instrument, Sample and Mix does not create another edit. MCP structural edits still require stopped playback; live DSP recording must explicitly request the live destination. After Stop, either the UI buttons or MCP can restore the retained transactions.
Sample settings such as Auto-seek can join the live-edit history. PCM replacement and heavy sample treatments require stopped playback; refusing an unsupported live treatment does not remove earlier edits. After Stop, sample treatments use the same history and retain exact sample data within its memory and storage limits. Undo restores the fields owned by an edit, not every value previously produced by replaying DSP or Visual Lab commands.
After heavy sample editing, you can resume the song and switch editors without committing another edit. Stop again before Undo or Redo. Listening after an Undo keeps the available Redo steps; only a new edit replaces that branch. In-place treatments and operations that resize a sample can share the same timeline, including stereo PCM, loop settings and markers. Eight levels are a maximum: the retained before/after sample data must also fit the shared disk quota, or a further operation can be refused.
T2L, Render synth, Populate and Splitter also join this history when their completed results are committed. Populate restores all affected sample slots and the instrument's keyboard map together. Splitter restores the destination instruments it filled, rather than storing unrelated parts of the song. These operations require stopped playback; you can listen again between Undo/Redo steps without losing the remaining Redo branch. T2L's target duration depends on both the line count and the preview note, so a low-root sample generated by Populate may require fewer target lines to stay within the permitted stretch ratio.
History is temporary and is cleared when a project is replaced. The RAM journal is limited to 32 MiB, so fewer than eight entries may fit. Large fixed-length treatments, sample replacement and resizing use browser storage in 256 KiB pages, with a shared 128 MiB disk limit. This covers trim, cut/paste, mono/stereo and bit-depth conversion, sample loading, synthesis/Populate, TFX, T2L, RP2S, optimization and visual-tool audio exported to a sub-sample. PCM, loop settings, markers and the affected model references are restored together.
A progress dialog blocks editing during preparation and restoration. The affected PCM domain is capped at 64 MiB per state, and the two stored states must fit the 128 MiB disk budget. A whole-bank or whole-project operation can therefore be refused even when its new sample is small. Storage denial, insufficient quota or an oversized operation refuses the edit or restores its original data. Save before large transformations.
Disk history is temporary, not a saved project or a way to resume Undo after reopening MLT. Dropped entries release their pages; abandoned tab data is reclaimed after its lease expires. The PCM owned by the live model and the processing tools' own working buffers are separate from the RAM journal budget. Native project controls include Audio/Perf output settings, instrument colors and AdLib editing; local browser preferences, hardware permissions and playback itself are not restored. Creating or loading another module starts a new history. Save the current module before replacing it.
Song titles, sequence labels and loop marks, sequence pattern changes and range paste/duplication share the same Undo/Redo timeline. So do sample loop settings, Auto-seek, the preview note, pattern-command insertion, MIDI recording preferences, custom LFO curves and DSP impulse-response loading/removal. Selecting a sub-sample, switching editors or changing analyzer display quality does not discard an existing Redo branch.
MIDI library replacement and Drumkit installation use the bounded sample-storage history. The old and new data must fit its limits; a large bank can be refused before installation. Restoring MIDI or Line In settings never grants new device permissions. An unavailable physical input still requires local authorization.
Envelope enable, sustain and loop switches participate in the shared history. Changing the displayed envelope does not discard preceding edits; a checkbox gesture occupies one history entry.
Typing fields, dropdowns, dialogs and Visual Lab fullscreen keep their own keyboard controls. Shift + number keys are not assigned to these shortcuts, so AZERTY numeric entry is preserved. Holding a mutation key does not repeat the modification. Shift + arrow keys can repeat for selection in Edit ON.
Row audition is available in Edit ON or OFF. STOP cancels it. One preparation can run at a time, with an eight-second row limit. It starts from a fresh audio graph: previous held voices, effect memory and DSP tails are not replayed. The nearest preceding instrument in each note column is used when omitted.
Function keys may require Fn on some keyboards. OS-reserved combinations cannot always be overridden by a browser. No other new shortcuts are added.
04 / Instruments and FM
In narrow windows, general instrument controls flow into two columns. Transposition controls and envelope settings wrap below them; scroll the editor vertically to reach the Adlib panel and keyboard. The keyboard has its own horizontal note-range scroll.
MLT 5.04: Instrument editor: general controls, envelope editing, PCM/Adlib configuration and the virtual keyboard.
PCM instruments
Each instrument maps up to 16 sub-samples across the 120-note keyboard. Set main volume and panning, finetune, fadeout, automatic vibrato speed, depth, sweep and waveform. Choose a new-note action to cut, continue, release or fade a previous voice when another note arrives on the same track. Imported legacy instruments use appropriate format-specific defaults rather than assuming polyphony.
Per-note random variationMLT 5.04: Volume, pan, cutoff and resonance variation in knob mode.
The instrument editor provides Volume swing (0-100), Pan swing (0-64, native IT units), Cutoff swing (0-100) and Resonance swing (0-100). All start at zero. Use either sliders or knobs; the four controls share a dedicated row below the general instrument settings.
Each new note draws its own variations. They remain stable while that voice plays, including its later ticks; simultaneous voices do not modify the shared instrument settings. Retriggers retain their current variation. Volume swing scales instrument gain without making a silent instrument audible. Panning is bounded to the stereo range. Filter variations need the corresponding instrument filter controls enabled and do not enable a bypassed filter. Zero base resonance remains zero.
MLT files preserve all four settings. IT export stores volume and pan swing in native instrument fields and cutoff/resonance swing in optional OpenMPT instrument extensions. OpenMPT-aware readers can restore these filter variations; original Impulse Tracker readers cannot reproduce them. IT sample-mode songs switch to instrument mode when needed to retain variations. Standard XM, MOD and S3M cannot store these instrument variations.
Volume and panning envelopes sit alongside MLT's filter and pitch envelopes. Each has up to 25 points, enable state, sustain and loop controls. Filter cutoff and resonance have independent controls; pitch envelopes alter playback pitch. The envelope panels switch type without requiring four permanently expanded editors.
Click the virtual keyboard to audition. Hold Shift while clicking to change sample mapping. Coloured key outlines identify played instruments, and envelope playheads show active voices. Instrument-list panning controls are linked to the main instrument panning control.
Adlib / OPL instruments
MLT includes FM instrument editing for Adlib material, including S3M instruments. The modulator and carrier expose operator level, multiplier, key scaling, envelopes, waveform and modulation flags, with connection and feedback controls. An Adlib-enabled instrument replaces its PCM sound source, rather than layering the two accidentally.
The GENMIDI bank supplies 128 General MIDI melodic presets and a percussion selection. FM is an alternative timbre source, not a sampled imitation of every acoustic instrument. Hardware-perfect OPL reproduction across every module is not claimed here.
Native S3M FM instruments use the Opal OPL3 engine, including their eight waveform types, tracker tuning and supported channel panning. Each instrument still feeds its track's DSP rack. The existing OPL2 and GENMIDI instrument controls remain available.
General MIDI libraries
Load a local GM.DLS or SF2 bank, use the downloadable GeneralUser-GS bank, or choose the FM bank. DLS articulations and sample-region information are converted into MLT instrument settings where supported. Drumkit generation maps percussion into sample slots. Bank conversion is constrained by MLT's instrument and sample-map capacities.
MLT 5.04: MIDI library controls: local-bank and General MIDI instrument workflows.
A browser cannot silently read a system GM.DLS file. Local bank selection needs user action. The GeneralUser-GS download uses a pinned resource with verification and caching; its licence and attribution remain relevant when redistributing bank content.
Edit mono or stereo samples with frame-level selection, zoom and editable loop boundaries. Forward and ping-pong loops have draggable start/end handles with bounds checking. Convert between mono and stereo, change sample bit depth, preview at a reference note, and undo sample changes.
Task
Tools
Editing
Cut, copy, paste, mix, trim, selection and waveform drawing.
Level and shape
Normalize, apply volume, linear/logarithmic fades, reverse, smooth and invert polarity.
Loops
Loop selection, forward/ping-pong playback, boundary dragging and loop crossfade.
Timing
T2L stretches to a chosen number of lines using song timing and reference pitch.
Resampling effects
TFX applies a chosen native track rack to sample material after checking unsupported sources and render limits; RP2S renders the current pattern into a stereo 16-bit sub-sample.
Silence
Insert silence or create a new silent sub-sample with a duration based on pattern rows.
Markers
Add/delete, drag, number, preview and stop markers; detect transients with adjustable sensitivity.
Pattern links
C2P writes the selected marker command; the offset ruler can write sample-offset commands in Edit mode.
Export
Save the selected sub-sample as WAV.
Two offset systems
The 9xx ruler follows tracker sample-offset addressing; the high-offset command can extend it when another effect column is available. The Sxx ruler spans 00 to FF. With markers, Sxx addresses a marker. Without markers, the fallback offset is floor(sampleFrames × xx / 256). Thus S40 starts one quarter of the way through an unmarked sample, not at frame 64.
Long samples and Auto-seek
Per-sample Auto-seek helps From/cursor-start reconstruct a long PCM sample that began earlier in the song. Reconstruction follows tracker state rather than merely subtracting elapsed seconds. It is bounded and cancellable. It does not promise a fully warmed history for every delay, reverb, external input or OPL voice.
Transient detection and transformation
Detect transients identifies attacks and creates sample markers, with adjustable sensitivity and a maximum of 256 markers. It does not identify musical pitches or transcribe a sample into notes.
SPLITTER provides spectral-focus separation and duration/memory controls. It is not a trained neural stem-separation service. Keep source duration and memory budget suitable for the machine; splitting cannot perfectly isolate every voice in a finished mix.
T2L stretches the sample to the number of lines in its adjacent field. The target uses song BPM, Speed, LPB timing and the selected preview note, including the sample's tuning. It is the stored frame count needed to play that duration at the preview note, not simply the duration at the sample's original rate.
MLT uses the real Signalsmith Stretch WebAssembly engine, with dense offline analysis/synthesis overlap rather than repeating grains or processing stereo channels independently. Left and right share one engine and one timeline. Durations remain exact after latency compensation. The 1x case copies the original PCM unchanged.
While processing, the T2L button becomes Cancel and shows progress. Click it to abort without changing the sample or the previous Undo. Completed stretching can be undone, including both channels and the original loop boundaries. Changing the selected sample during processing prevents the old result from overwriting the new selection.
Calculations run in a disposable Worker, leaving the interface available. A conservative 128 MiB working-memory budget and a 0.05x-20x duration-ratio limit are checked before PCM copies or output allocation. Very large requests are refused explicitly. The high-quality overlap costs more processing time, particularly in Firefox, but does not run on the interface thread.
Extreme stretching can soften attacks or change the texture. Preview the result on your material; Undo restores the previous sample.
Render track effects into a sample (TFX)
TFX applies the selected track's enabled audio DSPs, in their rack order, to the selected sample range or the whole sub-sample. It now builds the same native DSP graph used by the track rack, including its current parameters and imported impulse responses. It does not use a separate collection of simplified effects.
MLT 5.04: Review the chain before committing an edit. A refused or cancelled operation preserves both the sample and the previous Undo.
Stop song playback, choose the source track beside TFX and select a sample range if needed. Click TFX to inspect the chain, then Render.
All 32 autonomous native audio devices are supported. Disabled blocks are bypassed. Rack collapse state has no effect on processing.
Tail seconds is zero by default, preserving the current length and trimming decay. Up to 10 seconds can be appended when the selection reaches the sample end. An interior selection cannot shift the untouched material after it.
Stereo input stays stereo. A mono sample becomes stereo when the rack produces different left and right signals. Unselected PCM remains unchanged; conversion to the sample's existing bit depth happens only once, at the end.
The render excludes the master rack, channel fader, AGC, instrument pitch/envelopes and pattern automation. It uses a fresh DSP state at the stored sample rate. Inertia does not recreate an earlier song state.
The memory estimate is checked before audio allocation. The default is 96 MiB, adjustable from 16 to 256 MiB. A shorter selection or tail reduces the render cost, although the final sample replacement and Undo still need memory.
Overload is reported before writing. Lower the rack output, or explicitly enable Allow PCM clipping. TFX does not silently normalize or clip between DSPs. Undo restores the prior PCM, channel layout and loop metadata.
When TFX refuses a chain
Router, Vocoder, Voice Carver and Line In need other tracks or a live source. The five audio meta devices need song routing or note/timeline context. An enabled instance blocks the operation with an explanation, rather than silently disappearing from the result. Disable those devices deliberately, or render the complete song. Meta Visualizer changes no audio and is explicitly excluded.
Auto-tune, Reverse Delay and LoFi Mat now run their original processing loops in a shared AudioWorklet for live and offline use. This also fixes missing wet audio in Firefox offline rendering. Fixed lookahead in the Maximizer and multiband devices, plus Auto-tune's block adapter delay, is compensated by TFX. Other intrinsic or parallel-path delays remain part of the effect.
Pitch detector
Open Pitch detector in the Sample editor to estimate notes from its selected frame range, or the whole sample. Choose one to four voices, confidence threshold and minimum note duration, then Detect notes. Progress and Cancel remain available while a worker processes up to 524288 frames. Results show note names, timing and confidence; click a note to select its waveform range. Analysis never writes pattern notes or modifies PCM.
This is a harmonic spectral estimator shared with the command API, not the Basic Pitch neural model. Stereo channels are analyzed independently to avoid antiphase cancellation. Noisy sounds, transients, dense chords and very low fundamentals can be ambiguous; inspect results before using the separate command-based insertion workflow.
06 / Build sounds in the sample editor
Synth controls use as many columns as the available width permits, in both knob and slider modes. Scroll the Sample editor vertically to reach the complete synth; all parameters remain available.
The Mono Synth becomes a Stereo Synth for stereo material. Two oscillators combine familiar primitive waveforms with imported AKWF waveforms. Oscillator previews make the source shape visible. The AKWF browser supports browsing, auditioning and assigning library waves to either oscillator.
Oscillator balance, detuning and noise; filter mode, cutoff, resonance and envelope influence.
Amplitude ADSR, LFO rate and pitch/filter modulation, and drive.
Up to seven unison voices, stereo spread, drift and oscillator panning for width beyond duplicated mono.
Slider or knob editing, keyboard-armed audition and selectable generation quality.
Frame-length control for short looping cycles or substantially longer sounds; existing selection/sample duration can supply the starting length.
Preview puts generated audio on the sample clipboard. Render to Slot mixes into a pre-existing selection; without a selection it renders the sample content. Undo provides a way back.
Populate generates and maps 16 sub-samples across the instrument keyboard. This replaces the instrument's sample population, so preserve a copy before using it.
Loop preparation and crossfading reduce boundary clicks. Very short cycles and extreme processing can still change the perceived spectrum or expose discontinuities; audition the loop at the intended pitch.
07 / Context-aware arrangement
MLT 5.04: The arrangement assistant in the right panel, alongside the tracker and its current musical context.
The assistant generates Lead, Bass, Chords, Drums or Ensemble proposals. It can use notes in the current pattern and preceding sequence positions, follow the harmony, avoid clashes or ignore context. Key, scale, style, density, register, complexity, seed and variation shape the result.
Its approach combines rules and templates, shared harmonic planning, bounded voice-leading search, motifs, bass/rhythm relationships, fills and optional Euclidean rhythm ideas. It is not an unrestricted neural composition engine. A repeatable seed makes a proposal reproducible; the seed randomizer explores alternatives.
Generate, inspect, audition, vary, apply and undo. Preserve or replace material within the chosen pattern/selection and field masks. Applying requires stopped playback and Edit mode. The available palette includes 21 scale collections and 12 style families; these are starting points, not a promise to model every musical genre.
08 / Mixing, routing and automation
Mixer strips keep a fixed usable width. Scroll horizontally for later tracks and scroll each DSP matrix vertically for longer chains. The lower half of each strip remains reserved for meters, channel volume and panning.
MLT 5.04: Mix view: channel strips, DSP matrices, stereo meters, channel-volume faders and pan controls.
The mixer presents named tracks with Mute, Solo and Surround, ordered DSP blocks, stereo RMS meters, channel-volume faders and panning. Channel volume ranges from 0 to 64, or hexadecimal 00–40, matching the channel-volume role rather than a 0–128 global-volume scale.
Select anywhere in a strip to change the active track. Edit its name, swap adjacent devices with the diamonds, or drag a device to a precise rack position. Cross-track dragging and arrow moves transfer a device when the destination is valid. Destination feedback prevents duplicate or impossible installations; associated command and meta-routing references are updated. A successful structural move may stop transport for a safe reroute.
MLT 5.04: Track DSP rack: native effects, controls, presets and the selected analysis surface.Song Levels: initial volume and source preamps
Open SONG & MEDIA on the left and scroll to SONG LEVELS, immediately above OPTIMIZE. These settings belong to the song, not the final Master output.
Setting
Use
Initial Global Volume
0–128. Sets the starting volume for song playback and stopped instrument audition. Editing this initial value does not override a global-volume command already running in the song. Pattern commands can subsequently change the runtime global volume without rewriting the saved initial value.
Sample Volume
0–2000. Controls the PCM preamp before track DSPs. Imported songs retain their format's default mix policy; new native songs use 128 for unity PCM gain. This is not the volume of one instrument, nor the destructive Apply Volume operation in Sample Editor.
Synth Volume
0–2000; 48 is unity. Controls FM/AdLib output after chip synthesis and before track DSPs, without changing the operators' modulation or timbre. It does not attenuate PCM. Sounds rendered to slots by Mono/Stereo Synth are samples and therefore use Sample Volume.
Zero mutes the corresponding source; high preamp values can clip. Master Volume and AGC are separate output controls. PCM and Synth preamp edits are consumed by the normal playback/preview scheduling; no additional refresh timer is used.
Independent song and source levels in the left panel.
File compatibility: MLT preserves all three values. IT stores initial global volume and sample preamp in its header; OpenMPT-compatible song extensions retain Synth Volume, preamps beyond the native header range and finer initial-volume values. XM uses OpenMPT-compatible extensions for these settings; classic FT2 players may ignore them. S3M retains its supported initial-volume and sample-preamp fields, with legacy quantization and hardware-profile limits, but has no separate Synth Volume field. MOD has no native storage for these song-level settings. Export warns before incompatible MOD/S3M delivery; keep an MLT or compatible IT copy when these levels matter. No automatic PCM baking is performed.
LFO, Signal Follower, Velocity Tracker, Key Tracker and Cerberus route modulation through a small source-to-target model. Routes point to eligible devices to the right in the same track or to later tracks, avoiding direct cycles. Invalidated targets can become Undefined. Cerberus has three destinations. Meta Visualizer controls Visual Lab selection, enable state and parameter bindings.
Pattern automation
Direct four-hex-digit track DSP commands identify a block, a parameter and an 8-bit value. Master-rack focus/value commands use I and J. Automation indexes span 0–F, with a maximum of 16 automatable parameters; a device can have additional non-automatable controls. Inertia changes transition speed: lower means smoother/slower movement, higher means faster changes. Router and Meta Visualizer do not add Inertia.
Audio routing and sidechains
Router sends a track's audio to a later track, optionally muting its direct post-effects output. Vocoder 24 uses the current track as carrier and a preceding router as modulator. Voice Carver performs 24-band sidechain spectral reduction. Line In mixes a permitted capture source into a track; a source cannot be assigned redundantly across Line In devices.
Amplify uses the active tracker mixing convention. Native FT2 playback retains its x1-x32 scale (x10 by default), without an additional default sample preamp. Imported IT, S3M, MOD and OpenMPT-compatible XM profiles retain their stored mix levels; x10 is unity output trim after those levels. Explicit Sample Volume and Mixer volume settings remain effective. OpenMPT and FT2 can have different reference loudness even with unchanged notes. This is not peak normalization; higher amplification can still overload a loud mix. Use the AGC or a limiter when needed.
09 / Every native device
This inventory is extracted from the running 4.80 device definitions, not from historical requests. Expand a device for its controls, ranges, automation indexes and current preset names. Some targets and parameter labels are context-dependent; a meta-device target selector is populated by eligible installed devices.
Stereo-linked, phase-compensated three-band compression without automatic makeup; reconstructed-peak protection follows Output and Mix.
Control
Range / choices
Default
Automation index
Low X
60 to 1200 Hz
180
0
High X
1200 to 12000 Hz
4200
1
Low Threshold
-60 to 0 dB
-18
2
Mid Threshold
-60 to 0 dB
-16
3
High Threshold
-60 to 0 dB
-14
4
Low Ratio
1 to 20 :1
2
5
Mid Ratio
1 to 20 :1
1.8
6
High Ratio
1 to 20 :1
1.6
7
Attack
0.1 to 100 ms
18
8
Release
20 to 2000 ms
260
9
Soft Knee
0 to 18 dB
9
A
Final Ceiling
-6 to 0 dBTP
-1
B
Release Shape
Uniform / Frequency / Program
Frequency
C
Mix
0 to 100 %
100
D
Output
-18 to 12 dB
0
E
Inertia
0 to 100 %
72
F
Presets
Flat Three-Band
Transparent Master
Low-End Control
Midrange Focus
High-End Tamer
Vocal Balance
Drum Bus Punch
Bass Tightener
Broadcast Control
Gentle Glue
AI Band Balance
AI Harshness Control
AI Mud Cleanup
Dense Mix Recovery
Dense Band Control
Three-Band Safety
Clean multiband dynamics
The 3-Band Compressor and Multiband Limiter now use explicit stereo-linked gain reduction, phase-compensated Linkwitz-Riley crossovers and a final lookahead peak guard. There is no browser-compressor makeup gain and no output waveshaper. Quiet signals retain their level; compression deliberately changes the balance only when a band exceeds its threshold.
MLT 5.04: Scroll the rack horizontally to reach the final controls. The new compressor ceiling replaces automatic makeup.
Disable AGC while assessing either processor. To protect the complete song, place the device last in the Master rack. Effects or gain stages after it can create new overloads.
Low X and High X set the split frequencies. Each band has its own threshold; the compressor also has independent ratios. The limiter's band thresholds are not independent output guarantees: Final Ceiling protects their summed result.
Mix blends the dry and reduced versions of the same phase-aligned bands. Mix 0% retains the crossover phase and final protection. Disable the device for actual bypass.
Output is explicit gain before final protection. The compressor no longer adds automatic makeup. Increase Output deliberately if compression needs level compensation.
Final Ceiling is protected after summing, mixing and output gain, using the Maximizer's 4x reconstructed-peak detector and conservative 0.8 dB safety margin. Latency is about 8.67 ms at 48 kHz. No new rack-wide delay compensation is provided.
Inertia remains automatable. The compressor has 16 automation targets; the limiter has 15. Sixteen named presets per device are retained and revised.
The same processing is used for live playback, WAV, RP2S and sample-editor TFX with Undo. TFX removes the fixed processing delay and preserves the selected length. Aggressive gain reduction can still pump or alter dynamics; this is not a denoiser, loudness normalizer or a true-peak meter. A crossover has unity magnitude when recombined, but is not linear phase.
3D Output 14 controls · 14 automation targets
Places this track in the MLT spatial field.
Control
Range / choices
Default
Automation index
Mode
MLT HRTF / Orbit HRTF / Equal-power
MLT HRTF
0
Azimuth L/R
-180 to 180 deg
0
1
Elevation
-90 to 90 deg
0
2
Distance
0.2 to 12 m
1.2
3
Width
0 to 220 %
100
4
Focus
0 to 100 %
55
5
Reflect
0 to 100 %
18
6
Room
1 to 18 m
4.5
7
Material
Anechoic / Curtain / Studio / Wood / Concrete
Studio
8
Height Cue
0 to 180 %
120
9
Rear Cue
0 to 200 %
150
A
Air
-10 to 10 dB
0
B
Mix
0 to 100 %
100
C
Inertia
0 to 100 %
72
D
Presets
Front Center
Close Front
Far Front
Close Rear
Far Rear
Above Head
Below Listener
Wide Front
Wide Rear
Small Room
Reflective Room
Absorptive Room
Headphone Natural
Speaker Natural
AI Spatial Relief
3D Translation Check
3D Output: orbit the listening-space view
Click the cube to rotate its view by one step, or drag horizontally and vertically to orbit. Double-click restores the initial view. Enter or Space also rotates the focused cube. Camera rotation is visual only: source azimuth, elevation, distance and the audio output remain unchanged.
Native DSPs are built into MLT. This is not a VST/AU plug-in host. HRTF positioning is a stereo/headphone technique, IT Surround uses polarity relationships, and neither implies a physical multichannel speaker output.
Alligater 13 controls · 13 automation targets
Tempo-locked stereo rhythmic gating with click-safe curved edges, swing and sixteen patterns. Not a threshold noise gate.
Control
Range / choices
Default
Automation index
Clock
Free Hz / 1/4 / 1/8 / 1/16 / 1/32 / 1/8 triplet
1/16
0
Free rate
0.05 to 40 Hz
4
1
Pattern
Four on floor / Eighths / Sixteenths / Offbeat / Trance / Tresillo / Syncopated / Breaks / Sparse / Gallop / Alternating / Half bar / Late surge / Staccato / Clusters / Closed
Sixteenths
2
Steps
4 / 8 / 16
16
3
Gate
5 to 100 %
55
4
Attack
0.1 to 50 ms
3
5
Release
0.1 to 150 ms
12
6
Depth
0 to 100 %
100
7
Swing
0 to 75 %
0
8
Stereo shift
0 to 1 steps
0
9
Mix
0 to 100 %
100
A
Output
-18 to 12 dB
0
B
Inertia
0 to 100 %
72
C
Presets
Clean sixteenths
Soft eighths
Offbeat chop
Trance pulse
Swung sixteenths
Tresillo motion
Syncopated pad
Broken rhythm
Wide ping gate
Stereo offbeat
Sparse breaths
Galloping lead
Alternating bars
Half-bar swell
Late surge
Cluster texture
Alligater: rhythmic amplitude gating
Alligater is a rhythmic gate, distinct from the threshold-based Gate. Sixteen named patterns, 4/8/16-step lengths, musical or free-rate timing, duty, swing and stereo phase offset shape a gain envelope. Attack and Release soften its edges. Depth and linear Dry/Wet preserve explicit control over attenuation; Output is the only deliberate level increase. Inertia smooths continuous control changes. The device has thirteen automation targets including Inertia and sixteen presets.
Live racks follow scheduled tempo ticks. TFX uses the same native processor at the current or explicitly supplied fixed BPM, without AGC or normalization. It does not replay song tempo automation. Depth zero or fully dry Mix preserves the input at 0 dB Output.
Autotune 14 controls · 13 automation targets
YIN pitch tracking with confidence gating, scale hysteresis, transient protection and three-grain pitch correction.
Control
Range / choices
Default
Automation index
Key
C / C# / D / D# / E / F / F# / G / G# / A / A# / B
C
0
Scale
Chromatic / Major / Minor / Harmonic Minor / Melodic Minor / Dorian / Mixolydian / Pentatonic
Valve-inspired preamp and push-pull power stage with dynamic bias/supply sag, then short cabinet convolution. Built-in cabinets are synthetic models; load a measured mono/stereo WAV IR for a captured speaker/microphone response. Cabinet Only bypasses the amplifier. Quality and cabinet selection are manual settings.
Control
Range / choices
Default
Automation index
Amplifier
Clean combo / British crunch / Cascaded lead / Cabinet only
British crunch
0
Preamp
0 to 42 dB
16
1
Bass
-12 to 12 dB
0
2
Middle
-12 to 12 dB
0
3
Treble
-12 to 12 dB
0
4
Presence
-9 to 9 dB
0
5
Power
0 to 100 %
35
6
Supply sag
0 to 100 %
35
7
Cabinet
Model: open 1x12 / Model: closed 4x12 / Model: bright 2x12 / Model: bass 4x10 / Loaded WAV IR / No cabinet
Model: closed 4x12
Manual
Off-axis
0 to 100 %
25
8
Low cut
20 to 250 Hz
35
9
High cut
2000 to 18000 Hz
14000
A
Oversample
2x economical / 4x high
4x high
Manual
Mix
0 to 100 %
100
B
Output
-30 to 6 dB
-2
C
Inertia
0 to 100 %
72
D
Presets
Edge of breakup
Open-back clean
Glass chime
Warm jazz combo
Small combo pushed
British rhythm
Singing lead
Tight high gain
Vintage power bloom
Dark doom stack
Bass cabinet clean
Bass parallel grit
Synth stack
Drum room crunch
Speaker only
External cabinet feed
Cabinet Simulator: preamp and impulse responses
An amplifier is more than a tone filter, and a cabinet impulse response is not an amplifier. This native track/Master device combines nonlinear, valve-inspired preamp stages, dynamic bias, a push-pull power-stage approximation and supply sag with short cabinet convolution.
MLT 5.04: Current 5.04 track rack, knob view at 100% scale. Scroll the rack horizontally for cabinet, microphone, mix, output and Inertia controls.
Start here
Enable Edit mode, open a Track DSP or Master rack, and choose Cabinet Simulator in its helper.
Enable the inserted block using its bypass/power control. Start with Open-back clean, British rhythm or Singing lead.
Use Preamp for preamp drive, Power for power-stage drive, Supply sag for dynamic compression, and Inertia for parameter transition speed. Compare at similar output levels.
Choose one of the four built-in cabinet models. For a captured speaker/microphone response, stop playback and use Load IR with a mono/stereo WAV of up to 500 ms. Clear IR restores a built-in model.
Choose Cabinet only when an upstream source already supplies the amplifier sound. Save as .MLT to retain the DSP and embedded IR.
The 16 presets cover clean combos, chime, jazz, crunch, lead, bass, synths, drums and cabinet-only processing. Oversample offers 2x economical and 4x high quality. There are 16 controls, including 14 automation targets; cabinet choice and oversampling are manual. Presets retain a loaded IR asset, but may select a built-in model instead.
Native browser audio nodes process the signal, with no per-sample JavaScript. Built-in IR kernels are cached, changes crossfade, and removal disposes the audio graph. Imported IRs are bounded and stored inside native projects. Hardware-rate changes use windowed-sinc IR resampling.
The built-in cabinets are original synthetic models, not measured commercial captures. The amplifier is a reduced-order valve-inspired model, not an exact clone of a particular physical amplifier. An external IR supplies a linear cabinet response; it does not capture nonlinear valve dynamics. Use the output meters: high-gain input or strong IRs can clip.
Cerberus 17 controls · 7 automation targets
Routes one meta source to three installed DSP parameters on this track.
Control
Range / choices
Default
Automation index
Source Meta
Meta LFO / Signal Follower / Velocity Tracker / Key Tracker
Free rate / Gate / Attack / Release / Depth / Swing / Stereo shift / Mix / Output / Inertia / Gain / Panning / Offset / HP Cutoff / Low Gain / Mid Gain / Mid Freq / Mid Q / Hi Gain / 31 / 63 / 125 / 250 / 500 / 1k / 2k / 4k / 8k / 16k / Q / 60 / 12k / Azimuth L/R / Elevation / Distance / Width / Focus / Reflect / Room / Height Cue / Rear Cue / Air / Frequency / Drive / Harmonics / Color / Peak Guard / Air Limit / Amount / Carrier Note / Transpose / AM Bias / Stereo Phase / Low Cut / Anti-Alias / Tone / Bit Depth / TPDF Dither / Noise Shape / Clock Jitter / Reconstruction / Stereo Link / L Delay / R Delay / L Feedback / R Feedback / Send / Thresh / Hold / Floor / Feedback / Delay / Phase / Amplitude / Filter A / Filter B / Filter C / Ceiling / Bass Width / Bass Split / Decorrelation / Mono Safety / Balance / Damping / Stereo Spread / Resonance / Ripple / Low X / High X / Low Threshold / Mid Threshold / High Threshold / Low Ratio / Mid Ratio / High Ratio / Soft Knee
Manual
Amount C
-100 to 100 %
0
3
Min
0 to 100 %
0
4
Max
0 to 100 %
100
5
Inertia
0 to 100 %
72
6
Presets
Default
Preset 02
Preset 03
Preset 04
Preset 05
Preset 06
Preset 07
Preset 08
Preset 09
Preset 10
Preset 11
Preset 12
Preset 13
Preset 14
Preset 15
Preset 16
Chorus 7 controls · 7 automation targets
Short modulated delay for widening.
Control
Range / choices
Default
Automation index
Rate
0.01 to 12 Hz
0.65
0
Depth
0.1 to 30 ms
8
1
Feedback
-95 to 95 %
8
2
Delay
1 to 60 ms
18
3
Dry/Wet
0 to 100 %
35
4
Phase
0 to 360 deg
90
5
Inertia
0 to 100 %
72
6
Presets
Subtle Chorus
Classic Chorus
Wide Chorus
Slow Ensemble
Fast Ensemble
Vocal Double
Guitar Chorus
Synth Chorus
Bass-Safe Chorus
Dark Chorus
Bright Chorus
Deep Modulation
AI Width Restore
AI Static Relief
Vintage Ensemble
Chorus Phase Check
Comb Filter 10 controls · 9 automation targets
Stereo tuned feedback comb with fractional delay, damping, drive, polarity and width control.
Control
Range / choices
Default
Automation index
Note
0 to 119
48
0
Transpose
-48 to 48 st
0
1
Feedback
-98 to 98 %
32
2
Damping
200 to 20000 Hz
12000
3
Stereo Spread
-50 to 50 cent
0
4
Drive
0 to 18 dB
0
5
Dry/Wet
0 to 100 %
45
6
Output
-18 to 6 dB
0
7
Quality
Eco / 2x / 4x
2x
Manual
Inertia
0 to 100 %
72
8
Presets
Neutral Resonator
C2 Wooden Resonance
C3 String Resonance
C4 Metallic Resonance
Negative Feedback Hollow
Wide Stereo Resonator
Dark Damped Comb
Bright Tight Comb
Percussion Body
Plucked String Body
Robot Formant
Short Metallic Room
AI Body Restore
AI Static Breakup
Extreme Resonance
Comb Safety Check
Compressor 10 controls · 10 automation targets
Stereo-linked compression without automatic makeup or coloration; SC HPF filters only the detector. Attack permits transients: use a limiter for a strict ceiling.
Control
Range / choices
Default
Automation index
Threshold
-80 to 0 dB
-18
0
Ratio
1 to 20 :1
4
1
Attack
0.1 to 100 ms
10
2
Release
1 to 500 ms
80
3
Knee
0 to 8 dB
2
4
Slew
1 to 150 ms
20
5
SC HPF
20 to 500 Hz
60
6
Makeup
0 to 30 dB
0
7
Mix
0 to 100 %
100
8
Inertia
0 to 100 %
72
9
Presets
Default Control
Transparent Leveler
Vocal Natural
Bass Firm
Drum Punch
Bus Glue
Parallel Smash
Peak Tamer
Soft Knee Master
Fast Percussion
Slow Program
Podcast Leveler
AI Dynamics Repair
AI Pump Reduction
Dense Mix Control
Strong Compression
Compressor: transparent stereo-linked dynamics
The simple Compressor reduces level above Threshold using Ratio, a soft Knee and Attack/Release smoothing. Slew controls detector-power smoothing in milliseconds. SC HPF filters only the detector: bass remains in the audible signal. Both channels use the same gain reduction to preserve the stereo balance.
There is no automatic makeup, saturation or clipping stage. Ratio 1:1 with Makeup 0 dB is unity; signals below the knee are unchanged. Makeup is an explicit gain increase on the compressed branch. Mix blends aligned dry and compressed signals with linear weights. A low Mix deliberately retains more uncompressed signal.
Attack and detector smoothing allow initial transients through. A compressor is not a ceiling limiter: for guaranteed peak control, place a Maximizer or Limiter after it. Disable AGC when comparing level, compression or transparency; otherwise AGC can hide the result.
Live racks, song rendering and TFX use the same canonical processor and parameter interpretation. TFX waits for initialization and releases the processor after rendering; it does not normalize the result or add a second compressor. Static TFX starts with a fresh detector, unlike a continuously running song. Inertia smooths subsequent parameter changes without rebuilding the graph.
MLT 5.04 simple Compressor with ten controls including InertiaDC Offset 6 controls · 6 automation targets
Adds or removes DC offset on the signal.
Control
Range / choices
Default
Automation index
Mode
Remove DC / Add DC
Remove DC
0
Offset
-25 to 25 %
0
1
HP Cutoff
2 to 30 Hz
8
2
Mix
0 to 100 %
100
3
Output
-12 to 6 dB
0
4
Inertia
0 to 100 %
72
5
Presets
Remove DC 5 Hz
Remove DC 8 Hz
Remove DC 12 Hz
Remove DC 20 Hz
Gentle DC Block
Full DC Block
Parallel DC Block
Low-End Safe Block
Add Positive 1%
Add Negative 1%
Add Positive 5%
Add Negative 5%
Calibration Positive
Calibration Negative
Analyzer Test
DC Safety Check
Delay 8 controls · 8 automation targets
Stereo delay with feedback and send control.
Control
Range / choices
Default
Automation index
L Delay
1 to 2000 ms
180
0
R Delay
1 to 2000 ms
240
1
L Feedback
0 to 96 %
22
2
R Feedback
0 to 96 %
22
3
Send
0 to 100 %
24
4
Line Sync
Off / On
false
5
Mute Source
Off / On
false
6
Inertia
0 to 100 %
72
7
Presets
Short Stereo
Slapback
Quarter Echo
Dotted Echo
Wide Stereo Echo
Left Lead Echo
Right Lead Echo
Soft Feedback
Long Feedback
Dry Tap
Wet Tap
Dub Echo
AI Space Builder
Transition Echo
Rhythmic Stereo
Delay Safety Check
Distortion 15 controls · 13 automation targets
Two-stage pedal distortion: silicon diodes, feedback overdrive, cascaded fuzz and LED crunch, plus digital Shape/Razor/Fold/Shift. Dynamic bias, supply sag, tightness, tone and body. Model and oversampling are manual; use Cabinet Simulator after this device for a speaker response.
Distortion now provides four pedal-inspired families: Silicon drive, Feedback overdrive, Cascaded fuzz and LED crunch. Shape, Razor, Fold and Shift remain available for digital sound design. Two nonlinear stages, frequency-dependent drive, asymmetric junctions, dynamic bias and supply sag shape the response to the input rather than merely changing its level.
MLT 5.04: Actual knob view at 100% scale. Scroll horizontally for the remaining controls. Both sliders and knobs were checked from 50 to 125%.
Enable Edit mode, insert Distortion from the Track DSP or Master helper, and enable the block.
Start with Silicon rhythm, Mid-forward drive, Sustaining fuzz or Open LED crunch. Lower the source level to hear how the distortion cleans up; raise Drive for stronger clipping.
Tightness reduces bass entering the clipping stages. Pre Tone changes which frequencies drive them; Body and Post Color shape the output. Dynamic Bias adjusts signal-dependent asymmetry. Supply sag softens level and headroom under load.
Gain Comp. reduces the calibrated level increase without reducing drive itself. Inertia smooths automated movements. Circuit and Quality are manual choices; the other 13 controls are automation targets.
For a speaker/microphone sound, place Cabinet Simulator after Distortion and choose Cabinet only. A pedal is not a speaker simulator; a full amplifier after it creates additional saturation.
There are 16 new presets and native 2x/4x oversampling. Circuit changes crossfade; rapid changes coalesce. Sample-editor TFX uses this same stereo audio graph with Undo, not the earlier simplified waveshaper. TFX reserves an additional PCM working budget of 96 MiB and rejects an oversized selection before starting this render.
Level-matched comparison WAV: previous default at 0 s; Silicon rhythm at 4.5 s; Mid-forward drive at 9 s; Sustaining fuzz at 13.5 s; Open LED crunch at 18 s; Pedal into Cabinet at 22.5 s. The source is an original synthetic pluck, not a guitar recording.
These are circuit-inspired models, not exact replicas of branded pedals. Adjust input drive and output level to suit the source.
DSP Filter 10 controls · 7 automation targets
Unified analog and digital filter with native cascaded sections, smooth automation and oversampled nonlinear analog stages.
Morphs through sixteen vowel resonances with controllable articulation and transition speed.
Control
Range / choices
Default
Automation index
Vowel
0 i / 1 y / 2 u / 3 e / 4 close oe / 5 o / 6 schwa / 7 epsilon / 8 nasal epsilon / 9 oe / A nasal oe / B open o / C nasal open o / D a / E back a / F nasal back a
0 i
0
Clarity
0 to 100 %
72
1
Mix
0 to 100 %
100
2
Output
-18 to 18 dB
-1
3
Inertia
0 to 100 %
72
4
Presets
Easy Formants Default
Easy Formants Transparent
Easy Formants Gentle
Easy Formants Warm
Easy Formants Bright
Easy Formants Deep
Easy Formants Tight
Easy Formants Wide
Easy Formants Narrow
Easy Formants Rhythmic
Easy Formants AI Cleanup
Easy Formants AI Restore
Easy Formants Mix Polish
Easy Formants Creative
Easy Formants Strong
Easy Formants Safety Check
EQ 5 9 controls · 9 automation targets
Five-band graphic equalizer.
Control
Range / choices
Default
Automation index
60
-18 to 18 dB
0
0
250
-18 to 18 dB
0
1
1k
-18 to 18 dB
0
2
4k
-18 to 18 dB
0
3
12k
-18 to 18 dB
0
4
Q
0.35 to 4
1
5
Field
LR / L / R / M / S
LR
6
Output
-12 to 12 dB
0
7
Inertia
0 to 100 %
72
8
Presets
Flat Five-Band
Warm Tilt
Bright Tilt
Bass Tight
Low-Mid Clear
Vocal Forward
Presence Soft
Air Lift
Drum Punch EQ
Synth Focus EQ
Radio Curve
Club Curve
AI Broad Balance
AI Dullness Repair
AI Harshness Repair
Five-Band Check
Exciter 13 controls · 12 automation targets
Adds only the generated high-frequency harmonic residue while preserving the original signal and its transients.
Control
Range / choices
Default
Automation index
Frequency
800 to 16000 Hz
4200
0
Slope
12 dB/oct / 24 dB/oct
24 dB/oct
1
Character
Smooth / Balanced / Odd / Even
Smooth
2
Drive
0 to 18 dB
6
3
Harmonics
0 to 100 %
32
4
Color
-100 to 100 %
10
5
Peak Guard
0 to 100 %
45
6
Air Limit
6000 to 22000 Hz
18000
7
Quality
Eco / Normal / High
Normal
Manual
Amount
0 to 100 %
18
8
Mix
0 to 100 %
100
9
Output
-12 to 6 dB
0
A
Inertia
0 to 100 %
72
B
Presets
Exciter Default
Exciter Transparent
Exciter Gentle
Exciter Warm
Exciter Bright
Exciter Deep
Exciter Tight
Exciter Wide
Exciter Narrow
Exciter Rhythmic
Exciter AI Cleanup
Exciter AI Restore
Exciter Mix Polish
Exciter Creative
Exciter Strong
Exciter Safety Check
Flanger 12 controls · 10 automation targets
Stereo through-zero-style flanger with phase-offset modulation and a selectable post-modulation color processor.
Control
Range / choices
Default
Automation index
Amount
-100 to 100 %
42
0
Rate
0.01 to 12 Hz
0.28
1
Amplitude
0.1 to 12 ms
3
2
Feedback
-95 to 95 %
36
3
Delay
0.1 to 20 ms
4
4
Phase
0 to 360 deg
180
5
Filter
Off / AM Sine / AM Triangle / AM Saw / AM Pulse / Distortion Shape / Distortion Fold / Decimator / Comb / Vowel / LP Clean / LP Moog / LP Diode / LP K35 / HP Clean / HP Moog / HP Diode / HP K35 / BP Clean / BP Moog / BP Diode / BP K35 / BS Clean / BS Moog / BS Diode / BS K35
Off
Manual
Filter A
0 to 100 %
62
6
Filter B
0 to 100 %
22
7
Filter C
0 to 100 %
0
8
Vowel
i / y / u / e / oe close / o / schwa / eps / eps nasal / oe / oe nasal / open o / open o nasal / a / back a / back a nasal
i
Manual
Inertia
0 to 100 %
72
9
Presets
Subtle Flange
Classic Jet
Slow Sweep
Fast Sweep
Positive Feedback
Negative Feedback
Drum Flange
Guitar Flange
Synth Flange
Short Comb Sweep
Wide Jet
Metallic Sweep
AI Motion Add
AI Static Breakup
Extreme Jet
Flanger Safety Check
Gainer 5 controls · 5 automation targets
Changes gain, pan, and channel polarity for this rack.
Free rate / Gate / Attack / Release / Depth / Swing / Stereo shift / Mix / Output / Inertia / Gain / Panning / Offset / HP Cutoff / Low Gain / Mid Gain / Mid Freq / Mid Q / Hi Gain / 31 / 63 / 125 / 250 / 500 / 1k / 2k / 4k / 8k / 16k / Q / 60 / 12k / Azimuth L/R / Elevation / Distance / Width / Focus / Reflect / Room / Height Cue / Rear Cue / Air / Frequency / Drive / Harmonics / Color / Peak Guard / Air Limit / Amount / Carrier Note / Transpose / AM Bias / Stereo Phase / Low Cut / Anti-Alias / Tone / Bit Depth / TPDF Dither / Noise Shape / Clock Jitter / Reconstruction / Stereo Link / L Delay / R Delay / L Feedback / R Feedback / Send / Thresh / Hold / Floor / Feedback / Delay / Phase / Amplitude / Filter A / Filter B / Filter C / Ceiling / Bass Width / Bass Split / Decorrelation / Mono Safety / Balance / Damping / Stereo Spread / Resonance / Ripple / Low X / High X / Low Threshold / Mid Threshold / High Threshold / Low Ratio / Mid Ratio / High Ratio / Soft Knee
Manual
Amount
-100 to 100 %
0
4
Offset
-100 to 100 %
0
5
Min
0 to 100 %
0
6
Max
0 to 100 %
100
7
Smooth
0 to 1000 ms
80
8
Polarity
Unipolar / Bipolar
Unipolar
9
Inertia
0 to 100 %
72
A
Presets
Default
Preset 02
Preset 03
Preset 04
Preset 05
Preset 06
Preset 07
Preset 08
Preset 09
Preset 10
Preset 11
Preset 12
Preset 13
Preset 14
Preset 15
Preset 16
Line In 8 controls · 7 automation targets
Mixes one unique system capture input into this track. A physical input can be claimed only once per song.
Control
Range / choices
Default
Automation index
Input Source
No source
No source
Manual
Input Gain
-60 to 24 dB
0
0
Pan
-100 to 100 %
0
1
High Pass
5 to 500 Hz
20
2
Invert Phase
Off / On
false
3
Mix
0 to 100 %
100
4
Output
-24 to 12 dB
0
5
Inertia
0 to 100 %
72
6
Presets
Line In Default
Line In Transparent
Line In Gentle
Line In Warm
Line In Bright
Line In Deep
Line In Tight
Line In Wide
Line In Narrow
Line In Rhythmic
Line In AI Cleanup
Line In AI Restore
Line In Mix Polish
Line In Creative
Line In Strong
Line In Safety Check
LofiMat 11 controls · 11 automation targets
True sample-and-hold rate reduction with TPDF dither, bounded error-feedback noise shaping, jitter, and reconstruction filtering.
Control
Range / choices
Default
Automation index
Bit Depth
4 to 16 bits
12
0
Sample Rate
1000 to 48000 Hz
22050
1
TPDF Dither
0 to 100 %
24
2
Noise Shape
0 to 100 %
20
3
Clock Jitter
0 to 100 %
0
4
Reconstruction
0 to 100 %
35
5
Stereo Link
0 to 100 %
70
6
Character
Clean PCM / Vintage Sampler / Game Console
Clean PCM
7
Mix
0 to 100 %
30
8
Output
-18 to 6 dB
0
9
Inertia
0 to 100 %
72
A
Presets
Clean 16-Bit
Warm 12-Bit
Crunchy 8-Bit
Arcade 6-Bit
Console Rate
Sampler Rate
Telephone Rate
Soft Quantize
Noisy Tape
Digital Dust
Dark Lo-Fi
Bright Lo-Fi
AI Texture Add
AI Sterile Breakup
Retro Computer
Lo-Fi Safety Check
Maximizer 7 controls · 7 automation targets
Stereo-linked 4x FIR peak detection, genuine 6 ms lookahead plus detector delay, and smooth gain reduction without clipping. Place last; disable AGC when assessing loudness.
Control
Range / choices
Default
Automation index
Boost
0 to 24 dB
3
0
Threshold
-24 to 0 dB
-3
1
Peak Release
20 to 500 ms
100
2
Program Release
100 to 3000 ms
600
3
Ceiling
-6 to 0 dBTP
-1
4
Amount
0 to 100 %
100
5
Inertia
0 to 100 %
72
6
Presets
Clean presence
Gentle master
Peak protection
Streaming headroom
Vocal forward
Acoustic balance
Piano sustain
Bass stability
Drum presence
Percussion peaks
Electronic density
Rock bus
Quiet mix lift
Transient reserve
Parallel presence
Conservative ceiling
Maximizer: transparent peak control
Raise average level while controlling peaks with stereo-linked gain reduction, not clipping or saturation. A long 4x FIR detector anticipates peaks; a finite attack and program-dependent release preserve balance and avoid intentional harmonic coloration. Six milliseconds of lookahead plus 128 detector frames add about 8.67 ms at 48 kHz. A conservative 0.8 dB detector margin means the output can remain below the requested ceiling.
MLT 5.04: Actual knob view at 100% scale. All controls are automatable, including Inertia. Sixteen curated presets are available.
Place Maximizer last in the Master FX rack when protecting the complete mix. A track Maximizer cannot prevent overload caused by summing other tracks or by effects placed after it.
Disable AGC for comparison. Also disable the global limiter and avoid downstream gain boosts. The Maximizer does not change these global settings automatically.
Start with Clean presence or Gentle master. Boost adds input gain. Lowering Threshold adds explicit makeup gain: Boost + max(0, Ceiling - Threshold), in dB, at Amount 100%.
Ceiling sets the output peak target. Peak Release controls isolated transients; Program Release slows recovery on sustained limiting. Longer release can help bass stability. Excessive drive still reduces dynamics and can pump.
Amount blends the boosted and original signal BEFORE protection. Even Amount 0% retains ceiling protection; disable the device for actual bypass. Inertia smooths parameter movements.
The same graph is used in live playback, offline WAV, RP2S and sample-editor TFX. TFX compensates the processing delay, retains the selection length and supports Undo. This is not an RMS or LUFS target normalizer, a denoiser, or a guarantee of distortion-free output at unlimited gain. Existing source noise rises with gain. Monitor the output peaks when increasing gain.
Meta LFO 17 controls · 14 automation targets
Control-rate oscillator that modulates one installed DSP parameter on this track.
Control
Range / choices
Default
Automation index
Shape
Sine / Triangle / Square / Saw Up / Saw Down / Random / Custom
Free rate / Gate / Attack / Release / Depth / Swing / Stereo shift / Mix / Output / Inertia / Gain / Panning / Offset / HP Cutoff / Low Gain / Mid Gain / Mid Freq / Mid Q / Hi Gain / 31 / 63 / 125 / 250 / 500 / 1k / 2k / 4k / 8k / 16k / Q / 60 / 12k / Azimuth L/R / Elevation / Distance / Width / Focus / Reflect / Room / Height Cue / Rear Cue / Air / Frequency / Drive / Harmonics / Color / Peak Guard / Air Limit / Amount / Carrier Note / Transpose / AM Bias / Stereo Phase / Low Cut / Anti-Alias / Tone / Bit Depth / TPDF Dither / Noise Shape / Clock Jitter / Reconstruction / Stereo Link / L Delay / R Delay / L Feedback / R Feedback / Send / Thresh / Hold / Floor / Feedback / Delay / Phase / Amplitude / Filter A / Filter B / Filter C / Ceiling / Bass Width / Bass Split / Decorrelation / Mono Safety / Balance / Damping / Stereo Spread / Resonance / Ripple / Low X / High X / Low Threshold / Mid Threshold / High Threshold / Low Ratio / Mid Ratio / High Ratio / Soft Knee
Manual
Amount
-100 to 100 %
0
4
Offset
-100 to 100 %
0
5
Min
0 to 100 %
0
6
Max
0 to 100 %
100
7
Smooth
0 to 1000 ms
80
8
Polarity
Unipolar / Bipolar
Unipolar
9
Reset
0 to 255
0
A
One Shot
Off / On
false
B
Curve
Step / Linear / Smooth
Linear
C
Inertia
0 to 100 %
72
D
Presets
Default
Preset 02
Preset 03
Preset 04
Preset 05
Preset 06
Preset 07
Preset 08
Preset 09
Preset 10
Preset 11
Preset 12
Preset 13
Preset 14
Preset 15
Preset 16
Meta LFO: continuous musical modulation
The LFO now offers Custom in addition to sine, triangle, square, rising/falling saw and random. Use Curve to edit up to 64 points: click to add, drag to move, right-click to remove. Choose Step, Linear or Smooth interpolation. Smooth uses bounded easing between neighbouring points, not an exact reproduction of Renoise cubic curves.
Free rate is cycles per second. Line, Beat and Pattern rate is cycles per corresponding musical unit: 0.125 in Line mode means one cycle per eight lines. Synchronised phase progresses between rows from the scheduled audio-clock segments rather than jumping with the UI cursor. Row delays and changes of pattern length use the actual segment timing. The existing 20 Hz control-rate budget remains; this is not audio-rate modulation.
Reset restarts the cycle. Its byte parameter is automatable through Ixx/Jxx; writing the same Reset value again still retriggers. One Shot runs a cycle once and holds its final value until Reset. One Shot and interpolation are also automatable. Random holds one deterministic pseudo-random value per cycle and advances to a new value at each subsequent cycle.
Actual MLT 5.04 custom LFO curve editor with One Shot and smooth interpolation
Curves and settings are stored in .MLT. The LFO has fourteen addressable automation parameters, below the sixteen-parameter limit. Target routing retains MLT's forward-only rules. Free mode can evolve with an active audio clock while stopped; musical modes pause when song playback stops.
Meta Visualizer 11 controls · 11 automation targets
Meta device.
Control
Range / choices
Default
Automation index
Effect Type
BACKGROUND / 2D LAYER / 2D TRANSITION / 3D VOLUME / 3D TRANSITION / MATERIAL / ANIMATION / SCREEN FX
Four-line modulated feedback-delay room with orthogonal diffusion, early reflections, frequency-dependent decay, and unity dry path.
Control
Range / choices
Default
Automation index
Decay
0.1 to 8 s
0.55
0
Damp
0 to 100 %
55
1
Pre Delay
0 to 120 ms
8
2
Wet
0 to 30 %
8
3
Room Size
0 to 100 %
38
4
Early Reflections
0 to 100 %
45
5
Diffusion
0 to 100 %
72
6
Width
0 to 200 %
115
7
Low Cut
20 to 1000 Hz
100
8
High Cut
1000 to 20000 Hz
11000
9
Modulation
0 to 100 %
18
A
Output
-18 to 6 dB
0
B
Inertia
0 to 100 %
72
C
Presets
Tiny Room
Small Studio
Medium Room
Large Room
Short Ambience
Dark Ambience
Bright Ambience
Vocal Room
Drum Room
Guitar Room
Parallel Depth
Early Reflection
AI Dryness Repair
AI Space Restore
Wide Room
Room Safety Check
Phaser 13 controls · 11 automation targets
True stereo multi-stage all-pass phaser with logarithmic audio-rate sweep and selectable post-modulation color processor.
Control
Range / choices
Default
Automation index
Floor
40 to 4000 Hz
220
0
Ceiling
500 to 16000 Hz
5200
1
Rate
0.01 to 12 Hz
0.18
2
Feedback
-95 to 95 %
22
3
Depth
0 to 100 %
70
4
Phase
0 to 360 deg
90
5
Stages
2 / 4 / 6 / 8
4
6
Filter
Off / AM Sine / AM Triangle / AM Saw / AM Pulse / Distortion Shape / Distortion Fold / Decimator / Comb / Vowel / LP Clean / LP Moog / LP Diode / LP K35 / HP Clean / HP Moog / HP Diode / HP K35 / BP Clean / BP Moog / BP Diode / BP K35 / BS Clean / BS Moog / BS Diode / BS K35
Off
Manual
Filter A
0 to 100 %
62
7
Filter B
0 to 100 %
22
8
Filter C
0 to 100 %
0
9
Vowel
i / y / u / e / oe close / o / schwa / eps / eps nasal / oe / oe nasal / open o / open o nasal / a / back a / back a nasal
i
Manual
Inertia
0 to 100 %
72
A
Presets
Two-Stage Soft
Four-Stage Classic
Six-Stage Wide
Eight-Stage Deep
Slow Phase
Fast Phase
Vocal Phase
Guitar Phase
Synth Phase
Bass Phase
Positive Feedback
Negative Feedback
AI Motion Restore
AI Static Relief
Space Phaser
Phase Safety Check
Reverse Delay 13 controls · 12 automation targets
Three-head overlap-add reverse delay with click-free windowing, filtered feedback, stereo diffusion, and smooth time changes.
Control
Range / choices
Default
Automation index
Time
20 to 2000 ms
360
0
Feedback
0 to 92 %
32
1
Crossfade
2 to 250 ms
28
2
Low Cut
20 to 2000 Hz
120
3
High Cut
1000 to 20000 Hz
9000
4
Ping Pong
Off / On
false
5
Diffusion
0 to 100 %
22
6
Modulation
0 to 12 ms
1.2
7
Stereo
0 to 200 %
115
8
Quality
Eco / High
High
Manual
Mix
0 to 100 %
35
9
Output
-18 to 6 dB
0
A
Inertia
0 to 100 %
72
B
Presets
Reverse Delay Default
Reverse Delay Transparent
Reverse Delay Gentle
Reverse Delay Warm
Reverse Delay Bright
Reverse Delay Deep
Reverse Delay Tight
Reverse Delay Wide
Reverse Delay Narrow
Reverse Delay Rhythmic
Reverse Delay AI Cleanup
Reverse Delay AI Restore
Reverse Delay Mix Polish
Reverse Delay Creative
Reverse Delay Strong
Reverse Delay Safety Check
Revolver 5 controls · 5 automation targets
Mono/stereo impulse-response convolution. Load a WAV IR while stopped; IR audio is stored in MLT. Linear convolution reproduces cabinet or room responses, not nonlinear valve distortion.
Control
Range / choices
Default
Automation index
Pre-delay
0 to 500 ms
0
0
High Cut
200 to 20000 Hz
20000
1
Mix
0 to 100 %
100
2
Output
-24 to 12 dB
0
3
Inertia
0 to 100 %
72
4
Presets
Revolver Default
Revolver Transparent
Revolver Gentle
Revolver Warm
Revolver Bright
Revolver Deep
Revolver Tight
Revolver Wide
Revolver Narrow
Revolver Rhythmic
Revolver AI Cleanup
Revolver AI Restore
Revolver Mix Polish
Revolver Creative
Revolver Strong
Revolver Safety Check
Ringmod 13 controls · 12 automation targets
Band-limited stereo ring modulation with controllable AM bias, phase offset, sideband filtering, and equal-power parallel mixing.
Control
Range / choices
Default
Automation index
Oscillator
Sine / Triangle / Square / Saw
Sine
0
Carrier Note
0 to 119
36
1
Transpose
-36 to 36 st
0
2
Depth
0 to 100 %
100
3
AM Bias
0 to 100 %
0
4
Stereo Phase
0 to 180 deg
0
5
Low Cut
5 to 2000 Hz
20
6
Anti-Alias
1000 to 22000 Hz
16000
7
Tone
-100 to 100 %
0
8
Quality
Eco / Normal / High
High
Manual
Mix
0 to 100 %
50
9
Output
-18 to 6 dB
-3
A
Inertia
0 to 100 %
72
B
Presets
Clean Tremolo
Slow Amplitude Drift
Subtle Sidebands
Warm Bell
Glass Bell
Metallic Pulse
Robot Voice
Shortwave Radio
Bass Modulator
Octave Carrier
Fifth Carrier
Square Chopper
Triangle Motion
Sci-Fi Sweep
Broken Transmission
Extreme Ring
Router 3 controls · 2 automation targets
Routes this point in the track DSP chain to a later track and optionally mutes the source track post-FX output.
Revolver loads impulse responses for linear convolution. It can reproduce a captured linear response, not the full nonlinear behaviour of a driven valve amplifier. Autotune is intended for monophonic pitch material. Stereo enhancement and surround should be checked in mono when compatibility matters.
10 / Audio engine and analysis
MLT 5.04: Master spectrum in perspective waterfall mode. Click Spectrum or the analyser surface to cycle its six views.
Control family
Available choices / purpose
Output sample rate
Native, 22 kHz, 44 kHz, 48 kHz and 96 kHz settings. Actual device output and browser resampling remain part of the path.
In Audio / Perf, Mixer / Mastering, Amplify is a horizontal slider with all integer levels from x1 to x32 and a live value on its right. The default is x10. The rectangular thumb uses the same styling as MLT's other horizontal sliders. The first-launch master output volume is 100%; saved master-volume settings remain respected. Initial Global Volume in Song Levels is separate, and imported song-volume values are not overwritten.
The scale follows ft2-clone's floating-point output convention: the amplification multiplier is level / 32, multiplied by the independent master volume. Thus x10 denotes mixer level 10, not a tenfold gain applied to an already normalized output. Moving from x1 to x10 multiplies amplitude by ten. AGC can counteract level changes; disable it when comparing amplification. Parameter changes are smoothed in the output graph.
MLT saves the new level in native project output settings. The retired Off / +25% / +50% / +100% setting is not interpreted as a numbered FT2 level: projects without a saved new level start at x10. Legacy module formats do not store this application-output preference. Reference: ft2-clone, setAudioAmp().
Selected-track or master analysis includes stereo waves, spectrum, phase and loudness/peak displays. Spectrum modes include an outline, a filled curve, bars and a scrolling colour spectrogram. Pointer readouts expose frequency and level. Momentary, short-term and integrated loudness readings complement RMS and peak indicators.
Changing visual detail does not mean removing musical processing. The application separates audio scheduling from UI updates, uses bounded work and workers for costly tools, and uses asynchronous shader preparation in the Visual Lab. Lower visualization profiles reduce display work. High FFT precision, many DSPs, convolution, large samples and complex visuals still have real costs.
A lower requested sample rate may not dramatically change a source already limited in bandwidth. A browser can resample to the physical device rate. Likewise, 32-bit float mainly increases processing headroom and precision; it does not invent high-frequency information absent from a sample.
Spectrum: logarithmic, linear and waterfall
Click Spectrum or its analyser surface to cycle the unfilled curve, filled curve, bars, logarithmic spectrogram, linear SpectroTag view and perspective waterfall. The linear view uses a teal/amber gradient: image rows run from 0 Hz at the top to 22.05 kHz at the bottom, while time scrolls left and new audio enters on the right. Its upper frequency is limited by the actual hardware Nyquist frequency. The waterfall shows frequency, magnitude and recent history as receding traces; it is a bounded Canvas projection, not a separately compiled 3D scene. Hover for frequency and current-bin dB. Both alternatives share the existing master/track source selection and Audio/Perf refresh policy.
11 / MIDI files and hardware
Files
Whole-song MIDI import groups instruments and uses multi-note tracks, note delays, pitch and volume commands where the tracker representation permits. A bank provides sound; MIDI itself contains events, not sampled audio. Full-song MIDI export translates supported notes, timing and controllers, not the rendered sound of MLT DSPs.
Pattern-track MIDI IN imports the first applicable program/channel into the current track and pattern, truncating to that scope and expanding note columns where possible. It is available while stopped in Edit mode. MIDI OUT exports the selected pattern/track with a contextual filename.
Live input and output
Web MIDI input can audition or record notes, velocity and supported controller information. Instrument output settings include channel, program and pitch-bend range. Hardware availability and permissions depend on the browser and environment.
MIDI Learn
Right-click a supported slider, knob, transport control or Visual Lab randomizer to open mapping. Move a hardware control to identify it. Mapped controls pulse orange; unmapping restores their normal appearance. Supported mapping models include absolute controllers, relative encoders and button/pad behaviour, with applicable range and takeover settings.
Mappings use stable targets rather than screen coordinates. Project storage preserves configuration, but the receiving machine must reconnect its own MIDI ports. Controller resolution, relative-encoder conventions and browser support vary; test your hardware before a performance.
Build an audio-reactive scene from Background, 2D Layer, 2D Transition, 3D Volume, 3D Transition, Material, Animation and Screen FX. Each category has 16 choices. Enable categories independently, choose effects, randomize and save custom settings in the project.
Each effect exposes four mini-knob lanes with parameter-selection lists. A selected parameter is excluded from the other three lanes. Effects have their own preset variations and a Custom state. The current parameter pool includes shared timing/audio controls and, for selected newer effects, additional intrinsic parameters.
Assign audio from a selected track to visual controls, or use global randomization with the master source. Audio can influence movement, scale, rotation, speed and colour. Pattern commands and Meta Visualizer make those choices repeatable within a song.
Warm up effects before a performanceMLT 5.04: Visual Lab warm-up buttons below Randomize All
Below Randomize All in the Visual Lab panel, Warm up used inspects enabled slots, all stored patterns including extra effect columns, and every installed Meta Visualizer in the master and track racks. It follows Bxx jumps, Dxx row breaks, E6x loop branches, pattern repeats, the song restart position and marked-range returns while retaining visual focus and correlated 3D volume, transition, material and animation choices. Direct order starts and the current cursor provide additional entry points. It prioritizes combinations reached through these paths before textual fallback candidates. Random commands include every possible effect in their destination slot; DSP focus/value automation with Meta Visualizer admits all effect families. Analysis is limited to 4,096 states, a 1.5-second exploration window and 512 concrete 3D identities; preparation retains at most 1,024 programs per pass. A partial-combination notice means some random combinations or paths remain unprepared and may compile on demand. The tracker does not allocate an unlimited permutation cache.
Warm up all first displays a warning that preparation can take a long time. Choose Confirm to start or Cancel to leave the scene unchanged. The separate Cancel control remains available once preparation starts.
The warm-up status shows actual elapsed time from the start, followed by the estimated time remaining in parentheses: Elapsed 1:23 (remaining ~4:56). Elapsed time includes analysis and renderer initialization. Remaining time is an estimate, initially shown as estimating; after cancellation it is unavailable. The clock stops when preparation finishes or is cancelled.
Warm up all prepares every procedural effect variant and all 2D layer endpoint pairs, including effects not used by the current song. Both actions use the live renderer's shader cache without changing your scene, audio sources or pattern data. The visual animation pauses during preparation and resumes afterwards when the panel is active; the interface and Cancel remain available. Already prepared programs are reused. A progress bar reports ready programs and an estimated remaining time in minutes:seconds. Cancel stops additional submissions; a driver compilation already submitted cannot be interrupted.
Preparation is not limited to the ten-second startup budget. Keep the same browser tab and WebGL context open: compiled programs cannot be carried to another context or saved inside a project. You can resize the panel or switch editor views after preparation; the Visual Lab follows its available screen size without rebuilding unchanged render targets. Video capture keeps its explicitly selected dimensions. Switching to Mix preserves the selected DSP rack, changing a Pattern FX rack to Track DSP when needed. For very large randomized 3D spaces, individual effects are prepared against the selected scene rather than compiling millions of permutations. New combinations of volume, material, animation and transition may still need compilation; preparation reduces first-use work but cannot guarantee zero display stalls. A 1024-program safety budget includes ready and pending programs.
Persistent preparation cache. MLT saves prepared procedural shader sources in this browser profile, with a source-text budget of 8 MiB and at most 192 entries. A renderer-code fingerprint and individual SHA-256 checks discard outdated or damaged entries. Subsequent launches can reuse this preparation; disabled storage falls back to normal generation. Clear cache removes only these prepared sources, keeping your song, assets, Undo history and the current live GPU programs.
This is not a file of compiled GPU binaries. WebGL programs remain tied to their current context; the browser or Electron separately manages its own GPU cache. Browser, driver or hardware changes can require compilation again. The desktop edition preserves its per-user profile and stable local origin between launches. No machine-specific GPU cache is distributed with the installer or embedded in MLT projects. The startup logo remains visible for at least five seconds, with no more than ten seconds of optional startup preparation.
Desktop compiled-program reuse: Electron submits a reference link in a background Worker without waiting on unfinished GPU compiler work. After the matching display program completes asynchronously, a short reference-validation stage lets its native cache retain the compiled program for later sessions. Native program-memory and disk-cache capacities are each bounded at 32 MiB; this capacity is not preallocated and is separate from the source cache. The first preparation can still take time; later reuse depends on the unchanged shader, graphics backend, driver and retained application profile. The original effects and cancellation are preserved. A Worker failure falls back to parallel display preparation; the status reports if native-cache preparation was unavailable. The startup display keeps its five-to-ten-second policy. Clear cache above clears prepared sources, not Electron's native graphics cache.
Red effect names have no completed matching effect program in the current context. Their normal theme color returns after preparation completes. Restoring a source from disk alone does not mark an effect ready. Layer/volume combinations may still require an additional program even when their individual effects have been prepared. Some operating-system native option menus ignore custom text colors; the selected control also reports readiness through its text color.
When the parallel-compilation extension is missing, Firefox can use a background Worker with OffscreenCanvas. MLT submits the real program to the display context without immediately waiting for validation, flushes the request, and runs an identical reference compilation in the Worker before validating the display program. No shader or effect is replaced. The actual display-context program, not the Worker's private program, is retained for playback. Repeating preparation reuses it.
This Worker-assisted path is available to the two manual warm-up buttons; it does not extend automatic startup beyond ten seconds. Cancel terminates its Worker and releases unfinished display programs. Drivers differ: reference completion is not a standardized completion fence for another context. MLT measures submission, flushing and final validation, and pauses further preparation if one exceeds its 32 ms interface budget. A slow call already in the driver cannot be interrupted. Software WebGL, unavailable Worker WebGL or restrictive browser policies produce explicit feedback rather than silently reducing visual quality.
MLT 5.04: Fullscreen Mandelbulb Viewer captured from the real Visual Lab renderer.
Notable visual instruments
Pattern Follow draws the current pattern as an opaque background using interface colours.
Matrix Rain uses instrument and sub-sample name characters. Retro Telex presents sequence-position labels.
Audio Scope and Spectrum View use incoming audio; the phase view presents stereo relationships.
Mandelbulb Viewer supplies a bounded ray-marched fractal. Spectral Feedback builds audio-driven feedback imagery; it is not a MilkDrop .milk preset player.
Webcam View supports an optional Blob Tracker with threshold/area and motion-related controls. It tracks image regions, not people's identities.
ASCII Video Mode offers 16 character-set choices. Noise Displacement, feedback and trails provide image transformations.
Isometric Time Trail includes 2D and 3D content. Omega Race runs in demonstration mode outside fullscreen and supports game interaction in fullscreen.
Bring your own visual material
Replace any of 16 2D-layer entries with a local animated GIF or WebM, preserving supported transparency. Replace 3D-volume entries with OBJ or STL assets. Give assets short editable names and select one of nine anchor positions. Project export stores imported assets for restoration.
Webcam use requires permission. Video decoding and alpha support depend on the browser/codec. Complex scenes are GPU workloads; software rendering uses safeguards but can be much slower. Some effects flash rapidly: avoid strobe-heavy settings for photosensitive viewers.
Startup preparation and pixel-art logo
A red progress bar accompanies the concrete-and-gold pixel-art logo while MLT prepares Visual Lab programs. The painted logo stays visible for at least five seconds in an active tab. Preparation stops on completion or Skip; the logo then waits out that minimum. A separate ten-second deadline stops further preparation and releases the tracker. Ready programs remain in the live context cache; a compilation already submitted to the driver stays under renderer ownership and can finish on later use. Startup does not start audio or change visual settings.
MLT 5.04: Startup screen and red progress bar. The deadline does not require every effect to finish.
The queue covers sixteen background, sixteen default layer and sixteen default volume variants. Successful labels are remembered in local browser storage: later sessions prioritize unseen variants within the same ten-second budget. Once all are known, oldest successes come first. Cancelled or failed programs are not remembered. Storage restrictions may prevent history persistence. GPU programs themselves cannot be saved across browser contexts and may still need compilation. Other effect combinations remain lazy. Software WebGL and configurations without asynchronous shader completion skip this optional work.
The horizontal logo at the upper left opens the MLT menu. Its two words remain on one line, with the release number displayed separately. The MAF pattern command produces a one-second electrical discharge around this logo, using the instrument colour; it has no continuing animation between triggers.
Omega Race instrument sounds
Expand the 2D Layer settings and choose Omega Race. Below its procedural controls, assign instrument numbers for Player shot, Player bounce, Enemy explosion and Player explosion. Zero disables a sound. An empty or missing instrument produces no sound.
MLT 5.04: Separate instrument choices for the four game events.
Events play C-5 through the currently selected track and its DSP rack, using the normal instrument envelopes and panning. They do not write notes into the pattern or change the selected instrument. The same sound assignments apply to demo and fullscreen gameplay. Bullet bounces do not trigger the player-bounce sound.
Assignments are saved in .MLT and follow instrument reorder operations. Held notes are released after a short gate; looped and Adlib voices are bounded to prevent stuck sounds. Ordinary one-shot PCM can finish naturally. Select the desired destination track before playing.
13 / All 128 visual choices
8 of 8 entries
Background 16 choices
0 NEON TORUS
1 METABALL OCEAN
2 INFINITE TUNNEL
3 HYPER STARFIELD
4 CHESS WARP
5 WOLFENSTEIN MAZE
6 MANDELBROT DIVE
7 SPECTRAL FEEDBACK
8 VOXEL FLIGHT
9 WEBCAM VIEW
A PATTERN FOLLOW
B PLASMA TEMPLE
C MANDELBULB VIEWER
D VAPORWAVE ROAD
E PARTICLE VORTEX
F FEEDBACK DREAM
2D Layer 16 choices
0 CHROME POLYHEDRON
1 FALLING SMILEYS
2 PHASE METER
3 MATRIX RAIN
4 AUDIO SCOPE
5 DNA HELIX
6 CLOCKWORK GEARS
7 SPECTRUM VIEW
8 ELECTRIC STORM
9 RETRO TELEX
A FLOWER OF LIGHT
B CUBE ARMADA
C OMEGA RACE
D MLT Monolith
E ACID MANDALA
F SUPERNOVA
2D Transition 16 choices
0 SHOCKWAVE REFRACTION
1 SPIRAL TWIST
2 FACET SHATTER
3 PARTICLE IMPLOSION
4 HORIZONTAL RIBBONS
5 VERTICAL SHUTTERS
6 MOSAIC FLIP
7 KALEIDO SHARDS
8 CRT GLITCH
9 ROLLING SCAN
A PIXEL DISSOLVE
B RADIAL RIPPLE
C DIAMOND IRIS
D STAR IRIS
E PLASMA BURN
F AUDIO VORTEX
3D Volume 16 choices
0 DONUT TORUS
1 DIAMOND
2 SPHERE
3 METABLOB MORPH
4 3D DUCK
5 MLT 3D LETTERS
6 MLT Monolith
7 TORUS CUBE MORPH
8 HEART EMOJI
9 THUMBS UP
A POOP EMOJI
B CAT EMOJI
C COMPUTER MOUSE
D KEYBOARD
E STAR
F SKULL
3D Transition 16 choices
0 SDF MORPH
1 FACET EXPLOSION
2 FACET IMPLOSION
3 SOLID TO PARTICLES
4 PARTICLES TO SOLID
5 PARTICLE CROSSFADE
6 RADIAL SHOCKWAVE
7 HELIX EXCHANGE
8 COPPER SLICES
9 VOXEL DISSOLVE
A LIQUID MELT
B SECTOR IRIS
C NOISE DISINTEGRATE
D ORIGAMI FOLD
E ELECTRIC REBUILD
F VORTEX COLLAPSE
Material 16 choices
0 POLISHED SPECTRUM
1 NEON WIREFRAME
2 PROCEDURAL TEXTURE
3 FRESNEL CHROME
4 EMISSIVE NEON
5 IRIDESCENT
6 TRIAXIAL CHECKER
7 ANIMATED STRIPES
8 DITHER
9 NOISY CARBON
A HOLOGRAPHIC
B LAVA
C QUANTIZED TOON
D X-RAY GRID
E AUDIO PULSE
F THERMAL RAINBOW
Animation 16 choices
0 ISOMETRIC TIME TRAIL
1 CLOCKWISE ROTATION
2 COUNTER-CLOCKWISE
3 DUAL AXIS SPIN
4 RIGHT TWIST
5 LEFT TWIST
6 PULSE MORPH
7 EXPLODE / REBUILD
8 FLOATING BOB
9 ORBIT
A DEPTH TRAVEL
B RUBBER WOBBLE
C AUDIO REACTIVE
D VERTEX QUAKE
E FAST SPIN
F KALEIDOSCOPIC
Screen FX 16 choices
0 CRT SCANLINES
1 ANALOG SNOW
2 RF INTERFERENCE BANDS
3 CHROMATIC ECHOES
4 VHS TRACKING TEAR
5 CURVED PHOSPHOR TUBE
6 DATAMOSH BLOCKS
7 PIXEL-SORT MELT
8 KALEIDO MIRROR
9 NOISE DISPLACEMENT
A NEON BLOOM
B DITHER POSTERIZE
C THERMAL VISION
D ASCII VIDEO MODE
E GHOST TRAIL ECHO
F AUDIO PRISM STROBE
14 / Sound from images and shapes
PhaseTag
PhaseTag turns visual paths and shapes into stereo material intended for XY/phase visualization. Its panel includes source and geometry controls, transformations, preview and generation settings. Export a WAV or transfer the result to a sub-sample for further editing and composition.
MLT 5.04: PhaseTag: the actual embedded tool, including its generated XY preview and sound-generation controls.
SpectroTag
SpectroTag converts image structure into spectral audio. Image preparation, transformations, duration/frequency settings and processing-budget choices shape the output. Preview the relationship between the image and audio, then export WAV or send it to a sub-sample.
MLT 5.04: SpectroTag: source-image and generation controls before loading an image.
Both are creative audio-generation tools. Video input uses a selected frame rather than a full moving sequence. Image resolution, duration and operation budgets intentionally constrain costly processing.
SpectroTag frequency scale
Choose Linear (default, 0-22.05 kHz) or Logarithmic (20 Hz-20 kHz) before generating audio. Changing this setting regenerates the sound from the loaded image. Linear preserves the previous encoder; logarithmic distributes image rows exponentially, matching the frequency span of the logarithmic rack analyser. Image columns represent 50 ms sound segments in either mode. The logarithmic rack spectrogram uses horizontal frequency and vertical time, so the source-image orientation differs. FFT windows, playback pitch, resampling and DSP processing affect the observed image: this is spectral synthesis, not a lossless image decoder. Export to WAV or sub-sample works with either scale.
5.04 uses version-aware native storage and currently accepts its current project version; keep the matching application with archives.
.XM
FastTracker-style module exchange.
Legacy note ranges, mono samples and envelope/command limits cannot retain all MLT features.
.MOD
SoundTracker/ProTracker-family material.
Small instrument set, 8-bit mono samples and classic pattern/effect restrictions.
.S3M
Scream Tracker material, including PCM and Adlib instrument handling.
Hardware/channel conventions and effect semantics differ from XM and MLT.
.IT
Impulse Tracker material, including stereo PCM, NNA, envelopes, channel pan/volume and surround conversion.
Not every IT feature or extreme file is guaranteed equivalent; format-specific export limits apply.
.MID / .MIDI
Notes, timing and supported controller interchange.
Does not carry PCM banks, native DSP sound or Visual Lab rendering.
Stereo .WAV
Song audio, with available integer/float precision and rendering options.
External/live sources and unsupported processing cases may require special handling or be rejected by preflight.
Visual Lab video
Real-time rendered visuals with audio.
WebM or advertised MP4 options depend on browser encoders; this is not an unrestricted offline video renderer.
IT import memory
The default IT import working-memory budget is 128 MiB. It includes estimated pattern cells, decoded samples and conversion buffers, the source file and an 8 MiB reserve. Compressed file size is not decoded memory usage. If the estimate exceeds the budget, import stops before allocating decoded cells or samples, and the message reports the estimated components. API imports may explicitly select 8–256 MiB; the upper limit and per-sample frame limit remain enforced. The file chooser also rejects source files above 128 MiB before reading their contents. These safeguards bound the import estimate, not the browser's total memory, which also includes the current project, audio buffers and interface.
WAV without a whole-song memory spike
Song export writes successive stereo chunks instead of retaining the complete output PCM in RAM. The continuous rendering graph preserves effect history between chunks. Where accelerated offline rendering is not suitable, a real-time continuous path is used. Working-memory limits are distinct from final file size; disk quota and WAV container limits still apply.
Depending on the browser, saving uses a native destination picker or a named download with a recovery link. The song title is sanitized for filenames. Browsers without a file picker normally use their configured Downloads location; MLT cannot choose an arbitrary operating-system path without permission.
Video delivery
Video recording uses the Visual Lab canvas and audio stream. Available encoders can include WebM VP8/VP9 with Opus, or MP4 when supported. Resolution, frame rate and bitrate affect cost. Encoded data is staged progressively; recording is bounded, including a maximum duration of 600 seconds in this version. A compatible player may be required even when a file is valid.
Choosing an export format
Save as MLT to retain native instruments, DSP racks, visual assets and extended commands. XM, IT, S3M and MOD are interchange formats with different limits: unsupported features may be omitted or converted. Keep an MLT copy before exporting, read any conversion warnings and check the exported song in its destination player.
16 / Pattern-command reference
The following 142 entries are the current application's helper text. They include extended subcommands and volume-column operations. The letter O is not the digit 0. Historical MLT meanings of Y, Z and EF must not be applied to this release: EF0/EF1 concern surround, Z executes MIDI macros, and formants/3D positioning live in their DSPs.
MFF | MFF | Randomize all Visual Lab slots and parameters
Nxx | N00-NFF | Channel volume slide
O0x | O00-O0F | Tempo slide down
O1x | O10-O1F | Tempo slide up
O5x | O50-O53 | Panbrello waveform
O6x | O60-O6F | Extra row ticks
O7x | O70 | Cut old NNA voices
O7x | O71 | Note-Off old NNA voices
O7x | O72 | Fade old NNA voices
O7x | O73 | NNA override: Cut
O7x | O74 | NNA override: Continue
O7x | O75 | NNA override: Note-Off
O7x | O76 | NNA override: Fade
O7x | O77 | Volume envelope off
O7x | O78 | Volume envelope on
O7x | O79 | Panning envelope off
O7x | O7A | Panning envelope on
O7x | O7B | Pitch/filter envelope off
O7x | O7C | Pitch/filter envelope on
OAx | OA0-OAF | High sample offset
OFx | OF0-OFF | Select MIDI macro
Pxx | 00-FF | Panning slide
Qxx | 00-7F | MLT filter cutoff
Rxx | 00-FF | Multi retrigger
Sxx | S00-SFF | Trigger sample marker
TPVV | dsp 0-F | param 0-F | value 00-FF | Track DSP control: type 4 digits in the FX column to set a track DSP parameter live at each row (MLT-only, stripped on module exports)
Txx | 00-FF | Tremor
Uxx | U00-UFF | Fine vibrato
VOL 10 | 10-50 | Vol: set volume
VOL 60 | 60-6F | Vol: volume down
VOL 70 | 70-7F | Vol: volume up
VOL 80 | 80-8F | Vol: fine volume down
VOL 90 | 90-9F | Vol: fine volume up
VOL A0 | A0-AF | Vol: set vibrato speed
VOL B0 | B0-BF | Vol: vibrato depth
VOL C8 | C0-CF | Vol: set panning
VOL D0 | D0-DF | Vol: pan left
VOL E0 | E0-EF | Vol: pan right
VOL F1 | F0-FF | Vol: tone portamento
Vxx | 00-40 | Channel volume (all voices)
Wxx | 00-7F | MLT filter resonance
X1x | X10-X1F | Extra-fine portamento up
X2x | X20-X2F | Extra-fine portamento down
Yxx | Y00-YFF | Panbrello
Zxx | Z00-ZFF | Execute MIDI macro
17 / Make the workspace yours
Four main views share song state. Retractable panels hold the sequencer, instrument list, batch editing, arrangement tools and Visual Lab. Racks can be compacted, expanded and switched between sliders and knobs. Horizontal rack scrolling accommodates long chains.
Scale ranges from 50% to 125%; changing it deliberately stops playback. Choose a theme, assign instrument colours individually, or use the rainbow button to generate contrasting colours. While stopped, Shift + middle-click opens the colour picker for eligible surfaces. Theme selection can replace custom interface colours.
Theme choices: Midnight Blue · Graphite Lime · Emerald Circuit · Crimson Studio · Violet Pulse · Teal Console · Amber Terminal · Rose Quartz · Mono Dark · Arctic Light · Paper Ink · Mint Light · Solar Dark · Cobalt Steel · Plum Night · High Contrast.
DSP names, parameter labels, readouts and knob indicators follow the selected theme in both control modes. Bypassed devices keep their text readable; their power button and border show their state. Wide DSP headers stay left-aligned, and the rack's horizontal scrollbar provides access to the remaining controls.
All 16 original MLT palettes are included below. Select a palette to apply its colours to this guide. These colour samples use the application's actual theme definitions; they are not repeated screenshots.
Optimization tools can remove unused material, inactive/unreferenced devices and unused extended columns. These are structural edits: keep a native project copy before cleanup or legacy conversion. Context-sensitive tooltips, numeric fields, scopes, metering and status messages provide feedback without making audio work dependent on one view.
Narrow-window layout
The top bar wraps its logo, output meters, file controls and timing controls into separate rows when needed. The pattern viewport follows the actual header height. The fixed bar below the pattern also wraps its control groups, including MIDI IN/OUT, instead of hiding them beyond the right edge. Side panels remain in the workspace grid rather than covering the pattern. Reducing the interface scale or collapsing a side panel leaves more space for editing.
MLT 5.04: Current MLT layout in a 920-pixel window at 125 percent scale with both side panels open
Undo and Redo
DSP additions and removals record the affected rack, not a copy of the whole song. Parameter changes and their recorded pattern commands are restored together. Rack refreshes preserve the installed device identities, so Undo and Redo continue to address the live controls after loading a large module.
Undo and Redo are grouped at the far right of the editor tabs row. They use the shared eight-level project history; enable Edit and stop playback before applying them.
Linux Intel/ARM and macOS Intel/Apple Silicon: native binaries are not available yet. Read the native build instructions. These instructions are not an installer download.
Website maintainers must publish the desktop/release directory beside this manual so the Windows download remains available.
Linux and macOS previews
The shared desktop source supports native Linux and macOS packaging for Intel and ARM machines. These previews require a build on the target system; they are not yet validated native releases. The macOS preview is unsigned. Desktop editions retain the local MCP companion, with configuration stored outside the application bundle. Maintainers can use the manually triggered Native desktop builds workflow to produce packages; it does not publish or sign them automatically.
Android and iPadOS installable web edition
Open the separately published web edition over HTTPS. On Android, choose Install app or Add to Home screen in the browser menu. On iPadOS, use Safari, Share, then Add to Home Screen. After the first successful installation, the application shell is available offline. Remote sound banks and this manual are not included in the offline cache. Keep exported projects separately. Landscape and tablet use are recommended; device-specific audio, touch and storage limits apply. The web edition does not include the desktop Node-based MCP companion.
Run Maxxlorr-Tracker-5.04-Setup-x64.exe from desktop/release. The setup wizard installs for your Windows account, lets you choose the folder and creates shortcuts on the desktop and in the Start menu. The runtime is included. This build is unsigned, so Windows may display its normal publisher warning. No automatic updater is included.
Desktop fullscreen: press F11 to toggle the entire desktop window. Press Esc to return to a window. The Window menu also provides Desktop fullscreen and Exit desktop fullscreen (Esc). This is separate from fullscreen inside Visual Lab; ordinary Escape actions remain available when the desktop window is not fullscreen.
Open Launch Desktop.cmd in the MLT folder, or run desktop/dist/Maxxlorr Tracker-win32-x64/Maxxlorr Tracker.exe. Keep the entire executable folder together. This unsigned prototype includes its runtime and MCP companion; the destination computer does not need a separate Node installation. The original browser HTML remains available independently.
The same tracker interface, project formats and Web Audio engine are used. Imports use the existing menus. Exports use the available native picker or Electron Save dialog, with Downloads as the initial destination. Audio still follows the operating system's Web Audio path; this is not an ASIO driver or a guarantee of lower latency. Save your project before closing the application.
Desktop MCP connection
Close an ordinary desktop session first. Add the server entry from mcp-desktop-config.json in the executable folder to your MCP client, without replacing other entries. Starting that server opens the desktop tracker. Click MCP and authorize only the required operations. Hardware access still requires separate local permission. Closing the client ends its desktop session. If the folder moves, update the absolute paths in the configuration.
Installation generates mcp-desktop-config.json with the installed paths. Use Configure MCP.cmd in that folder to regenerate it if necessary. The installer never changes your MCP client's other entries.
Uninstalling
Close MLT and its MCP session. In Windows Settings, open Apps, Installed apps, then choose Maxxlorr Tracker 5.04 and Uninstall. The uninstaller removes program files, shortcuts and its Windows registration. Projects saved elsewhere, preferences, disk history and the independent HTML edition are preserved. Remove the server entry from your MCP client separately if you no longer use it. Save personal projects outside the installation folder.
Desktop preferences and disk history are separate from browser profiles. The local companion uses port 47303; keep this port free. Keep the bundled licenses and notices with the executable folder.
Playback and view performance
You can switch views, select a track and edit its rack during playback. Audio / Perf lets you balance analyser and waveform detail against the resources available on your computer. Lower the visual detail or refresh rate when working on a demanding song.
Optional MCP control
Easy setup
Run MCP.cmd on Windows or Setup MCP.command on macOS/Linux. The assistant checks Node.js 22+, installs pinned dependencies when missing with install scripts disabled, and opens a page with Copy configuration and Save configuration. Add this server entry to your MCP client without replacing existing entries. On reconnect, the client starts the companion and opens MLT automatically; click MCP in the tracker and authorize only the permissions you need.
The MCP button is also available in standalone file mode, where it opens the setup instructions without starting a server. First setup needs internet if dependencies are not bundled; prepared launches work offline. Use Check MCP.cmd on Windows, or run node mcp/setup.mjs --check, for a read-only report of Node, dependency imports and whether configuration matches the current folder. Setup refuses concurrent installs using a lock; if an interrupted setup leaves it behind, remove mcp/.setup.lock only after confirming no setup is running. If the distribution moves, rerun setup and update the client entry. Node itself is not bundled here; distributors may provide an official portable runtime and its license. A HTML page cannot start native software by itself, and generic MCP clients still require a one-time server entry. Open setup assistant.
MLT 5.04: MLT local MCP permission dialog with independent editing and transport grants
MLT 5.04 exposes 191 tools through the local MCP companion. The standalone HTML remains usable without it. For the browser distribution, install Node.js 22 or newer, install the pinned dependencies, and configure your MCP client to launch mcp/server.mjs through stdio. Call mlt_instances, open its launch URL, then click MCP in the tracker to authorize the connection. The Windows desktop prototype bundles its runtime and provides a separate configuration as described above.
Metadata reads are enabled first. Editing, transport and WAV assets each require a separate local permission. Media edits also require Edit ON and stopped playback. Commands use stable IDs, project epochs and revision checks. Asynchronous work stages immutable data and rechecks the revision before committing; newer manual edits cannot be overwritten by a late result. Use transaction.undo for command Undo, and operation.status to inspect progress by idempotency key. Cancelling a request or revoking permission prevents an unfinished operation from committing.
Project timing and initial track settings
project.timing.read reports the native mode, effective LPB, tick/row duration and Speed/Ticks per row. project.timing.set accepts BPM 32-300, Speed 1-32 (or its identical Ticks/Row alias) and independent LPB 1-32. Conflicting aliases are refused. Null LPB restores the original legacy tick formula, retaining Speed and the alternative XM tempo flag. Independent timing follows 60/BPM/LPB/Speed seconds per tick.
track.settings.set changes initial channel volume 0-64, pan -1 to 1, Mute, Solo and Surround using an explicit track ID. Normal pan exits Surround; pan together with Surround=true is refused. Multiple Solo tracks follow the native policy. Existing bus AudioParams and native phase-surround are used, without resetting the project or replacing racks. Both editing tools require stopped song playback and Edit ON, support revision checks and command Undo, and update visible controls. These are initial settings, not pattern automation. Structural operations are available as described below.
New modules and track structure
project.create requires explicit discardExisting=true and supplies title, track count, rows, BPM, Speed and LPB. It creates a fresh project identity, empty DSP racks and no active instruments; the native backend can retain empty reserved instrument slots. This operation is not undoable: save the current project first. Old handles, uploads, prepared exports and command history are retired. An identical retry never discards subsequent edits.
track.insert inserts after an explicit stable track ID (null means first). track.move moves that track to a zero-based final index. track.remove needs allowDataLoss=true for music, installed DSPs or affected references. These tools require Edit ON and stopped playback, stop held previews at commit, and support command Undo. Whole-song cells, extended columns, track settings and DSP racks retain their identities and move together. Same-rack I/J/MB addresses retain their DSP slot meaning; Master order is unchanged. Changing track order can change left-to-right precedence of competing global commands.
Router destinations must remain later tracks; invalid ones are cleared. Meta targets must remain same/later tracks; invalid target/device/parameter triplets become Undefined and devices without valid routes are disabled. Invalid explicit Vocoder/Voice Carver sources fall back to automatic selection. Visual source indices follow surviving tracks and fall back to Master on deletion; MIDI bindings follow stable identities, with deleted targets removed. Planning yields cooperatively, is capped at 262,144 song cells, and refuses estimated structural Undo data above 32 MiB before cloning. Revision conflicts and cancellation publish no partial edit.
Sequence occurrence editing
sequence.label.set renames an explicit position with up to 20 characters. sequence.pattern.set assigns an existing pattern ID to that position. Repeated uses of a pattern retain separate occurrence IDs. Neither command copies or edits cells, reorders tracks, or rebuilds audio buses. Assigning the current position updates the displayed pattern and clamps the editing row to its length. Both require Edit ON and stopped playback, support revision checks, identical retries and command Undo. Pattern structure operations are described below.
Sequence structure
sequence.insert adds a reference to an existing pattern after an explicit occurrence ID; null inserts first. sequence.move moves an occurrence to a zero-based final index. sequence.remove removes only the occurrence, not its pattern, and requires allowDataLoss=true. At least one position must remain; remote insertion is capped at 256 positions. Surviving IDs and labels follow positions, including repeated patterns.
Current and restart positions follow surviving occurrences. Green loop marks follow their positions; deleted marks disappear. Pending jumps follow their destination or are cleared if deleted. Valid Bxx destinations in every pattern, including extra effect columns, follow occurrences; out-of-range numeric targets remain unchanged. A deleted current/restart/Bxx target falls back to the next surviving position, or the previous one at the end. The current editing row is clamped to the replacement pattern. Other cells and DSP/Meta references remain unchanged. Undo restores all remapped fields and occurrence identities. These operations require Edit ON and stopped playback and never rebuild DSP buses. To bound synchronous scanning, they refuse songs above 65,536 cells before allocating patches; retained Undo estimates share the 32 MiB history budget.
Pattern creation and resizing
pattern.create appends an empty pattern with 1-1024 rows; it does not insert a sequence occurrence or move selection. Use project.describe to obtain its new stable ID, then sequence.insert or sequence.pattern.set to use it. The remote pattern limit is 256. Newly allocated cells have no note or instrument.
pattern.resize changes the row count of an explicit pattern ID, preserving all surviving cells and extended columns. Every sequence occurrence referencing it sees the new length; pattern and occurrence IDs remain unchanged. Removing rows containing notes, instruments, volume or effect data requires allowDataLoss=true; empty tails can be removed without consent. Undo recovers all truncated tuples and the editing position. Growth appends empty rows, with no repetition or hidden resampling. A shorter selected pattern clamps its editing row. Pattern-control-flow commands retained in surviving cells are not rewritten to new rows.
Both tools require Edit ON and stopped playback, use revision checks and identical-retry protection, and refresh native controls without rebuilding audio buses. Remote editing is capped at 262,144 total base cells; conservative allocation/Undo estimates must fit the shared 32 MiB history budget before new rows are allocated. Large dimensions can therefore be refused below nominal row/track limits. UI failures restore the model and attempt a native redraw. Duplication, removal and explicit field-range workflows are described below.
Lot 2: arrangement and fine pattern editing
pattern.duplicate appends a detached copy of every cell and extended tuple, with a fresh pattern ID. It does not change the sequence. pattern.remove needs explicit removal consent. A pattern used by the sequence also requires a different replacementPatternId; all its occurrences are redirected to that surviving pattern. Removing an unused pattern permits a null replacement. At least one pattern must remain. Surviving IDs, occurrence IDs, labels, marks, restart and Bxx sequence positions do not change. Undo restores the removed ID and references.
pattern.rows.insert and pattern.rows.delete shift rows across all tracks. Deletion always requires explicit consent and retains at least one row. Surviving row-control commands are not rewritten. Pattern identity and sequence references remain stable; Undo restores removed extended columns.
Fine operations use an explicit pattern ID, ordered track IDs, half-open rowStart/rowEnd, installed zero-based note/effect column lists and independent note, instrument, volume and effect masks. They never depend on screen selection. pattern.range.clear clears only these fields. pattern.range.transpose changes chosen notes by an integer semitone amount, skipping empty/note-off cells and refusing overflow beyond C-0/B-9. pattern.range.interpolate supports numeric volume and effect endpoints; effect letters and DSP focus must match, and invalid intermediate values refuse the entire operation. Other cells remain untouched.
pattern.clipboard.copy/cut/paste use a private, project-scoped command clipboard. Copy leaves cells intact; cut changes fields and clipboard atomically. Paste requires exactly the copied track count, installed columns and a fitting row range: no truncation, auto-created tracks or unrequested fields. The clipboard is separate from native UI copy/paste. pattern.clipboard.describe returns shape only. pattern.range.move stages a source snapshot and handles overlapping ranges with destination precedence, without changing this clipboard. These operations support command Undo, including clipboard restoration, and require Edit ON with stopped playback. Maximum 8,192 selected tuples and 8 MiB encoded/staged data; retained Undo shares the 32 MiB history budget.
sequence.loop.set accepts unique occurrence IDs for green loop markers (empty clears them). sequence.restart.set selects a restart occurrence. sequence.focus.set selects an occurrence and a valid editing row without starting audio. These tools use the same stopped-playback/Edit ON guards and Undo. Lot 2 covers arrangement structure and explicit fine editing; live queued jumps, viewport-only selection/follow controls, effect-memory inspection, redo and sustained performance certification are separate future work.
Lot 3.1: instrument bank
instrument.create inserts after an active instrument ID; null means first. instrument.duplicate inserts an independent native copy, including mono/stereo PCM, maps, loops, markers, envelopes and existing AdLib/MIDI metadata, with fresh instrument/sample/control IDs. It does not inherit MIDI Learn associations. instrument.move takes a zero-based final active index. instrument.remove requires explicit consent and an optional active replacement; null clears referenced note tuples while retaining independent effect commands. Removing the last instrument leaves no active instruments. Native reserved empty bank records can remain physically allocated and are reported with active=false.
Numeric references follow all note columns across the song, DSP metadata, arrangement settings/plans and Omega Race sound bindings. Surviving object/sample IDs remain stable. Deleted MIDI Learn bindings are removed rather than attached to an unrelated replacement. Undo restores the bank, references, deleted identities and bindings. Structural planning yields between row batches and supports cancellation/revision conflicts before commit. Limits are 128 active slots, 262,144 base song cells, 16 MiB duplication data and a shared 32 MiB estimated Undo budget. Inactive reserved handles cannot be edited or used as insertion anchors.
Lot 3.2: general settings
instrument.settings.read/set cover name (22 characters), main volume 0-1.25, pan -1 to 1, finetune -128 to 127, FT2 reference offset -48 to 48, fadeout 0-65535, vibrato speed/sweep 0-255, depth 0-15 and the four native waveforms. NNA supports Cut, Continue, Note-Off and Fade. Color accepts #RRGGBB or null for the default. Cutoff/resonance use native indices 0-127 with independent enabled flags. These are native instrument properties, not an independent synthesis engine. FT2 reference settings retain the native sample-tuning policy.
Lot 3.3: four envelope families
instrument.envelope.read/set explicitly address volume, pan, filter or pitch. Each curve has up to 25 integer points with strictly increasing tick frames and native values 0-64. Volume uses 64 for unity; pan/filter/pitch use 32 as the center. Ordinary frames span 0-324; itNative=true permits 0-65535 and preserves long IT points. Enabled, sustain range, loop range and Carry are explicit flags; sustain/loop positions are point indices. Enabled loops require two distinct points. A one-point constant envelope is valid; an empty curve cannot remain active.
instrument.envelope.point.insert/move/remove provide fine editing. Insert follows existing sustain/loop points; move refuses neighbor crossings; removal follows indices and disables empty or degenerate loops. Replacing points adjusts omitted indices to fit, but invalid explicitly supplied indices are refused. Empty replacement disables active flags omitted from the request. Carry preserves a same-instrument cursor in MLT and imported IT. Enabling a filter envelope enables its cutoff path. All edits have command Undo and refresh the appropriate native controls/canvases.
All instrument/envelope writes require Edit ON and stopped song playback. Held previews are stopped at publication so no voice retains deleted or changed state. Parameter/envelope edits do not rebuild audio buses or piano mappings; bank edits use the existing project owner. Read operations return intrinsic settings/curve data only, never PCM or caches. Native AdLib patch editing, bank downloads/imports, live MIDI hardware and sustained/cross-hardware certification remain separate work.
Lot 5: sample-editor commands
The sample command domain covers slots, settings/loops/Auto-seek, mapping, PCM read/drawing, stereo processing, clipboard, markers/transients, native TFX/Signalsmith stretch, synthesis/Populate, custom cycles, analysis, pattern capture and spectral-focus splitting. Explicit IDs and ranges are independent of mouse selection; no unrestricted scripting or remote mouse gestures are exposed.
sample.move/remove reorder or remove a slot inside its instrument, following stable sample identity, selected slot and the 120-key map. Removal needs consent and a same-instrument replacement if mapped. Undo restores slots, PCM and mapping. sample.marker.insert/remove complement marker replacement/movement/preview, with 256 maximum. Marker insertion/removal and complete-list/transient replacement preserve provable Sxx references atomically. Referenced deletion is refused. Ordinary cross-pattern inheritance is analysed across sequence occurrences, restart and green-loop edges to a bounded fixed point. A repeated pattern cell must require the same Sxx byte on every visit; incompatible samples cause atomic refusal. Unused patterns start with unknown history. Bxx/Dxx and E6x are followed row by row with per-effect-column loop counters and left-to-right precedence. Dxx uses decimal row digits and clamps to the destination length; a later Bxx cancels Dxx in FT2/MOD mode, but preserves it for imported S3M/IT. Explicit B/D jumps take precedence over E6 loops. Infinite routes terminate at repeated full history/loop states. Unsequenced patterns with flow destinations remain refused. Plain EDn updates sample history only if its delayed tick is below the current Speed; ED0 follows tick-zero triggering. Same-row Fxx Speed changes are resolved first. 3xx/5xx and volume-column portamento retain the previous PCM while updating target-note memory. Instrument-only delayed retriggers use retained pitch and the selected instrument. Sxx without a note restores the last actual trigger instrument/pitch. Speed and note/trigger memory participate in cycle detection. Plain E9x/Rxx retriggers are evaluated in tick order, including zero/out-of-range intervals and XM-style immediate E90. Trigger ownership follows the native multicolumn priority: rightmost trigger candidate, then 3xx/5xx, then rightmost EDx. Inactive Sxx cells are not rewritten. Sxx+Rxx observes the restored actual trigger pitch before retriggering. Simulation is capped at 1048576 tick steps and yields cooperatively; idle tracks do not run tick loops. S3M Q provenance is decoded through the native mapper only while effect/mappedParam still matches the cell. Per-column shared memory, Q00, tick-zero counters and modulo-256 wrap are tracked; new notes reset their trigger-column counter, whereas retriggers preserve it. IT R provenance follows native R semantics. EE repeats tick cycles and O6 adds ticks per cycle, with native delay precedence and MOD delayed-break target skipping. Key-off suppresses S3M counter triggers. Voice presence is tracked with conservative remaining-frame and scheduled-stop lower bounds. Native FT2 tuning/rate clamps and release-ramp calculations are reused without an AudioContext or PCM copy. Finite samples can now prove counter switches; held loops, release windows, hard cuts, BPM/Speed and pitch-rate upper bounds participate in history state. Native FT2/IT volume-envelope cursors retain up to 25 points, sustain, loops and fadeout. Held envelopes do not invalidate presence merely by reaching zero. Release proofs stop at the earliest possible silence cull; expiration never proves that a browser onended callback ran. Valid PCM sustain loops retain a held-source presence proof. On first release, normal and ping-pong sustain loops use an exclusive endpoint/trigger-offset ceiling: a finite tail has a conservative remaining-frame bound, while an ordinary post-release loop remains held. Repeated key-off cannot refresh the tail. Lxx repositions the volume-envelope cursor through the native playback routine, with endpoint clamping and left-to-right effect order, once on the initial tick (not repeated by EE). It does not reset fadeout, release-silence history or PCM lifetime; pitch envelopes retain the native rate ceiling. Reaching a released endpoint can discard presence proof and refuse a later revival atomically. DLS regional articulations reuse the native per-trigger instrument resolver with note, explicit velocity and current tick duration. The derived volume envelope is retained for release and revival; user-edited envelopes keep native precedence. Regional pitch envelopes use the native rate ceiling. No PCM is copied. Unsupported transforms/controllers, malformed connections and unknown tempo-slide trigger timing are refused; a separate 1048576 connection-evaluation budget bounds DLS work. Invalid sustain data and uncertain tail endings remain conservative. Tempo slides use conservative timing bounds; bounded cyclic states may also exhaust the analysis budget. Up to four note columns retain independent sample/instrument, pitch, envelope, release and effect-bank histories. Track-level B/D/E6 flow runs once, not once per voice. A shared Sxx byte is rewritten only when every affected lane and sequence occurrence agrees; incompatible samples refuse atomically. Unused extra lanes do not invent a trigger. Trigger ownership follows the native note/effectsOnly split: rightmost trigger candidate, then portamento priority, then rightmost ED priority. Only the owning Sxx can replay a sample; non-owning Sxx bytes stay untouched. This applies across four note lanes and three effect columns, including Sxx with 3xx/5xx, 9xx, E5x, E9x, Rxx and plain EDx. ED0 triggers immediately; ED at or beyond Speed does not introduce the delayed note. Imported positive/empty/instrument-only S3M and IT delays use native timing and S3M shared parameter memory. S3M SD0 suppresses its note trigger; IT SD0 is immediate. A delay at or beyond the available tick range cannot introduce a note. Metadata only applies while the displayed effect/parameter still matches its import provenance. Trigger ownership uses displayed columns, then resolves the chosen parameter. Imported IT cut, note-off and fade keep last-trigger provenance, including delayed termination and envelope/sustain release. The planner follows the actual native legacy versus multicolumn paths: S3M delayed negative notes may reset envelopes rather than cut PCM, and SD0 negative-note handling differs between paths. These are documented playback behaviours, not external format-conformance claims. Non-owning inherited S00 delays replay the retained pitch at the inherited tick in effect-column order. Hidden populated columns, arbitrary live starts, uncertain lifetime boundaries and addressing-mode changes remain safe refusals. Detached NNA tails are not Sxx sources: native Sxx replays each lane last trigger. Work budgets count note-lane visits. Limits are 4096 occurrence/history states and 262144 visited note-lane cells, with cooperative cancellation. Arbitrary live jumps and starting From an inherited sample are not simulated. Noncrossing marker movement retains its ordinal. Undo restores both commands and markers.
sample.silence.insert inserts zero-valued frames and follows loop/marker positions. sample.resample uses the browser native offline resampler for the whole sample, retaining duration, stereo and reference pitch while scaling positions. Browser resampling differences are permitted, not bit-identical cross-engine output. Both have atomic Undo.
sample.analyze reads peak, RMS, DC, zero crossings and stereo correlation. sample.pitch.detect is a bounded monophonic CMND estimate, not Basic Pitch or polyphonic transcription: at most 8192 frames, frequency, MIDI note/cents and confidence, without implicit pattern insertion. Analysis yields and rejects revision changes.
sample.pattern.render uses native RP2S for stereo 16-bit output with replacement consent; row/tick scheduling yields and checks cancellation. sample.split uses the existing spectral-focus Worker, not semantic stem isolation. Select up to four distinct stems and empty same-instrument slots. All outputs publish together or not at all. Conservative memory checks run before allocation; 2097152 frames and 32 MiB staging/Undo limits. OfflineAudioContext can finish its current bounded render before observing cancellation, but cancelled PCM is never committed.
sample.synth.preview renders a private native draft through an explicit track rack without replacing PCM, moving selection or consuming Undo. Local audio unlock and transport permission are required. Maximum 65536 generated frames and eight seconds; use sample.preview.stop to stop an owned preview. Native render/mix and Populate remain available.
sample.synth.waves.read lists custom oscillator IDs and pinned AKWF banks. sample.synth.wave.add/remove manage 32-4096-frame cycles, 64 maximum, with Undo. Pass an installed ID as oscA/oscB to native rendering/preview. sample.synth.akwf.import requires assets permission and an allowlisted bank/wave from the native pinned commit, never an arbitrary URL. Streaming is capped at 2 MiB before parsing. Browser HTTP caching can reuse downloads; selected cycles and CC0 provenance persist in MLT. Network availability is not guaranteed. Removing a cycle leaves previously rendered PCM unchanged.
Mutating sample tools require Edit ON and stopped song playback, apart from non-destructive owned audition. Cancellation uses the portable code CANCELLED, retaining the native AbortError name. Canonical MX.SampleCommands lives in the existing kernel without new wrappers. This coverage does not certify hardware audition, neural polyphonic transcription or Visual Lab control.
Whole-song track columns
track.columns.read reads installed counts. track.columns.plan accepts a stable trackId, notes (1-4) and effects (1-3), and reports populated tuples that would be discarded across all patterns. track.columns.set applies these counts; destructive changes require allowDataLoss=true. Counts belong to the whole track, not one pattern. Hidden imported tuples are counted and cleared rather than silently revealed by expansion. Undo restores data, counts and cursor columns. Edit ON and stopped playback are required. Planning yields every 64 rows and supports cancellation and revision checks, with a 262144-cell scan cap and 32 MiB estimated Undo budget. Audio buses and pattern identities remain unchanged.
Deferred sequence navigation and selective instrument replacement
sequence.configuration.read returns stable occurrence IDs for focus, restart, green marks and the pending jump. sequence.next.queue queues an explicit orderId for the native end-of-pattern transition during playback; destinations outside the green range are refused. sequence.next.cancel clears that pending jump without stopping audio. Both require transport permission, a current revision and an idempotency key, but not Edit ON. They are transient transport actions, not project edits or Undo entries. The native scheduler may prepare a destination before the audible transition consumes the queue.
pattern.range.instrument.replace accepts explicit patternId, trackIds, half-open rowStart/rowEnd, installed noteColumns, empty effectColumns, fields=[instrument], fromInstrumentId and toInstrumentId. Only matching explicit instrument numbers are replaced; inherited instruments are not guessed. Notes, volumes, effects, other rows/columns and the instrument bank are preserved. Stopped playback, Edit ON, bounded range validation, revision checks and atomic Undo apply.
Verified oscillator banks and saved synthesis
sample.synth.akwf.import verifies downloaded bytes against an embedded SHA-256 manifest for all 64 allowlisted banks at the pinned commit. The separate MCP IndexedDB cache rechecks SHA-256 on every read, evicts corrupt entries and streams eviction rather than loading all records. It keeps at most four banks/8 MiB. Browser storage denial falls back to verified downloads, not unverified audio. sample.synth.waves.read exposes the cache policy. Selected cycles and CC0 attribution persist in MLT independently of the offline cache.
Successful sample.synth.render and instrument.synth.populate save each slot's resolved synthConfig, including explicit parameters.oscA/oscB cycle IDs. Read it through sample.describe.settings.synthConfig; MLT round-trip and Undo retain it with the PCM. A cycle referenced by any saved recipe cannot be removed: rerender with replacement oscillators first. Preview is private and never changes the saved recipe. This records the latest synthesis operation, not a reversible history of later sample edits or a recipe for preexisting mixed PCM.
RP2S uses an explicit bounded linear pattern capture, including timing changes and row delays; B/D/E6 do not turn it into an unbounded song transport. Splitter preserves its explicit half-open range, checks working memory before starting its Worker, and cancels without publishing partial stems. These operations retain their documented frame/Undo budgets. Tests observe Worker closure, not guaranteed garbage-collection timing.
Module and bank imports; song WAV
API 1.26.0 exposes staged module.import.inspect/apply for verified MLT, XM, IT, MOD and S3M assets. Inspect the conversion counts and warnings before explicitly discarding the current project. Replacement retires previous handles and does not autoplay; it is not undoable. Import drafts expire after ten minutes and can be removed explicitly.
bank.inspect opens uploaded DLS/SF2 banks or the pinned GeneralUser source with explicit download consent. bank.install installs a program, GM bank or Drumkit with overwrite consent, memory checks and Undo. Local bank uploads remain an offline alternative. bank.cache.clear does not remove installed PCM.
delivery.song.wav.prepare renders stereo through the continuous native graph into bounded storage. Retrieve 32 KiB delivery.chunk.read blocks and verify each chunkSha256 before writing them at the client destination; release the delivery afterwards. Streamed WAV uses chunk hashes rather than a whole-file hash. Output is capped at 512 MiB and 1800 seconds with explicit working-memory and tail settings; source and storage limits can refuse an export before allocation. This is an MCP file-transfer workflow, not a browser download dialog. See mcp/LOT-6-VALIDATION.md for bounds and executed tests; corpus fidelity, online-bank transfer and hardware audition are not certified.
Musical analysis and arrangement
API 1.27.0 separates analysis, proposal inspection and project modification. Start with music.schema for native styles, scales and bounds. music.notes.analyze estimates up to four simultaneous notes from an explicit mono/stereo PCM range in a cancellable Worker. It returns timings, confidence and informational pitch-bend estimates; it is a harmonic-salience estimator, not the Basic Pitch neural model. Read events with music.result.read before deciding to insert them.
music.arrangement.generate uses the native seeded generator for chords, bass, lead, drums or ensemble. Explicit sequence occurrence, destination rows/tracks and up to four preceding patterns provide context. The same seed and context produce the same proposal; generation does not change cells, selection, clipboard or saved assistant settings.
music.insertion.preview maps a proposal onto explicit tracks and instruments using the native tick clock, with optional EDx delays, up to four note columns per track and explicitly permitted sequence extension. It reports note/release addresses and maximum timing error before any song change. music.insertion.apply requires a fresh preview and explicit overwrite consent where applicable; one Undo restores cells, columns, pattern identities and the sequence.
EDx is shared by all note columns in a track. Incompatible delays, occupied voice lanes, reused pattern occurrences and Bxx/Dxx/E6x flow are refused rather than silently damaging timing. Note durations are quantized to the representable tick/row grid; estimated pitch bends are not translated into slides. Drafts expire after ten minutes; release them with music.result.remove. Analysis is capped at 524288 frames, four voices and 4096 events; generation at 256 destination rows, 1280 context rows and one million composition operations. See mcp/LOT-7-VALIDATION.md for executed audio/browser checks and limits.
Performance, OPL and MIDI
API 1.28.0 adds DSP move/route prevalidation and dsp.automation.record. Recording requires Edit ON, an explicit device/parameter and an 8-bit value. Stopped recording addresses a pattern and row; live recording captures the current transport row with a 20 Hz ceiling. Track DSPs use native extended addressing. Master recording requires adjacent Ixx/Jxx columns on an explicit destination track. Occupied effects require overwrite consent; command Undo restores the cells and parameter state.
instrument.adlib.read/set/preset exposes the native OPL2 patch and embedded Freedoom GENMIDI bank, including tuning and second-layer metadata. PCM remains intact when AdLib is enabled. midi.macros.read/set edits validated IT parameter/fixed macro strings; editing a macro does not send hardware messages. module.import.inspect accepts verified MID/MIDI files through the native grid, polyphony and pitch conversion; normal explicit project replacement applies. No bank download is implicit. delivery.midi.prepare exports the song or one pattern/track through verified file chunks. Whole-song extended lanes now reuse the native multicolumn interpreter, bounded at 64 expanded lanes, 32768 cells and 262144 tick/voice operations. MIDI cannot encode arbitrary sample playback or audio DSP timbres.
hardware.status never requests permission. hardware.request only displays a local consent dialog for MIDI access, a MIDI Learn target or an installed track Line In source. Only a trusted local click invokes browser APIs. MIDI Learn then requires moving a controller and confirming the mapping locally; the native dialog supports absolute/relative encoders, 14-bit CC and pads. A mapping can be removed with midi.learn.remove and restored with Undo. Line In uses the native unique-source policy; there is no remote approval tool, no automatic capture and no permission bypass for unsupported browsers. Requests expire after ten minutes and pending requests are cancelled on owner disconnection or edit-permission revocation. Cancelling a request does not revoke browser permission or remove a confirmed mapping.
Edge/Firefox tests cover native DSP/OPL PCM, live recording, MIDI conversion, local consent/denial and simulated CC learning. Physical controller/microphone tests and real listening remain separate. See mcp/LOT-8-VALIDATION.md.
Visual Lab and visual tools
API 1.29.0 provides 180 tools. Read visual.state.read and visual.effect.read before editing. visual.slot.set selects one of eight native slot families, its effect, enable state and explicit source track (null means master). visual.parameters.set changes intrinsic byte parameters and four distinct knob bindings; visual.preset.set uses the native sixteen effect-specific presets. visual.randomize is seeded and Undoable. Track moves remap saved source indices. These model edits do not implicitly start rendering.
Upload GIF/WebM/OBJ/STL through the verified asset protocol, then use visual.asset.set for one of sixteen 2D or 3D positions. A null asset restores the procedural effect. Names, positions, bytes and slot state persist in MLT. Mesh validation uses the same native parser in a bounded Worker; decoded images are capped at one megapixel. visual.meta.set configures the native Meta Visualizer's family, effect, enable state, four values and distinct bindings. visual.performance.record writes native focus/action commands into two explicit adjacent effect columns; live writes have a 20 Hz ceiling and occupied cells require overwrite consent.
visual.omega.sounds.set assigns stable instrument references to shot, bounce, enemy explosion and player explosion. The game itself remains the native renderer effect; starting visual.runtime.set is an explicit presentation action. Camera selection requires prior local authorization; MCP cannot grant it or force browser fullscreen.
tag.generate runs the native PhaseTag/SpectroTag Worker using an explicit path, text, verified image/video frame or mesh. Read the private result, then explicitly apply it with tag.sample.apply or export through delivery.tag.prepare. Applying PCM is Undoable; existing sample markers refuse rather than silently corrupt Sxx references. Four drafts expire after ten minutes, generation has a 12-million-operation budget and a 20-second Worker timeout. Video sources use one selected frame, not full video-sequence synthesis. Tag generation is not a claim of complete standalone-reference parity.
delivery.visual.video.prepare records the native renderer and master audio through the same real-time MediaStream. It does not start song playback. Limits: 1-10 seconds, 180/360/720p, 15-30 fps and 2-8 Mbps. Download using verified delivery chunks, then remove the delivery. Recording is cancellable, progressively stored and bounded at 64 MiB; it requires sharing permission. Supported MP4/WebM codecs depend on the browser. Edge/Firefox tests decode both the video and non-silent master audio; this is not offline frame-perfect capture or physical synchronization certification. See mcp/LOT-9-VALIDATION.md.
Interface, performance and optimization
API 1.30.0 exposes 189 tools. interface.schema lists native themes and supported views. interface.state.read and audio.perf.read report current preferences without opening panels or unlocking audio. interface.configure selects a theme, 50-125% scale in 5% steps, view, side-panel collapse, rack mode/collapse, slider/knob view and analyzer/spectrum style. Theme selection clears custom colors, matching the native interface. Preferences require Edit ON and stopped playback; they are not Undoable.
audio.perf.configure uses the same quality function as the native menu: sample rate, output precision, interpolation, ramping, pitch-table mode, scheduler buffer and AGC. Existing contexts are rebuilt only when the rate changes; actualRate is null until a context exists. No hardware permission is requested. Track-wave latency/detail/FPS, meters and rack analyzer profiles are separately configurable. The latency-dependent visual-rate policy now has a single canonical owner for both UI and MCP callers.
optimization.preview accepts any of bits, afterLoop, patterns, instruments, samples, channels, dspOrphans and extendedColumns. It reports counts, skipped protections, estimated Undo bytes and up to 256 candidate identities/frame ranges without changing PCM or the composition. Up to four previews expire after ten minutes. optimization.apply requires a fresh preview; destructive PCM changes additionally require allowDestructive. One Undo restores the transaction. Release unused plans with optimization.remove.
Cleanup deliberately retains unused interior instrument slots to preserve numeric references, retains channels with DSP/MIDI/visual routing state, and skips DSP compaction when pattern effects or meta references need ambiguous remapping. Master and track racks are both scanned. Marked or IT sustain-loop tails are protected. Scans are capped at 262144 cells and estimated Undo at 32 MiB; PCM quantization yields cooperatively and never changes the original arrays. An optimization preview is not a promise to remove every apparently unused item.
diagnostics.measure captures 0.2-10 seconds of real frame intervals, p50/p95/p99/max, native snapshots, long tasks and heap counters where supported. It may run during playback/Edit OFF, never starts transport and cleans up on cancellation. Unsupported counters are null, not invented zero. A RAF timestamp can precede capture registration even when its callback arrives later. Such leading timestamps are counted in excludedPreCaptureFrames and retained through firstFrame/rawMaxMs, but are not used to form an in-window frame interval. leadingLongTasks separately retains tasks that started before capture; no raw evidence is discarded. Browser tests cover every native theme in all four main views and all 50-125% scale steps; bounded live profiles and cross-domain acceptance runs are documented in mcp/LOT-10-VALIDATION.md. These checks do not certify macOS/Safari, physical listening, arbitrary songs, prolonged sessions or universal frame/audio deadlines.
DSP racks
Alligater uses the same MCP DSP operations as other native devices: dsp.catalog, dsp.add, dsp.parameters.set, dsp.presets.read, dsp.preset.set and dsp.remove. Its thirteen parameters, including Inertia, occupy automation indexes 0-C. Sixteen native presets are exposed. sample.tfx renders the same processor and transaction.undo restores either the processed PCM or the device edit. Real SDK/stdio/browser checks in Edge and Firefox confirm these operations, including exact neutral PCM and a silent closed pattern.
Add/remove, enable/bypass, collapse, native parameter batches and presets are available. Track transfers and Master reordering use the existing automation-remapping owners. Meta routes use explicit stable track/device/parameter IDs and remain forward-only; three null targets mean Undefined. Removal is refused if automation at or after the removed slot could be redirected. Insertion is refused if it would activate an unused automation address. Collapse changes presentation, not audio. Line In activation remains a local hardware action.
Fine DSP control
dsp.lfo.curve.set supplies 2-64 normalized points, strictly ordered from position 0 to 1, with linear, smooth or step interpolation and one-shot mode. It selects the native custom waveform; no second modulation engine is introduced. dsp.source.set selects an earlier same-rack Meta device for Cerberus or an earlier Router feeding this track for Vocoder/Voice Carver. Null clears Cerberus or restores native automatic sidechain selection. Self loops, later sources and unrelated devices are refused.
Project DSP presets
dsp.preset.save stores intrinsic audio DSP parameters with a name of up to 64 characters. The 16 native presets remain available; up to 16 project presets per type are added to the native rack menu. Routes, source references, IR payloads, enabled state and collapse state are not captured. dsp.preset.set applies either bank. dsp.preset.remove removes only custom entries, retaining the current sound settings; command Undo restores the entry. Presets persist in native MLT files. LFO, Signal Follower, Velocity Tracker, Key Tracker and Cerberus presets are supported without copying target/source routing. LFO presets also retain their bounded custom curve, interpolation and one-shot settings. Visual Lab and hardware Line In remain excluded.
Native sample synthesis
sample.synth.presets.read lists the 128 native presets. sample.synth.render renders one preset with explicit sample ID, note (C-0 to B-9), frame count (16-300,000), sample rate, mono/stereo, loop request and gain. Replacement must explicitly address the whole existing sample; it clears obsolete markers and restores native synth tuning and loop metadata. Mix requires a matching frame range, sample rate and channel count and leaves outside frames unchanged. Generated PCM is 16-bit, clipping is refused, and the shared native engine renders cooperatively with cancellation before commit. Stopped playback and Edit ON are required, with command Undo. This does not enable ADLIB audition or change the instrument's ADLIB switch.
AKWF loading and pitch detection remain unexposed. Native presets and intrinsic stereo behavior are used without a second synthesizer or dependence on UI selection.
Custom synthesis and Populate
sample.synth.parameters.read describes 25 bounded intrinsic parameters. The optional parameters object on render and Populate overrides oscillators, mix, detuning, filter, ADSR, LFO, drive, unison and stereo positioning for that operation only. Unknown keys, unsupported oscillator types and out-of-range values are refused. The engine's quality policy is retained; no UI control state is silently changed.
instrument.synth.populate generates all 16 slots from an explicit native preset and these optional overrides, with 16-131,072 frames per slot, explicit rate, mono/stereo, loop request and gain. replaceExisting must be true to overwrite PCM. It stages every slot and the 120-note C-0 to B-9 map before one commit, preserving occupied slot IDs. Cancellation/revision conflicts publish nothing; command Undo restores all prior slots and mapping. Working allocation and Undo budgets are checked before rendering. Progress follows the 16 slots. Successful Populate disarms the local synth keyboard preview; ADLIB-enabled instruments are refused rather than silently switching sound sources. AKWF imports, pitch detection and general assets/module imports remain pending.
Samples and WAV assets
Create an empty slot, edit sample settings and loops, replace markers, and process an explicit half-open frame range. Operations include gain, normalize, reverse, invert, fades, silence, smoothing, trim, mono/stereo conversion and the native FT2 loop crossfade. TFX uses the same DSP factories as the racks, without AGC, Master processing, live inputs or song modulation. Stretch uses the existing Signalsmith Worker and exact output frame counts. Channel conversion requires the whole sample; trim resets loops/markers. Use sample.bits.convert for real whole-sample 8/16-bit quantization, not the metadata setter. sample.pcm.write draws at most 4096 normalized frames in one explicit existing channel, preserving all other frames. sample.transients.detect replaces markers using the native detector on an explicit range and sensitivity 0-100, capped at 256 markers. These operations support command Undo and cancellation before commit.
Owned PCM audition
sample.preview.start accepts explicit sample/track IDs, note 12-131, offset frame and duration 0.05-10 seconds. It uses the native FT2 voice, instrument settings, track bus and DSP rack without moving selection or modifying the project. Song playback must be stopped and local audio/transport permission granted; Edit ON is not required. The sample cap is 2,097,152 frames, with at most eight owned previews. ADLIB-enabled instruments are excluded from this PCM operation.
sample.preview.stop is a priority operation targeting one owned preview. Another paired client cannot stop that preview. Natural completion, duration limits, cancellation, disconnection and permission revocation clean it up; Stop/Panic kill all owned previews. Repeating an identical request does not retrigger the voice. General hardware/instrument audition and sustained performance certification remain outside this scope.
Explicit export delivery
A separate, unchecked local permission, Export project, samples and IR data, is required. Upload permission alone never authorizes existing project audio export. delivery.sample.prepare exports an explicit range as true mono/stereo WAV (16/24-bit PCM or float32); delivery.ir.prepare exports an attached Revolver/Cabinet IR as float32 WAV. WAV delivery carries audio only; use MLT to retain tuning, loops, markers and instrument mappings.
delivery.module.prepare uses the existing MLT, XM, IT, S3M and MOD encoders and their compatibility policies. Legacy formats omit unrepresentable MLT features; delivery is not a new fidelity certification. Prepared files have sanitized names, byte counts, snapshot revisions and SHA-256. Use delivery.chunk.read to retrieve at most 32 KiB per call, verify offset/EOF/hash and assemble the file in your MCP client. No automatic browser download or filesystem path is accepted. delivery.list lists current-project metadata; delivery.remove releases the file and temporary storage.
Playback must be stopped; Edit ON is not required, and exports do not modify project revision or Undo. Cancellation, a newer edit or a transport change prevents publication. Revoking export permission/disconnecting releases prepared exports, including those from retired projects. Limits: 16 MiB per file, 32 MiB/four prepared files per browser tab, ten minutes idle lifetime, 64 MiB conservative transient allocation budget. Module source PCM/string payloads are capped at 16 MiB with bounded model traversal. These MCP limits do not restrict the native UI's disk-streamed exports. Larger projects can use the native export menu; no audio or metadata is silently truncated.
Asset labels
asset.rename renames an ephemeral uploaded WAV without changing its verified bytes, SHA-256 or project revision. It does not rename previously attached samples or IRs and does not write to disk. Paths and blank names are refused. Asset labels are ephemeral and do not participate in project Undo.
Individual markers and preset names
sample.marker.move changes one frame-accurate marker without modifying PCM or renumbering Sxx targets. It refuses crossing neighboring markers or leaving the sample. sample.marker.preview auditions an explicit installed marker through the native FT2 voice and selected track DSP rack; a missing marker is refused, without proportional offset fallback. Use sample.preview.stop with the returned preview ID. Preview needs the separate transport grant and unlocked audio, not Edit ON. Moving a marker requires stopped playback and Edit ON, and supports command Undo.
dsp.preset.rename changes a project preset label without replacing its ID, parameters, curve or routes. Native presets cannot be renamed. Command Undo restores the previous label. AKWF loading, note detection and remaining asset/import operations are not claimed exposed by these additions.
Clipboard and sample slots
sample.clipboard.copy and sample.clipboard.cut use explicit half-open frame ranges and fill the native mono/stereo sample clipboard. Copy changes only the local clipboard, without rebuilding the audio project. Cut changes the clipboard and PCM atomically. sample.clipboard.describe reports dimensions only. Remote paste accepts only a clipboard created by these commands in the current project; its contents also remain usable by the local sample editor.
sample.clipboard.paste offers insert, replace and mix. Insert requires identical start/end positions; mix requires a range matching the clipboard duration. Existing mono targets downmix a stereo clipboard; stereo targets duplicate a mono channel. Empty targets retain the clipboard channel count and sample rate. Nonempty targets require the same sample rate: no hidden resampling. Gain is explicit, and clipping is refused unless explicitly allowed. Untouched PCM remains unchanged; loop endpoints and markers follow length changes. All operations support command Undo and cancellation before commit.
sample.duplicate copies metadata and independent PCM to an explicit empty slot, with a fresh stable identity and without derived audio caches. It does not automatically map notes. sample.mapping.set maps explicit C-0 through B-9 note numbers (12-131) to that sample's instrument slot. sample.clear removes PCM, loops and markers, preserving the slot identity and mapping. Clear is destructive but reversible through command Undo.
asset.inspect reports a verified uploaded WAV's frame count, channels, sample rate and SHA-256. asset.chunk.read returns at most 32 KiB of a verified incoming WAV, with offset, EOF and hash. It cannot read existing project samples, attachments or local files; the separate asset permission is still required. Module imports and hardware operations remain pending; Visual Lab writes have not been opened.
Upload WAV assets with asset.begin, contiguous base64 asset.chunk requests, then asset.finish. SHA-256 and the WAV encoding are verified before attaching a sample or an IR to Revolver/Cabinet. PCM WAV 8/16/24/32-bit and float32, mono or stereo, are supported; imported sample PCM becomes 8/16-bit. The upload grant does not authorize delivery of existing project PCM; that requires the separate export grant. Assets are ephemeral: 8 MiB/file, 32 MiB/16 files total, 32 KiB/chunk and ten minutes idle lifetime. Disconnect/revocation releases uploads; attached data remain in native MLT projects.
Media operations use a fixed conservative 64 MiB working budget and a 2,097,152-frame sample cap. Crossfade selections are capped at 8,192 frames; structural DSP transactions at 262,144 song cells. Command Undo shares up to eight entries with the UI, a 32 MiB RAM journal and a bounded 128 MiB disk journal for native media edits. Individual MCP planning limits remain unchanged. These limits refuse large operations before allocation rather than hiding a quality downgrade. IR limits are ten seconds for Revolver and 500 ms for Cabinet. Foreign-rate IRs can be prepared asynchronously before attachment.
Module imports, song WAV/video delivery, Visual Lab assets/performance, MIDI/hardware actions and the remaining editing domains are not claimed complete. The companion offers no arbitrary code execution, disk-path upload or filesystem-write tool and listens only on loopback. Disconnect in the local permissions dialog when finished.
Setup, limits and operation order: mcp/README.md and mcp/IMPLEMENTATION-STATUS.json in the distribution. Official SDK: TypeScript MCP SDK; licenses and pinned dependencies are listed in licenses/MCP-DEPENDENCIES.txt.
Startup options and launch console
MLT accepts options in its URL. Open index.html?help or index.html#mlt:help for a full-window, PowerShell-style listing. Combine options with &; URL-encode filenames and nested URLs.
MLT 5.04: Startup help is generated from the same catalogue that validates options.
Options cover module opening and playback, sequence position and row, track/instrument/sub-sample selection, Pattern/Instrument/Sample/Mix view, rack view, scale, theme, Edit mode, Lock follow, sequence follow, sidebar states and AGC. Complete option list and examples.
Module import completes before explicit options are applied. A local file:// page requests file selection for local paths. HTTP(S) files require browser/server access and CORS where applicable. If the browser blocks automatic audio, the console offers Start playback. Ordinary song Speed and timing remain unchanged.
The console supports help, version, run, clear and close. These are MLT commands, not operating-system commands.
18 / Practical limits and provenance
Browser and machine requirements
The application runs locally in a modern browser, with Web Audio for sound and WebGL for advanced visuals. Core project processing is local; optional banks, waveform libraries and permissions introduce network or device dependencies. Secure-context features may work differently on file URLs, localhost and HTTPS.
MIDI, microphone, webcam, native file pickers and media encoders are feature-detected capabilities, not universal browser guarantees.
Use a desktop-class display for the full editor. This guide is responsive; that does not claim an equivalent phone editing experience for the tracker.
Audio buffers, sample rate, convolution length, active voices and visual quality must fit the machine. Low average CPU alone does not rule out scheduling stalls.
Safari/macOS, physical-device sample-rate changes and real MIDI hardware require their own tests. Chromium or Edge automated tests are not human listening or cross-browser certification.
Save before changing formats or performing destructive sample/instrument operations. Keep the matching MLT application version with important native projects.
Tracker behaviour references include ft2-clone and OpenMPT. Referencing their behaviour is not an endorsement or certification.
Document scope: Maxxlorr Tracker 5.04 · Updated 14 October 2026 · 21 embedded screenshots · No external resources required to read this guide.
19 / Credits and acknowledgements
Native S3M FM synthesis uses the public-domain Opal OPL3 emulator by Shayde/Reality, including fixes by JP Cimalando and OpenMPT contributors. MLT ships its readable source and bounded WebAssembly adapter. Source and build details.
Multiband dynamics: original implementation informed by the W3C Web Audio specification and Rane's Linkwitz-Riley crossover primer. The final detector reuses MLT's documented Maximizer core. No external DSP code or IR assets were copied. Reference details.
Maximizer references: ITU-R BS.1770 for reconstructed-peak measurement, MathWorks dynamic-range limiter documentation for gain-envelope concepts, and the W3C Web Audio specification for AudioWorklet and offline scheduling. Original implementation; no external limiter code or impulse-response assets are embedded. Reference details.
Distortion topology references: ElectroSmash circuit analyses of the Pro Co RAT, Tube Screamer, DS-1 and Big Muff. Original diode tables and DSP integration, without copied pedal source code or measured capture assets. See sources and modelling scope.
Maxxlorr Tracker: Maxime Lorr. Related PhaseTag, SpectroTag and Omega Race projects: maximelorr.ai.
IT note-variation arithmetic and S3M AdLib compatibility were studied against OpenMPT soundlib, by Olivier Lapicque and the OpenMPT developers and contributors. Reference details and upstream BSD notice. The independent libopenmpt decoder is a test dependency, not MLT's playback engine.
Included components and optional banks
Contribution
Credit and terms
3D graphics library
Three.js authors, copyright 2010–2025. MIT. The full notice is included below.
Adlib emulation
OPL3 0.4.3 by IDDQD@doom.js, used in OPL2 mode. MIT. Source commit a9981a59d7f81aef488acafd042dc894326b3a72.
GENMIDI FM bank
Freedoom contributors, BSD-3-Clause. Includes DMXOPL work by ConSiGno, imported by Simon Howard, earlier work by Matt Cadirao, and historical OpenBSD/NetBSD contributions. Full upstream credits and notices are retained below.
Downloadable General MIDI bank
GeneralUser-GS 2.0.3 by S. Christian Collins, GeneralUser GS License v2.0. Pinned source and licence. Downloaded separately; retain its licence when redistributing bank material.
Optional waveforms
Adventure Kid Waveforms (AKWF), Kristoffer Karl Axel Ekstrand. CC0 1.0. The waveform library is fetched separately.
Local Windows bank
GM.DLS is supplied by Microsoft with applicable Windows products, not bundled with MLT. Local access does not grant redistribution rights.
Behavioural and design references
Time stretching includes Signalsmith Stretch 1.3.2 by Geraint Luff / Signalsmith Audio Ltd., under the MIT license. The pinned revision, release SHA-256 and license are supplied in the licenses folder. This is an included engine, not merely a design reference.
FastTracker II and ft2-clone (8bitbubsy), Impulse Tracker, OpenMPT and libopenmpt, and Renoise informed tracker behaviour, comparisons or interface studies. Audio-design studies also considered ZAM Audio / zam-plugins, Calf Studio Gear, x42/fat1, Rubber Band and SoundTouchJS. A reference is not a claim that its code or library is included, or that its authors endorse MLT.
Visual references include MilkDrop / MilkDrop3, Ice Fractal's Mandelbulb viewer, effects.app and the KrackedDevs ASCII viewer. MLT's Spectral Feedback is not a MilkDrop preset interpreter. These acknowledgements do not replace the terms of any assets you import.
The MIT License
Copyright (c) 2016 IDDQD@doom.js
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Freedoom GENMIDI attribution and historical notices
Bank source: freedoom/freedoom, commit
d14dbbee3b6fbfb2c11cdb65eb61216e86d4ee85, lumps/genmidi.
The bank and current upstream build tools are distributed under Freedoom's
BSD-3-Clause license. LICENSE.txt is an unchanged copy of upstream/COPYING.adoc.
Retain that license, upstream/CREDITS, and these additional notices when
redistributing this package. No endorsement by Freedoom or contributors is implied.
Instrument attribution
The current instrument set was imported from ConSiGno's DMXOPL project by
Simon Howard, with permission. The official import record is preserved in
notices/dmxopl-import.json, commit 8c0a4bc4c5e441daa2548d7b3ff85057bd63ba37.
That record explicitly excludes melodic program 107 (one-based) and drum
notes 36, 69, 76, 77 whose DMXOPL patch data matched Doom's bank. Freedoom's
previous versions were retained; drum 69 remains a NullInstrument.
Earlier work includes Matt Cadirao (horncomposer), credited for GENMIDI
instruments in upstream/CREDITS, and OpenBSD-derived patches.
OpenBSD / NetBSD historical source notice
notices/openbsd-oplvar.h.txt is an unmodified historical Freedoom source file
retaining the complete BSD-2-Clause notice:
Copyright (c) 1998 The NetBSD Foundation, Inc. All rights reserved.
The source credits software contributed by Lennart Augustsson
(augustss@netbsd.org). It identifies OpenBSD oplvar.h revision 1.5 and NetBSD
oplvar.h revision 1.3. notices/openbsd-origin-README.txt preserves the original
description of the OpenBSD patch-data origin. These files were retrieved at
Freedoom commit a8fe8e19e34d4788ff476810e214fac304a0b182, before upstream removed
the obsolete C builder. They are attribution evidence, not current build inputs.
A2I historical source notice
notices/a2i_file.py.txt retains the full original BSD-3-Clause source notice:
Copyright (c) 2011, 2012 Contributors to the Freedoom project.
All rights reserved.
It was retrieved at d3dc48940007093f95295316823c2a4e79bad1ac, immediately before
upstream replaced full license headers with SPDX identifiers in commit
8835afef5f9b94ce7b88017d5142846148d97fd7. The current a2i_file.py and a2i-to-sbi
remain unmodified in upstream/lumps/genmidi, with their SPDX notices intact.
The pinned build has 293 SBI files and no A2I instrument files; the A2I reader
is imported by instrument.py but is not used to decode these SBI patches.
The archived historical A2I code is not executed during the current build.
notices/manifest.json records exact historical URLs, commits, and SHA-256
hashes for the archived notice files and import record. Historical commits
do not change the bank's pinned source commit or introduce old bank data.
No proprietary Doom GENMIDI was downloaded, extracted, or bundled.
/* $OpenBSD: oplvar.h,v 1.5 2008/06/26 05:42:16 ray Exp $ */
/* $NetBSD: oplvar.h,v 1.3 1998/11/25 22:17:06 augustss Exp $ */
/*
* Copyright (c) 1998 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Lennart Augustsson (augustss@netbsd.org).
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef OPLVAR_H
#define OPLVAR_H
struct opl_operators {
unsigned char opl3;
unsigned char ops[22];
#define OO_CHARS 0
#define OO_KSL_LEV 2
#define OO_ATT_DEC 4
#define OO_SUS_REL 6
#define OO_WAV_SEL 8
#define OO_FB_CONN 10
#define OO_4OP_OFFS 11
};
#define OPL_NINSTR 256
extern struct opl_operators opl2_instrs[];
extern struct opl_operators opl3_instrs[];
#endif /* #ifndef OPLVAR_H */
Freedoom / GENMIDI: notices/a2i_file.py.txt
#!/usr/bin/env python
#
# Copyright (c) 2011, 2012
# Contributors to the Freedoom project. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the freedoom project nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# ----------------------------------------------------------------------
#
# Module to load A2I (AdlibTracker 2) instrument files.
#
import sys
import struct
HEADER_STRING = "_A2ins_"
class BitReader:
def __init__(self, data):
self.data = data
self.index = 0
self.byte = 0
self.byte_bit = 0
def read_byte(self):
if self.index >= len(self.data):
raise IndexError("Reached end of decompress stream " +
"(%i bytes)" % len(self.data))
result, = struct.unpack("B", self.data[self.index:self.index+1])
self.index += 1
return result
def read_bit(self):
if self.byte_bit <= 0:
self.byte = self.read_byte()
self.byte_bit = 7
else:
self.byte_bit -= 1
if (self.byte & (1 << self.byte_bit)) != 0:
result = 1
else:
result = 0
return result
def read_bits(self, n):
result = 0
for i in range(n):
result = (result << 1) + self.read_bit()
return result
def read_gamma(reader):
result = 1
while True:
result = (result << 1) | reader.read_bit()
if reader.read_bit() == 0:
break
return result
def decompress(data, data_len):
reader = BitReader(data)
result = []
lwm = 0
last_offset = 0
# First byte is an implied straight copy.
result.append(reader.read_byte())
while True:
if reader.read_bit():
if reader.read_bit():
if reader.read_bit():
# 111 = Copy byte from history,
# up to 15 bytes back.
#print "111 copy"
offset = reader.read_bits(4)
if offset == 0:
result.append(0)
else:
b = result[len(result) - offset]
result.append(b)
lwm = 0
else:
#print "110 copy"
# 110 = Copy 2-3 bytes from
# further back in history
offset = reader.read_byte()
count = 2 + (offset & 0x01)
offset = offset >> 1
if offset == 0:
break
index = len(result) - offset
for i in range(count):
result += result[index:index+1]
index += 1
last_offset = offset
lwm = 1
else:
# 10 = Copy from further away...
offset = read_gamma(reader)
if lwm == 0 and offset == 2:
#print "10 copy type 1"
count = read_gamma(reader)
index = len(result) - last_offset
for i in range(count):
result += result[index:index+1]
index += 1
else:
#print "10 copy type 2"
if lwm == 0:
offset -= 3
else:
offset -= 2
offset = offset * 256 \
+ reader.read_byte()
count = read_gamma(reader)
if offset >= 32000:
count += 1
if offset >= 1280:
count += 1
if offset < 128:
count += 2
index = len(result) - offset
for i in range(count):
result += result[index:index+1]
index += 1
last_offset = offset
lwm = 1
else:
#print "Single byte output"
# 0 = Straight-through byte copy.
result.append(reader.read_byte())
lwm = 0
#print "len: %i" % len(result)
return struct.pack("%iB" % len(result), *result)
FIELDS = [
"m_am_vibrato_eg",
"c_am_vibrato_eg",
"m_ksl_volume",
"c_ksl_volume",
"m_attack_decay",
"c_attack_decay",
"m_sustain_release",
"c_sustain_release",
"m_waveform",
"c_waveform",
"feedback_fm",
"panning",
"finetune",
"voice_type",
]
def decode_type_9(data):
compressed_len, = struct.unpack("<H", data[0:2])
compressed_data = data[2:2+compressed_len]
decompressed_data = decompress(compressed_data, compressed_len)
instr_data = {}
# Decode main fields:
for i in range(len(FIELDS)):
instr_data[FIELDS[i]], = \
struct.unpack("B", decompressed_data[i:i+1])
# Decode instrument name
ps = decompressed_data[14:]
instr_name, = struct.unpack("%ip" % len(ps), ps)
instr_data["name"] = instr_name.decode("ascii")
return instr_data
def read(filename):
with open(filename, "rb") as f:
data = f.read()
hdrstr, crc, filever = struct.unpack("<7sHB", data[0:10])
hdrstr = hdrstr.decode("ascii")
if hdrstr.lower() != HEADER_STRING.lower():
raise Exception("Wrong file header ID string")
# TODO: CRC?
if filever == 9:
return decode_type_9(data[10:])
else:
raise Exception("Unsupported file version: %i" % filever)
if __name__ == "__main__":
for filename in sys.argv[1:]:
print(filename)
print(read(filename))
Third-party notices are preserved verbatim. Sound banks, waveform libraries, user media and the application have distinct terms; this guide does not assign a blanket licence to the complete distribution.
GNU GPL License and Use at Your Own Risk
Maxxlorr Tracker 5.04 is free software distributed under the GNU General Public License, version 3. You may redistribute and modify it under that license. The application is supplied without warranty. Use it at your own risk; keep backups of your projects and use safe listening levels.
Copyright (C) 2026 Maxime LORRAI
This program and it's actual version is free software: you can redistribute it
and/or modify it under the terms of the GNU General Public License as published
by the Free Software Foundation, either version 3 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <https://gnu.org>.
------------------------------------------------------------------------
DISCLAIMER OF LIABILITY (USE AT YOUR OWN RISK)
------------------------------------------------------------------------
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
BY USING THIS SOFTWARE, YOU EXPLICITLY AGREE THAT YOUR USE OF THE SOFTWARE IS AT
YOUR SOLE RISK. THE AUTHORS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Full GNU General Public License, version 3
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.