Class: Clef::Core::Tuplet

Inherits:
Object
  • Object
show all
Defined in:
lib/clef/core/tuplet.rb

Constant Summary collapse

ELEMENT_TYPES =
[Note, Rest, Chord, self].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(actual, normal, elements) ⇒ Tuplet

Returns a new instance of Tuplet.

Parameters:

Raises:

  • (ArgumentError)


13
14
15
16
17
18
19
20
21
22
# File 'lib/clef/core/tuplet.rb', line 13

def initialize(actual, normal, elements)
  raise ArgumentError, "tuplet values must be positive" unless actual.is_a?(Integer) && actual.positive? &&
    normal.is_a?(Integer) && normal.positive?

  @actual = actual
  @normal = normal
  @elements = Array(elements)
  validate_elements!
  @elements.freeze
end

Instance Attribute Details

#actualObject (readonly)

Returns the value of attribute actual.



8
9
10
# File 'lib/clef/core/tuplet.rb', line 8

def actual
  @actual
end

#elementsObject (readonly)

Returns the value of attribute elements.



8
9
10
# File 'lib/clef/core/tuplet.rb', line 8

def elements
  @elements
end

#normalObject (readonly)

Returns the value of attribute normal.



8
9
10
# File 'lib/clef/core/tuplet.rb', line 8

def normal
  @normal
end

Instance Method Details

#lengthRational

Returns:

  • (Rational)


25
26
27
# File 'lib/clef/core/tuplet.rb', line 25

def length
  raw_length * ratio
end

#ratioRational

Returns:

  • (Rational)


30
31
32
# File 'lib/clef/core/tuplet.rb', line 30

def ratio
  Rational(normal, actual)
end