63 lines
3.2 KiB
JSON
63 lines
3.2 KiB
JSON
{
|
|
"project": "AquariumSynthCSharp",
|
|
"mission": "Own Aquarium Synth patch authoring, analysis, preset mapping, and Faust generation in C# for the Aquarium/Vortice engine path.",
|
|
"current_boundary": {
|
|
"leave_in_rust": [
|
|
"Rust sample renderer",
|
|
"PatchPlayer runtime",
|
|
"realtime AudioUnit bridge",
|
|
"experimental Rust DSL compiler branch"
|
|
],
|
|
"own_here": [
|
|
"patch graph model",
|
|
"patch parameter contracts",
|
|
"reference patch contracts",
|
|
"DX7 SysEx structural parsing",
|
|
"DX7 algorithm topology metadata",
|
|
"patch script parser",
|
|
"SFXR atoms and parameter mapping",
|
|
"analysis/comparison metrics",
|
|
"script scoring",
|
|
"preset catalogs",
|
|
"Faust emission and compiler wrapper"
|
|
]
|
|
},
|
|
"taste": [
|
|
"Patch scripts should be terse but lower into explicit, inspectable graph data.",
|
|
"Compiler abstractions should remove repeated musical structure, not hide DSP behavior.",
|
|
"Generated Faust should be boring enough to diff and debug.",
|
|
"Realtime-facing work must assume allocation, locks, file I/O, console I/O, and OS calls are hostile."
|
|
],
|
|
"doctrine_refs": [
|
|
"docs/audio-doctrine.md",
|
|
"docs/migration-checklist.md",
|
|
"docs/reference-synth-roadmap.md",
|
|
"state/spine.yaml"
|
|
],
|
|
"reference_strategy": {
|
|
"purpose": "Use external synths and DSP corpora as pressure tests for Aquarium's patch DSL and Faust emitter.",
|
|
"priority_order": [
|
|
"DX7/Dexed SysEx for FM operator topology",
|
|
"ZynAddSubFX instruments for additive, subtractive, PAD, formant, and layered patches",
|
|
"Faust examples/libraries for general DSP graph topology",
|
|
"Surge XT for modern hybrid synth modulation",
|
|
"Cardinal/VCV-style patches for modular cable/rate semantics"
|
|
],
|
|
"rule": "Add DSL abstractions only when reference rebuilds prove the missing invariant."
|
|
},
|
|
"dx7_reference_path": {
|
|
"status": "DX7 SysEx parser extracts voice edit buffers, packed voices, packed 32-voice banks, six operators, envelopes, algorithm, feedback, oscillator sync, LFO, transpose, voice name, checksum validation, ReferencePatch features, and algorithm topology from the reverse-engineered OPS algorithm ROM table.",
|
|
"next": "Rebuild tiny DX7-style references in Aquarium DSL and use topology mismatches to decide whether an operator graph layer is needed."
|
|
},
|
|
"runtime_parameters": {
|
|
"rule": "Patch parameters are runtime controls, not compile-time constants.",
|
|
"faust_surface": "Faust UI controls expose parameter zones that hosts can update with setParamValue/getParamValue-style APIs.",
|
|
"aquarium_requirement": "Aquarium DSL patches declare stable exposed parameters with path/default/min/max/step metadata so callers can vary sound without recompiling.",
|
|
"binding_rule": "Parameter binding uses field-site references such as `lpf=@/macro/brightness`; the field owns meaning and the parameter owns the runtime value. Avoid target-routing semantics unless a new graph authority is deliberately mapped."
|
|
},
|
|
"last_verified": {
|
|
"command": "dotnet test AquariumSynthCSharp.slnx --no-restore",
|
|
"result": "31 passed",
|
|
"commit": "pending DX7 algorithm topology commit"
|
|
}
|
|
}
|