Create a coroutine from the given function, assign it id = “my_clock”, and immediately run it
clock.cancel(my_clock)
Cancel an id-assigned coroutine
clock.sleep(time)
Resume in time seconds
clock.sync(beats, offset)
Resume at next sync quantum of beats (with added offset), per global tempo
clock.transport.start()
User script callback whenever norns receives a “start” message (typically via MIDI or Ableton Link)
clock.transport.stop()
User script callback whenever norns receives a “stop” message (typically via MIDI or Ableton Link)
clock.tempo_change_handler(tempo)
User script callback whenever the norns tempo changes (corresponds to PARAMETERS > CLOCK > tempo), passes current tempo.
params:set(“clock_tempo”, x)
Set the global clock tempo to x bpm, ranges from 1bpm to 300 bpm
query
Syntax
Description
clock.get_beats()
Returns current time in beats : number
clock.get_tempo()
Returns current global tempo : number
clock.get_beat_sec()
Returns length of single beat at current global tempo, in seconds : number
example
-- start a clock which calls function [loop]functioninit()clock.run(loop,"so true")-- arguments can be passed end-- this function loops forever, printing at 1 second intervals functionloop(print_this)whiletruedoprint(print_this)clock.sleep(1)endend
Coroutine system which executes functions on beat-synced and free-running schedules. Coroutines can be set to loop (using while), execute once, or run conditionally.