scarr
Experienced
A bitcrusher effect reduces the number of bits and/or samples used to represent a signal. This creates a lo-fi texture and can also create certain unique kinds of distortion. With the addition of some hard clipping features, it can some even more unique waveshaping to create interesting harmonic series.
When pushed, it would be an extreme kind of digital distortion, but that isn't all it's good for. When used more subtly, bitcrushing can have a pleasing warming effect that brings a vintage, lo-fi vibe to anything you put through it. It could modify the tone of a Delay or Flanger to sound more primitive and less like a modern studio-grade effect. When turned up, it can make it sound like you're playing guitar through a Speak & Spell.
Given the different nature of this feature, it would probably be best served by a unique block. Depending how nice you want it to be, it could have low or ridiculously low CPU overhead.
Some of my desired features would include:
• Bit depth reducible in 1-bit increments, from 24-bit down to 1-bit.
• Subsampling down from 48kHz to really low & grainy
- Could be done by a "proper" subsampler for more traditional warming
- Or a simple sample & hold circuit, which would hold every Xth bit for Y samples.* This would be rougher, but that could be good too.
• A basic lowpass filter, switchable pre/post subsampling to remove or allow aliasing/artifacts as desired
• Bit...bending? I'm not sure what it would be called, but look at the "Mode" buttons in this picture of Logic's BitCrusher, which allows three types of clipping at the bit ceiling:
- The first reflects the wave back across the clipping ceiling. In code form:
- The second one is a standard hard clipping.
- The third is a wrap-around mode where exceeding the ceiling breaks the waveform and starts emerging from the zero point again.
Or really, I guess it would be:
• Any additional ideas?
With controllers attached to the parameters, things could get even more interesting and really unique.
* So to get 8 kHz, you would hold every 6th sample for 6 samples. You could do unique things like holding every third sample for two samples though. You could also do things like every 10th sample for 2 samples for more subtle effects. These values might need to be fractional (e.g. every 3.22 bits) to allow for more resolution around 48 kHz. Other suggestions are welcome as well.
When pushed, it would be an extreme kind of digital distortion, but that isn't all it's good for. When used more subtly, bitcrushing can have a pleasing warming effect that brings a vintage, lo-fi vibe to anything you put through it. It could modify the tone of a Delay or Flanger to sound more primitive and less like a modern studio-grade effect. When turned up, it can make it sound like you're playing guitar through a Speak & Spell.
Given the different nature of this feature, it would probably be best served by a unique block. Depending how nice you want it to be, it could have low or ridiculously low CPU overhead.
Some of my desired features would include:
• Bit depth reducible in 1-bit increments, from 24-bit down to 1-bit.
• Subsampling down from 48kHz to really low & grainy
- Could be done by a "proper" subsampler for more traditional warming
- Or a simple sample & hold circuit, which would hold every Xth bit for Y samples.* This would be rougher, but that could be good too.
• A basic lowpass filter, switchable pre/post subsampling to remove or allow aliasing/artifacts as desired
• Bit...bending? I'm not sure what it would be called, but look at the "Mode" buttons in this picture of Logic's BitCrusher, which allows three types of clipping at the bit ceiling:
- The first reflects the wave back across the clipping ceiling. In code form:
Code:
if(sampleValue > ceilingValue) sampleValue = (ceilingValue - (sampleValue - ceilingValue));
Code:
if(sampleValue > ceilingValue) sampleValue = ceilingValue;
Code:
if(sampleValue > ceilingValue) sampleValue = sampleValue - ceilingValue;
Code:
while(sampleValue > ceilingValue) sampleValue = sampleValue - ceilingValue;
With controllers attached to the parameters, things could get even more interesting and really unique.
* So to get 8 kHz, you would hold every 6th sample for 6 samples. You could do unique things like holding every third sample for two samples though. You could also do things like every 10th sample for 2 samples for more subtle effects. These values might need to be fractional (e.g. every 3.22 bits) to allow for more resolution around 48 kHz. Other suggestions are welcome as well.