Cambridge, days 9 – 12

Day 9

That day, I set up the Fireface UFX for a combination of 2×2 channels of headphones plus 4 channel surround sound. Interestingly, it features multitrack recording onto a usb device out of the box. Eventually, we used this feature to record the performance. It made life a lot easier.

I also experimented with visual input to Betablocker but after discussing it with Tom, we decided together to not go further into this direction for now.

Furthermore, wince I am at a creative music department, we thought that it would be good to do some more sound studies. I immediately got into that and started the first one in which I gave myself the task to create a spatial, rhythmical sound, based purely on bblockers.

For this, I wrote this little Program:

(
q.rhythm = BBlockerProgram([
	\ORG, 		// set relative 0 here
// A pulse to maximum for 8 steps, then decreasing to value in slot 100
	\DEC, 		// decrease value on stack, so in step 2, will be 255
	\NOP, 		// nothing
	\NOP,
	\NOP,
	\NOP,
	\NOP,
	\NOP,
	\NOP,
	\PSHL, 100, // push the (random) value that is residing on adress 100 to the stack
// negate value of slot 100 (as slot value is 255)
	\ADD,		// add the two first item on the stack (popping), and push the result
// push additional 6 random values, filling the stack completely (as there are already two values in it)
	\PSH,  101,	// push the (random) value adressed by slot 101
	\PSH,  104,	// push the (random) value adressed by slot 104
	\PSH,  105,	// push the (random) value adressed by slot 105
	\PSH,  106,	// push the (random) value adressed by slot 106
	\PSH,  107,	// push the (random) value adressed by slot 107
	\PSH,  108,	// push the (random) value adressed by slot 108
// sample and hold for 2 steps
	\NOP, 		// nothing
	\NOP,
// write value to heap, just testing...
	\POP,  123,	// pop top value to slot 123
	\NOP, 		// wait
// If values adressed by slots 107 and 108 are the same, jump to adress 124, else jump to 1
// Side effect is that stack is temporarily filled with values of 107 and 108.
	\PSH,  107,	// push value adressed by slot 107
	\PSH,  108,	// push value adressed by slot 108
	\EQU,		// are they the same? (pops values, pushes result)
	\JMPZ, 124, // if top of stack is 0, jump to adress 124
	\JMP, 1     // else, jump to 1
]).fillUpRandom_(true);
)

Slight (automatic) alterations of that code resulted in some very nice sounding programs which I saved for later use.

Day 10

Wednesday. Mostly rehearsals and fine-tuning of the performance system. Did a second task, this time trying to create a program which changes its pitch over time.
We also bought an icon i-stage to trigger sounds. I integrated it into the modality setup (as good as it was possible) and wrote a custom performance system for it.
During the performance (Tom and I played together), we used a combination of a Korg NanoKontrol (mainly for mixing), a Launchpad, and the i-stage (both to change programs on the fly, resp. change computation rates).

Day 11

Thursday. Performance day. After some rehearsals and testing of the setup, three students showed up to help Tom and me with preparing the room for the performance. As we used the DPL headphone performance system (28 headphone sets) and the pre-installed 4 channel sound distribution system, there was quite a lot to do in the 1.5h we had allocated for it. Eventually, everything went fine, so we started on time with the performance.
For the performance/talk, an amazing number of about 30 guests showed up; quite a lot, given the highly experimental sounds we were aiming for.
After the talk (well, I was more explaining the system), we had an interesting discussion. I think, we managed to mediate the basic idea behind my betablocker research.

Day 12

On Friday, we cleaned up the DPL and started to look at the audio recordings. Luckily, I remembered that I have Ableton Live on my machine, which I used for general cutting and combining the binaural recording with the headphone tracks and the recorded video. Part of the result can be listened to here.

Wrap Up

All in all, I am quite happy with the 12 days in Cambridge. I had a lot of fun and new insights, especially into composition and performance practice, but also into living and working in Cambridge. Thank you for making this possible, Tom and Kate. Without you (and the travel grant from the medialab helsinki), this would not have been possible. I hope that you also got something out of it.

Cambridge, day 8

On Monday, I finally managed to implement frequency modulation for BBlockerBuf and added the for now final multi out interface:

#pC ... stack = BBlockerBuf.ar(<freq>, <buffer>);

This basically took the complete day since I had to understand the inner structure of UGen writing and selecting the algorithm based on the provided inputs. It eventually turned out to be quite straight forward, however, I was somehow expecting some fancy automation for which I searched for about two hours, only to find that basically all switching between modulation rates for inputs has to be written by hand. Which is, to my understanding due to realtime constraints.
After this heavy low-level coding, Tom and I decided to give the headphone system a go. It looks and sounds really well; we also tried it with different pairs of headphones. I will elaborate on this system in another post. Maybe for tomorrow.
In the evening, we had dinner at the Free Press, a pub near the centre of Cambridge. Food was good but not as nice as in the Cambridge Blue.

Cambridge, day 7

On Sunday, we had a day out in Ely, a smallish city near Cambridge where it has an overly huge cathedral, eels and one of the most english tea rooms I ever had the pleasure to have tea: Peacocks tea room.
Later that day, I managed to make BBlockerBuf a true multi-out UGen with two outputs: the top of the stack and the program counter. This was achieved with the help of Dan’s SuperCollider book-chapter on writing UGens.

Cambridge, day 6

On Saturday, I was at the Mill Road winter fair with Tom and George. Lots of people, dance and food.

In the evening, I explained Tom the architecture and background of BetaBlocker in greater detail, mostly working with pen and paper. We managed to program some basic signals like a saw wave, an impulse and a pulse (to be shown in a later post in greater detail).

Later on, I forked my sc3-plugins repository and started working on a multi-out, non-demand rate version of the BetaBlockerBuf UGen. This is to get access to all values of the stack as well as to the program counter. In the graphics, you can see how I imagine a possible spatialisation of the UGen’s output.

Chip Interpretations: Guest lecture and electronic music performance

What is the character of discrete information? This multichannel sonic study with accompanying talk and demonstration explores the very nature of digital material and its representation in sound. Specifically, the project investigates a dataset on a sub-semantic level, incorporating the very basics of computing: a stack, a heap, an instruction set and a program counter. Using a software probe inserted into a virtual chip, we are able to listen to the raw materials of a dataset executing as an assembler program. These datasets can then be chosen and shaped as compositional resources for electronic music composition. This project is explored using the DetaBlocker programme, a SuperCollider implementation of a fictional CPU with 256 bits of memory.

Thursday 8 December, 6pm
Helmore 029 (Recital Hall)
Anglia Ruskin University
East Road
Cambridge, UK

This event is free and open to the public.

Hosted by the Digital Performance Laboratory (DPL), Anglia Ruskin University, Cambridge, UK.

For more information on BetaBlocker, DetaBlocker and thelike, please see the category of posts on project BetaBlocker UGen.

60 panned

With the help of the SuperCollider list, I managed to create a MultioutUGen which spits out not only the topmost value of the stack but also the current program counter m_pc. In the above studies, I used this info to determine the position of the Synth’s output in a stereo panorama. What you actually hear is a bunch of upto 60 BBlockerBuf Ugens spreaded in a stereo field.

Below is the accompanying code. I promise to release the BBlocker UGens as soon as I understand how to push it to sc-plugins, without making a huge mess.

Ndef(\many).play;
Ndef(\many).fadeTime = 20;
 
(
Ndef(\many, {	var num = 50, pos, src;
	var b = {BBlockerProgram().fillUpRandom_(true).makeCollection.as(LocalBuf)}!num;
 
	#src, pos = ({|i| BBlockerBuf.ar(s.sampleRate, b[i])}!num).flop;
	src = src.collect{|x, i| 
		LeakDC.ar(x) * EnvGen.kr(Env([0, 0, 0.1, 0.1, 0], [15 + i, 5, 10 + i, 5]))};
	Pan2.ar(src, pos).sum.tanh;
})
)
 
(
Tdef(\manyPlay, {
	loop{
		(2*Ndef(\many).fadeTime).wait;
		Ndef(\many).rebuild;
	}
}).play
)
 
// after a while, crocodile
Tdef(\manyPlay).stop;
Ndef(\many).free(10);

Cambridge, day 5

On friday, I had the pleasure to visit Tim Regan at the HCI group of Microsoft Research in Cambridge. I was there with Tom Hall and Richard Hoadley. Tim showcased us recent projects of the unit he is working in, including

  • “Domesticating the Web” – A project they’ve done together with the Design Department of Aalto university (seemingly the embodied design group and Giulio Jacucci),
  • Sonic Interventions – A project from 2007 that is interesting in terms of its relation to Auditory Augmentation, and
  • Future Heirlooms – including a table for elderly people to visualise and communicate their memories and a projector for flickr sets.

Afterwards, we had lunch in “The Punter“, a pub near the MS research building. Tom and I then went to the Black Cat Cafe to talk about the day and our upcoming work. As Tom had to take care of the kids, he offered me to use his shed in the garden, a beautiful and soundproof place to work on the (upcoming) BBlockerProgram report. In the evening, after dinner, we set up Tom’s computer such that he can work with BBlocker.

 

Cambridge, day 4

Thursday, I gave an intro to Tom about BetaBlocker and the DetaBlockerBuf UGens. This was a great start into the day as I immediately knew what I’m going to do as the implementation seemingly lacked an easy way to prototype with sounds. So, I extended BBlockerProgram with a play, plot and scope method for rapid testing of configurations.
The rest of the day, I wrote code examples and listened to them. Shortly, I will post them here.

Cambridge, days 2 & 3

Day 2

On Tuesday, I woke up by the human alarm clock, comprising of the two sons of my host. What a great way to be dragged into the world again. After having breakfast, we went to the train station’s bike shop to hire a bike for me. Now, life’s gotten a lot easier since it now takes only some minutes to get from here to there.

At Uni, I wrote my report on the day before. Just when I finished, Enrique Tomas, a composer and soundwalk developer from Spain joined me at DPL; He is one of the developer of noTours, an “Augmented Aurality” system for the Android platform. He briefly presented it to us (Tom, Julio and me). It looks quite promising as it allows to produce fairly complex interactive soundwalks, where visitors can individually walk around and have an aural augmentation of the surrounding. The online authoring tool can be used for free and the needed software for the phone is available through their website. Here are some soundwalks they did recently, one for the Kumu in Tallin in summer 2011. Later that day, we had a go with the software outside and talked about various GPS thingies. The challenges they have to cope with reminded me of the listen project [5] of the Fraunhofer FIT where Gerhard Eckel, Florian Dombois and Joachim Gossmann where involved in. Later on, I showcased BetaBlocker to Julio, Enrique and Ben Mawson. I was quite happy about theur curiosity and positive reactions. In the evening, Julio d’Escriván’s launched his book Music Technology in the local bookshop. It seems to be an interesting take on the basics of, well, music technology.

The day ended with a chat with Tom about his work on Morton Feldman’s piece for 8channel pice Intersections for magnetic tape.

Day 3

On Wednesday, there was a strike for saving the pensions of the British state employees i.e. no work to be done at school. Apart from looking around the city and walking along with the protest march, I managed to do a screencast on the use of DetaBlockerBuf in connection with BBlockerProgram. It can be found here.

An introduction to DetaBlockerBuf

In the near future, I will release the UGen as part of the sc-plugins package on sourceforge. Stay tuned!