Get a range of notes

note_range  low_note (note), high_note (note)

Produces a ring of all the notes between a low note and a high note. By default this is chromatic (all the notes) but can be filtered with a :pitches argument. This opens the door to arpeggiator style sequences and other useful patterns. If you try to specify only pitches which aren’t in the range it will raise an error - you have been warned!

Introduced in v2.6

Options

pitches:

An array of notes (symbols or ints) to filter on. Octave information is ignored.

Examples

# Example 1

(note_range :c4, :c5)



# => (ring 60,61,62,63,64,65,66,67,68,69,70,71,72)



# Example 2

(note_range :c4, :c5, pitches: (chord :c, :major))



# => (ring 60,64,67,72)



# Example 3

(note_range :c4, :c6, pitches: (chord :c, :major))



# => (ring 60,64,67,72,76,79,84)



# Example 4

(note_range :c4, :c5, pitches: (scale :c, :major))



# => (ring 60,62,64,65,67,69,71,72)



# Example 5

(note_range :c4, :c5, pitches: [:c4, :g2])



# => (ring 60,67,72)



# Example 6

live_loop :arpeggiator do
 
  play (note_range :c4, :c5, pitches: (chord :c, :major)).tick
  sleep 0.125
end


 
# try changing the chord