Module: HeadMusic::Time

Defined in:
lib/head_music/time.rb,
lib/head_music/time/conductor.rb,
lib/head_music/time/meter_map.rb,
lib/head_music/time/tempo_map.rb,
lib/head_music/time/meter_event.rb,
lib/head_music/time/tempo_event.rb,
lib/head_music/time/clock_position.rb,
lib/head_music/time/smpte_timecode.rb,
lib/head_music/time/musical_position.rb

Overview

The Time module provides classes and methods to handle representations of musical time and its relationship to clock time and SMPTE Time Code.

This module enables synchronization between three time representations:

  • Clock time: elapsed nanoseconds (source of truth)
  • Musical position: bars:beats:ticks:subticks notation
  • SMPTE timecode: hours:minutes:seconds:frames for video/audio sync

Examples:

Converting between time representations

conductor = HeadMusic::Time::Conductor.new
clock_pos = HeadMusic::Time::ClockPosition.new(1_000_000_000) # 1 second
musical_pos = conductor.clock_to_musical(clock_pos)

Defined Under Namespace

Classes: ClockPosition, Conductor, MeterEvent, MeterMap, MusicalPosition, SmpteTimecode, TempoEvent, TempoMap

Constant Summary collapse

PPQN =

Ticks per quarter note value (MIDI standard)

PULSES_PER_QUARTER_NOTE = 960
SUBTICKS_PER_TICK =

Subticks provide finer resolution than ticks for precise timing

240