Method: Musa::Neumas::Decoders::NeumaDecoder#initialize

Defined in:
lib/musa-dsl/neumas/neuma-gdv-decoder.rb

#initialize(scale, base_duration: nil, transcriptor: nil, base: nil) ⇒ NeumaDecoder

Creates GDV neuma decoder.

Examples:

Create decoder with scale

scale = Object.new
decoder = Musa::Neumas::Decoders::NeumaDecoder.new(
  scale,
  base_duration: 1/4r
)

# Check initial state
decoder.base[:grade]      # => 0
decoder.base[:duration]   # => 1/4r

Custom initial state

scale = Object.new
decoder = Musa::Neumas::Decoders::NeumaDecoder.new(
  scale,
  base: { grade: 2, octave: 1, duration: 1/8r, velocity: 0.8 }
)

# Verify custom state
decoder.base[:grade]   # => 2
decoder.base[:octave]  # => 1

Parameters:

  • scale (Scales::Scale)

    scale for interpreting grade values

  • base_duration (Rational, nil) (defaults to: nil)

    base duration unit (default: 1/4)

  • transcriptor (Transcriptor, nil) (defaults to: nil)

    optional transcriptor for ornaments

  • base (Hash, nil) (defaults to: nil)

    initial state (auto-created if nil)



95
96
97
98
99
100
101
102
103
104
105
# File 'lib/musa-dsl/neumas/neuma-gdv-decoder.rb', line 95

def initialize(scale, base_duration: nil, transcriptor: nil, base: nil)
  @base_duration = base_duration
  @base_duration ||= base[:duration] if base
  @base_duration ||= Rational(1, 4)

  base ||= { grade: 0, octave: 0, duration: @base_duration, velocity: 1 }

  @scale = scale

  super base, transcriptor: transcriptor
end