Add SigmaStudio manual chapter and align EQ runtime with export map.

Document the ADAU1701 schematic chain (sigma-chain.jpg), cross-link from
hardware/firmware chapters, skip safeload on fixed high-pass band 0, and
match EqProfile default peaking frequencies to SigmaStudio.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-06 16:55:23 +02:00
co-authored by Cursor
parent ab3651e678
commit 6c350f5c48
10 changed files with 279 additions and 11 deletions
@@ -30,6 +30,7 @@ enum class Adau1701Error {
DownloadFailed,
NotBooted,
SafeloadFailed,
InvalidParameter,
};
} // namespace adau1701
@@ -38,6 +38,8 @@ namespace adau1701 {
namespace {
constexpr char kTag[] = "Adau1701";
constexpr int kI2cPort = 0;
/** Index 0 is the fixed high-pass band (SigmaStudio band 1); not safeloaded. */
constexpr std::uint8_t kFixedHighPassBandIndex = 0U;
} // namespace
Adau1701Driver::Adau1701Driver(Adau1701Pins pins)
@@ -197,6 +199,10 @@ std::expected<void, Adau1701Error> Adau1701Driver::applyMixer(
std::expected<void, Adau1701Error> Adau1701Driver::setEqBand(
core::EqBandIndex band, core::GainDb gain, core::FrequencyHz center, float q)
{
if (band.value() == kFixedHighPassBandIndex) {
return std::unexpected(Adau1701Error::InvalidParameter);
}
if (auto ready = ensureBooted(); !ready) {
return ready;
}
@@ -227,6 +233,9 @@ std::expected<void, Adau1701Error> Adau1701Driver::applyEq(
}
for (std::uint8_t i = 0; i < core::EqBandIndex::kBandCount; ++i) {
if (i == kFixedHighPassBandIndex) {
continue;
}
const auto index = core::EqBandIndex::tryFromIndex(i);
if (!index) {
return std::unexpected(Adau1701Error::SafeloadFailed);
@@ -25,6 +25,8 @@ core::DspError Adau1701Dsp::mapError(Adau1701Error error) noexcept
switch (error) {
case Adau1701Error::NotBooted:
return core::DspError::NotBooted;
case Adau1701Error::InvalidParameter:
return core::DspError::InvalidParameter;
case Adau1701Error::SafeloadFailed:
return core::DspError::SafeloadFailed;
default: