PMC - Poor Man's Compressor

Started by jonny.reckless, June 23, 2020, 05:12:14 PM

Previous topic - Next topic

jonny.reckless

That Corp VCAs are great but expensive. Vactrols are getting hard to find, are expensive, inconsistent from unit to unit, and have limited control over dynamics timing. JFETs are tricky to use, and require careful selection and trimming. OTAs are noisy (unless you put them in the feedback loop), and even LM13700s are over $2 each at Tayda these days.

As an exercise I set out to see if I could design a high quality guitar compressor with a handful of penny transistors: no op amps, no vactrol or LDR, no JFETs, no VCA, no OTA. The PMC (Poor Man's Compressor) is the result.

It's well known that the transconductance of a long tail pair of bipolar junction transistors is proportional to the current flowing through them. By modulating this current you can vary the transconductance (and hence gain) and thereby build a current controlled amplifier (CCA). This, along with some current mirrors, is basically what you find inside an operational transconductance amplifier (OTA) such as the LM13700.



TR1 and TR2 are a complementary feedback pair (CFP) configured as a unity gain buffer with high input impedance. TR5 and TR6 are the long tail pair transistors which form the heart of the CCA. You can only insert about 100mVpp signal in this configuration before distortion becomes a problem so you have to pad the guitar signal down. TR7, TR8 and TR9 are a Wilson current mirror to correctly bias the output of the LTP and allow for reasonable voltage swing at the output. C9, R10, R21 and C14 form a simple emphasis / de-emphasis circuit to reduce the noise (hiss) of the transconductance stage. I also run the LTP at pretty high current compared with most OTAs which helps reduce noise a bit further. The output of the CCA is buffered by TR15 and TR16. TR13 is a half wave peak detector which turns on when the output voltage starts to rise to around one diode drop. This pulls down the drive to TR12, reducing the current into current mirror transistors TR11 and TR10, reducing the tail current flowing in the LTP and hence lowering the gain. TR3 and TR4 provide voltage smoothing to reduce the effect of noise in the power supply. It will improve performance if you match (TR5, TR6), and (TR8, TR9) at least somewhat. I just used transistors all off the same reel and it worked fine.

Attack time is controlled by R16 and C15. Release time is controlled by R17 and C15. I tweaked the values by ear to get it to sound sweet when played with a strat. I measured the attack time around 10ms and release time just over 200ms which is about right for a guitar compressor in my experience. You could in theory make these adjustable but I doubt it will sound any better than with the stock values. For use with a bass guitar you might want to increase C15 to 22uF or maybe more.

Conceptually the circuit topology is similar to a Dynacomp, but with the CA3080 replaced with discrete transistors, and the side chain only being half wave rectified. The design was certainly inspired by the simplicity and beauty of the Dynacomp.

The circuit is laid out with all components mounted on the PCB, including the pots, sockets, LED and footswitch (it is a true bypass pedal and uses the 3PDT switch from Tayda). This makes it really easy to assemble and test, although you do have to solder little extension wires to get the pots to sit at the right height to mount it in the case. The PCB is designed to fit into a 1590BB case. I ordered 5 boards so I have 4 spare, email me jonny@recklesstechnology.com with your name, address and contact details if you would like one for $5 plus postage. When I run out I could maybe share the Gerbers if someone wants to get more boards made.

Overall I am pretty happy with the sound of this little compressor. It's got plenty of squish, can do the chicken picking thing pretty well, and sounds really clean and quiet.







Further details and bill of materials can be found in my shared Google Drive:
https://drive.google.com/drive/folders/1_N7u3hYvdd_FXDAGF_orDp-hgn8lYr03?usp=sharing

Listen to it here:

rutabaga bob

Hah!  You have more likes than posts!  Congrats!

Like the unit - nice job!  Nice playing, too!

Cheers!
Larry S.
Life is just a series of obstacles preventing you from taking a nap...

"I can't resist a filter" - Kipper

PRR

Clean design.

Why is the point in the center 5.47V instead of 4.06V? 0.28mA unbalance? TR15 base current and meter-loading would pull the other way. Does TR6 want a 100r base resistor to match TR5? Or just stray tolerances?

Does Vdd need that much filtering? Looks like only the R13 leg does. R4 is filtered. All other paths are through collectors.
  • SUPPORTER

jonny.reckless

#3
Quote from: PRR on June 23, 2020, 06:26:11 PM
Why is the point in the center 5.47V instead of 4.06V? 0.28mA unbalance?
Probably due to a mismatch between TR5 and TR6. I didn't bother to match them, I just pulled 2 off the reel. Tail current is 7mA (sustain was at full) so a 0.28mA imbalance is plausible. It didn't seem to affect performance.

Eb7+9

#4
You sure you ota is drawn right Jonny ? TR7 ain't part of no Wilson mirror here ...

jonny.reckless

Quote from: Eb7+9 on June 23, 2020, 09:53:38 PM
You sure you ota is drawn right Jonny ? TR7 ain't part of no Wilson mirror here ...
100% certain.


jonny.reckless

#7
https://en.wikipedia.org/wiki/Wilson_current_mirror
You can make one with 4 transistors but the "regular" Wilson mirror has 3.
Obviously in this circuit it's done with PNP rather than NPN.

Eb7+9

I automatically go for the improved version everytime I guess ...

good sounding design ... what's the headroom limit on your circuit (with comp off) ?!

jonny.reckless

#9
I can play with a Seymour Duncan JB bridge pickup which has 16k coil resistance and puts out about 2.5Vpp when you hit the strings hard (think Malcolm Young), and it's just on the edge of breakup.

Eb7+9

#10
good stuff ... me likes the way you combine bringing ota input signal low and dropping common mode bias to two diode drops above ground to give ota output some swing room

11-90-an

Would it be possible to substitute the bc546s and bc556s with bc547s and bc557s?
flip flop flip flop flip

PRR

#12
I can never tell Wilson from Widlar from Winona, but as you guys already sorted, this is the Original Wilson.

I wondered if it needed 2 devices for economy or 4 for perfection and realized it isn't worth the brain-pain.

  • SUPPORTER

jonny.reckless

Quote from: 11-90-an on June 24, 2020, 12:06:30 AM
Would it be possible to substitute the bc546s and bc556s with bc547s and bc557s?
Yes, any similar low noise transistors like that should be fine. BC549 and BC559 might actually be a bit quieter than the ones I used. Just make sure they're from the same manufacturer, and preferably the same batch (or match them yourself).

Eb7+9

so I'll just ask out of curiosity ... why a Wilson mirror here anyway ??!

Rob Strand

#15
QuoteOverall I am pretty happy with the sound of this little compressor. It's got plenty of squish, can do the chicken picking thing pretty well, and sounds really clean and quiet.
You did a nice job on that.   Very bold step doing a DIY OTA with off the shelf BJTs.
Send:     . .- .-. - .... / - --- / --. --- .-. -
According to the water analogy of electricity, transistor leakage is caused by holes.

Ben N

#16
Very nice, Jonny! You are really plumbing the possibilities in compression. (Funny you mention THAT--I am in the final stages of throwing together a +-12v Carl Martin-alike using one of the last THAT4301 DIP packages on the planet and a pcb I found on a European site. But I don't expect it to replace yours, which I got working again and remains my fave for Strat.) Wondering if perhaps the OG synth designers did it your way, I stumbled across the following discrete CA3080 article which folks may find of interest: https://www.elektormagazine.com/labs/discrete-otas-for-synth-diy-elektor-formant-upgrades

Quote from: rutabaga bob on June 23, 2020, 05:25:02 PM
Hah!  You have more likes than posts!
Aaaand one.
  • SUPPORTER

Rob Strand

#17
QuoteProbably due to a mismatch between TR5 and TR6. I didn't bother to match them, I just pulled 2 off the reel. Tail current is 7mA (sustain was at full) so a 0.28mA imbalance is plausible. It didn't seem to affect performance.

That could be due to the unequal base impedances on TR5 and TR6.    Perhaps adding a 100R in series with the base of TR6 would make things balance better.

(I'm assuming the test voltages are with the compression pot set to minimum resistance, the offset will reduce when the pot  is opened up.)


Send:     . .- .-. - .... / - --- / --. --- .-. -
According to the water analogy of electricity, transistor leakage is caused by holes.

jonny.reckless

#18
Quote from: Rob Strand on June 24, 2020, 03:53:51 AM
QuoteProbably due to a mismatch between TR5 and TR6. I didn't bother to match them, I just pulled 2 off the reel. Tail current is 7mA (sustain was at full) so a 0.28mA imbalance is plausible. It didn't seem to affect performance.
That could be due to the unequal base impedances on TR5 and TR6.    Perhaps adding a 100R in series with the base of TR6 would make things balance better.
(I'm assuming the test voltages are with the compression pot set to minimum resistance, the offset will reduce when the pot  is opened up.)
Yes I measured it with the sustain at maximum, i.e. zero ohms across RV1 and about 7mA flowing in the tail of the LTP. It gets better with less sustain.
If you think about the offset I am seeing, the bias point is higher than expected, adding 100 ohms in series with the base of TR6 would actually make it slightly worse in this case since it will make TR6 turn off a tiny bit more. It would also increase the noise floor slightly - this topology is very sensitive to base resistance, I find even 100 ohms is barely acceptable.
I think it's more likely small mismatch in VBE of the LTP transistors. In any case it doesn't matter much.  :icon_biggrin:

jonny.reckless

#19
Quote from: Eb7+9 on June 24, 2020, 02:01:01 AM
so I'll just ask out of curiosity ... why a Wilson mirror here anyway ??!
I found that with a regular 2 transistor current mirror the output impedance wasn't high enough, so the bias point moved around with input signal level, causing control breakthrough and audible thumping. When I upgraded to a 3 transistor Wilson mirror it fixed this issue. I didn't try the 4 transistor mirror. Maybe I should have.  :icon_cool: