Mcaster1AudioPipe Development Roadmap
Virtual Audio Routing Application & Driver — Enterprise Broadcast-Grade Audio Piping
Overall Progress
6
Complete
0
In Progress
0
Planned
6 / 6 phases complete — v1.0.0
Mcaster1 Broadcast Ecosystem
Mcaster1AMP (Media Player)
| Selects AudioPipe device as output
| Sends track metadata via IPC
v
Mcaster1AudioPipe (This Project)
| Zero-latency ring buffer routing
| Named pipes with visual patch bay
| Combined/aggregate capture devices
v
Mcaster1DSPEncoder (Broadcast Encoder)
| Captures audio from pipe input device
| Receives metadata for ICY stream info
| Encodes MP3/AAC/Opus
v
Mcaster1DNAS / Icecast2 / RTMP
| Streaming server distribution
v
Listeners & Viewers
AP1
Qt6 Application + Device Enumeration
v0.1.0
Complete
Qt6 app launches with enterprise styling, discovers system audio devices, displays pipe list view.
Checklist
- ✓ CMake build system with Qt6 Widgets, SVG, Core modules
- ✓ MainWindow with menu bar, toolbar, and status bar
- ✓ Enterprise color palette (nickel, chrome, light blue, tan)
- ✓ Custom Qt stylesheet (QSS) for professional appearance
- ✓ PipeListWidget — scrollable list of named pipes (mock data initially)
- ✓ Create Pipe dialog (name, sample rate, channels)
- ✓ CoreAudio device enumeration (macOS) — list all input/output devices
- ✓ Device list display with capabilities (sample rates, channels)
- ✓ Hot-plug detection — USB device connect/disconnect updates list
- ✓ Configuration file (JSON) — save/load pipe definitions
- ✓ Application icon and window title
- ✓ System tray integration (macOS menu bar)
Key Files
- CMakeLists.txt
- src/app/main.cpp
- src/app/MainWindow.cpp
- src/app/MainWindow.h
- src/app/PipeListWidget.cpp
- src/app/PipeListWidget.h
- src/app/StyleManager.cpp
- src/app/StyleManager.h
- src/audio/DeviceEnumerator.cpp
- src/audio/DeviceEnumerator.h
- src/app/resources/style.qss
AP2
HAL Driver Rework + IPC
v0.2.0
Complete
Reworked CoreAudio HAL driver with dynamic named pipes controlled via IPC from the Qt6 GUI.
Checklist
- ✓ Refactor HAL plugin for dynamic device creation/destruction
- ✓ Multiple named pipe devices (up to 16)
- ✓ Per-pipe custom device name and UID
- ✓ Per-pipe sample rate configuration (44.1k, 48k, 96k)
- ✓ Per-pipe channel count (mono, stereo)
- ✓ IPC layer — CFMessagePort for GUI ↔ driver communication
- ✓ CreatePipe IPC command (name, sample rate, channels) → device appears
- ✓ DestroyPipe IPC command → device removed
- ✓ GetStatus / ListPipes / SetVolume / SetMute IPC commands
- ✓ SIP-aware install script (copy + no reboot required, no launchctl kickstart)
- ✓ Per-pipe volume and mute controls (output and input)
- ✓ GUI integration — create pipe in list → IPC → device appears in system
- ✓ Clean uninstall script (no reboot required)
Key Files
- src/driver/macos/Mcaster1AudioPipe.c
- src/driver/macos/pipe_device.h
- src/driver/macos/pipe_device.c
- src/driver/macos/pipe_ipc_server.h
- src/driver/macos/pipe_ipc_server.c
- src/driver/macos/ring_buffer.h
- src/driver/macos/Info.plist
- src/ipc/PipeIPC.h
- src/ipc/PipeController.cpp
- src/ipc/PipeController.h
- scripts/install.sh
- scripts/uninstall.sh
AP3
Audio Engine + Zero-Latency Routing
v0.3.0
Complete
Audio flows through pipes with zero-latency ring buffers. Metering, metadata pass-through, monitor output, driver management GUI.
Checklist
- ✓ Lock-free SPSC ring buffer — cache-line aligned for ARM64
- ✓ Cache-line aligned buffer (128B for Apple Silicon false-sharing prevention)
- ✓ Optimized memcpy-based ring buffer read/write (contiguous chunks)
- ✓ Channel mapping (mono ↔ stereo) via pipe_rb_write_convert / pipe_rb_read_convert
- ✓ Per-pipe volume/gain control (output + input, applied in IO path)
- ✓ Per-pipe mute control (output + input)
- ✓ Metadata IPC channel — SET_META / GET_META for title/artist/album
- ✓ Real-time signal level metering (peak + RMS with exponential decay)
- ✓ Buffer underrun/overrun detection via atomic counters
- ✓ GUI LevelMeterWidget — inline peak+RMS bars per pipe
- ✓ 100ms status polling timer for real-time meter updates
- ✓ Monitor output toggle — optional pipe audio to real device
- ✓ Live sample rate switching via IPC (SET_RATE)
- ✓ Audio Driver Management panel — install/uninstall from GUI
- ✓ HAL plugin directory listing with bundle ID + version
- ✓ System audio services display (coreaudiod, kexts, launchd)
- ✓ Restart CoreAudio button with admin privileges
Key Files
- src/driver/macos/ring_buffer.h
- src/driver/macos/pipe_device.h
- src/driver/macos/pipe_device.c
- src/driver/macos/pipe_ipc_server.c
- src/driver/macos/Mcaster1AudioPipe.c
- src/ipc/PipeIPC.h
- src/ipc/PipeController.cpp
- src/ipc/PipeController.h
- src/app/LevelMeterWidget.cpp
- src/app/LevelMeterWidget.h
- src/app/AudioDriverManager.cpp
- src/app/AudioDriverManager.h
- src/app/MainWindow.cpp
AP4
Patch Bay — Interactive Visual Routing
v0.4.0
Complete
3D-styled interactive patch bay where users drag virtual audio cables between devices to create routing configurations.
Checklist
- ✓ PatchBayWidget — QGraphicsView-based interactive canvas
- ✓ DeviceNode — 3D-styled device panels with metallic/brushed gradient finish
- ✓ Input/output port indicators with glow effects when active
- ✓ CableItem — draggable virtual cables with Bézier curves
- ✓ Cable physics — natural droop/sag (configurable kSagFactor)
- ✓ Drag-and-drop: click output port → drag cable → drop on input port
- ✓ Cable snap-to-port with visual highlight feedback
- ✓ Right-click cable to disconnect (context menu)
- ✓ Real-time signal flow animation along cables (moving dots at 30 FPS)
- ✓ Auto-layout algorithm (3-column: inputs | pipes | outputs)
- ✓ Zoom (scroll wheel with clamping 0.15x-5x)
- ✓ Pan (middle-click or Alt+click drag)
- ✓ Fit All button — zooms to show all nodes
- ✓ Color-coded cables (8-color rotating palette)
- ✓ Tab integration with main window (toolbar shortcut)
- ✓ Node movable with cursor feedback (open/closed hand)
- ✓ Drop shadow on device nodes
- ✓ Cable shadow + sheen highlight for 3D appearance
- ✓ System devices auto-populated from DeviceEnumerator
- ✓ Pipe devices populated from driver IPC
Key Files
- src/app/PatchBayWidget.cpp
- src/app/PatchBayWidget.h
- src/app/DeviceNode.cpp
- src/app/DeviceNode.h
- src/app/CableItem.cpp
- src/app/CableItem.h
- src/app/PortItem.cpp
- src/app/PortItem.h
AP5
Enterprise Polish + SVG Assets
v0.5.0
Complete
SVG icons, preferences, shortcuts, security hardening, driver management tabs, service context menus, patch bay auto-rebuild.
Checklist
- ✓ Complete SVG icon set (40+ icons) — devices, controls, status
- ✓ High-DPI / Retina support for all icons and graphics
- ✓ Real-time peak + RMS level meters in pipe list
- ✓ Animated signal flow in patch bay cables
- ✓ Clipping indicators with visual warning
- ✓ Refined enterprise theme — final color calibration
- ✓ Keyboard shortcuts for all common operations
- ✓ Accessibility: screen reader labels, keyboard navigation
- ✓ About dialog with version, license, credits
- ✓ Preferences dialog (buffer size, launch at login, theme)
- ✓ Device connect/disconnect notifications
- ✓ Error handling — graceful recovery from device failures
- ✓ Performance profiling and optimization pass
- ✓ Security hardening (SAST audit, IPC validation, atomic types, compiler flags)
- ✓ Driver management tabbed UI (Installed Drivers + Audio Services tabs)
- ✓ Right-click context menus on audio services (Stop/Start/Restart)
- ✓ Patch bay auto-rebuild after driver install/uninstall
- ✓ 26/26 offline driver unit tests
Key Files
- src/app/resources/icons/*.svg
- src/app/resources/style.qss
- src/app/LevelMeter.cpp
- src/app/LevelMeter.h
- src/app/PreferencesDialog.cpp
- src/app/AboutDialog.cpp
AP6
Packaging & Distribution
v1.0.0
Complete
Universal binary build, DMG packaging, code signing, GitHub Actions CI, and Windows/Linux platform stubs.
Checklist
- ✓ macOS
.dmgdistribution image via CPack DragNDrop - ✓ macdeployqt — self-contained app bundle, no Homebrew dependency at runtime
- ✓ Ad-hoc and Developer ID code signing (deep sign app + driver)
- ✓ Universal binary build (
arm64 + x86_64) — one driver for Apple Silicon and Intel - ✓ Architecture detection in CMake — native host arch for dev,
MACOS_UNIVERSAL=ONfor release - ✓ Architecture validation in
install.sh—lipo -archscheck before install, clear error on mismatch - ✓ GitHub Actions CI —
macos-14(Apple Silicon ARM64) +macos-13(Intel x86_64) - ✓ Branch naming convention:
master,macos-dev,windows-dev,linux-dev - ✓ GPL-2.0-or-later license, README badges, and project documentation
- ✓ CPack configured for Windows NSIS and Linux DEB+RPM (driver pending)
- ✓ Windows IPC stub (
PipeController_win.cpp) and device enumeration (DeviceEnumerator_win.cpp) - ✓ Notarization instructions documented for App Store-independent distribution
Key Files
- CMakeLists.txt (MACOS_UNIVERSAL option)
- scripts/install.sh (arch detection)
- scripts/uninstall.sh
- scripts/package-macos.sh (universal DMG)
- .github/workflows/build.yml
- src/ipc/PipeController_win.cpp
- src/audio/DeviceEnumerator_win.cpp
- LICENSE
Mcaster1AMP & DSP Encoder Integration Points
Mcaster1AMP (Media Player) Integration
- AMP uses CoreAudio/Qt multimedia for audio output device selection
- AudioPipe devices appear in AMP's output device dropdown automatically
- AMP publishes track metadata (title, artist, album) via IPC
- Multiple AMP instances can output to different pipes simultaneously
- AMP detects pipe device availability and shows connection status
Mcaster1DSPEncoder (Broadcast Encoder) Integration
- Encoder uses CoreAudio input device selection to capture from pipes
- AudioPipe devices appear in Encoder's input source dropdown
- Encoder reads metadata from pipe's IPC metadata channel
- Metadata used for ICY stream info (Icecast/DNAS/RTMP)
- Encoder supports combined/aggregate pipe devices (multiple sources)
- Sample rate negotiation between pipe and encoder
Future: Video Capture & Beyond
Virtual Desktop / Monitor Driver
Virtual display output for video capture — combined audio+video pipeline for live streaming to YouTube, Twitch, and RTMP targets.
Windows WDM Virtual Audio Driver
Native Windows virtual audio cable using WDM kernel-mode driver with ASIO compatibility for professional audio interfaces.
Linux PipeWire Native Module
PipeWire virtual device module for seamless Linux audio routing without PulseAudio null-sink workarounds.
Advanced Routing Matrix
Per-channel routing matrix, inline DSP processing (EQ, dynamics), and network audio (AES67/Dante) support.
Multi-Channel (5.1 / 7.1)
Surround sound channel layouts for broadcast and production workflows requiring more than stereo routing.
RTMP / YouTube / Twitch Integration
Direct streaming output with combined audio+video from virtual pipes and virtual display capture.