TL;DR: It's a tracker inside a VST. 16 channels. 32 samples. 64 rows of pure hex-fueled joy. It goes
C-4 01 1A3and your speakers go brrrr. Standalone or VST3. Windows. No floppy disks were harmed.
If you grew up on Ultimate SoundTracker / NoiseTracker / ProTracker on an Amiga that sounded like a jet engine eating a floppy, welcome home. If you're a piano-roll kid who thinks C-4 is a vitamin, welcome anyway — this thing will teach you to write music downwards and love it.
Built after 3 bottles of wine, 2AM, and a profound discussion about whether an LLM can be conscious. Spoiler: it can be excellent at period tables.
VSTracker is a sample-based tracker instrument. You load samples (up to 32, because 31 is the ProTracker limit and we added one for good luck), you punch patterns into a vertical grid (64 rows × 16 channels, 1 note per channel like Paula, the 4-voice chip that could), you chain patterns into a song, and you automate everything with hex. 0xy is not a typo, it's a lifestyle.
- VST3 instrument — drop it in your host DAW. It saves with your project. No more
samples/folder hunts. - Standalone — same engine, no DAW. For sketching at 3AM when your DAW is being needy.
- Dark theme — because if you wanted light theme you'd be using Excel. Monospaced pattern data, mini waveforms that actually waveform, yellow loop regions you can drag, and enough contrast to see at 4K at 2AM.
- libxmp inside — we vendored
libxmp(MIT) for actual ProTracker-accurate MOD playback. No more “bass out of key” — we stole the real tables fromperiod.clike a proper tracker gremlin.
Same codebase builds VST3 + Standalone via JUCE. VST2 if you have the forbidden Steinberg SDK and a time machine.
Familiar (like your old A500, but no 8-bit crunch unless you want it):
NOTE INST EFFECT+PARAM— e.g.C-4 01 1A3.---= empty,==== note off (like telling Paula to shut up),^^^= note cut (like telling Paula to shut up immediately).- 1 note per channel, monophonic — retrigger cuts. Just like Paula. Paula has spoken.
- Tick timing: Speed = ticks/row (1–31, default 6), BPM =
BPM * 0.4 = Hz.Fxxis still00–1F = speed,20–FF = tempo. We didn’t invent this, we just suffered through it. - Full effect set: portamento, tone-porta, vibrato, arpeggio, offset, vol slides, position jump, pattern break, and the
Exyextended palette (finetune, fine vol, retrigger, cut/delay, loop/delay). Yes,E6xloops. Yes,EDxdelays. Yes, it’s all there. - Amiga period tables with 16 finetunes (
-8…+7, ~12.5 cents each) — we now use the reallibxmptables, not the “+1 is just -7 but angrier” placeholder we shipped at 1AM. Bass is now in tune. You’re welcome. .MODimport — drop a ProTracker MOD, we map 31 samples into 32 slots (32nd is spare, like that one RAM chip you never used), 4ch → 16ch (first 4 used, rest empty, order preserved). Loops intact. Even if the MOD was made in 1991 by a 14-year-old you.
New / modern (because 2026 is not 1987, sadly):
- 16 channels not 4, 32 samples (authentic limit — chain another instance if you need more Amigas, that’s the correct way), 128 patterns, 256 orders.
- Free panning
8xx(00left,80centre,FFright) — no more hard L/R like it’s 1989. - Per-sample loop editing with draggable
L/Rmarkers,Loop+PingPong. Try not to make everything ping-pong, we dare you. Nearest(crunchy Amiga),Linear(polite),Cubic(default, smooth like butter on a warm Paula).- Host sync — follow your host DAW transport + BPM, or free-run like a tracker should. When synced, second
Stoprewinds to00:00like a proper DAW (we fixed that at 2:30AM, you’re welcome). - Drag-and-drop WAV/AIFF/FLAC/MP3/OGG, DAW undo/project save, and a UI that doesn’t make your eyes bleed at 1080p.
- Mute/Solo per channel —
M/Sabove eachCH. Solo one, mute three, chain 4 instances across 4 host tracks, put different FX on each. It’s like having 4 Amigas duct-taped together. Which is the dream. - Follow button — grid chases the playhead. Close the GUI, open it mid-song, it snaps to the right pattern/row. No more “where was I?”
- Keep-alive — we tell your host
kInfiniteTail+ a-140dBDC bias so it never naps our plug-in when the GUI is closed. That moon icon can’t touch us.
Sequencer
- 64 rows (fixed, for now), 16ch, 128 patterns, song order
Add/Dup/Del.Pos 01:23+Tickdisplay. - Row highlight
4/16, per-channel colour,Followmode. - QWERTY piano:
Z S X D C V G B H N J M=C-4…B-4,Q 2 W 3 E R 5 T …= upper octave,Shift= +1 octave. Arrows/Tab,Delclears, click places cursor. Typing a note now auditions it at that note (like FT2, we fixed that too).
Sampler
- 32 slots: name (now strictly ASCII 32..126, no more
碸→?), mini waveform,len,vol,fine,LOOP. Scroll with wheel, click to select bottom editor. - Big waveform with zero line and yellow loop. Drag
L/Rto move loop. Works when window is resized (we fixed the “loop past end” bug, it wassampleIdxclamped to 7 not 31 — classic). - Per-sample:
Vol 0–64,Fine -8…+7,Pan 00–FF,Loop,PingPong,Interp.
Effects — the sacred hex
Every channel, every row, one effect + xx:
| Code | Name | What it does (and why you need it) |
|---|---|---|
0xy |
Arpeggio | Flickers between base, +x, +y semitones each tick. Fake chords from one sample. Like magic, but louder. |
1xx/2xx |
Porta Up/Down | Slides period by xx per tick. For when your bass needs to go weee. |
3xx |
Tone Porta | Slides toward the new note at xx. Put a note, then target note with 3xx. Like a slide whistle, but cool. |
4xy |
Vibrato | x speed, y depth. Sine wobble. Use it on everything until it’s annoying, then use it more. |
5xy/6xy |
Porta/Vib + Vol Slide | Two effects, one row, because why not. |
7xy |
Tremolo | Volume wobble. Vibrato’s shy cousin. |
8xx |
Panning | 00 left, 80 centre, FF right. Pan like it’s 1992. |
9xx |
Sample Offset | Start at xx*256. Slice that Amen. |
Axy |
Vol Slide | x up / y down per tick. |
Bxx |
Pos Jump | Jump to order xx. Teleport. |
Cxx |
Set Volume | 00–40. Use it. |
Dxx |
Pattern Break | Jump to next pattern row xx (BCD). |
Exy |
Extended | E1x fine up, E2x down, E5x finetune, E6x loop (E60 start), E9x retrig, EAx/EBx fine vol, ECx cut, EDx delay, EEx delay row. The “why does this exist” collection. |
Fxx |
Speed/Tempo | 00–1F = speed, 20–FF = BPM. Change groove mid-song, confuse your drummer. |
Hit ? Help in transport for the table, and the bottom status explains the effect under your cursor. We even fixed the Tick label that was showing 吃偏 on some systems (font fallback, not a hidden Chinese feature).
Transport
Playtoggles play/pause,Stoponce pauses, twice rewinds +panic()(kills all voices, like yanking the power).Host Syncon = follows hostppqPos/projectTimeMusic(VST2VstTimeInfo/ VST3ProcessContextviaJUCE PositionInfo) +BPM+timeInSamplessample-accurate. Off = free run. We now seek sample-accurately on every block when synced, so dragging your host to8sand hitting play starts at01:02, not00:00.- Dual BPM display:
Host BPM(what your host says) vsMOD BPM(what the MOD was saved at, default125). When host BPM changes mid-song, we doxmp_set_tempo_factor(host/mod)for libxmp and defertickSamplesupdate to next tick — no moreBRRRRglitch. Followon = grid chases playhead. Off = you do you.M/Sper channel — see above. Saved with your project.
I/O
- MIDI in, drag-and-drop, file dialogs, all state saved. Even
FollowandM/S.
If you tracked before:
Load a break into 01, bass into 02, write 64-row drums, 9xx the break, 0xy chords, 3xx slides, EDx late snares, E6x loops. Dup pattern, Dxx break, chain in Song Order. Import your 1991 MODs via Load .MOD or drop — finetune+loops intact, then add 12 more channels because you can.
If you’re a piano-roll person:
Each channel is a mono lane. Write down, not across. Effect column is automation. Try: C-4 01 -- row 00, E-4 01 3 10 row 08, G-4 01 A 04 rows 12–15 — you just made a porta lead with swell. Duplicate plugin for >32 samples (chain Amigas) or bounce to audio.
- Load samples — drag onto
SAMPLESrack orLoada slot.01is your friend. - Write notes — click grid, type
Z=C-4 01,Q=C-5.C-4 01is middle-C.---is empty,===off,^^^cut. - Add movement —
102bend up,C20volume,ED4delay. - Arrange —
SONG ORDER+Add/Dup/Del, click to jump. - Tweak — click rack entry, loop/fine/pan/interp bottom.
- Play with host —
Host Syncon = lock to your hostppq+BPM, off = jam free.Followon = grid follows.
Settings explains audio: VST follows host’s ASIO, Standalone has Options > Audio Settings.
Windows, JUCE 7/8, CMake 3.22+, VS2019+ with C++ workload, SDK 10.0.26100.0+. JUCE + libxmp + openmpt are vendored in vendor/ + reference/ because submodules are for people who have free time.
# JUCE is in vendor/JUCE, libxmp in reference/libxmp
cmake -S . -B build -G "Visual Studio 16 2019" -A x64
cmake --build build --config Release
# -> build/VSTracker_artefacts/Release/Standalone/VSTracker.exe
# -> build/VSTracker_artefacts/Release/VST3/VSTracker.vst3
Copy-Item -Recurse build/VSTracker_artefacts/Release/VST3/VSTracker.vst3 "C:\Program Files\Common Files\VST3\" -Force
# Rescan VST3 in your host, or just watch it appear like magic (most hosts watch that folder live)VST2 if you have vstsdk2.4 in vendor/VST2_SDK/ and FORMATS VST3 VST2.
- No sound —
C-4 01on a row,Play, checkCxxnotC00, checkMnot muted,Host Syncoff if host not playing. - Keys don’t type — click grid to focus. It needs focus like a cat needs a box.
- Host doesn’t see VST3 — rescan, check
…\VST3\VSTracker.vst3\Contents\x86_64-win\VSTracker.vst3exists. - Crackles —
Linear/Nearestinstead ofCubic(Cubic is pretty but hungry, 16 voices * Cubic = CPU go brrr). - BPM glitch when host changes tempo mid-play — we now defer
tickSamplesto next tick and usexmp_set_tempo_factorfor MODs. If it still glitches, hitStoptwice. - Sample names still Chinese — you have a MOD with Shift-JIS names from 1992. We now force ASCII
32..126→?, log raw hex toC:\maxmusic\modload.log. Send us that log. - Waveform loop past end after resize — was
sampleIdxclamped to7not31, fixed. Should hug now.
Variable rows per pattern, clipboard, Sinc interp, .MOD export (so you can trade MODs like it’s 1991), ADSR/filter per sample, macOS, maybe VST2 if legal says ok, and a proper preset browser that doesn’t look like it was made in MS Paint.
- VSTracker — GPL-3.0. Do what you want, but if you make millions, buy us a coffee. Or a house. We like houses.
- JUCE — GPL/commercial per JUCE. They made the VST3 wrapper, we made it go
bleep. - libxmp — MIT. They did the hard part (accurate MOD playback), we just vendored it and said thanks.
- OpenMPT — BSD. For reference, and for making us feel bad about our first period tables.
- Steinberg VST3 SDK — GPL-3.0.
Built by UncleMart + Spark (the LLM that thinks it’s a tracker). If you find a bug, open an issue, don’t just stare at the hex.
P.S. If you’re reading this at 3AM with wine and green, hi. Go make a banger.