class Fretboard::Builder
Constants
- DEFAULT_NUMBER_OF_FRETS
fretboard.build fretboard.data fretboard.draw
Attributes
data[R]
METHODS_NAMES = %i[
standart tuning_a open_a drop_a drop_a_sharp drop_a_flat tuning_b open_b drop_b drop_b_flat tuning_c open_c drop_c tuning_d open_d open_d_minor drop_d double_drop_d modal_d open_e tuning_f open_f tuning_g open_g open_g_minor drop_g_sharp modal_g
].freeze
Public Class Methods
double_drop_d(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 150 def self.double_drop_d(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:double_drop_d, number_of_frets) end
drop_a(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 94 def self.drop_a(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:drop_a, number_of_frets) end
drop_a_flat(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 102 def self.drop_a_flat(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:drop_a_flat, number_of_frets) end
drop_a_sharp(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 98 def self.drop_a_sharp(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:drop_a_sharp, number_of_frets) end
drop_b(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 114 def self.drop_b(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:drop_b, number_of_frets) end
drop_b_flat(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 118 def self.drop_b_flat(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:drop_b_flat, number_of_frets) end
drop_c(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 130 def self.drop_c(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:drop_c, number_of_frets) end
drop_d(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 146 def self.drop_d(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:drop_d, number_of_frets) end
drop_g_sharp(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 182 def self.drop_g_sharp(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:drop_g_sharp, number_of_frets) end
modal_d(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 154 def self.modal_d(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:modal_d, number_of_frets) end
modal_g(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 186 def self.modal_g(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:modal_g, number_of_frets) end
new(tuning, number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 190 def initialize(tuning, number_of_frets = DEFAULT_NUMBER_OF_FRETS) @tuning = tuning.upcase.to_sym @number_of_frets = number_of_frets @data = {} end
open_a(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 90 def self.open_a(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:open_a, number_of_frets) end
open_b(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 110 def self.open_b(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:open_b, number_of_frets) end
open_c(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 126 def self.open_c(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:open_c, number_of_frets) end
open_d(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 138 def self.open_d(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:open_d, number_of_frets) end
open_d_minor(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 142 def self.open_d_minor(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:open_d_minor, number_of_frets) end
open_e(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 158 def self.open_e(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:open_e, number_of_frets) end
open_f(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 166 def self.open_f(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:open_f, number_of_frets) end
open_g(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 174 def self.open_g(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:open_g, number_of_frets) end
open_g_minor(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 178 def self.open_g_minor(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:open_g_minor, number_of_frets) end
standart(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
METHODS_NAMES.each do |method_name|
define_method(method_name) do |number_of_frets = DEFAULT_NUMBER_OF_FRETS| new(method_name, number_of_frets) end
end
# File lib/fretboard/builder.rb, line 82 def self.standart(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:standart, number_of_frets) end
tuning_a(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 86 def self.tuning_a(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:tuning_a, number_of_frets) end
tuning_b(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 106 def self.tuning_b(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:tuning_b, number_of_frets) end
tuning_c(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 122 def self.tuning_c(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:tuning_c, number_of_frets) end
tuning_d(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 134 def self.tuning_d(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:tuning_d, number_of_frets) end
tuning_f(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 162 def self.tuning_f(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:tuning_f, number_of_frets) end
tuning_g(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
click to toggle source
# File lib/fretboard/builder.rb, line 170 def self.tuning_g(number_of_frets = DEFAULT_NUMBER_OF_FRETS) new(:tuning_g, number_of_frets) end
Public Instance Methods
build(sharp_or_flat: :both)
click to toggle source
# File lib/fretboard/builder.rb, line 197 def build(sharp_or_flat: :both) unless Fretboard::Tunings.exists?(@tuning) Fretboard::Console.danger('Unable to detect guitar tuning') return end tuning = Fretboard::Tunings.get(@tuning) strings = tuning[:STRINGS] number_of_strings = strings.size (1..number_of_strings).each do |string_number| puts puts "String: #{string_number}" puts current_note = strings[string_number][:NOTE] @data[string_number] = {} puts "Fret: 0 (#{current_note})" @data[string_number][0] = current_note (1..@number_of_frets).each do |fret| next_note = Fretboard::Note.next_for( current_note, sharp_or_flat: sharp_or_flat ) puts "Fret: #{fret} (#{next_note})" @data[string_number][fret] = next_note current_note = next_note end end puts puts 'done' end
draw(sharp_or_flat: :both)
click to toggle source
# File lib/fretboard/builder.rb, line 238 def draw(sharp_or_flat: :both) unless @data.any? Fretboard::Console.danger('Create the data') return end headings = [] rows = [] @data.each_pair do |string_number, string_notes| row = [] headings << '№' row << string_number headings << 0 open_note = string_notes[0] if open_note.is_a?(Array) open_note = case sharp_or_flat when :both open_note.join('/') when :sharp open_note.first else open_note.last end end row << open_note string_notes.except(0).each_pair do |fret, note| headings << fret row << note end rows << row end Fretboard::Console.print_table(headings.uniq, rows) nil end