TidalCycles is a pattern language that makes no sound; it delegates audio to a separate engine (SuperDirt/SuperCollider)
TidalCycles is a pure pattern language implemented in Haskell: by itself it only generates and schedules pattern data and makes no sound. To be heard it must send messages (over OSC) to a separate sound engine, by default SuperDirt, a plugin for SuperCollider. That engine does more than trigger samples — even sample playback runs through granular synthesis and effects, so a single sample can be chopped, patterned, and heavily processed, and synths can be defined there. This language/engine split explains Tidal’s install requirements (Haskell/Tidal plus SuperCollider plus SuperDirt, with OSC configured) and why first-time setup is fiddly. It also explains Strudel: Strudel is a distinct implementation that bundles its own WebAudio sound engine in the browser, removing the external SuperCollider dependency so a user can just open a browser, type, and play.
Examples
Local Tidal setup: install Haskell stack, install Tidal, install SuperCollider, install SuperDirt, configure the OSC connection. A pattern s "bd*4" is scheduled in Tidal but the actual kick is rendered by SuperDirt in SuperCollider. Strudel replaces that backend with a WebAudio engine: open browser, type code, play.
Assessment
Explain why a fresh TidalCycles install needs SuperCollider running but Strudel does not. What role does the audio backend play that the pattern language does not? Why is Tidal described as ‘a language for algorithmic pattern’ rather than ‘a music-making tool’?