About this project
flashback-sampler is a desktop audio applet that continuously records system audio into a ring buffer, letting users lift a slice from the recent past, preview and trim it, then save it or drag it directly into a DAW. The ring keeps rolling during all operations.
Key goals include never losing a take: the ring holds the past N minutes at up to 192 kHz, and checkouts write to disk immediately so they survive crashes. Drag-out uses a plain OS file drop so every DAW host can accept it. Exported slices carry extra audio (handles) around them, allowing users to drag clip edges in the DAW to reveal more audio. The slice itself stays whole, and WAV markers (cue, smpl, adtl labels) mark it inside the file. An optional preference can drag an Ableton Live Clip (.alc) instead of a WAV.
The engine is a zero-dependency Zig library under core/ handling capture, mixing, playback, the ring, peaks, WAV, and the scratch cache. Python is a PySide6/Qt shell that creates handles, starts and stops them, and reads numbers; it never sees a frame. The same engine could sit under a CLAP plugin, an OBS dock, or a phone.
Status is version 0.4.1, Windows only. Capture, mixing, and playback go through WASAPI in the Zig core. The core cross-compiles for Linux and macOS, but those backends do not exist yet. The Qt UI is slated for a Zig-native rebuild.
The UI presents a pair of turntables: the left deck is the live ring buffer, the right deck holds checked-out clips. Users pick a source (default output, capture device, one process, or several inputs mixed), start/stop capture, set slice duration and position, freeze the display to line up grabs while capture continues, check out selections, preview and trim clips, save as WAV (32-bit float by default), or drag into a DAW. Checkouts survive after capture stops and live in a scratch folder as float32 WAV.
Memory is committed up front when arming a slot: seconds × rate × channels × 4 bytes. The 15-minute stereo 48 kHz preset is 346 MB. Two checks run before creating a ring: a max footprint cap (default 25% of physical RAM) and a refusal if the ring exceeds free physical memory.
Only Ableton Live 12 is tested for DAW marker behavior. Reaper, Logic, Cubase, Bitwig, FL Studio, Studio One, and Pro Tools are listed but untested.
Requires Python 3.10+ and Zig 0.16.0. MIT licensed; bundled Monaspace fonts are under the SIL Open Font License 1.1.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.