tick advances a beat counter per live_loop and returns the current ring element; look reads without advancing
Calling .tick on a ring inside a live_loop increments a loop-local beat counter and returns the ring element at that index (wrapping). look reads the current counter value without incrementing. Each live_loop has its own independent tick counter. Named ticks (.tick(:name)) allow multiple independent counters within one live_loop. This is the idiomatic Sonic Pi way to cycle through rings across iterations.
Examples
live_loop :arp do play (scale :e3, :minor_pentatonic).tick, release: 0.1 sleep (ring 0.125, 0.25).tick(:rhythm) end
Assessment
Explain why two .tick calls in the same live_loop advance the counter twice. Show how .tick(:name) fixes this for independent rhythmic and melodic counters.