Skip to content

Releases: weckere/leadstinger

LeadStinger 0.2.1

Choose a tag to compare

@github-actions github-actions released this 01 Nov 18:13

Added

  • Whole sets from QuipClipper links. A leadstinger://quip link 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 only server
    and clip; 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.move takes tiles (several tiles, one undo step) and set (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,
    and cue.go --tile; tile.list reports armed, set.list reports list_mode and
    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.top stays 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 1 to =, row 2 Q
    to ], row 3 A to ', row 4 Z to /, and rows 5 to 8 the same four with Option
    (Alt on Linux) held, shown on the key cap as ⌥1 (or Alt+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+1 refs and /ls/key/alt+1 over 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 .lsset file (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 (or false) 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.playOn and OSC /ls/playon. tile.release,
    /ls/release and action tiles saved as release still 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.toggleEdit and view.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 sound picks 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; --mode still
    works; tile.get and tile.list report hold, pausable and one_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...

Read more

LeadStinger 0.2.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 01:03

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.export and set.import do the same, and
    set.export --all saves 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-click LeadStinger.app in Finder and choose Open.
    leadstinger-cli is inside the bundle, in Contents/MacOS/.

  • Linux AppImage (x86_64, aarch64): one file with everything inside; chmod +x it
    and run it. It starts through an unprivileged user namespace, which Ubuntu 24.04 and
    later block by default: there it stops with cannot 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/leadstinger and bin/leadstinger-cli, a
    .desktop entry 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

Choose a tag to compare

@github-actions github-actions released this 18 Oct 23:27

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.py cuts 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), --safe mode and --ssh to
    reach another machine.
  • Headless mode: leadstinger-cli serve plays 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-click LeadStinger.app in Finder and choose Open.
    leadstinger-cli is inside the bundle, in Contents/MacOS/.
  • Linux AppImage (x86_64, aarch64): one file with everything inside; chmod +x it
    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/leadstinger and bin/leadstinger-cli, a
    .desktop entry 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.