Index: netcomposer.json
Served at the site root, e.g. musicmatter.art/netcomposer.json.
| field | musicmatter.art value | meaning |
|---|---|---|
nc_version | "0.1" | format version |
creator | {"name": …, "link": "https://musicmatter.art/"} | who publishes the sounds: name, link |
default_license | "CC-BY-SA-4.0" | license for every offering unless its manifest says otherwise |
default_audio_format | "audio/flac" | MIME type of the audio |
offerings | 1356 entries | one per sound; keys: audio (absolute audio URL), manifest (absolute manifest URL), midi (relative path to a MIDI transcription) |
Manifest: one per sound
At the URL in offerings[].manifest, e.g. /sounds/<name>.nc.json. Field counts are from the 2026-10-17 validation of all 1356 live manifests; sub-keys are from the same published files.
| field | present | meaning |
|---|---|---|
audio | 1356/1356 | audio file name, relative to the manifest. |
chords | 1356/1356 | list of chord names sounded. |
creator | 1356/1356 | object: name, link. Keys: name, link. |
format | 1356/1356 | audio format details. Keys: mime, container, codec, lossless, sample_rate, bit_depth, channels, frames, pcm_md5. |
license | 1356/1356 | SPDX-style id, e.g. "CC-BY-SA-4.0". |
loopable | 1356/1356 | true/false. |
midi | 1356/1356 | relative path to a MIDI transcription. |
midi_info | 1356/1356 | how the MIDI was derived. Keys: derived_from_audio, source, confidence, method, timing, notes, size_bytes, sha256. |
nc_version | 1356/1356 | format version, "0.1". |
register | 1356/1356 | pitch range and bass. Keys: low, high, root, bass, inversion. |
sha256 | 1356/1356 | sha256 of the audio file. |
size_bytes | 1356/1356 | audio file size in bytes. |
title | 1356/1356 | human-readable title. |
type | 1356/1356 | "chord" or "arpeggio". |
key | 1068/1356 | key context, where given. |
arpeggio | 654/1356 | arpeggio details (arpeggio sounds only). Keys: direction, pattern, cycle, pitch_order, pitch_order_note, note_count, bars, restarts_each_bar, rate, notes, onsets_s, duration_s. Rate keys: note_value, bpm, step_s, meter. |
register_source | 529/1356 | how the register was verified, e.g. "verified_v6". |
near_duplicate_of | 6/1356 | audio file this sound nearly duplicates. |
notes_confidence | 2/1356 | confidence note for the pitch analysis, e.g. "low". |
PROPOSED
- Minimum per manifest (PROPOSED).
title,creator,audio,sha256,size_bytes, andlicenseunless the index hasdefault_license. Everything else is optional. The validator checks this minimum. - License identifiers (PROPOSED). SPDX-style ids:
CC0-1.0,CC-BY-3.0,CC-BY-4.0,CC-BY-SA-3.0,CC-BY-SA-4.0,PDM-1.0. Any NC, ND, Sampling+ or custom license is rejected. - Checksums (PROPOSED as required).
sha256andsize_bytesmust match the audio bytes served. Crawls will check them; today the validator does.
The fields describing the sound (type, chords, register, key, arpeggio) are what let a Performer choose musically without listening first. A Supplier of other kinds of sound may leave them out.
Validate
tools/validate_supplier.py (Python standard library only): python3 validate_supplier.py <index_url> [--sample 25] [--all-manifests] [--json report.json]. It checks the index, the manifests (parse, license, minimum fields, audio path matches the index) and a sample of audio files (sha256 and size). Exit code 0 means valid.
Then register: Supplier registry.