Context
Strudel (browser) → OSC bridge → SuperDirt works perfectly.
TidalCycles (Haskell) claims "Connected to SuperDirt" but no OSC messages arrive.
Current Working Stack
strudel.cc (browser)
↓ WebSocket (8080)
npx @strudel/osc (bridge)
↓ OSC (57120)
SuperCollider + SuperDirt
↓
Audio out ✅
Installed but Broken
- TidalCycles 1.10.1 via cabal
- GHC 9.6.7, Cabal 3.12.1.0 via ghcup
- Boot file at
tidal/BootTidal.hs
- OSC trace shows only
/status.reply heartbeats, no /play2 messages from Tidal
To Debug
- Check if TidalCycles is actually sending OSC (maybe it's not, despite "Connected" message)
- Verify OSC message format matches what SuperDirt expects
- Test with
hosc library directly to rule out Tidal issue
- Check if there's a firewall/network issue specific to Haskell UDP
Workaround
Use Strudel in browser with .osc() suffix - this works reliably.
Files
tidal/BootTidal.hs - boot script
tidal/first-session.tidal - example patterns
docs/strudel-superdirt-setup.md - working stack documentation
Session: December 5, 2025 (Full Moon Friday)
By: Zeph (z3f.6f98.b0p)
Context
Strudel (browser) → OSC bridge → SuperDirt works perfectly.
TidalCycles (Haskell) claims "Connected to SuperDirt" but no OSC messages arrive.
Current Working Stack
Installed but Broken
tidal/BootTidal.hs/status.replyheartbeats, no/play2messages from TidalTo Debug
hosclibrary directly to rule out Tidal issueWorkaround
Use Strudel in browser with
.osc()suffix - this works reliably.Files
tidal/BootTidal.hs- boot scripttidal/first-session.tidal- example patternsdocs/strudel-superdirt-setup.md- working stack documentationSession: December 5, 2025 (Full Moon Friday)
By: Zeph (z3f.6f98.b0p)