making music in the shell -- with Soundb0ard
Damn. What a rabbit hole! Live Coding. I’ve never been into this too much in the past, but currently I have read this nice interview from Cycling74 with Thorsten Sideboard.
…and then I stumbled across this video of him. Hell yes, what a cool dude!
…and an awesome performance with his handcrafted live coding platform Soundb0ard. A treasure and all open-source. 🔥
I wanted to try it out immediately. Here are my steps.
Building and running Soundb0ard
git clone firstname.lastname@example.org:sideb0ard/SoundB0ard.git
My steps on my Mac OS system were:
Install some libraries
./configure --disable-mac-universal && make
This is the only library I installed without using brew. I thought this would be fun, but brew is so much less pain:
brew install portaudio
brew install portmidi
brew install libsndfile
brew install ctags
brew install cscope
brew install liblo
brew install readline
Clone Link from https://github.com/ableton/link
Google Performance Tools
brew install gperftools
Update the Makefile
There are some path settings which needs to be changed in the
These are of course specific to my current system.
…and then a simple
make is enough to build the application.
$ make $ Boom! make some noise...
Good point. Lets try it out.
How to play with it
You can start the shell by running
./sbsh from the command line and you are presented a nice colorful intro screen:
I want to collect some infos about the commands and keyboard shortcuts. I haven’t found a full documentation yet, but try to figure some stuff by playing around.
WORK IN PROGRESS
- control + D : Exit soundb0ard shell
ps: show running processes with instruments and algorithms
ls: list samples in
Looping a sample
VEH4-24.wav is in this case a wav file I put into the
Loading and playing a sample
Trying to play a simple kick.
Play it using a pattern
it seems that you can have up to
99 pattern (
Adding effects to a loop
addFx you can add couple of effects:
delay(default delay 200ms)
sidechain requires a second argument, which defines the trigger signal used for sidechaining (What is sidechaing? See this nice article by Ableton). For example a kick:
Set volume of a track
You can set the volume to a track with a value range of
Modify the looper loops
In the examples above I have used the looper using the
The looper allows some modifications:
set l1:active 0to deactivate and
set l1:active 1to activate
The Moog MiniSynth
There is this minisynth included callled
moog. And there are a bunch of presets already included in the file moogpresets.dat which can be loaded using
Presets include e.g.
For a full list take a look on the
# instead of
$ you can send MIDI notes to the device:
This is currently the most confusing part on my side.
: pattern group
<>: multi step pattern
(): setting euclidian rhythm e.g. (
$: prepending this allows you to access values from the
[Env]environment – like your loaded samples etc.
#: this allows you to work with values and assign it to a target (e.g. sending MIDI notes to a synth)
…only the beginning. Will continue to add more infos when I am ready :)