chord() and scale() return rings of MIDI notes, making music-theory patterns directly executable
chord(:E3, :minor) returns a ring of MIDI note numbers for E minor in octave 3. scale(:c3, :major) returns all notes of C major; num_octaves: N extends across N octaves. Both return rings, supporting .tick, .choose, and all ring chain methods. play accepts a list or ring directly to sound a chord. play_pattern_timed steps through a list with specified durations. These functions map music-theory names directly into code, removing the need to know MIDI numbers.
Examples
play chord(:E3, :minor) play_pattern_timed scale(:c3, :major), 0.125, release: 0.1
Assessment
Arpeggiate a D7 chord at 16th-note speed. Explain the difference between .choose and .tick when iterating through a scale.