v1.0.0
Docs README Features HOWTO

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
Verification
App launches → shows enterprise-styled window → lists system audio devices → create/delete pipes in list → config persists across restart
Effort
3–4 sessions
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
Verification
Install driver → no reboot required → create pipe from GUI → device appears in Audio MIDI Setup → delete pipe → device removed → Mcaster1AMP can select pipe as output
Effort
3–5 sessions
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
Verification
Play audio in AMP → select pipe output → DSP Encoder captures from pipe → audio is clean, zero glitches → metadata appears in encoder → latency < 1ms at 48kHz
Effort
4–6 sessions
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
Verification
Open patch bay → see all devices as 3D nodes → drag cable from AMP output to pipe input → cable snaps → audio flows → disconnect cable → routing stops → combine 2 sources into 1 pipe
Effort
5–7 sessions
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
Verification
All icons render crisp at 2x → meters animate smoothly → cables glow with signal → theme looks professional on 4K display → keyboard-only navigation works
Effort
3–5 sessions
AP6
Packaging & Distribution v1.0.0 Complete
Universal binary build, DMG packaging, code signing, GitHub Actions CI, and Windows/Linux platform stubs.
Checklist
  • macOS .dmg distribution 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=ON for release
  • Architecture validation in install.shlipo -archs check 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
Verification
cmake -B build -DMACOS_UNIVERSAL=ON → make package → universal DMG produced → lipo -archs shows arm64 x86_64 → install.sh validates arch before install → 26/26 driver tests pass → CI green on ARM64 + Intel runners
Status
Complete — v1.0.0

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.