Class: Tetsujin::Instrument::Guitar
- Inherits:
-
Object
- Object
- Tetsujin::Instrument::Guitar
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.
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
#strings ⇒ Object
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
|
33
34
35
|
# File 'lib/tetsujin/instrument/guitar.rb', line 33
def [](string_number)
strings.find { |string| string.string_number == string_number }
end
|
#fretboard_length ⇒ Integer
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
|
#print_fretboard(displayer) ⇒ Object
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
|