Concerto for Duck and Orchestra

As part of my master’s I built an instrument into a duck. Not a real duck of course. My plan was to create a standalone instrument with an Arduino board (so not using the Arduino to send e. g. sensor data to a computer which does the sound synthesis). Amazingly enough I found a nice way to do sound synthesis on the Arduino: Mozzi.

The next thing was how to smoothen the PWM output of the Arduino. A solution for that was to build a low pass filter as described here. Last thing was to attenuate the output a bit, for that I used the simple amplifier as described in Nicolas Collins’ book “Handmade Electronic Music”. Now just shove that all into a cheap bathroom radio in duck form, add some sensors and a mini jack output, and I’m all set.

For the piece I wanted to use video material as accompaniment. I searched for videos of orchestras I could use and found some nice little news snippets from the Netherlands which are CC-BY-SA licensed on Open Beelden. As I wanted to play the videos in a granular fashion, I wanted to have something that would just skip to any possible point instantaneously. After trying to achieve that task with Processing and failing miserably as at least Processing 1.x had a pretty slow video performance, I built a simple video player with Cinder that reacted to osc messages I sent from SuperCollider.

I used SuperCollider to do the actual sequencing of events with some random elements in it and for the reverb, filtering, compressing and spatialisation of the duck’s sound. The finished piece was premiered at the Studiokonzert 2013 in ZKM Kubus in Karlsruhe and I also performed it at the second concert of the MuSA Symposium.

Here is a video of the premiere:

Continue reading

Delbrots @ NMF 2013

With our Mandelbrots noise side project Delbrots and the Man I played at Network Music Festival 2013 in Birmingham. It was a little strange to do a really loud set on a Sunday at about 4pm, but Glitch Lich played before us, so it wasn’t that bad.

I made some simple code visualization for it using Quil. I still didn’t have time to figure out how to get it in full screen mode, so i put some tape on the projector instead (you can still see the title bar a bit). The whole thing looked a little like that:

Delbrots and the Man FTW!

(Thanks to Antonio for the awesome photo!)

Continue reading

Extempore setup on Mac OS X 10.8

These are some instructions on how to get extempore and some external libraries running with Mac OS X 10.8.

Extempore

Get a binary from the github page. Also clone the project and place the extracted binary in the root directory of the cloned repository. Just execute the binary in a terminal.

SOIL

Clone my version and build with cmake.

Horde3d rendering engine

Get svn version as the last version (1.0.0-beta5) won’t build in Mac OS 10.8:

svn co https://horde3d.svn.sourceforge.net/svnroot/horde3d/trunk horde3d

Build with cmake:

cd horde3d
mkdir build; cd build
cmake ..
make
# no make install, so just copy frameworks to the appropriate places
sudo cp -R Horde3D/Source/Horde3DEngine/Horde3D.framework /Library/Frameworks/
sudo cp -R Horde3D/Source/Horde3DUtils/Horde3DUtils.framework /Library/Frameworks/

Set new-horde to #t in libs/external/horde3d.xtm.

In the horde3d_knight.xtm example, the horde resources_path should point to

(bind-val resources_path i8* "/path/to/svn/repo/Horde3D/Binaries/Content")

Also you have to replace the h3dAdvanceEmitterTime function by h3dUpdateEmitter and you have to add a call to h3dUpdateModel in the mainLoop function, e. g. here:

(h3dSetModelAnimParams _knight 0 (* (dtof (* 0.5 _at)) 24.0) 24.0)
(h3dUpdateModel _knight 1) ;; make the knight move

Then happy knighting :)

Bullet physics engine

Install it with brew, but make sure you build the shared libraries:

brew install bullet --shared --build-extra

Set _extended_bullet to #f in libs/external/bullet.xtm. The example currently doesn’t work without the _extended_bullet functions.

KissFFT

Just follow the instructions in the library file ( libs/externals/fft.xtm ).

Assimp

Install with brew.

Livecoded Animation for The People vs. The Machines

I did some livecoding at Flip Festival’s closing night in Wolverhampton yesterday. I used SuperCollider with SCGraph, which didn’t even crash once this time. Thanks to Antonio for having me. It was a lot of fun :)

Here’s a video of the final result:

And the code:
Continue reading

result of the second process

Random jpgs with SuperCollider

Hellocatfood just
described how to create jpgs in puredata. Here is a quick port of his solution to SuperCollider:

~jpgheader = Int8Array[255, 216, 255, 219, 00, 132, 00, 03, 02, 02, 03, 02, 02, 03, 03, 03, 03, 04, 03, 03, 04, 05, 08, 05, 05, 04, 04, 05, 10, 07, 07, 06, 08, 12, 10, 12, 12, 11, 10, 11, 11, 13, 14, 18, 16, 13, 14, 17, 14, 11, 11, 16, 22, 16, 17, 19, 20, 21, 21, 21, 12, 15, 23, 24, 22, 20, 24, 18, 20, 21, 20, 01, 03, 04, 04, 05, 04, 05, 09, 05, 05, 09, 20, 13, 11, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 255, 192, 00, 17, 08, 01, 224, 02, 128, 03, 01, 17, 00, 02, 17, 01, 03, 17, 01, 255, 196, 01, 162, 00, 00, 01, 05, 01, 01, 01, 01, 01, 01, 00, 00, 00, 00, 00, 00, 00, 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 16, 00, 02, 01, 03, 03, 02, 04, 03, 05, 05, 04, 04, 00, 00, 01, 125, 01, 02, 03, 00, 04, 17, 05, 18, 33, 49, 65, 06, 19, 81, 97, 07, 34, 113, 20, 50, 129, 145, 161, 08, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 09, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 01, 00, 03, 01, 01, 01, 01, 01, 01, 01, 01, 01, 00, 00, 00, 00, 00, 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 17, 00, 02, 01, 02, 04, 04, 03, 04, 07, 05, 04, 04, 00, 01, 02, 119, 00, 01, 02, 03, 17, 04, 05, 33, 49, 06, 18, 65, 81, 07, 97, 113, 19, 34, 50, 129, 08, 20, 66, 145, 161, 177, 193, 09, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250, 255, 218, 00, 12, 03, 01, 00, 02, 17, 03, 17, 00, 63];

~jpgfooter = Int8Array[255, 217];

(
f = File.new(“test.jpg”, “wb”);
f.write(~jpgheader);
100.do{f.write(({255.rand}!1024).as(Int8Array));};
f.write(~jpgfooter);
f.close
)

(
f = File.new(“test.jpg”, “wb”);
f.write(~jpgheader);
f.write(
100.collect{ |i|
500.collect{ |j|
(j%i)%255 * rrand(0.9,1.1)}.sort.mirror2;
}.flop.flatten.as(Int8Array));
f.write(~jpgfooter);
f.close
)

“open test.jpg”.unixCmd

result of the second process

Screengrabs from Q 79.2

Some screengrabs from the video I did for Esther A. Romero‘s piece Q 79.2 (2012) using SCGraph.

Update: A video of the full performance is now on iTunesU.

Thunderbird 5 folder pane and Mac OS X 10.7 (aka Lion)

Due to the new window resizing feauture of Lion, there is as strong possibility that one can’t get the folder pane back in Thunderbird if it snaps shut (because you will resize the window, not reopen the pane at the left border). One can re-enable it by editing the file in session.json in the profile directory (~/Library/Thunderbird/Profiles/*.default/session.json) and replacing “folderPaneVisible”:false with “folderPaneVisible”:true. This should probably be done with Thunderbird closed. Upon reopen, the folder pane should be back.

Hopefully this will be fixed in the next Thunderbird version…