Skip to content

DatanoiseTV/doobie

Repository files navigation

Doobie

Analog dub delay — VST3 · AU · Standalone

A stereo multi-head tape echo with tape saturation, wow & flutter, in-loop tone shaping, and a chained spring + plate reverb. Built for classic dub, equally at home as a modulated delay and ambience for any genre.

License Formats JUCE C++ macOS Linux Release

Doobie — Classic Dub preset

Highlights

  • Multi-head tape echo — four playback heads tapping one tape, each with its own level, pan and time. In sync each head's time snaps to a musical division (1/32 … 1/1) so taps land on the grid; free-running, it's a continuous fraction of the repeat. A four-pad head matrix switches each head in or out independently for any combination of taps, and switching is click-free — heads ramp in and out instead of cutting dead.
  • Five delay characters — Digital (clean), Tape (wow/flutter + saturation), BBD (dark analog bucket-brigade), Diffuse (repeats smeared into a wash) and Pitch (each repeat climbs an octave).
  • Free or tempo-synced — free time (20 ms – 8 s) or musical divisions from 1/64 up to 4 bars (dotted and triplet included), locked to the host. The tape buffer goes out to 16 s, so "4 bars at 60 BPM" or slower ambient drones fit comfortably. Division and sync changes glide like a tape capstan rather than jumping.
  • Analog character — tape saturation, wow & flutter with random drift, and an AGE macro that wears the tape down: hiss, slow level dropouts, progressive high-frequency loss and extra transport instability, compounding across repeats.
  • Two independent filter stages — an input filter (low-cut, high-cut, bass and treble) shapes only the signal that gets echoed, leaving the dry output clean; a separate feedback filter (same four controls) darkens and dissolves each repeat the way real tape does. Each stage has its own dedicated knobs.
  • Nine reverb modes — a dispersive spring tank, a modulated plate, a dense 16-line hall, an octave-up shimmer, plus spring→plate series and spring+plate parallel, a convolution mode bundled with 38 free Voxengo impulse responses (concert halls, churches, rooms, cabinets and effect spaces) that also loads any WAV/AIFF/FLAC impulse response of your own, and an 80s-style gated reverb (envelope-keyed sidechain gate over a bright plate — classic Phil Collins / Hugh Padgham snare bloom- then-snap). Route any of them post, pre, or inside the feedback loop for washing dub textures and blooming ambient tails.
  • Delay bypass — flick the BYPASS toggle next to PING-PONG/FREEZE and the tape buffer goes silent, but the input still passes through the character chain (Tape/BBD/Diffuse/Pitch saturation, head-bump and HF loss) plus AGE and the reverb panel. Lets you use Doobie as a tape-style saturator / colouration insert.
  • Performance controls — ping-pong feedback, freeze (infinite hold), wet ducking, stereo width.
  • 60+ factory presets across dub/reggae, ambient/cinematic, rhythmic/electronic, lo-fi/vintage, hall & shimmer, delay characters, sound-design FX and instrument patches, plus user save/load.
  • HTML/CSS WebView UI (JUCE 8 WebBrowserComponent). Modern-studio analog look — warm-charcoal panels, amber knob arcs, Space-Echo-style continuous tape loop with reel + capstan + pinch + multi-head block embedded in the tape, mixer-style faders for the four playback heads, digital VU bridge with proper RMS + peak-hold + dBFS readouts, big analog needle VUs on the output, mod-matrix indicators on every knob (any modulated control shows a live mod-range arc + animated dot), feedback knob reddens as it approaches self-oscillation, slide-up Mod drawer with LFO1/LFO2/Envelope sources + the 8-slot matrix, right- click on any knob for Reset/Copy/Paste/Enter-value, styled save dialog. All bundled and served locally — the plugin never reaches the network.

Install

Grab the latest signed build from the Releases page — every push to main updates a rolling nightly prerelease, and vX.Y.Z tags cut stable versioned releases.

  • macOS: Doobie-X.Y.Z-macOS.pkg. Universal arm64 + x86_64, code-signed with a Developer ID Application certificate and notarized through Apple's notary service, so it installs without a Gatekeeper warning. Double-click the .pkg; the installer lets you pick any subset of AU (/Library/Audio/Plug-Ins/Components), VST3 (/Library/Audio/Plug-Ins/VST3) and the Standalone app (/Applications).

  • Linux: Doobie-X.Y.Z-Linux-x86_64.tar.gz. Contains the VST3 bundle and the Standalone executable. Drop the .vst3 into ~/.vst3/ (user) or /usr/local/lib/vst3/ (system); run the Standalone directly.

    The WebView UI needs either WebKitGTK 4.0 (legacy, libsoup-2.4) or 4.1 (modern, libsoup-3.0) on your system; the Doobie binary dlopens whichever it finds. We recommend the 4.1 set (4.0 is being retired upstream in March 2026):

    # Recommended: WebKitGTK 4.1 (Ubuntu 24.04+, Fedora 40+, Debian 13+, Arch)
    sudo apt-get install libwebkit2gtk-4.1-0 libsoup-3.0-0 libgtk-3-0 \
                         libasound2 libjack-jackd2-0 libfreetype6 \
                         libx11-6 libxext6 libxrandr2 libxrender1
    
    # Legacy fallback: WebKitGTK 4.0 (Ubuntu 22.04, Debian 12)
    sudo apt-get install libwebkit2gtk-4.0-37 libsoup2.4-1 libgtk-3-0 \
                         libasound2 libjack-jackd2-0 libfreetype6 \
                         libx11-6 libxext6 libxrandr2 libxrender1

    ⚠ Don't install both 4.0 and 4.1 in the same system, and don't install GTK libs that drag in libsoup-2.4 if you're going with the 4.1 path. Mixing libsoup-2.4 and libsoup-3.0 in the same process aborts WebKit's network process and you'll see a white window with a libsoup2 symbols detected line in stderr.

    /tmp mounted noexec? (Common on hardened RHEL / some snaps.) Doobie ≥ 0.13.4 already points its WebKit helper at $XDG_RUNTIME_DIR/doobie (= /run/user/$UID/doobie) rather than /tmp, so this is no longer something most users need to think about. Pre-export TMPDIR if you want to override that.

    White window on NVIDIA proprietary + Wayland? The WebKitGTK DMA-BUF renderer has known issues there (WebKit bug 262607). Doobie does not disable it by default — turning it off would cripple GPU compositing on healthy systems (1 fps on Intel/AMD iGPUs). If you hit this specifically, set the workaround env vars yourself before launching the DAW:

    export WEBKIT_DISABLE_DMABUF_RENDERER=1
    export WEBKIT_DISABLE_COMPOSITING_MODE=1

    If the window opens white with no UI, run the Standalone from a terminal — the diagnostic banner at the top shows which load stage failed (HTML / juce bridge / React / Babel / App mounted), and stderr carries any WebKit-side error.

Want the bleeding edge? Releases → nightly gets a fresh signed build on every commit to main.

Screenshots

Multi-head, plate reverb Ambient wash (spring + plate) Lo-fi vintage echo

The cassette transport (top of the DELAY panel) shows the reels rotating at a speed derived from the current delay time, with the head body lit when the tape is active. The strip below it visualises each active head's tap landing along the 0 → master-delay axis with feedback fall-off. The reverb panel's decay curve shows the active reverb's tail length and pre-delay at a glance.

Getting dub sounds

  • Long dark echoes: sync to 1/4, FEEDBACK ~0.7, pull HIGH CUT down to ~3 kHz so repeats get darker each pass; add a little SATURATION.
  • Spring crashes / wash: set REVERB to Spring and ROUTE to In Feedback — the reverb builds across repeats. Ride REVERB MIX.
  • Siren feedback: push FEEDBACK to ~1.0 and ride the LOW CUT / HIGH CUT.
  • Freeze a moment: hit FREEZE to hold the buffer infinitely, then play over it.

Impulse responses

Set REVERB to Convolution. 38 impulse responses ship with the plugin — all from Voxengo's free IR pack, by Aleksey Vaneev, distributed royalty-free under his own terms (see external/voxengo-irs/license.txt). The set covers real concert halls (Musikvereinsaal, Scala Milan Opera Hall), churches (St Nicolaes Church, Derlon Sanctuary), drum rooms, parking garages, caves, guitar cabinets and effect spaces (Deep Space, Greek 7 Echo Hall, On a Star, etc.). Pick one from the IR combo in the reverb panel.

LOAD CUSTOM... loads any WAV / AIFF / FLAC of your own; the session restores either the factory or the custom selection automatically.

These impulse responses are © Aleksey Vaneev; they are bundled unaltered with Doobie under Voxengo's terms — they are not under Doobie's GPL-3.0. By using them you acknowledge that Aleksey Vaneev retains exclusive ownership of the impulse files including all intellectual property rights therein, at all times.

A few other permissively-licensed external IR collections that work well as starting points for custom files:

  • Voxengo free impulses — royalty-free for any use including commercial; the cleanest licensing of the lot. Halls, plates, cabinets, springs.
  • Open AIR Library — large catalogue of real-space IRs (cathedrals, halls, tunnels) under Creative Commons.
  • EchoThief — over a hundred real-world spaces sampled around North America.

Building from source

Requires CMake ≥ 3.22 and a C++20 toolchain. JUCE is vendored as a git submodule.

git clone --recurse-submodules https://github.com/DatanoiseTV/doobie.git
cd doobie
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --target Doobie_All

Already cloned without submodules? git submodule update --init --recursive

For a fast single-architecture build on macOS add -DCMAKE_OSX_ARCHITECTURES=arm64 (or x86_64); the default produces a universal binary. Built plugins are copied into your personal plug-in folders (~/Library/Audio/Plug-Ins/... on macOS) and the standalone app lands in build/Doobie_artefacts/<config>/Standalone/. Pass -DDOOBIE_INSTALL_LOCAL=OFF to opt out of the local install (matches what CI does).

On Linux you'll need the JUCE GUI / audio prerequisites:

sudo apt-get install -y \
    libasound2-dev libjack-jackd2-dev libcurl4-openssl-dev \
    libfreetype6-dev libx11-dev libxcomposite-dev libxcursor-dev \
    libxext-dev libxinerama-dev libxrandr-dev libxrender-dev \
    libwebkit2gtk-4.0-dev libglu1-mesa-dev mesa-common-dev \
    libgtk-3-dev ninja-build

Release pipeline

.github/workflows/ defines two workflows:

  • ci.yml — runs on every PR + non-main branch push. Builds Doobie + the test executables on macOS-14 and ubuntu-22.04, runs ctest. Fast feedback, no signing.
  • release.yml — runs on main pushes and v* tags. macOS job imports the Developer ID certs from GitHub Secrets, builds universal, runs tests, then signs + notarizes + stapled-packages the artefacts into a .pkg installer. Linux job builds + tarballs. Publish job uploads both to a rolling nightly prerelease (main pushes) or a versioned release (tag pushes).

If you fork Doobie and want signed releases of your own builds: packaging/macos/ has a one-shot bootstrap-signing.sh that takes a fresh Apple Developer membership all the way to populated GitHub Secrets — generates RSA keys + CSRs locally, walks you through the two manual portal clicks Apple's API still doesn't expose (API key creation + Developer ID Installer cert), bundles each cert into a .p12 with a random password, and pushes all 11 secrets via gh secret set.

Tests

cmake --build build --target doobie_tests
ctest --test-dir build

Tests cover the framework-independent DSP cores (delay line, saturation, spring and plate stability/decay, wow/flutter). The Audio Unit also passes Apple's auval.

Project layout

DSP lives in src/dsp, the UI in src/ui, presets in src/presets, and the JUCE plugin glue in src/PluginProcessor.* / src/PluginEditor.*. tools/Snapshot.cpp renders the editor to a PNG offline (used for the screenshots above).

License

Copyright © 2026 DatanoiseTV.

Doobie is free software, licensed under the GNU General Public License v3.0 (see LICENSE). In short: you may use, study, modify and redistribute it, but any distributed version or derivative must be released under the GPLv3 with full source code, and must keep this attribution to DatanoiseTV.

GPLv3 is required because Doobie links the JUCE framework under its GPLv3 option. Building Doobie into a closed-source product would require a commercial JUCE license.

About

Analog dub delay VST3/AU/Standalone - multi-head tape echo with spring + plate reverb (JUCE)

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors