Class: Tetsujin::Instrument::Guitar
- Inherits:
-
Object
- Object
- Tetsujin::Instrument::Guitar
- Defined in:
- lib/tetsujin/instrument/guitar.rb
Defined Under Namespace
Classes: Displayer, Factory, Fret, Frets, String
Instance Attribute Summary collapse
-
#strings ⇒ Object
readonly
Returns the value of attribute strings.
Instance Method Summary collapse
- #==(other) ⇒ Boolean
- #[](string_number) ⇒ Tetsujin::Instrument::Guitar::String (also: #find_string)
- #fretboard_length ⇒ Integer
-
#initialize(strings:) ⇒ Guitar
constructor
A new instance of Guitar.
- #play!(notes) ⇒ void
- #press!(string_number, fret_number) ⇒ void
-
#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.
- #release! ⇒ void
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 (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_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
This method returns an undefined value.
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
This method returns an undefined value.
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
This method returns an undefined value.
27 28 29 |
# File 'lib/tetsujin/instrument/guitar.rb', line 27 def release! strings.each(&:release!) end |