class Coltrane::Renderers::TextRenderer::TheoryScaleSetDrawer

Public Instance Methods

render() click to toggle source
# 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