Class: HeadMusic::KeySignature::EnharmonicEquivalence

Inherits:
Object
  • Object
show all
Defined in:
lib/head_music/key_signature.rb

Overview

Key signatures are enharmonic when all pitch classes in one are respellings of the pitch classes in the other.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key_signature) ⇒ EnharmonicEquivalence

Returns a new instance of EnharmonicEquivalence.



116
117
118
# File 'lib/head_music/key_signature.rb', line 116

def initialize(key_signature)
  @key_signature = HeadMusic::KeySignature.get(key_signature)
end

Instance Attribute Details

#key_signatureObject (readonly)

Returns the value of attribute key_signature.



114
115
116
# File 'lib/head_music/key_signature.rb', line 114

def key_signature
  @key_signature
end

Class Method Details

.get(key_signature) ⇒ Object



108
109
110
111
112
# File 'lib/head_music/key_signature.rb', line 108

def self.get(key_signature)
  key_signature = HeadMusic::KeySignature.get(key_signature)
  @enharmonic_equivalences ||= {}
  @enharmonic_equivalences[key_signature.to_s] ||= new(key_signature)
end

Instance Method Details

#enharmonic_equivalent?(other) ⇒ Boolean Also known as: enharmonic?, equivalent?

Returns:

  • (Boolean)


120
121
122
123
# File 'lib/head_music/key_signature.rb', line 120

def enharmonic_equivalent?(other)
  other = HeadMusic::KeySignature.get(other)
  (key_signature.signs | other.signs).map(&:to_s).uniq.length == 12
end