Commit Graph

48 Commits

Author SHA1 Message Date
Brandon Thomas 876b098a20 Roadmap: alpha and parity estimates; README: video, surround and notation screenshots
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 01:48:45 -04:00
Brandon Thomas 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 <noreply@anthropic.com>
2026-10-06 01:41:05 -04:00
Brandon Thomas 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 <noreply@anthropic.com>
2026-10-06 01:24:05 -04:00
Brandon Thomas 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 <noreply@anthropic.com>
2026-10-06 01:17:42 -04:00
Brandon Thomas 0368d7f541 MIDI Editor: rubber-band selection, Cmd+A, arrow-key transpose and move, header toolbar
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:49:48 -04:00
Brandon Thomas 18ea131c7e fmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:48:08 -04:00
Brandon Thomas c543c7a781 Search: a command palette over every command (Window › Search, Cmd+Ctrl+S)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:44:35 -04:00
Brandon Thomas 856aae6871 Keyboard focus command and the a-z Commands Focus toolbar toggle
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:42:00 -04:00
Brandon Thomas cdf86b0fd8 Roadmap: VST3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:40:11 -04:00
Brandon Thomas 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 <noreply@anthropic.com>
2026-10-06 00:39:59 -04:00
Brandon Thomas 8269ca77f6 Property test: every command survives hostile parameters
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:15:26 -04:00
Brandon Thomas 222273590e Property test: mutated session files load or fail cleanly and render without panicking
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:13:37 -04:00
Brandon Thomas 7f9f9fff08 Random-edit property test covers the extended command set (400-case run clean)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:12:40 -04:00
Brandon Thomas daca626778 Fix fades outliving trimmed clips; property test of random edit sequences with full undo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:10:53 -04:00
Brandon Thomas dc9f8e1f54 README: refresh the feature tour
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:09:03 -04:00
Brandon Thomas 0e85d7ee54 Copy Special › Audio as MIDI: YIN pitch tracking into MIDI notes on the clipboard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:08:18 -04:00
Brandon Thomas ff788999fe Clip List: find filter; place audio files on new or selected tracks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:03:10 -04:00
Brandon Thomas 2495466bde ui: drop unused import
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:02:04 -04:00
Brandon Thomas be049eb0e5 Memory Locations: inline rename, selection locations with length, type column
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:01:58 -04:00
Brandon Thomas 569aa3bb41 Groups: create dialog with members and edit/mix options; Groups list context menu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:01:18 -04:00
Brandon Thomas 06d8470727 Drag whole audio files from the Clip List onto tracks (clip.place_source)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:00:21 -04:00
Brandon Thomas 152eed6b8f docs: architecture overview
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:58:03 -04:00
Brandon Thomas 09151fa07b Edit window: drag the name plate to reorder tracks, drag the bottom edge to resize
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:57:09 -04:00
Brandon Thomas f9483cc563 File › Import › Video: import a movie's audio stream onto a new track
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:55:50 -04:00
Brandon Thomas 9da524fd66 Score Editor: MIDI as notation on a grand staff
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:54:51 -04:00
Brandon Thomas f534ca4e15 Plugin presets: factory default and user presets (save/recall), mix.insert_params
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:51:56 -04:00
Brandon Thomas 718dccdad7 Transport window: counters, expanded pre/post-roll, MIDI controls, output meters
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:50:24 -04:00
Brandon Thomas a30af91006 Commands Keyboard Focus: single-key trims, fades, separate, clipboard, track and clip navigation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:49:48 -04:00
Brandon Thomas ef3f838a00 Tempo editor lane (click to add, Alt-click to remove) and thinned tempo labels
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:49:06 -04:00
Brandon Thomas 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 <noreply@anthropic.com>
2026-10-05 23:47:20 -04:00
Brandon Thomas 013df329eb Roadmap: recording status
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:44:40 -04:00
Brandon Thomas 2f7f87b69e Roadmap update
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:44:35 -04:00
Brandon Thomas 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 <noreply@anthropic.com>
2026-10-05 23:44:22 -04:00
Brandon Thomas fd2a5fda4a Punch-in while playing, pre/post-roll takes trimmed to the punch range, autosave and recovery
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:43:20 -04:00
Brandon Thomas a9f553767c Control channel: pace synthetic input one pointer event per frame and mask the real pointer meanwhile
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:40:51 -04:00
Brandon Thomas 1d16a20c1f Elastic Audio: pitch-preserving warp on Elastic tracks; Remove Warp restores the original
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:35:24 -04:00
Brandon Thomas 4168882fef Beat Detective, Tempo/Time/MIDI Operations and MIDI Real-Time Properties windows
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:34:25 -04:00
Brandon Thomas 25d692b6b0 mix: clippy 2026-10-05 23:31:04 -04:00
Brandon Thomas 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 <noreply@anthropic.com>
2026-10-05 23:31:00 -04:00
Brandon Thomas e1397b8115 Play back clip effects, trim automation and MIDI real-time properties; Clip Effects window
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:27:26 -04:00
Brandon Thomas 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 <noreply@anthropic.com>
2026-10-05 23:25:09 -04:00
Brandon Thomas 04d222069d Release pipeline: signed macOS/Windows, Linux packages, FreeBSD, Web; app icon
- .github/workflows/release.yml: every push to `release` builds a draft
  GitHub Release: macOS universal DMG (Developer ID + notarization),
  Windows x64/x86/arm64 MSI + zips (Azure Trusted Signing), Linux
  x86_64/aarch64 AppImage/deb/rpm/tar.gz + Flatpak manifest, FreeBSD,
  Web/WASM zip; SHA256SUMS; secrets only via the release environment
- packaging/ for every platform; .scraft + audio file associations
- cargo xtask version [set X.Y.Z] and xtask ico
- apps/soundcraft-web (trunk, WebGPU/WebGL2, WebAudio)
- placeholder app icon (original nightingale), window icon, Windows resources
- ROADMAP.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:17:59 -04:00
Brandon Thomas a28e15210c Parallel mixer, Setup windows, clip gain lines, folders, mix-strip sections, docs
- mix: independent strips process in parallel (rayon, native), parameter
  pushes cached, plugin sync/routing order cached per session structure;
  plugin and render benchmarks
- UI: Playback Engine, I/O Setup (bus rename/delete), Keyboard Shortcuts
  windows; clip gain line + info; folder open/close; tempo changes from the
  ruler; Inserts/Sends F-J, EQ curve and comments sections in the Mix window
- docs: control protocol and MCP guides

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:14:48 -04:00
Brandon Thomas 6cff5ff3d9 MIDI editor, recording, more windows, Edit-window view columns
- MIDI Editor dock (piano roll, velocity lane; add/move/resize/delete notes)
  with midi.* engine commands
- Recording: input capture (playback::record), takes become clips on
  record-armed tracks (punch into a selection), one undo step
- Windows: Automation, Color Palette, Disk/System Usage, Task Manager,
  Metadata Inspector, MIDI Event List, MIDI Keyboard (step input),
  Workspace browser, Window Configurations, Arrange
- Edit window honours view flags: I/O, inserts, sends, comments columns;
  rectified/power/outline waveforms; clip names; track numbers

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:08:58 -04:00
Brandon Thomas 63bf6c5b4b xtask gates, parity report, model flags and full channel-format list
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:02:15 -04:00
Brandon Thomas f41c1310fc UI, desktop app, CLI and MCP: Edit and Mix windows, playback, agent control
- soundcraft-ui-egui: Edit window (toolbar with edit modes, zoom, tools,
  counters, grid/nudge, transport; rulers; track headers; waveforms, MIDI
  and automation lanes; Smart/Selector/Grabber/Trim/Pencil/Zoom/Scrubber
  gestures), Mix window strips, menus built from the incumbent catalog,
  dialogs, floating windows, JSON control channel, offscreen ui_shot
- soundcraft app: eframe/wgpu, cpal playback, control server, drag-drop
- soundcraft-automation: MCP server (stdio) with headless and remote
  backends; agent acceptance test of 9 realistic tasks
- soundcraft-cli: info, convert, run, script, commands, app, mcp, parity
- engine: AudioSuite offline processing command

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 22:59:40 -04:00
Brandon Thomas 755f02fc85 Foundation: time, audio-io, midi, dsp, model, mix, engine, playback crates
Workspace for SoundCraft, a clean-room pure-Rust Pro Tools-class DAW:
timebases and tempo maps, WAV/AIFF/FLAC/symphonia audio IO with peaks,
SMF and MIDI ops, 26 original DSP plugins, the session model, the mix
engine, ~180 registered commands with undo, a cpal player, and the
agent rules (AGENTS.md, ATTRIBUTION.md).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 22:27:29 -04:00
Brandon Thomas c8d5a953e2 first commit 2026-10-05 20:08:04 -04:00