music/exemplars/instruments/HARMONY_FIT.md
The VERTICAL instrument. It measures whether a melody was written AGAINST a harmony, which is the clause of Josh's round-3 grade -- "they clash ... never any harmonies added on" -- that no other instrument in the battery can see.
| round | cues | chord_tone_share (preferred src) | same, bar grid | null mean | null percentile | cues above null p95 |
|---|---|---|---|---|---|---|
| round2 | 3 | 0.495 | 0.495 | 0.465 | 0.661 | 0/3 |
| round3 | 3 | 0.428 | 0.428 | 0.470 | 0.228 | 0/3 |
| round4 | 3 | 0.546 | 0.506 | 0.489 | 0.781 | 1/3 |
A percentile near 0.5 means the melody's agreement with its own chords is indistinguishable from pitches drawn at random from the same mode. A percentile of 1.00 with above null p95 means the agreement could not have happened by chance.
| round | cue | src | 1 chord_tone_share (prim / all) | 2 dissonance_classifiability | 3 tension mean / p90 / high-share | 4 chords/min, distinct, entropy | 5 non-functional | 6 supported | 7 par 3rds+6ths | 8 undecl. parallels |
|---|---|---|---|---|---|---|---|---|---|---|
| round2 | PASS2_FLORES_CACI | bar_grid | 0.548 / 0.272 | 0.390 (133/218 unclassifiable) | 1.43 / 4.00 / 0.611 | 36.38, 7, 3.78 b | 0.000 | 0.922 | 0.102 | 113 |
| round2 | PASS2_FLORES_REST | bar_grid | 0.472 / 0.447 | 0.544 (31/68 unclassifiable) | 1.59 / 4.00 / 0.663 | 22.50, 7, 3.61 b | 0.000 | 0.920 | 0.020 | 80 |
| round2 | PASS2_FLORES_WATERFALL | bar_grid | 0.467 / 0.467 | 0.438 (9/16 unclassifiable) | 1.45 / 4.00 / 0.275 | 15.26, 6, 2.95 b | 0.000 | 0.833 | 0.000 | 0 |
| round3 | PASS5_FLORES_FALLS | bar_grid | 0.379 / 0.384 | 0.395 (66/109 unclassifiable) | 1.60 / 4.00 / 0.598 | 17.33, 6, 3.30 b | 0.000 | 0.975 | 0.000 | 73 |
| round3 | PASS5_FLORES_ROAD | bar_grid | 0.447 / 0.467 | 0.379 (118/190 unclassifiable) | 1.63 / 5.00 / 0.578 | 28.46, 7, 3.73 b | 0.000 | 0.926 | 0.000 | 125 |
| round3 | PASS5_FLORES_ROUNDS | bar_grid | 0.459 / 0.440 | 0.358 (147/229 unclassifiable) | 1.86 / 4.00 / 0.672 | 36.40, 7, 3.84 b | 0.000 | 0.905 | 0.000 | 51 |
| round4 | PASS7_FLORES_FALLS | harmonic_plan | 0.580 / 0.551 | 0.378 (130/209 unclassifiable) | 1.59 / 4.00 / 0.627 | 17.33, 19, 4.83 b | 0.346 | 0.964 | 0.012 | 66 |
| round4 | PASS7_FLORES_ROAD | harmonic_plan | 0.495 / 0.435 | 0.440 (218/389 unclassifiable) | 1.64 / 5.00 / 0.584 | 13.96, 19, 5.12 b | 0.365 | 0.924 | 0.007 | 121 |
| round4 | PASS7_FLORES_ROUNDS | harmonic_plan | 0.563 / 0.543 | 0.383 (289/468 unclassifiable) | 1.85 / 5.00 / 0.713 | 17.31, 13, 4.02 b | 0.155 | 0.922 | 0.001 | 46 |
Round 4 carries a real harmonic_plan, whose chords include a third whether or not any part voices it; rounds 2 and 3 have only the written voicing. Comparing the preferred sources across rounds would compare two different objects, so this table reads every round off the bar grid, which all three have.
| round | cue | chord_tone_share prim (bar grid) | structural tones | null mean | percentile | z |
|---|---|---|---|---|---|---|
| round2 | PASS2_FLORES_CACI | 0.548 | 84 | 0.464 | 0.932 | 1.50 |
| round2 | PASS2_FLORES_REST | 0.472 | 72 | 0.479 | 0.500 | -0.13 |
| round2 | PASS2_FLORES_WATERFALL | 0.467 | 30 | 0.451 | 0.550 | 0.18 |
| round3 | PASS5_FLORES_FALLS | 0.379 | 103 | 0.467 | 0.043 | -1.86 |
| round3 | PASS5_FLORES_ROAD | 0.447 | 179 | 0.453 | 0.425 | -0.17 |
| round3 | PASS5_FLORES_ROUNDS | 0.459 | 146 | 0.490 | 0.215 | -0.77 |
| round4 | PASS7_FLORES_FALLS | 0.543 | 81 | 0.476 | 0.988 | 2.14 |
| round4 | PASS7_FLORES_ROAD | 0.521 | 165 | 0.499 | 0.472 | -0.10 |
| round4 | PASS7_FLORES_ROUNDS | 0.454 | 141 | 0.490 | 0.882 | 1.19 |
| round | cue | real | null mean | null sd | null p05 / p50 / p95 | percentile | z | above p95 |
|---|---|---|---|---|---|---|---|---|
| round2 | PASS2_FLORES_CACI | 0.548 | 0.464 | 0.056 | 0.381 / 0.464 / 0.559 | 0.932 | 1.50 | no |
| round2 | PASS2_FLORES_REST | 0.472 | 0.479 | 0.054 | 0.403 / 0.472 / 0.569 | 0.500 | -0.13 | no |
| round2 | PASS2_FLORES_WATERFALL | 0.467 | 0.451 | 0.086 | 0.300 / 0.467 / 0.600 | 0.550 | 0.18 | no |
| round3 | PASS5_FLORES_FALLS | 0.379 | 0.467 | 0.048 | 0.379 / 0.476 / 0.534 | 0.043 | -1.86 | no |
| round3 | PASS5_FLORES_ROAD | 0.447 | 0.453 | 0.038 | 0.391 / 0.453 / 0.514 | 0.425 | -0.17 | no |
| round3 | PASS5_FLORES_ROUNDS | 0.459 | 0.490 | 0.041 | 0.418 / 0.493 / 0.555 | 0.215 | -0.77 | no |
| round4 | PASS7_FLORES_FALLS | 0.580 | 0.476 | 0.048 | 0.395 / 0.469 / 0.556 | 0.988 | 2.14 | yes |
| round4 | PASS7_FLORES_ROAD | 0.495 | 0.499 | 0.047 | 0.421 / 0.495 / 0.579 | 0.472 | -0.10 | no |
| round4 | PASS7_FLORES_ROUNDS | 0.563 | 0.490 | 0.062 | 0.394 / 0.493 / 0.592 | 0.882 | 1.19 | no |
supported_share asks whether the tune had something under it. This asks whether what was under it is playing the harmony it was handed. Only pad and arpeggio ever read the chord grid (pass2_realise.py:262-288); every other kind is degree-space figuration that was never chord-aware, so near-chance fidelity is expected there. Near-chance fidelity on the two kinds that DO read the grid is the defect named at the top of the module: a voicing written in absolute MIDI is routed through degree_to_midi (pass2_realise.py:425-431) and comes out as a different pitch class.
| round | cue | all accompaniment | kinds that READ the grid | kinds that do not |
|---|---|---|---|---|
| round2 | PASS2_FLORES_CACI | 0.455 | arpeggio 0.555, pad 0.504 | kotekan 0.433, ostinato 0.408, pokok 0.415 |
| round2 | PASS2_FLORES_REST | 0.527 | arpeggio 0.579, pad 0.515 | drone 1.000, kotekan 0.456, ostinato 0.472, pokok 0.481 |
| round2 | PASS2_FLORES_WATERFALL | 0.698 | arpeggio 0.677, pad 0.682 | drone 1.000, pokok 0.531 |
| round3 | PASS5_FLORES_FALLS | 0.515 | pad 0.619 | drone 1.000, score 0.427 |
| round3 | PASS5_FLORES_ROAD | 0.529 | arpeggio 0.562, pad 0.523 | drone 1.000, ostinato 0.488, pokok 0.487, score 0.480 |
| round3 | PASS5_FLORES_ROUNDS | 0.461 | pad 0.512 | counterline 0.000, drone 1.000, ostinato 0.364, pokok 0.467, score 0.418 |
| round4 | PASS7_FLORES_FALLS | 0.529 | none present | drone 0.571, score 0.525 |
| round4 | PASS7_FLORES_ROAD | 0.565 | none present | drone 0.611, ostinato 0.463, pokok 0.457, score 0.573 |
| round4 | PASS7_FLORES_ROUNDS | 0.559 | none present | drone 0.750, ostinato 0.468, pokok 0.497, score 0.556 |
| cue | bars | grid is a subset of the plan's chord | identical |
|---|---|---|---|
| PASS7_FLORES_FALLS | 54 | 0.537 | 0.463 |
| PASS7_FLORES_ROAD | 108 | 0.778 | 0.667 |
| PASS7_FLORES_ROUNDS | 124 | 0.581 | 0.581 |
the bar grid is what pad/arpeggio play; the harmonic plan is what the engine declared. A low subset share means the two disagree and the preferred-source number is the more generous of two readings.
chord_tone_share_primary = 0.5476 -- target: above the cue's own random-melody null p95 (DERIVED (random-melody null); chord_tone_share is gated against its own random-melody null and never against a fixed consonance quota: docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:63-64,71-73 put the strict ratio of consonance types on the does-not-survive list)dissonance_classifiability = 0.3899 -- target: 1.0 minus declared exceptions (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:400-403)undeclared_parallel_perfects = 113 -- target: 0 (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:126-134 (VL-1), counted by harmony.check H01)non_functional_ratio = 0.0 -- target: arrival <= 0.15 (CITED docs/proposals/music/school_grammars/SNES_JRPG_SCHOOL.md:66 (HARM-04))tension_mean = 1.4348 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)tension_p90 = 4.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)high_tension_time_share = 0.6107 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)harmonic_rhythm_per_min = 36.3833 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)distinct_chords = 7 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_change_entropy = 3.7792 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)supported_share = 0.9219 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)parallel_thirds_sixths_share = 0.1021 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_tone_share_primary = 0.4722 -- target: above the cue's own random-melody null p95 (DERIVED (random-melody null); chord_tone_share is gated against its own random-melody null and never against a fixed consonance quota: docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:63-64,71-73 put the strict ratio of consonance types on the does-not-survive list)dissonance_classifiability = 0.5441 -- target: 1.0 minus declared exceptions (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:400-403)undeclared_parallel_perfects = 80 -- target: 0 (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:126-134 (VL-1), counted by harmony.check H01)non_functional_ratio = 0.0 -- target: wonder >= 0.30 (CITED docs/proposals/music/school_grammars/SNES_JRPG_SCHOOL.md:66 (HARM-04))tension_mean = 1.593 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)tension_p90 = 4.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)high_tension_time_share = 0.6635 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)harmonic_rhythm_per_min = 22.5 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)distinct_chords = 7 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_change_entropy = 3.6122 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)supported_share = 0.9196 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)parallel_thirds_sixths_share = 0.0196 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_tone_share_primary = 0.4667 -- target: above the cue's own random-melody null p95 (DERIVED (random-melody null); chord_tone_share is gated against its own random-melody null and never against a fixed consonance quota: docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:63-64,71-73 put the strict ratio of consonance types on the does-not-survive list)dissonance_classifiability = 0.4375 -- target: 1.0 minus declared exceptions (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:400-403)undeclared_parallel_perfects = 0 -- target: 0 (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:126-134 (VL-1), counted by harmony.check H01)non_functional_ratio = 0.0 -- target: wonder >= 0.30 (CITED docs/proposals/music/school_grammars/SNES_JRPG_SCHOOL.md:66 (HARM-04))tension_mean = 1.4513 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)tension_p90 = 4.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)high_tension_time_share = 0.275 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)harmonic_rhythm_per_min = 15.2625 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)distinct_chords = 6 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_change_entropy = 2.9514 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)supported_share = 0.8333 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)parallel_thirds_sixths_share = 0.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_tone_share_primary = 0.3786 -- target: above the cue's own random-melody null p95 (DERIVED (random-melody null); chord_tone_share is gated against its own random-melody null and never against a fixed consonance quota: docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:63-64,71-73 put the strict ratio of consonance types on the does-not-survive list)dissonance_classifiability = 0.3945 -- target: 1.0 minus declared exceptions (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:400-403)undeclared_parallel_perfects = 73 -- target: 0 (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:126-134 (VL-1), counted by harmony.check H01)non_functional_ratio = 0.0 -- target: wonder >= 0.30 (CITED docs/proposals/music/school_grammars/SNES_JRPG_SCHOOL.md:66 (HARM-04))tension_mean = 1.5954 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)tension_p90 = 4.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)high_tension_time_share = 0.5977 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)harmonic_rhythm_per_min = 17.3333 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)distinct_chords = 6 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_change_entropy = 3.2975 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)supported_share = 0.9751 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)parallel_thirds_sixths_share = 0.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_tone_share_primary = 0.4469 -- target: above the cue's own random-melody null p95 (DERIVED (random-melody null); chord_tone_share is gated against its own random-melody null and never against a fixed consonance quota: docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:63-64,71-73 put the strict ratio of consonance types on the does-not-survive list)dissonance_classifiability = 0.3789 -- target: 1.0 minus declared exceptions (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:400-403)undeclared_parallel_perfects = 125 -- target: 0 (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:126-134 (VL-1), counted by harmony.check H01)non_functional_ratio = 0.0 -- target: wonder >= 0.30 (CITED docs/proposals/music/school_grammars/SNES_JRPG_SCHOOL.md:66 (HARM-04))tension_mean = 1.6327 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)tension_p90 = 5.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)high_tension_time_share = 0.578 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)harmonic_rhythm_per_min = 28.463 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)distinct_chords = 7 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_change_entropy = 3.7252 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)supported_share = 0.9259 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)parallel_thirds_sixths_share = 0.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_tone_share_primary = 0.4589 -- target: above the cue's own random-melody null p95 (DERIVED (random-melody null); chord_tone_share is gated against its own random-melody null and never against a fixed consonance quota: docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:63-64,71-73 put the strict ratio of consonance types on the does-not-survive list)dissonance_classifiability = 0.3581 -- target: 1.0 minus declared exceptions (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:400-403)undeclared_parallel_perfects = 51 -- target: 0 (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:126-134 (VL-1), counted by harmony.check H01)non_functional_ratio = 0.0 -- target: arrival <= 0.15 (CITED docs/proposals/music/school_grammars/SNES_JRPG_SCHOOL.md:66 (HARM-04))tension_mean = 1.861 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)tension_p90 = 4.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)high_tension_time_share = 0.6719 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)harmonic_rhythm_per_min = 36.4032 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)distinct_chords = 7 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_change_entropy = 3.8388 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)supported_share = 0.9049 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)parallel_thirds_sixths_share = 0.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_tone_share_primary = 0.5802 -- target: above the cue's own random-melody null p95 (DERIVED (random-melody null); chord_tone_share is gated against its own random-melody null and never against a fixed consonance quota: docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:63-64,71-73 put the strict ratio of consonance types on the does-not-survive list)dissonance_classifiability = 0.378 -- target: 1.0 minus declared exceptions (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:400-403)undeclared_parallel_perfects = 66 -- target: 0 (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:126-134 (VL-1), counted by harmony.check H01)non_functional_ratio = 0.3462 -- target: wonder >= 0.30 (CITED docs/proposals/music/school_grammars/SNES_JRPG_SCHOOL.md:66 (HARM-04))tension_mean = 1.5862 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)tension_p90 = 4.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)high_tension_time_share = 0.627 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)harmonic_rhythm_per_min = 17.3333 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)distinct_chords = 19 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_change_entropy = 4.8296 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)supported_share = 0.9635 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)parallel_thirds_sixths_share = 0.012 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_tone_share_primary = 0.4947 -- target: above the cue's own random-melody null p95 (DERIVED (random-melody null); chord_tone_share is gated against its own random-melody null and never against a fixed consonance quota: docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:63-64,71-73 put the strict ratio of consonance types on the does-not-survive list)dissonance_classifiability = 0.4396 -- target: 1.0 minus declared exceptions (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:400-403)undeclared_parallel_perfects = 121 -- target: 0 (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:126-134 (VL-1), counted by harmony.check H01)non_functional_ratio = 0.3654 -- target: wonder >= 0.30 (CITED docs/proposals/music/school_grammars/SNES_JRPG_SCHOOL.md:66 (HARM-04))tension_mean = 1.6369 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)tension_p90 = 5.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)high_tension_time_share = 0.5844 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)harmonic_rhythm_per_min = 13.963 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)distinct_chords = 19 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_change_entropy = 5.1184 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)supported_share = 0.9245 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)parallel_thirds_sixths_share = 0.0067 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_tone_share_primary = 0.5634 -- target: above the cue's own random-melody null p95 (DERIVED (random-melody null); chord_tone_share is gated against its own random-melody null and never against a fixed consonance quota: docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:63-64,71-73 put the strict ratio of consonance types on the does-not-survive list)dissonance_classifiability = 0.3825 -- target: 1.0 minus declared exceptions (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:400-403)undeclared_parallel_perfects = 46 -- target: 0 (CITED docs/proposals/music/craft_research/COUNTERPOINT_AND_VOICE_LEADING.md:126-134 (VL-1), counted by harmony.check H01)non_functional_ratio = 0.1552 -- target: arrival <= 0.15 (CITED docs/proposals/music/school_grammars/SNES_JRPG_SCHOOL.md:66 (HARM-04))tension_mean = 1.8465 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)tension_p90 = 5.0 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)high_tension_time_share = 0.7129 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)harmonic_rhythm_per_min = 17.3065 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)distinct_chords = 13 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)chord_change_entropy = 4.0243 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)supported_share = 0.9223 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)parallel_thirds_sixths_share = 0.0007 -- target: REPORT ONLY -- no corpus calibration exists for a score axis (DERIVED)