I have PCBs for this build. The previous PCB had a simple error (inverted servo opamp), I was able to work around it, but I wouldn't want to supply them as was. I haven't built one on the new PCB yet, but I have the components.

A slight complication is that a programmed PIC 16F887 is required, and I normally program it on the board. I don't have a programming socket for TQFP44s.

It's a demanding build; the daughterboard has a tiny clearance, push switches require hand fettling, the pins on the display require to be cut to length, the PSU requires both rails set to within 0.1V lest the batteries over- or under-charge, front and rear panels need drilling and filing and finally a battery-box must be built out of copper-clad board or battery holders bought. Protected lithium cells are needed if battery operation is intended. Cost of components probably exceeds $150, although I haven't figured it out.

All that said, it has outstanding performance, it's portable, it has headphone protection and it has independent channel volume (which I've never needed). It's my go-to amp even in the house because it's self-contained.

I'm considering supplying a short kit with the difficult-to-obtain parts, or I could try to figure out a price for everything, although this would mean quite a big outlay for, say, 10 kits. What do you think is preferable?

Well, certainly the kit would be great for us the builders, but lots of work for you. The short kit with hard to get parts would be more than ok too. If you decide to go for the kit, round up a couple of fellow builders to help assemble and bear the cost. You could count me in for that - either way you go.

It reads the switches, shows the values on the display, updates the Left and Right volume registers in the volume chip and finally goes to sleep when nothing happens for ~20 seconds. Nothing in the way of button presses that is.

If you want to wake the system up, you press the right hand button.

The system has 3 operating modes. You can adjust the left, right or both volumes simultaneously. Righthand button is up, lefthand button is down. Default is both channels locked, the display shows the higher channel.

The display uses the 7-segment units upside down. Consequently 2 red dots are available on either side of the centre digit, these are used to indicate when left or right channel is controlled. The centre button cycles between modes.

This code works. It's a simple continuous loop that polls the switches and responds accordingly. The data words are all assembled explicitly and obviously and communications to the volume control bit-banged out of 3 pins. The display is multiplexed common anode, updated at every button press.

A simple hardware arrangement means that the righthand switch can pull up an unused pin on the uProc which is available for the wake-from-sleep function. Ultimately it proved necessary to embed the sleep instruction in the C code as assembler. If the settings are left for some seconds undisturbed, then they are written to the PIC's EEPROM, to be retrieved when the machine reboots.

I built 3 of these. One, without batteries or case, was taped to the back of a TV as a preamp. The cats knocked everything over and destroyed it. The 2nd killed all its batteries (or the batteries died). The 3rd is still working fine after ~2.5 years, batteries still accept charge.