Files
product-vamp/docs/composer/evaluation_contract.md
T
khodowany 0e68f5364b Cleanup
2026-10-04 18:48:02 -05:00

2.3 KiB

One musical evaluator

scoring.evaluate returns Evaluation(version='phrase-musical-1'): validity, raw values, enabled weights, weighted contributions, total, and exact-event normalization counts. The selected phrase score is exactly its reported total. Selection additionally reports the bounded next-phrase total; it is not disguised as the local score.

Lookahead averages the current normalized phrase score and the best feasible following phrase score. Candidate phrases can have different durations. This is a bounded, variable-horizon heuristic, not equal-duration whole-chorus optimization or a proven remaining-cost bound. Both local and lookahead totals appear in the decision trace so this limitation is inspectable.

Contribution Weight Interpretation
Purpose 2 Unprepared large motion, repeated oscillation and preparation of the chosen destination
Continuity 2 Incoming musical connection beyond a comfortable interval
Repetition 1 Recent complete rhythmic/interval figure overuse; deliberate return receives bounded allowance
Register 1 Duration-normalized excursions beyond the role's broad comfortable region

These are contextual preferences, not a perceptual memorability model. Broad acceptability can produce equal musical totals. A stable role-specific choice key breaks those ties. Guitar travel is absent from this total: it chooses a fingering for the selected music rather than giving an easier but otherwise unrelated tune an automatic advantage.

Harmonic validity, complete typed resolutions, exact duration, promised held destinations, rhythmic-group integrity, physical range and arrangement allocation are checked independently. Approved expression has no generic chromatic penalty or reward. Active empty candidates cannot pass; explicit no-harmony space can.

Rests are constructed within groups, at entrances, or after destinations. There is no global attack-density/occupancy optimization. Holds count as one sounding event, regardless of tied notation fragments. A repeated attack does not fulfill a single committed sustain.

Ordinary phrase endpoints may be mapped non-chord tones when the phrase remains open. Local settling, completion and handoff have actual timed destinations. Expression disabling reconstructs valid strict phrases; it does not delete notes from a chromatic winner.