Class: HeadMusic::Rudiment::KeySignature::EnharmonicEquivalence
Overview
Key signatures are enharmonic when they represent the same set of altered pitch classes but with different spellings.
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.subject_class ⇒ Object
3
4
5
|
# File 'lib/head_music/rudiment/key_signature/enharmonic_equivalence.rb', line 3
def self.subject_class
HeadMusic::Rudiment::KeySignature
end
|
Instance Method Details
#different_spelling?(other) ⇒ Boolean
21
22
23
|
# File 'lib/head_music/rudiment/key_signature/enharmonic_equivalence.rb', line 21
def different_spelling?(other)
sorted_alteration_names(key_signature) != sorted_alteration_names(other)
end
|
#enharmonic_equivalent?(other) ⇒ Boolean
9
10
11
12
13
|
# File 'lib/head_music/rudiment/key_signature/enharmonic_equivalence.rb', line 9
def enharmonic_equivalent?(other)
other = HeadMusic::Rudiment::KeySignature.get(other)
same_pitch_classes?(other) && different_spelling?(other)
end
|
#same_pitch_classes?(other) ⇒ Boolean
17
18
19
|
# File 'lib/head_music/rudiment/key_signature/enharmonic_equivalence.rb', line 17
def same_pitch_classes?(other)
sorted_pitch_class_numbers(key_signature) == sorted_pitch_class_numbers(other)
end
|
#sorted_alteration_names(key_signature) ⇒ Object
29
30
31
|
# File 'lib/head_music/rudiment/key_signature/enharmonic_equivalence.rb', line 29
def sorted_alteration_names(key_signature)
key_signature.alterations.map(&:to_s).sort
end
|
#sorted_pitch_class_numbers(key_signature) ⇒ Object
25
26
27
|
# File 'lib/head_music/rudiment/key_signature/enharmonic_equivalence.rb', line 25
def sorted_pitch_class_numbers(key_signature)
key_signature.pitch_classes.map(&:to_i).sort
end
|