Files
soundcraft/docs/hardware-parity.md
T
Limestudio90andClaude Opus 5.5 a1e9660e60 Audio device settings: system, devices, sample rate, buffer size; opt-in ASIO
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>
2026-10-12 18:22:41 +02:00

4.7 KiB
Raw Blame History

Hardware parity

Last reviewed: 2026-10-10 · Last updated: 2026-10-12 · Change: minor (audio device, rate and buffer choice; ASIO feature) · Target: Avid Pro Tools Ultimate 2026.4.1

A DAW is judged by how it drives audio interfaces, MIDI gear, control surfaces and sync. This is SoundCraft's weakest dimension. Ours is measured from crates/playback (cpal) and the absence of any MIDI-device or control-surface code; Pro Tools' from its documentation and Setup menus.

Hardware: ~12 % ready (estimated). Performance: ~35 % (estimated; nothing benchmarked against Pro Tools). Remaining ≈ 110–180 h for hardware, 40–70 h for performance.

Legend: ✅ works · 🟡 partial · ❌ missing.

Audio interfaces

Feature Pro Tools (macOS / Windows) SoundCraft macOS Windows Linux FreeBSD Web
Driver API Core Audio / ASIO 🟡 Core Audio via cpal 🟡 WASAPI shared via cpal; ASIO with the opt-in asio build feature (verified with an SSL 2+) 🟡 ALSA/Pulse via cpal; no JACK 🟡 cpal (ALSA layer) 🟡 Web Audio
Choose playback device ✅ Playback Engine 🟡 Setup › Playback Engine (not yet verified on macOS) ✅ Setup › Playback Engine (WASAPI, ASIO) 🟡 (not yet verified) 🟡 (not yet verified) ❌
Choose input device ✅ 🟡 Setup › Playback Engine (not yet verified on macOS) ✅ (WASAPI, ASIO) 🟡 (not yet verified) ❌ no recording ❌
Buffer size (32–2048) ✅ 🟡 device buffer when the driver allows it (not yet verified); mix in 512-sample blocks 🟡 device buffer 16–8192 (verified 128 on ASIO, 256 on WASAPI); mix in 512-sample blocks 🟡 (not yet verified) 🟡 ❌
Duplex stream on one clock ✅ ❌ separate input/output streams ❌ ❌ ❌ ❌
Hardware I/O mapping (I/O Setup to physical channels) ✅ 🟡 multichannel output in order; no per-channel map 🟡 🟡 🟡 ❌
Low-latency monitoring ✅ ❌ (options.low_latency_monitoring is a stored flag) ❌ ❌ ❌ ❌
Latency reporting and record offset compensation ✅ ❌ ❌ ❌ ❌ ❌
Sample rate follows the session; resample when it can't ✅ (switches device) 🟡 resamples (input pitch bug fixed, #28) 🟡 🟡 🟡 🟡
Avid HDX / HD Native DSP, Hybrid Engine DSP mode ✅ ❌ (out of reach: Avid hardware) ❌ ❌ ❌ ❌
Disk allocation / record to disk ✅ ❌ recording into RAM (PR #84) ❌ ❌ ❌ ❌

MIDI

Feature Pro Tools SoundCraft (all platforms)
MIDI input devices (keyboards, pads) ✅ ❌ no MIDI device layer at all (setup.midi_input_devices stores names)
MIDI output to external gear ✅ ❌
MIDI Thru, input filter ✅ ❌ (stored flags only)
MIDI Beat Clock out, MTC generate/chase ✅ ❌
MIDI learn / controller mapping ✅ (via surfaces and plug-in maps) ❌
Virtual MIDI keyboard ✅ (MIDI Keyboard window) 🟡 window exists, no live audition path

Control surfaces

Feature Pro Tools SoundCraft
EUCON (S1/S3/S4/S6, Dock, Control app) ✅ ❌ Avid-proprietary SDK; owner decision
HUI ✅ ❌
Mackie Control Universal ✅ (via HUI emulation and personalities) ❌
Generic MIDI controller personalities ✅ ❌

Sync and video hardware

Feature Pro Tools SoundCraft
LTC / MTC chase, 9-pin machine control ✅ (Ultimate) ❌
Word clock / video reference awareness ✅ via interface ❌
Video output to a second display or video card ✅ ❌ (video window only)
Satellite linking of systems ✅ ❌

Performance

Feature Pro Tools SoundCraft Evidence
Parallel mixing across cores ✅ ✅ soundcraft-mix renders independent strips in parallel (rayon)
Plugin delay compensation ✅ ✅
Disk streaming of long sources ✅ ❌ Whole files decoded into the SourcePool
Track count (Ultimate: 2,048 voices) ✅ unmeasured No benchmark exists; add cargo xtask bench
Real-time audio thread discipline ✅ ✅ No blocking/allocation in steady state, audio-thread-aware logger
Freeze / commit to save CPU ✅ 🟡 track.commit renders; track.freeze only sets a flag (no CPU saved)
GPU-accelerated UI — ✅ (wgpu/glow via eframe) llvmpipe X11 issue #107

Revision history

Date Change Summary
2026-10-12 minor Audio device settings: system, output, input, sample rate and buffer size; opt-in ASIO
2026-10-10 major Created: audit of audio interface, MIDI, control-surface, sync and performance support against Pro Tools 2026.4.1