Class: HeadMusic::KeySignature::EnharmonicEquivalence

Inherits:
Object
  • Object
show all
Defined in:
lib/head_music/key_signature/enharmonic_equivalence.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.



11
12
13
# File 'lib/head_music/key_signature/enharmonic_equivalence.rb', line 11

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.



3
4
5
# File 'lib/head_music/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/key_signature/enharmonic_equivalence.rb', line 5

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

Returns:

  • (Boolean)


15
16
17
18
19
20
21
22
23
24
# File 'lib/head_music/key_signature/enharmonic_equivalence.rb', line 15

def enharmonic_equivalent?(other)
  other = HeadMusic::KeySignature.get(other)

  p key_signature.pitch_classes.map(&:to_i).sort
  p other.pitch_classes.map(&:to_i).sort
  p key_signature.alterations.map(&:to_s).sort
  p other.alterations.map(&:to_s).sort
  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