tur/live

stdlib/live.tur
defn

player-update

(player-update [player new-pattern])

replace the pattern in a running player.

playerPatternPlayer to update
new-patternnew pattern to use

Updated PatternPlayer.

defn

player-swap

(player-swap [player new-param-map])

atomically swap the parameter map pattern in a player.

playerPatternPlayer to update
new-param-mapnew parameter map pattern

Updated PatternPlayer.

defn

player-reload

(player-reload [player new-pattern])

stop a player, replace its pattern, and restart it.

playerPatternPlayer to reload
new-patternreplacement pattern
defn

watch-pattern

(watch-pattern [path session def-name initial-pattern bpm])

start a player that watches a file for pattern changes.

pathfile path to watch for changes
sessionscscm session
def-nameSynthDef name
initial-patternpattern to use before any file change
bpmtempo

PatternPlayer (already started).

defstruct

StatefulPattern<T>

(defstruct StatefulPattern<T> [])

a pattern that carries and evolves internal state.

defn

make-stateful-pattern

(make-stateful-pattern [initial f])

create a stateful pattern from an initial state and step function.

initialinitial state value
ffunction (state, Beats) -> (new-state, Pattern<T>)

StatefulPattern<T>.

defn

step-stateful

(step-stateful [sp time])

advance a stateful pattern by one step.

spStatefulPattern<T>
timecurrent time in beats

Tuple of (new-state, updated StatefulPattern).

defn

eval-stateful

(eval-stateful [sp time])

evaluate a stateful pattern at a specific time.

spStatefulPattern<T>
timetime in beats

Pattern value at the given time.

defn

counter-pattern

(counter-pattern [max])

counting pattern that increments on each beat.

maxmaximum count value before wrapping back to 0
StatefulPattern<int>.

  (counter-pattern 8)
defn

state-pattern

(state-pattern [key f])

pattern that reads a value from session state.

keystate key to read
ffunction (state-value, time) -> T

Pattern<T>.

defn

updating-pattern

(updating-pattern [key initial f])

pattern that reads and writes session state on each evaluation.

keystate key
initialinitial state value (used if key is not set)
ffunction (state, time) -> (new-state, output-value)

Pattern<T>.

defstruct

LiveSession

(defstruct LiveSession [])

a complete live-coding session with patterns and players.

defn

live-session-new

(live-session-new [& [sample-rate time/DEFAULT_SAMPLE_RATE block-size time/DEFAULT_BLOCK_SIZE])

create a new live-coding session.

sample-rateaudio sample rate (default: DEFAULT_SAMPLE_RATE)
block-sizeaudio block size (default: DEFAULT_BLOCK_SIZE)

LiveSession.

defn

live-session-destroy

(live-session-destroy [session])

stop all players and destroy a live-coding session.

sessionLiveSession to destroy
defn

live-session-add-pattern

(live-session-add-pattern [session name pattern])

register a named pattern in the session.

sessionLiveSession
namepattern name
patternPattern<map> to register

Updated LiveSession.

defn

live-session-get-pattern

(live-session-get-pattern [session name])

retrieve a named pattern from the session.

sessionLiveSession
namepattern name

Pattern<map> or nil.

defn

live-session-update-pattern

(live-session-update-pattern [session name new-pattern])

replace a named pattern in the session.

sessionLiveSession
namepattern name
new-patternreplacement pattern

Updated LiveSession.

defn

live-session-add-player

(live-session-add-player [session def-name pattern-name bpm])

create a player for a named pattern and add it to the session.

sessionLiveSession
def-nameSynthDef name
pattern-namename of the pattern to play
bpmtempo

Player ID or nil if the named pattern does not exist.

defn

live-session-remove-player

(live-session-remove-player [session player-id])

stop and remove a player from the session.

sessionLiveSession
player-idID of the player to remove

Updated LiveSession.

defn

live-context

(live-context [session])

build a symbol table of live-coding bindings for a session.

sessionLiveSession

Map of symbols to values, suitable for use as an evaluation environment.

defn

live-eval

(live-eval [session code])

evaluate a code string in the live-coding context.

sessionLiveSession
codeTurmeric source string to evaluate

Result of evaluation (placeholder: returns code unchanged).

defn

def-pattern

(def-pattern [session name code])

define a named pattern in the session by evaluating code.

sessionLiveSession
namepattern name
codecode string that evaluates to a pattern
defn

set-player-pattern

(set-player-pattern [session player-id code])

update a running player with a new pattern from code.

sessionLiveSession
player-idplayer ID to update
codecode string that evaluates to a pattern
defn

d1

(d1 [session name code def-name bpm])

define a pattern and immediately start a player for it.

sessionLiveSession
namepattern name
codecode string that evaluates to a pattern
def-nameSynthDef name
bpmtempo

Player ID.

defn

hush

(hush [session])

stop all players in a session.

sessionLiveSession

Updated LiveSession with no running players.

defstruct

PatternRecorder

(defstruct PatternRecorder [])

records events from a running player.

defn

record-start

(record-start [session player-id])

begin recording events from a player.

sessionLiveSession
player-idplayer ID to record

PatternRecorder.

defn

record-stop

(record-stop [recorder])

stop recording and mark the recorder as done.

recorderPatternRecorder

Updated PatternRecorder with recording=false.

defn

record-get

(record-get [recorder])

retrieve all recorded events.

recorderPatternRecorder

vec<map> of recorded events.

defn

record-play

(record-play [session recorder def-name bpm])

play back recorded events as a new player.

sessionLiveSession
recorderPatternRecorder with recorded events
def-nameSynthDef name for playback
bpmtempo

Player ID.