Bass Boost1/SPhat1 enhancement blocks Replaces the 74-parameter ADAU1701 program with the new 224-parameter SigmaStudio export. The new netlist has no mixer -- MX1 is an exclusive selector (DC1) passing through exactly one of three stereo pairs (radio/bluetooth/beep) instead of blending them with independent gains. core::MixSource/MixerState are gone; core::ActiveSource plus IDsp::selectSource() replace applyMixer()/setInputVolume() throughout the driver/service/API stack. AudioProfile.mixer -> activeSource; the HTTP "mixer" JSON object -> a single "active_source" string. DC1 turned out to need a raw 32-bit integer (0/1/2), not the 5.23 fixpoint its compiled TYPE_DC1 macro implies -- confirmed live by writing both encodings and listening for which one actually switched sources. Documented in Adau1701Driver::selectSource() and adau1701::paramSourceIndex(). Bass Boost1 and SPhat1 are real ADI algorithm blocks in this revision, so core::applyEnhancementsToEq() (the old EQ-band-overwrite hack for bass/stereo enhancement) is deleted; IDsp::setBassBoostLevel()/ setStereoSpreadLevel() scale each block's compiled coefficients toward identity/unity instead. Confirmed live: Bass Boost audible on real program content (not a static test tone -- the algorithm is dynamics- based), Stereo Spread audible but subtle. The EQ "locked" flag from 2026-08-24 (enhancements silently overwriting manually-set bands) no longer applies to bands 1-5. A full sweep of all 223 non-DC1 named parameters (writing each back to its own compiled default) completed with zero failures, confirming the whole new address space is reachable. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ADAU1701 SigmaStudio export
SigmaStudio project DigiRadio, IC1 = ADAU1701. Shipped with DigiRadio firmware 0.8.3.
Key files
| File | Role |
|---|---|
DigiRadio_IC_1.h |
Program/param RAM data + default_download_IC_1() |
DigiRadio_IC_1_REG.h |
Control register map (safeload trigger) |
DigiRadio_IC_1_PARAM.h |
Parameter cell indices (ADDR_*) |
DigiRadio_NetList.xml |
Schematic netlist (reference) |
SigmaStudioFW.h |
Safeload / I2C glue API |
Runtime (fw 0.8.3)
- Boot: ESP32 replays the active
DspProgramover I2C viaadau1701::Adau1701Driveron every power-up. Source order: valid blob in thedspflash partition, else the embedded export from this folder (EmbeddedDspProgramSource). - Program update:
POST /api/dsp/programwith aDRADv1 blob (seeSoftware/tools/pack_dsp_program.py). Device reboots and loads the new script on next boot. - Live control: six-band PEQ, input mixer, master volume, stereo/bass
enhancement overlays — safeload via
audio::AudioServiceand REST/api/audio/*; profile persisted in encrypted NVS. - Web UI: Audio tab — 6 EQ sliders + mixer/enhance controls.
I2C address: 7-bit 0x34 (ADDR0=ADDR1=GND). Sample rate: 48 kHz.
Safeload implementation: components/drivers/adau1701/src/SigmaStudioFW.c.
Parameter map: components/drivers/adau1701/include/adau1701/Adau1701ParamMap.hpp.
After re-exporting from SigmaStudio
- Action → Export System Files into this folder (overwrite headers).
- Reconcile new
ADDR_*symbols inAdau1701ParamMap.hppif block names moved. - Rebuild and flash firmware (
idf.py build). - Update manual:
docs/manual/ch-sigmastudio.tex,docs/manual/ch-adau1701.tex.
Do not use SigmaStudio Link Compile Download on DigiRadio — export only; the ESP32 programs the DSP at every power-up.
DRAD v1 blob (flash / HTTP upload)
Layout: magic DRAD, version u16 (=1), write count u16, CRC32 (IEEE over
writes section), then for each write: address u16, length u16, data bytes.
Pack from JSON with Software/tools/pack_dsp_program.py or use
core::serializeDspProgramBlob() in host tests.
Documentation
- Design:
docs/manual/ch-sigmastudio.tex - Driver & API:
docs/manual/ch-adau1701.tex - HTTP:
docs/manual/ch-api.tex(/api/audio/*)