Sha256: a21bd1ce12236e911e31630f57ddb1a620fe558da317c932885e86fb052ba6bc

Contents?: true

Size: 755 Bytes

Versions: 18

Compression:

Stored size: 755 Bytes

Contents

# frozen_string_literal: true

# An enharmonic equivalent pitch is the same frequency spelled differently, such as D# and Eb.
class HeadMusic::Pitch::EnharmonicEquivalence
  def self.get(pitch)
    pitch = HeadMusic::Pitch.get(pitch)
    @enharmonic_equivalences ||= {}
    @enharmonic_equivalences[pitch.to_s] ||= new(pitch)
  end

  attr_reader :pitch

  delegate :pitch_class, to: :pitch

  def initialize(pitch)
    @pitch = HeadMusic::Pitch.get(pitch)
  end

  def enharmonic_equivalent?(other)
    other = HeadMusic::Pitch.get(other)
    pitch.midi_note_number == other.midi_note_number && pitch.spelling != other.spelling
  end

  alias enharmonic? enharmonic_equivalent?
  alias equivalent? enharmonic_equivalent?

  private_class_method :new
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
head_music-0.27.0 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.26.3 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.26.2 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.26.1 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.26.0 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.25.0 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.24.5 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.24.4 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.24.3 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.24.2 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.24.1 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.24.0 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.23.4 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.23.3 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.23.2 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.23.1 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.23.0 lib/head_music/pitch/enharmonic_equivalence.rb
head_music-0.22.0 lib/head_music/pitch/enharmonic_equivalence.rb