Sha256: 0cebc50d0196054baebbdb98424c3cac24fe64e649bb5bdd36445c6cdec2fdb6

Contents?: true

Size: 589 Bytes

Versions: 6

Compression:

Stored size: 589 Bytes

Contents

# frozen_string_literal: true

module Coltrane
  # It describe the quality of a chord, like maj7 or dim.
  class ChordQuality < IntervalSequence
    attr_reader :name
    include Qualities

    def initialize(name: nil, notes: nil)
      if !name.nil?
        raise ChordNotFoundError unless (intervals = CHORD_QUALITIES[name])
        @name = name
        super(intervals: intervals)
      elsif !notes.nil?
        super(notes: notes)
        @name = CHORD_QUALITIES.key(intervals_semitones)
      else
        raise WrongKeywordsError, '[name:] || [notes:]'
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
coltrane-1.0.26 lib/coltrane/chord_quality.rb
coltrane-1.0.24 lib/coltrane/chord_quality.rb
coltrane-1.0.22 lib/coltrane/chord_quality.rb
coltrane-1.0.21 lib/coltrane/chord_quality.rb
coltrane-1.0.20 lib/coltrane/chord_quality.rb
coltrane-1.0.2 lib/coltrane/chord_quality.rb