Do I really need to get out the soldering-iron again?

16th July 2018

So I had this idea that it would be nice to listen to music when I get home from work everyday, so I put all my ripped music onto my phone, and I bought some good quality over-ear headphones.

new headphones

I found I liked the great sound quality of the headphones, and the way they block atmospheric noise out a bit so I can just hear the music. It's a great experience to listen to some great music for 20 minutes when I get home to relax.

However, I had a problem. When my phone plays certain tracks it makes and explosion of noise when switching songs, or pausing and resuming.

section of code from Android music-player app

It turns out that all music players on Android actually play music using the Android-media-player-service. Apparently this service has some sort of bug. Maybe it doesn't like the metadata in those tracks?

I'd actually noticed this problem before, but these new headphones make it much more of a problem because they're much more sensitive, so the sound explosion is extremely loud relative to the music, scaring the hell out of me. This is not OK because the whole point is for me to be relaxing.

Although Android is Free Software, meaning I can modify the code, it would probably take me months to learn enough about music decoding and the Android-media-player-service to write a fix.

So my first idea was to just get one of those portable CD players. So I bought a medium priced one from Argos.

black portable CD player

But this device has a problem too; it constantly feeds a hissing sound into the headphones. Like the phone's explosion problem, it's made worse by the sensitivity of the headphones, as the hiss has a constant amplitude, which is unaffected by the volume control.

At this point I'm kind-of surprised at how hard it is to just listen to music with headphones. I'm sure I didn't have such bad problems doing this 15 years ago with a cheap MP3 player.

My desktop has great sound quality but I don't want to be sitting at my computer chair while I listen to my music, I do that too much already. So I thought why don't I use my spare old laptop as a music-player?

white netbook

So I put a fresh install of Debian and installed mpd and ncmpc. It works and frankly ncmpc has a much nicer interface than any android music player apps I've tried, or a CD player. But the sound quality on the laptop is just not quite up-to scratch. I think the output buffer on the amplifier is just not very good and struggles with the dynamic load of the transducers.

Right now I'm absolutely astonished at how difficult it appears to be to just listen to music with a good pair of headphones. Is it not 2018? The media is full of talk about preposterously ambitious ideas such as AI and self-driving cars and yet I can't even listen to a fuck-damn music track? O_o

I've done my best to avoid this ... but it looks like I'm gonna have to solve this problem with A FUCKING SOLDERING IRON!

So the circuit is this fucking simple OK?

circuit diagram

OK so now I made it with parts I had lying around and it's fucking primitive:

unenclosed circuit board, plugged into the CD player, my headphones and a battery.

It works completely great! I plug it into my laptop or CD player and it sorts out the sound quality and gets rid of all the hiss.

Sounds fab, what else can I say?

I'd like to point out that you could have built this in the 70s. The NE5532P op-amps I'm using were first made and sold in 1979. Interesting how a 1979-technology audio buffer can best a 2010 laptop or a 2018 CD-player.

Of course I need to make a case and find a more sensible way to power it but right now I'm just glad I've got something that works.

If anyone reads this post I'm sure loads of people will tell me that my problems are all my own making and if only I invested in an iPhone all my problems would go away. Well you know what? APPLE IS A SYMBOL OF PRETENTIOUSNESS AND IGNORANCE - YOU DO NOT EVEN KNOW HOW YOUR PHONE WORKS - I DO NOT HAVE TO PAY A TAX TO APPLE TO LISTEN TO MY MUSIC.

More about the circuit I made

The rest of this article is technical notes on how the circuit works for anyone who's interested or wants to make one.

This circuit is a buffer and it helps by two mechanisms:

  1. It improves sound quality by taking away the hard work of driving the dynamic load of the headphones from the device. It can do this job well because op-amps work great when they have lots of voltage.
  2. It has a gain of 0.1, which means it makes the source quieter. This helps with the problems I've had because these headphones are very sensitive and my devices do not like driving them at the low amplitudes they require.

If you want to make this but don't want the quietening effect, I think it should be fine to just remove the four 10K resistors. This gives you a gain of 1, which means the voltage levels are unchanged.

The design is not really optimal. I think the performance will be better if the 12Ω resistor was lesser, probs just 1Ω. And if you wanted to reduce energy consumption the 200Ω resistors could be increased to maybe 1K.

If you wanted best possible sound you'd use some actual audio op-amps rather than these cheap NE5532P. And buffer the output of the op-amps somehow. But of-course size and cost balloons if you start adding buffers and stuff.

If you want more info on headphone amps check out Tangentsoft (And you thought the 90s web was dead)?

Notes on performance:

I don't have an oscilloscope so I can't do any proper signal analysis on the circuit but frankly if it sounds good; it is good as far as I'm concerned. And as I said it sounds great.

Intrinsic DC-offset is unmeasurable with my equipment (0.0mV according to my voltmeter). Furthermore it divides the DC offset of the source by 10! There is however a small pop when it switches on and off.

Pictures of construction:

Here are the components before assembly. The headphone jacks are scavenged from an old computer:

I arranged all the parts with the prototyping board balanced on a tray. The annoying thing about doing it this way is that you then have to turn it over to solder it, and the parts start falling out!

By holding it on it's side with a handy-andy I was able to get it all soldered up without too many things falling out:

This circuit was easy to make; I didn't even bother to prototype it and yet it worked first time. Though note I have made audio amps before so I knew what I was doing.

Now I just need to finish this off with a proper case and power-supply so it's not a pain-in-the arse to use. Shame Maplin closed because now I have to order parts off the internet and WAIT. I'm beginning to notice a trend in the world-order whereby the shinier Apple's iPhones get the worse everything else gets.

I'm sure one-day everyone will get their music injected direct from their iPhone to their brain by a needle. And anyone who tries to listen to music with their ears will be burned as a heretic for betraying "the Gods" (Apple, Spotify and other tech deities).

Update: Finishing it off!

So I did eventually finish it off with a proper enclosure.

So that it can be repaired if necessary, I gave it a magnetically attached lid. By putting the two pairs of magnets different ways, I was able to make it repel of you try to put the lid on wrong. Quite cool :)

The circuit is held-in by screws and is connected to the power-supply through a mini terminal block so it can be removed for maintenance, or even replacement.

Because it requires >10V, I had to use two PP3 batteries to power it. These battery holders are quite nice, just draws that slide out.

Battery life is only a few hours unfortunately because the circuit draws an enormous idle current of 23mA :o

I've put some nice "Bumpon" rubber feet on the bottom.

I designed a clever little circuit to drive the indicator LED. I wanted an indication of battery level. This is the schematic:

What this does is, when the amp is turned on, lights up for a moment, then turns off and stays off. But the amount of time which it comes on for depends on battery level. If battery is good, it lights up of only a fraction of a second. But as the battery gets low, it stays on for longer and longer. If battery level is unacceptable it lights up forever.

So that's that!