connecting linux midi programs using alsa virtual midi

Nikolaus Gradwohl2018-11-10T17:21:31+00:00

alsa offeres a virutal midi device that can be used to connect several midi applications running on the same computer. This allows you to connect various standalone applications like DAWs, livecoding environments like sonic-pi, supercollider, pd, ... or visualization software and sending midi data between them.

alsa virtual midi

read more ...

Arduino based Midi Trigger box for analog synths

Nikolaus Gradwohl2018-09-14T07:11:26+00:00

I usually control my volca and the Mother32 via midi and create sequences using Bitwig studio or Sonic Pi but I wanted to use the build in sequencers to create a more hands-on feeling and simplify loop creation while jamming but haven't found a satisfying what to synchronize the sequencers to each other and to my computer

I considered buying a bastl klick - but I would need several of them to control different synths at different clock-rates and I would have to sacrifice several audio outs to control them.

So I build a midi-trigger system using an arduino that allows me to send trigger signals to 4 devices using midi note-on signals. Now I can run the sequencers of my devices at different clock rates allowing me to use longer or shorter sequences or create different rhythms by sending trigger signals with different note lengths to the DFAM. Sort of like a clock-divider on steroids combined with a sequenceable trigger pulse.

trigger-box

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.

arpeggio

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 = Sequence.new()

track = Track.new(seq)
seq.tracks << track
track.events << Tempo.new(Tempo.bpm_to_mpq(110))
track.events << MetaEvent.new(META_SEQ_NAME, 'Test Pattern')

track = Track.new(seq)
seq.tracks << track

track.name = '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 = NoteOn.new(0,44,127,0)
    on.time_from_start = s
    off = NoteOff.new(0,44,127,0)
    off.time_from_start = s + l
    track.events << on
    track.events << off
    end
s += l
end

track.recalc_delta_from_times

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

How to modulate Midi-CC values in Bitwig Studio

Nikolaus Gradwohl2017-09-15T06:26:53+00:00

to make a synth line played on a hardware synth more interesting you can modulate some parameters like filter cutoff, decay time, etc using a midi cc value. This can be done using bitwig studio by either using a automation lane sending the cc value or by using the cc device.

To use an automation lane simply click on the "Show automation lane" icon and select the controller value you want to send in the "midi" section

bitwig cc lfo modulation

then draw the cc values in the lane you just created. I used this technique in my latest song to create the filter cutoff of the highpass filter on my moog mother32 for example

bitwig cc lfo modulation

The second version uses the "Midi CC" device. With this device you can use bitwig's brilliant modulation sources to create the cc you want do send. You could combine several modulation sources like lfos step sequencers etc to influence your sounds.

read more ...

Semimodular meets SonicPI

Nikolaus Gradwohl2017-05-15T07:15:40+00:00

This is a recording of a livecoding jam with the latest developmentversion of sonicPI. I used the new midi functionality to control my Moog Mother 32 and my Makenoise 0-Coast.

Semimodular meets SonicPI

read more ...

SonicPI and Streichfett Jam

Nikolaus Gradwohl2017-04-30T08:49:36+00:00

I recorded a short liveCoding Jam with the current dev version of SonicPI, which I user to send midi signals to my Streichfett.

I connected the Streichfett and Sonic PI to separate Audio input channels in Bitwig Studio using Jack to record and mix the audio.

SonicPI + Streichfett

read more ...

Sonic Pi Launchpad lightshow

Nikolaus Gradwohl2017-04-16T11:25:38+00:00

I made a first quick test with sonic pi's upcoming midi functionality and created a short launchpad lightshow using my launchpad mini

sonic pi midi test

read more ...

Tale of a trs-midi-cable

Nikolaus Gradwohl2017-01-24T06:21:33+00:00

... or how i made my launchpad pro talk to my 0-coast via a trs-midi cable.

Recently some instruments and controllers started to use trs-jacks for midi instead of the traditional 5-pin Din jacks - which I really like - unfortunately there is no standard wiring for these midi-trs-jacks (yet?) so some vendors map the tip to pin 5 and the ring to pin 4 of the Din cable - some vendors do it the other way round :-/

I have a novation launchpad pro and a 0-coast sitting on my desk next to each other (see photo) and unfortunately novation and makeNoise used different mapping methods

So to make sure the two devices will be able to talk to each other I took a trs-cable and swapped the wires for tip and ring on one side now I have a special midi cable that allows the Launchpad to send midi data to the 0-coast and everybody is happy :-)

trs midi

launchpad pro and 0-Coast

read more ...

how to create launchpad light effects with chuck

Nikolaus Gradwohl2014-02-26T05:28:26+00:00

Most launchpad videos feature cool effects running on a launchpad. There are several tutorials on how to make such effects using ableton live. But since my launchpad is connected to a linux box this doesn´t help me much. So I wrote a short chuck script that reacts to the midi events sent by the launchpad and creates an arpeggiator effect to light up the leds. The color can be influenced by changing the velocity.

This script works with a launchpad S or a launchpad mini.

here is a short video that shows my script in action

launchpad lightshow

read more ...

launchpad mini to play push like scales using puredata

Nikolaus Gradwohl2013-11-18T07:22:35+00:00

I wrote a pure-data patch that allows me to use my launchpad mini to play my synthesizers. The scales use a similar layout to ableton push (hence the name pushy). To translate between the default midi mapping and the push layout I first used a div and a mod operation to find out what row and column a pressed button was in. Then I calculate the offset for each row to implement the quater shift everytime you go up one row. Then I use a puredata table that holds the scale to be played (currently major and minor) to create the midi-number. The base tone can be shifted up and down by 12 semitones using the E and F button or by 1 semitone using the C and D buttons.

To connect it to my midi equipment I use jack on my linux box and wire it to my synths using qjackctl.

you can download my puredata file here

I also recorded a short loop using the launchpad and my mininova

pushy