Noise gating bitcrushers (Patch: Signum)

Here is a thing about bitcrushers I noted recently: At low resolutions, they also work like noise gates. A bitcrusher is an effect that enables you to reduce sampling rate and resolution of a given digital signal. If you use a stand-alone bitcrusher pedal, it typically contains an analogue-to-digital converter that first turns the input signal in to a sequence of numbers (samples) and then applies resolution and sampling rate reduction. If you don’t applied any of these two, the output sample will still sound the same as the input signal, as sampling rate and resolution is typically chosen high enough by default, that humans don’t hear a difference. Reducing the sampling rate may simply be realised by dropping samples or averaging over a number of samples, hence typical bitcrushers can only divide the original sampling rate by integers.

Resolution is basically a measure of how many different voltage levels output signal may have. So, if you have a resolution of 16 bits, your voltage is quantised in two to the power of 16 (65536) levels. As audio signals are usually AC signals, it means, for example, that you could sample a voltage from -32.768 mV to 32.767 mV in steps of 0.001 mV (is asymmetrical because we have a step at 0 mV). Now if we continue using this example for bitcrushing, we would keep the voltage range but increase the size of a step, thus reducing the number of bits. Let’s assume we would reduce the resolution to two bits, meaning we would have to cover the range between -32.768 mV to 32.767 mV with four (two to the power of two) steps. If we keep the minimum value as a starting point, our output signal could only be -32.768 mV, -16.384 mV, 0 mV, or 16.384 mV (dividing the voltage range in steps of equal size) for each sample. If you use these settings (while not reducing the sampling frequency), you will note that there isn’t hardly any noise in the output signal when you don’t play, but you have huge amounts of distortion. This is because quite a large rage of the input voltage is mapped to the same output voltage. If we you implement the bitcrusher in a way that maps any voltage to the nearest possible output voltage, we see that everything between -8.192 mV and 8.192 mV would be mapped to 0mV. Meaning that, if you have noise in the signal, which is somewhat lower than the signal you want to distort, the noise is gone after the bitcrusher. Keep in mind that this works only at low resolutions and if the bitcrushing isn’t implemented in a way where the threshold between to output voltages levels is close to the noise mean value.

The extrem implementation of this is to use only a single bit, resulting in only two voltage level at the output. Mathematically speaking, this is very similar to the signum or sign function, because one way to implement it is to select the output voltage depending on the sign of the input voltage. Adding compression before the bitcrusher gives you a little more sustain and avoids notes cutting of to early:

Fun fact: As the output voltage now has only two possible levels (minimum range and maximum range), it resembles what is called a pseudorandom binary sequence. While not completely random as we still want to play some notes, this kind of signal will give you maximum signal power for an available voltage range. This basically means, when your voltage or general signal strength is limited (which it typically is, due to amplifies, speakers, etc.) this will make you sound as loud as possible. I take no responsibility for what you do with that information. 😉

leander / 2020-12-26 / patch, signal processing, sy-300

Leave a Reply

Your email address will not be published / Required fields are marked *