You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Device Panel: Per-device view with expandable TX/RX channel list
Monitoring Wall: Drag-and-drop streams to 16-slot monitoring wall
Real-time Meters: dBFS level meters with peak hold
Audio Playback: Listen to any stream with channel selection
PTP Monitoring: Track IEEE 1588 grandmaster and lock status per stream
Multi-language: 8 languages (EN, FR, DE, ZH, JA, KO, ES, IT)
Cross-platform: Windows, macOS, Linux
Tech Stack
Frontend: React 18 + TypeScript + Vite + TailwindCSS
Desktop: Electron 33
Audio: Audify (RtAudio bindings)
SDP Parsing: sdp-transform
Drag & Drop: @dnd-kit/core
Installation
git clone https://github.com/dewiweb/aes67_visualizer.git
cd aes67_visualizer
npm install
npm run dev:app # development
npm run build:electron # production
⚠️PTP conflict risk: Dante native (PTPv1) and RAVENNA/AES67 (PTPv2) cannot share a PTP grandmaster. Running both on the same network segment without VLAN isolation can destabilize clock sync for all devices.
Dante ARC Protocol
The ARC (Audio Routing Control) protocol uses a binary UDP format on port 4440.
Result codes:0x0001 = OK, 0x8112 = OK (more pages), 0x0022 = error
Sources & References
Open Source Projects Studied
All projects below were used as protocol and architecture references only — no source code was copied.
This project remains under MIT License and is fully compatible with all referenced works.
SAP socket (socket.bind(9875)), SAP announcement (announceStream → 239.255.255.255:9875), SAP session ID from o= line (MD5 hash), stream timeout 5min, sdp-transform library, RTP playback via audify/RtAudio, jitter buffer, multicast bind client.bind(5004)
ARC packet header layout, pagination (0x8112), flows control port 4455, mDNS service types _netaudio-chan, _netaudio-bund — protocol reference only, no code included