Skip to content

Trajectory System

Trajectories define how musical parameters change over time, independent of the notes themselves. This is YaO's implementation of Principle 4: time-axis first.

Dimensions

Dimension Controls Effect
tension Velocity/dynamics Higher tension → louder, more intense
density Note count per bar Higher density → more notes
predictability Pattern regularity Higher → more repetitive patterns
brightness Timbral quality Higher → brighter tone selection
register_height Octave placement Higher → notes in higher octaves

Interpolation Types

Bezier (smooth curves)

tension:
  type: bezier
  waypoints: [[0, 0.2], [16, 0.85], [32, 0.3]]

Stepped (per-section values)

density:
  type: stepped
  sections: { intro: 0.3, verse: 0.5, chorus: 0.9, outro: 0.3 }

Linear (straight interpolation)

tension:
  type: linear
  waypoints: [[0, 0.1], [32, 0.9]]

Target (constant value)

predictability:
  target: 0.65
  variance: 0.15

Usage

yao compose my-spec.yaml --trajectory trajectory.yaml

Values

All trajectory values are in the range 0.0 to 1.0. The generator maps these to musical parameters (e.g., tension 0.5 → base velocity, tension 1.0 → +20% velocity).