Class: Tetsujin::Instrument::Guitar

Inherits:
Object
  • Object
show all
Defined in:
lib/tetsujin/instrument/guitar.rb

Defined Under Namespace

Classes: Displayer, Factory, Fret, Frets, String

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(strings:) ⇒ Guitar

Returns a new instance of Guitar.

Raises:

  • (TypeError)


7
8
9
10
11
# File 'lib/tetsujin/instrument/guitar.rb', line 7

def initialize(strings:)
  raise TypeError unless strings.is_a?(Array)
  raise TypeError unless strings.all? { |string| string.is_a?(Tetsujin::Instrument::Guitar::String) }
  @strings = strings
end

Instance Attribute Details

#stringsObject (readonly)

Returns the value of attribute strings.



5
6
7
# File 'lib/tetsujin/instrument/guitar.rb', line 5

def strings
  @strings
end

Instance Method Details

#==(other) ⇒ Boolean



58
59
60
# File 'lib/tetsujin/instrument/guitar.rb', line 58

def ==(other)
  strings.sort_by(&:string_number) == other.strings.sort_by(&:string_number)
end

#[](string_number) ⇒ Tetsujin::Instrument::Guitar::String Also known as: find_string



33
34
35
# File 'lib/tetsujin/instrument/guitar.rb', line 33

def [](string_number)
  strings.find { |string| string.string_number == string_number }
end

#fretboard_lengthInteger



39
40
41
# File 'lib/tetsujin/instrument/guitar.rb', line 39

def fretboard_length
  strings.map(&:fretboard_length).max
end

#play!(notes) ⇒ void



15
16
17
# File 'lib/tetsujin/instrument/guitar.rb', line 15

def play!(notes)
  strings.each { |string| string.play!(notes) }
end

#press!(string_number, fret_number) ⇒ void



22
23
24
# File 'lib/tetsujin/instrument/guitar.rb', line 22

def press!(string_number, fret_number)
  find_string(string_number).press!(fret_number)
end

1: E4 ——- F♯4/G♭4 G4 ——- A4 ——- B4 ——- C♯5/D♭5 ——- ——- ——- 2: ——- ——- ——- D4 ——- E4 ——- F♯4/G♭4 G4 ——- A4 ——- B4 3: ——- ——- ——- ——- ——- ——- ——- D4 ——- E4 ——- F♯4/G♭4 G4 4: ——- ——- ——- ——- ——- ——- ——- ——- ——- ——- ——- ——- D4 5: ——- ——- ——- ——- ——- ——- ——- ——- ——- ——- ——- ——- ——- 6: ——- ——- ——- ——- ——- ——- ——- ——- ——- ——- ——- ——- ——-

0       1       2       3       4       5       6       7       8       9      10      11      12


52
53
54
# File 'lib/tetsujin/instrument/guitar.rb', line 52

def print_fretboard(displayer)
  displayer.print_fretboard(self)
end

#release!void



27
28
29
# File 'lib/tetsujin/instrument/guitar.rb', line 27

def release!
  strings.each(&:release!)
end