Files
product-vamp/data/composition/harmony.json
T
khodowany 68df7292ee Cleanup
2026-10-04 17:14:13 -05:00

142 lines
2.9 KiB
JSON

{
"version": 1,
"provenance": "Original conservative chord/function rules; not learned from supplied reference scores. Review of reference colors prompted the general distinction between a stable minor sixth and a resolving chromatic neighbor; no reference timing distribution was fitted.",
"license": "MIT",
"colors": [
{
"id": "major_ninth",
"qualities": [
"major"
],
"degree": 9,
"alter": 0,
"max_beats": "4",
"outside": false
},
{
"id": "major_thirteenth",
"qualities": [
"major"
],
"degree": 13,
"alter": 0,
"max_beats": "4",
"outside": false
},
{
"id": "lydian_color",
"qualities": [
"major",
"dominant"
],
"degree": 11,
"alter": 1,
"max_beats": "2",
"outside": true,
"resolve": true
},
{
"id": "minor_ninth",
"qualities": [
"minor"
],
"degree": 9,
"alter": 0,
"max_beats": "4",
"outside": false
},
{
"id": "minor_eleventh",
"qualities": [
"minor",
"half_diminished"
],
"degree": 11,
"alter": 0,
"max_beats": "4",
"outside": false
},
{
"id": "minor_sixth",
"qualities": [
"minor"
],
"degree": 6,
"alter": 0,
"max_beats": "4",
"outside": true,
"function": "tonic_or_predominant",
"continuation": "Stable color on tonic/predominant minor harmony; duration and explicit chord exclusions remain binding."
},
{
"id": "dominant_ninth",
"qualities": [
"dominant"
],
"degree": 9,
"alter": 0,
"max_beats": "4",
"outside": false
},
{
"id": "dominant_thirteenth",
"qualities": [
"dominant"
],
"degree": 13,
"alter": 0,
"max_beats": "4",
"outside": false
},
{
"id": "dominant_flat_ninth",
"qualities": [
"dominant"
],
"degree": 9,
"alter": -1,
"max_beats": "2",
"outside": true,
"resolve": true,
"function": "resolving_dominant"
},
{
"id": "dominant_sharp_ninth",
"qualities": [
"dominant"
],
"degree": 9,
"alter": 1,
"max_beats": "2",
"outside": true,
"resolve": true,
"function": "resolving_dominant"
},
{
"id": "dominant_flat_thirteenth",
"qualities": [
"dominant"
],
"degree": 13,
"alter": -1,
"max_beats": "2",
"outside": true,
"resolve": true,
"function": "resolving_dominant"
}
],
"resolution_gap": "1",
"anticipation_max": "1",
"suspensions": [
{
"id": "prepared_step_down",
"preparation": "1/2",
"max_delay": "1",
"steps": [
-1,
-2
]
}
]
}