SuperDirt API
For the curious, this is what an OSC trigger message from TidalCycles to SuperDirt looks like, as of Tidal version 1.7.x and probably later.
Lets consider this pattern: ``` sound "bd" # speed 2 ``` This is the kind of OSC message it generates: ``` Bundle
Timetag: Feb 22, 2021 21:54:04.960054397 UTC Size: 92 bytes Message: /dirt/play ,sfsfsfsisssf Header Path: /dirt/play Format: ,sfsfsfsisssf String: cps Float: 0.4 String: cycle Float: 40549 String: delta Float: 2.5 String: orbit Int32: 0 String: s String: bd String: speed Float: 2
```
It consists of a single message, wrapped in a bundle, which provides the timestamp for when the event should be triggered. Because the OSC target for superdirt has `oSchedule` set to `Pre BundleStamp`, messages will be sent in bursts, ahead of time, and it's up to the receiver (such as superdirt) to schedule them accurately.
The message inside the bundle has the path `/dirt/play`, and contains a variable number of name-value pairs. You can see the `s bd` and "speed 2" pairs, but Tidal adds a number of additional ones.. The current `cps` tempo, the position of the event in cycles (since Tidal started), the `delta` or duration of the event in seconds, and the `orbit` number.