tur/live
player-update
(player-update [player new-pattern])
replace the pattern in a running player.
| player | PatternPlayer to update | |
| new-pattern | new pattern to use |
Updated PatternPlayer.
player-swap
(player-swap [player new-param-map])
atomically swap the parameter map pattern in a player.
| player | PatternPlayer to update | |
| new-param-map | new parameter map pattern |
Updated PatternPlayer.
player-reload
(player-reload [player new-pattern])
stop a player, replace its pattern, and restart it.
| player | PatternPlayer to reload | |
| new-pattern | replacement pattern |
watch-pattern
(watch-pattern [path session def-name initial-pattern bpm])
start a player that watches a file for pattern changes.
| path | file path to watch for changes | |
| session | scscm session | |
| def-name | SynthDef name | |
| initial-pattern | pattern to use before any file change | |
| bpm | tempo |
PatternPlayer (already started).
StatefulPattern<T>
(defstruct StatefulPattern<T> [])
a pattern that carries and evolves internal state.
make-stateful-pattern
(make-stateful-pattern [initial f])
create a stateful pattern from an initial state and step function.
| initial | initial state value | |
| f | function (state, Beats) -> (new-state, Pattern<T>) |
StatefulPattern<T>.
step-stateful
(step-stateful [sp time])
advance a stateful pattern by one step.
| sp | StatefulPattern<T> | |
| time | current time in beats |
Tuple of (new-state, updated StatefulPattern).
eval-stateful
(eval-stateful [sp time])
evaluate a stateful pattern at a specific time.
| sp | StatefulPattern<T> | |
| time | time in beats |
Pattern value at the given time.
counter-pattern
(counter-pattern [max])
counting pattern that increments on each beat.
| max | maximum count value before wrapping back to 0 |
StatefulPattern<int>. (counter-pattern 8)
state-pattern
(state-pattern [key f])
pattern that reads a value from session state.
| key | state key to read | |
| f | function (state-value, time) -> T |
Pattern<T>.
updating-pattern
(updating-pattern [key initial f])
pattern that reads and writes session state on each evaluation.
| key | state key | |
| initial | initial state value (used if key is not set) | |
| f | function (state, time) -> (new-state, output-value) |
Pattern<T>.
LiveSession
(defstruct LiveSession [])
a complete live-coding session with patterns and players.
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-rate | audio sample rate (default: DEFAULT_SAMPLE_RATE) | |
| block-size | audio block size (default: DEFAULT_BLOCK_SIZE) |
LiveSession.
live-session-destroy
(live-session-destroy [session])
stop all players and destroy a live-coding session.
| session | LiveSession to destroy |
live-session-add-pattern
(live-session-add-pattern [session name pattern])
register a named pattern in the session.
| session | LiveSession | |
| name | pattern name | |
| pattern | Pattern<map> to register |
Updated LiveSession.
live-session-get-pattern
(live-session-get-pattern [session name])
retrieve a named pattern from the session.
| session | LiveSession | |
| name | pattern name |
Pattern<map> or nil.
live-session-update-pattern
(live-session-update-pattern [session name new-pattern])
replace a named pattern in the session.
| session | LiveSession | |
| name | pattern name | |
| new-pattern | replacement pattern |
Updated LiveSession.
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.
| session | LiveSession | |
| def-name | SynthDef name | |
| pattern-name | name of the pattern to play | |
| bpm | tempo |
Player ID or nil if the named pattern does not exist.
live-session-remove-player
(live-session-remove-player [session player-id])
stop and remove a player from the session.
| session | LiveSession | |
| player-id | ID of the player to remove |
Updated LiveSession.
live-context
(live-context [session])
build a symbol table of live-coding bindings for a session.
| session | LiveSession |
Map of symbols to values, suitable for use as an evaluation environment.
live-eval
(live-eval [session code])
evaluate a code string in the live-coding context.
| session | LiveSession | |
| code | Turmeric source string to evaluate |
Result of evaluation (placeholder: returns code unchanged).
def-pattern
(def-pattern [session name code])
define a named pattern in the session by evaluating code.
| session | LiveSession | |
| name | pattern name | |
| code | code string that evaluates to a pattern |
set-player-pattern
(set-player-pattern [session player-id code])
update a running player with a new pattern from code.
| session | LiveSession | |
| player-id | player ID to update | |
| code | code string that evaluates to a pattern |
d1
(d1 [session name code def-name bpm])
define a pattern and immediately start a player for it.
| session | LiveSession | |
| name | pattern name | |
| code | code string that evaluates to a pattern | |
| def-name | SynthDef name | |
| bpm | tempo |
Player ID.
hush
(hush [session])
stop all players in a session.
| session | LiveSession |
Updated LiveSession with no running players.
PatternRecorder
(defstruct PatternRecorder [])
records events from a running player.
record-start
(record-start [session player-id])
begin recording events from a player.
| session | LiveSession | |
| player-id | player ID to record |
PatternRecorder.
record-stop
(record-stop [recorder])
stop recording and mark the recorder as done.
| recorder | PatternRecorder |
Updated PatternRecorder with recording=false.
record-get
(record-get [recorder])
retrieve all recorded events.
| recorder | PatternRecorder |
vec<map> of recorded events.
record-play
(record-play [session recorder def-name bpm])
play back recorded events as a new player.
| session | LiveSession | |
| recorder | PatternRecorder with recorded events | |
| def-name | SynthDef name for playback | |
| bpm | tempo |
Player ID.