Skip to main content
knives on strings
Home The Stuff The Lab The Team About Store
X Gumroad KVR Audio Ko-fi
Home The Stuff The Lab The Team About Store
X Gumroad KVR Audio Ko-fi
The Stuff / RedMatrix

RedMatrix

RedMatrix — FOCUSRITE SCARLETT / CLARETT CONTROL IN DEV

Pre-alpha — mock mode complete, USB hardware integration in progress

FormatsTauri (Rust + React)
PlatformsWindows
Version0.7.0
GitHub Report a Bug / Request a Feature

Focusrite Control works. It's just not particularly enjoyable to use. Dropdown menus where a routing matrix should be. No way to see everything at once. Too many clicks for things that should be one click. And since Focusrite quietly killed their iOS remote app for Gen 2 and 3 devices, there's been no way to adjust your monitor mix from across the room.

RedMatrix fixes both of those problems.

What it does

  • Replaces the dropdown routing menus with an actual patchbay grid — every input-to-output connection visible and clickable at once
  • Full channel strip mixer: faders, VU meters, solo/mute, 4 assignable sub-faders per bus, master control
  • Per-input config: PAD, AIR, INST, 48V phantom power — all in one place, not buried in tabs
  • Custom labels on every input, output, DAW channel, and mixer bus — they persist, so you don't have to remember what "Analogue 7/8" actually is
  • Stereo pairing for inputs and outputs, including S/PDIF and ADAT
  • iPad remote control over encrypted LAN — adjust your monitor mix from anywhere in the studio
  • Multi-device support for 15 Focusrite interface models
  • Mock mode — fully interactive simulation with no hardware required

Supported devices

  • Scarlett 3rd Gen: Solo, 2i2, 4i4, 8i6, 18i8, 18i20 (primary dev device)
  • Scarlett 2nd Gen: 6i6, 18i8, 18i20
  • Clarett USB: 2Pre, 4Pre, 8Pre
  • Clarett+: 2Pre, 4Pre, 8Pre

4th Gen large models (16i16, 18i16, 18i20) use a different protocol and are not currently supported.

Architecture

Built with Tauri — Rust backend handling USB communication (via libusb) and a React/TypeScript/Tailwind frontend. The Rust process also runs an encrypted WebSocket server (ECDH P-256 + AES-256-GCM) for iPad remote pairing.

Changelog

Unreleased — July 2026

  • Meter ballistics — level meters snap to peaks immediately and fall away over 300 ms, so transients are visible instead of being averaged into nothing.
  • Phantom power asks before it arms — enabling 48V puts up a confirmation first, because sending phantom power to a ribbon mic is an expensive way to learn which button you clicked.
  • Port visibility follows the sample rate — changing the rate rebuilds the device state, so ADAT channels that do not exist at 96 kHz no longer linger in the matrix.

v0.7.0 — July 2026

  • Mixer VCA: software sub-group and master faders with relative gain scaling, clamped to -80..6 dB, leaving already-silent channels untouched
  • Input and output stereo linking in the Mixer and Output Matrix — linked channels share a combined strip with dual meters and linked fader/mute/solo; linked outputs auto-route stereo sources L-to-L / R-to-R, or clone mono sources across both
  • Undo/redo via Ctrl+Z / Ctrl+Shift+Z
  • A connection status badge in the header — green "USB" dot for real hardware, amber "Mock" dot for simulation
  • Device state now rebuilds when the sample rate changes, so ADAT, mixer, and PCM port counts reflect what's actually available at that rate — ADAT halves at 88.2/96kHz and drops out above that, along with the mixer and S/PDIF output
  • Phantom power now asks for confirmation before enabling 48V, to avoid frying a ribbon or dynamic mic; disabling still happens immediately, no prompt
  • Meter ballistics: instant attack, 300ms exponential decay, driven by a 60fps animation-frame loop instead of CSS transitions
  • Added a release build script that bumps the version across all locations, runs the test suites, builds the production app, and copies installers to release/

v0.6.0 — July 21, 2026

  • USB hardware control for four settings: Sample Rate, Clock Source, Digital I/O Mode (S/PDIF), and Speaker Switching (MAIN/ALT) — class-specific UAC2 transfers for Sample Rate and Clock Source, proprietary writes for the other two
  • Dynamic descriptor parsing auto-detects each device's Clock Source and Clock Selector Unit IDs instead of hardcoding them per model
  • Master Volume is now read-only over hardware — writes were previously silently ignored, so RedMatrix now returns an explicit read-only error instead
  • libusb is now statically linked (no more DLL distribution), and a Windows build crash (STATUS_ENTRYPOINT_NOT_FOUND) in test binaries is fixed

v0.5.0 — May 23, 2026

  • First real hardware support — a new RusbTransport talks directly to physical Scarlett/Clarett interfaces over USB using class-interface control transfers, no more mock-only backend
  • Automatic control interface detection: scans USB descriptor class codes for vendor-specific (0xFF) interfaces instead of hardcoding endpoint numbers per device
  • Hotplugging — a background Hardware Monitor task detects device insertion, claims the control interface, and starts the listener loop automatically
  • Hardware notifications now flow both ways: a USB interrupt endpoint poller picks up sync, dim/mute, volume, input, and monitor changes made directly on the interface itself
  • Real hardware metering — CMD_GET_METER polls the device at 20Hz and streams normalized levels to WebSocket clients as binary little-endian floats
  • Centralized Command Runner processes incoming WebSocket commands against the shared device state and broadcasts the result, replacing ad-hoc per-command handling
  • Bonjour/mDNS service advertising (_redmatrix._tcp) so the iPad remote can find RedMatrix on the LAN without typing an IP
  • New in-app Driver Setup guide walking through Zadig (WinUSB), UsbDk, and Linux udev rules for handing USB control over to RedMatrix
  • Fixed pairing approval requests going nowhere when the WebSocket session lost its link to the Tauri app handle
  • Tauri app and WebSocket server now share a single DeviceState instance instead of two that could drift out of sync
  • Tightened USB transfer timeouts to 200ms so meter polling doesn't stall UI writes

v0.2.0 — April 7, 2026

  • Full UI built out across all tabs — Overview (live meter strips), Mixer (channel faders, sub-faders, master), Input Config, Output Matrix, Settings
  • Mock device system with all 15 supported hardware configs — full UI development and testing without physical hardware
  • iPad remote pairing — full flow with QR code, server fingerprint, connection info in Settings; pairing modal with approval/reject
  • VU meters with peak hold, driven from Tauri events; meter polling capped at 20 Hz
  • Input stereo pairing for analogue, S/PDIF, and ADAT with editable pair names
  • Custom channel labels shown in Overview meter strips
  • Config persistence for stereo pairs, bus names, and theme to disk
  • Collapsible source groups in Output Matrix; Off row at top
  • Talkback mic separated from analogue inputs across all views
  • Direct, Clear, and Solo buttons wired; batch command dispatch; master volume control
  • RedMatrix wordmark and initial logo/icon SVGs

v0.1.0 — April 2026

  • Phase 0 complete — USB access and protocol validation
  • Phase 1 complete — Rust protocol library with 159 tests (TDD)
  • Phase 2 in progress — Desktop MVP: full UI in mock mode, USB hardware integration underway
  • All 15 device configs ported from the Linux kernel driver
  • Encrypted WebSocket server with ECDH pairing flow for iPad remote
knives on strings

© 2026 Knives on Strings

X Gumroad KVR Audio Ko-fi
Legal Terms Privacy