THAT (was Fet) Compressors

GroupDIY Audio Forum

Help Support GroupDIY Audio Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
  Hi, I'm here to add mess to the soup. I'd like to mention a few already done examples that can be interesting for the topic.

  The well known API 525 compresor has an interesting behavior, something like changing the time constant depending on the frequency content of the signal. Heavy LF content signals makes the compressor slower. It has a 600Hz LPF that charges a cap. When the cap isn't charged the selected resistors act as expected, with a second time constant, as many auto release circuits. When the cap is charged Q4 starts to open and increases the release time (up to twice the slowest selectable time in extreme cases)

  Symetrix has a few interesting things, I do have a 501 limiter  compressor and I really like it. It has a very nice auto timing option, faster attack as the signal rise is greater, (2 diodes in parallel with 1M resistor charging the caps) and a dual time constant release. For the manual setting it uses an emiter follower charging the release cap from the attack cap, getting independent time constants with just a few beans. 8 parts each circuit, plus the pots for the manual settings. Nothing interesting in the limiter side, charges as fast as it cans (opamp, 1N4148 charging a 39nF cap) and discharges with 0.5s time constant. Links to the schemes:
http://www.symetrix.co/kb/501_sch.pdf

  The 301 low distortion compressor also has an interesting sidechain, never used one but I'd like to give it a try. It has an integrator, long story short, inhibiting or slugs the release for a fraction of a second after a big attack edge. The discharge mechanism sims odd but is a current source proportional to the voltage (a very expensive resistor) that is there to simulate a resistor that can be changed depending on the previous dynamic history. Scheme:
http://www.symetrixaudio.com/kb/301_sch.pdf

JS
 
Wow thanks JS! Now its gonna take me 10 years to settle on something :eek:...I'll give JR's brain a full scoop out before I cut and paste with these new findings.  Boy Symetrix sure has pretty schematics. is that a discrete(ish) RMS detector on the front of the 501 sidechain? On the 301 they actually have a THAT RMS detector.

edit: that 301 circuit looks really cool and not to hard to punch up. I'll let you know how it sounds if I try it.
 
bluebird said:
Wow thanks JS! Now its gonna take me 10 years to settle on something :eek:...I'll give JR's brain a full scoop out before I cut and paste with these new findings.  Boy Symetrix sure has pretty schematics. is that a discrete(ish) RMS detector on the front of the 501 sidechain?
No it's actually the rectifier and log voltage conversion... VCAs require a log control voltage. Back in the day discrete is how we had to do before there were cheap off the shelf ICs. (I used lots of cheap transistor arrays to get reasonably similar discrete devices with good thermal tracking).

To make a RMS conversion (I've done that before using discrete too), you need a few more parts to effect the "square root of the integral of X^2". In the log domain to square a voltage you double it so 2x log X, integrate that,  then square root it (requires another 2 transistor base-emitter junctions). You can google this if you want, well known in the art but TMI for this thread IMO.

THAT corp calls their detector RMS with the square root operation effectively occurring in the gain law of the VCA. Divide by 2 is same as square root in log domain (sort of.... you can find their explanation on the THAT website). 
On the 301 they actually have a THAT RMS detector.
2252 obsolete now
edit: that 301 circuit looks really cool and not to hard to punch up. I'll let you know how it sounds if I try it.
It will probably sound like a 301...

JR
 
bluebird said:
Wow thanks JS! Now its gonna take me 10 years to settle on something :eek:...I'll give JR's brain a full scoop out before I cut and paste with these new findings.  Boy Symetrix sure has pretty schematics. is that a discrete(ish) RMS detector on the front of the 501 sidechain? On the 301 they actually have a THAT RMS detector.

edit: that 301 circuit looks really cool and not to hard to punch up. I'll let you know how it sounds if I try it.

  You're welcome! Here's why you will end with a digital sidechain so a few lines of code can change things instead of having to change components or even the PCB...

JS
 
JohnRoberts said:
It will probably sound like a 301...

Yes And I realized I could probably just get one off of ebay for $100... But whats the fun in that?

Punched up the new circuit last night and that's about it. I'll be able to mess with it tomorrow, will report back.

joaquins said:
  You're welcome! Here's why you will end with a digital sidechain so a few lines of code can change things instead of having to change components or even the PCB...

  ??? :eek: :'(
 
joaquins said:
  You're welcome! Here's why you will end with a digital sidechain so a few lines of code can change things instead of having to change components or even the PCB...

JS
I have hinted that digital domain processing for entire path provides the extremely valuable look ahead delay so gain changes can be anticipated and ramped slowly.

WRT digital controlled analog, as in digital side chain controlling analog audio path, I pursued this as far as a working prototype for one such hybrid design to make an automatic mixer for an  analog mixer company... I prototyped both VCA and DPOT for the gain control and the DPOT worked so well I never bothered to fire up the VCAs.  I had the prototype working well enough to justify starting a production prototype, but unfortunately in the meantime the bottom fell out of the analog mixer business and the project got shelved.

What I learned was that an inexpensive 16b processor with built in 12B A/D was able to monitor 6 or more analog streams, and compute the gain sharing algorithms for good behaving automatic mixing... In addition to this, the one microprocessor serviced  all front panel pots and switches, front panel LEDs, and rear channel tallies and control ports. If i could crunch gain changes for 6-8 audio stems, a simple stereo processor would be easy peasy.... 

The other thing I realized is I could hang a decent quality codec on this platform and have a kick ass digital automatic mixer. Unfortunately this was never going to happen at the analog mixer company who was struggling with me dragging them kicking and screaming, into using a digital side chain ( albeit ultimately unsuccessfully).

Operating the side chain in the digital domain would be hugely powerful. You could operate the gain control in pretty much any way that you could imagine... That said the HUGE benefit would come from look ahead.
=======
One product idea that I have been kicking around for decades was my swiss army knife dynamics engine, a programmable comp/limiter that could be programmed to mimic classic dynamics products as starting points, and then tweaked by the user to make the classics even better for each application. I have been kicking this idea around so long that my original product brief saved the programmed settings to the tape leader using FSK....  The problem then was how to come up with a usable human interface that provided that much control (tens of variables) without being too complex to use.  Obviously for a modern implementation the control interface needs to be a smart device, but the next step after that is to just make it a completely digital plug-in and forget about hardware entirely.

----------
I now return you to the already established thread...  the design brief for this puppy is to be very slow for lowest distortion (all gain changes cause distortion) when the signal is slowly changing, which is also when distortion is most audible. Then the proposed circuit will have faster release and even faster attack for large level changes to reduce the time the gain change is out of step with the level changes. Lastly a separate even faster attack/release capability to control brief transients without introducing audible artifacts or unwanted persisting modulations of the slower changing gain control. 

Good luck and have fun...

JR
 
JohnRoberts said:
I now return you to the already established thread...  the design brief for this puppy is to be very slow for lowest distortion (all gain changes cause distortion) when the signal is slowly changing, which is also when distortion is most audible. Then the proposed circuit will have faster release and even faster attack for large level changes to reduce the time the gain change is out of step with the level changes. Lastly a separate even faster attack/release capability to control brief transients without introducing audible artifacts or unwanted persisting modulations of the slower changing gain control. 

Yes thats exactly what I'm going for and the simplicity of the circuit is what I need, I'm hoping to make some headway today.

I did have to google around a bit on the digital sidechain. I found a neat project an engineering student did for his thesis. I then realized it would be a whole new direction that I may explore before I die but not now. it used a Analog Devices ADuC7024 ARM microcontroller and he programed it in C. He posted schematics but not the source code. Even if he did I wouldn't know where to begin.

https://sites.google.com/site/acevportfolio/dsp-valve-compressor

JohnRoberts said:
Obviously for a modern implementation the control interface needs to be a smart device, but the next step after that is to just make it a completely digital plug-in and forget about hardware entirely.

Yes but plugins are a dime a dozen and a digitally controlled analog compressor is not. And it can't be cloned. I know your busy with your drum tuners, but I think there would be a market for something like that. Especially if you could attach the word "tube" to it. You could do something like the Summit TLA-100a compressors that use a VCA but has a one tube unity gain cathode follower in the signal path...And its called a "tube" compressor. Lol.
 
bluebird said:
Yes thats exactly what I'm going for and the simplicity of the circuit is what I need, I'm hoping to make some headway today.

I did have to google around a bit on the digital sidechain. I found a neat project an engineering student did for his thesis. I then realized it would be a whole new direction that I may explore before I die but not now. it used a Analog Devices ADuC7024 ARM microcontroller and he programed it in C. He posted schematics but not the source code. Even if he did I wouldn't know where to begin.

https://sites.google.com/site/acevportfolio/dsp-valve-compressor

Yes but plugins are a dime a dozen and a digitally controlled analog compressor is not. And it can't be cloned. I know your busy with your drum tuners, but I think there would be a market for something like that. Especially if you could attach the word "tube" to it. You could do something like the Summit TLA-100a compressors that use a VCA but has a one tube unity gain cathode follower in the signal path...And its called a "tube" compressor. Lol.
A gimmick on top of a niche product.... no thank you.

I promised myself years ago, no decades ago to never make a hardware product that could be replaced by some cheap digital software that can be duplicated and therefore is not valued.  For years I have thought about making a modern digital version of my old TS-1 that I could make better, and for a fraction of the price, but yawn so what, maybe I should make a TS-1 smart phone app?  ::)

My drum tuner is in fact hardware based that absolutely can not be done with a smart phone... In fact i can't even make it work with smaller/less  hardware. I tried to do exactly that between the first and second generation hardware platform development.  That said drummers happily buy smaller, cheaper gadgets that don't work very well and I am unwilling to wrestle with them for their scarce resources.

JR

PS: I developed many lines of code for that digital automatic mixer side chain. I am almost tempted to make a really cheap (think one $2 processor) automatic mixer... the inputs would only be 12b resolution but since they are only used for the top several dB of the dynamic range it might not sound that bad,,, but again I do not need more new projects.  In fact they are starting to include  automatic mixers for free inside cheap digital mixers.  Remember software has very little unit value after NRE is covered.
 
Well, I got it working and your theory is right on. I was using a Shawn Colvin track to test. Female vocal with sparse instrumentation and a nice drum track. It handles transients quickly and the long vocal notes slowly. I'm watching the control voltage on the scope bounce quick and shallow for the drum transients and dive down deep for the vocal. I'm pretty excited. I'll be spending a lot of time tweaking values as the action is a little rough but this is awesome.

Can you explain in a bit more detail what the pad on the front of the first op amp does?  I don't know much about SVF's

Thanks John, I feel like a giggling kid in a candy store. ;D
 
bluebird said:
That makes total sense,  and made me sit in front of screen staring for a moment. But the rise and fall of voltage at 20k isn't that fast compared to electrons traveling through silicon.
You misunderstand my point. I'm not talking about timing, I'm talking about amplitude.
If you want a feedback detector to detect overs, you must somewhat let them through. That's why a feedback architecture cannot be a perfect limiter with infinity ratio. they are all compressors with 10-20:1 ratio.
Only feedforward architecture can provide real limiting, i.e.  zero delta Vout for whatever delta Vin.

BTW, propagation of signal has nothing to do with electron speed.
 
abbey road d enfer said:
You misunderstand my point. I'm not talking about timing, I'm talking about amplitude.
If you want a feedback detector to detect overs, you must somewhat let them through. That's why a feedback architecture cannot be a perfect limiter with infinity ratio. they are all compressors with 10-20:1 ratio.
Only feedforward architecture can provide real limiting, i.e.  zero delta Vout for whatever delta Vin.

BTW, propagation of signal has nothing to do with electron speed.

Thanks abbey I'm a little thick sometimes. Thanks for explaining, I see what your saying.

I'm doing this in a feed forward configuration and it doesn't sound "loose" like the other circuits I was experimenting with. So I suppose the sound is attributed to the sidechain circuitry more than the feed forward or feedback topology.
Although Marshall Leach said something in his limiter paper about feed forward being unpredictable because it can't sample the output. Its on the first page:
https://leachlegacy.ece.gatech.edu/papers/limiter.pdf 

SO regarding the circuit, I messed around with it quite a bit and got it to a good place but it seems to let peaks slip through pretty often. It does hold the line well on average when pushing into it, but it slips on certain kinds of transients. A "smart" clipper of some kind to just catch the the transients would be cool.

Also I scaled down the overall feedback resistor... Picture of the spaghetti attached...



 

Attachments

  • mess.jpg
    mess.jpg
    178.3 KB · Views: 53
bluebird said:
Thanks abbey I'm a little thick sometimes. Thanks for explaining, I see what your saying.

I'm doing this in a feed forward configuration and it doesn't sound "loose" like the other circuits I was experimenting with. So I suppose the sound is attributed to the sidechain circuitry more than the feed forward or feedback topology.
I would say both; the control law of the gain cell is a paramount parameter in the way it reacts to the side-chain's timing and scaling.


Although Marshall Leach said something in his limiter paper about feed forward being unpredictable because it can't sample the output. Its on the first page:
That is true in the context of the variability of "traditional" gain cells, FET, opto, even "vari-MU". I would say diode strings and OTA's only are exempt of this uncontrolled behaviour.


SO regarding the circuit, I messed around with it quite a bit and got it to a good place but it seems to let peaks slip through pretty often. It does hold the line well on average when pushing into it, but it slips on certain kinds of transients.
In order to catch the most embarassing transients, the attack time of the limiter should be around a few microseconds (significantly shorter than the rise-time of the audio path). This is hard to do, you need to charge the timing capacitor with large current from a very low impedance, with all the associated possible clicks due to ground current circulation, and making the loop stable, in FB mode is acrobatic.
 
bluebird said:
Well, I got it working and your theory is right on. I was using a Shawn Colvin track to test. Female vocal with sparse instrumentation and a nice drum track. It handles transients quickly and the long vocal notes slowly. I'm watching the control voltage on the scope bounce quick and shallow for the drum transients and dive down deep for the vocal. I'm pretty excited. I'll be spending a lot of time tweaking values as the action is a little rough but this is awesome.
good job..
Can you explain in a bit more detail what the pad on the front of the first op amp does?  I don't know much about SVF's
The one pole SVF is a complicated way to make an RC.  Using a grounded integrator second stage, and first stage with voltage feedback allows us to use diode steering to select different up/down time constants, since the grounded integrator stage makes the up/down current referenced to ground.

The pad between the first stage and second stage of the SVF is to scale the working voltage range of the up/down inner loop voltages to be sensible wrt the steering diode junction voltage thresholds (roughly 0.6V).

The input and feedback resistors around the first stage command unity voltage gain input to output so  X mV coming from the THAT rectifier will also show up as X mV after the smoothing (just smoother).  However the C and the Rs feeding the integrator in the inner loop can be scaled separately from the input/output voltage.

It has been years since I've messed with a THAT  rectifier but I suspect the voltages and voltage changes will be small relative to steering diode drops. The pad at the output feeding the feedback resistor will scale up the voltage swing at that node. I would set that pad by looking at it with a scope...  Note: the integrator cap only cares about current, so we can scale up the inner loop voltage swing while scaling up the resistor values a like amount to deliver the same net current, while helping the steering diodes have enough threshold voltage to easily discriminate between up/down.

For steady state constant sound (like a sine wave) we want the ripple at that inner loop node to be <0.6V so both up and down diodes are cut off delivering the slowest time constant. Alternately when the music is not steady state but changing we want the voltage swing at the node to be decisively > +/- 0.6V so the steering diodes can steer with different up/down time constants.

Finally or lastly the transient fast attack/fast release threshold (in the later schematic I sent) is not a level threshold per se, but a "how far does it have to go" threshold. The further away from where it needs to go up (to reduce gain) , the larger the negative voltage at the output of first op amp telling the integrator to slew up.  The diode and pull up resistor driving the output side of the larger slow integrator cap establishes a max current available to charge that large cap up. (The value of that R and +V connected to sets that max current).  When the integrator is being told to still go even faster the big cap is left to slew at that fixed max current and the small cap provides the integrator loop feedback. At 1/10th the capacitance it will respond 10x faster so it will quickly reduce the gain, and just as quickly give it back.  When the imbalance goes away, the slower big cap regains loop control.     
Thanks John, I feel like a giggling kid in a candy store. ;D
Good, but there is still work to do, optimizing everything.... Lots of interactions that need to play nice together and i pulled starting values from my butt. 

When working properly it should not sound like it is doing much of anything at all.  8)

JR
 
abbey road d enfer said:
I would say both; the control law of the gain cell is a paramount parameter in the way it reacts to the side-chain's timing and scaling.

That is true in the context of the variability of "traditional" gain cells, FET, opto, even "vari-MU". I would say diode strings and OTA's only are exempt of this uncontrolled behaviour.
exactly... old school gain control (and rectification) was less predictable, so feedback topology allowed those variable to be inside the feedback loop working against an output threshold voltage. Only very accurate and predictable rectification and gain control, like we take for granted now, supports feed-forward topology.  OTAs are reasonably accurate but respond linearly to control current so less convenient for precise dB ratio control.
In order to catch the most embarassing transients, the attack time of the limiter should be around a few microseconds (significantly shorter than the rise-time of the audio path). This is hard to do, you need to charge the timing capacitor with large current from a very low impedance, with all the associated possible clicks due to ground current circulation, and making the loop stable, in FB mode is acrobatic.
That is only one of the problems, available gain cells historically had control voltage feedthrough issues so rapid gain changes caused audible "step" artifacts. As I have stated previously ALL gain changes even without control feedthrough cause distortion, as even the normal gain control modulations multiply the passed audio (altering it).  As long as the gain modulations are gentle (slow moving), or very brief, they are not very objectionable.

JR

PS: In a raise the bridge or lower the water trade off, I made my latter fast attack/fast release circuit quicker by steering control momentarily to a smaller cap (1/10th), so currents are not crazy, (or dumped into grounds).
 
I'm not sure I'm getting above the 0.6v on the pulse state. The steady state ripple looks good at around 35mV. The pulsed signal gen is only getting to about 200mV or so As seen in the scope pictures. The thick line on the top spike is the 35mV ripple and the leading edge gets sharper with faster release. The small bottom spike changes with attack resistor change.
The values I have with this picture is .047uf for large .022uF for small, 10K attack and 470K release.

I also have the (THAT) rectifier circuit after the RMS that is darkened out in the first picture I posted in the circuit now ahead of your circuit to have a controllable threshold. If I juice the threshold I can get that pulse state spike above 600mV but the signal is super attenuated at that point, maybe 8db down.
 

Attachments

  • SteadyPulse1.jpg
    SteadyPulse1.jpg
    53.4 KB · Views: 30
Just to be clear, I am talking about the voltage waveform at the output of the first op amp of my two op amp SVF basically inside the up/down inner loop.

Increasing the pad attenuation, will increase this voltage a like amount...  If you are measuring 35mV for steady state we could go  10x  that and still not turn on the steering diodes hard, while 10x 200mV would engage them and that is what we want, to conduct for faster up/down. 

As we scale up the attenuation and voltage swing in this inner loop we need to scale up the attack/release/and steady state resistors too (or make the caps bigger) to maintain same time constants. Film caps get bigger and more expensive past 0.1uF but it's all scaleable either way.

These are all at some arbitrary starting values now so the actual attack and release times need to be dialed in to be something useful.

With repeating tone bursts that also have steady lower level tones playing underneath, you can see the attack time and release time. Ideally they are reasonably quick, while still being very low distortion during the steady portions of burst on/off... The steering diodes should only be conducting while hard attacking or hard releasing. 

If it has the fast attack circuit, you may see some apparent distortion on the first cycle(s) of a large enough tone burst, but that will recover pretty quickly and normal attack envelope will take over. This should still sound ok.

Listening to tone bursts for bad juju can be a little tricky until you train yourself what to listen for, but you can familiarize yourself with what clean bursts should sound like by listening to dry unprocessed tone bursts. The better the processing the more they will sound like dry tone bursts.

I hope this makes sense...

JR
 
Yes that makes sense. Those scope pictures are from the output of the first opamp where the diodes meet.
I'll continue to massage it according to what you just said.

Edit:
I reverted back to the original cap sizes and just adjusted the attack and release resistors and the current limiting resistor. I upped it to around 4M and it seemed to fix a slow sounding recover when a loud steady state sound would duck the limiter.

I'm really happy with the performance of this circuit. I'm thinking about a clipper now who's threshold can be set with relative to the limiter threshold to just catch those few transients that slip through the limiter. I'm going to play with a THAT circuit that the AD converter I use employs and I like the sound of.
 

Attachments

  • Clipper.jpg
    Clipper.jpg
    29.2 KB · Views: 52
bluebird said:
Yes that makes sense. Those scope pictures are from the output of the first opamp where the diodes meet.
I'll continue to massage it according to what you just said.

Edit:
I reverted back to the original cap sizes and just adjusted the attack and release resistors and the current limiting resistor. I upped it to around 4M and it seemed to fix a slow sounding recover when a loud steady state sound would duck the limiter.

I'm really happy with the performance of this circuit. I'm thinking about a clipper now who's threshold can be set with relative to the limiter threshold to just catch those few transients that slip through the limiter. I'm going to play with a THAT circuit that the AD converter I use employs and I like the sound of.
I am not a huge fan of hard clippers (perhaps for broadcast transmitters). Most modern A/D convertors also handle overload with clean hard clipping (old convertors didn't).

Hidden in the middle of the P-522 schematic I shared earlier, is a soft clipper.  Imagine a modest sized resistor in series with the two emitters in your hard clipper schematic. For signals above the threshold where conduction occurs the NF has the new resistor in parallel with the NF for reduced gain (but not hard clipping).  The cheaper simpler version I used, was a 2 resistor voltage divider with anti-parallel diodes from the junction of the pad to the op amp - input.  When the divided down signal is larger than +/- 0.6V the diodes conduct and gain is reduced.

In a NR compandor during quiet passages the compressor can be sitting wide open with a few tens of dB gain. A sudden transient can cause overshoot while the gain ramps down without some form of management. A normal music dynamics processor should not see that large of a gain step.

Did you try my later fast attack circuit? One important difference my fast attack is responsive to step size or how far the control voltage needs to go. An output level referenced clipper (hard or soft) is purely output level dependent.

JR
 
JohnRoberts said:
Did you try my later fast attack circuit? One important difference my fast attack is responsive to step size or how far the control voltage needs to go. An output level referenced clipper (hard or soft) is purely output level dependent.

Yes the last circuit you gave me is the one I'm using. It is really good at catching most transients. I'm looking at a very sensitive plugin meter inside of protools to monitor the peaks. You would not see whats slipping through on a regular VU. And the overs aren't annoyingly audible or anything, but they would clip an A/D converter.

I've played with quite a few clipping circuits getting here. I too like the softer clipping sound but the softer you clip the less defined your limit line is. Using LED's instead of diodes always sounded better but they didn't hold the line as well.

I'm hoping to be able to sample the voltage from one of the caps in your circuit to set the clipper threshold.  Or perhaps the comparator I'll be using for the limit LED indicator will also provide the clipping threshold voltage.

I have to just say your circuit is very smart and is very transparent. You can of course hear it more as you dig into it more, but its  exactly what I was looking for. Can't thank you enough! I did try the Symetrix 301 circuit and it was very finicky. Probably good for voice or solo instruments but not program. Your circuit kicked its butt with way less components.
 
John, I have been playing with this circuit since you put it in my lap, almost everyday after work.  I'm very familiar with the workings of it now. The breadboard (with power supply) is now known in my family as "the box"... Honey are you working on the "the box" again tonight? ;D

Wondering if there is any way to make it differentiate the steady state and transients more aggressively.  The transients dont seem to have the depth to really charge the smaller cap in a way that it is different from the larger cap. Its almost like the two caps are just in parallel and pinching the current off in the supply diode to the larger cap works perfectly but sounds like its just making the total parallel capacitance smaller.

Is it possible that the state variable filter is not steep enough? I actually tried a typical three op amp filter which is supposed to have a 12db per octave slope but adding the extra cap/op amp just made things all the more complicated to tune.

on reason I think it isn't as aggressive as I would like it to be, is because of the RMS detector is just too slow.  Even with a .01uF cap on it. I tried a regular precision rectifier and I finally heard the transients being caught, but that muddled up the whole workings of the state variable filter.

I also tried the zener approach in the previous schematic to the final one you made.  But again there wasn't enough voltage in the transients to trigger a 3.3v zener.

I had to reverse the steering diodes for attack and release because I have the half wave rectifier (that is in most of the THAT design notes) after the RMS detector. I needed it to have a threshold control.

Any more ideas?

 

Latest posts

Back
Top