Class: HeadMusic::Rudiment::EnharmonicEquivalence
- Inherits:
-
Object
- Object
- HeadMusic::Rudiment::EnharmonicEquivalence
- Defined in:
- lib/head_music/rudiment/enharmonic_equivalence.rb
Overview
Base class for enharmonic equivalence relationships between rudiments. An enharmonic equivalent is the same sound spelled differently, such as D# and Eb. Subclasses declare their subject class and implement #enharmonic_equivalent?.
Direct Known Subclasses
KeySignature::EnharmonicEquivalence, Pitch::EnharmonicEquivalence, Spelling::EnharmonicEquivalence
Instance Attribute Summary collapse
-
#subject ⇒ Object
readonly
Returns the value of attribute subject.
Class Method Summary collapse
Instance Method Summary collapse
-
#enharmonic?(other) ⇒ Boolean
-
#equivalent?(other) ⇒ Boolean
-
#initialize(subject) ⇒ EnharmonicEquivalence
constructor
A new instance of EnharmonicEquivalence.
Constructor Details
#initialize(subject) ⇒ EnharmonicEquivalence
Returns a new instance of EnharmonicEquivalence.
20 21 22 |
# File 'lib/head_music/rudiment/enharmonic_equivalence.rb', line 20 def initialize(subject) @subject = self.class.subject_class.get(subject) end |
Instance Attribute Details
#subject ⇒ Object (readonly)
Returns the value of attribute subject.
18 19 20 |
# File 'lib/head_music/rudiment/enharmonic_equivalence.rb', line 18 def subject @subject end |
Class Method Details
.get(subject) ⇒ Object
8 9 10 11 12 |
# File 'lib/head_music/rudiment/enharmonic_equivalence.rb', line 8 def self.get(subject) subject = subject_class.get(subject) @enharmonic_equivalences ||= {} @enharmonic_equivalences[subject.to_s] ||= new(subject) end |
.subject_class ⇒ Object
14 15 16 |
# File 'lib/head_music/rudiment/enharmonic_equivalence.rb', line 14 def self.subject_class raise NotImplementedError, "Subclasses must implement .subject_class" end |
Instance Method Details
#enharmonic?(other) ⇒ Boolean
24 25 26 |
# File 'lib/head_music/rudiment/enharmonic_equivalence.rb', line 24 def enharmonic?(other) enharmonic_equivalent?(other) end |
#equivalent?(other) ⇒ Boolean
28 29 30 |
# File 'lib/head_music/rudiment/enharmonic_equivalence.rb', line 28 def equivalent?(other) enharmonic_equivalent?(other) end |