Class: Coltrane::Renderers::TextRenderer::RepresentationGuitarNoteSetDrawer
- Inherits:
-
BaseDrawer
- Object
- BaseDrawer
- Coltrane::Renderers::TextRenderer::RepresentationGuitarNoteSetDrawer
show all
- Defined in:
- lib/coltrane/renderers/text_renderer/representation_guitar_note_set_drawer.rb
Instance Attribute Summary
Attributes inherited from BaseDrawer
#flavor, #layout, #model, #options, #per_row
Instance Method Summary
collapse
Methods inherited from BaseDrawer
#initialize
Instance Method Details
#frets ⇒ Object
11
12
13
|
# File 'lib/coltrane/renderers/text_renderer/representation_guitar_note_set_drawer.rb', line 11
def frets
guitar.frets
end
|
#guitar ⇒ Object
7
8
9
|
# File 'lib/coltrane/renderers/text_renderer/representation_guitar_note_set_drawer.rb', line 7
def guitar
@guitar ||= guitar_notes.guitar
end
|
#place_empty(str_i) ⇒ Object
53
54
55
|
# File 'lib/coltrane/renderers/text_renderer/representation_guitar_note_set_drawer.rb', line 53
def place_empty(str_i)
Paint['--', HSL.new(180 + str_i * 3, 50, 30).html]
end
|
#place_mark(note) ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/coltrane/renderers/text_renderer/representation_guitar_note_set_drawer.rb', line 57
def place_mark(note)
mark = case flavor
when :notes then note.pretty_name.ljust(2, ' ')
when :intervals then (guitar_notes.root - note).name.ljust(2, '-')
when :degrees then guitar_notes.notes.degree(note).to_s.rjust(2, '0')
when :marks then ' ' else raise WrongFlavorError
end
base_hue = (180 + note.integer * 10) % 360 Paint[
mark,
HSL.new(0, 0, 100).html,
HSL.new(base_hue, 100, 30).html
]
end
|
#render ⇒ Object
15
16
17
|
# File 'lib/coltrane/renderers/text_renderer/representation_guitar_note_set_drawer.rb', line 15
def render
[render_notes, render_special_frets].join("\n" * 2)
end
|
#render_notes ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/coltrane/renderers/text_renderer/representation_guitar_note_set_drawer.rb', line 19
def render_notes
guitar_notes.strings.map.with_index.map do |string, str_i|
Array.new(frets + 2) do |i|
if i.zero?
Paint[
string[:pitch].pitch_class.name,
HSL.new(140 + str_i * 20, 50, 50).html
]
else
(i - 1)
.yield_self { |fret|
(string[:pitch] + fret)
.yield_self { |pitch|
if guitar_notes.notes.include?(pitch.pitch_class)
place_mark(pitch.pitch_class)
else
place_empty(str_i)
end
}
.yield_self { |mark| mark + (fret.zero? ? (' |') : '') }
}
end
end.join(' ')
end.join("\n")
end
|
#render_special_frets ⇒ Object
45
46
47
48
49
50
51
|
# File 'lib/coltrane/renderers/text_renderer/representation_guitar_note_set_drawer.rb', line 45
def render_special_frets
' ' +
Array.new(frets + 2) do |fret|
m = guitar.special_frets.include?(fret) ? fret.to_s.rjust(2, 0.to_s) : ' '
"#{m}#{' ' if fret.zero?}"
end.join(' ')
end
|