Add Faust WebAssembly compile lane

This commit is contained in:
Meta Vens 2026-05-18 12:20:32 +01:00
commit d7b49d7248
4 changed files with 130 additions and 1 deletions

View file

@ -63,6 +63,9 @@ published packages.
from `AquaSynth.Faust`.
- `FaustCompiler.CompileAsync(source, options)` writes generated backend code
through an installed or resolved Faust compiler from `AquaSynth.Faust`.
- `FaustCompiler.CompileWebAssemblyScriptAsync(...)` and
`CompileWebAssemblyAsync(...)` emit browser-ready `.dsp`, `.wasm`, and Faust
JSON UI metadata artifacts.
- `AquaSynthPatchCompiler` from `AquaSynth.Faust` is the live host-facing
boundary for compiling `.aqua` scripts into hosted DSP factories.
- `AquaSynthNativeCompiler` remains the lower native `libfaust` compiler
@ -92,6 +95,16 @@ await FaustCompiler.CompileAsync(
new FaustCompileOptions(FaustTargetLanguage.CSharp, "Generated/Bass.cs"));
```
The browser lane uses Faust's WebAssembly backend and keeps the same ownership:
AquaSynth emits the `.dsp`, `.wasm`, and JSON UI description; the host supplies
WebAudio scheduling and parameter binding.
```csharp
await FaustCompiler.CompileWebAssemblyScriptAsync(
"v w=sin f=880 g=.12 sustain=.04 decay=.2",
new FaustWebAssemblyCompileOptions("Generated/Web", "ui_select"));
```
The runtime lane is different. AquaSynth should own Faust toolchain selection,
compile cache identity, generated artifacts, parameter manifests, and dynamic
patch compilation outside the realtime path. Aquarium Engine should load and