76 lines
4.2 KiB
Markdown
76 lines
4.2 KiB
Markdown
# Hardware parity
|
||
|
||
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-10 · **Change:** major (first hardware audit against Pro Tools 2026.4.1) · **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; no ASIO | 🟡 ALSA/Pulse via cpal; no JACK | 🟡 cpal (ALSA layer) | 🟡 Web Audio |
|
||
| Choose playback device | ✅ Playback Engine | ❌ default output only | ❌ | ❌ | ❌ | ❌ |
|
||
| Choose input device | ✅ | ❌ default input only (#42) | ❌ | ❌ | ❌ | ❌ |
|
||
| Buffer size (32–2048) | ✅ | ❌ fixed 512-sample mix block | ❌ | ❌ | ❌ | ❌ |
|
||
| 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-10 | major | Created: audit of audio interface, MIDI, control-surface, sync and performance support against Pro Tools 2026.4.1 |
|