@@ -70,34 +70,18 @@ Artifacts are published to the khodo generic package registry.
|
||||
|
||||
## Score Assets
|
||||
|
||||
Source score JSON lives in `data/`. Generated score JSON is not committed. To inspect generated assets without building the full package, run:
|
||||
Uncompressed MusicXML 3.1/4.0 scores exported from MuseScore live in `data/`. Generated score JSON is not committed. To inspect generated assets without building the full package, run:
|
||||
|
||||
```sh
|
||||
python3 -m generator --data-dir data --output-dir /tmp/product-vamp-generated --static-assets-dir package/assets --clean --check
|
||||
```
|
||||
|
||||
The `--check` path compares generation invariants against `data/expected/performance_summary.json`.
|
||||
The pinned build-only dependencies are in `tools/requirements.txt`. Configure/build automatically refresh the project build image when this file changes; direct builds must install it in their Python environment.
|
||||
|
||||
Authored score files use compact JSON. Metadata stays as normal JSON fields, while each measure is a readable notation string. The optional `style` field must be a supported built-in player style; compact aliases `Med.`, `Med. Swing`, and `Medium` normalize to `Medium Swing`.
|
||||
The build-time pipeline is MuseScore -> `.musicxml` -> importer -> arranger/transposer -> schema-v2 JSON. The Pi reads only JSON. Performance sources produce acoustic, electric, and vocal parts; melody exercises produce twelve tonic variants, and chord exercises keep their authored key.
|
||||
|
||||
```json
|
||||
{
|
||||
"title": "Autumn Leaves",
|
||||
"key": "F",
|
||||
"time": "4/4",
|
||||
"clef": "treble",
|
||||
"part": "Vocal",
|
||||
"role": "vocal",
|
||||
"measures": [
|
||||
"[G-7] Bb4:1~ \"leaves\"",
|
||||
"[C7] ~Bb4:4 C4:4 \"drift\" D4:4 \"by\" E4:4 \"my\"",
|
||||
"{5:2 C4:4 D4:4 E4:4 F4:4 G4:4}",
|
||||
"[G7] (G4 B4 F5):4 r:4"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Notation tokens are `PITCH:DURATION`, `r:DURATION`, and `(PITCH PITCH ...):DURATION` for written chord tones. Durations use `1`, `2`, `4`, `8`, `16`, `32`, plus `.` for dotted values. `[Chord]` applies to the next token, `[(Chord)]` marks an optional turnaround chord that is used between generated performance iterations but omitted from the final ending, quoted text applies as a lyric to the previous note, `~` starts or ends ties, and `{N:M ...}` writes tuplets such as five quarter notes in the space of two quarter notes. A measure may also be an object with `notes` plus MusicXML-style metadata fields such as `attributes`, `directions`, `harmony`, or `barlines`.
|
||||
See [Score Generation](TECHNICAL_GUIDE.md#score-generation) for supported MusicXML notation, Vamp properties, schema details, and diagnostics. There is no compact-JSON source format or legacy runtime adapter. Unsupported notation fails generation before existing assets are replaced.
|
||||
|
||||
Bundled fonts are OTF files in `package/assets/fonts/petaluma`: `Petaluma.otf` supplies music symbols and `PetalumaScript.otf` supplies text. Petaluma is from Steinberg under the SIL Open Font License. Runtime packages include these two fonts and `OFL.txt`; the upstream metadata is kept only as a source reference.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user