The good news is that all the parts of the PCB worked more or less on the first try. I could program the AVR, read the encoder, output sound, and record sound input.
The bad news is that none of them work as well as they should.
I replaced then expensive power opamp output with a D-class mosfet stage and a filter. At first it did not really work because the gate capacitance of the output fets was too big for my 10k pull-up at 60KHz. Once I put a 1k resistor there, it more or less worked, but the output filter is completely inadequate, leading to lots of switching noise on the output. It also draws a lot of power it seems.
But the biggest issue is the input stage. I completely redesigned that to accommodate and normalise different input levels, which was quite a challenge. To my relief this part also worked on the first try, but for signal levels from 10-100mV.
The microphone clips output more like 1mV. It seems every time I measure the clip microphones, their output is reduced by a factor of ten.
I remember when I started this project, I took an electric and an acoustic guitar, and measured their output to be in the 100mV range. So I figured I could design one product that works with both.
For the first revision of the PCB I discovered that different clip microphones have very different signal levels. I'm doubting my own memory now, but I'm absolutely sure one microphone had much higher output than the other, and quite a bit lower than the electric guitar.
So I designed the second PCB revision with automatic gain control that would work all the way from the 10mV I remember getting from the microphone, up to the 100mV I remember getting from the electric guitar.
Except, now I'm only getting 1mV from both microphones, and according to Wikipedia, some electric guitars go up to 1V! That means if I want to support both types of input, my gain has to adjust by a factor of a thousand, rather than ten.
So things are looking a bit grim here. I'm not sure where to go from here, and I'm really doubting myself now.