Skip to content

OSC/UDP glue for using Hundred Rabbit's Pilot with TidalCycles

License

Notifications You must be signed in to change notification settings

njanssen/tidal-pilot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tidal-pilot

Some OSC/UDP glue written in Javascript/Node.js for using Hundred Rabbit's Pilot synth with TidalCycles.

Instructions

Install Pilot

TidalCycles is typically used together with SuperCollider. This app forwards TidalCycles OSC messages to Hundred Rabbit's Pilot UDP synthetizer. To install Pilot, following the instructions in the README of its GitHub repository or download a pre-built version of the Electron app here.

Install TidalCycles

This app uses TidalCycles for live-coding patterns. Install your local TidalCycles environment by following the instructions found in the TidalCycles documentation.

Install and run tidal-pilot

This repository contains a Node.js app that acts as glue between TidalCycles and Pilot. To run the app, follow these steps:

npm install
npm start

To keep things simple, this app listens for OSC messages on port 57120 which is also the standard port used by TidalCycles to send OSC messages to SuperDirt/SuperCollider for producing sound.

Start live-coding

Create or open a .tidal file in your editor with TidalCycles support (e.g. VSCode or Atom), and start live-coding patterns with Pilot. Make sure to use the BootTidal.hs in this repo, it contains the definition of an extra parameter (bpc).

Play commands

Use the parameters s, n, and octave to send Play commands to Pilot:

-- Play command: 05C (channel 0, note C5)
d1 $ s "0" 

-- Play command: B3C (channel B, note C5)
d1 $ s "b" # n "c3"
-- or 
d1 $ s "b" # n "c" # octave 3
-- or 
d1 $ s "b" # n "0" # octave 3

-- Play command: E4e (channel E, note E#4)
d1 $ s "e" # n "es4"

Pilot uses a standard velocity of 50% (0.5 in Tidal, or 8 in Pilot) when playing notes. Optionally, you can use the parameter velocity in your pattern to control the velocity of your Play command:

-- Play command: 74G8 (channel 7, note G4, velocity 8)
d1 $ s "7" # n "g4" # velocity 0.5

-- Play command: A5CF (channel 7, note G4, velocity F)
d1 $ s "a" # n "c5" # velocity 1

And yes, you can pattern all those parameters! For more examples, see the examples folder of this repository.

Global Settings

The setcps function and the parameter cps control the global BPM setting in Pilot which is applied to effects such as feedback.

Keep in mind that Tidal’s timing is based on cycles, rather than beats. As a default, tidal-pilot uses 2 beats per cycle (bpc) when translating cps to bpm (bpm = cps * 60 * bpc). Use the parameter bpc (defined in BootTidal.hs) to set another value for beats per cycle in the BPM calculations performed by tidal-pilot:

-- Global command: BPM120
setcps 1
-- or 
setcps (120/60/2)

-- Global and Play command: BPM120;A5C followed by BPM90;A5C
d1 $ s "a*2" # cps "1.0 0.75"

-- Global command: BPM90 (setting bpc to 3)
once $ cps 0.5 # bpc 3

-- Global and Play command: BPM90;A5C followed by BPM135;A3CF (setting bpc to 3)
d1 $ s "a*2" # cps "0.75 0.5" # bpc 3

Effects

Effects are not supported by tidal-pilot yet, you can type these commands (e.g. REV10 for some reverb) manually in the Pilot window.

Extras

About

OSC/UDP glue for using Hundred Rabbit's Pilot with TidalCycles

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published