Repository navigation
Releases
Slab 0.0.23
- Notes don't get stuck. A note no longer hangs when you edit a clip
while it plays (deleting, adding, moving, retuning or shortening notes
under the playhead), when the arpeggiator is switched on or off, added or
removed mid-note, when a key is held through a stop, when the editor
moves to another track while a key sounds, or in a rack lane playing
two keys. A seek or a loop ends the arpeggiator's notes too. - Stopped, a note rings out. A note played with the transport stopped
sounds until its tail has died away, instead of cutting off three
seconds after the key went up, and a track that sends to a bus (a send
reverb, a group) is heard through it. Something that never dies away
(a drone) fades out after 30 seconds and doesn't come back on the next
play.
Apple Silicon, macOS 13 or later. Built from v0.0.23, which is its complete source (GPL-3.0-or-later, see COPYING.md).
Install:
curl -fsSL https://github.com/nooga/slab/releases/latest/download/install.sh | bash
Or with Homebrew: brew install --cask nooga/tap/slab
Or open the DMG and drag Slab to Applications. It is not notarized, so the first launch needs System Settings > Privacy & Security > Open Anyway.
Slab 0.0.22
-
CONVO, a convolution reverb. Play a track through a recorded or made
space: an impulse response, any WAV. It ships with a synthetic stereo
hall and a bowed cymbal that every note swells through, and takes
PREDELAY, LO CUT, HI CUT, WIDTH, LEVEL and MIX. Effect machines can ask
for an impulse response of their own (docs/49). -
Unison can be a wall. The UNI panel has a WALL switch. On, a stack
gets louder as voices are added (about +6 dB at 5) instead of staying at
one voice's level, and its voices spread across the stereo field in
pitch order, so the channels beat apart and the stack sounds wider.
Off by default; existing projects sound the same. -
Menus scroll. A menu or submenu taller than the window (a bank of
128 presets) scrolls with the wheel, the arrow keys and PgUp/PgDn, with ▴ and ▾
marking more rows; the rows per menu went from 72 to 256. -
Ambika. A new instrument after Mutable Instruments' six-voice polysynth,
ported from its firmware: two digital oscillators with 38 shapes (the CZ
family, FM, vowel, 16 wavetables), a mixer with sync, ring, xor, fold and
bit cross-modulation, a sub-oscillator or transient, noise, fuzz and a
sample-rate crusher, then a four-pole filter, three envelopes, four LFOs
and the 14-slot modulation matrix with four modifiers. Values are the
hardware's. It ships with ten presets of ours and the 358 programs of the
unit's golden card. The SVF board's band- and high-pass and tempo-synced
LFOs are not in yet (docs/48).
Apple Silicon, macOS 13 or later. Built from v0.0.22, which is its complete source (GPL-3.0-or-later, see COPYING.md).
Install:
curl -fsSL https://github.com/nooga/slab/releases/latest/download/install.sh | bash
Or with Homebrew: brew install --cask nooga/tap/slab
Or open the DMG and drag Slab to Applications. It is not notarized, so the first launch needs System Settings > Privacy & Security > Open Anyway.
Slab 0.0.21
- MP3 export. The Export sheet's FORMAT has MP3 at 128, 192, 256 or 320
kb/s (44.1 or 48 kHz), with title, artist, album, year and BPM tags, for
the mix and for stems. From the command line,--render out.mp3 --kbps 192.
It's built in: nothing to install. - Exports, bounces and freezes no longer freeze the window. Starting one
while Slab is still analyzing audio used to block everything until the
analysis finished; now the window keeps drawing ("Analyzing sources…") and
the export starts by itself. A render that stops advancing is reported in
the status line and inslab.log, and quitting no longer waits forever for
it: the project is saved for recovery and Slab exits a 10BC8 fter five seconds. A
failed export setup can no longer leave the Export sheet busy for good.
slab.lognow also records the GPU, the display's scale, and a note when
the window stops drawing, for reports of freezes and misdrawn screens.
Apple Silicon, macOS 13 or later. Built from v0.0.21, which is its complete source (GPL-3.0-or-later, see COPYING.md).
Install:
curl -fsSL https://github.com/nooga/slab/releases/latest/download/install.sh | bash
Or with Homebrew: brew install --cask nooga/tap/slab
Or open the DMG and drag Slab to Applications. It is not notarized, so the first launch needs System Settings > Privacy & Security > Open Anyway.
Slab 0.0.20
- Updates from GitHub. Slab checks for a newer release when it starts and
turns the SLAB logo into an UPDATE offer. In Slab.app, UPDATE downloads the
release, checks it and swaps it in on a restart; Homebrew installs get EXIT &
UPGRADE, which quits, runsbrew upgradeand reopens Slab. SKIP passes on a
version, a switch turns the check off, and About has an UPDATES button to
check now. (Updates are offered from 0.0.20 on: earlier versions can't check.)
Apple Silicon, macOS 13 or later. Built from v0.0.20, which is its complete source (GPL-3.0-or-later, see COPYING.md).
Install:
curl -fsSL https://github.com/nooga/slab/releases/latest/download/install.sh | bash
Or with Homebrew: brew install --cask nooga/tap/slab
Or open the DMG and drag Slab to Applications. It is not notarized, so the first launch needs System Settings > Privacy & Security > Open Anyway.
Slab 0.0.19
-
Drum lanes you can read. On a kit the piano roll's key column widens to
fit the lane names, and the key button cycles ALL KEYS, KIT KEYS and CLIP
KEYS, which shows only the lanes the clip has notes on, top aligned. Kits
open on KIT KEYS. -
Clips show their notes at a readable size. A clip on a track draws its
notes over its own pitch range instead of a fixed one, so low notes no
longer squash into a line. -
Metronome. CLICK on the transport bar clicks on every beat while
playing, with a slider for its level. It follows the meter, including odd
and changing ones: the downbeat and each group start are accented. It is
heard live only: never in bounces or renders, and not through master effects. -
A tidier transport bar. AUTO moved into the input menu (the caret beside
REC, which lights red while automation recording is armed). KEYS and LEARN
are single buttons that open into their controls only when on. On a narrow
window the bar gives up the stats, then the master meter's width, the song
length and those buttons, in that order, instead of cutting off its right end.
Apple Silicon, macOS 13 or later. Built from v0.0.19, which is its complete source (GPL-3.0-or-later, see COPYING.md).
Install:
curl -fsSL https://github.com/nooga/slab/releases/latest/download/install.sh | bash
Or with Homebrew: brew install --cask nooga/tap/slab
Or open the DMG and drag Slab to Applications. It is not notarized, so the first launch needs System Settings > Privacy & Security > Open Anyway.
Slab 0.0.18
- Song length and a time readout. The transport bar shows the song's
length in minutes and seconds next to the position (tempo changes and
ramps counted, up to the END marker or else the last clip). Click the
position to switch it between bar.beat.sub and minutes:seconds. - Overlapping clips are marked, and ⌘T trims them. Where a clip lies
over another on a track, a hatched strip along its foot shows the stretch
it covers. ⌘T (or "Trim overlaps" in the clip menu) cuts the clips on the
tracks you have selected so none overlap: the one on top keeps its
stretch, and a clip lying wholly under another goes. - Velocity stems of a chord are separate. In the piano roll's velocity
lane the notes of a chord used to sit on one line, and only the topmost
could be grabbed (anywhere along its whole length). Now they fan out side
by side where there is room, and where there is not, the lowest draws in
front; a click picks the stem whose cap is nearest the pointer, and only
the stem itself is a target. - Box select scrolls. Drag a box on the tracks or in the piano roll to
the edge of the view and it scrolls along (faster the
further out), so you can select past what is on screen. - Pinch to zoom. On a trackpad, pinching zooms time around the pointer
in the arrangement, the piano roll and the audio editor; ⌥-pinch sizes
the piano roll's rows.
Apple Silicon, macOS 13 or later. Built from v0.0.18, which is its complete source (GPL-3.0-or-later, see COPYING.md).
Install:
curl -fsSL https://github.com/nooga/slab/releases/latest/download/install.sh | bash
Or with Homebrew: brew install --cask nooga/tap/slab
Or open the DMG and drag Slab to Applications. It is not notarized, so the first launch needs System Settings > Privacy & Security > Open Anyway.
Slab 0.0.17
- Your work survives a crash. Slab saves a recovery copy of the project
every 30 seconds while it has unsaved changes, the untitled project
included, and restores it at the next start (docs/46). - Logs and crash reports. Slab keeps
~/Library/Logs/Slab/slab.logand
writes acrash-*.txtwith a backtrace when it crashes; send that folder
with a bug report (docs/46). - Undo and redo are fast. They used to rebuild every machine in the
project and could stall for seconds; now only the tracks an edit touched
are rebuilt, and your track and clip selection stays. - Moving several clips keeps their layout. A selection dragged to other
tracks shifts as a whole (it stops at the first or last track instead of
squashing), and a ghost of each clip shows where it will land. Box-selecting
on the tracks also selects the automation points inside the box, and
selected points move together with clips or with each other, across lanes. - The machine menu is A to Z with marks. "+" and the replace menu list
every machine alphabetically, racks included, with a mark for instruments,
effects and presets (and the arpeggiator).
Apple Silicon, macOS 13 or later. Built from v0.0.17, which is its complete source (GPL-3.0-or-later, see COPYING.md).
Install:
curl -fsSL https://github.com/nooga/slab/releases/latest/download/install.sh | bash
Or with Homebrew: brew install --cask nooga/tap/slab
Or open the DMG and drag Slab to Applications. It is not notarized, so the first launch needs System Settings > Privacy & Security > Open Anyway.
Slab 0.0.16
- An arpeggiator, in a new note slot. Every instrument track can take
a note machine ahead of its instrument: "+" in the machine bay, then
ARPEGGIATOR. Nine modes, rates from 1/4 to 1/32 with dotted and triplet
values, 1 to 4 octaves, gate, swing, humanize, accent, latch and a
16-step rest/note/accent/tie pattern. It arpeggiates clips, KEYS and a
MIDI keyboard, locked to the song's beat, and is saved in the project
(docs/45). - MIDI keyboards and pads. Plug in a MIDI device and it plays the
selected track at its own velocity, and REC records it into a clip,
with or without KEYS on. LEARN on the transport bar binds a knob to the
control you last touched, a pad to PLAY/STOP, STOP, REC, LOOP, track
or knob-page steps, or a knob to one of the eight knob slots, which
drive the selected instrument's controls a page at a time. An Akai MPK
mini 3 works out of the box (docs/44). - A loudness stage for the master. The FX Rack has a new
master-loud
preset: glue compression, a diode clip that rounds off the peaks, and a
limiter, behind four macros. LOUD drives the clip and the limiter
together, so the mix gets denser instead of just hotter: on neon_tide it
takes -13 LUFS to -11 at the default, -9 at 0.8 and -8 at full, with the
peak-to-average gap falling from 15 dB to 11. GLUE, CLIP and CEIL
trim it. Put it last on the master. - The machine menu shows every machine again. The "+" and replace
menus stopped at 40 rows, so FX Rack, Rack and the newest effects (the
harsh pack) were cut off the end. The cap is 72, and "+" on the master
lists effects only. Dropping an effect or rack preset from the browser
onto the machine bay while the master is selected now lands on the
master chain, not the first track. In the mixer, dropping a preset on a
strip (a track, a bus or the master) loads it there.
Apple Silicon, macOS 13 or later. Built from v0.0.16, which is its complete source (GPL-3.0-or-later, see COPYING.md).
Install:
curl -fsSL https://github.com/nooga/slab/releases/latest/download/install.sh | bash
Or with Homebrew: brew install --cask nooga/tap/slab
Or open the DMG and drag Slab to Applications. It is not notarized, so the first launch needs System Settings > Privacy & Security > Open Anyway.
Slab 0.0.15
-
The SM-24 Mono has a patch panel. Its new PATCH page holds four
cords. Drag a jack from the dock onto a ringed knob (LPF CUT, HPF CUT,
PW, VCO2 PITCH, LVL, MG FREQ), or pick SRC and DEST on a cord row. The
jacks are FENV, AENV and AENV inverted, MG, MG PUL, S&H, NOISE, KBD, VEL,
PRESS, VCO1, VCO2 and VCA OUT. The cords run at audio rate, so VCO2 can
FM the cutoff and the output can feed back into the filter. A patch
with no cords sounds exactly as before. Five new patches show it off
(patch-*), with the demosongs/ms20_patch_bay.py. -
Squelch 33, an acid bassline synth. A new mono machine built on the
HOT/WET filter the SM-24 Mono used to have: one SAW or SQR oscillator,
CUT, RES, ENV MOD, DECAY, ACCENT and SLIDE. Loud notes (the!in a
slabkit seq) are accented: louder, brighter, and a run of them climbs
higher with RES up. Overlapping notes slide. Presets:classic-squelch,
square-bounce,wet-scream,round-line; demosongs/squelch_acid.py. -
SM-24 Mono sounds like an MS-20. Its LPF MODE gains K35 and
OTA, the early and late MS-20 filters. Bass stays full at any PEAK,
the peak sits on CUT, and both the HPF and LPF resonate up to
self-oscillation. K35 is the default: grittier and lopsided when driven.
OTA is cleaner and sings. HOT and WET are still there for the acid
sound. New presets:k35-scream,k35-round-bass,ota-singing-lead.
A new SM-24 starts from a re-voiced init patch; saved songs and presets
keep their mode and sound as before. -
A harsh effects pack (docs/43).
- Octaver gives one and two octaves down the way analog divider
pedals do, with a GLITCH knob to make it chatter, plus an
Octavia-style octave-up fuzz. - Wobble is a filter or wah swept by a synced LFO, a 16-step
sequence, the playing's envelope (auto-wah) or a pedal, and doubles
as a tremolo or gate. - Folder is an anti-aliased wavefolder.
- Grinder stacks ten distortion curves up to four deep, from a
rounded overdrive to a dead zone, with sizzle, bass-driven flux and
phase distortion.
- Octaver gives one and two octaves down the way analog divider
-
Harsh rigs. Twelve FX Racks under
harsh/, among them Wobble
Oktaver, the distortion-chorus-distortion Sandwich, Octavia Portal,
Kodiak (big, gnarly bass), Cross Bass (Justice-style) and Four Slot.
songs/kodiak_club.pyis a demo built from them. -
OTT and Supercharge. Multi's RATIO now reaches 100 and its UP 4:1,
with an OTT preset; Char has a Supercharge preset. -
Chorus can choke. FEEDBACK, WET HP and INVERT go past the Juno:
inverted at half mix, it hollows out a distorted bass for a second
distortion to bring back. Existing chorus settings sound the same. -
Building from source needs Zig 0.17. 0.16 no longer builds Slab,
and 0.17 no longer fails on the build script (#3). -
Rigs. Rack and FX Rack sit under a RACKS heading in the machine
picker, with factory rigs in their preset menus: Fretwire Clean Rig and
Crunch Rig, Bass DI + Amp, and Parallel Squash (an FX Rack). A rig
opens folded to its named macro knobs; the fold button shows the lanes.
The old split and layer racks are rewritten as lanes. -
Group into a rack. Shift-click devices in the bay to select a run,
then ⌘G moves them into a new Rack (or FX Rack) with their settings and
automation; ⌘⇧G on a one-lane rack takes them back out. ⌘G still groups
tracks when no devices are selected. -
Rack panel. KEY, VEL and CHAIN tabs edit each lane's zones as bars,
inserts reorder by dragging their title strip, MAP outlines every
control it can map, and turning a mapped control by hand moves its
macro. -
Automate inside a rack. Controls of the machines in a rack's lanes
now get automation lanes, named with the machine (AMP2 GAIN), and
they keep working when lanes or inserts move. Files write them as
paths such asfx1/2.1:amp-gain(docs/22). -
slabkit builds racks.
rack(),.lane(),.macro()and.map()
make racks in Python,song.track("Bass", "rack", "bass-di-amp")loads
a rig, andslab --describelists Rack and FX Rack with their macros.
songs/rack_rigs.pyis a demo. -
Rack macros. Racks and FX Racks get eight macro knobs (
rk-m1…rk-m8)
and a CHAIN control that automate like any knob. MAP, then click a
control inside the open lane (or a lane's LV or PN), puts it on the
picked macro; each mapping has a MIN and MAX in the control's own units
and an optional formula such asx^2orx * (1 - m4). A macro can
drive a rack nested inside. Mapped controls light their automation LED
and follow the macro smoothly, and macros save with the rack's presets. -
Headless renders play Racks.
slab --renderand--stemsrendered
a track with a Rack on it as silence; they now load it as the app does. -
Rack lanes take effects, and there's an FX Rack. Each lane of a Rack
now holds a chain: its instrument and up to 16 inserts, shown beside the
lane list the way the bay shows a track's, each with its own preset
menu, bypass, replace and remove, and + to add one. The new FX Rack goes in an effect slot and runs its
lanes in parallel on the track's signal; an empty lane is the dry path.
Lanes get SOLO, racks fit inside racks three deep, and a lane with a
latent insert no longer smears against the others: the rack lines them
up and reports the latency. Old racks open and sound as before
(docs/42). -
Hammerwork Grand, a physically modeled piano. Felt hammers strike up
to three detuned strings per key, which ring into a soundboard through
a moving bridge. Velocity changes the tone the way a real hammer does,
bass and treble keep their own inharmonicity and decay, and the
unisons give the piano's two-stage decay. PEDAL lifts the dampers on
held notes too. Six presets. See docs/41. -
Skinwork Kit, a physically modeled drum kit. Kick, snare with
rattling wires, side stick, three toms, closed, pedal and open hats,
crash, ride and ride bell on the GM drum map. Toms and kick drop in
pitch when hit hard, cymbals bloom into a wash, and a closed hat chokes
an open one. Five presets. See docs/41. -
Fretwire gets pickups, wiring and bodies. The bass and guitar have
a second page. Choose the neck pickup, the bridge pickup, both, or both
out of phase. Pick single coil, P-90, humbucker or split coil, and set
how close the magnets sit. Real tone and volume pots roll the tone into
the mids and clean up an amp's drive. The strings now share a body,
SOLID, SEMI, HOLLOW or ACOUSTIC, that colors their decay and can be
miked (AIR). There is also an under-saddle piezo, and open strings that
ring in sympathy. New presets include twin-humbucker, p90-crunch,
semi-hollow, out-of-phase and acoustic guitars, and jazz-both, p-bass,
hollow and acoustic basses. Saved bass and guitar parts now sound
slightly different on the default solid body's dead spots; set COUPLE
to 0 for the old sound. See docs/41. -
Separate STOP and PLAY. Pressing STOP again while stopped returns
to the loop's start, or to the song's start with the loop off. -
Musical typing. Turn on KEYS in the transport bar to play the
selected track from the computer keyboard. PIANO is one chromatic row.
GRID is four rows in fourths like a Push, in key when a scale is set.
CHORD plays in-key chords on the bottom row under a melody on the rows
above it. With KEYS on, REC records what you play into the open clip
or a new one, layering pass after pass on a loop (docs/40). -
Octaves and scale in the piano roll. A pressed key lights the same
note faintly in every octave on the keys and the grid. In DRAW mode a
ghost shows the note a click would add, with outlines in its other
octaves. A picked scale now marks its keys with a stripe (solid on the
root), greys the keys outside it, and tints its rows in the track's
color. -
New Project no longer crashes while a reverb rings. Starting a new
project, or opening one, while the old project's master effects were
still sounding could crash Slab. -
Juniper-8, a Roland Jupiter-8. Eight voices of two VCOs with
exponential cross mod, VCO-2 synced to VCO-1, and PWM on both pulses. A
6 dB HPF feeds the IR3109 filter, with 24 dB and its thinner 12 dB tap.
Two envelopes with key follow and an inverting ENV-1, and one LFO
shared by every voice, with delay. It ships with all 64 of Roland's
factory patches, read off the original patch sheets. See docs/39. -
C-Beam 80 ships every CS-80 factory preset. All 22 of Yamaha's
presets as their Channel I + II pairings (STRING 3/4, CLAVICHORD, ORGAN,
GUITAR and FUNKY 1-4 are new), and the Owner's Manual's ten programming
examples, clarinet to timpani, undermanual/. The presets it shipped
with read the charts about 13 % low; they now match them. -
Verb's rooms and halls can turn dense right away. A new DENSITY
switch sets VELVET, which scatters every echo inside the reverb's loop
[a velvet feedback matrix, Schlecht and Habets 2020]. A hall with no
input diffusion becomes a smooth wash about three times sooner (64 ms
instead of 190), with no flutter and DECAY still accurate. New presets
velvet-hallandvelvet-room. CLASSIC, the default, sounds exactly
as before.
Apple Silicon, macOS 13 or later. Built from v0.0.15, which is its complete source (GPL-3.0-or-later, see COPYING.md).
Install:
curl -fsSL https://github.com/nooga/slab/releases/latest/download/install.sh | bash
Or with Homebrew: brew install --cask nooga/tap/slab
Or open the DMG and drag Slab to Applications. It is not notarized, so the first launch needs System Settings > Privacy & Security > Open Anyway.
Slab 0.0.14
Thanks to Lost Robot, the author of septabee, for pointing out the
audio-thread inefficiencies that this release fixes.
-
C-Beam 80, a Yamaha CS-80. Eight notes of two complete voices each.
Each voice has a linear-in-Hz VCO, an HPF and an LPF that don't
self-oscillate, and the IL/AL filter envelope behind CS-80 brass. Velocity
is a fading initial-touch accent. Per-note pressure opens the filter,
raises the level and brings in vibrato on the pressed notes only. The
sub oscillator, ring modulator, BBD chorus/tremolo, keyboard scaling,
constant-rate portamento and sustain are global, as on the original.
It ships with Yamaha's factory pairings from the Owner's Manual charts
and four sounds of ours. See docs/38. -
Choose the audio buffer size. The audio menu next to record lists
64 to 1024 frames with their latency; 64 is 1.3 ms. The choice is
remembered. -
Notes played at idle sound at once. A key pressed after the app
had been quiet could wait up to 50 ms before reaching the engine. -
Recorded takes land in time. Placement now uses the latency the
audio device reports each way, plus how long the input actually
waited, instead of a two-buffer guess. With AirPods as the output,
takes used to land about 150 ms late. -
Record from any input, mono or stereo. Right-click a track's R to
pick its input: In 1, In 2, … or a stereo pair. Before, every input
of an interface was mixed into one, 6 dB down and with the other
inputs' noise. The choice is saved with the project. -
Recording holds up when things go wrong. Audio the disk couldn't
keep up with becomes silence instead of shifting the rest of the take
earlier; seeking or stopping ends the take where it still lines up; a
loop pauses for the take. Unplugging a device, a sample-rate change
from another app, or the system audio service restarting now reopens
the device instead of leaving it silent. -
The Sampler no longer aliases when you play high. Clean playback
now band-limits the sample to the speed it is read at, using octave
copies made when the sample loads, so playing a sample an octave or
more above its root, or a 96 kHz file, no longer folds whistles and
grit back into the mix. -
No more Sampler clicks on retrigger, choke or voice steal. Its
envelope now picks up from wherever it is, a choked hi-hat fades
instead of cutting, and a note that takes over a sounding voice fades
the old one out. -
The Limiter no longer clips transients. It now holds the gain
reduction a peak needs across the whole lookahead and ramps into it, so
a drum hit or a single-sample spike over the ceiling is turned down
smoothly instead of being clipped. Latency is unchanged. -
Machines use about 20% less CPU. The fy compiler computes repeated
expressions once, addresses state fields directly and writes them as
soon as they are final. Output is bit-identical. -
The Extract pack finds uv when Slab is opened from Finder. Its
download said uv was missing unless Slab was started from a terminal; it
now looks in Homebrew's,~/.local/binand~/.cargo/bintoo. -
Starting a pack download can no longer crash Slab. Clicking Download
or Import sometimes quit the app as the import began. -
Stop lets tails ring. Stopping releases the notes and lets reverbs
and delays ring out instead of cutting everything with a click; press
play again and the tails carry on. -
No clicks from edits while playing. Mute, solo, track enable and
insert bypass fade over a few milliseconds. Adding, removing,
reordering or replacing instruments and inserts fades the old chain
out and the new one in, and a new instrument picks up held notes.
Bypassing a lookahead or oversampled effect keeps its latency, so the
rest of the mix no longer jumps in time; any latency change crossfades.
Audio clips fade at cut edges and around seeks and loop wraps. -
5 ms less latency. Audio reaches the output one block sooner on
every path. -
About 6% less CPU for the same audio: peak scans run on vectors and
are shared between inserts, compensation delays copy in bulk, and
machines no longer copy their control tables every block. -
A blown-up machine can no longer reach your speakers. A track whose
signal turns NaN or infinite (an unstable filter, a division by zero)
is silenced for that block and its machines reset, so the fault cannot
spread into buses, sends or the master. The output stage never passes
a non-finite sample, in any clip mode; the hard clip used to turn one
into full-scale DC. Exports write silence there too. -
No more stuck notes from mute, solo or odd notes. A track that is
unmuted, un-soloed or re-enabled starts clean and picks up the notes
sounding at that moment. Notes past a trimmed clip end, zero-length
notes and notes shorter than a sample no longer hang. -
Smooth faders. Dragging a track or master fader ramps per sample
instead of stepping each block. -
Tempo-synced effects on the master follow the song. A synced
phaser on the master used to restart every block (a buzz); auditioning
while stopped now runs synced LFOs too. -
Audio devices recover. If the input stalls or is unplugged while a
track is armed, playback keeps running with silent input instead of
freezing. A device that fails to open is retried about once a second. -
Adding tracks no longer races playback. Slicing to a sampler,
extracting notes, chords or drums, placing stems and placing bounces
insert tracks with the device stopped, as adding and moving tracks
already did. -
Parallel rendering follows the output device. When macOS switches
the default output (headphones, AirPods), playback renders serially
until the render workers have joined the new device's workgroup. After
a bounce, freeze or export they re-request realtime scheduling. Arming
a track during a freeze or export no longer restarts the device.
If workers keep the audio thread waiting for two blocks in a row,
playback renders serially until they have been re-admitted. -
Fewer first-use stalls. Clip stretchers and the duplex capture
buffer are allocated and touched before audio uses them.
Apple Silicon, macOS 13 or later. Built from v0.0.14, which is its complete source (GPL-3.0-or-later, see COPYING.md).
Install:
curl -fsSL https://github.com/nooga/slab/releases/latest/download/install.sh | bash
Or with Homebrew: brew install --cask nooga/tap/slab
Or open the DMG and drag Slab to Applications. It is not notarized, so the first launch needs System Settings > Privacy & Security > Open Anyway.