Thursday, May 13, 2010

Clipping in Ableton Live


I came across this on the ableton forums when researching about clipping. I have been working on my master mixes recently, and this seemed very useful.

Original Link Here - http://forum.ableton.com/viewtopic.php?f=4&t=124729&start=0


Those not interested in the "Ableton sounds like sh!t when you push the channels over 0dB" debate should stop reading now. Wink

I have always sat squarely in the "no it doesn't" camp. Coming from a DSP background, I see no reason why running channels of a DAW should, within reason ("reason" being sensible levels of headroom, no amplitude-dependent plugins and FX, etc), lead to any kind of signal degradation when you're dealing with floating point numbers. But I see no point in arguing about it ad infinitum when it's easy enough to test, and fairly rigorously at that. So that's what I did.

You can download the project, including all samples, here:

http://www.sendspace.com/file/4bygeb (1.3 mb)

To run the test, just click the "PLAY ME" master clip in the top right hand corner.

You'll see that the project is made up of pairs of tracks. Each pair is an individual test, containing two tracks that are identical but for the gain staging used. In each case, the second track is the "control", ie, run with no clipping. This is what's going on with the first track:

- In the RAW AUDIO test, the test track is boosted to +35dB, clipping the TRACK (as you can see on the meter) by a hell of a lot, then attenuated by -35dB in the group channel to which it is routed. I routed the channel to a group so that you could see that the individual track is running way into the red.

- In the OPERATOR test, Operator is used to play a sine wave. In the test track, the output gain is +6dB and the oscillator gain is 0dB, so the output is well above zero dB. A Utility insert then attenuates the signal to the same level as the control.

- In the SIMPLER test, the same exercise is performed, except with the Simpler under test running at +30 dB.

- In the FX test, the sound source (same as the Simpler test) is passed through an EQ Eight (with a very high, very resonant peak), and EQ Three (with the Mid turned up) and a Filter Delay. The test channel runs the Simpler at +30 dB and attenuates it by -30dB after the FX chain, the control channel simply runs the Simpler at 0dB.

In each test, the control signal is PHASE INVERTED. The test is therefore to sum each pair and see if you get zero.


Results

As you can see when you play all the clips at the same time, the master level is minus infinity. Nothing at all. That means each test summed to zero, which means that in each case, the gain staging had no effect on the signal.


Conclusions (in detail)

The fact that all of the above tests subtract to zero demonstrate the following:

1) Ableton channels can run at least 35dB into the red before any kind of degradation occurs. Obviously, if the end result is an exported WAV, then the final output level (ie master level) must be below 0dB. However, this test shows that if you boost a track so that its meter shows +35 (way more than you'd ever need), as long as you pull down the fader of the next link in the chain (eg the master or subgroup) you're absolutely fine. There is a limit though - see further below.

2) Operator can run at least 6dB into the red before any kind of degradation occurs. As above. Note that no testing was done above 6dB - but given that it doesn't clip at 0, it's pretty likely that if you have all four oscillators going at once, with a resonant filter etc etc, you could push the level further without degradation. Again, I'm sure there's a limit, but it's 100% certainly over +6dB.

3) Simpler can run at least 30 dB into the red. As above.

4) EQ Eight, EQ Three and Filter Delay can run at least 30 dB into the red.


Exceptions and special cases

- You can definitely get away with +35 dB of headroom on an Ableton channel, but the headroom isn't infinite. My first test was actually to string six Utility units together, each boosting the gain by 35dB, and attenuating equivalently at the other end. This test failed, which actually surprised me as I thought you should be able to get something like 700 dB of headroom (half the floating point range). It turns out - as you can see by activating the second Utility unit on both tracks in the RAW AUDIO test, that once you get above +65 dB or so, crackles and glitches start occurring. Curiously, I'm pretty sure this is NOT the result you would get from one channel clipping like a square wave - instead, I think you're dealing with floating point overflow, and my guess is that any sample with a level higher than 65 dB (which translates to an absolute value of what, 1700 or so?) gets set to zero. That's just a guess, though. Anyway, as long as you don't drive your channels 65 dB into the red, you're fine. In all probability, the upshot of only having 65 dB of headroom as opposed to the full 700 dB you should get with 32-bit floats, is that you get a frankly ridiculous amount of headroom *below* 0dB; in other words you can attenuate your tracks to inaudible levels and boost them again with no degradation. But that's now speculation on my part.

- Flanger, Phaser, Reverb and Auto Filter DO NOT behave identically when confronted with an extra 30 dB of input gain. I'm not sure why this is, since in theory all of the above FX should be linear (or at least amplitude independent), but there's no accounting for the whims of a DSP developer. HOWEVER, this does not necessarily mean that they clip (or respond badly) when fed with a higher input gain - it just means that there is some kind of level-dependent processing going on, for example, maybe there's a hidden compressor in there. Before you ask, yes, I had the envelope detector turned off, and yes, I had the LFO synced to the host, so both effect units should have been doing identical things.

- Obviously, compressors, saturators, limiters, bitcrushers, anything like that, will behave very differently when fed a louder input signal.



No comments:

Post a Comment