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
99x171,50% 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)
99x123,50% 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)
103x332,50% 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
100x96, 50% modulation (1 - 0) (in patch bay) direct out after the bits are converted back into a wave
110x332,50% 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
100x154,50% speed of generator determines a multiplication or devision of the clock-tempo that is used as tempo for the ramp LFO of the generator
74x76, 50% flip source LFO inverts the saw-LFO that is the source for the bits
171x109, 50% 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
89x131, 50% octave offset
89x131, 50% octave range

Displays

Meter Displays Notes
104x280, 50% 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
97x93,50% 1 or 0 (in patch bay) determines whether notes are passed up or down. (input and button negate each other)

Output Signal Range Notes
101x97,50% 1/octave (in patch bay) output of the quantized signal

Controls

Knob, Button Function Notes
98x89,50% select root shifts the signal up before quantizing it, so 0 is quantized to the selected root.
81x74, 50% flip passing direction determines whether notes are passed up or down. (input and button negate each other)
132x450,50% 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
53x30, 75% 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
117x330, 50% 1 or 0 (stereo channels) The bits you put in here are converted back into an audio signal

Output Signal Range Notes
97x134, 50% 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)
117x330, 50% 1 or 0 (stereo channels) The saw waves get split up into their bits. These bits are output here.

Controls

Knob Function Notes
100x97, 50% side-oscillator detune Tunes the frequency of the side-oscillators away from the mid-oscillators frequency (one up, one down)
104x153, 50% side-oscillator octave Increases the octave of the side-oscillators (0-3)
100x97, 50% side-oscillator width Pans one side-oscillator left and the other one right
100x97,50% shift attenuates the signal before it is split up into bits. (lowering the volume, shifts the bits upwards)
101x98,50% 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
119x335,50% 1 or 0 The bits you put in here are converted back into a wave

Output Signal Range Notes
119x335,50% 1 or 0 The saw-wave gets split up into its bits. These bits are output here.
93x92,50% audio (-1 - 1) Output as audio signal, directly after the bits are converted back to a waveform (not DC blocked)
92x71, 50% 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
105x89,50% (VCO mode) octave Sets the octave when in VCO mode
105x89,50% (VCO mode) fine tune Fine tunes the frequency when in VCO mode
108x153,50% (LFO mode) speed determines a multiplication or devision of the clock-tempo that is used when in LFO mode
77x76,50% select mode LFO mode: frequency is determined by the internal clock. VCO mode: frequency is determined by 1/oct signal from the quantizer.
102x101,50% shift attenuates the signal before it is split up into bits. (lowering the volume, shifts the bits upwards)
76x75,50% flip inverts the saw-wave that is the source for the bits


Combine + effects

short description

I/O

Input Signal Range Notes
94x99,50% modulation (0 - 1) pan modulation input

Controls

Knob Function Notes
137x264, 50% combination type types AND, OR and XOR are using logic gates, type ‘mix’ just adds osc1 and 2 together
137x144,50% pan modulation depth
137x127, 50% drive after combination and pan modulation
137x106, 50% 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
97x84, 50% modulation (0 - 1) (in patch bay) cv input for the VCF
97x84,50% modulation (0 - 1) (in patch bay) cv input for the VCA

Controls

Knob Function Notes
136x127,50% Filter cutoff
137x85,50% Filter resonance
139x107, 50% Filter cv attenuation
138x128, 50% Amplitude
138x95, 50% 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
53x53,75% gate (0 - 1)
Output Signal Range Notes
53x53, 75% modulation (0 - 1)

Controls

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


CV scalers (BIT BOX +)

510x269,75%

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
41x44,75% modulation (0 - 1)
Output Signal Range Notes
41x44,75% modulation (0 - 1)

Controls

Knob Function Notes
103x89,50% ceiling
103x89,50% 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

This looks awesome. When my ipad arrives it’s going straight on it :slight_smile:

2 Likes

Thanks
Hope you’ll have fun with it :slight_smile: