Sha256: f703315cd7c21689a552a579fccb4f9fa89ac3f5ff4fd969dc4621c17e29b4ce

Contents?: true

Size: 1.04 KB

Versions: 4

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module Coltrane
  # It's totally a wip yet.
  module ClassicProgressions
    PROGRESSIONS = {
      pop:        [:major, [1, 5, 6, 4]],
      fifties:    [:major, [1, 6, 4, 5]],
      blues:      [:major, [1, 4, 1, 5, 4, 1]],
      jazz:       [:major, [2, 5, 1]],
      jazz_minor: [:minor, [2, 5, 1]],
      andalusian: [:minor, [1, 7, 6, 5]]
    }.freeze

    def pop(tone)
      scale, degrees = PROGRESSIONS[:pop]
      Scale.public_send(scale, tone).progression(*degrees)
    end

    def fifties(tone)
      scale, degrees = PROGRESSIONS[:fifties]
      Scale.public_send(scale, tone).progression(*degrees)
    end

    def blues(tone)
      scale, degrees = PROGRESSIONS[:blues]
      Scale.public_send(scale, tone).progression(*degrees)
    end

    def jazz(tone)
      scale, degrees = PROGRESSIONS[:jazz]
      Scale.public_send(scale, tone).progression(*degrees)
    end

    def andalusian(tone)
      scale, degrees = PROGRESSIONS[:andalusian]
      Scale.public_send(scale, tone).progression(*degrees)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
coltrane-1.0.22 lib/coltrane/classic_progressions.rb
coltrane-1.0.21 lib/coltrane/classic_progressions.rb
coltrane-1.0.20 lib/coltrane/classic_progressions.rb
coltrane-1.0.2 lib/coltrane/classic_progressions.rb