A lightweight macOS menu bar app that streams audio from the Tidal desktop app to Sonos speakers over your local network.
The Tidal desktop app on macOS doesn't support casting to Sonos speakers directly (the iPhone app does, but the Mac app doesn't). SonicTide bridges this gap by tapping Tidal's audio output using macOS Core Audio and streaming it to your Sonos speaker over HTTP.
- Audio Tap - Uses macOS
CATapDescription(14.2+) to capture audio from the Tidal player process - HTTP Stream - Serves the captured audio as a WAV stream on your local network
- UPnP Control - Tells the Sonos speaker to play from the HTTP stream using UPnP/SOAP commands
- mDNS Discovery - Automatically discovers Sonos speakers on your network
- macOS 14.2 (Sonoma) or later
- Tidal desktop app
- Sonos speaker on the same WiFi network
- Audio recording permission (macOS will prompt on first use)
No Xcode project needed - just Swift and the system frameworks:
git clone https://github.com/bitdrift/sonictide.git
cd sonictide
bash build.shopen SonicTide.appA speaker icon appears in your menu bar:
- Left-click to open the control popover (speaker selection, volume, start/stop)
- Right-click for About and Quit
When streaming:
- Tidal audio is muted on your Mac and plays from the Sonos instead
- The menu bar icon fills in to indicate active streaming
- Volume slider controls the Sonos speaker volume directly
- Stop streaming to return audio to your Mac speakers
On first launch, macOS will ask for audio recording permission. SonicTide needs this to tap the Tidal audio output. If the permission prompt doesn't appear, add SonicTide manually in:
System Settings > Privacy & Security > Audio Recording
SonicTide/
main.swift - App entry point
AudioTap.swift - Core Audio tap + lock-free ring buffer
HTTPStreamServer.swift - BSD socket HTTP server for WAV streaming
SonosController.swift - mDNS discovery + UPnP SOAP control
MenuBarController.swift - Menu bar UI
All Swift, no external dependencies, compiled with swiftc.
- Occasional brief audio dropouts may occur depending on WiFi conditions
- ~2 second latency before audio starts (pre-buffering for smooth playback)
- Only streams the Tidal desktop app (specifically the TIDALPlayer subprocess)
MIT - see LICENSE