music live-coding environments - my first impressions
I've been playing with live coding Music environments lately here is a short description of the environments I've used so far
Sonic PI
Sonic PI is a live coding music environment that comes bundled with most raspberry pi images and was invented to teach coding through making sounds. But don't be fooled by it's simple interface or the name - Sonic PI is a pretty serious tool for making music. Despite it's name it runs on Linux, MacOS, Windows and - surprice! - a raspberry pi and is based on supercollider and ruby.
To program it you write ruby programs that contain loops to trigger various synths and samples - you can add a bunch of effects and control various parameters of the synths. It also allows you to write pretty complex melodies and chord structures, by adding random elements to your code.
Sonic pi already comes with a impressive collection of loops, samples, example programs and synths to get you started, but it also allows you to add your own samples or supercollider synth definitions if you want to.
Chuck
Chuck is a pretty unique programming language, that allows you to write virtual instruments and control them either with your code or with various controllers via midi, Hid-events, osc, or whatever else you come up with. You can start and stop your code in sync with the loops already running and it's the basis for the laptop orchestra.
The language used feels a bit strange in the beginning but one gets used to it pretty fast.
PureData + automatonism
Automatonism is a Modular Synth that runs on PureData Vanilla - which means it runs pretty much everywhere. It's a really impressive collection of modules, plus you can use it to livepatch and edit your modules. Since it runs on puredata, you can also use regular puredata structures should you ever get stuck with the provided modules.
The modules help to create a playable pure data patch pretty fast and allow you to expand from there if you want to dive deeper into the pure data universe.
Conclusion
Each of the frameworks I tested this weekend is pretty cool and each of them has it's strengths and weaknesses - I haven't played enough with them to choose a favourite yet. I will try to integrate them into my current Bitwig, VST-Plugin and hardware synth setup and see which one I end up using
read more ...Monobass
I recorded a new song using my mininova and my midified korg monotron. I used Ardour 3 to record the track. Some parts have been recorded using my pushified launchpad mini with the help of pure data
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
Grow
I made another animation that uses the blender dynamic paint system. This time I used several dynamic paint canvases on the same plane to trigger a displacement, and mask a texture that changes the normals of my material.
The sounds are generated using puredata.
you can download the blend file here or download the puredata file here
Osc events in PD
i have written an pd-patch to controll the simple openframeworks osc demo i wrote ealier today.
the hardest part in using osc with pd was getting a pd-version that supports osc. the deb packages for pd-extended don't work on unbuntu 8.10.
so i had to compile my own package using this instructions
read more ...