Prepare synth DSL package boundary

This commit is contained in:
Meta Vens 2026-05-13 00:19:02 +01:00
commit 6284023546
4 changed files with 25 additions and 0 deletions

View file

@ -14,6 +14,17 @@ the Rust crate into the room by the ankle.
dotnet test
```
## Package Boundary
Aquarium consumes this library as a pinned `AquariumSynth.Dsl` NuGet package,
not as a live project reference. Breaking synth-library work should happen here
freely, then Aquarium should intentionally update only after a new package
version is packed and tested.
```powershell
dotnet pack src\AquariumSynth.Dsl\AquariumSynth.Dsl.csproj -c Release
```
## Shape
- `PatchScript.Parse(script)` lowers terse script into `SynthPatch`.

View file

@ -4,6 +4,17 @@
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PackageId>AquariumSynth.Dsl</PackageId>
<Version>0.1.0-aquarium.1</Version>
<Authors>GameCult</Authors>
<Company>GameCult</Company>
<Description>Aquarium synth patch DSL model, parser, analysis helpers, and Faust source emitter.</Description>
<PackageReadmeFile>README.md</PackageReadmeFile>
<RepositoryUrl>https://github.com/GameCult/AquariumSynthCSharp</RepositoryUrl>
</PropertyGroup>
<ItemGroup>
<None Include="..\..\README.md" Pack="true" PackagePath="\" />
</ItemGroup>
</Project>

View file

@ -7,3 +7,4 @@
{"kind":"reference_synth_roadmap","lesson":"AquariumSynthCSharp should use external synth and DSP corpora as reference targets, not just internal demo patches. Start with DX7/Dexed SysEx for structured FM, then ZynAddSubFX, Faust examples/libraries, Surge XT, and Cardinal as progressively broader pressure tests. Keep provenance and license state explicit before vendoring fixtures.","source":"user clarified any synth can be broken down and rebuilt via Aquarium DSL"}
{"kind":"runtime_patch_parameters","lesson":"Synth patches must expose expressive runtime parameters. Faust supports this through UI controls and hosted parameter APIs, so Aquarium should compile a graph once and vary declared parameter values without recompilation. Recompile only for structural graph changes.","source":"user asked whether Faust can vary one number without recompiling"}
{"kind":"synth_test_ownership","lesson":"AquariumSynthCSharp owns reference-patch correctness. Aquarium should only smoke-test the engine synth host and bundled Faust boundary; SFXR/BFXR/reference parity belongs here so the engine can keep moving while the synth library is under active surgery.","source":"user questioned synth tests living in Aquarium"}
{"kind":"package_boundary","lesson":"Aquarium consumes AquariumSynth.Dsl through a pinned package, not a live project reference. Breaking changes in AquariumSynthCSharp are allowed during synth construction as long as a new package version is packed and Aquarium is updated deliberately when the boundary should move.","source":"user wanted Aquarium builds insulated from synth-agent work"}

View file

@ -14,6 +14,7 @@ surfaces:
library: src/AquariumSynth.Dsl
tests: tests/AquariumSynth.Dsl.Tests
reference_roadmap: docs/reference-synth-roadmap.md
package: AquariumSynth.Dsl 0.1.0-aquarium.1
modules:
model: src/AquariumSynth.Dsl/Model.cs
parser: src/AquariumSynth.Dsl/PatchScript.cs
@ -38,4 +39,5 @@ boundaries:
- Faust source and target-code generation
checks:
default: dotnet test
package: dotnet pack src/AquariumSynth.Dsl/AquariumSynth.Dsl.csproj -c Release
faust_validation: automatic in tests when Faust is installed