ConsoleLink
A native macOS SwiftUI application for remote-controlling Universal Audio Console. TCP protocol reverse engineering, Metal rendering, and a custom plugin UI framework.
- Stack
- Swift · SwiftUI · Metal · TCP
- Platform
- macOS 14+ · Apple Silicon
- Status
- Active Development
The Problem
Universal Audio's Console application controls their Apollo audio interfaces — managing routing, plugin chains, and monitor mixes. But it only runs locally on the machine connected to the hardware. When working in a studio environment, I needed a way to control the console from anywhere on the network, with a native macOS experience that matched the quality of the hardware.
The Approach
I reverse-engineered UA Console's TCP protocol to build a native SwiftUI client that connects to any Console instance on the local network. The app discovers Console instances via mDNS, establishes a TCP connection, and synchronizes state bidirectionally at 60Hz.
The biggest challenge was building a plugin UI framework that renders audio plugin interfaces with hardware-accurate meter ballistics — the visual feedback musicians rely on for mixing.
Architecture
SwiftUI Views
MVVM
Plugin UI Framework
SSL G-Series · LA-2 · VT-737sp
TCP Network Layer
60Hz Polling · Bidirectional Sync
UA Console Application
Remote Hardware
SwiftUI Views follow the MVVM pattern with @Observable state management. Every UI element binds directly to the network-synchronized state tree, so changes propagate instantly in both directions.
Plugin UI Framework renders individual audio plugin interfaces — SSL G-Series Bus Compressor, Teletronix LA-2, Avalon VT-737sp — with pixel-accurate layouts. Each plugin has its own Canvas/Metal-rendered view with custom knobs, meters, and VU indicators.
TCP Network Layer maintains a persistent connection to UA Console, polling at 60Hz for state changes. Hardware meter values are smoothed with ballistic algorithms matching the behavior of real analog meters — fast attack, slow release.
Auto-Discovery uses mDNS/Bonjour to find Console instances on the local network without manual IP configuration.
Key Achievements
- Custom "Matte Silver" design language — a cohesive visual system for the entire app
- Plugin UI framework hosting 3 complete audio plugin interfaces with accurate meter rendering
- 60Hz bidirectional sync with hardware-accurate meter ballistics
- Auto-discovery of UA Console instances via mDNS
- MVVM architecture with clean separation between UI, state management, and networking
What I Learned
Building ConsoleLink reinforced that great native apps come from deeply understanding both the platform (SwiftUI, Metal, Apple's networking stack) and the domain (audio, real-time metering, plugin architectures). The protocol reverse engineering required the same systematic approach as Apollo-Linux, but the UI work demanded a different kind of precision — making virtual knobs and meters feel as responsive as their hardware counterparts.