Commit Graph
57 Commits
Author SHA1 Message Date
Brandon ThomasandClaude Opus 5.5 c51e5d5ec5 Bump version to 0.3.0 (from 0.2.1) for release
Co-Authored-By: Claude Opus 5.5 <[email protected]>
v0.3.0
2026-10-08 10:02:25 -04:00
684243c7bc README Downloads: where to get it first, then builds with Windows before macOS (#14)
Co-authored-by: Brandon Thomas <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-08 09:50:23 -04:00
8115ba9ed5 Release: Flatpak x86_64/aarch64, AppImage zsync updates, README Downloads (#13)
- AppImages embed gh-releases-zsync update information and ship a .zsync beside them.
- New flatpak job repackages the Linux tarball into soundcraft-<v>-linux-<arch>.flatpak
  (bundle manifest + flatpak-bundle.sh). Sandbox: pulseaudio socket (PipeWire's pulse server),
  ~/.vst3 and ~/.clap read-only, the LinuxAudio.Plugins extension point via VST3_PATH/CLAP_PATH;
  no raw ALSA devices, no JACK. The from-source Flathub manifest gets the same finish-args.
- Only signing jobs (macOS, Windows) and the draft job keep `environment: release`, so a branch
  dispatch dry-runs Linux, Flatpak, FreeBSD and web; the draft job still needs the signed jobs.
- README: Downloads section; docs/releasing.md updated.

Co-authored-by: Brandon Thomas <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-08 09:34:50 -04:00
Brandon ThomasandClaude Opus 5.5 ef47ab59d0 Fix the Windows build of vst3-host; bump version to 0.2.1
The vst3 bindings' enum constants use the C default enum type, which is i32 on
Windows and u32 elsewhere. The bus helpers took u32 and the process-context
flags were assigned to a u32 field directly, so the release build failed on all
three Windows targets. Type the helpers with the bindings' own aliases and cast
the flags once.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-08 08:39:10 -04:00
Brandon ThomasandClaude Opus 5.5 b9c70400f9 Bump version to 0.2.0 (from 0.1.0) for release
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-08 08:13:25 -04:00
Brandon ThomasandClaude Opus 5.5 9334ba0a50 Release CI: macOS job on macos-15-xlarge
Custom macOS larger runners in a runner group do not pick up jobs; the
built-in M2 Pro label does. Only release.yml uses it, and the
actions_macos_xl budget caps the monthly spend.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 22:08:11 -04:00
Brandon ThomasandClaude Opus 5.5 37a523e642 Release CI: macOS job on the org macos-release runner
The standard macOS runners are shared with all CI and queue for an hour or
more. The macos-release runner (GitHub-hosted M2 Pro) is in a runner group
usable only by release.yml on the release branch, with a monthly spend cap
on the actions_macos_xl SKU.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 21:55:03 -04:00
Brandon ThomasandClaude Opus 5.5 4627084956 About: contributor and model credits compiled in (grab bag + table, self-submitted names) (#8)
* About: contributors compiled in from contributors.json (grab bag + table, sortable, name toggle)

Adds the craftrules standard (standards/contributors.md) to SoundCraft: the About window gets
About · Contributors · Models tabs. contributors/contributors.json is generated by
craftrules/scripts/contributors.py and baked into the binary by crates/ui-egui/build.rs as
static tables. Each contributor line: @username, opt-in display/real name, PRs, commits,
lines +/−/Δ, binary assets +/−, first/last commit. Sortable by every column; alphabetical
ignores case and the leading @. Sort arrows use ⏶/⏷ (egui's icon font) since the system UI
font has no ▲/▼.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Contributors: self-submitted names in contributors/people.toml; AGENTS.md credit-yourself section

build.rs reads contributors/people.toml next to the generated contributors.json and shows a name only
for entries the generator verified as written by that person (craftrules standards/contributors.md).

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Contributors: regenerate (verified people.toml entries)

Co-Authored-By: Claude Opus 5.5 <[email protected]>

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-07 21:16:58 -04:00
Brandon ThomasandClaude Opus 5.5 3597f895cc Rename PrintCraft to PdfCraft (storytold/pdfcraft) (#1)
Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-07 14:45:52 -04:00
Brandon ThomasandClaude Opus 5.5 876b098a20 Roadmap: alpha and parity estimates; README: video, surround and notation screenshots
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 01:48:45 -04:00
Brandon ThomasandClaude Opus 5.5 cdefc57c91 Video track, Audio Unit hosting, plugin state and editors, Renderer and UI Customization
Video (new standalone crate soundcraft-video):
- Pure-Rust H.264 (Baseline/Main/High), ProRes (all flavours) and Motion JPEG decoding with
  ISO-BMFF demux, adapted from FilmCraft's crates; fuzzed with mutated/truncated movies
- TrackKind::Video with ClipContent::Video referencing Session.videos; file.import_video adds
  the picture track and the movie's audio; relinking on open; video.offset/online/list
- Video and Video Universe windows, thumbnails on the timeline, background decoding

Third-party plugins:
- Plugin state (CLAP state ext, VST3 component + controller state) saved in sessions
- Hosted instances created, state-loaded and dropped on the UI thread, never the audio thread
- Plugin editors: floating CLAP GUIs and VST3 views on macOS (verified with Melodyne)
- New isolated FFI crate soundcraft-au-host: Audio Units on macOS (effects and instruments,
  parameters, latency, MIDI, ClassInfo state), wired into the mixer and plugin browser

UI: Window > Renderer (speaker layout with live levels and object positions), Window > UI
Customization (interface scale, reduce motion), Window > Configurations > Auto-Update.

Fix: saturating sample-index math in clip rendering (hostile stretch values overflowed).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 01:41:05 -04:00
Brandon ThomasandClaude Opus 5.5 c125a79a47 Mix window views: Mic Preamps (input gain), Instruments, Object/Bed
Adds track.object for routing a track as an immersive object or to the bed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 01:24:05 -04:00
Brandon ThomasandClaude Opus 5.5 0751dd31f1 Score export and print, clip group files, Merge Markers, path dialogs for every file command
- File › Export › Sibelius and File › Send To › Sibelius write MusicXML 4.0 (quantized,
  chords, ties across bar lines, meter changes, treble or bass clef per part)
- File › Print Score engraves the MIDI tracks to a printable SVG page; File › Score Setup
  sets title, composer, bars per system and track names
- File › Import › Clip Groups and Export Clip Groups (.scgrp with its audio)
- Edit › Paste Special › Merge Markers: copy carries the markers in the copied range
- The UI opens a path prompt for any command that needs a path or folder

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 01:17:42 -04:00
Brandon ThomasandClaude Opus 5.5 0368d7f541 MIDI Editor: rubber-band selection, Cmd+A, arrow-key transpose and move, header toolbar
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:49:48 -04:00
Brandon ThomasandClaude Opus 5.5 18ea131c7e fmt
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:48:08 -04:00
Brandon ThomasandClaude Opus 5.5 c543c7a781 Search: a command palette over every command (Window › Search, Cmd+Ctrl+S)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:44:35 -04:00
Brandon ThomasandClaude Opus 5.5 856aae6871 Keyboard focus command and the a-z Commands Focus toolbar toggle
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:42:00 -04:00
Brandon ThomasandClaude Opus 5.5 cdf86b0fd8 Roadmap: VST3
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:40:11 -04:00
Brandon ThomasandClaude Opus 5.5 cc86842abe Surround mixing, VST3 hosting, and hardening against hostile inputs
Surround:
- main and bus formats up to 9.1.6 and Ambisonics; pairwise constant-power
  surround panner (divergence, centre, LFE, height) per track and send;
  ITU fold-down; multichannel bounce with correct WAV channel masks;
  multichannel device output; surround panner and multichannel meters in the
  Mix window; setup.main_format, mix.surround_pan, mix.send_surround_pan

VST3:
- soundcraft-vst3-host: isolated unsafe crate (vst3 bindings, MIT), scans
  standard folders, hosts components/processors/controllers, params,
  latency, notes; VST3 menu; engine.vst3_plugins; e2e tests with a fixture

Hardening:
- positions from parameters clamped; offline renders capped and bounded to
  track material; loop/transport limits; hostile-parameter property test

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:39:59 -04:00
Brandon ThomasandClaude Opus 5.5 8269ca77f6 Property test: every command survives hostile parameters
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:15:26 -04:00
Brandon ThomasandClaude Opus 5.5 222273590e Property test: mutated session files load or fail cleanly and render without panicking
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:13:37 -04:00
Brandon ThomasandClaude Opus 5.5 7f9f9fff08 Random-edit property test covers the extended command set (400-case run clean)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:12:40 -04:00
Brandon ThomasandClaude Opus 5.5 daca626778 Fix fades outliving trimmed clips; property test of random edit sequences with full undo
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:10:53 -04:00
Brandon ThomasandClaude Opus 5.5 dc9f8e1f54 README: refresh the feature tour
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:09:03 -04:00
Brandon ThomasandClaude Opus 5.5 0e85d7ee54 Copy Special › Audio as MIDI: YIN pitch tracking into MIDI notes on the clipboard
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:08:18 -04:00
Brandon ThomasandClaude Opus 5.5 ff788999fe Clip List: find filter; place audio files on new or selected tracks
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:03:10 -04:00
Brandon ThomasandClaude Opus 5.5 2495466bde ui: drop unused import
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:02:04 -04:00
Brandon ThomasandClaude Opus 5.5 be049eb0e5 Memory Locations: inline rename, selection locations with length, type column
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:01:58 -04:00
Brandon ThomasandClaude Opus 5.5 569aa3bb41 Groups: create dialog with members and edit/mix options; Groups list context menu
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:01:18 -04:00
Brandon ThomasandClaude Opus 5.5 06d8470727 Drag whole audio files from the Clip List onto tracks (clip.place_source)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 00:00:21 -04:00
Brandon ThomasandClaude Opus 5.5 152eed6b8f docs: architecture overview
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:58:03 -04:00
Brandon ThomasandClaude Opus 5.5 09151fa07b Edit window: drag the name plate to reorder tracks, drag the bottom edge to resize
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:57:09 -04:00
Brandon ThomasandClaude Opus 5.5 f9483cc563 File › Import › Video: import a movie's audio stream onto a new track
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:55:50 -04:00
Brandon ThomasandClaude Opus 5.5 9da524fd66 Score Editor: MIDI as notation on a grand staff
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:54:51 -04:00
Brandon ThomasandClaude Opus 5.5 f534ca4e15 Plugin presets: factory default and user presets (save/recall), mix.insert_params
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:51:56 -04:00
Brandon ThomasandClaude Opus 5.5 718dccdad7 Transport window: counters, expanded pre/post-roll, MIDI controls, output meters
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:50:24 -04:00
Brandon ThomasandClaude Opus 5.5 a30af91006 Commands Keyboard Focus: single-key trims, fades, separate, clipboard, track and clip navigation
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:49:48 -04:00
Brandon ThomasandClaude Opus 5.5 ef3f838a00 Tempo editor lane (click to add, Alt-click to remove) and thinned tempo labels
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:49:06 -04:00
Brandon ThomasandClaude Opus 5.5 a4dbb522ea Rulers: key, chords, Markers 2-5, Timecode 2; View › Clip options; marker ruler lines; exact demo bar positions
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:47:20 -04:00
Brandon ThomasandClaude Opus 5.5 013df329eb Roadmap: recording status
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:44:40 -04:00
Brandon ThomasandClaude Opus 5.5 2f7f87b69e Roadmap update
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:44:35 -04:00
Brandon ThomasandClaude Opus 5.5 2fc8e2ecb8 CLAP plugin hosting (isolated unsafe crate), stem bouncing
- soundcraft-clap-host: scans standard CLAP folders, loads plugins via
  clap-sys/libloading, implements the Plugin trait (audio, params, latency,
  notes); the only crate allowed unsafe, every block documented; stubs on wasm
- mixer, engine (mix.insert, engine.clap_plugins) and Mix window CLAP menu
- end-to-end tests against a Rust-built fixture plugin
- file.bounce_stems: one soloed file per track

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:44:22 -04:00
Brandon ThomasandClaude Opus 5.5 fd2a5fda4a Punch-in while playing, pre/post-roll takes trimmed to the punch range, autosave and recovery
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:43:20 -04:00
Brandon ThomasandClaude Opus 5.5 a9f553767c Control channel: pace synthetic input one pointer event per frame and mask the real pointer meanwhile
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:40:51 -04:00
Brandon ThomasandClaude Opus 5.5 1d16a20c1f Elastic Audio: pitch-preserving warp on Elastic tracks; Remove Warp restores the original
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:35:24 -04:00
Brandon ThomasandClaude Opus 5.5 4168882fef Beat Detective, Tempo/Time/MIDI Operations and MIDI Real-Time Properties windows
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:34:25 -04:00
Brandon Thomas 25d692b6b0 mix: clippy 2026-10-05 23:31:04 -04:00
Brandon ThomasandClaude Opus 5.5 db3ea40613 Plugin delay compensation and input monitoring
- mix: per-strip insert latency, delay lines align all tracks to the slowest
  and direct outputs to aux returns; offline renders remove the latency
- input monitoring: live input (InputRing from the recorder) replaces clips
  on monitored tracks and on armed tracks when stopped or recording, through
  the full channel strip; the player renders while stopped for monitoring

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:31:00 -04:00
Brandon ThomasandClaude Opus 5.5 e1397b8115 Play back clip effects, trim automation and MIDI real-time properties; Clip Effects window
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:27:26 -04:00
Brandon ThomasandClaude Opus 5.5 720373c0c6 Engine parity batch (76% engine, 90% with UI), comping, fades, universe, automation writing, loop record
- ~200 new commands across Edit/View/Track/Clip/Event/Options/Setup/File
  (copy/paste special, playlists, TCE, tempo operations, beat detective,
  chords, MIDI performance, view flags, setup settings, import session data)
- explicit targets bypass selection-based enablement; undo coalescing for
  gestures (faders, knobs, sliders)
- live Write/Touch/Latch volume automation passes; loop recording into
  playlists; playlist lanes with promote-to-main comping; smart-tool fade
  handles; Universe overview; VCA masters; routing-folder busses; edit groups
- bounce reports true peak; README with screenshots; parity report

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 23:25:09 -04:00