Class: HeadMusic::Rudiment::KeySignature::EnharmonicEquivalence
- Inherits:
-
Object
- Object
- HeadMusic::Rudiment::KeySignature::EnharmonicEquivalence
- Defined in:
- lib/head_music/rudiment/key_signature/enharmonic_equivalence.rb
Overview
Key signatures are enharmonic when they represent the same set of altered pitch classes but with different spellings.
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.
11 12 13 |
# File 'lib/head_music/rudiment/key_signature/enharmonic_equivalence.rb', line 11 def initialize(key_signature) @key_signature = HeadMusic::Rudiment::KeySignature.get(key_signature) end |
Instance Attribute Details
#key_signature ⇒ Object (readonly)
Returns the value of attribute key_signature.
3 4 5 |
# File 'lib/head_music/rudiment/key_signature/enharmonic_equivalence.rb', line 3 def key_signature @key_signature end |
Class Method Details
.get(key_signature) ⇒ Object
5 6 7 8 9 |
# File 'lib/head_music/rudiment/key_signature/enharmonic_equivalence.rb', line 5 def self.get(key_signature) key_signature = HeadMusic::Rudiment::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?
15 16 17 18 19 20 |
# File 'lib/head_music/rudiment/key_signature/enharmonic_equivalence.rb', line 15 def enharmonic_equivalent?(other) other = HeadMusic::Rudiment::KeySignature.get(other) key_signature.pitch_classes.map(&:to_i).sort == other.pitch_classes.map(&:to_i).sort && key_signature.alterations.map(&:to_s).sort != other.alterations.map(&:to_s).sort end |