AquaSynth/docs/migration-checklist.md
2026-05-16 05:49:44 +01:00

2.5 KiB

Migration Checklist

This repo is now the authoring-side home for AquaSynth patch scripts and Faust generation. The AquaSynth-rs crate remains useful as a reference lab, but the current C# surface should not depend on somebody remembering what got built there.

Ported

  • Patch graph model: voices, envelopes, pitch motion, duty motion, filters, phasers, arpeggios, FM, color shaping, formants, repeat, and control lanes.
  • Patch script parser: patch, default, def, voice, mod/bus, and lfo/control, including field-only continuation lines for readable multi-line patches.
  • DSL shorthand aliases kept for authoring convenience, including p, d, v, u, w, f, g, s, pr, pdr, du, dur, l, h, drv, fl, fmix, fmi, mods, and m.
  • Modulation routing in both direct style (mod n=wob g=.4 l=.5) and routed style (bus n=sway to=g:.1,l:-.2,fmix:.3).
  • Built-in reference script catalog for classic SFXR, BFXR-flavored effects, classic 808, FM bell, wobble bass, and advanced layered patches.
  • Abstract SFXR reference script using defaults and templates.
  • SFXR parameter presets, mutation, shorthand atoms, and SFXR-to-patch mapping.
  • AquaSynth preset patches: pluck, heartbeat, voice, and SFXR named bridge.
  • Patch script scoring: terse, readability, and balanced metrics.
  • Audio analysis and comparison: envelope, log-mel spectrogram, spectral features, distance metrics, and score.
  • Faust source emitter and installed-compiler wrapper for C, C++, C#, and Rust target code generation.
  • Tests that parse/export all built-in reference scripts and validate Faust source when Faust is installed.

Still Deliberate

  • The Rust sample renderer, patch player, and realtime audio-unit bridge stay in Rust unless we decide to write a real C#/Faust runtime wrapper.
  • The experimental Rust-side DSL compiler branch can stay behind as reference machinery. The C# repo owns the script surface needed to drive Faust.
  • Exhaustive Rust-renderer-vs-Faust audio parity stays with the Rust renderer. C# can compare buffers it is handed, but it should not recreate the old renderer just to prove the old renderer existed. That road has a sign on it.

Next Pull

  • Add JSON serialization contracts for SynthPatch once the Vortice-side load boundary is known.
  • Add a Faust compilation cache keyed by script/options/source hash.
  • Add a small CLI so build scripts can compile .aqs patch files into Faust or generated C# without writing host code first.