I was using TL074 as well, i've tried both. I tried the MCP6004 for the lower current noise, but I might have misread the datasheet...
It looks like it's got much lower current noise, and the the impedance I'm running at that should dominate over the voltage noise, I think? Either way it doesn't seem to be the main issue.
Agree, I believe it's not the main issue now. Don't look at the input noise specs alone, check CMRR / PSRR and your supply rail too. A noisy supply voltage can spoil your amps performance. 50mV peak-to-peak noise looks pretty hefty for audio stuff, should be way lower, so I believe there's more issues to your circuit than the layout and the choice of OpAmp alone.
With the virtual ground how do you then bias for the codec? The inputs need to be biased to VCOMAD right?
The codec has differential inputs, the typical bias required is VCC/2 when DC coupling is used. So any voltage near enough to VCC/2 can be used to bias the inputs and the OpAmp circuits.
I can try more decoupling on the VCOMAD / VCOMDA rails. They both have 10 uF caps on them then smaller caps near where they are used. The 10 uF are ceramic.
The datasheet suggests to use electrolytics. That may have two reasons:
- In 2008, 10uF ceramics weren't that commonly available, so they just specified electrolytic
- The circuit needs some ESR here, the ESR of a ceramic cap is too small and causes oscillation
Regarding your ouput amplifier circuit: The input impedance is lower than the minimum allowed value regarding the datasheet - this might be an issue, though I don't think of a noise issue, rather limiting the max. amplitude.
There's no CMRR or PSRR specified for the codec, so you want really clean power supply rails - did you check the analog VCC rail for noise, and does this noise correlate with the output noise?
More ideas:
What is the output noise if the output is digitally muted (digital processing outputs a continuous stream of zeros, not the processed input)?
Remove the codec from the PCB, and replace it by bridge wires (codec input to codec output), then check the noise of the analog circuitry alone.