I'm looking for a way to digitally modify the gain of an amplifier/DAC/codec in very precise intervals (0.1-0.2dB). My current process involves generating a sine wave with a DAC and then running it through an audio amplifier before playing it on a speaker. I wish to digitally adjust the gain of either the DAC, the amplifier, or some other portion of the circuit.

Practically all of the class A/AB/D audio amplifiers I've looked into have step sizes of 0.5-1dB. After inquiring at Texas Instruments, an employee recommended a codec with miniDSP/Class D amp (TLV320AIC3263), which does meet my requirements (0.1dB/step). While this is probably my best option so far, it's a bit outside of my scope and I feel there may be a simpler solution.

Can you think of any alternative ICs that meet these specs or this type of codec the best approach?

  • 1
    This might be a better fit for dsp.stackexchange.com though check their stance on product recommendations first.
    – Tetsujin
    Commented Sep 22, 2021 at 8:05

2 Answers 2


The easiest, and possibly the most precise would be to adjust the amplitude of the generated sine wave while still in the digital domain.

In analog domain, 0.1 dB change of power corresponds to 2% change of signal amplitude. This seems like precision that can be realistically achieved, but details will depend on your exact requirements.


I assume something like an MCP41010 will not do the trick (a digital linear 10kOhm potentiometer with 256 positions)? It sounds like you want logarithmic performance?

There are circuit hacks making for non-linear performance: you can put ground on the wiper and have one end of the potentiometer increasingly decrease the output (by overpowering the output resistor on an opAmp) while the other end of the potentiometer decreases the negative feedback path performance. With the right dimensions of the respective resistors, you get tapering from one behavior to the other that is sort-of logarithmic in behavior.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.