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.



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_signatureObject (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?

Returns:

  • (Boolean)


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