Module: Musa Private

Defined in:
lib/musa-dsl.rb,
lib/musa-dsl/version.rb,
lib/musa-dsl/repl/repl.rb,
lib/musa-dsl/music/chords.rb,
lib/musa-dsl/music/scales.rb,
lib/musa-dsl/core-ext/with.rb,
lib/musa-dsl/logger/logger.rb,
lib/musa-dsl/matrix/matrix.rb,
lib/musa-dsl/neumas/neumas.rb,
lib/musa-dsl/transport/clock.rb,
lib/musa-dsl/transport/timer.rb,
lib/musa-dsl/core-ext/arrayfy.rb,
lib/musa-dsl/core-ext/hashify.rb,
lib/musa-dsl/midi/midi-voices.rb,
lib/musa-dsl/generative/darwin.rb,
lib/musa-dsl/generative/markov.rb,
lib/musa-dsl/core-ext/deep-copy.rb,
lib/musa-dsl/core-ext/extension.rb,
lib/musa-dsl/midi/midi-recorder.rb,
lib/musa-dsl/series/base-series.rb,
lib/musa-dsl/series/proxy-serie.rb,
lib/musa-dsl/series/queue-serie.rb,
lib/musa-dsl/series/timed-serie.rb,
lib/musa-dsl/generative/variatio.rb,
lib/musa-dsl/neumalang/neumalang.rb,
lib/musa-dsl/sequencer/timeslots.rb,
lib/musa-dsl/series/buffer-serie.rb,
lib/musa-dsl/transport/transport.rb,
lib/musa-dsl/core-ext/inspect-nice.rb,
lib/musa-dsl/datasets/score/render.rb,
lib/musa-dsl/musicxml/builder/note.rb,
lib/musa-dsl/musicxml/builder/part.rb,
lib/musa-dsl/musicxml/builder/rest.rb,
lib/musa-dsl/transport/dummy-clock.rb,
lib/musa-dsl/transport/timer-clock.rb,
lib/musa-dsl/core-ext/dynamic-proxy.rb,
lib/musa-dsl/music/chord-definition.rb,
lib/musa-dsl/neumas/array-to-neumas.rb,
lib/musa-dsl/series/quantizer-serie.rb,
lib/musa-dsl/series/series-composer.rb,
lib/musa-dsl/musicxml/builder/helper.rb,
lib/musa-dsl/neumas/string-to-neumas.rb,
lib/musa-dsl/sequencer/sequencer-dsl.rb,
lib/musa-dsl/musicxml/builder/measure.rb,
lib/musa-dsl/sequencer/base-sequencer.rb,
lib/musa-dsl/core-ext/attribute-builder.rb,
lib/musa-dsl/core-ext/smart-proc-binder.rb,
lib/musa-dsl/musicxml/builder/direction.rb,
lib/musa-dsl/transport/input-midi-clock.rb,
lib/musa-dsl/musicxml/builder/attributes.rb,
lib/musa-dsl/musicxml/builder/part-group.rb,
lib/musa-dsl/musicxml/builder/typed-text.rb,
lib/musa-dsl/transcription/transcription.rb,
lib/musa-dsl/series/main-serie-operations.rb,
lib/musa-dsl/core-ext/array-explode-ranges.rb,
lib/musa-dsl/generative/generative-grammar.rb,
lib/musa-dsl/musicxml/builder/pitched-note.rb,
lib/musa-dsl/transport/external-tick-clock.rb,
lib/musa-dsl/series/main-serie-constructors.rb,
lib/musa-dsl/musicxml/builder/backup-forward.rb,
lib/musa-dsl/musicxml/builder/score-partwise.rb,
lib/musa-dsl/musicxml/builder/unpitched-note.rb,
lib/musa-dsl/datasets/score/to-mxml/process-ps.rb,
lib/musa-dsl/datasets/score/to-mxml/process-pdv.rb,
lib/musa-dsl/music/scale_kinds/major_scale_kind.rb,
lib/musa-dsl/musicxml/builder/note-complexities.rb,
lib/musa-dsl/datasets/score/to-mxml/process-time.rb,
lib/musa-dsl/sequencer/base-sequencer-tick-based.rb,
lib/musa-dsl/series/hash-or-array-serie-splitter.rb,
lib/musa-dsl/music/scale_kinds/chromatic_scale_kind.rb,
lib/musa-dsl/sequencer/base-sequencer-tickless-based.rb,
lib/musa-dsl/music/scale_kinds/blues/blues_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/modes/dorian_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/modes/lydian_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/minor_natural_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/modes/locrian_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/minor_harmonic_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/modes/phrygian_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/modes/mixolydian_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/bebop/bebop_major_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/bebop/bebop_minor_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/blues/blues_major_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/bebop/bebop_dominant_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/symmetric/whole_tone_scale_kind.rb,
lib/musa-dsl/music/scale_systems/twelve_semitones_scale_system.rb,
lib/musa-dsl/music/scale_kinds/melodic_minor/altered_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/ethnic/double_harmonic_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/ethnic/hungarian_minor_scale_kind.rb,
lib/musa-dsl/sequencer/base-sequencer-implementation-play-helper.rb,
lib/musa-dsl/music/scale_kinds/ethnic/neapolitan_major_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/ethnic/neapolitan_minor_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/melodic_minor/dorian_b2_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/symmetric/diminished_hw_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/symmetric/diminished_wh_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/ethnic/phrygian_dominant_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/melodic_minor/melodic_minor_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/melodic_minor/mixolydian_b6_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/pentatonic/pentatonic_major_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/pentatonic/pentatonic_minor_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/melodic_minor/locrian_sharp2_scale_kind.rb,
lib/musa-dsl/music/scale_systems/equally_tempered_12_tone_scale_system.rb,
lib/musa-dsl/music/scale_kinds/harmonic_major/harmonic_major_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/melodic_minor/lydian_dominant_scale_kind.rb,
lib/musa-dsl/music/scale_kinds/melodic_minor/lydian_augmented_scale_kind.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Time and duration processing for MusicXML export.

This module provides helper methods for converting musical durations to MusicXML note types, dots, and tuplet ratios. Handles the complex mathematics of decomposing arbitrary rational durations into standard notation elements.

Duration Representation

Durations are Rational numbers where 1 = one beat (typically quarter note).

  • 1r = quarter note
  • 1/2r = eighth note
  • 3/2r = dotted quarter
  • 1/3r = eighth note triplet

Decomposition Process

  1. Decompose: Break duration into sum of simple durations (powers of 2)
  2. Integrate: Combine consecutive halves into dotted notes
  3. Type & Dots: Determine note type and dot count
  4. Tuplet Ratio: Calculate tuplet modification if needed

Defined Under Namespace

Modules: All, Chords, Clock, Darwin, Datasets, Extension, GenerativeGrammar, Logger, MIDIRecorder, MIDIVoices, Markov, MusicXML, Neumalang, Neumas, REPL, Scales, Sequencer, Series, Transcription, Transcriptors, Transport, Variatio

Constant Summary collapse

VERSION =
'0.47.2'.freeze