Designing my headphone amp

10th Order Butterworth filter set to 20KHz certainly makes a impact on the spectrum.
Now replace your signal source by two in series at 9.5 and 10.5 kHz, and try this again.

Spoiler: You won't see a difference in IMD components with and without filters, at least where it matters (<20 kHz).

What you were doing is silly. We are doing 10 kHz testing in sim because this way we can get a good idea of distortion performance without having to resort to IMD testing with its added complexity. The latter is what actually matters in real life.

(What you've done actually is common practice in AM radios, keeping the most offending out-of-band distortion products generated by crummy diode detectors away from your ears. In-band IMD is as high as ever, of course, and more advanced detection schemes do make a difference in audio quality.)

Also, minimum timestep needs to be reduced when increasing generator frequency. Which generally is why I tend to be setting generator frequency via a parameter, e.g. "SINE(0 2450m {freq})", with freq defined elsewhere:
Code:
.param freq=10k
.param period=1/freq ncycles=15 startrec=0
.tran 0 {ncycles*period} {startrec*period} {pi/3.14*period/2e3}
.four {freq} 19 {validcycles-1} V(out-amp)
This way, the number of simulated cycles and relative accuracy is always the same.

BTW, FFT N only has an effect on high-frequency extension, and this has tended to be plenty high even at N = 65536.
I've made some updates - this time the system is more balanced and using CCS for current control instead of the cathode resistors.
Better than before but realistically I think you may want to borrow -15 V for your input diff amp (which is what it ultimately is). There just isn't enough voltage headroom to accept a 2 Vrms input signal.

Two issues remain. Firstly the front end needs more gain, so I will look into that
You may need to add an extra VAS. Getting enough open-loop gain from a single cascode tends to be quite tricky.

and secondly I noted that there's a phase difference from the U4 signal from the anode and the cathode. A few uS which corresponds to a 2Khz signal. Not sure if that really matters.
Huh? Of course your anode and cathode will be 180° out of phase! There even is a fairly well-known circuit making use of this - the phase splitter, basically right between the extremes of a cathode follower and a common cathode (inverting) amplifier.

The voltage swing that arrives at the 6AS7 at full volume are:
* -25 to -55V or 30V pk-pk
* -155 to -164V or 9V pk-pk

So I'm still playing. Full volume voltage at the headphones +3.2V to -2.7V (-80mA to 100mA) so there's an imbalance in the LTP due to the low resistance causing a DC offset in the differential signal. This then manifests itself in the output signal.
So you do not consider the substantial negative gain of your SRPP output stage particularly concerning? I sure would. Clearly output impedance is much greater than load impedance, as one would expect from hollow state. OTL tube outputs have always been the domain of high-impedance (300 or even better 600 ohm) headphones, guess why. People in the olden days didn't use transformers because they would have been particularly fond of them, you know?

If I had to involve vacuum bulbs in a headphone amplifier like this, I would go hybrid - high levels in the hollow state section (basically much like now but with a lower-current line buffer), brought down considerably (e.g. by a log volume pot with some extra series resistance on top - involve a transformer if you're feeling fancy) for a "sand"-based buffer or whatnot fed from a more typical +/-12..18 V supply.

Compared to what's possible these days, your power-hungry monstrosity as-is seems quite absurd. (That's around 100 W idle if I'm not mistaken?)
 
I've been trawling for more information about cascaded LTPs and found this interesting blog from 2010: Demystifying the Cascode - diyAudio


Now replace your signal source by two in series at 9.5 and 10.5 kHz, and try this again.

Spoiler: You won't see a difference in IMD components with and without filters, at least where it matters (<20 kHz).

What you were doing is silly. We are doing 10 kHz testing in sim because this way we can get a good idea of distortion performance without having to resort to IMD testing with its added complexity. The latter is what actually matters in real life.

(What you've done actually is common practice in AM radios, keeping the most offending out-of-band distortion products generated by crummy diode detectors away from your ears. In-band IMD is as high as ever, of course, and more advanced detection schemes do make a difference in audio quality.)

Also, minimum timestep needs to be reduced when increasing generator frequency. Which generally is why I tend to be setting generator frequency via a parameter, e.g. "SINE(0 2450m {freq})", with freq defined elsewhere:
Code:
.param freq=10k
.param period=1/freq ncycles=15 startrec=0
.tran 0 {ncycles*period} {startrec*period} {pi/3.14*period/2e3}
.four {freq} 19 {validcycles-1} V(out-amp)
This way, the number of simulated cycles and relative accuracy is always the same.

BTW, FFT N only has an effect on high-frequency extension, and this has tended to be plenty high even at N = 65536.

Better than before but realistically I think you may want to borrow -15 V for your input diff amp (which is what it ultimately is). There just isn't enough voltage headroom to accept a 2 Vrms input signal.


You may need to add an extra VAS. Getting enough open-loop gain from a single cascode tends to be quite tricky.


Huh? Of course your anode and cathode will be 180° out of phase! There even is a fairly well-known circuit making use of this - the phase splitter, basically right between the extremes of a cathode follower and a common cathode (inverting) amplifier.


So you do not consider the substantial negative gain of your SRPP output stage particularly concerning? I sure would. Clearly output impedance is much greater than load impedance, as one would expect from hollow state. OTL tube outputs have always been the domain of high-impedance (300 or even better 600 ohm) headphones, guess why. People in the olden days didn't use transformers because they would have been particularly fond of them, you know?

If I had to involve vacuum bulbs in a headphone amplifier like this, I would go hybrid - high levels in the hollow state section (basically much like now but with a lower-current line buffer), brought down considerably (e.g. by a log volume pot with some extra series resistance on top - involve a transformer if you're feeling fancy) for a "sand"-based buffer or whatnot fed from a more typical +/-12..18 V supply.

Compared to what's possible these days, your power-hungry monstrosity as-is seems quite absurd. (That's around 100 W idle if I'm not mistaken?)

Quite! The wattage I'd already calculated and text isn't the best to convey the tinge of lunacy in the voice in the face of heater wattage.

I'm starting to lean towards a hybrid - both for DAC and the back end (at least initially).

DAC clocking stage (ie the lower valves in the ValveDAC) could be done in solid-state. This removes one of the three valve envelopes and allows both analogue and digital to use the same valves. This simplifies the power by operating at a lower voltage.

This allows, in the configuration for stereo, 4xe88cc and mix/match output stages - solid-state or valve based.

It is possible to drop the output impedance of the output device but getting to an operational device is quite a leap.


PS. I know I'm probably driving people (you) crazy but thank you for your comments as they're extremely useful. The best way to learn for me is to drop in, make a journey, make mistakes and gain feedback.
 
I've been researching more - more the maths and theory. So I hope I have this right..

Input
* I've researched the consumer dbV and professional dBv and their associated voltage level mapping maths, and impedance levels.
* music (ie 60dB) with headroom (ie 20dB) for transients

So if I'm going to have a consumer line in, at -10dB, then normal practice of giving +20dB headroom for transients gives the +10dB, or up to 3.16V RMS or 3.16*sqr(2) = 4.47V peak max input (8.9Vp-p).

I'm assuming the consumer input is into an impedance >10Kohm, preferably in the 1Mohm range? For professional they stage 600ohm, but it seems 10K+ for consumer is better.

This scaling and dB needs to the then carry through the entire amp and into the headphones.

Then when it comes to output we're looking at Vl= Vout(Rl / (Zout + Rl). So reading up and looking at this although 'damping factor' is banded around, the smaller the Zout the better - this means there's less additional voltage needed to drive for the required current.

I note that Chord have 0.03ohms, where as the Schitt have 0.3ohm and 0.03ohm Zout for example.

So currently I'm looking at options for solid state output:
smaller power: 2SC3648 & 2SA1419
larger more valve happy: ZTX557/558 and corresponding 458 etc however a sneeze and your headphones could be toasting by an open fire..

When you look at the 32ohm headphones it's pretty much only needing at 1.15-1.31V with current capacity. Given I'm not attempting to support 83db and needing a 5W amp todo that.

I'd started off with a simple push-pull compound based on the above bit also noted this interesting method:Variations on a headphone Amplifier from Broksie. So if I was to support 300-600ohm headphones, then a second headphone jack is possibly a better option - same with supporting 12.3+V input for professional +26dBv headroom.

So simplifying for an initial idea;
* consumer level input with headroom through amp - Vout depends on output impedance but a 9Vp-p input to an approx 1.1V-1.5V Vout to drive 1V over 32ohms, current capability of 200mA is useful although probably only 5-10mA may actually be used at normal listening levels (still need to work that out with the devices).
* e88cc LTP frontend provides high enough but I will need to think about the voltage levels across the valve if I want to minimise any HPF if I use a capacitor and Rg..
* push pull class A output stage using a simple compound PNP/NPN push pull.
* 20dB of global negative feedback to reduce impedance.

Im still reading up but I'm starting to understand, or appreciate, what people have said so far.
 
Last edited:
So if I look at voltage and current amplification. 104dBV headphones, 32ohm as an example.

The voltage gain from 3.16Vrms (ie +10dB for +20dB headroom) input at 0dB to 1Vrms (ie 104dBV) would be: 20log10(1Vrms / 3.16Vrms) = -10dB voltage (attenuation)

However the current gain from a 0.1mA input into 200mA and 20mA would be (if I have this right):
20log10(0.200/0.0001) = 93dB of current gain for 200mA output.
20log10(0.020/0.0001) = 46dB of current gain for 20mA output.
20log10(0.010/0.0001) = 40dB for 10mA output

Now I've read that music is 60dB range normally, with an additional 20dB for transients = 80dB dynamic range at 0dB.

With a volume control you're realistically looking at a max normal listening of 60-80dB, humans without ear damage, the limit of hearing is say -120-140dB in theory. Valve noise floor, (example measurements in uV signal noise which I which gives 8.9dB noise with their source 390ohms impedance for the e88cc.

I assume that then there's a relationship between tube output noise (8.9dB) for measured voltage and current noise. If we're amplifying current - this is going to be amplified further. That figure was at 5.3mA and 27.6 amplification factor - now I assume that's AC voltage gain as voltage gain is always less than mu (33). Voltage across the tube was 105V.

So this is looking like I should really design in a decent dynamic range within the amp (both voltage and current) although one is limited by the solid state, the other is limited by the valves. Sort of input is expanded then contracted back to the right levels for the headphones. Which is I suspect what people have been pointing out (although mapping the signal to have a minimum compression or expansion, in a linear fashion - reducing intermodulation - seems to be the holy grail).

So what dB dynamic range would people suggest for the internal workings of a headphone amp? I suspect that enough to keep the noise floor around the 140dB range (then leaving just the valve noise in). This would then work for both amplification but also would never show on a pair of headphones (deaf people). For differential I assume that means the phase difference needs to accommodate the dynamic range without going inversed.

A digression....

Also I was thinking last night - as I found a 250V input opamp that output ±12V. It's the sort of device that you could place across the tube (say a 150V version here) that could then be used to cancel out the common noise and output the non-common noise.

If a signal gave noise_P and noise_N phases from the single valve, things like shot noise are more P related, and the signal plus common noise would be present in both P and N signals.
If you use the two inputs and cancel out the P & N signals, including the music signal, it leaves only the signals that are not common to both.

This means we then have the noise, which we could then use to cancel out via a second set of opamps - each one taking a phase output and subtracting the noise output relative to that phase. The signal to noise ratio is then reduced.

This uses the valves own phasing to improve the valve's SNR (ignoring the wider SNR).

A differential amp/output stage would then remove any further common noise, a feedback does this to some extend but not quite in the same way.

Just a thought for something in the longer term enhancements.
 
Last edited:
Currently exploring this scheme.

It looks complex but it's basically a pair of super-followers in a totem form as push-pull with a biasing system that helps to prevent the compliance zone - for this I'm attempting to run both sides in class A.

n1cjSdx.png


It's not correct but the tubes are liking it (high impedance input into the super follower but low output impedance for the amp). I still think there's more room to reduce the output impedance further.
 
Also if my calculations are right, with 3.16-4.5v peak for input (ie 6-9Vp-p) for headroom and output variance to take up transients, the poor old e88cc can't cope. The 6SN7 simply laps that up.

The result is either clipping but also in normal playing it may be fine (ie in the 447mVpk) but a transient will quickly generate harmonics and clipping as the valve quickly runs out of headroom. I could drop the voltage ahead of the valve - I suspect this is why a lot of amps use a volume control ahead of the input tube, relying on a high impedance to minimise the effect the volume control has perhaps? Eitherway I would prefer the phase cancellation 'master volume' as it doesn't mess with the valves too much.

Push pull only cancels common input signals and harmonics generated within (IF perfectly matched). As I'm not using a class B - the wave form is not split within the push pull, in theory there's less symmetrical odd order harmonics at the expense of power and efficiency. So it's not going to solve the issue.

Looking at the ecc82, it would take the input range but I'm still getting considerable distortion.

Also - something I thought would be the case. I need an inverter in the lower side and cross the signals to give a proper push pull.
 
So - like a doofus, I mentally had tubes in my head and not sand. Two cathode followers aren't going to work well unless it's SE.. instead for totem we need a CF and a CE working together..

The issue with my previous approach was that the two duplicate stages - even set to + and - rails, still can only transport current in one direction.. so switching to the more conventional complimentary stages:

9AC58Gb.png


If the bottom stage is not inverted - naturally the signal voltages are doubled but in reality the top and bottom would be working to ensure the difference (+ or -) is then applied to the load resistor.

4EFO5Dn.png


Need to explore the offset but I think that's more todo with the input being DC offset.

Only thing if I connect these two together in LTSpice it goes into DefCon1 when simulating.

EDIT: DefCon1 solved buy adding 0.1 series resistance to the sources - I suspect this is due to the current flow between the two when linked.. Just waiting for the model to confirm that.
EDIT2: Added 10ohm resistors between the supply rails and grounds for each of the sections - now sims fine, with ±1A and ±30V.. I think the magic BJT smoke would have escaped by now!
 
Last edited:
jHoUGo3.png


Differential class-A push pull using only NPN. I'm still working on this and analysing it's potential. It needs a signal inverter given we're not using PNP for the lower driver. It looks more bulky due to the current biasing and the use of two current pairs behind in an X format.

The idea is that two NPN are closer to complimentary than a NPN and PNP. It also keeps the power supply & common mode noise rejection.

Still have a way to go - specifically the coupling cap values result in a rolloff. I may end up switching to FETs instead given the BJTs are current driven and play havoc with tubes.
 
Bailing twine and post-its style modification..
qUYlhN3.png


EDIT: ^^^ there's a mistake that the bias lines are linked by accident.

First run:
x1zT0Mm.png


The reason I originally put in 4 triodes was simply to use up the spare triode from two tubes (given tube cad's version has 3). This has 4 ecc99 tubes and running 100mA.. I suspect we could reduce the number of tubes and still shift current for 32ohm, reducing the voltage to 1V.

With a little tweaking this could be rather good:

Pz04scK.png
 
Last edited:
Currently exploring this, ignore the third valve in the LTP.. Signal is looking sweet and clean

YEVaQeQ.png


Currently outputting ±1.8V and around ±60mA into 32ohm.

Ok - issue is the flow through to top ecc99s.. so there's some current control needed.

Just seeing if I can get to a standard PP design.
 
Last edited:
Ok, I've pretty much come to the conclusion that the SE broksie design will be the best starting point as version 1. Get that up and running first and then worry about push pull or switching valves out.
The only change I may look at is cascoding it as it seems to sim nicer.
 
With this in mind I have started sim-testing the design.

447mV peak input and it's well behaved.
1V peak input and continues to be well behaved
2V peak input and the output starts to lift, where there is more delivery up on the positive lobe of the sine wave.
3.16V peak (ie +10dbV transient in a consumer input) and the positive lobe of the sine wave increases, with about 6V positive and about -2V negative on the output.

Naturally this is at full volume and certainly would be deafening (and probably terminal for the headphones). However it's useful to understand the behaviour.

To me this means that the amplification could be dialled down to reduce the overall volume and help reduce transient problems.

I'm also using IXCP10M90S in the design (a 900V part but offers 300mA handling), this also has been modified to use Brookies' suggestion of using a power supply noise into the base pin to reduce power supply noise.

2UIusPX.png


I hope that a little less Ra on the front end can be used to reduce the voltage swing a little. Just waiting on the sim run to finish for 2V input.