Bit box

BIT BOX

The BIT BOX is a semi modular synth voice that uses manipulation of bits as the basis for sound creation and sequencing/modulation.

I uploaded 5 levels of the BIT BOX, from the basic building blocks used in the BIT BOX, to the BIT BOX+ (BIT BOX combined with subtractive synthesis). Each level has its own download section with version history and demos.
This thread only contains documentation for the BIT BOX (LVL4) and BIT BOX+ (LVL5). This should however cover all other levels as well.

The goal of the BIT BOX was to stuff some pretty complex stuff into a ridiculous, blinking box with way too many controls, so you can just turn knobs, connect stuff and listen to what comes out, without completely knowing what’s going on.
However, if you would like to know what exactly is happening and how you can use it to create certain sounds, I made a tutorial patch that explains the ideas and techniques that are implemented in the BIT BOX. (It’s the last download)


Documentation

The BIT BOX is segmented into multiple sub-modules. Only the inputs and outputs for bits are positioned inside these modules. All other inputs and outputs are placed in a patch bay on the right side of the BIT BOX.
In this documentation I describe one module at a time, including its inputs and outputs in the patch bay.


Generator

This sub-module is responsible for generating a signal that can be fed into the quantizer sub-module.
It provides the bits of a saw-LFO as gate signals.
You can switch and manipulate these bits to create create a signal that is then used as input for the quantizer.

I/O

Input Signal Range Notes
clock (1 - 0) (in patch bay) Provides the tempo for the internal clock, that is used for the generator and OSC2 in LFO mode (The clock can also be triggered manually)
gate (1 - 0) (in patch bay) Arms the BIT BOX for reset. The actual reset happens on the next rising edge of the clock signal (arming for reset can also be triggered manually) (all LFOs, and flipflops will be reset)
1 or 0 The bits you put in here are converted back into a signal that is then fed into the quantizer

Output Signal Range Notes
modulation (1 - 0) (in patch bay) direct out after the bits are converted back into a wave
1 or 0 These outputs provide the bits of a saw-LFO as gate signals (the same as an 8 bit binary counter would)

Controls

Knob, Button Function Notes
speed of generator determines a multiplication or devision of the clock-tempo that is used as tempo for the ramp LFO of the generator
flip source LFO inverts the saw-LFO that is the source for the bits
phase shift shifts the phase of oscillator 2 in relation to the generators phase to get some interesting rhythms (only when OSC2 is in LFO mode)


Scaling

This sub-module is responsible for scaling the generator-signal before it goes into the quantizer.

Controls

Knob Function Notes
octave offset
octave range

Displays

Meter Displays Notes
visual representation of the generator-signal


Quantizer

This quantizer quantiles the incoming signal to one of 12 notes, that can be activated or deactivated. When a signal is quantized to a deactivated note, it gets passed up or down (depending on how the quantizer is set) until the next active note.
This is the most CPU efficient way for this kind of quantizer functionality I could come up with.

I/O

Input Signal Range Notes
1 or 0 (in patch bay) determines whether notes are passed up or down. (input and button negate each other)

Output Signal Range Notes
1/octave (in patch bay) output of the quantized signal

Controls

Knob, Button Function Notes
select root shifts the signal up before quantizing it, so 0 is quantized to the selected root.
flip passing direction determines whether notes are passed up or down. (input and button negate each other)
activate and deactivate notes when a value is quantized to an active note (or if a note gets passed to it), the light in the middle of the corresponding button lights up green. When a value is quantized to a deactivated note the light is white. The lights on the bottom of the buttons show, which note is selected as root

Displays

Meter Displays Notes
displays in which direction notes are passed


Oscillator 1

Oscillator 1 is essentially three saw-wave-oscillators. One mid-oscillator, running at the frequency that comes from the quantizer and two side-oscillators. The combination of these waves is then split up into its bits, so you can mess with them, to get new harmonically interesting waveforms.
(All controls of this oscillator are applied, before the audio is split up into bits)

I/O

Input Signal Range Notes
1 or 0 (stereo channels) The bits you put in here are converted back into an audio signal

Output Signal Range Notes
audio (-1 - 1) (in patch bay) Left and right output of the signal, directly after the bits are converted back to audio (not DC blocked)
1 or 0 (stereo channels) The saw waves get split up into their bits. These bits are output here.

Controls

Knob Function Notes
side-oscillator detune Tunes the frequency of the side-oscillators away from the mid-oscillators frequency (one up, one down)
side-oscillator octave Increases the octave of the side-oscillators (0-3)
side-oscillator width Pans one side-oscillator left and the other one right
shift attenuates the signal before it is split up into bits. (lowering the volume, shifts the bits upwards)
side-/mid-oscillator mix Mixes between the mid- and the side-oscillators


Oscillator 2

Oscillator 2 is one saw-wave-oscillator, that can run in VCO and LFO mode. It also lets you mess with its bits, so you can get some harmonically interesting waveforms (when in VCO mode), or create some interesting rhythms (when in LFO mode)

I/O

Input Signal Range Notes
1 or 0 The bits you put in here are converted back into a wave

Output Signal Range Notes
1 or 0 The saw-wave gets split up into its bits. These bits are output here.
audio (-1 - 1) Output as audio signal, directly after the bits are converted back to a waveform (not DC blocked)
modulation (0 - 1) Output as modulation signal, directly after the bits are converted back to a waveform (not DC blocked)

Controls

Knob, Button Function Notes
(VCO mode) octave Sets the octave when in VCO mode
(VCO mode) fine tune Fine tunes the frequency when in VCO mode
(LFO mode) speed determines a multiplication or devision of the clock-tempo that is used when in LFO mode
select mode LFO mode: frequency is determined by the internal clock. VCO mode: frequency is determined by 1/oct signal from the quantizer.
shift attenuates the signal before it is split up into bits. (lowering the volume, shifts the bits upwards)
flip inverts the saw-wave that is the source for the bits


Combine + effects

short description

I/O

Input Signal Range Notes
modulation (0 - 1) pan modulation input

Controls

Knob Function Notes
combination type types AND, OR and XOR are using logic gates, type ‘mix’ just adds osc1 and 2 together
pan modulation depth
drive after combination and pan modulation
color 1 pole filter (<50%: low pass >50%: high pass) (BIT BOX + has just a high pass filter here)


Bit utility bar

This includes some logic gates and flipflops (AND gates are labeled wit & and NOT gates are labeled with !)

I/O

All input and outputs expect values that are either 1 or 0
(However, some of them, can actually handle audio an modulation signals, because of the way they are implemented.
e.g: You can use the AND gates as VCAs and the NOT gates to invert modulation signals)



VCF and VCO (BIT BOX +)

This section contains a slightly modified k35 low fass filter and a linear VCA, to shape the sound even more.

I/O

Input Signal Range Notes
modulation (0 - 1) (in patch bay) cv input for the VCF
modulation (0 - 1) (in patch bay) cv input for the VCA

Controls

Knob Function Notes
Filter cutoff
Filter resonance
Filter cv attenuation
Amplitude
Amplifier cv mix 0% → VCA is always open . 100% → VCA is completely controlled by the cv input.


Function generator (BIT BOX +)

These are three loopable attack decay envelope generators, with a variable curve.
(based on stshoens awesome Variable Curve ADSR Envelope Generator)

I/O

Input Signal Range Notes
gate (0 - 1)
Output Signal Range Notes
modulation (0 - 1)

Controls

Knob, Button Function Notes
attack time note
decay time note
curve 0% → exponential, 50% → linear, 100% → logarithmic
activate loop when activates, the envelope starts again, as soon as it has finished


CV scalers (BIT BOX +)

These are four separate modules that can be used to scale modulation signals between a ‘ceiling‘ and a ‘floor‘.
If the incoming signal is 1, the output-signal is equal to the value set by the ceiling-knob and if the input is 0 the output is equal to the value set by the floor-knob.
This way you can attenuate, offset and invert modulation signals with just two knobs.

I/O

Input Signal Range Notes
modulation (0 - 1)
Output Signal Range Notes
modulation (0 - 1)

Controls

Knob Function Notes
ceiling
floor


Downloads


LVL1

This patch contains a collection of basic building block modules for bit-manipulation.
These are basically the same building blocks I used in the BIT BOX, but with some visual feedback and only audio and gate inputs, so you can use them directly inside a normal Audulus patch.

Version History

Revision File Date Notes
1.0 LVL1.audulus (482.7 KB) 01/26/2021

LVL2

This patch contains some sub-modules of the BIT BOX and BIT BOX+

  • multiple versions of the quantizer
  • Oscillator 1
  • the function generator from the BIT BOX +

Version History

Revision File Date Notes
1.0 LVL2.audulus (763.7 KB) 01/26/2021

LVL3

This patch contains the BIT BOX split up into two modules.
One is the generator/sequenzer section and the other one is the oscillator and combine section.
(I you want to use logic gates, use the ones from LVL1)

Version History

Revision File Date Notes
1.0 LVL3.audulus (868.4 KB) 01/26/2021

LVL4 (BIT BOX)

The complete bit fun box :slight_smile:

Version History

Revision File Date Notes
1.0 LVL4.audulus (919.2 KB) 01/26/2021

Demos

Revision File Date Notes
1.0 little screaming box.audulus (929.9 KB) 01/26/2021
1.0 too manny.audulus (3.6 MB) 01/26/2021 4 x BIT BOX

LVL5 (BIT BOX +)

The BIT BOX + is the essentially the BIT BOC plus VCA, VCF and some stuff for modulation.
The idea behind it is to combine oscillators based on bit manipulation with some techniques from traditional subtractive synthesis.

Version History

Revision File Date Notes
1.0 LVL5.audulus (1.0 MB) 01/26/2021

Demos

Revision File Date Notes
1.0 Zoink.audulus (1.1 MB) 01/26/2021
1.0 night shift.audulus (1.1 MB) 01/26/2021
1.0 broken timer.audulus (1.1 MB) 01/26/2021
1.0 reverse time.audulus (1.1 MB) 01/26/2021
1.0 dreamy thunder.audulus (1.2 MB) 01/26/2021 BIT BOX + & dtuner

Tutorial

Version History

Revision File Date Notes
1.0 Tutorial.audulus (945.1 KB) 01/26/2021 How to use bit-manipulation in sound-synthesis
3 Likes

Some additional background on this:

Some time ago I stumbled upon a video about the byte beat device in the game no man‘s sky. I liked the idea and the sound of it, so I did dome further research on the whole byte-beat thing.

For those of you that don’t know it already: Byte beat is the idea to create music with very small programs (just little expressions that mess with a continuously rising number)
This Video shows some nice examples of the crazy stuff people have created:

I experimented a bit in Audulus to see what we can and can not do in Audulus (and also what we can do in Audulus ,that you can’t do in 'normal‘ expression based byte-beat :slight_smile: ).
During that I made some patches and build the building blocks you can find in lvl1. However, I got a bit away from the real byte-beat, because I focused mainly on what sounds I can get out of messing with bits. As you can see/hear in the video, byte-beat is more about creating long and interesting sequences and melodies using just these little expressions.

Originally I didn’t plan on making a module with this, but then I got inspired by the awesome synth voices that are available here in the forum. I really like the idea of these boxes that include everything you need, so you don’t really need to know what you are doing, to create some interesting stuff.
Because of that I decided to make one using bit-manipulation as the basis for every part of it.
I originally wanted to make this as a Christmas present …… may have gone a little overboard :smiley:

2 Likes

Wow! This is going to take a minute to wrap my head around, but I’m kind of blown away.

3 Likes

@J031 I second @robertsyrett ‘s sentiments, as in this is huge, I am astonished, and I cannot imagine how long this must have taken to build and then also, the documentation is immense! Simply writing the doc for each level must have taken so long. This really is an incredible work of engineering, great job! :smiley:

I also thought ‘Byte Beat’ sounded familiar, and then as you began to describe it, I had this realization hit me in the face that Kymatica AB has a Byte Beat synth app for iOS that I picked up recently.

I am still trying to figure out which expressions make neat sounds and which of them sound best together. In case anyone is interested in getting that app also, this is the link to it in the App Store. It was no more than $3 (maybe even less) just a couple weeks ago.

That’s all I have to add now, as I am off to dig into your invention and explore now. Thanks for making this! I’m excited to play :partying_face:

3 Likes

Thank you both for your nice words.

Regarding the size of the BIT BOX:
I’m actually a little worried, that it is too much at once, and that people might be scared away by how complex this thing looks with all its bit in- and outputs :confused:

Yea definitely took some time … most of it was probably procrastinating from writing documentation though :smiley:

I stumbled upon this app a few times, but haven’t bought it (jet). Whenever I felt like experimenting with real byte beat, I used this HTML5 Web App someone created (because ist free :))

1 Like

Very Impressive!

3 Likes

Very impressive stuff indeed, thanks for sharing! It does look complex, I confirm!

2 Likes