Each ring is a clock running its own subdivision against one shared tempo. Place notes on a ring and they fire when the hand passes them, so a 5-against-4 is something you watch line up rather than something you count. Patterns export as MIDI.
- Rendering is GPU-accelerated through Skia, with the clock hands driven by Reanimated shared values on the UI thread so the animation never stutters when JavaScript is busy.
- Audio runs on the native thread through a Web Audio implementation, with a 24-voice pool and hard voice stealing — deferred disconnects crash the native graph, so evicted voices are stopped and disconnected immediately.
- Hybrid timbres: sampled instruments across six octaves plus synthesized ones rendered into buffers at startup, batched asynchronously so the JS thread stays responsive while the app loads.
- Patterns write out as standard MIDI files and share straight into a DAW.
React Native · Expo · Skia · react-native-audio-api · Reanimated · midi-writer-js