Skip to content

bitdrift/sonictide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SonicTide

A lightweight macOS menu bar app that streams audio from the Tidal desktop app to Sonos speakers over your local network.

Why?

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.

How it works

  1. Audio Tap - Uses macOS CATapDescription (14.2+) to capture audio from the Tidal player process
  2. HTTP Stream - Serves the captured audio as a WAV stream on your local network
  3. UPnP Control - Tells the Sonos speaker to play from the HTTP stream using UPnP/SOAP commands
  4. mDNS Discovery - Automatically discovers Sonos speakers on your network

Requirements

  • 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)

Build

No Xcode project needed - just Swift and the system frameworks:

git clone https://github.com/bitdrift/sonictide.git
cd sonictide
bash build.sh

Usage

open SonicTide.app

A 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

Permissions

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

Architecture

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.

Known limitations

  • 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)

License

MIT - see LICENSE

About

Stream Tidal audio to Sonos speakers from macOS

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors