Initial commit of a toy analogue audio generator

Key components:
- no_std core so it can be used bare metal on embedded systems
- default implementation for RPi 2350, with midi input and I2s output using PIO
- Visualiser for the web to play with on a dev system
This commit is contained in:
2026-03-23 15:06:31 +00:00
commit 496b6bdc71
34 changed files with 3662 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
[package]
name = "synth-embedded"
version = "0.1.0"
edition = "2021"
description = "Embassy/RP2350 audio engine — I2S out, MIDI in, synth-core DSP"
publish = false
[[bin]]
name = "synth-embedded"
path = "src/main.rs"
[dependencies]
synth-core = { path = "../synth-core" }
embassy-executor = { workspace = true, features = [
"platform-cortex-m",
"executor-thread",
"defmt",
] }
embassy-rp = { workspace = true, features = [
"rp235xa", # Pico 2 (30 GPIOs); use rp235xb for the 48-pin variant
"rt", # enables rp-pac/rt → generates device.x interrupt vectors
"time-driver",
"defmt",
"unstable-pac",
] }
embassy-sync = { workspace = true, features = ["defmt"] }
embassy-time = { workspace = true, features = ["defmt", "defmt-timestamp-uptime"] }
embassy-futures = { workspace = true }
cortex-m = { workspace = true, features = ["inline-asm", "critical-section-single-core"] }
cortex-m-rt = { workspace = true, features = ["device"] }
defmt = { workspace = true }
defmt-rtt = { workspace = true }
panic-probe = { workspace = true, features = ["print-defmt"] }
fixed = { workspace = true }
heapless = { workspace = true }
libm = { workspace = true }
pio = { workspace = true }
# pio-proc = { workspace = true }
# Profile overrides must live in the workspace root Cargo.toml, not here.
# See /Cargo.toml for release/dev profile settings.