Get a range of notes

note_range  start_note (note), end_note (note)

Produces a ring of all the notes between a start note and an end 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 :c5, :c4)



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



# Example 3

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



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



# Example 4

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



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



# Example 5

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



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



# Example 6

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



# => (ring 60,67,72)



# Example 7

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


 
# try changing the chord