Wasserklang Orchester workshops DIY Hack the Panke with Gustav-Freytag-Schule

Hydrophone recordings of Berlin waters

Kat will be working during the week of 20th May with students from the Gustav-Freytag-Schule to make sound recordings from water using her hacked scientific instruments and DIY hydrophones, as part of the DIY Hack the Panke project. These recordings will be composed, along with piano compositions with the school’s Klavier AG, into a sound installation at the Berlin Staatsoper in June 2019.

Time Slides #Success and Time Slides #Fail


The plan was to go to over to the gallery to set up at 2:30. At 2:26, after a week of late nights and frantic preparation to make Time Slides record and play back in a responsive loop, I plugged the external battery into the sound card – there was a spark, and it stopped working. A little warning LED started blinking. That was it – the audio card was dead.


I know the whole point about the exhibition – The Ability To Fail in Public – was to embrace the potential of failure and see it in a constructive and creative light, but having put in so much work on the project, to have achieved close to what was wanted at the outset in so short a time, and then to have it break at the last minute… that was quite a blow.

Dejected, I drew black tears on my face – the bitter tears of failure – and packed up to go.

At that point, the cavalry suggested exhibiting the defunct electronics at the show, plugged in so that the visitors could see its pathetic blinking. We decided to check to see if we could power it with the battery pack alone, so it was more portable for display. Having pulled the necessary bits together, we plugged in and lo! it worked.

Thereafter ensued a frantic 5 hours of tree climbing (to install Time Slides #Fail) and cupboard renovating (to create a novel exhibition site for Time Slides), before the first visitors showed up at the Kreuzberg Pavillion and started to engage with the work.

Time Slides and Time Slides #Fail both went down a storm tonight.

Time Slides is an interactive work reminiscent of a spider in form. It records and creates layers of sound from passers by, playing them back to create a vertical slice through time in one place. It is created as a highly intimate experience, and as with the other works in The Ability to Fail in Public, it focusses the visitor on the auditory experience – in this case using sound to create temporal distortions.

Here’s Time Slides in action:

Time Slides #Fail is much harder to capture on camera. It superimposes an evening in Brussels when Belgium played in the World Cup onto an evening in Berlin when Germany played, distorting time and space together to reveal the unique and similar elements of national experiences.

Installed in front of the gallery, in a tree on the square at Naunynstraße, the sounds of the busy Brussels streets, recorded just as Belgium won against Algeria in the World Cup last week, were extremely at odds with the visual stimuli of the surroundings. Passers by would look around confusedly, and the disjuncture produced had a particularly strong effect on cyclists, whose sensitivity to traffic noise is very important in addressing their vulnerability on the road.

Here’s the audio for Time Slides #Fail:

You can see some super pics of the exhibition on their facebook page of the event.

Time Slides was a great success, and Time Slides #Fail was deemed “Formidable!” by one visitor. We did, however, fail to fail.

**Edited to include media for Time Slides #Fail

Many thanks go to Claudia Mannigel, who initiated and organised the exhibition, Heiko and Alessandro from Kreuzberg Pavillion, Jun Matsushita and Sam Carlisle.


More Code – trying to loop and layer in ChucK

I’m still battling with ChucK. I can now record and play back in real time, but can’t loop. Record and play back in real time:


adc => LiSa loopme => dac;

//alloc memory

60::second => loopme.duration;

//set number of layers

10 => loopme.maxVoices;

// print get voice

<<< loopme.getVoice >>>;

//start recording input


<<< “recording” >>>;

2000::ms => now; loopme.play(1);

2000::ms => now; loopme.play(0);

//10 sec later, stop recording //10000::ms => now;

//loopme.record(0); 500::ms => now;


However, looping doesn’t work and I can’t work out why because I don’t understand all the syntax in the example file… Here’s my messy attempt.

adc => Envelope e => LiSa loopme => dac;

//alloc memory
10::second => loopme.duration;
//confirm that the length of the buffer is what you expect
<<<“buffer duration = “, loopme.duration() / 44100.>>>;
//set number of layers
10 => loopme.maxVoices;
// print get voice
<<< loopme.getVoice >>>;

//440. => loopme.freq;
//0.2 => loopme.gain;

//set times for recording fade in/out and sample loop length
100::ms => dur recfadetime;
2000::ms => dur mylooplen;

//start recording input; record 2 seconds worth
e.keyOn(); //can also do without the Envelope and use loopme.recramp(dur) to set a recording ramp
//1000::ms => dur loopme.recramp;
now + (mylooplen – recfadetime) => time later;
while(now < later) {

//    pitchmod.value() => loopme.freq;
1000::ms => now;
//2000::ms => now;
recfadetime => now;


<<< “recording” >>>;

//disconnect input and hangout a bit
loopme =< dac;
1000::ms => now;
<<< “hanging out” >>>;

//now, manipulate the sample
//    get a voicenumber; note that this voice won’t actually be reserved until you play it
loopme.getVoice() => int voice1;

<<< “getting voice number 1” >>>;

//we’ll play voice 1 forward, and then crossfade it with voice 2 backwards
loopme.play(voice1, 1);

<<< “play voice 1” >>>;
//(mylooplen – recfadetime) => now;

//just as voice 1 is going to fade, bring in voice 2
loopme.getVoice() => int voice2;
loopme.rate(voice2, 1.);
loopme.playPos(voice2, mylooplen);
//loopme.voiceGain(voice2, 0.2);
loopme.play(voice2, 1);

//wait until voice 1 had finished fading, then turn off
recfadetime => now;
loopme.play(voice1, 0);

//wait for voice 2 to finish
2000::ms => now;


////start recording input
//<<< “recording” >>>;

//2000::ms => now;



//2000::ms => now;


//10 sec later, stop recording
//10000::ms => now;

500::ms => now;

Adventures in RPi: programming with Chuck to trigger record depending on loudness

The flyer for our show at Kreuzberg Pavillion

Earlier this week Saturday’s exhibition, The Ability to Fail in Public, was announced. Here’s a non-permanent link to the exhibition.

I’ve been trying to programme the RPi for Time Slides – using ChucK. Somehow I managed to lose both the script I’d written and the doc I’d written detailing the script I’d written. #Fail! (how ironic)

Anyway, this is as far as I’ve got with the ChucK script, in a kind of wild mashup of some ChucK example files and a bit of wizardry (level -10)… I can now print “hello” when the mic registers a particular volume. Now I need to work out how to turn the print command into a record command (through LiSa?) and how then to play this back, and loop subsequent recordings over the top. All before Saturday. Wish me luck, I’ll need it!


// LiSa might be good for starting recording recording
// and then manipulating the loop

//start getting input from mic, something like…
adc => FFT fft =^ RMS rms => blackhole;

// split mic in ???

// if audio > loudness of X  (RMS) -> record
// set parameters – from loudness script
1024 => fft.size;
// set hann window
Windowing.hann(1024) => fft.window;

// get name
me.arg(0) => string filename;
if( filename.length() == 0 ) “foo.wav” => filename;

// control loop
while( true )
// upchuck: take fft then rms
rms.upchuck() @=> UAnaBlob blob;
// print out RMS
if( blob.fval(0) > 0.001 ) {

<<< “hello” >>>;
// advance time
fft.size()::samp => now;

// play recorded sound on loop

//.channels – (int, READ only) – the number channels on the UGen

//Zero crossing detector. Emits a pulse lasting a single sample at the the zero crossing in the direction of the zero crossing.
//(see examples/zerox.ck)
//this is useful if you want to make it loop without a glitch


In terms of Time Slides #Fail, I managed to get some super recordings last night of Brussels after Belgium won against Portugal in the World Cup. Awesome timing.

New NSA leaks reveal spyware can be implanted in your tech en route for delivery

The internet is broken. And so is all your stuff. According to new leaked NSA documents, the agency have the capacity to read your screen and keyboard strokes remotely using tiny chips, which they might insert when your gear is being shipped to you.

That might make you think twice about buying hardware off the internet. But, never fear they have other ways of compromising your computer. It’s also just been revealed that they can masquerade as other websites – say your Yahoo! mail or CNN – to send malware to your machine. Once their malware is there, they’ve got unlimited access to you and your doings.

A room full of shocked hackers is a rarity, especially when the topic of conversation is cyber security. But that’s exactly what security expert Jacob Appelbaum got with new revelations about the NSA’s tactics as part of their Tailored Access Operations – TAO – programme at hacker congress 30c3 yesterday.

Referencing simultaneous publication of the information in German magazine Der Spiegel, during his talk “To Protect and Infect Part II” Appelbaum showed slides of some of the technical specs, with some chips – largely undetectable bugs that are read by being bombarded with continuous waves – the size of a thumbnail. You can see the details of all these NSA toys in a marvellous infographic from Der Speigel. What’s quite chilling is that most of this tech dates from 2007-8, which means we are only finding out about tech that’s 5 years old.

The scope of the TAO project is truly vast, encompassing foreign (to the US) embassies and high level politicians, and Der Speigel reports projected targets of 85,000 computers infected with TAO trojans by the end of this year.

None of this would be possible without some serious geekery. The revelations about TAO activities add  weight to previous calls by high profile security specialists and activists at the same conference, including at a joint talk by Appelbaum and Julian Assange on Sunday night, for geeks and nerds to step back and query their consciences about how they earn their crust.

Of course, this might all seem a world away. A few things bring revelations like this home, though, including the fact that the NSA are calling all us – yes I’m one too – iPhone users “Zombies”. There’s a price to pay for seamless design and increasing invisibility of computers, and that price is knowing what is being done to you and your devices.