# minimal viable song engine required domain generators timbre layer: minimal sound requires a spectral shape (amplitudes), spectral layout (frequencies), and amplitude envelope (envelope). onset layer: onset structure is necessary to generate multiple sounds in time, not just a static texture. pitch layer: without pitch domains, all notes would be spectrally shaped noise at fixed frequencies. tonal + tuning give musical identity. structure layer: essential to escape the loop - these allow for evolution, form, and larger-scale behavior. ## minimal viable song engine includes: * `timbre.amplitudes` * `timbre.frequencies` * `timbre.envelope` * `onset.grid` * `onset.density` * `onset.voicing` * `pitch.tonal` * `pitch.tuning` * `structure.segmentation` * `structure.ordering` ## what is not critical path these add expressivity, realism, or complexity, but are not strictly required: * `decorators`, `dynamics`, `envelopes` - enhance timbre expressivity * `offset`, `pattern` - improve rhythm, but not required to place notes * `generative`, `atonal` - expand pitch sources * `hierarchy` - adds complex structure * `interplay.` - defines voice interactions, not needed for solo behavior * `spatial.` - purely perceptual spatialization; optional for musical structure ## summary a complete parametric song can be generated using 10 core domains across 5 layers. these provide static structure, rhythm, pitch, spectrum, and form - everything needed to produce standalone music. all other domains can be added incrementally to expand the expressivity space.