Increment a tick and return value
tick  key (symbol)
Increment the default tick by 1 and return value. Successive calls to tick will continue to increment the default tick. If a key is specified, increment that specific tick. If an increment value is specified, increment key by that value rather than 1. Ticks are in_thread and live_loop local, so incrementing a tick only affects the current thread’s version of that tick. See tick_reset and tick_set for directly manipulating the tick vals.
Introduced in v2.6
Examples
 
  | # Example 1 | 
  | 
puts tick
  puts tick
  puts tick
  puts tick
 | 
#=> 0
#=> 1
#=> 2
#=> 3
 | 
 
  | # Example 2 | 
  | 
puts tick(:foo)
  puts tick(:foo)
  puts tick(:foo)
  puts tick(:bar)
 | 
#=> 0 # named ticks have their own counts
#=> 1
#=> 2
#=> 0 # tick :bar is independent of tick :foo
 | 
 
  | # Example 3 | 
  | 
 
  puts tick            
  puts tick            
  puts tick            
  puts tick(step: 2)   
  puts tick(step: 2)   
  puts tick(step: 10)  
  puts tick            
 | 
# You can tick by more than increments of 1
# using the step: opt
#=> 0
#=> 1
#=> 2
#=> 4
#=> 6
#=> 16
#=> 17
 | 
 
  | # Example 4 | 
  | 
  live_loop :fast_tick do
    puts tick  
    sleep 2    
  end
  live_loop :slow_tick do
    puts tick  
    sleep 4    
               
               
  end
 | 
# Each_live loop has its own separate ticks
 
# the fast_tick live_loop's tick will
# be updated every 2 seconds
 
 
# the slow_tick live_loop's tick is
# totally independent from the fast_tick
# live loop and will be updated every 4
# seconds
 
 | 
 
  | # Example 5 | 
  | 
live_loop :regular_tick do
    puts tick  
    sleep 1    
  end
  live_loop :random_reset_tick do
    if one_in 3
      tick_reset
      puts "reset tick!"
    end
    puts tick  
    sleep 1    
               
  end
 | 
 
# the regular_tick live_loop's tick will
# be updated every second
 
 
# randomly reset tick
 
 
 
# this live_loop's tick is totally
# independent and the reset only affects
# this tick.
 
 | 
 
  | # Example 6 | 
  | 
 
  live_loop :scale do
    play [:c, :d, :e, :f, :g].tick  
    sleep 1
  end
 | 
# Ticks work directly on lists, and will tick through each element
# However, once they get to the end, they'll return nil
 
# play all notes just once, then rests
 
 
 | 
 
  | # Example 7 | 
  | 
  live_loop :odd_scale do
    tick 
    play [:c, :d, :e, :f, :g, :a].tick  
                                        
    sleep 1
  end
 | 
# Normal ticks interact directly with list ticks
 
# Increment the default tick
# this now play every *other* note just once,
# then rests
 
 
 | 
 
  | # Example 8 | 
  | 
 
 
 
  live_loop :looped_scale do
    play (ring :c, :d, :e, :f, :g).tick  
    sleep 1
  end
 | 
# Ticks work wonderfully with rings
# as the ring ensures the tick wraps
# round internally always returning a
# value
 
# play all notes just once, then repeats
 
 
 | 
 
  | # Example 9 | 
  | 
 
  live_loop :looped_scale do
    play (scale :e3, :minor_pentatonic).tick  
    sleep 0.25
  end
 | 
# Ticks work wonderfully with scales
# which are also rings
 
# play all notes just once, then repeats
 
 
 |