valdanylchuk/breezy_sound

1.0.0

Latest
uploaded 12 hours ago
breezy_sound: 8-voice synth mixer and PCM stream API used in BreezyBox, a mini shell for esp32

Readme

# breezy_sound

The BreezyBox sound engine: an 8-voice PICO-8-flavored synth mixer plus a
single raw PCM stream, mixed by a background task at 44.1 kHz s16 and fed to
the board's audio output. `snd_core.h` is the API that loadable ELF apps
(soundkeys, moddy, ...) link against by symbol name, so it stays identical
across boards.

The engine is hardware-agnostic. Each firmware project supplies one
`snd_port.c` implementing the small contract in `snd_port.h`:

- `snd_port_desc` — output format (mono/stereo) and the per-speaker limiter ceiling
- `snd_port_init()` — set up the codec/I2S path, leave it stopped
- `snd_port_start()` / `snd_port_stop()` — power the output up/down
- `snd_port_write()` — blocking write of one rendered chunk (this
  back-pressure paces the mixer)

See the reference ports in the BreezyBox repo:
`examples/p4-tanmatsu/main/snd_port.c` (ES8156 codec via badge-bsp, stereo)
and `examples/s3-waveshare/main/snd_port.c` (MAX98357A mono amp, bare I2S).

Remember to export the `snd_*` symbols to ELF apps in your firmware's
customer symbol table (see the examples' `elf_extras.c`).

## License

MIT

Links

Maintainer

  • Valentyn Danylchuk <val@danylchuk.com>
To add this component to your project, run:

idf.py add-dependency "valdanylchuk/breezy_sound^1.0.0"

download archive

Stats

  • Archive size
    Archive size ~ 9.83 KB
  • Downloaded in total
    Downloaded in total 0 times
  • Downloaded this version
    This version: 0 times

Badge

valdanylchuk/breezy_sound version: 1.0.0
|