class Musicality::Scale

Attributes

pitch_class[R]

Public Class Methods

new(pitch_class, intervals) click to toggle source
# File lib/musicality/composition/model/scale.rb, line 5
def initialize pitch_class, intervals
  @pitch_class = pitch_class
  @intervals = intervals
end

Public Instance Methods

at_octave(octave) click to toggle source
# File lib/musicality/composition/model/scale.rb, line 28
def at_octave octave
  start_pitch = Pitch.new(octave: octave, semitone: @pitch_class)
  AddingSequence.new(@intervals, start_pitch)
end
intervals() click to toggle source
# File lib/musicality/composition/model/scale.rb, line 10
def intervals; @intervals.entries; end
rotate(n) click to toggle source
# File lib/musicality/composition/model/scale.rb, line 21
def rotate n
  diff = AddingSequence.new(@intervals).at(n)
  new_pc = (@pitch_class + diff).to_pc
  new_intervals = @intervals.rotate(n)
  Scale.new(new_pc,new_intervals)
end
size() click to toggle source
# File lib/musicality/composition/model/scale.rb, line 12
def size
  @intervals.size
end
transpose(diff) click to toggle source
# File lib/musicality/composition/model/scale.rb, line 16
def transpose diff
  new_pc = (@pitch_class + diff).to_pc
  Scale.new(new_pc,@intervals)
end