new Track - random Point in the Infinite

Nikolaus Gradwohl2019-02-20T05:36:18+00:00

a new synth track exploring the infinte phase space of sonic possibilities

read more ...

processing sound visualizer explained

Nikolaus Gradwohl2019-01-22T05:07:16+00:00

I have been asked to share the code of the sound visualizer I wrote in processing about a year ago, so I decided to write a blogpost explaining what I did

The program has two main parts - the autocorrelation function that creates the wiggly line and a glsl filter for the lens-distortion effect.

read more ...

SynthJam 01 2019

Nikolaus Gradwohl2019-01-20T10:21:36+00:00

Yesterday it came to my mind, that in the last few weeks I've spent more time working on my music equipment than actually making music - I created a new stand for my Mother32 and my DFAM, I made a midi to trigger signal box based on an arduino, I wrote a controller script for my KMI SoftTouch2 so I can controll bitwig with my feed while jamming - all very important tasks that will help me focus on making music - but currently it feels like all those task are eating my time for making music.

So I recorded a quick synth jam using the repro1 plugin from uhe and the mother32 in Bitwig Studio. I also added some drums from the Volca Beat, the volca sample and the DFAM.

So - without further ado - here is my first syth jam of 2019

read more ...

Sonic Pi beatslicing livecoding session

Nikolaus Gradwohl2018-06-23T17:47:10+00:00

this is the recording of a SonicPi Livecoding session made from 2 sample loops sliced and rearranged in different ways

for the drum sounds I used a drumloop sliced it into 32 peaces each 1% the length of the original loop. Each click is chosen at random from the ring created by the line command.

n = 32
l = 0.01
s =  line(0, 1, steps: n+1).choose
f = [1,s + l].min

sample "drumloop.wav", beat_stretch: 16, start: s, finish: f

The samples are triggered at a given 16th slot with a changeable probability.

the e-piano loop is played back at different speeds chosen from an array using [1,-1,0.5, -0.5, 0.75, -0.75].choose and placed at a random position in the stereofield using a :pan fx

Sonic Pi Beatslicing session

read more ...

New Song - A Target you can't see

Nikolaus Gradwohl2018-06-19T06:49:45+00:00

a repeating yet ever changing 10 note pattern creating a world for the melody to live in

A Target you can't see

read more ...

Welcome Lil Erebus

Nikolaus Gradwohl2018-06-11T19:33:30+00:00

I build the Erebus Lil DIY kit by dreadbox this weekend - after 6 hours of soldering estimated 100000 components on very very tiny solder pads on saturday, I spent 8 hours on sunday searching for the one cold solder joint :-/

But everything is working fine now and here is a first short jam with my new synth - enjoy!

Lil Erebus

read more ...

New Song - Turn into a Tune

Nikolaus Gradwohl2018-05-22T07:01:38+00:00

A song starting as a simple arpeggio slowly evolving into a tune

Recorded and Mixed in Bitwig Studio drums are from a volca beats and sample, pads from streichfett and blofeld. The synth sound are from bitwigs polysynth and a 0-Coast


read more ...

creating midifiles using ruby

Nikolaus Gradwohl2018-03-26T07:21:37+00:00

I have been experimenting with randomly generated drum patterns lately and found out pretty soon, that a totally random generated pattern isn't exacly what I was after, I wanted a pattern generator where I can specify propabilities for each drum hit to occure. So I wrote a ruby script using midilib that generates midi files containing patterns, which I can then import into bitwig and loop and arrange for my tracks.


Midilib is a nifty little ruby library that allows you to read or write midifiles. For my purpose I used the library to write the files.

the library can be installed using gem

gem install midilib

A midifile contains sequences, sequences contain tracks and tracks contain midi events. These events can be any midi event like noteOn, noteOf, controlChange, programChange, ... For each midiEvent in a track the delta time to the last event is stored.

in midi lib you can specify a time_from_start value and lets midilib recalculate the delta values before saving the track.

So here is a ruby script that generates a hihat pattern (channel 1, midi note 44 in my kit), where the notes are placed on a 16th grid with a random chance between 20% and 50%.

require 'midilib/sequence'
require 'midilib/consts'
include MIDI

seq =

track =
seq.tracks << track << <<, 'Test Pattern')

track =
seq.tracks << track = 'Loop1'

s = 0
l = seq.note_to_delta('16th')
e = Random.rand(0.2..0.5)

16.times do
    if ( Random.rand < e ) then
    on =,44,127,0)
    on.time_from_start = s
    off =,44,127,0)
    off.time_from_start = s + l << on << off
s += l

track.recalc_delta_from_times'pattern3.mid', 'wb') { |file| seq.write(file) }
read more ...

new Song Ice5

Nikolaus Gradwohl2018-03-01T05:20:02+00:00

An ambient electronic 5/4 track inspired by the -10°C we currently have outside


read more ...

processing sound visualizer

Nikolaus Gradwohl2018-02-14T20:27:41+00:00

I made a visualizer for my track Walk in the rain using processing. I used a stereo autocorrelation function to generate the line drawing using the minim framework and added a glsl shader to create the lens distortion effect.

Processing sound Visualizer

read more ...