Thursday, November 16, 2006

Audio Arts – Major Project

Finally here is an update on my major project. This semester has been up and down for Audio Arts, my original animation partner seemed to be struggling so much that I had to find a new partner. I later found out that my previous partner had come into the course partway through the year and was quite behind in her knowledge of the software, these details may have been more useful sooner! So I joined my new partner Lyn who has very limited English which has made things interesting. Her animation is about the life of this lantern which she spelt lanten! I have really enjoyed doing this project. I have completed a rough stereo mix for her as she had to present on Wednesday. She was really happy and apparently her lecturer said it was good too. I now just have to tidy up the music and do my 5.1 mix and then I will be done. I will probably look to put the final stereo mix up on YouTube as well so stay tuned for that.

I've been having issues exporting my final stereo mix from ProTools so I have uploaded my stereo mix I gave Lyn on Wednesday for her presentation.

Creative Computing – Minor Project

For my minor project this semester I chose to do creative computing. It was always going to be stressful and without doubt it was an absolute pain. I decided to do two GUI’s, one for granulation and the other for real-time algorithmic break beat manipulation inspired by Nick Collin and his BBCut2 library. The Monday before the due date I was feeling good, I thought I just had a few bugs to iron out mainly in the BBCut GUI. Little did I know that the 24 hours later fixing those initial bugs had created more bugs and I ended up re writing the whole thing. Unfortunately there are still bugs in the code especially in BBCut GUI and when they are used at the same time there are some bussing issues which I would like to address for my own personal satisfaction.

So without further a due here is a link to the two codes

Granulation GUI
s = Server.local;

// SynthDef's for buffers
arg rate1 = 1,
density1 = 1,
timedispersion1 = 0,
grainamp1 = 1,
grainampdisp1 = 0,
grainsize1 = 1;

var file1,

~b1 =, "sounds/break2.wav");

trigger1 =, 0.5, 0.5) * timedispersion1));

grainamplitude1 =, grainampdisp1, trigger1);

env1 =[0,1,1,0], [1,1,1]), trigger1, grainamplitude1, 0, grainsize1);

file1 =, ~b1.bufnum, rate1, loop: 1.0);, file1*env1);


arg rate2 = 1,
density2 = 1,
timedispersion2 = 0,
grainamp2 = 1,
grainampdisp2 = 0,
grainsize2 = 1;

var file2,

~b2 =, "sounds/break2.wav");

trigger2 =, 0.5, 0.5) * timedispersion2));

grainamplitude2 =, grainampdisp2, trigger2);

env2 =[0,1,1,0], [1,1,1]), trigger2, grainamplitude2, 0, grainsize2);

file2 =, ~b2.bufnum, rate2, loop: 1.0);, file2*env2); //bus must change for xfade


var in1 =,2), //from cutmixer for fplayer1
out = 0;, in1)

arg out=0,

var in2;
in2 =,2); //from cutmixer for fplayer2, xFade, in2);

//GUI Code
var w, serverbut, slid2d, openDialog1, addbut1, removebut1, ratesl, ratesl1, openDialog2, addbut2, removebut2, ratesl2, densl1, timedispsl1, grainampsl1, grainampdispsl1, grainsizesl1, densl2, timedispsl2, grainampsl2, grainampdispsl2, grainsizesl2, grainarray1, g1, grainarray2, g2, xFade, yAmp, vol, xfadeCtrl, volCtrl, label,slid2dlabel, xfadesl, spec, a;

g2 =;
grainarray2 =;
// Create a window. When it is closed, the buffer b will be freed
w = SCWindow("Granular Synthesis", Rect(200, 200, 410, 500));
w.view.decorator = FlowLayout(w.view.bounds);

a ='fplayer1');
w.onClose = {};
b ='fplayer2');
w.onClose = {};
c ='xfadebuf1');
w.onClose = {};
d ='xfadebuf2');
w.onClose = {};


// A button to start and stop the server
serverbut = SCButton(w, Rect(04, 05, 100, 25));
serverbut.states = [
["Start Server",, Color.white],
["Stop Server", Color.white,],
serverbut.action = {
if (serverbut.value == 1, {s.boot;},{s.quit;});


//For "fplayer1"'fplayer1');
openDialog1 = SCButton(w, Rect(10, 40, 100, 25));
openDialog1.states = [
["Open File1",,,0.8,0.8)]
openDialog1.action = {
CocoaDialog.getPaths({ arg paths;
if (~b1 != nil, {});
~b1 =,;

addbut1 = SCButton(w, Rect(115, 40, 100, 25));
addbut1.states = [
["Add grain1",,,0.8,0.8)]
g1 =;

grainarray1 =;
addbut1.action = {
grainarray1 = grainarray1.add(Synth('fplayer1', [
"rate1", 1*ratesl1.value,
"density1", 20*densl1.value,
"timedispersion1", 0.2*timedispsl1.value,
"grainamp1", grainampsl1.value,
"grainampdisp1", 0.5*grainampdispsl1.value,
"grainsize1", 0.5*grainsizesl1.value
], g1));

removebut1 = SCButton(w, Rect(220,40, 100, 25));
removebut1.states = [
["Remove grain1",,,0.8,0.8)]
removebut1.action = {;

//Rate Slider
ratesl1 = EZSlider(w, 400 @ 24, "rate", ControlSpec(-4, 4, \lin, 0.01, default: 1),
{|ez| g1.set(\rate1, ez.value); },1);

//Density Slider
densl1 = EZSlider(w, 400 @ 24, "density", ControlSpec(0, 1, \lin, 0.01, default: 0.5),
{|ez| g1.set(\density1, ez.value.postln); },0.5);

//Time dispersion slider
timedispsl1 = EZSlider(w, 400 @ 24, "timedispersion", ControlSpec(0, 1, \lin, 0.01, default: 0.5),
{|ez| g1.set(\timedispersion1, ez.value); },0.5);

//Grain amp slider
grainampsl1 = EZSlider(w, 400 @ 24, "grainamp", ControlSpec(0, 1, \lin, 0.01, default: 0.5),
{|ez| g1.set(\grainamp1, ez.value); },0.5);

//grain amp dispersion slider
grainampdispsl1 = EZSlider(w, 400 @ 24, "grainampdisp", ControlSpec(0, 1, \lin, 0.01, default: 0.5),
{|ez| g1.set(\grainampdisp1, ez.value); },0.5);

//grain size sampler
grainsizesl1 = EZSlider(w, 400 @ 24, "grainsize", ControlSpec(0, 1, \lin, 0.001, default: 0.5),
{|ez| g1.set(\grainsize1, ez.value); },0.5);

//For "fplayer2"

openDialog2 = SCButton(w, Rect(340, 40, 100, 25));
openDialog2.states = [
["Open File2",,,0.8,0.8)]

openDialog2.action = {
CocoaDialog.getPaths({ arg paths;
if (~b2 != nil, {});
~b2 =,;

addbut2 = SCButton(w, Rect(445, 40, 100, 25));
addbut2.states = [
["Add grain2",,,0.8,0.8)]

addbut2.action = {
grainarray2 = grainarray2.add(Synth('fplayer2', [
"rate2", 3, // 1*ratesl2.value,
"density2", 20*densl2.value,
"timedispersion2", 0.2*timedispsl2.value,
"grainamp2", grainampsl2.value,
"grainampdisp2", 0.5*grainampdispsl2.value,
"grainsize2", 0.5*grainsizesl2.value
], g2));

removebut2 = SCButton(w, Rect(550, 40, 100, 25));
removebut2.states = [
["Remove grain2",,,0.8,0.8)]
removebut2.action = {;

//Rate Slider
ratesl2 = EZSlider(w, 400 @ 24, "rate", ControlSpec(-4, 4, \lin, 0.001, default: 1),
{|ez| g2.set(\rate2, ez.value); },1);

//Density Slider
densl2 = EZSlider(w, 400 @ 24, "density", ControlSpec(0, 1, \lin, 0.001, default: 0.5),
{|ez| g2.set(\density2, ez.value);},0.5);

//Time dispersion slider
timedispsl2 = EZSlider(w, 400 @ 24, "timedispersion", ControlSpec(0, 1, \lin, 0.001, default: 0.5),
{|ez| g2.set(\timedispersion2, ez.value); },0.5);

//Grain amp slider
grainampsl2 = EZSlider(w, 400 @ 24, "grainamp", ControlSpec(0, 1, \lin, 0.001, default: 0.5),
{|ez| g2.set(\grainamp2, ez.value); },0.5);

//grain amp dispersion slider
grainampdispsl2 = EZSlider(w, 400 @ 24, "grainampdisp", ControlSpec(0, 1, \lin, 0.001, default: 0.5),
{|ez| g2.set(\grainampdisp2, ez.value); },0.5);

//grain size sampler
grainsizesl2 = EZSlider(w, 400 @ 24, "grainsize", ControlSpec(0, 1, \lin, 0.001, default: 0.5),
{|ez| g2.set(\grainsize2, ez.value); },0.5);



// Labels for 2D controllers
a = Synth.tail(s, 'xfadebuf2');
xfadesl = SCSlider(w, Rect(12, 12, 200, 24));
xfadesl.value = 0.5;
xfadesl.action = {a.set(\xFade, (1*xfadesl.value))};
a.set(\xFade, 0.5);

slid2dlabel = SCStaticText(
parent: w,
bounds: Rect(
width: 200,
height: 20
slid2dlabel.string = "1<-------X-FADER------>2";
slid2dlabel.align = (\center);
slid2dlabel.font = Font("Arial", 12, 2);
slid2dlabel.background = Color.new255(84, 194, 234);



s = Server.local;

~thisPath = (;

var sf1, sf2;
var w, chooseriff, shuffles, fillchance, stopchance;
var chooseriff2, shuffles2, fillchance2, stopchance2;
var openDialog, playbut;

w = SCWindow("Thrashing BBCut",,80,620,150));

//b1 button
openDialog = SCButton(w, Rect(4, 1, 100, 25));
openDialog.states = [
openDialog.action = {
CocoaDialog.getPaths({ arg paths;
if (sf1 != nil, {});
sf1 =,;

//b2 button
openDialog = SCButton(w, Rect(516, 1, 100, 25));
openDialog.states = [
openDialog.action = {
CocoaDialog.getPaths({ arg paths;
if (sf2 != nil, {});
sf2 =,;

playbut = SCButton(w, Rect(260, 1, 100, 25));
playbut.states = [
["Start",, Color.white],
["Stop", Color.white,],
playbut.action = {
if (playbut.value == 1, {ExternalClock(TempoClock).play;},{ExternalClock(TempoClock).stop}).postln;

chooseriff=DDSlider( w,,30,150,40), "chooseriff", 0, 3, 'linear', 1, 0);
shuffles=DDSlider( w,,80,150,40), "shuffles", 0, 10, 'linear', 1, 0);
fillchance=DDSlider( w,,30,150,40), "fillchance", 0.0, 1.0, 'linear', 0.01, 0.0);
stopchance=DDSlider( w,,80,150,40), "stopchance", 0.0, 1.0, 'linear', 0.01, 0.0);

chooseriff2=DDSlider( w,,30,150,40), "chooseriff", 0, 3, 'linear', 1, 0);
shuffles2=DDSlider( w,,80,150,40), "shuffles", 0, 10, 'linear', 1, 0);
fillchance2=DDSlider( w,,30,150,40), "fillchance", 0.0, 1.0, 'linear', 0.01, 0.0);
stopchance2=DDSlider( w,,80,150,40), "stopchance", 0.0, 1.0, 'linear', 0.01, 0.0);

sf1= BBCutBuffer("sounds/break.wav",8);


sf2= BBCutBuffer("sounds/cage2.wav",8);



Here is the score.

I will also be uploading a video instead of an mp3 to accompany the score so stay tuned!

Here's the embedded video which should be up soon...

Long Time No Blog - Improv Summary

Well after letting my blog slide something chronic over the semester I thought I should comment on what has been the final semester of the degree (as long as I pass).

I’ll start off with improvisation. At first I was a little weary of the concept having not really been involved in anything like this before. We started out by getting divided into groups and it became apparent that our group would be quite interesting. We discussed what we each could bring to the group sonically and over the next few weeks slowly bought these elements together. Our group consisted of bass guitar, fx pedal, microphones on vocals and objects and then myself on laptop doing some live coding. We experimented with this configuration and slowly worked out some sort of structure. In the middle of the semester we improvised with saxophonist Derek Pascoe in front of the rest of the class. It was an interesting experience not only performing with someone who we had never met but also performing in front of the class as we were open for criticism. It was also good to hear about Derek’s experiences with improvisation.

In the next two weeks the other two groups performed with guests. The week after us improvised with Dr Chandrakant Sardeshmukh, a classical Indian Sitarist. This too was interesting to hear about his experiences with improvisation and it was good to be in the audience this week. The following week last of the 3 groups performed with Tyson Hopprich aka DJ Trip. It was very interesting to hear how he uses technology in his compositions and performances. I was quite surprised at how he on his computer he limited himself to Fruity Loops, which a lot of people would agree is a very basic program. It is his use of Gameboy and CDJ that makes things very interesting and for me I got the most out of hearing his angle on improvisation than the previous two weeks.

In-between these sessions and end of the semester our group made weekly changes to how we would be configured. Finally we ended up with Marco using miked objects, Henry on bass guitar, Will on effects pedal, Martin on vocals and myself on a granulation program I made for my minor project in Creative Computing and shotgun mic running through a delay in Logic. I also had a send of the group running into a long reverb which was sent back to the desk. Our group performed an ambient mix of sounds which was fun and challenging to perform especially in front of the rest of the class where we hadn’t tried this new configuration before. Hopefully it was interesting for everyone that was listening.

Wednesday, August 09, 2006

Audio Arts - Week 2 - Reservoir Dogs Analysis

The film I have chosen to look at is Reservoir Dogs, which is directed by Quentin Tarantino.

Scene 1: 9 min 15 seconds – 11 min 11 seconds
Dialogue: The opening dialogue is faded in whilst the opening credits are still playing. Mr Orange expresses his fear of dying with Mr White as they escape after a bungled jewellery store robbery. Mr Orange has been shot whilst stealing a car to escape in. Mr White try’s to calm down Mr Orange as they drive back to the rendezvous point. The news is on the radio is faded up to a barely audible level at the end of the scene.
Music: The music fades out as the dialogue is faded in. Music drops dramatically when picture cuts to two men in car and gives effect of being on the car radio, which is then subtly faded out completely.
Fx: Cars driving in the opposite direction past the car Mr Orange and Mr White are travelling in.
Foley: Noises made by Mr Orange as he moves on the back seat of the car including hitting feet on the seat and door as well as springs in seat
Atmos: The noise of the car Mr Orange and Mr White are travelling in which is very faint.

In this scene the music is not very important. It serves as a transition from the opening credits to the next scene. The dialogue is the primary sound source as the story takes it first step towards being pieced together. The Fx of the passing cars are used to add the feeling of movement particularly as they are panned in accordance with their direction.

Scene 2: 74 min 21 seconds – 74 min 14 seconds
Dialogue: The dialogue is at the start and end of this scene. The opening dialogue is between Mr Orange and the son of Mr Orange’s boss telling him to come down to the car. The end section if dialogue is of Mr Orange reassuring himself of the work he has done so far undercover. The music is off at this point and the focus is on the dialogue.
Music: Scene starts with radio playing softly. I am unsure of the title of the song however the lyrics feature the words “fool for love”. There is some dialogue at the start which when finished; the music is faded up as the main focus. The film cuts to some members of the gang who are waiting outside and the music cuts. When the picture returns to Mr Orange in his home, the music returns at a louder volume which giving a sense of location. The music acts as a symbolism of the work he has done as an undercover police officer. The music also gives a sense of anticipation as to the ensuing action. As with the music throughout the film, the music is playing from the radio. The radio is switched off just before he leaves the flat and just as the dialogue starts again.
Fx: most sounds I feel fall under the Foley category
Foley: This scene uses a lot of foley as Mr Orange is getting ready to leave for the robbery. As the music takes the forefront in the scene, only certain aspects are accented via the foley otherwise the usual sounds like footsteps are not heard while the music is at the front. Some of these feature sounds include checking the two guns, putting the first gun in the holster and picking up the cigarettes. When the music is at a lower level more foley is predominate such as the keys, footsteps, coins, phone ringing, etc.
Atmos: No atmos in this scene that I could tell.

In this scene the music is used to create a sense of anticipation as Mr Orange is getting ready to leave. The dialogue is still the most important part at the beginning and end of the scene, which is shown by the lowered/off music volume at these points. The foley plays an important part accenting certain aspects of Mr Orange’s preparation.

Summary: I have wondered why this movie doesn’t feature scored music and uses already existing songs from the era. Whilst researching this film abit more on the Internet I have thought that one of the reasons ma have been budget restrictions of the film as it was an independent film and Tarantino’s first feature film. However I also think that the music on the radio idea creates a line that runs throughout the whole movie and gives the audience a sense of time. The songs also create a connection with the members of the audience who have heard them before.

Creative Computing - Week 2 - BBCut2

//Global Variables
~thisPath = (;

//Buffer Sounds
~sf1 = BBCutBuffer(~thisPath++"drum.wav");
~sf2 = BBCutBuffer(~thisPath++"fx.wav");
~sf3 = BBCutBuffer(~thisPath++"indian.wav");

// Clock
~clock = ExternalClock(TempoClock(2.5));;

//Cut Buffers
~cutB1 = CutBuf1(~sf1, 0.1);
~cutB2 = CutBuf1(~sf2,0.1);
~cutB3 = CutBuf1(~sf3,0.1);

//Playback Buffers
~bufC1 = BBCut2([~cutB1, CutMixer(0, 1.0, 1.0, {0.1.rand})]).play(~clock);
~bufC2 = BBCut2([~cutB2, CutMixer(0, 1.0, 1.0, {0.3.rand})]).play(~clock);
~bufC3 = BBCut2([~cutB3, CutMixer(0, 0.07, 1.0, {0.9.rand})]).play(~clock);



//Clear Buffers


Wednesday, August 02, 2006

Audio Arts - Week 1 - Analysis

0:00 Man with movie camera on shoulder walking through crowd
Diegetic Sound - On Screen | footsteps of man, crowd noise, noise from moving camera on shoulders
Diegetic Sound - Off Screen | crowd noise, footsteps, cars and trams

0:05 Two women with baskets
Diegetic Sound - On Screen | women talking, footsteps of people, other conversations of people in background
Diegetic Sound - Off Screen | people noise (talking and footsteps), quite tram noise

0:09 Tram
Diegetic Sound - On Screen | main tram noise moving from left to right with other distant tram noise, footsteps, bike noise and talking
Diegetic Sound - Off Screen | trams, footsteps

0:16 Women hanging clothes
Diegetic Sound - On Screen | clothes being hung up, footsteps

0:18 Man with eggs
Diegetic Sound - On Screen | noise of eggs against each other and hand, background noise of people

0:21 Street scene
Diegetic Sound - On Screen | tram noise, car noise, pedestrians

0:27 Shutters opening
Diegetic Sound - On Screen | shutters opening possibly latch opening and creaking of hinges

0:29 Teeth brushing
Diegetic Sound - On Screen | close noise of teeth being brushed back and forth with noise of brush hitting lips as well as teeth

0:31 Man walking past store
Diegetic Sound - On Screen | man walking from right to left, footsteps of man walking towards gate, sound of gate being moved

0:35 Letterbox
Diegetic Sound - On Screen | poster moving, footsteps, letter falling into letterbox
Diegetic Sound - Off Screen | wind, other footsteps

0:40 Woman walking past store
Diegetic Sound - On Screen | women walking right to left, handle turning, shutter opening, noise of man moving handle
Diegetic Sound – Off Screen | women’s footsteps

0:45 Traffic/pedestrian officer
Diegetic Sound - On Screen | talking between officer and women, crowd noise including footsteps, noise of signal moving
Diegetic Sound - Off Screen | pedestrian noise, tram noise

0:48 Shutter up
Diegetic Sound- On Screen | shutter going up
Diegetic Sound - Off Screen | noise of person opening shutter

0:52 Vehicles on road/rally
Diegetic Sound | On Screen – car and bus noise, pedestrian noise, horse and carriage noise

1:06 Fountain
Diegetic Sound - On Screen | fountain noise increasing with water flow
Diegetic Sound - Off Screen | pump noise of fountain and any people near by

1:08 Close up of fountain
Diegetic Sound - On Screen | close up “dry” water noise
Diegetic Sound - Off Screen | pump noise of fountain and any people near by

1:12 Shutters opening (multiple times)
Diegetic Sound - On Screen | shutters opening, people opening shutters and wind in trees seen from shadow

1:20 Sewing machine
Diegetic Sound - On Screen | sewing machine noise
Diegetic Sound - Off Screen | pedal of sewing machine being operated

1:24 Sliding up of door
Diegetic Sound - On Screen | screen roller door opening close up
Diegetic Sound - Off Screen | noise of person opening it

1:27 Door opening
Diegetic Sound - On Screen | door opening
Diegetic Sound – Off Scree | foot steps of person walking through door

Thursday, June 29, 2006

Max T-shirts!

Thought you would all get a laugh out of these Max T-shirts

More info here...

Sunday, June 25, 2006

Found a quote by Edgard Varèse I thought was quite interesting. It is partially in response to criticism of his perceived desregard of the past...

You only have to turn to the revered past for the corroboration of my contention. The links in the chain of tradition are formed by men who have all been revolutionists! To the student of music I should say that the great examples of the past should serve as springboards from which he may leap free, into his (or her) own future.
- Edgard Varèse 1939

Tuesday, June 20, 2006


I don't know about you guys but SuperCollider is killing me at the moment and i'm supposed to be studying for exams and trying to do other assignments... *bashes head*
/end rant

See all you classical context students tomorrow!


Monday, June 12, 2006

Minor project :: Audio Arts

On the 7th I recorded a 3rd Year Jazz Quintet. The group consisted of Drums (Dom), Bass (Dean), Piano (Nhan), Alto Sax (Lauren) and Guitar (Tim). It is great to record good musicians although doing it by myself was difficult. I would've liked to have spent more time trying some different mics out however this was difficult due to time restrictions and the lack of a spare set of hands. Overall I was happy with the recording and we recorded 5 tracks from which I chose 2 mix dwn. The first was titled Compromised and was composed by Nhan Phan, the piano player of the Group. The second was titled McKibbon Walks the Dog and was also composed by Nhan. It is good to hear such catchy music being composed here in the Conservatorium.

Here are some photos I took while recording.

Studio 1 - Recording

The Band

L-R Dean, Lauren, Tim

Dom on the drums

So after some technical issues, here's the songs!

McKibbon Walks the Dog, composed by Nhan Phan

Compromised, composed by Nhan Phan

End of Semester

Well this is supposed to wrap up the weekly blog entries for the semester so I will be commenting on the course as a whole. It has taken me a bit to get into the whole blogging concept although I think it is a good inclusion to the course. I particularly enjoy reading my classmates thoughts about the weeks lessons. Having the blog due on the Mondays, the same day as our Perspectives class has made it difficult though (particularly with Super Collider) which has lead me to fall behind.

Audio Arts has been really good this semester, I have found David’s lessons to be interesting although at times a little wayward although this is to be expected for someone with no formal teaching experience. It is good to hear about the industry from someone in it rather than looking from academia, no offence to Christian. I am looking forward to hearing everyone’s Audio Arts projects. I recorded for my project the other day, it was hard work (as is expected) and it would’ve been nice to have an extra hand particularly with sound checks. I took some photos too which I will post up with the mp3’s later. I was really impressed with the band particularly as they played all original works. We also went to David’s studio, Fat Traxx during the week.

All semester David has been saying how good his control room is for monitoring and he wasn’t wrong! Comparing the reflectiveness of David’s control room to Studio 1 is like comparing a G5 to an early Pentium computer and the lengths David went to soundproofing was enormous but worth it particularly with the V8’s on near by every year.

Creative Computing has been a steep learning curve. I have found Super Collider bloody hard to get my head around, maybe because my mind is still in min:sec mode rather than code mode. As mentioned earlier, having the SC homework due the same day as Perspectives caused troubles straightaway particularly on weeks with heavy Perspectives readings. I will endeavour to get some more code up soon although it finding time is always a problem.

Workshop I feel has been a waste of an hour and of blogging time. I am still wondering what the exact point of this class was. I would’ve preferred to have an extra 30 minutes for audio arts and creative computing as these classes always run short of time. This was a main issue I still feel hasn’t been resolved that we raised with the Dean back at the end of 2004. In saying this I have still enjoyed parts of Workshop and have been exposed to some great music so the whole hour hasn’t been a waste of time. I especially enjoyed Steve Reich’s Electric Counterpoint and Different Trains from this week’s class.

There was no forum this week as there were none to catch up on however I have really enjoyed Forum this semester, especially having the guest presenters such as Robin Minard during festival time. I feel it has been a great addition to the course and I’m looking forward to next semester.