Class: HeadMusic::KeySignature::EnharmonicEquivalence
- Inherits:
-
Object
- Object
- HeadMusic::KeySignature::EnharmonicEquivalence
- 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
-
#key_signature ⇒ Object
readonly
Returns the value of attribute key_signature.
Class Method Summary collapse
Instance Method Summary collapse
- #enharmonic_equivalent?(other) ⇒ Boolean (also: #enharmonic?, #equivalent?)
-
#initialize(key_signature) ⇒ EnharmonicEquivalence
constructor
A new instance of EnharmonicEquivalence.
Constructor Details
#initialize(key_signature) ⇒ EnharmonicEquivalence
Returns a new instance of EnharmonicEquivalence.
118 119 120 |
# File 'lib/head_music/key_signature.rb', line 118 def initialize(key_signature) @key_signature = HeadMusic::KeySignature.get(key_signature) end |
Instance Attribute Details
#key_signature ⇒ Object (readonly)
Returns the value of attribute key_signature.
116 117 118 |
# File 'lib/head_music/key_signature.rb', line 116 def key_signature @key_signature end |
Class Method Details
.get(key_signature) ⇒ Object
110 111 112 113 114 |
# File 'lib/head_music/key_signature.rb', line 110 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?
122 123 124 125 |
# File 'lib/head_music/key_signature.rb', line 122 def enharmonic_equivalent?(other) other = HeadMusic::KeySignature.get(other) (key_signature.signs | other.signs).map(&:to_s).uniq.length == 12 end |