class RBMusic::Scale

Attributes

degrees[R]
key[R]

Public Class Methods

new(key, name) click to toggle source
# File lib/rb-music/scale.rb, line 7
def initialize(key, name)
  @scale_name = name.to_sym
  raise ArgumentError unless NOTES.has_key?(key)
  raise ArgumentError unless SCALES.has_key?(@scale_name)
  @key = key
  @degrees = [:unison] + SCALES[@scale_name]
end

Public Instance Methods

degree_count() click to toggle source
# File lib/rb-music/scale.rb, line 15
def degree_count
  @degree_count ||= @degrees.size
end
Also aliased as: size
name() click to toggle source
# File lib/rb-music/scale.rb, line 20
def name
  @name ||= "#{key} #{human_scale_name}"
end
size()
Alias for: degree_count

Private Instance Methods

human_scale_name() click to toggle source
# File lib/rb-music/scale.rb, line 25
def human_scale_name
  @scale_name.to_s.split("_").map { |word| word.capitalize }.join(" ")
end