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:
@@ -18,24 +18,27 @@ namespace core {
|
||||
namespace {
|
||||
|
||||
constexpr std::array<std::uint32_t, EqBandIndex::kBandCount> kDefaultCenters{
|
||||
40U, 100U, 250U, 1000U, 4000U, 12000U};
|
||||
20U, 100U, 400U, 1000U, 3000U, 8000U};
|
||||
|
||||
constexpr std::array<float, EqBandIndex::kBandCount> kDefaultQ{
|
||||
1.414F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F};
|
||||
|
||||
[[nodiscard]] std::array<EqBandSettings, EqBandIndex::kBandCount>
|
||||
makeDefaultBands() noexcept
|
||||
{
|
||||
return std::array<EqBandSettings, EqBandIndex::kBandCount>{
|
||||
EqBandSettings{GainDb::zero(), *FrequencyHz::tryFromHz(kDefaultCenters[0]),
|
||||
1.414F},
|
||||
kDefaultQ[0]},
|
||||
EqBandSettings{GainDb::zero(), *FrequencyHz::tryFromHz(kDefaultCenters[1]),
|
||||
1.414F},
|
||||
kDefaultQ[1]},
|
||||
EqBandSettings{GainDb::zero(), *FrequencyHz::tryFromHz(kDefaultCenters[2]),
|
||||
1.414F},
|
||||
kDefaultQ[2]},
|
||||
EqBandSettings{GainDb::zero(), *FrequencyHz::tryFromHz(kDefaultCenters[3]),
|
||||
1.414F},
|
||||
kDefaultQ[3]},
|
||||
EqBandSettings{GainDb::zero(), *FrequencyHz::tryFromHz(kDefaultCenters[4]),
|
||||
1.414F},
|
||||
kDefaultQ[4]},
|
||||
EqBandSettings{GainDb::zero(), *FrequencyHz::tryFromHz(kDefaultCenters[5]),
|
||||
1.414F},
|
||||
kDefaultQ[5]},
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user