Cue other threads

cue  cue_id (symbol)

Send a heartbeat synchronisation message containing the (virtual) timestamp of the current thread. Useful for syncing up external threads via the sync fn. Any opts which are passed are given to the thread which syncs on the cue_id as a map. The values of the opts must be immutable. Currently only numbers, symbols and booleans are supported.

Introduced in v2.0

Options

your_key:

Your value

another_key:

Another value

key:

All these opts are passed through to the thread which syncs

Examples

# Example 1

in_thread do
  sync :foo
  sample :ambi_lunar_land
end

sleep 5

cue :foo
         



 
# this parks the current thread waiting for a foo cue message to be received.
 
 
 
 
 
# We send a cue message from the main thread.
# This then unblocks the thread above and we then hear the sample



# Example 2

in_thread do  
  loop do     
    cue :tick
    sleep 0.5 
  end
end


loop do                   
  sync :tick              
  sample :drum_heavy_kick 
end


# Start a metronome thread
# Loop forever:
# sending tick heartbeat messages
# and sleeping for 0.5 beats between ticks
 
 
 
# We can now play sounds using the metronome.
# In the main thread, just loop
# waiting for :tick cue messages
# after which play the drum kick sample
 



# Example 3

in_thread do  
  loop do     
    cue [:foo, :bar, :baz].choose
    sleep 0.5 
  end
end



in_thread do
  loop do                   
    sync :foo              
    sample :elec_beep 
  end
end

in_thread do
  loop do                   
    sync :bar              
    sample :elec_flip 
  end
end

in_thread do
  loop do                   
    sync :baz              
    sample :elec_blup 
  end
end


# Start a metronome thread
# Loop forever:
# sending one of three tick heartbeat messages randomly
# and sleeping for 0.5 beats between ticks
 
 
 
# We can now play sounds using the metronome:
 
 
# In the main thread, just loop
# waiting for :foo cue messages
# after which play the elec beep sample
 
 
 
 
# In the main thread, just loop
# waiting for :bar cue messages
# after which play the elec flip sample
 
 
 
 
# In the main thread, just loop
# waiting for :baz cue messages
# after which play the elec blup sample