Class: Coltrane::Renderers::TextRenderer::TheoryScaleSetDrawer

Inherits:
BaseDrawer
  • Object
show all
Defined in:
lib/coltrane/renderers/text_renderer/theory_scale_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

Constructor Details

This class inherits a constructor from Coltrane::Renderers::TextRenderer::BaseDrawer

Instance Method Details

#renderObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/coltrane/renderers/text_renderer/theory_scale_set_drawer.rb', line 7

def render
  output = []
  scale_width = scale_set.results.keys.map(&:size).max
  scale_set.results.each do |name, scales_by_tone|
    output << name.ljust(scale_width + 1, ' ')
    scales_by_tone.each do |tone_number, notes|
      p     = (notes.size.to_f / scale_set.searched_notes.size) * 100
      l     = p == 100 ? p : (p + 20) * 0.4
      und   = p == 100 ? :underline : nil
      color = Color::HSL.new(30, p, l / 2).html
      output << Paint["#{Theory::Note[tone_number].name}(#{notes.size})", color, und]
      output << ' '
    end
    output << "\n"
  end
  output.join
end