Back to projects
Native macOSSwiftUIProtocol REAudio

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

↕ @Observable State

Plugin UI Framework

SSL G-Series · LA-2 · VT-737sp

↕ Metal/Canvas Rendering

TCP Network Layer

60Hz Polling · Bidirectional Sync

↕ Auto-Discovery (mDNS)

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.