Repository navigation
Releases: weckere/leadstinger
Release list
LeadStinger 0.2.1
Added
-
Whole sets from QuipClipper links. A
leadstinger://quiplink whose clip is a
set file (.lsset) downloads it and imports it as a set, which is what QuipClipper's
Send to LeadStinger opens with several lines ticked. Such a link takes onlyserver
andclip; asking first works as for a single clip. -
Drag a selection. Dragging a pad that's part of the selection moves the whole
selection together, as one run in the set's order: the board previews a ghost slot
for each of them (and the other pads shrink as they would for that many dropped
files), the pad under the pointer shows how many are moving, and the drop is one
undo step. Dragging a pad that isn't selected moves just that pad, as before, and
selects it. Pads dropped on another set in the sidebar move to that set's end. A
locked set's pads still can't be dragged, and nothing drops into a locked set.
tile.movetakestiles(several tiles, one undo step) andset(another set). -
Check for Updates. Help ▸ Check for Updates… asks GitHub for the latest release
and, if it's newer, shows its version and release notes with a Download button
that opens the release page in the browser (nothing is downloaded or installed for
you); otherwise "You have the latest version". Settings ▸ Updates ▸ Check for
updates at launch checks once as the app opens and speaks up only about a newer
release; it is off by default, and with it off the app never goes online unasked.
New commands:app.checkForUpdates(the CLI waits and prints the answer) and
settings.checkUpdates. -
The cue list plays like a list. Click a row (or move the focus onto it) and
Enter plays it and stops the rest of the list; Enter again stops it (a Pausable cue
pauses). The selection stays on the playing cue. Each row has an armed mark (a
filled dot, a turning ring while it plays, a hollow ring once it has played); played
rows are passed over, a click on a mark (or the row's menu) passes a cue over or arms
it again, and Reset List arms them all and selects the first. Continuous |
Queued replaces the Auto-advance check box: Continuous plays the next armed cue when
one ends, with an optional cross-fade (up to 5 s); Queued selects it and waits,
marked NEXT; the mode, cross-fade and Reset List sit in a bar under the list, which
has no GO button any more. Space is Pause All (Resume All) in every set, so Enter
alone plays a focused pad. The top bar has Previous and
Next (List sets), Pause All (Resume All while everything is paused) and Fade
All (2 s) beside Stop All, also in the Playback menu. New commands:cue.reset,
cue.arm,set.listMode,set.crossfade,transport.pauseAll,transport.fadeAll,
andcue.go --tile;tile.listreportsarmed,set.listreportslist_modeand
crossfade. Shift+Enter and clicking a cue's number are gone (selecting the row does
it), and Back to Top gives way to Reset List (cue.topstays in the CLI). Grid sets
keep GO's order for the CLI, OSC and MIDI. -
Pad keys follow the board's rows. Row 1 of the board takes
1to=, row 2Q
to], row 3Ato', row 4Zto/, and rows 5 to 8 the same four with Option
(Alt on Linux) held, shown on the key cap as⌥1(orAlt+1). A pad's key is its
slot's, so it tells you where the pad is, and moving a pad changes it; Auto columns
fill the keyboard's rows in order, and a cue list has no automatic keys. A key you set by hand in the inspector
stays with its pad wherever it goes (Automatic gives back the slot's key, and
Settings ▸ Hotkeys ▸ Reassign this set by row drops every hand-set key). Your
library is re-keyed on upgrade: keys in the old straight-through order follow the rows,
any other key is kept as set by hand.leadstinger-cli tile.set "Ding" --hotkey alt+1,
--hotkey auto,key:alt+1refs and/ls/key/alt+1over OSC take the new keys; set
files (manifest version 3) carry only the keys set by hand. -
A fade badge and a Random button. A pad whose clip fades out at its end shows a
small fade badge beside its option badges (not for a fade-in, a stop fade or a loop);
screen readers hear "fades out", the hover card says how long, and the cue list says
FADE OUT. A narrow pad now drops its badges one at a time, the fade first, instead of
all at once. Random, in the top bar (Panel: beside Stop All), plays a random pad
from the set, never the one it played last; it's Playback ▸ Play a Random Tile
(leadstinger-cli tile.random), which now says in the status bar what it played. -
Set files carry a theme. Exporting a set while one of your own themes is in use
puts that theme in the.lssetfile (manifest version 2). Importing the file installs
the theme and asks Use its theme?: Use It switches to it, Not Now keeps your look,
and Settings ▸ Theme lists it either way.leadstinger-cli set.import show.lsset --use_theme true(orfalse) answers from a script. So one file can hand someone a
whole themed board, and as a starter pack it opens in that theme. Older set files
import as before; older builds import a new file's sets and skip its theme. -
A vamp you can let go. While a tile loops its vamp section, its next press (a
double-click, its key or pad, OSC) lets the vamp go and it plays on to the end; the
press after stops it. A Hold pad vamps while held and plays on when let go; Pausable
and One-shot pause and restart as usual once it's playing on. GO on a vamping cue lets
it play on and starts nothing else; the next GO goes on. The pad says VAMPING, then
PLAYING ON, and the inspector's Cue tab says the same. Release is now called
Play On everywhere: the inspector's button, the action tile's Play On kind (badge
PLAY ON),leadstinger-cli tile.playOnand OSC/ls/playon.tile.release,
/ls/releaseand action tiles saved asreleasestill work. -
No more Perform and Edit modes. Click a tile to select it; double-click to play
it (on a Hold tile, keep the second click down: it plays while held). Keys, Enter and
Space, MIDI, OSC, GO and the CLI play tiles as before. Dragging, file drops and the
inspector work at any time, unless the set is locked. The keyboard's focus selects the
tile it lands on.view.perform,view.edit,view.toggleEditandview.lockEdit
still work for now, as the inspector's visibility and the set lock. -
A bottom bar: Sidebar, Add Sound, Grid | List and Inspector, under the board
(⌘/Ctrl+B shows or hides the sidebar, ⌘/Ctrl+E the inspector;view.sidebar,
view.inspector). The top bar keeps the counter, the meter, Stop All and Settings. In
Panel they're blocks in the bottom of the frame, and hiding the sidebar narrows the
frame's column. -
Lock a set. File ▸ Lock Set, the lock in the set's settings, or
set.lock/
set.unlock: a locked set can't be changed at all (its tiles, their order, its name,
rows, auto-advance and notes) from the window, the CLI, MIDI or OSC, which say
locked; its tiles still play. A padlock marks it in the sidebar. Locks are saved in
the library and in set files. This replaces Lock Edit Mode: a library that had it on
opens with every set locked. -
Set settings in the inspector. With no tile selected (click the set in the
sidebar, or the board between tiles) the inspector shows the set: its name, the lock,
Grid or List, the row size, auto-advance and its notes. -
A new inspector. The sound comes first: the waveform in the tile's colour with
the trim handles, the playhead and the tile's meter, then to start, a big Preview and
Fade Out, and the position, Edit… and length. Then the pad options and the volume, and
the rest in four tabs: Play (fades, stop fade, fade shape, ducking), Sound (gain,
Normalise, speed, pitch, outputs, the exact trim, channels), Cue (notes, pre-wait,
next cue, vamp and markers) and Control (hotkey, MIDI pads and keys, messages). The
colour is one swatch that opens the palette, the picture is in a pop-up, and what the
sound is, Replace Audio…, Record and Remove are pinned at the bottom.
view.inspector --tab soundpicks a tab. -
Pad options instead of a play mode. The inspector's Mode menu and Loop/Solo/Disabled
checkboxes are now a row of icon toggle buttons: Loop, Solo, Pausable,
One-shot and Hold, lit when on, and a smaller Disabled. With none on, a
press plays and a press while playing stops. Pausable pauses on a second press;
One-shot starts again from the beginning (Pausable and One-shot turn each other off).
Hold plays while held: with Pausable, letting go pauses and holding again resumes from
there; with One-shot, each hold starts from the beginning. Libraries, set files and
starter packs are read as before (Play / Pause becomes Pausable, Always Restart
One-shot, Hold to Play Hold), and the old mode is still written for older versions.
CLI:tile.set --loop --solo --pausable --oneshot --hold --disabled;--modestill
works;tile.getandtile.listreporthold,pausableandone_shot. -
A new pad face. The title bar is gone: a pad has a dark body with its colour on
the title, the waveform and the border, and the title at the top, up to four lines.
Each colour's title is as close to the colour as reads clearly (stronger in high
contrast). Icons at the top right show Loop, Hold, Pausable and One-shot; a Solo pad
has a ring inside its edge (a theme colour,mark/solo), and a disabled one keeps its
hatching. A selected or playing pad is outlined just outside its border. Panel keeps
its layout, with the same icons and ring and its label wrapping up to four lines. -
Coloured pads (Settings,
settings.coloredPads): pads in their colour all over
instead, lettered in black. Off by default; Panel's blocks do...
LeadStinger 0.2.0
Added
- Set files (
.lsset): File ▸ Export Set… writes a set, with every clip, picture and
setting, to one file; File ▸ Import Set… (or dropping or pasting the file) adds its sets
to any library.leadstinger-cli set.exportandset.importdo the same, and
set.export --allsaves every set. A set file is a zipped starter pack, so either works
as the other. - Starter-pack manifests carry every tile setting: fade-in, solo, trim, pictures, and each
set's layout, columns and auto-advance.
Changed
- The Panel theme is titled LEADST:TNGER, with the subtitle PADD · Sound cue
control.
Downloads
-
macOS (Apple silicon and Intel):
LeadStinger-…-macos-universal.zip. The app isn't
notarised, so the first time, right-clickLeadStinger.appin Finder and choose Open.
leadstinger-cliis inside the bundle, inContents/MacOS/. -
Linux AppImage (x86_64, aarch64): one file with everything inside;
chmod +xit
and run it. It starts through an unprivileged user namespace, which Ubuntu 24.04 and
later block by default: there it stops withcannot write uid_map: Operation not permitted. Use the tarball instead, or let LeadStinger's AppImage (and nothing else)
use user namespaces with this AppArmor profile, keeping the file named
LeadStinger-….AppImage:sudo tee /etc/apparmor.d/leadstinger-appimage >/dev/null <<'EOF' abi <abi/4.0>, include <tunables/global> profile leadstinger-appimage /**/LeadStinger-*.AppImage flags=(unconfined) { userns, } EOF sudo apparmor_parser -r /etc/apparmor.d/leadstinger-appimage
-
Linux tarball (x86_64, aarch64):
bin/leadstingerandbin/leadstinger-cli, a
.desktopentry and an icon. It uses your system's ALSA, GTK 3, X11/Wayland and OpenGL
libraries, and needs glibc 2.35 or later (Ubuntu 22.04, Debian 12 or newer). On NixOS,
use Nix (below) or nix-ld. -
Nix:
nix run github:weckere/leadstinger.
SHA256SUMS lists the checksums.
LeadStinger 0.1.0
The first public release.
The app
- A live soundboard for macOS (arm64, x86_64) and Linux (x86_64, aarch64): sets of tiles
in a grid, or the same tiles as a cue list with GO, a next-cue pointer and
auto-advance. - Per-tile hotkey, colour, volume, fade in and out, loop, solo, trim on a waveform, and
four play modes (Play/Stop, Always Restart, Hold to Play, Play/Pause). Every setting is
non-destructive. - Tiles show the waveform of the region they play, an optional picture or icon, and
cover art embedded in MP3, M4A and FLAC files. - Sounds come in by drag and drop, by pasting files copied in a file manager (the way in
on native Wayland), or with Add Sounds. WAV, AIFF, MP3, AAC/M4A, FLAC and Ogg Vorbis. - An audio engine with per-sample fades, resampling, gapless loops, master volume, Stop
All and output device choice. - Two themes: Console, a dark mixing-desk look with Light and System appearances;
and Panel, a retro sci-fi control-panel look in condensed capitals. - A native menu bar on macOS and an in-window menu bar on Linux, from one menu model.
- Starter packs: a folder of clips, optionally with a manifest, that fills an empty
library on first launch.scripts/clip-pack.pycuts a pack out of longer recordings.
Scripting and automation
leadstinger-cli: every action in the app is a command (56 of them). It drives
the running app over a local socket, or edits the library itself while the app is
closed. JSON output, scripts, an event stream (watch),--safemode and--sshto
reach another machine.- Headless mode:
leadstinger-cli serveplays with no window, for a box with
speakers and no screen. A NixOS module runs it as a user service. - An agent skill (
skills/leadstinger/SKILL.md) that teaches coding agents to drive the
app through the CLI.
Linux
- Native Wayland by default, with X11 (XWayland) as a setting for file drops.
- Tested on Hyprland: the app keeps answering the CLI from a hidden workspace, so key
binds can fire clips from anywhere. - A Nix flake with a package, a dev shell, the NixOS module and a VM test.
Downloads
- macOS (Apple silicon and Intel):
LeadStinger-…-macos-universal.zip. The app isn't
notarised, so the first time, right-clickLeadStinger.appin Finder and choose Open.
leadstinger-cliis inside the bundle, inContents/MacOS/. - Linux AppImage (x86_64, aarch64): one file with everything inside;
chmod +xit
and run it. It starts through a user namespace; on distributions that restrict those
(Ubuntu 24.04 and later), use the tarball instead. - Linux tarball (x86_64, aarch64):
bin/leadstingerandbin/leadstinger-cli, a
.desktopentry and an icon. It uses your system's ALSA, GTK 3, X11/Wayland and OpenGL
libraries. - Nix:
nix run github:weckere/leadstinger.
SHA256SUMS lists the checksums.