mirror of
https://github.com/storytold/soundcraft.git
synced 2026-10-24 10:36:46 -06:00
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>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
8269ca77f6
commit
cc86842abe
@@ -25,6 +25,7 @@ Pro Tools is installed on the dev machine and may be *observed* black-box: run i
|
||||
People trust SoundCraft with their recordings; a crash loses takes. **This outranks feature work.** Standard: [`craftrules/standards/never-crash.md`](https://github.com/storytold/craftrules/blob/main/standards/never-crash.md).
|
||||
- No panics in non-test code: no `unwrap()`, `expect()`, `panic!`, `unreachable!`, `todo!`, `unimplemented!`; no `unsafe` (`unsafe_code = "forbid"`).
|
||||
- The one named exception is `soundcraft-clap-host` (`crates/clap-host`), the isolated unsafe helper crate for CLAP plugin FFI: `unsafe_code = "deny"` crate-wide, allowed only in `src/ffi.rs` with a `// SAFETY:` comment on every block, safe `Result` API.
|
||||
- The same exception, same rules, for `soundcraft-vst3-host` (`crates/vst3-host`), the isolated unsafe helper crate for VST3 plugin FFI (COM vtables via the `vst3` bindings, module loading, host-side COM objects).
|
||||
- Errors are `Result<T, E>` + `?`. An unfinished feature returns an "unsupported" error.
|
||||
- Input-derived numbers are hostile (files, commands, MCP/control params): `get()` not `[i]`, checked/saturating arithmetic, no NaN casts, cap allocations.
|
||||
- The audio callback never blocks, allocates in steady state, or panics.
|
||||
|
||||
Reference in New Issue
Block a user