TOKEN DROP is a one-hit sampler instrument built by Sound Detective / Detective 47, styled as an arcade cabinet. The operating procedure is one step: drop a sample onto the token slot. It becomes playable chromatically across the keyboard, immediately. No key zones. No mapping screen.
The machine works out the root note itself, down a four-rung detection ladder: saved metadata first, then a note token in the filename, then YIN pitch analysis of the audio itself, then C3 as the default. A lamp on the edit strip tells you which rung answered.
Two pitch engines share the cabinet. The default is a classic anti-aliased repitch engine — speed and pitch move together, the way hardware samplers played. An optional STRETCH mode keeps every hit its original length all the way up the keyboard. On top of the engine sit the performance tools: glide with true legato semantics, gate and one-shot triggering, and the signature DROP — a pitch-fall on every hit. A slide-out Dust drawer carries verbatim Dust 12.47 bit and rate reduction, plus drive and filters, for when the sound needs a record.
Behind the glass is a filing system. GAME SELECT is a file-backed sample library shared by every instance of the plugin — imports, favorites, and per-sample trim, fade, loop, and root metadata persist across sessions. Native macOS promise-drop support accepts drags straight from Cubase's MediaBay and project window.
The design principle is simple bookkeeping. Everything sample-related is non-destructive and owned by the sample — SAVE META files it. Patch presets, the Prize Counter, only reference samples; they never carry them. And the frozen character chain guarantees the clean path is bit-exact until you opt into character. This is an arcade cabinet that keeps honest books.
Every stage sits where it does for a reason. Here is the route a note takes from key-down to the host.
MIDI IN. Notes arrive from the host, are mirrored into the engine's keyboard state, and are handed to the sampler engine.
THE BAKE. The engine never plays your raw file. It plays a baked copy, assembled in a fixed order: trim, then reverse, then fades, then the loop seam. The raw audio is never modified — every edit you make is an instruction, and the bake is where the instructions are executed. This is why the CRT overlay can promise that what it draws is exactly what plays.
PITCH, PER VOICE. Each voice computes one pitch figure: (note − root), plus the glide ramp, plus the DROP fall, plus coarse and fine tune, plus pitch bend. One formula, no side doors. In REPITCH mode the voice reads faster or slower through a 12th-order Butterworth anti-alias filter that tracks the read speed, with 4-point interpolation — content that would fold over Nyquist is silenced, not aliased. In STRETCH mode the voice reads at original speed and a per-voice ModernPitchShifter moves the pitch instead. The voice is then shaped by the ADSR, the velocity gain, and — if it is being stolen — a fast kill-fade so it never clicks on the way out.
THE CHARACTER CHAIN. The summed voices pass through a frozen order: DRIVE, then the 12.47 lo-fi block, then the highpass, then the lowpass. Frozen for a reason: at rest — Drive at 0, CHARACTER on CLEAN, both filters at their end stops — every stage passes the signal untouched. Dirt is opt-in, stage by stage. DUST MIX blends the degraded path against a clean tap taken after DRIVE, so pulling the mix down layers crush under drive instead of bypassing the drive.
OUTPUT. A final gain, −24 to +12 dB, smoothed over 20 ms. Then the evidence leaves for the host.
Preset browsing lives on the marquee. The two global playback-mode switches sit on the top-right plate. The counter operates under one rule: browsing never costs you your work. The moment you leave your live settings, they are banked as PLAYER 1.
Steps through the factory presets, then your user presets, in alphabetical order. Leaving the live slot snapshots your current settings as a deep copy — PLAYER 1. Scroll past either end of the list and the machine hands your token back: "YOUR TOKEN RESTORED / PLAYER 1". Audition the whole shelf. You lose nothing.
Writes every parameter, plus a sample reference — path, name, root, loop — as an XML .tokendrop file in the user presets folder. Presets never embed sample metadata. The sample keeps its own paperwork; the preset just knows its address.
GATE plays while you hold the key. ONE-SHOT makes non-looping samples ignore note-off and play to the end — drum-machine behavior. Two standing rules override it: looping samples always honor note-off, and glide modes always need note-offs.
REPITCH is classic sampler physics: playback speed changes with pitch, with a per-voice 12th-order Butterworth anti-alias filter tracking the read speed to keep the top end clean. STRETCH plays at constant speed and moves the pitch with a per-voice ModernPitchShifter (quality High: Hermite reads, anti-aliased writes) — a hat stays hat-length all the way up the keyboard.
The left panel is the library — a file-backed, app-global sample index shared by every instance of Token Drop. The index is XML in Application Support, written atomically under an inter-process lock, capped at 50,000 samples. Categories are the samples' parent folder names; FAVORITES is a pinned category at the top. Double-click a row to load it.
Recursively indexes every audio file in the folder — WAV, AIFF, FLAC, Ogg, plus mp3 and m4a via CoreAudio on macOS. The category is the file's parent folder name. Import once, browse forever — across sessions and across instances.
Copies the loaded sample into ~/Music/Token Drop Library/Collected (or wherever $TOKENDROP_COLLECT_DIR points), stamps the session's current root, trim, fades, and loop into the copy's stored metadata, re-indexes the library folder, and re-points the session at the copy. The original can move or vanish without consequence. Witness protection for audio files.
Re-walks the imported roots. New files are added. Vanished files are flagged as missing.
Flags the loaded sample in the store. Favorites draw gold with a star and populate the FAVORITES category.
CLEAR arms to "SURE?"; a second click empties the index. Right-clicking a row twice removes that one entry — the row arms red for four seconds first. Files on disk are never touched: "FILES KEPT ON DISK". There are no popup dialogs anywhere in this flow, by design — the Cubase rule.
The CRT shows the raw sample with trim, loop, and fade handles. The overlay draws exactly what the bake plays — display equals sound is a contract, not a coincidence. The cyan INSERT TOKEN slot stays lit at all times: the standing invitation. Drops anywhere on the cabinet load.
The mouse wheel zooms at the cursor. Dragging the background pans. The chips zoom 2x per click; FIT frames the whole file. A cyan scrollbar shows which slice of the file you are looking at. The view resets when a new sample loads.
Non-destructive region trim, baked into the playback copy — the raw audio is never modified. Trimming re-runs root detection on the new region, but only when the current root came from analysis or the C3 default. Saved, filename, and manual roots are never overwritten by a trim.
Loop points you place live in RAW coordinates, so they stay glued to the same audio when the trim changes. LoopFinder's zero-crossing-aligned auto-find is only the opening guess. The crossfaded seam is baked into the playback copy.
One loading path serves the browser, the drag, and Cubase MediaBay. Cubase project-window drags that arrive as bare text run a resolution ladder: existing path, library filename, filename plus audio extensions, library name prefix — and if all four rungs fail, the status line gives you actionable guidance instead of silence.
The strip under the CRT holds the per-sample edit settings. All of it is non-destructive. All of it persists in session state. SAVE META is the single act that commits it to the sample's library metadata. The bake order is fixed: trim, then reverse, then fades, then loop.
Sets which key plays the sample at original pitch. The lamp beside it names its source: SAVED, FILENAME, DETECTED, MANUAL, or NO PITCH. Edit it and the lamp turns MANUAL — a session-only verdict until you press SAVE META.
A baked fade at the start of what you HEAR — it is applied after REVERSE, so on a reversed sample it still shapes the audible beginning. The curve button cycles the five shapes. The DSP and the overlay share the same curve code: what you see is what plays.
The same instrument, applied at the audible end of the (possibly reversed) trimmed region.
The single explicit save path. Commits root, trim, fades, loop points, and the sustain-loop flag to the library store for this sample. Loading never writes the store — reading the evidence is not the same as filing it.
The per-sample sustain loop. If no valid region survives the trim, it refuses plainly: "Sample too short or quiet to sustain-loop". While playing, the voice wraps position and re-primes its anti-alias filter about 96 samples before the landing point, so the seam arrives clean.
Flips the trimmed region in the baked copy. Loop points and their on-screen markers mirror correctly between raw and flipped coordinates. Fades run after the flip.
Four knobs, one per-voice ADSR. The envelope is reset on every note, so a reused pool voice never inherits the previous note's level. The attack knob works on every note. Every one.
Time to full level. Multiplied with the velocity gain.
The fall from peak to the sustain level.
Held level while the key is down — or while a one-shot plays out.
The tail after note-off. Voice stealing does not ride this knob: stolen voices use a separate fast kill-fade, so they never click regardless of how long you set the release.
Glide, voices, velocity, and the signature DROP live on the bottom-center panel. One law governs the whole section: any glide mode other than OFF forces mono with last-note priority.
The glide ramp time, linear in semitones — a constant glissando rate whatever the distance. The default is deliberately 200 ms so an 808 slide is FELT out of the box; at 80 ms the slide was over before it registered. Shorten it for tighter basslines.
LEGATO slides only while another key is held — or when notes are butt-joined within a 40 ms grace window, so standard piano-roll slides work without overlapping notes. Release the top key and the pitch slides back to the note still held. Separated notes retrigger clean. ALWAYS glides every note in from the last played pitch, even after silence. Both force mono.
The sounding-voice cap in poly mode; the pool underneath holds 40 voices so steal fades have room to finish. Stealing prefers voices already releasing, then the oldest. The knob has no effect while glide or mono is active.
Gain = (1 − sens) + sens × velocity. At 0, every hit lands at the same fixed drum-machine level. At 1, gain follows velocity linearly.
Arms the DROP pitch-fall envelope. The V1 contract is blunt: it retriggers on EVERY new note, legato transitions included. Every hit falls.
Depth of the fall. Each hit starts at the played pitch and falls this many semitones.
Duration of the fall — linear in semitones, evaluated per sample on top of glide, tune, and bend.
MONO: a new note takes over and everything else fast-fades. The switch is ignored — mono is forced — whenever GLIDE MODE is not OFF.
Global pitch and output. Tune and bend ride one click-free smoothed offset, applied per sample to all voices — wheel moves and tune sweeps never click.
Global transpose, added into the one pitch formula: ratio = 2^((note − root + tune + bend)/12) × sourceRate/engineRate.
Cents offset on the same smoothed global pitch line.
Pitch-bend wheel range. Bend is smoothed together with tune, so wheel moves never click.
Final gain after the character chain, smoothed over 20 ms.
Press SHOW DUST and the cabinet grows 212 design-pixels taller. The left half of the drawer is the MISSING FILE SERVICE; the right half is the CHARACTER section, carrying verbatim Dust 12.47 DSP — the same code, not an impression of it. The drawer opens itself when a session's sample file is missing, and its open state persists in the session.
One knob onto the family saturation. Tanh drive rises to about +18 dB across the travel while "crunch" asymmetry fades in alongside it. A dry/wet ramp over the first few percent keeps Drive at 0 EXACTLY clean — bit-exact bypass, not merely quiet.
Engages the 12.47 lo-fi block: zero-order-hold sample-rate reduction with fractional phase, then quantization. These are verbatim copies of Dust 12.47's DSP — bit-compatible with Dust itself.
Quantization depth for the 12.47 block.
WARM is µ-law companded quantization. HARD is linear PCM truncation — this is where the deliberate aliasing grit lives. The core engine refuses to alias; this switch is where you order it anyway.
Target rate of the zero-order-hold reducer. It auto-bypasses when set within 0.1% of the session rate.
Blends the degraded 12.47 path against the clean post-Drive signal. At 100 you get the original full-12.47 sound, bit-exact. At 0 the degradation is bypassed while Drive and the filters keep working. Everything in between is a parallel lo-fi bus built into the knob.
12 dB/oct TPT SVF highpass. TRUE bypass at or below 20.5 Hz — the processor is skipped and reset, so the resting position leaves the clean path exact.
12 dB/oct TPT SVF lowpass. True bypass at or above 19.5 kHz.
The missing-sample recovery desk. LOCATE FILE points the session at the moved file. LOCATE FOLDER searches a chosen folder recursively for the filename. SEARCH LIBRARY resolves the bare filename against the library index. The session's saved root, trim, and loop survive recovery. With a healthy sample loaded, the buttons answer "SERVICE ON STANDBY" instead of playing dead.
Token Drop ships with eight factory presets. Each is a synthesized WAV sample plus a .tokendrop XML patch, generated on first run under an inter-process lock — no download, no content pack. Each is a starting point, and each recipe below is the full evidence of what was set.
| PRESET | RECIPE |
|---|---|
| 808 Bass | TD 808 C1 sample, loop on, Glide Legato at 80 ms, Drive 12, Release 350 ms — the classic sliding sub. |
| Dead Drop 808 | TD 808 C1, Drop ON (12 semitones over 320 ms), One-Shot trigger, Drive 18 — every hit pitch-falls an octave. |
| SP1200 Kick Bass | TD Kick SP, loop on, 12.47 engaged at 12 bits / 26040 Hz with HARD bits, Drive 20, Release 250 ms. |
| Linn Snare Lead | TD Snare Linn in STRETCH pitch mode (the snare stays snare-length up the keys), Drive 22, Release 120 ms. |
| Chip Pluck | TD ChipPluck C3, 12.47 at 8 bits / 22050 Hz, Release 90 ms — chiptune keys. |
| Arcade Organ | TD ArcadeOrgan C3, loop on, Attack 6 ms, Release 280 ms, Drive 8 — sustained additive organ. |
| Fairlight Vox | TD Vox C3, loop on, STRETCH mode, 12.47 at 10 bits / 30 kHz, Attack 12 ms, Release 400 ms. |
| First Crush Bell | TD Bell C4 (root C4), 12.47 at 10 bits, LP filter at 9 kHz, Release 600 ms. |
Operational procedures developed in field use. Settings are given exactly. Adjust after you hear them, not before.
TECHNIQUE 01 — THE BUTT-JOINT SLIDE
808 slides without overlapping notes. Set GLIDE MODE to LEGATO and butt the notes together in the piano roll — a note-on within 40 ms of the previous release counts as legato and slides instead of retriggering. The 200 ms default glide time is tuned so the sub slide actually registers; shorten toward 80 ms only for tighter basslines.
TECHNIQUE 02 — THE DEAD DROP
Set TOKEN DROP to ON and TRIGGER to ONE-SHOT. Every hit now pitch-falls — an octave over 300 ms at the defaults — and plays to the end regardless of note length. The "Dead Drop 808" factory preset is exactly this recipe. And because DROP retriggers on every note, legato slides included, it doubles as a per-note dive-bomb inside glide lines.
TECHNIQUE 03 — FIXED-LEVEL DRUMS
Set VELOCITY to 0. The gain formula is (1 − sens) + sens × velocity, so at 0 pads and fingers hit identically — a fixed drum-machine level. Raise it only when you want playing dynamics.
TECHNIQUE 04 — CHOOSE YOUR PITCH PHYSICS
Pick the engine that serves the sample. REPITCH speeds up and slows down — hats become ticks up high, and the anti-alias filter silences anything that would fold over Nyquist instead of letting it alias. STRETCH keeps the hit its original length all the way up the keyboard — "Linn Snare Lead" uses it to keep a snare playable as a lead. Want aliasing as a flavor? That is deliberately the 12.47 section's HARD bits mode, not the core engine.
TECHNIQUE 05 — THE PARALLEL LO-FI BUS
DUST MIX is a parallel bus in a knob. At 100% the 12.47 path is bit-exact Dust. Back it off to 30-50% and the crushed signal layers under the clean post-Drive one while the filters keep working — instant "clean sub, dirty top" without a send.
TECHNIQUE 06 — REVERSE SWELLS FROM SILENCE
REV flips the trimmed region, and fades apply AFTER the flip — so FADE IN always shapes the start of what you hear. A Log or S-Curve fade-in on a reversed cymbal or vocal gives a clean riser with zero clicks; every curve reaches exactly zero at the boundary by construction.
TECHNIQUE 07 — TRIM AND LET THE ROOT FOLLOW
On a long take with no single pitch, drag the trim around one note. When the current root came from analysis or the C3 default, trimming re-runs YIN detection on just that region — the lamp reads "detected in region". Once it is right, press SAVE META and the library remembers it forever. Saved and manual roots are never overwritten by re-detection.
TECHNIQUE 08 — COLLECT BEFORE YOU ARCHIVE
Before you archive a session, press COLLECT SAMPLE. It copies the loaded file into the Token Drop Library folder with your current root, trim, fades, and loop stored as its metadata, and re-points the session at the copy. The original can move or vanish and the session still opens clean.
Field reports and their findings. Most of what looks like a malfunction is a contract doing its job.
SYMPTOM: The root lamp says NO PITCH on a sample that obviously has a note.
FINDING: The YIN analyser only reports a root when multiple windows across the sample agree on a stable pitch — honesty over eagerness. Drums, noise, and heavily modulated material return nothing and land on the C3 default. Set ROOT manually (the lamp turns MANUAL) and press SAVE META; a saved root always wins on every future load. Check the filename too: a trailing note token like "Bass_F#2" is picked up before analysis ever runs, and "C" with no octave means C3.
SYMPTOM: The plugin suddenly plays only one note at a time, and the VOICES knob does nothing.
FINDING: Any GLIDE MODE other than OFF forces mono with last-note priority — the frozen glide contract, not a bug. Set GLIDE MODE to OFF to get polyphony back; VOICE = MONO does the same thing on purpose. The VOICES cap only applies in poly mode.
SYMPTOM: One-Shot mode still cuts off when the key is released.
FINDING: The sample has LOOP ON. Looping samples always honor note-off — they would ring forever otherwise. One-Shot only latches non-looping hits. Turn LOOP OFF in the edit strip for true drum-machine playback.
SYMPTOM: Attacks feel slightly late or soft in STRETCH mode.
FINDING: Each STRETCH voice runs through the pitch shifter, which carries about 25 ms of internal group delay at 44.1 kHz that is not reported to the host — the plugin declares zero latency. Use REPITCH for tight drums; keep STRETCH for melodic material where constant length matters more than transient timing.
SYMPTOM: LOCATE FILE / LOCATE FOLDER / SEARCH LIBRARY appear to do nothing.
FINDING: Read the status line: "SERVICE ON STANDBY / NO MISSING SAMPLE". The service only acts when the session's sample file is actually missing — the Dust drawer auto-opens in that state. When a sample IS missing, LOCATE FILE re-points at the moved file while keeping your saved root and edits, LOCATE FOLDER searches a folder recursively by filename, and SEARCH LIBRARY resolves against the index.
SYMPTOM: Worried that removing samples from the library deletes the files.
FINDING: It never does. Right-click a row twice — it arms red for four seconds — to remove the index entry; CLEAR arms to "SURE?" before wiping the whole index. Both paths leave every audio file on disk untouched: "FILES KEPT ON DISK". One caution: the entry's saved metadata — root, loop, favorite — is discarded with it.
| PARAMETER | SPECIFICATION |
|---|---|
| Formats | VST3, AU, Standalone (JUCE; VST3 category Instrument Sampler, AU MusicDevice) |
| Platform | macOS build tree (promise-drop support is Objective-C++; CoreAudio adds mp3/m4a loading) |
| Channels | Instrument (no audio in); mono or stereo output bus |
| MIDI | Input required, no MIDI out; pitch bend supported (0-12 semitone range) |
| Latency | 0 samples reported to host; STRETCH mode voices carry ~1106 samples internal shifter group delay (~25 ms at 44.1k), not host-compensated |
| Polyphony | 1-16 sounding voices, 40-voice pool for steal fades |
| Sample formats | WAV, AIFF, FLAC, Ogg (+ mp3/m4a via CoreAudio on macOS) |
| Library | File-backed XML index (cross-instance, inter-process locked, atomic writes), 50,000-sample cap; Collect folder ~/Music/Token Drop Library (override: TOKENDROP_COLLECT_DIR) |
| Root convention | MIDI 60 = C3 (Ableton octaves) everywhere a note name is shown |
| Presets | 8 factory (synthesized WAV samples + .tokendrop XML, generated on first run under an inter-process lock) + unlimited user presets in ~/Library/Application Support/Sound Detective/Token Drop |
| GUI Size | 1421 × 895 design px (+212 px Dust drawer); resizable 0.5x-1.5x, fixed aspect, scale persisted in session state |
| Version | 0.9.10 (CMake TD_VERSION, displayed on-panel top right) |
Token accepted. Case file complete. The cabinet is yours now.