Why is clipping bad for the speakers?

I dont know if it is appropriate to ask this kind of question here, but all the answers on the internet seem to not satisfy me. I thought id ask here since most of you have often a deeper understanding of things like this.

Firstly what ive understood from the answers ive read is that clipping produces square like waves which produce harmonics that overload the tweeter. But why are square waves a thing then, should we not use square waves at all? It does not make sense to me.

Secondly if clipping is considered bad for your speakers, does it mean that you have to be careful with the .clip function? For example would (SinOsc.ar(200)*10).clip(-0.5,0.5) also be bad for your speakers?

Its not the frequencies of the square wave, its their amplitude (or rather its a combination of the two) that might damage a speaker.

However, since the DAC will only be able to produce a certain range of frequencies within a certain amplitude range, and will filter out the rest, digital clipping is absolutely fine (assuming the speakers aren’t poorly made or defective) as its is impossible for the hardware to produce frequencies or amplitudes above a limit.
The issue comes when you are working in an analogue environment and you send more energy to the speakers than they can handle - or when your speakers are defective or of poor quality and therefore unable to withstand the normal frequency range.

In other words…

… is simply wrong.

No - but that isn’t quite a square wave either, try this …

Pulse.ar(200, 0.5);

Aha, so even if you constantly hit red levels in supercollider, it wouldnt matter since everything is digital and wont pass harmful thresholds when its sent to the DAC? I mean it wouldnt hurt your speakers at all?

If you play a sine wave too loud, you can damage speakers, but that’s more a function of the analog amplifier.

Typically, samples are passed to the soundcard using an integer sample format. I think it’s pretty rare for a USB soundcard to transmit floating point signals.

Integer format means there is an absolute hard limit on the sample values, because it is literally impossible to represent out of range samples. If your signal in SC goes outside of -1.0 … +1.0, then it will get squared off in the soundcard driver.

When a digital signal is squared off (clipped), the bandlimited waveform that passes through all the sample points must go outside the clipping level (the Gibbs effect). The analog output from this could be a few dB louder than you expect.

Now… If you’re constantly working right up to the maximum load that your speakers can handle, then either the speakers are too weak for your needs, or you’re working at a level that will cause hearing loss over time and you should turn down the amplifier. In the first case, there’s not much you can do to prevent speaker damage. In the second, working at a reasonable level will prevent speaker damage (that is, worry about your hearing and your speakers will be fine).

IMO, what is bad about clipping isn’t that it’s “bad for speakers.” It’s that clipping represents loss of information, and, post-clipping, there is no way to recover the shape that was squared off. So this is not good to do accidentally.

Btw the amplitudes of the high partials of a square wave drop off (odd partials, each partial’s amplitude is 1/k where k is the partial number). A 100 Hz square wave will have 1/100 the energy at 10 kHz, which shouldn’t be tweeter-killing.

An impulse has equal amplitude at all frequencies. This is potentially bad for hearing; I’d never use a Blip without some kind of low- or band-pass filter.


1 Like

Assuming they are good speakers and you don’t drive the amp too high (if it’s an inbuilt amp you’d assume it’s okay at all levels - but who knows…) then you will be fine.

By good speakers, I mean good speakers, not cheap laptop ones - basically the louder you go, the more trust you put in the manufacturer.