DSP
← docs

Slammer · v0.4.3

Slammer — Documentation

Three-layer kick drum synthesizer with a parallel 909-style clap voice, a 16-step sequencer, and one-shot WAV/AIFF bounce. VST3, CLAP, or Standalone on Linux, macOS, and Windows.

1. Install

Grab the archive for your platform from the latest release, extract it, and run the install script inside.

Linux

tar xzf slammer-linux-x86_64.tar.gz
cd slammer-linux-x86_64
./install.sh

The script copies slammer.vst3 to ~/.vst3/ and slammer.clap to ~/.clap/. The standalone binary stays put and runs from wherever you left it. Rescan plugins in your DAW — Slammer shows up as hyperfocusdsp / Slammer.

macOS

The binaries are not codesigned or notarized. macOS will block them on first launch; here's the full walkthrough.

  1. Double-click the .tar.gz in Finder to extract, or in Terminal:
    cd ~/Downloads
    tar xzf slammer-macos-arm64.tar.gz
    cd slammer-macos-arm64
  2. Clear the quarantine attribute on the extracted folder. The dot at the end means "this folder and everything in it":
    xattr -dr com.apple.quarantine .
  3. Start the standalone through the included launch script — it passes --period-size 4096 to work around a CoreAudio buffer-size issue in the audio backend:
    ./slammer-macos.sh
    If macOS still blocks it, open System Settings → Privacy & Security, scroll down, and click Open Anyway. You only do this once per install.
  4. Install the plugin bundles into the standard plugin folders:
    cp -r slammer.vst3 ~/Library/Audio/Plug-Ins/VST3/
    cp -r slammer.clap ~/Library/Audio/Plug-Ins/CLAP/
    Rescan in your DAW.

Logic Pro users: Logic is Audio Unit-only. Slammer doesn't ship AU (see on-purpose limits). Ableton Live, Bitwig, REAPER, Studio One, FL Studio, and Renoise on macOS all load Slammer via VST3 or CLAP.

Windows

Extract the zip, then run install.bat as Administrator (right-click → Run as administrator). It copies the plugin bundles into the system plugin folders and leaves the standalone .exe in place.

SmartScreen may flag the unsigned installer. Click More info → Run anyway.

2. Verify your download

Every release ships a SHA256SUMS.txt alongside the archives. Slammer is unsigned open-source software — verifying the hash before running is worth the ten seconds.

# Linux / macOS
sha256sum -c SHA256SUMS.txt

# Windows (PowerShell)
Get-Content SHA256SUMS.txt | ForEach-Object {
  $hash, $file = $_ -split '\s+'
  $actual = (Get-FileHash $file -Algorithm SHA256).Hash.ToLower()
  if ($actual -eq $hash) { "$file OK" } else { "$file FAILED" }
}

If you want a second opinion, drop the archive into VirusTotal for a third-party scan.

3. First sound in 60 seconds

  1. Launch Slammer standalone or instantiate it in your DAW.
  2. Press T anywhere in the editor to fire a test kick.
  3. Use / to cycle through factory presets.
  4. In standalone, hit Space to play the sequencer. In a DAW, start transport — Slammer locks to the host.
  5. Click BOUNCE (top right) to render the current sound to WAV or AIFF.

That's the full loop. The rest of this page is about adjusting everything between those steps.

4. Signal chain

SUB + MID + TOP voices   (+ parallel CLAP voice)
  → per-voice saturation       (5-mode palette)
  → master EQ                  (tilt / low shelf / notch)
  → master bus                 (RMS comp → transformer drive → brickwall limiter)
  → auto tube warmth           (engages above 0 dB master)
  → master volume → out

Saturation is applied before the master EQ, so the EQ shapes the already-driven signal rather than the clean source. The transformer-drive stage on the master bus has its own 60 Hz "bloom" filter — that's the low-end lift you hear at high drive settings.

5. Controls reference

InputAction
TFire a test kick
MIDI Note-OnTrigger the engine (velocity → VEL)
SpacePlay / stop sequencer (standalone only)
BOUNCERender current sound to WAV or AIFF
Click + vertical dragAdjust any knob
Shift + dragFine control
Double-click knobReset to default
Ctrl + click knobReset to default
/ Cycle presets (prev / next)
Click BPM readoutArm tempo widget (standalone only)
Drag BPM verticallyScrub tempo (when armed)
Double-click BPMType a tempo value
/ Tempo ±10 BPM (when armed)
Shift + / Tempo ±1 BPM (when armed)

6. The engine

Three voices sum, plus an independent clap. Each voice has its own tuning, amp and pitch envelopes, and per-trigger drift.

  • SUB — sine oscillator with pitch envelope. START / END set the sweep range, SWEEP controls time, CURVE sets the sweep curve.
  • MID — sine + noise blend. TONE tilts between sine and noise; NOISE sets density; COLOR tunes the noise filter; PHASE is start-phase offset.
  • TOP — band-passed click transient. FREQ / BW set the band; METAL adds a resonant ring above the band.
  • CLAP — parallel 909-style voice. White noise → 2-pole SVF bandpass → a baked 3-burst envelope with an exponential tail. LVL is its own level, FREQ is center (500–5000 Hz), TAIL is decay (50–400 ms). Toggle it off for bit-identical bypass.

DRIFT on any layer adds per-trigger analog-style pitch jitter. Zero drift is bit-identical across triggers.

7. Saturation palette

Five modes in the SAT selector. Each is a genuinely different curve, not variations on gain + tanh.

  • Sat Clip — split-band rational hard-shoulder (x / √(1 + x²)) with a 60 Hz low-pass bypass that keeps the sub clean while the mids compress.
  • Sat Diode — asymmetric exponential pair. Richer even harmonics; slightly "louder" at matched gain.
  • Sat Tape — drive-reactive low-pass plus hysteresis memory. The only mode with dynamic, frequency-dependent behavior. Useful when you want the top end to soften under hard hits.
  • Transformer drive (master bus) — 2nd + 3rd harmonic polynomial blend with a feed-forward 60 Hz bloom filter. This is the "big air" mode.
  • Master warmth — asymmetric cubic bias shaper. Auto-engages only above 0 dB master volume; below unity, it's bit-exact bypassed.

8. Master bus

Three macros up front, a full precision strip behind them. The macros are:

  • AMT — overall compression amount.
  • RCT (Reaction) — link macro that moves Attack and Release together through the host parameter API. Useful for automation: one parameter instead of two.
  • DRV — transformer drive.

Open the PRECISE strip for independent access to:

  • ATK — attack, 0.3–50 ms.
  • REL — release, 20–800 ms.
  • KNE — soft knee, 0–12 dB (Reiss & McPherson quadratic). At Knee = 0 the comp is bit-identical to a hard-knee path.

Downstream: the brickwall limiter prevents clipping (LED lights when it engages), and auto tube warmth kicks in only when master volume exceeds 0 dB. The waveform scope sits post-compressor, so you can literally watch compression shrink the trace and the limiter cap the peaks.

Master EQ

Three bands:

  • TILT — spectral tilt. Positive brightens, negative darkens.
  • LOW — low shelf.
  • NOTCH / Q / DEPTH — variable-Q notch for surgical cuts.

9. Sequencer

16 steps, four-on-the-floor by default. Click a step to toggle it, or click and drag across the bar to paint a run of steps. There's no velocity per step — this is a kick-pattern tool, not a programming environment.

  • In a DAW: the sequencer locks to host tempo and transport automatically. Hit play in the DAW, Slammer plays along. Position is sample-accurate to the host clock.
  • Standalone: there's an internal transport. Space toggles play/stop. The BPM readout is editable — click to arm, drag or type to set.

Pattern state persists inside DAW project files and inside user presets. Loading a preset loads its pattern.

10. Presets

The header bar has a 7-segment LED readout showing the active preset name, a dropdown browser, and save / delete buttons. Double-click the LED to rename inline. / cycle prev/next.

  • Factory presets ship with the plugin and are protected from deletion. You can base a new preset on one (Save As) but you can't overwrite or delete the originals.
  • User presets live on disk as JSON (see file locations). Saving copies the full parameter state plus the sequencer pattern.
  • Last-loaded recall — the standalone remembers which preset you had open and restores it on next launch.

Preset files use #[serde(default)] on every field, which is a small but important guarantee: parameters added in future versions will read as their defaults from your old preset files instead of failing. Your saves aren't going to break between updates.

11. Bounce

Press the BOUNCE button in the header to render the current sound through the full signal chain to a 16-bit / 44.1 kHz WAV or AIFF file. A native save dialog opens; Slammer remembers the last directory you used.

The render is offline: it runs on the GUI thread against a fresh DSP instance, so your live audio keeps flowing during the bounce and the result is bit-for-bit reproducible — the same preset + pattern always produces the same file.

What gets rendered: a single hit, dry through the whole chain (layers → saturation → EQ → master bus → warmth → master volume). If you want a pattern rendered, use your DAW's bounce — that's what it's for.

12. Troubleshooting

"Apple cannot check this for malicious software"

Unsigned binaries always hit this on first launch. Fix is two steps: xattr -dr com.apple.quarantine . on the extracted folder, then the first launch may still need System Settings → Privacy & Security → Open Anyway. Once past, future launches go straight through.

Logic Pro doesn't see Slammer

Expected — Logic is AU-only and Slammer doesn't ship AU. See on-purpose limits for the reason. Any macOS DAW that loads VST3 or CLAP will see it.

Crackle or stutters on macOS Apple Silicon standalone

Start the standalone through slammer-macos.sh instead of the bare binary. The script sets --period-size 4096 to work around a CoreAudio variable-buffer issue in nih-plug's CPAL backend (upstream bug). Only the standalone is affected — VST3 and CLAP inside a DAW use the host's audio backend, not CPAL.

Window won't resize smoothly

The editor is a 680 × 444 rack panel with aspect-ratio-locked scaling. It snaps to integer multiples — you can go 1×, 2×, 3×, not 1.3×. This is an egui-baseview constraint, not a design choice.

No sound

Check in this order:

  • Did you trigger the engine? Press T anywhere in the editor. If the test kick plays, triggering is fine and the issue is upstream (MIDI routing or sequencer state).
  • In a DAW: is a MIDI track routed into Slammer? Some DAWs don't auto-route.
  • Is master volume at a reasonable level? The knob does clip high at 6 dB — check the scope.
  • Standalone: is the audio output device correct? The launch UI shows which device is active.

13. On-purpose limits

  • No Audio Unit (AU). The plugin framework (nih-plug) doesn't support AU, and porting would mean rewriting the plugin in a different framework. VST3 and CLAP cover every major macOS DAW except Logic Pro.
  • Monophonic. It's a kick. Polyphony would be a different plugin.
  • No free-form window resize. Aspect-ratio-locked integer scaling only. egui-baseview limitation.
  • No pattern bounce. The BOUNCE button renders a single hit. Use your DAW's render/bounce for multi-step output — it's the right tool.

14. File locations

Paths are resolved via the directories crate, so they follow each platform's conventions:

PlatformPresetsLogs
Linux ~/.local/share/slammer/presets/ ~/.local/share/slammer/slammer.log
macOS ~/Library/Application Support/Slammer/presets/ ~/Library/Application Support/Slammer/slammer.log
Windows %APPDATA%\Slammer\slammer\data\presets\ %APPDATA%\Slammer\slammer\data\slammer.log

The log file is useful if you file an issue — it captures the audio backend info, plugin format, and any runtime warnings. It rotates on size to avoid growing without bound.

15. Source & license

Slammer is GPL-3.0-or-later and developed in the open at hyperfocusdsp/slammer. Build from source, fork it, study the DSP — all on the table. Bug reports and PRs both welcome on the GitHub issues page.

If you find something in these docs that's wrong or unclear, an issue on the repo is the fastest way to get it fixed.