Sha256: 61d60be020d178b468c31667161ead418e00f373945a2335bb347c09d998be04

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

module Coltrane
  # It describes a guitar note
  class GuitarNote
    attr_reader :position

    def initialize(fret:, guitar_string_index:)
      if fret.nil? || guitar_string_index.nil?
        raise "invalid guitar note for f:#{fret} and s:#{guitar_string_index}"
      end
      @position = { fret: fret, guitar_string_index: guitar_string_index }
    end

    def new_from_guitar_string_and_note(gsi, note); end

    def note
      pitch.note
    end

    def to_s
      "string: #{guitar_string_index}/fret: #{fret}"
    end

    def guitar_string_index
      position[:guitar_string_index]
    end

    def fret
      position[:fret]
    end

    def guitar_string
      Guitar.strings[guitar_string_index]
    end

    def pitch
      Pitch.new(guitar_string.pitch.number + fret)
    end

    def guitar_chord(_quality)
      guitar_strings    = (guitar_string_index..0).to_a
      guitar_note_array = guitar_strings.each_with_object([]) do |gsi, memo|
        if f < Guitar.frets
          gn = new_from_guitar_string_and_note(gsi, note)
          memo << gn unless gn.nil?
        end
      end
      GuitarChord.new(guitar_note_array)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
coltrane-0.0.2 lib/coltrane/guitar_note.rb