mirror of
https://github.com/storytold/soundcraft.git
synced 2026-10-26 03:26:49 -06:00
Setup > Playback Engine now chooses the audio system (cpal host), output and input device, device sample rate and buffer size, kept per machine with the UI preferences and applied by reopening the devices (refused while recording; the transport position is kept). ui.audio_device does the same for agents and lists every system with its devices, channels, rates and buffer range. Player and recorder open the chosen device, fall back to the defaults for anything unavailable (unplugged device, unsupported rate), retry with the device's default buffer when the chosen one is refused, and convert 32/16-bit integer devices from and to the f32 mix through scratch buffers allocated up front (no allocation in the callbacks). ASIO is behind an opt-in 'asio' feature (playback and app): building it downloads Steinberg's ASIO SDK (proprietary licence or GPLv3) and needs LLVM, so it stays off by default. Verified on Windows with an SSL 2+: WASAPI output/input switching and buffer 256, ASIO duplex at 128. Docs: G-01 shrunk, hardware-parity rows, roadmap log. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
205 lines
12 KiB
Markdown
205 lines
12 KiB
Markdown
# Where SoundCraft falls short of Pro Tools
|
||
|
||
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-12 · **Change:** minor (G-01: audio device settings and opt-in ASIO) · **Target:** Avid Pro Tools Ultimate 2026.4.1
|
||
|
||
Every known shortfall, one entry each, ranked by how much it stops a Pro Tools user from doing
|
||
real work in SoundCraft. This is the work list: pick from the top. Rows marked **alpha blocker**
|
||
fail the core-workflow gate in [`roadmap.md`](roadmap.md#alpha-gate) and keep SoundCraft pre-alpha. Numbers and weights live in
|
||
[`target-app-parity.md`](target-app-parity.md); the plan that orders these into milestones is
|
||
[`roadmap.md`](roadmap.md). Hours are Opus 5.5 agent-hours (calibration in target-app-parity.md).
|
||
Estimates marked "≈" are judgements; issue numbers are `storytold/soundcraft` GitHub issues.
|
||
|
||
When you close a gap, delete its entry (or shrink it) in the same PR, and bump the timestamp.
|
||
|
||
## Ranked gaps
|
||
|
||
| # | Gap | Dimension | Doc | Est. (h) |
|
||
|---|---|---|---|---:|
|
||
| G-01 | **Alpha blocker.** No channel routing or duplex low-latency path (device, rate and buffer choice done; ASIO opt-in) | Hardware | [hardware-parity.md](hardware-parity.md) | 15–25 |
|
||
| G-02 | **Alpha blocker.** No MIDI device input or output | Hardware / MIDI | [hardware-parity.md](hardware-parity.md) | 20–35 |
|
||
| G-03 | **Alpha blocker.** Cannot exchange sessions with Pro Tools (no AAF/OMF, no `.ptx`) | File formats | [file-format-parity.md](file-format-parity.md) | 50–90 |
|
||
| G-04 | Open correctness bugs in features counted as done (~25 issues) | Stability | this file | 25–40 |
|
||
| G-05 | (Entitlement part: alpha blocker for the mix row) Third-party VST3s blocked in the signed macOS build; AU editors missing | Ecosystem | [plugin-parity.md](plugin-parity.md) | 15–25 |
|
||
| G-06 | (Record-to-disk part: alpha blocker for the tracking row) Sources decoded whole into RAM; recording into RAM | Performance | [hardware-parity.md](hardware-parity.md) | 15–25 |
|
||
| G-07 | Nothing is compared against Pro Tools' output (no fidelity harness) | Features | this file | 20–30 |
|
||
| G-08 | Built-in plugin catalogue thin and unverified | Features | [plugin-parity.md](plugin-parity.md) | 80–120 |
|
||
| G-09 | English only, no string catalog, no CJK/RTL rendering | Localization | [localization-parity.md](localization-parity.md) | 70–110 |
|
||
| G-10 | No control surfaces (HUI/MCU, EUCON) | Hardware | [hardware-parity.md](hardware-parity.md) | 40–70 |
|
||
| G-11 | No external sync (MTC, LTC, MIDI clock, video reference) | Hardware | [hardware-parity.md](hardware-parity.md) | 15–25 |
|
||
| G-12 | Immersive delivery: no Dolby Atmos/ADM BWF, MPEG-H, binaural | Features | [file-format-parity.md](file-format-parity.md) | 50–80 |
|
||
| G-13 | Sidechain inputs, ARA, out-of-process plugin sandboxing | Ecosystem | [plugin-parity.md](plugin-parity.md) | 30–50 |
|
||
| G-14 | Windows/Linux/Web exercised only lightly at runtime; no PR CI running the tests | Platforms / Stability | this file | 20–40 |
|
||
| G-15 | Elastic Audio depth: one algorithm, no Elastic Pitch | Features | [target-app-parity.md](target-app-parity.md) | 30–45 |
|
||
| G-16 | Session templates, track presets, workspace browser, batch rename | Features | [target-app-parity.md](target-app-parity.md) | 25–40 |
|
||
| G-17 | Video: HEVC/DNx decode, video export, external timecode | Features / Formats | [file-format-parity.md](file-format-parity.md) | 30–50 |
|
||
| G-18 | Speech-to-text transcription | AI | this file | 30–50 |
|
||
| G-19 | UI feel: generic plugin windows, shortcut collisions, pro-grade meters and scaling | UI/UX | [ui-parity.md](ui-parity.md) | 60–100 |
|
||
| G-20 | MIDI/instrument depth: MIDI learn, sampler, notation editing | Features | [target-app-parity.md](target-app-parity.md) | 40–60 |
|
||
| G-21 | Compressed export (MP3, AAC/M4A, Ogg/Opus) | File formats | [file-format-parity.md](file-format-parity.md) | 10–20 |
|
||
| G-22 | Avid cloud services (collaboration, Sketch, Splice, sign-in) | Ecosystem | — | not estimated (owner decision) |
|
||
|
||
## Details
|
||
|
||
### G-01. Audio interface support
|
||
|
||
- **Done (2026-10-12):** Setup › Playback Engine chooses the audio system, output and input
|
||
device, sample rate and device buffer size (kept with the preferences, per machine; `ui.audio_device`
|
||
for agents); f32 and 16/32-bit integer devices; ASIO behind the opt-in `asio` build feature
|
||
(verified on Windows with an SSL 2+ at 128 samples).
|
||
- **Missing:** routing to physical channels (I/O Setup), one duplex stream on one clock (input and
|
||
output are still separate cpal streams), latency reporting and record-offset compensation, ASIO
|
||
in official builds (owner decision: Steinberg's SDK is proprietary or GPLv3), JACK, and
|
||
verification on macOS and Linux. The mix still runs in fixed 512-sample blocks.
|
||
`setup.playback_engine` still stores `device`/`buffer_size` in the session, unused.
|
||
- **Evidence:** code above; Playback Engine window says "Mix block size: 512 samples"; issue #42
|
||
(no input device selection, forced monitoring feedback with virtual routing).
|
||
- **Impact:** blocks tracking with any multichannel interface; latency makes overdubs hard.
|
||
- **Estimate:** ≈ 25–40 h (device enumeration and selection, buffer size, duplex stream with one
|
||
clock, ASIO feature build, per-channel I/O mapping into I/O Setup, latency reporting and
|
||
record-offset compensation). Needs hands-on hardware testing.
|
||
|
||
### G-02. MIDI devices
|
||
|
||
- **Missing:** all MIDI hardware I/O. No `midir`/CoreMIDI/WinMM/ALSA sequencer code exists;
|
||
`setup.midi_input_devices` and `setup.midi_studio` only store names. You cannot record from a
|
||
keyboard, play a hosted instrument live, drive external synths, or send MIDI clock/MTC.
|
||
`midi_editor.rs:288` notes audition "needs a live MIDI input path".
|
||
- **Impact:** MIDI production is limited to drawing notes and importing SMF.
|
||
- **Estimate:** ≈ 20–35 h (device layer, realtime input to armed tracks and instruments with
|
||
timestamps, MIDI record/merge/loop, thru, output tracks, clock out).
|
||
|
||
### G-03. Session interchange with Pro Tools
|
||
|
||
- **Missing:** opening or saving `.ptx`/`.ptf`, AAF and OMF import and export (#40), Media
|
||
Composer–compatible sessions. Our session format is `.scraft` JSON.
|
||
- **Impact:** the standard's main-format bar for beta. A Pro Tools user cannot bring a project in
|
||
or hand one back; post-production (picture editors deliver AAF) is blocked.
|
||
- **Estimate:** AAF/OMF import + export ≈ 50–90 h (FilmCraft already writes AAF/OMF; we can learn
|
||
from it but not share code). `.ptx` is proprietary and undocumented: owner decision on whether
|
||
black-box format study is in the clean-room rules; not included in the estimate.
|
||
|
||
### G-04. Correctness bugs in "done" features
|
||
|
||
Open on 2026-10-10 (several have PRs open):
|
||
editing #3, #5, #140, #144; clip/session #86 (PR #123), #88 (PR #130), #91 (PR #124), #92 (PR #132);
|
||
automation #104 (PR #134); mix/bounce #59 (PR #131), #103 (PR #133), #152; playback #101 (PR #129);
|
||
MIDI #87, #98 (PR #125); import #89 (PR #128); CLI #95, #96 (PR #126, #127); MCP #145 (PR #146);
|
||
web #63, #64, #136; Clip List #4 (PR #75); plugin view #6; shortcuts #7, #41;
|
||
launch #142; Linux #45, #107.
|
||
- **Impact:** each one is small, but together they say "presence is not parity": an outside
|
||
contributor found seven in one sitting (#116–#122).
|
||
- **Estimate:** ≈ 25–40 h at 0.5–1.5 h each, plus review of the open PRs.
|
||
|
||
### G-05. Plugin hosting on macOS
|
||
|
||
- **Missing:** the `com.apple.security.cs.disable-library-validation` entitlement in the signed
|
||
build, so hardened runtime refuses third-party VST3 bundles (#153, #149). AU editor views
|
||
(`crates/au-host/src/lib.rs` header: "Not hosted yet: Audio Unit editor views"). Embedded CLAP
|
||
GUIs; VST3 editors on Windows/Linux.
|
||
- **Estimate:** ≈ 15–25 h (entitlement ≈ 1 h; AU Cocoa views and VST3 HWND/X11 views most of it).
|
||
|
||
### G-06. Memory-bound media
|
||
|
||
- **Missing:** streaming sources from disk; recording to disk. Every source is decoded whole into
|
||
the `SourcePool`; takes accumulate in RAM until stop (PR #84 open).
|
||
- **Impact:** hour-long multitrack sessions and long takes exhaust memory; a crash during a long
|
||
take loses it.
|
||
- **Estimate:** ≈ 15–25 h.
|
||
|
||
### G-07. Fidelity harness against Pro Tools
|
||
|
||
- **Missing:** any measured comparison: null tests of bounces of the same material, fade curve
|
||
and pan-law checks, plugin frequency/dynamics responses, elastic-audio quality, automation
|
||
timing. Pro Tools is installed; it can be driven black-box with synthetic sessions (outputs kept
|
||
under `plan/`, never committed).
|
||
- **Estimate:** ≈ 20–30 h for the harness and the first 20 scored cases; turns many "≈" in
|
||
target-app-parity.md into measurements.
|
||
|
||
### G-08. Built-in plugins
|
||
|
||
See [`plugin-parity.md`](plugin-parity.md): 26 processors + 2 instruments against Pro Tools'
|
||
roughly 80 bundled processors and instruments; no fidelity checks; generic parameter UIs; EQ
|
||
parametric request #139. ≈ 80–120 h.
|
||
|
||
### G-09. Localization
|
||
|
||
See [`localization-parity.md`](localization-parity.md): no catalog, every string literal in code;
|
||
egui has no complex-script shaping or RTL; no CJK font fallback (PR #141 open). ≈ 70–110 h plus
|
||
native-speaker review.
|
||
|
||
### G-10. Control surfaces
|
||
|
||
None: no HUI or Mackie Control, no EUCON (Avid-proprietary, needs Avid's SDK: owner decision),
|
||
no generic MIDI controller mapping. Pro Tools users on S1/S3/S4/S6/Dock or HUI devices can't
|
||
switch. ≈ 40–70 h for HUI/MCU plus a mapping layer; hardware needed to verify.
|
||
|
||
### G-11. Sync
|
||
|
||
No MTC/LTC chase or generation, no MIDI Beat Clock (`setup.midi_beat_clock` stores a flag only),
|
||
no video reference or word clock awareness, no Satellite-style linking. ≈ 15–25 h after G-01/G-02.
|
||
|
||
### G-12. Immersive delivery
|
||
|
||
No Dolby Atmos renderer integration, ADM BWF import/export, re-renders, binaural monitoring,
|
||
MPEG-H (new in Pro Tools 2026.4), surround/object automation. ≈ 50–80 h; Dolby's renderer and
|
||
SDKs are licensed, so we'd write our own ADM and object renderer.
|
||
|
||
### G-13. Plugin ecosystem depth
|
||
|
||
No sidechain (key input) buses for any host; no ARA (Melodyne-style editing is a menu in Pro
|
||
Tools); plugins run in-process, so a crashing plugin can take the session down. ≈ 30–50 h. AAX
|
||
cannot be hosted (#109): Avid's AAX SDK licence and PACE signing; owner decision, likely never.
|
||
|
||
### G-14. Platforms and CI
|
||
|
||
Only `freebsd.yml` and `windows-arm64.yml` run on pull requests, and only for manifest paths;
|
||
nothing runs `cargo xtask ci` on PRs. Windows and Linux have startup and rendering reports
|
||
(#41, #45, #107, #142). ≈ 20–40 h (a PR CI matrix plus runtime smoke tests on three OSes).
|
||
|
||
### G-15. Elastic Audio depth
|
||
|
||
One warp algorithm; Pro Tools offers several per track (polyphonic, rhythmic, monophonic,
|
||
varispeed, high-quality offline) plus Elastic Pitch and warp-marker editing depth. ≈ 30–45 h.
|
||
|
||
### G-16. Session management
|
||
|
||
No session templates, track presets, workspace/sound browser with previews, batch rename (new in
|
||
2026.4), disk-usage and relink depth. ≈ 25–40 h.
|
||
|
||
### G-17. Video and post
|
||
|
||
No HEVC, DNxHD/HR or AV1 decode; no bounce with video; no external timecode/9-pin; no iXML
|
||
field-recorder conform. ≈ 30–50 h.
|
||
|
||
### G-18. Speech-to-text
|
||
|
||
Pro Tools transcribes dialogue to a searchable transcript (upgraded in 2026.4). We have a
|
||
settings command only. Needs an openly licensed local speech model. ≈ 30–50 h.
|
||
|
||
### G-19. UI feel
|
||
|
||
See [`ui-parity.md`](ui-parity.md). ≈ 60–100 h.
|
||
|
||
### G-20. MIDI and instrument depth
|
||
|
||
MIDI learn, a sampler (PR #108), drum machine depth, notation editing (tuplets, lyrics,
|
||
articulations, parts). ≈ 40–60 h.
|
||
|
||
### G-21. Compressed export
|
||
|
||
Bounce writes WAV/BWF/RF64, AIFF and FLAC; Pro Tools also writes MP3 and AAC/M4A in Bounce Mix.
|
||
≈ 10–20 h (pure-Rust encoders).
|
||
|
||
### G-22. Avid cloud services
|
||
|
||
Collaboration, cloud projects, Sketch, Splice, Learn, sign-in: 11 of the 30 menu leaves still
|
||
missing. Out of scope unless the owner decides otherwise.
|
||
|
||
## Revision history
|
||
|
||
| Date | Change | Summary |
|
||
|---|---|---|
|
||
| 2026-10-12 | minor | G-01 shrunk: audio device, rate and buffer choice; opt-in ASIO |
|
||
| 2026-10-10 | minor | Marked the alpha blockers (G-01, G-02, G-03; parts of G-05 and G-06) from the core-workflow gate |
|
||
| 2026-10-10 | major | Created from the full re-measure against Pro Tools Ultimate 2026.4.1: 22 ranked gaps with evidence and estimates |
|