connecting linux midi programs using alsa virtual midi
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.
read more ...Arduino based Midi Trigger box for analog synths
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.
read more ...creating midifiles using ruby
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 = 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
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
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
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
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.
read more ...SonicPI and Streichfett Jam
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.
read more ...Sonic Pi Launchpad lightshow
I made a first quick test with sonic pi's upcoming midi functionality and created a short launchpad lightshow using my launchpad mini
read more ...Tale of a trs-midi-cable
... 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 :-)
read more ...how to create launchpad light effects with chuck
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
read more ...launchpad mini to play push like scales using puredata
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