Overview
ProTracker is one of the most iconic “tracker” music programs from the Amiga era. Trackers write music as patterns of notes + commands, stepping row-by-row in time. A MOD is essentially: an order list (song structure), patterns (note data), and samples (sound sources).
What is a tracker?
A tracker is a music sequencer where each channel plays one sample at a time. Each row can define:
- Note (pitch)
- Instrument/Sample (which sample to use)
- Volume (sometimes as an effect or a separate column in other trackers)
- Effect command (e.g.
3xxtone portamento)
Trackers reward “micro control”: you can shape pitch, timing, and volume in tiny steps per-row.
Typical workflow
- Load or sample sounds (drums, bass, leads).
- Tune/trim samples; set finetune.
- Write patterns: drums + bass + chords + melody.
- Use the order list to arrange patterns into a song.
- Add polish: volume slides, vibrato, portamento, delays, and pattern tricks.
ProTracker layout
ProTracker’s UI is famously dense but fast once the muscle memory is there. The main areas are typically: pattern editor, sample editor, instrument/sample list, and song/order list.
Pattern editor essentials
A single row per channel is commonly shown like:
C-3 01 0A 3FF
This is (usually): Note (C-3), Sample (01), Effect parameter (0A / or volume-style field), and Effect (3FF = tone portamento with parameter FF). Exact column formatting varies by UI skin/version.
Core concept note: trackers generally encode effects as CMD + two hex digits.
Example: A0F means command A with parameter 0F.
Song / Order list
The order list tells ProTracker which pattern plays next. Patterns can repeat many times. This is how you do verses/choruses without duplicating pattern data.
Sample editor
Classic MODs use samples (often 8-bit PCM). You can trim start/end, loop, and set finetune. Looping is crucial for sustained instruments like bass and pads.
MOD file structure (practical)
A typical “classic” MOD contains:
- Song title
- Sample headers (often 31 sample slots in the common variant)
- Song length and an order list (pattern sequence)
- Pattern data (note + instrument + effect per channel per row)
- Sample data (raw PCM bytes)
6CHN, 8CHN, etc.
If your goal is maximum authenticity and compatibility: stick to classic 4-channel constraints.
Effect commands reference
Effects are written as a command nibble (0–F) plus two hex digits (00–FF).
Example: 9A0 = sample offset A0.
Main commands (0–F)
| Cmd | Name | What it does | Notes / Gotchas |
|---|---|---|---|
0xy |
Arpeggio | Cycles note + semitone offsets x and y each tick (classic “chip chord” sound). |
Very characteristic MOD sound. Parameter is two semitone offsets. |
1xx |
Portamento up | Slides pitch up by xx each tick. |
Use small values for musical slides. |
2xx |
Portamento down | Slides pitch down by xx each tick. |
Beware sliding past sample limits (player-dependent). |
3xx |
Tone portamento | Slides current note toward the target note at speed xx. |
Often: put the target note in the note column, keep sample same. |
4xy |
Vibrato | Vibrato with speed x and depth y. |
Waveform can be set via extended vibrato control. |
5xy |
Tone porta + vol slide | Combines tone portamento (uses prior 3xx speed) with volume slide xy. |
Common for leads: slide into note while fading. |
6xy |
Vibrato + vol slide | Combines vibrato (uses prior 4xy settings) with volume slide xy. |
Great for sustained pads/strings. |
7xy |
Tremolo | Volume modulation with speed x, depth y. |
Often subtle; can be dramatic for chiptune vibe. |
8xx |
Panning (varies) | Sets stereo panning to xx in some players/trackers. |
Gotcha: not universal in “pure” 4ch ProTracker playback. |
9xx |
Sample offset | Starts sample playback at offset xx (often in 256-byte steps). |
Classic for breakbeats and crunchy stutter edits. |
Axy |
Volume slide | Slides volume up/down: x up, y down (usually one nibble active at a time). |
Use A0F (down) / AF0 (up) patterns. |
Bxx |
Position jump | Jumps to order position xx. |
Used for song structure tricks / loop. |
Cxx |
Set volume | Sets channel volume to xx (0–64 typical). |
Values above max may clamp (player-dependent). |
Dxx |
Pattern break | Breaks to next pattern at row xx (often interpreted as decimal BCD). |
Gotcha: row encoding can be BCD in classic behavior. |
Exy |
Extended | Extended effects group (subcommand x, value y). |
See the expanded table below for E-commands. |
Fxx |
Set speed / tempo | Sets speed (ticks/row) for small values; sets tempo (BPM-ish) for larger values in many implementations. | Gotcha: exact tempo rules vary by player/version. |
Extended commands (E0–EF)
Extended effects are written as E + subcommand + value: E6x, EDx, etc.
| Cmd | Name | What it does | Notes / Gotchas |
|---|---|---|---|
E0x |
Filter on/off | Toggles the Amiga low-pass LED filter in some playback setups. | Heavily hardware/player dependent; treat as “optional flavor”. |
E1x |
Fine porta up | Fine pitch slide up by x (small step) on the row. |
Fine commands often apply once (not every tick). |
E2x |
Fine porta down | Fine pitch slide down by x on the row. |
Great for subtle pitch nudges. |
E3x |
Glissando control | When enabled, tone portamento steps in semitones (stair-step) instead of smooth slide. | Chiptune-y “stepped” slides. |
E4x |
Vibrato waveform | Selects vibrato waveform (sine/ramp/square/etc. depending on implementation). | Wave options vary; test in your target player. |
E5x |
Set finetune | Adjusts sample finetune (pitch offset) for the current instrument. | Useful for tuning samples to track key. |
E6x |
Pattern loop | Marks loop start (x=0) or loops back to the marker x times (x>0). | Essential for in-pattern repeats and fills. |
E7x |
Tremolo waveform | Selects tremolo waveform in some implementations. | As with vibrato, waveform set is player-dependent. |
E8x |
Panning (varies) | Used for panning in some tracker families/players. | Gotcha: not guaranteed in strict ProTracker playback. |
E9x |
Retrig note | Retriggers the current note every x ticks. |
Great for drum rolls and “machine-gun” effects. |
EAx |
Fine vol slide up | Fine volume increase by x on the row. |
Use for gentle accent shaping. |
EBx |
Fine vol slide down | Fine volume decrease by x on the row. |
Useful for tight fades without tick-based slide. |
ECx |
Note cut | Cuts the note after x ticks within the row. |
Clean choppy gating without extra rows. |
EDx |
Note delay | Delays triggering the note by x ticks within the row. |
Used for swing / flam / human timing tricks. |
EEx |
Pattern delay | Repeats the current row for x additional times. |
Dramatic “hold” effects and breakdown stutters. |
EFx |
Invert loop (legacy) | Legacy/quirky effect seen in some old player behaviors. | High variance: avoid if targeting strict compatibility. |
F01–F1F as speed (ticks per row),
and F20–FFF as tempo (BPM-ish).
If you’re composing for a specific target player/emulator, test the timing there.
Tips, patterns, and “classic MOD tricks”
Drum programming
- Keep kick + bass out of the same channel if you want them to overlap (one channel = one voice).
- Use sample offset (9xx) to slice breaks and get crunchy edits without extra samples.
- Retrig (E9x) is your friend for rolls and energy builds.
Leads & slides
- Tone portamento (3xx) for expressive leads: place target note, keep instrument, adjust speed.
- Glissando (E3x) makes slides “stepped” (classic chippy ladder-slide).
- Vibrato (4xy) adds life; keep depth small for realism.
Arrangement hacks
- Pattern loop (E6x) for fills: loop a short section a few times before moving on.
- Pattern break (Dxx) and position jump (Bxx) can create alternative song paths or endings.
- Pattern delay (EEx) makes rows “hang” for dramatic pauses.
Keyboard + editing cheatsheet (generic)
Exact keys differ by setup/version, but these patterns are common across tracker muscle memory. Replace these with your exact keymap if you want this page to match your build/emulator config.
| Action | Typical keys | Notes |
|---|---|---|
| Enter notes (piano row) | Z…M / Q…P | Bottom row = one octave; top row = next octave (varies). |
| Change octave | F1/F2 or [/] | Common mapping across tracker setups. |
| Insert/delete row | Ins / Del | Sometimes affects note column only vs whole row (config dependent). |
| Play pattern / song | Space / Enter | Varies heavily; document your chosen mapping for your wiki. |
Using ProTracker today
Common modern workflows include:
- Running ProTracker on real Amiga hardware.
- Running it under an emulator (fast iteration + easy file movement).
- Composing in a modern tracker that exports MOD-compatible patterns/samples, then testing in a strict player.
FAQ
Why do notes “cut off” when another sound plays?
Each channel is typically monophonic: one sample voice at a time. If you trigger a new note/sample on the same channel, the previous sound is replaced. Solution: plan channel roles (kick/bass/lead/etc.) to avoid collisions.
Why does my module sound different in another player?
Differences usually come from:
- Tempo/speed interpretation (
Fxx) - Extended effects (E commands) edge cases
- Panning support and stereo mixing differences
- Interpolation vs “raw” mixing
If your goal is strict authenticity, test in a known strict ProTracker-style playback target.
What’s the fastest way to learn?
Load a classic MOD you like, mute channels, and study patterns row-by-row.
Try recreating a 4-bar drum loop with 9xx offsets and E9x retrig—these two tricks teach a lot quickly.
Edit / extend this wiki
This HTML is designed to be dropped into a site builder or hosted as a standalone page. If you want, I can also generate:
- Multi-page wiki layout (index + effects + MOD format + tutorials) with sidebar nav.
- A JSON-driven effects reference (so you can update commands without editing HTML).
- “MOD spotlight” template pages (song analysis pages with embedded audio players and pattern screenshots).