Sha256: 6bbb82db18fbda25c7965082f420a6921fd41c2b8a36e73f33e67cb683e55fac
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
module Coltrane # It describes a guitar string class GuitarString attr_reader :pitch def initialize(pitch) @pitch = Pitch.new(pitch) end def fret_by_pitch(pitch) pitch = Pitch.new(pitch) if pitch.class != Pitch fret = pitch.number - @pitch.number fret if fret >= 0 end def pitch_by_fret(fret) Pitch.new(pitch.number + fret) end def guitar_notes_for_note(note) pitches_for_note(note).map do |pitch| GuitarNote.new(fret: fret_by_pitch(pitch), guitar_string_index: index) end end def guitar_notes_for_note_in_region(note, region) pitches_for_note(note).each_with_object([]) do |pitch, memo| fret = fret_by_pitch(pitch) if region.include?(fret) || fret == 0 memo << GuitarNote.new(fret: fret, guitar_string_index: index) end end end def index Guitar.strings.index { |string| string.pitch.number == self.pitch.number } end def pitches_for_note(note) pitches.each_with_object([]) do |pitch, memo| memo << pitch if pitch.note.name == note.name end end def pitches Guitar.frets.times.map do |fret| pitch_by_fret(fret) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
coltrane-0.0.2 | lib/coltrane/guitar_string.rb |