metronome/rust/Cargo.toml
Me Here 964dee01d6 pm-synth: port engine.js 808/909/GM voices to Rust + host wav renderer
pm-synth: a polyphonic drum-voice synth, a faithful f32 port of engine.js DRUMS
(tone/ampEnv/v_noise/metalHat/clap recipes; RBJ biquads; exp envelopes). A Synth
mixes active Voices sample-by-sample (transport-agnostic: offline render now,
real-time device buffer fills later). All 808/909 + GM voices ported.

synthrender (host bin): parse a groove -> track-format schedule -> trigger voices
at click times -> 16-bit/48k mono WAV. Applies the editor default kit (kick->
kick909 etc.). Renders four demo grooves to audition off-bench.

This is the reusable half of the audio feature; the device port (no_std +
fixed-point/table osc, since the M0+ has no FPU) comes with the transport.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 12:34:31 -05:00

18 lines
710 B
TOML

[workspace]
resolver = "2"
members = [
"track-format",
"pm-ui",
"uisim",
"glyphgen",
"pm-synth",
"synthrender",
]
# pm-kit (RP2350/thumbv8m) and pm-grid (RP2040/thumbv6m) are embedded firmware (no_std + their own
# profile/build). Each is built on its own from its crate dir (e.g. `cargo build` inside pm-grid/,
# which picks up its .cargo/config.toml target), so they are kept OUT of this host workspace to
# avoid pulling their cortex-m deps into host `cargo build`/`cargo test`.
exclude = ["pm-kit", "pm-grid"]
# Profiles live at the workspace root (member profiles are ignored in a workspace). The firmware's
# size/LTO profile stays in pm-kit/Cargo.toml since pm-kit is excluded.