iieiwrmeieweeiimeemmwreiweremweireeemeimwieewwrwweereireeiimeewmiwwwemwiewimeeeremeiewmemweewieewerwemwiimiewmeiwireiiwrrewmwewree
ewreirrmewwiemirrirwiermiemerweeirwiimweeeeiirerwrwiiwewemeirimemmeeimiiwwrmimiwweiwwmrmiriweeeiremriiemeweireerweeirmwewememriiew
eieewmwmwmrereeiwireeeewermeeereriirriwmemermmmimewmeerwemieieremrrewmemmmmmeirmrmriemmrmweimwrrimeemermiimwwiweeemereieemeeeeweww
eiwereiirmieerwerieeieeereeieweeiieweiwrirmrewieemewiiemeiewmemmewrmreewemmeieiwimwiieieiireeemrmeewmmmmrermewiriiwireereemeirerem
mwrmeeemeeieeieereimmrweweeweeireweeweeieiiieememmwerrrrewewremreeemeeewimwwrewrmrrreeiwmrwewrrwmireemiwwieimieiweeewmmrmemmerieee
emiweiemewrmirerereeerwrmereemeweeiirewmrwwweeewwememrewmwewrmewmwrewemeeiirewwreeeeiweeeiirrimmeimrmrieieeerewrmwewemeerwewwmrwie
iriieweemwwmrwweeeeriirwerirmwiieiieeeerrerwmrmeeerireeweeeemmwmiiweeiewreweiewwiewwwwermrwemwiewwmrrwiiriereereimwieerrermeemerwr
rmimmrreeieerwmirwreiweewermririwmeemiewrieewrmemmmrrweeeieimmwriieeewiemewmemeereeewmwwmweemimewrrewrrermrmeeririiiweiiwwwimeerme
rmemmrweriiwiemeewiierimweierwremrreeweemeireerrrmwewiwwiiiwrwweewreeeirweemwewermeemiieeeiiereriwrererrwrmewiwiwwmeirewrieiiwrrrm
wmeweemireemieeeriererrmemeweewerewerrerwewirremereieririeiimrwireemeweeewirirrwirrmeeeewewriwmrweerremewmwmerrererreeemeriwerewee
erimeimremreierwrwemeeeeemeewwmrwerremeirrrmwewimrrieirewwiewwreeerierwewwmweeiwemrmewemiiewweewrweerremwerewieeweiwweiwwmwwmiieri
eeerrriwmmeweeewrerwrreeeeewemeiiermmeewirmiiremmieeeweiwiirwmeieemwemewmmmiemwiwwieemewerrememewmewieeiimmemrrwereierwieewerirwrr
mmeemerwermerieemiemewrireeeeiwieewrimeiwmiwrerwwrmreeerewreirrwwmieiewemrremmerrwweemiweweiwmmwmmweiirrieerimewmwwremwriweewimeme
rmwiiimeiirwriewmrweeewirwimiremeewrmemmmrrmeieeewwriweeriwrwreimirwewmmmieerewwewwwememimeieeeeewmrreeemmemeeewimeeremeeerriweemi
reewmeeewmiiweimermeeemeeewiwmewemeeweerrwememiweemrwmmiremirirmrerrweemermmewiwweeirmrwmewrmwweewiremimreewiwmeeiiriiwiiirrewmeiw
iereermmeimrwirreirrewerwrirrwemiemrieermwmimeiwwrrreemmermwiewwmiweewemeeewmiweeeriwwrewrweweremrreireiemieimweiieimeieiiemmiemmm
weemwewerrmereirwewiremimiimweeemmwieweieeerimeeweiewrmiwiiwmiemmrwemewemieirewmwieimimeemeeiiemrwrrememmemieiieiiwremmeeeemrewree
emerreiweierrrrirrrwemrmmweeremeeieewrmieeriireiwrrmeemieriereeirimweerwmiiieeimmmrwwewereerrmerreeeiwweirirmiwmeirmrwwmreewieeiie
emeeeimieweiwiiiwemeiiweirmmremwmwmieimmeewwwmerwermimeieieiiwimiewrremrmwewwmeemwermemrrereiemrwrmmimiimeimiieimireweeeirrewewwww
reiereieweerimriieeeeriereimrerweiwiiwirirmwweeiiwremrmriereewiieiererimmweeimrrmmmmmewmrmeeweemwerieiiewimrerrwwwmwmermrwerewrrir
wmmerwwiewriweierirrermemeireeerieememriiewrmmiemmwiweeieeewmrwmiiiiieimrmermirweeweiweeiiiemwwrmirrwemeewmeiemiimerieieiewmermrie
meiireemeemmiieiereemeeeiiiewrrmweewwremmeemirmewweerwwmmmeeeiiieerrmrwereweiiemewirremiemewewimmwrewiiewiriwiririwewrriwemeiewrii
eirrrmrwrrwrieiwriimiememeiiewweeiemrwewewirriiwmwwmimereerieewwrrmmrrmemereieeewimrreeiiwweeiwwweiiemrwimreieiimiwweremeeweemriwr
erriremerwwmremewriweemweerrweemeiwmimerieweiemmrrrwrmeirmrmewmwweeimrwmewwwrmemerimreerrewmrrewrieeemmwemwrwmeermwwemreeeewweweei
ireeeeeiirmeiireemmremrerirwererieewiwerimmeieerermmmiimeeieeiwmiimrermrewemmremimiwireeeremrereiemmemewrrereerewwrewimemreewmirir
rmeeimmmieeewiiimmeeewrwerewreeimeeweeiwwemimrwmwriwreiimeiieeeeewewewimrmiwrieemeeirweemieeimmmrmreereewmmmeirmiemwrrwriwmeieimwr
rwrimwrwemimimwweewiimremiweereeeeririeemeereeerweirweremrreeiwwmmieeewrwriemeimewreeierieermreieeirmmwwwweiwwieemmimrermreeeeeeri
iewmmeereweiiierieriirmwmemreiremiereemwimmwwmeemreiirreereemmreeimeiwwwrewriirewweewmmrwereemerieemiewiiirrremmerwrewmeririrweeiw
eiwiremwrireieemiieemerewrrwiieemerrmmemeiwwerewiemweewiemmeiemrwwirermrrewmeirmiieeeeeeewemeeeeiiimreeiiiwwewirrreeewriwreiimeiee
miermerwmeewrmeirwmemiweewwwmemwieeeeemeiieeeiiwrmwieewmiewwwewewmreerewrerweeewwmmermmwremwriemeeereerremmwierwiweeemwwmweirrriwe
eememewimrriererwrerwemweiemeierireeememewewieiirmwrwwerimwimiemiemimmmieweewwiierereemiiiwmwwrrwwemrwiiewereeimewrwrreieiwimwmrmr
wmmmeirrrirerwiimweewrieweiieimwiwiweiwiirwemeeererewrreiemwwiwrermmiwieirirrmeeiimriwewrrmrreeereeeeewmrwimrwrrmiewemwrwimreemwwi
eeeerrerwrierriermeeerwermmeeiwimmiereerwewimwewieremwewreimeeiwireriireemiemiwerweriewireeeemmererwmrmmreeererweemmerwrmirrmeeeee
meewreiirwrmmmwwemiimreeeiieweeeewiieeeermremewmermweerrermwwmemeerireiimwwiwewermeermmrreermimiiermeewereeeewmrwwrwmmerwwrimeeeii
rmiieeewwirimemmwermimeremrmeimmwiiewmmerrrieiiemwemwmmmewrmmeemreeewemewmewieeemieirwmmermeemreemieweeeiieweirremeieeeeemieiiieew
eemwrermeeeeeeeeemrrmieeeemwiewiieerrreiewmmeiwiwiirirmewewrwwrimeiermiwmrriweiiwweweewmwmmewwmrieieewwremiiiimririiiwmimewwmeieer
irrememieemrrmemrweerimmeimeeiwirimeeweweeewreeiermewiweweieieirrwwwrmereeiwermeeeirmieeeweiiewwwiereremeemmrmmwmmwwiiwiweieereimr
wwmremiiwrreeirrieewerweimweremeweemmmieriwemeemiwerirmeeeimerewmrrereeweiewermrimiwmwremireimriimiweewmmweeremewirrmiwwemmewmweee
ieremmmwrrmreereiweermewreiriewirerimrirerreemmwmeieriieeeemiirireemeiiewrmeermwmremmrwwmwmwewreirierrmewmwmewmmwwwemimrmmrmeewrmr
ewrrmriewreemmmmewwiewmewiiimrreeimeeieeewmeeweweiiwimiewrwriwwreremewwewmweeiemmrieiwermimmewireeweiwrirerewemeeieeewmeweeeiemmir
rremewemwwimiiweeiemerwiweiwreeeieerewreremweewieweermmrieermrimmermmeieirerririeeweireemeirwiiemwmiwrwwewrewrmeeeeemmmwremeeereem

20.11.08

Rakkad

5 ‘ 48



(3 mB)

Rakkad is written with an unusual combination of soothing environmental ambience along side rapid abrasive sound-objects. Said sound-objects are applied through generative algorithms designed by Nick Collins. The long ambience sweep provides an underlay to the spikes of discord. These two sources provide the instrumentation of the work and over the period seem to resolve, though never in intentional consonance. While the generative section runs of its own accord, the ambient section is performed “live” – by a computer musician. The structure of the piece takes on a subtle golden section, but does not develop to be any more climatic at one point than another. In some ways Rakkad is a corroboration of Musique Concrète with Spectral Music. The overall musical feeling of the piece is something of a psychotically prompt movement from one idea to the next, while simultaneously remaining almost boringly static. There is no decent explanation as to why this feels like the psyche of our age.


Rakkad.mp3 (8 mB)
| Documentation (Rakkad).zip (56 kB) | SuperCollider Patch.zip (4.1 mB)



13.11.08

TwentEway.Spas

.research project.



TwentEway.Spas marks the development of many creative ideas and sketches that I have grown into one work. Its idea is to map digital audio information to the parameters of graphic information – to create a multimedia work in which the different medias (sound and vision) are connected via the same, or similar data streams. I have related this to two different programming languages, one that I am at a novice proficiency with, SuperCollider (audiosynth.com), and another that I was completely new to, Processing (processing.org).

TwenTway.spas.zip (1.2 mB)
| Documentation.zip (124 kB)



30.10.08

.forum - week twelve.

Today's forum class was the last ever for me, which is really.

.sources.

Whittington, Stephen 23.10.08, "Stuff," Forum of EMU, Adelaide University.


28.10.08

Human Interface Devices (HID) in SuperCollider

.cc - week ten.

I've had some fun using the HIDDeviceService class in SuperCollider, which allows you to use USB devices like joysticks, mice and any other devices you have lying around your studio to input data into SuperCollider. Originally I programmed a patch to run with a 5-button Microsoft mouse, but the patch presented here is designed for a Apple/Logitech single button mouse.



// HUMAN INTERFACE DEVICE (HID)

// Initialise HID
(
// Searches all HID interface pages
HIDDeviceService.buildDeviceList(
usagePage: nil,
usage: nil
);


// Establish HID List

// Output Device Data
HIDDeviceService.devices.do({

// Args
arg dev, devIdx;

// Print out device information
["DEVICE:", devIdx, dev.manufacturer, dev.product, dev.usage, dev.vendorID, dev.productID, dev.locID].postln;
});


// Establish HID and element list

// Output Device Data
HIDDeviceService.devices.do({

// Args
arg dev, devIdx;

// Print out device information
["DEVICE:", devIdx, dev, dev.manufacturer, dev.product, dev.vendorID, dev.productID, dev.locID].postln;

// Loop and output elements
dev.elements.do({

// Args
arg ele;

// Output element information
["ELEMENT:", ele.type, ele.usage, ele.cookie, ele.min, ele.max].postln;
});
"------------------------------------------------".postln;
});


// Queue device for usage

// Queue Device
HIDDeviceService.devices.at(1).queueDevice; //apple mouse


// Establish HID List and query device for usage based upon Vendor and Product ID

// Device Information
~vendorID = 1452; //apple's vendor ID
~productID = 775; //apple's product ID

// Output Device Data
HIDDeviceService.devices.do({

// Args
arg dev, devIdx;

// Print out device information
if((dev.vendorID == ~vendorID) && (dev.productID == ~productID), {
HIDDeviceService.devices.at(devIdx).queueDevice;
["CONNECTED:", devIdx, dev.manufacturer, dev.product, dev.vendorID, dev.productID, dev.locID].postln;
});
});

// Attach action to a device

// Action for Device
HIDDeviceService.action_({

// Args
arg productID, vendorID, locID, cookie, val;

// Output
[productID, vendorID, locID, cookie, val].postln;
});
)

// Start / stop event loop (for device polling)
HIDDeviceService.runEventLoop; // 20 milliseconds
HIDDeviceService.stopEventLoop;

// BUFFer
(

var path = ((PathName.new(Document.current.path)).pathOnly) ++"sample/";
v = Buffer.alloc(s,2048,2);
b = Buffer.read(
server: s,
path: path++"macstartup.wav");


// SynthDef

//may need to run this code twice, although once should be fine.
SynthDef("skyBurn", { arg out=0, bufnum=0, trigRate = 0.5, wipeBins = 0.95;

var in, chain;

in = BrownNoise.ar(0.8); //try PinkNoise, WhiteNoise, BrownNoise, GrayNoise

chain = FFT(bufnum, in);

chain = PV_RandComb(chain, wipeBins, Impulse.kr(trigRate));

Out.ar(out, IFFT(chain).dup);

}).load(s);
)

// Create Instance
~randComb = Synth("skyBurn", [\out, 0, \bufnum, v]);

// Setup Action for skyBurn
(
var w, b, line, titleBox; //GUI

~paraOne;
~paraTwo;
~sliderOne;
~sliderTwo;

// Action for Device
HIDDeviceService.action_({

// Args
arg productID, vendorID, locID, cookie, val;

// Switch Parameter
~paraOne = switch (cookie)
{3} { rrand(95, 100) * 0.01 } //get a new value
{4} { rrand(0.0, 2.0) - 1.0 * 0.01 + ~paraOne } //mouse movement
{5} { rrand(0.0, 2.0) - 1.0 * 0.01 + ~paraOne }; //mouse movement

if((cookie == 3) && (val == 0), {
~paraTwo = rrand(1, 20) * 0.01; //{rrand(1, 100) * 0.01};
{~sliderTwo.valueAction_(~paraTwo)}.defer;
});

// Print feedback
["Button", cookie, "Value", val, "Para One", ~paraOne, "Para Two", ~paraTwo].postln; //feedback

// Input control information into GUI
{~sliderOne.valueAction_(~paraOne)}.defer;
{~sliderTwo.valueAction_(~paraTwo)}.defer;

});

//GUI



w = GUI.window.new( "Fonzeey", Rect( 128, 600, 408, 316 ));

w.view.decorator = FlowLayout( w.view.bounds );
w.view.background = Color( 0.0,0.714,0.96 );

//title
titleBox = SCStaticText(
parent: w,
bounds: Rect(20, 100, 410, 65)
);
titleBox.stringColor_(Color.white);
titleBox.background_(Color(0.0,0.714,0.96));
titleBox.string_("Phase Vocoder - Random Bin Comb");
titleBox.font_(Font("Arial Black", 25));

//heading one
titleBox = SCStaticText(
parent: w,
bounds: Rect(20, 100, 410, 65)
);
titleBox.stringColor_(Color.white);
titleBox.background_(Color(0.0,0.714,0.96));
titleBox.string_("Morph between Noise and Sample");
titleBox.font_(Font("Arial Black", 15));

//slider one
~sliderOne = SCSlider(w, Rect(20, 80, 400, 40));
~sliderOne.focusColor_(Color.white);
~sliderOne.action_({ // Input control information into Synth
~randComb.set(\wipeBins, [0.01, 0.99].asSpec.map(~sliderOne.value));
});

w.front;

//heading two
titleBox = SCStaticText(
parent: w,
bounds: Rect(20, 100, 410, 65)
);
titleBox.stringColor_(Color.white);
titleBox.background_(Color(0.0,0.714,0.96));
titleBox.string_("Trigger Rate for Random Ordering:");
titleBox.font_(Font("Arial Black", 15));

//slider two
~sliderTwo = SCSlider(w, Rect(20, 80, 400, 40));
~sliderTwo.focusColor_(Color.white);
~sliderTwo.action_({ // Input control information into Synth

~randComb.set(\trigRate, [0.1, 10.1].asSpec.map(~sliderTwo.value).round(0.1));
});

w.front;

)


HID.rtf (12 kB)
| exampleHID.mp3 (1.2 mB)


.sources.

Haines, Christian 23.10.08, "Human Interface Device," Lecture of EMU, Adelaide University.


27.10.08

≤≥

.forum - week eleven.



During Music Technology forum class we viewed a DVD titled OHS, which features many multi-media works and interviews written by / featuring some of the key figures in the short history of electronic music. Namely, the film features work of Steve Reich, Max Matthews, Robert Moog, Robert Moog, John Chowning and many others. Steve Reich's work was one of favourites - it presented the future of human sociality in a world with digital technology has connected with humanity entirely, to make our interaction wholly automated and fast.

.sources.

Whittington, Stephen 23.10.08, "Music Technology Forum" Lecture of EMU, Adelaide University.


22.10.08

.cc - week nine.


Still a work in progress. Currently this looks like it should, just all GUI elements are not working properly. I've had trouble doing this, as the BBCut Class Library is fairly difficult, or atleast unlike what I am used to when developing a GUI. While it probably looks a rushed effort, significant amounts of time went into this.

(
// Simplified Sound File Select Dialogue (Returns Handle to Sound File)
~sampleSelect = {

// Vars
var bufID;

// Read sound file into buffer and grab buffer id
bufID = Buffer.loadDialog(s);

// Return Buffer ID
bufID;
};
)
(
// Create Sample Handle
~sampleHandle = ~sampleSelect.value;
)
(
// Determine Sample Path
~samplePath = ~sampleHandle.path;
)

//use the GUI to find onsets for a loaded sample- use post to output the data array
Segmentation.new

(
// paste results here:
~data = [ [ 0, 0.44247916666667, 0.046009756624699, 1 ], [ 21239, 0.386375, 0.0027814882341772, 1 ], [ 39785, 0.8573125, 0.058457486331463, 2 ], [ 97502, 0.38320833333333, 0.015279575251043, 2 ], [ 115896, 0.78910416666667, 0.014642789959908, 2 ], [ 153773, 0.39583333333333, 0.044767320156097, 3 ], [ 172773, 0.40035416666667, 0.0050696325488389, 1 ], [ 191990, 0.84677083333333, 0.075923785567284, 1 ], [ 249257, 0.37785416666667, 0.018813425675035, 2 ], [ 267394, 0.37808333333333, 0.016685917973518, 2 ] ];
)

(

var w, clock, finalCut, finalCut2;
var buttonHi = 24, buttonStack = 20, textStack = 50, sliderStack = 80;
// GUI.window returns the window class for the current kit
// ; hence GUI.window.new instantiates a new window
w = GUI.window.new( "Cutter", Rect(128, 644, 520, 660));

// w.view.decorator = FlowLayout( w.view.bounds );
w.view.background = Color( 0.0,0.714,0.96 );

clock = ExternalClock(TempoClock(2.1));
clock.play;

5.do({ arg i; //, divLow = 1, divHigh = 2;

var b, line, titleBox;
var sf, cutSynth, cutProc, cutSlider;

b = SCButton(w, Rect(20, buttonStack, 75, buttonHi ))
.states_([
[ "Drum " ++ i ++ " Off", Color.black, Color.rand ],
[ "Drum " ++ i ++ " On", Color.white, Color.red ]
])
.action_({ arg butt;

//BUTTON ACTION
(

Routine.run({

sf = BBCutBuffer(~samplePath, 8, ~data);

s.sync; //this forces a wait for the Buffer to load

cutSynth = CutBuf3(sf); /*(
sf, //buffer
1.3, //random cut playback probab.
1.0, //ratio IOI
false, //attack env
false //release env
); */

cutProc = BBCutProc11.new; /*(
2, //sub division
4.0, //4.0, //barlength
2, //phrase bars 2
2, //numrepeats 2
1.0, //stutterchance
2, //stutterspeed divLow.round(1.0)
1.0 //stutterarea
);*/


finalCut = BBCut2(
cutSynth, // cut groups
cutProc // algorithm generating cuts
);

finalCut2 = finalCut.play;

});

)
//END BUTTON ACTION
});



titleBox = SCStaticText(
parent: w,
bounds: Rect(20, textStack, 410, buttonHi)
);
titleBox.stringColor_(Color.white);
titleBox.background_(Color(0.0,0.714,0.96));
titleBox.string_("Cut Length:");
titleBox.font_(Font("Arial Black", 15));

cutSlider = SCRangeSlider(w, Rect(20, sliderStack, 312, buttonHi));
cutSlider.lo_(0.2);
cutSlider.range_(0.4);
cutSlider.action_({ |slider|
cutProc.set(\divLow, (slider.lo * 8), \divHigh, (slider.hi * 8));
});


buttonStack = buttonStack + 100; //UI look
textStack = textStack + 100;
sliderStack = sliderStack + 100;

});
//END DO LOOP

//taken from here

{
arg divLow = 0.0;
var sliderPan, panL = 0.2; //v = SinOsc.ar(finalCut); //bad
var l, x, y, p, q, a, j, c, d;

p = LFSaw.ar(200);

q = LFSaw.ar(301);

sliderPan = SCSlider(w, Rect(400, 100, 40, 400));
sliderPan.focusColor_(Color.white);
sliderPan.action_({
//~randComb.set(\panL, [-1.0, 1.0].asSpec.map(sliderPan.value));
panL = ([-1.0, 1.0].asSpec.map(sliderPan.value).round(0.001));



});
sliderPan.value_(0.95);

//arg panVal = panL;
#l, x, y = BiPanB2.ar(
p,
q,
0.0,//panVal
0.1);


#a, j, c, d = DecodeB2.ar(4, l, x, y);

[a, j, d, c] // reorder to my speaker arrangement: Lf Rf Lr Rr

}.play;


// B-format encode

//from here

// B-format decode to quad

w.front;
)

//END

.sources.

Haines, Christian 16.10.08, "Spatialisation," Lecture of EMU, Adelaide University.


21.10.08

Nosferatu Re-Score Project Presentations

.aa - week eleven.

Today, students presented their re-score Nosferatu 'cuts' to the class.



My personal favourite re-scoring was presented was by John Delany. John composed an partially abstract electro-acoustic piece, which in my opinion worked beautifully to bring the film into a more fluid, enjoyable, emotional and (let's face it) electronic context. Dave Dowling's re-score was indeed quite typically Westernised - that is - conventional, however this is only a testament his fantastic re-score and hard work. I have approached film scoring with this method before and found although it might involve using 'clichés' it does not make the work any easier (much to my surprise). Again, an excellent project by Dave. Moving along, Ben Probert's piano re-score was brilliant I must admit - I am a sucker for Minimalism, and I give him full marks for his inventive use piano recording technique. Luke Digance's re-score was the most understated - not at all a busy score - though no other student used this approach it was actually quite effective. His decision to keep the score quiet made the 'scary' scenes all the more impacting.

.sources.

Harrald, Luke 21.10.08 "Class Presentations," Lecture of EMU, Adelaide University.


Nosferatu Re-Score Update

.aa - week ten.

My re-scoring project for the 1922 film "Nosferatu," is being developed into something that I did not originally have in mind - it's moving from a typical "sound-design" industrial soundtrack, to something more of a trash-goth '80s film clip. In the freedom that this project has given me - to create what ever I want (more or less), I would like to take the opportunity to create something not atypically Westernized in the soundtrack. As such, I want to firstly keep with the European culture of the film, but at the same time, bring it to a new demographic.


Nosferatu the Vampire VS. Adelaide's Night Train Theatre & Restaurant Logo

Ultimately I would like the re-score to feel a bit like a ride on the Ghost Train - 'cheesey' and fake but at the same time still very scary! This project has provided some challenges, working with a video of this length and requiring this many different tracks has caused my computer to get over encumbered at times.

.sources.

Harrald, Luke 14.10.08, “Sound Design for Film.” Lecture of EMU, Adelaide University.


15.10.08

pvFFT!

.cc - week eight.

Josh's and MCLD's extensions for SuperCollider did not integrate into my or the "most recent" build of SuperCollider for me. Basically, when I execute SuperCollider the post window prints errors. What I have created is a program that uses PV_RandComb, and I am hoping that once I have this issue resolved it will be a fairly simple process to add something like PV_OddBin or PV_EvenBin. These allow the author use selected bins from audio samples, and potentially to combine/morph them.



(
//create buffer
var path = ((PathName.new(Document.current.path)).pathOnly) ++"sample/";
v = Buffer.alloc(s,2048,2);
b = Buffer.read(
server: s,
path: path++"macstartup.wav");
)

(
//'enter' this code a couple of times to install it
SynthDef("Fonzeey", { arg out=0, bufnum=0, trigRate = 0.5, wipeBins = 0.95;

var in, chain;

in = BrownNoise.ar(0.8); //try PinkNoise, WhiteNoise, BrownNoise, GrayNoise

chain = FFT(bufnum, in);

chain = PV_RandComb(chain, wipeBins, Impulse.kr(trigRate));

Out.ar(out, IFFT(chain).dup);

}).load(s);

//make an instance
~randComb = Synth("Fonzeey", [\out, 0, \bufnum, v]);

)

(
//GUI
var w, b, line, titleBox;

w = GUI.window.new( "Fonzeey", Rect( 128, 600, 408, 316 ));

w.view.decorator = FlowLayout( w.view.bounds );
w.view.background = Color( 0.0,0.714,0.96 );

//title
titleBox = SCStaticText(
parent: w,
bounds: Rect(20, 100, 410, 65)
);
titleBox.stringColor_(Color.white);
titleBox.background_(Color(0.0,0.714,0.96));
titleBox.string_("Phase Vocoder - Random Bin Comb");
titleBox.font_(Font("Arial Black", 25));

//heading one
titleBox = SCStaticText(
parent: w,
bounds: Rect(20, 100, 410, 65)
);
titleBox.stringColor_(Color.white);
titleBox.background_(Color(0.0,0.714,0.96));
titleBox.string_("Morph between Noise and Sample");
titleBox.font_(Font("Arial Black", 15));

//slider one
y = SCSlider(w, Rect(20, 80, 400, 40));
y.focusColor_(Color.white);
y.action_({

~randComb.set(\wipeBins, [0.01, 0.90].asSpec.map(y.value));
});
y.value_(0.95);

w.front;

//heading two
titleBox = SCStaticText(
parent: w,
bounds: Rect(20, 100, 410, 65)
);
titleBox.stringColor_(Color.white);
titleBox.background_(Color(0.0,0.714,0.96));
titleBox.string_("Trigger Rate for Random Ordering:");
titleBox.font_(Font("Arial Black", 15));

//slider two
a = SCSlider(w, Rect(20, 80, 400, 40));
a.focusColor_(Color.white);
a.action_({

~randComb.set(\trigRate, [0.1, 20.1].asSpec.map(a.value).round(0.1));
});

w.front;

)

week8example.mp3 (1.4 mB)
| jakesFFT2.zip (460 kB)

.sources.

Haines, Christian 09.10.08, "FFT (2)." Lecture of EMU, Adelaide University.


13.10.08

Return of the Jedi

.aa - week nine.



This post is a review of an Kathryn Kalinak's article John Williams and "The Empire" Strike Back.


Kathryn quickly makes the point that "in composing the sound to go with the future, Williams doesn't look to any of the "avant-garde" composers like Varese or Cage..." (Kalinak) in discussing his landmark usage of late-Romantic orchestration. However one point I feel she neglects to raise is that the overarching story of Star Wars is about the colonialist power, the Imperials, warring against the liberal thinking rebels. Williams choice to use a style from probably the most nationalistic period of history seems fairly easily justified in my opinion. Warfare based cinematography and Romantically composed scores go together like beer and sunshine.

I found this excerpt that presents Williams approach to the project interesting:

"Steiner never reads scripts ("I run a mile everytime I see one"), Williams avoids them also, preferring to "react to the people and places and events ... of the film itself ... Williams taps cultural associations to create … persona." (Kalinak).

Williams' method to compose for the 'people and places and events' of the film itself, and to avoid the script is intriguing - while many composers would like to be involved in the project as much as possible (ie: read the script), I can understand why this would be the case. With so many specialists and figure-heads, like actors, costume and set designers having an impact on the film, it would be important to compose with an idea of how they combine toward a final product. I suppose at the end of the day the 'people and places and events' are the only things that will make the film - any of the concept designs and scripts are just plans of how to execute these.


.sources.

Harrald, Luke. “John Williams Film Music.” Lecture of EMU Space, Adelaide University.

Kalinak, Kathryn. “John Williams and ‘The Empire’ Strike Back.” Online article, accessed 9th of October, 2008.


12.10.08

And now...

.forum - week nine.

Today several third-year students presented work to the music technology school of the EMU.



Dave Dowling spoke about his SuperCollider work "Forced Unity." This piece has spawned a further interest into algorithmic composition, resulting in a extended research project for Dave. I curiously await to see what results from this project conducted by a highly dedicated student.

Luke Digance presented a piece which uses the audio programming language SuperCollider to imitate "retro" analogue music technology. Unfortunately the piece was not complete, however, what Luke has written so far is fantastic.

Ben Probert explained his Max/MSP program "Fantastical Metal" which creates piano music itself using mathematics, probability and statistics. While the music itself becomes boring after just a few minutes, it is none-the-less the work of a bright and patient mind.

And now...

.sources.

Whittington, Stephen 9.10.2008, "Third Year Presentations." Forum of EMU, Adelaide University.


19.9.08

ParaSpace

.cc - week seven.

I have had a play around with the following IXI SC classes: Scroll Number Box, Midi Keyboard, Grid, BoxGrid and ParaSpace. From the outset I liked the look of ParaSpace the most, so chose to explore it and come up with this little bit of code. It's based on an example provided in the ParaSpace help, but has some more UI functionality.



(

var popMenu, popItem, popMenu2, popItem2;

//synth
SynthDef( "SimpleSaw",
{arg freq, amp=0.01;

Out.ar(0, VarSaw.ar(freq, 0, amp)!2 * EnvGen.ar(Env.perc(0.01,0.4), doneAction:2));
}).load(s);

w = SCWindow("ParaSpaced", Rect(0, 60, 1342, 800)); //WINDOW

a = ParaSpace.new(w, bounds: Rect(0, 0, 1140, 798)); //A = PARASPACE

//SLIDER = DOT SIZE
y = SCSlider(w, Rect(1200, 80, 100, 40))
.focusColor_(Color.red(alpha:0.2))
.action_({
a.setNodeSize_(y.value * 1000);
});

//POP-UP MENU = DOT TYPE
popItem = ["rect", "circle"];
popMenu = SCPopUpMenu(w, Rect(1200, 40, 100, 20));
popMenu.items = popItem;
popMenu.action = { arg popMenu;
popItem.at(popMenu.value).postln;
a.setShape_(popItem.at(popMenu.value));
};

//POP-UP MENU = Background Colour
//popItem2 = ["red", "blue"];
//popMenu2 = SCPopUpMenu(w, Rect(1200, 0, 100, 20));
//popMenu2.items = popItem2;
//popMenu2.action = { arg popMenu2;
// popItem2.at(popMenu2.value).postln;
// a.setBackgrColor_(Color.popItem2.at(popMenu2.value));
// };

//popItem.at(popMenu.value)
//36 RANDOM DOTS
36.do({arg i; a.createNode(1100.rand.round(100), 700.rand.round(100)); a.setFillColor_(Color.new255(0, 0, 0))});

//CONNECTING DOTS
a.connectAction_({arg node1, node2;
Synth( "SimpleSaw", [\freq, node1.nodeloc.y]);
Synth( "SimpleSaw", [\freq, node2.nodeloc.x]);
});

t = Task({
inf.do({arg i;
6.do({arg j; a.createConnection(35.rand, 35.rand);});
176.do({arg j; a.deleteConnection(35.rand, 35.rand);});
0.6.coin(a.setNodeLoc1_(35.rand, 1.0.rand, 1.0.rand);
a.setNodeColor_(35.rand, Color.new255(255.rand, 0, 0));
);
a.deleteConnections;
0.5.rand.wait;
})
}, AppClock);

t.start;

w.front; //BRING TO FRONT
//w.fullScreen; //FILLSCREEN

)


ParaSpaced.rtf (4 kB)


.sources.

Haines, Christian 11.09.08, "Graphical User Interface (3)," External Lecture of EMU, Adelaide University.


18.9.08

Eraserhead

.forum - week eight.



Eraserhead, like many films by David Lynch, is open to interpretation, so I thought I would go into what I gathered about the film. First of all, the overarching theme I gathered from the film is that people are stupid. All the characters in this film are stupid, particularly the protagonist, Henry Spencer. Henry is dimwitted and slow. Henry meets his girlfriend's family who are deranged and extremely weird, but nevertheless agrees to marry Mary (under terrible circumstances). Mary soon leaves Henry and he is left alone with the ugly child. To me, the reason why the baby is a vulgar reptile is because its parents were Henry and Mary - two stupid people that really should not be having children. Also it's an ugly reptile because that's the way Henry perceives the baby - in many ways this is true of how male men see very young babies. In the scene in which the film takes its name "Eraserhead," Henry dreams his head falls off and is replaced by the baby's head. This is symbolic of the common idea that ones children are left to carry your legacy on after you pass away. However, what then happens to Henry's head is that it is taken to a factory by a child, and turned into an eraser in exchange for money. This again shows the stupidity of people, of Henry - he thought his ugly child would continue his legacy instead his "legacy" was sold and turned into an eraser - something that deletes things.

.sources.

Harris, David 18.09.08 "Eraserhead," Forum of EMU, Adelaide University.


Sound Design

.aa - week seven.

Randy Thom's article "Designing a Movie for Sound" has plenty of interesting thoughts about creating audio for a film. Many of his techniques and ideas are now well established in the field, however it is great to read an experienced expert go over some of the basics. I found his comments on the way all aspects of the sound design for a film should be formulated and woven together particularly pertinent:


"Sound, musical and otherwise, has value when it is part of a continuum, when it changes over time, has dynamics, and resonates with other sound and with other sensory
experiences." (Thom, 1999).

In a way this reminds me of the method with which most composers would work - not just sound designer's for film. All aspects of sound in a film must be considered a part of the overall composition. For example, character dialogue, 'foley' and sound effects become a part of the instrumentation in a high-quality piece of sound design.

.sources.

Harrald, Luke 09.09.08, “Designing a Movie for Sound,” Lecture of EMU, Adelaide University.

Thom, Randy 199, "Designing a Movie for Sound," FilmSound.org.


11.9.08

Music & Cogitation

.forum - week seven.



Today Sanad showed us a track he made called "The Disaster of August 30th," which was composed in a experimental and electronic vein. It was quite a good effort on his part, particularly as he mentioned he had spent little time on it. Once again the mixing and compositional ideas were great, however the area which I struggle to grasp in Sanad's pop music is the structure. While Stephen admitted to grasp some kind of a plot or story - a narrative - out of the piece, I must admit the flow of the piece on a meta-level was too hap hazardous. On a more micro-level the actual transitioned were composed quite nicely, I am just unsure about why they occurred where they did in the larger structure of the piece. Nonetheless, it was a promising work.

Edward Kelly presented an impressive Max/MSP patch, which iterates dots along a series of parabolas. I should congratulate Edward effort in refusing to shy away from the mathematics of Max, something I tend to do.

John Delany's piece "BinHex_25-06" (full marks on title) is quite an impressive one. It uses many different SuperCollider UGens as different sound sources - instruments for the music. I think the problem with the work is that while most of these sources are fantastically captivating - they bring the audience into the dark atmosphere - there are a couple that do not, and in my opinion detract from the piece.

.sources.

Whittington, Stephen 11.09.08 "Student Presentations," Forum of EMU, Adelaide University.


8.9.08

Nosferatu Rescore Progress

.aa - week six.

Both Dave Dowling and John Delany have opted to develop symphonic soundtracks for the Nosferatu re-scoring project. With the availability of incredible orchestra sound banks, like Garritan Personal Orchestra, there is potential both these projects to develop into something amazing. In my opinion a combination their orchestral pieces with subtly applied digital effects (such as reverbs) would really set their work apart.

Ben Probert - the man, the myth, the master – has thankfully decided to re-score a different section of Nosferatu to the rest of the class. He has decided to write some piano music for the film, which he intends to record on an old piano. This will be apart of his ‘old fashioned cinematic’ feel to the score. Ben did not expose much music in his presentation, which I am glad of, because I know when he is finished he will reveal something interesting and exciting.

Luke has an interesting theme of subtle aggravation in his re-score – the ambient sounds are designed to slowly were the audience down. What he revealed in his presentation was on-the-way to achieving this goal, and once it is finalised and polished the effect of this idea will be much greater in impact.

Crazy Matt seems to be in the drawing board stages still. A composition student played music by other composers to give us an idea for his influence for his project. His ideas for the score, such as a low-throbbing bass undercurrent throughout, seem well justified and I look forward to hearing take on scoring Nosferatu.

.sources.

Harrald, Luke 2008, “Foley and Music Presentations,” Workshop of EMU, Adelaide University.


5.9.08

lets get physical

.cc - week six.

This week I attempted to use the physical modeling technique called Karplus-Strong string synthesis.



(
//SYNTHS

//WHITE NOISE SYNTH
// Delayed Noise Generator - Envelope > Noise Generator > Delay
SynthDef("White Noise", {

// Arguments
arg midiPitch = 50; //input

// Variables
var burstEnv, noise, delay, att = 0.00001, dec = 0.001, out,
delayDecay = 10, trigRate = 1;
//delayTime = midiPitch.midicps.reciprocal,

// Envelope
burstEnv = EnvGen.kr(
envelope: Env.perc(att, dec),
doneAction: 0
);

// Noise Generator
noise = WhiteNoise.ar(
mul: burstEnv
);

// Delay
delay = CombL.ar(
in: noise,
maxdelaytime: midiPitch.midicps.reciprocal,
delaytime: midiPitch.midicps.reciprocal,
decaytime: delayDecay,
add: noise
);

// Output
Out.ar(
bus: 0,
channelsArray: delay.dup
);

}).send(s);

//PINK NOISE SYNTH
// Delayed Noise Generator - Envelope > Noise Generator > Delay
SynthDef("Pink Noise", {

// Arguments
arg midiPitch = 50; //input

// Variables
var burstEnv, noise, delay, att = 0.00001, dec = 0.001, out,
delayDecay = 10, trigRate = 1;

// Envelope
burstEnv = EnvGen.kr(
envelope: Env.perc(att, dec),
doneAction: 0
);

// Noise Generator
noise = PinkNoise.ar(
mul: burstEnv
);

// Delay
delay = CombL.ar(
in: noise,
maxdelaytime: midiPitch.midicps.reciprocal,
delaytime: midiPitch.midicps.reciprocal,
decaytime: delayDecay,
add: noise
);

// Output
Out.ar(
bus: 0,
channelsArray: delay.dup
);

}).send(s);

//GREY NOISE SYNTH
// Delayed Noise Generator - Envelope > Noise Generator > Delay
SynthDef("Grey Noise", {

// Arguments
arg midiPitch = 50; //input

// Variables
var burstEnv, noise, delay, att = 0.00001, dec = 0.001, out,
delayDecay = 10, trigRate = 1;

// Envelope
burstEnv = EnvGen.kr(
envelope: Env.perc(att, dec),
doneAction: 0
);

// Noise Generator
noise = GrayNoise.ar(
mul: burstEnv
);

// Delay
delay = CombL.ar(
in: noise,
maxdelaytime: midiPitch.midicps.reciprocal,
delaytime: midiPitch.midicps.reciprocal,
decaytime: delayDecay,
add: noise
);

// Output
Out.ar(
bus: 0,
channelsArray: delay.dup
);

}).send(s);

//BROWN NOISE SYNTH
// Delayed Noise Generator - Envelope > Noise Generator > Delay
SynthDef("Brown Noise", {

// Arguments
arg midiPitch = 50; //input

// Variables
var burstEnv, noise, delay, att = 0.00001, dec = 0.001, out,
delayDecay = 10, trigRate = 1;

// Envelope
burstEnv = EnvGen.kr(
envelope: Env.perc(att, dec),
doneAction: 0
);

// Noise Generator
noise = BrownNoise.ar(
mul: burstEnv
);

// Delay
delay = CombL.ar(
in: noise,
maxdelaytime: midiPitch.midicps.reciprocal,
delaytime: midiPitch.midicps.reciprocal,
decaytime: delayDecay,
add: noise
);

// Output
Out.ar(
bus: 0,
channelsArray: delay.dup
);

}).send(s);
)

// GUI INTERFACE

(
//GUI
var w, b, line, titleBox;
var popper; //pop-up

~notes = Pseq([1, 12, 5, 7, 11], inf).asStream;

w = GUI.window.new( "WEIMER".scramble, Rect( 128, 64, 258, 150 )); //window size

w.view.decorator = FlowLayout( w.view.bounds );
w.view.background = Color( 0.0,0.714,0.96 );

//heading
titleBox = SCStaticText(
parent: w,
bounds: Rect(20, 100, 412, 65)
);
titleBox.stringColor_(Color.white);
titleBox.background_(Color(0.0,0.714,0.96));
titleBox.string_("STRINGZ¨");
titleBox.font_(Font("Arial Black", 25));

//button 1
SCButton(w, Rect(20,20,80,26))
.states_([["Play", Color.black, Color.white]])
.mouseDownAction_({
(
Pbind(
\dur, Prand([0.1,0.1,0.2,0.3,0.5,0.8,], inf), // [0.5, 1.0, 1.5]
\instrument, \++t.at(popper.value)
).play
);
});

//pop-up menu
t = [
"White Noise",
"Brown Noise",
"Pink Noise",
"Grey Noise"
];
popper = SCPopUpMenu(w,Rect(10,10,166,26));
popper.items = t;
popper.background_(Color.white);
popper.action = { arg popper;
t.at(popper.value).postln; //post selection
};

//slider
e = EZSlider(w, // window
250 @ 24, // dimensions
"MIDI Note:", // label
ControlSpec(0, 127, \lin, 1.0), // control spec
{|slid| Synth( \++t.at(popper.value), \midiPitch, 0)},// slid.value.asInteger.postln
50 // initVal
);


//a = SCSlider(w, Rect(20, 80, 100, 40))
// .focusColor_(Color.white)
// .step_(1)
// .action_({
// Synth(\++t.at(popper.value), \midiPitch, (a.value * 100).round(1)) //a.value (a.value * 100)
// });

w.front;

)

wksix.mp3 (788 kB)
| letsgetphysical.rtf (12 kB)

.sources.

Haines, Christian 04.09.08, “Physical Modelling (1),” Lecture of EMU, Adelaide University.


4.9.08

Scientific

.forum - week six.



During forum student's presented the sound files they have created which are designed to embody each of the Nine Indian Emotions. Stephen mentioned a study which revealed that blind people were more able to perceive alterations in voice tone, and able to discern from that information about their emotion state more accurately than people with unimpaired vision. The findings of our own study conducted today (with no blind subjects) was that cliché motifs - sounds - were easiest to relate to the emotion they were linked with. From this information, in conjunction with the study using blind subjects, I would have to suggest my theory that sampling an idea is one of the easiest, quickest and most direct ways to convey an emotion to modern people. Modern people. The samples I provided for the task were taken mostly from very new music - it came to my attention that 'new' and 'cliché' is not as effective an old cliché. While that may seem bleedingly obvious, it has certainly given me a new perspective to consider when composing music using samples.

.sources.

Whittington, Stephen 04.09.08 "Emo Presentations," Forum of EMU, Adelaide University.


3.9.08

.cc - week five.

This week marks a bit of a breakthrough in terms of getting UI elements linked to SynthDefs. Thanks to Dave for helping me out. The program 'freezes' on Fast Fourier Transform frames and also the hop sizes can be altered. I also discovered an area of the FFT UGens - pack and unpack - which I may be able to use in relation to my research project on visual music. These UGens generate data related to an audio signal.



(

var fftBuf, sndBuf, chain,
path = ((PathName.new(Document.current.path)).pathOnly) ++"Samples/"; //PreGUI

// Buffer Creation - store FFT data
fftBuf = Buffer.alloc(
server: s,
numFrames: 2048,
numChannels: 1
);

// Place Sound into Buffer
sndBuf = Buffer.read(
server: s,
path: path++"houston.wav"
);


//Synth

SynthDef("AudioIce", { arg out=0, bufnum=0, soundBufnum=2, hopSize = 0.5, freeze = 0;
//freeze and hopSize to be effected by UI
var input, chain;

input = PlayBuf.ar(
1, //channels
soundBufnum, //buffer num
BufRateScale.kr(sndBuf), //rate
loop: 1);

chain = FFT(fftBuf, input, hop: hopSize);

chain = PV_MagFreeze(chain, freeze: freeze);

Out.ar(0, 0.5 * IFFT(chain).dup);

}).send(s);

//Make an instance:
~magFreeze = Synth("AudioIce", [\out, 0, \bufnum, fftBuf, \soundBufnum,sndBuf]);
)

(
//GUI
var w, b, line, titleBox;

w = GUI.window.new( "AudioIce", Rect( 128, 64, 180, 230 ));

w.view.decorator = FlowLayout( w.view.bounds );
w.view.background = Color( 0.0,0.714,0.96 );

titleBox = SCStaticText(
parent: w,
bounds: Rect(20, 100, 410, 65)
);
titleBox.stringColor_(Color.white);
titleBox.background_(Color(0.0,0.714,0.96));
titleBox.string_("Pausing effect:");
titleBox.font_(Font("Arial Black", 15));

SCButton(w, Rect(20,20,80,26))
.states_([["Freeze", Color.black, Color.white]])
.mouseDownAction_({ |freeze|
~magFreeze.set(\freeze, 1);
})
.mouseUpAction_({ |freeze|
~magFreeze.set(\freeze, 0);
});

titleBox = SCStaticText(
parent: w,
bounds: Rect(20, 100, 410, 65)
);
titleBox.stringColor_(Color.white);
titleBox.background_(Color(0.0,0.714,0.96));
titleBox.string_("FFT Windowsize:");
titleBox.font_(Font("Arial Black", 15));

a = SCSlider(w, Rect(20, 80, 100, 40))
.focusColor_(Color.white)
.action_({|hopSize|
~magFreeze.set(\hopSize, a.value);
});

w.front;

)

MagFFT.rtf
| houstonnnnnnn.mp3 (804 kB)

.sources.

Haines, Christian 28.08.08, “FFT (1),” Lecture of EMU, Adelaide University.


2.9.08

THESE GUYS ARE FROM ENGLAND AND WHO GIVES A SHIT

.forum - week five.



Negativland - crude and slightly amusing, I must admit... I can't imagine the hysteria which lyrics like "Christianity is stupid / Communism is Good" must have caused (in the eighties) without grinning like an idiot. In fact Negativland used the track to create hoax - that they had been banned playing in the United States - and the news media ate it all up. Anyway, I found this interesting interview with Mark Hosler of Negativland, it provides an interesting insight into their work:



.sources.

Whittington, Stephen 28.08.08 "Negativland," Forum of EMU, Adelaide University.


Em oceans

.forum - week four.

A recent and growing interest in ‘mash-up art’ and ‘culture jamming’ has lead me to taking a slightly different approach for the Nine Indian Emotions composition exercise. Composing music using fragments of other artist's work is something that is faced with unfortunate controversy. After being rigorously schooled in the laws of copyright at university, I was again reminded of the problems mashup artists faced when I legally downloaded Girl Talk’s album Feed the Animals from illegal-art.net. He’s employed the same release model as Radiohead - pay what you want. After I selected to pay $0 a curious survey question came on screen:



Well I do value music made from sampling – so I’ve decided to sample the following tracks for my composition exercise. I have not used any lyrical sampling.

hasya (happiness, joy, humour)

MDSLKTR - Em oceans, Happy Birthday

adbhuta (wonder, reverence)

Phillip Glass – Vessels, Koyaanisqatsi

veera (courage, heroism)

Meshuggah – In Death Is Death, Catch 33

karuna (compassion, pathos, love)

The Ting Tings - Great DJ, We Started Nothing

krodha, rudra (anger, fury)

MDSLKTR: Em oceans, Happy Birthday

bhibatsa (disgust, loathing)

Meshuggah – In Death Is Death, Catch 33

bhayanaka, bhaya (fear, terror)

MDSLKTR - Em oceans, Happy Birthday

shoka (sorrow)

NIN – The Downward Spiral, The Downward Spiral

shanta (serenity, peace)

MDSLKTR: Em oceans, Happy Birthday

.sources.

Whittington, Stephen 21.08.08 “The 9 Classical Indian Emotions,” Forum of EMU, Adelaide University.


27.8.08

.cc - week four.

This week I took a look at the BBCut Library created for SuperCollider by Nick Collins, and there is plenty of cool stuff to find here. Unfortunately I am still spending a lot of time trying to get UI elements like sliders and button connected to audio synthesis - but now am getting somewhere. In the 'cutters.zip' link below I have included the SC code and a drum beat sample taken from Led Zepplin's "When The Leavy Breaks" (I took from Beastie Boy's "Rhymin' and Stealin'" though).




cutters.zip (872 kB)
| wk4example.mp3 (764 kB)


.sources.

Haines, Christian 21.08.08, “Splice and Dice.” Lecture of EMU, Adelaide University.


21.8.08

First-Years: better than China at the Olympics

.forum - week three.



I have decided in the spirit of democratic unfairness to review only some of the presentations made in Music Technology Forum.

Jacob Simionato's piece which I later found out was called "I Say Concrete Without a French Accent?" was very impressive. I wonder why there is a question-mark in the title?

Alex Bishop's recording of the band Behind These Walls was smartly put together.

Joshua Thompson's part in making the animation "Toothbrush Moustache" was quite fantastic, the sound design/music was exceptionally chosen. Surely it could not be that difficult being a Moustache though.

The quality of material offered all presentations was very high, I feel that there is a solid group among the first-year students.

.sources.

Whittington, Stephen 14.08.08 “1st Year Presentations.” Forum of EMU, Adelaide University.


Grain Synth

.cc - week three.

I struggled with this... it's coming.

.sources.

Haines, Christian 14.08.08, “Granular Synthesis (1),” Lecture of EMU, Adelaide University.


15.8.08

Simple SuperCollider GUI

.cc - week two.

Unfortunately I missed the class where GUI's were linked to Synths - here's my attempt nonetheless:



wk2.mp3 (282 kB)
| wk2UI(2).rtf

(
SynthDef("fmStyle", {

// Arguments
arg cFreq = 440, // Carrier Frequency
cAmp = 0.1, // Carrier Amplitude
mFreq = 440, // Modulator Frequency
mAmp = 0.1; // Modulator Amplitude

// Variables
var car, // Oscillator
mod, // Modulator
env; // Envelope

// Unit generators
mod = SinOsc.ar(
freq: mFreq,
mul: mAmp
);
car = SinOsc.ar(
freq: cFreq + mod,
mul: cAmp
);

// Output
Out.ar(
bus: [0,1],
channelsArray: car
);
}).load(s);
)

(
~g = Synth("fmStyle");
)

(
// Variables
var window, sliderData, flowLayout, line, titleBox, colourMain = Color(0.0,0.714,0.96);

// Build Slider Data
sliderData = [
// Label Min Max InitMin Param
["Carrier Freq", [10.0, 5000.0], 200.0, \cFreq],
["Carrier Amp", [0.0, 1.0], 0.1, \cAmp],
["Mod Freq", [0.1, 200.0], 0.1, \mFreq],
["Mod Amp", [0.1, 100.0], 0.1, \mAmp]
];

// Window Setup
window = GUI.window.new(
name: "Simple Controller", //Name
bounds: Rect(20, 400, 420, 200)
).front;

flowLayout = FlowLayout(window.view.bounds);
flowLayout.gap_(Point(0, 0)); //Dave's gap code

window.view.background = colourMain; //BG Colours

window.view.decorator = flowLayout;

//Enter the interface title:
titleBox = SCStaticText(
parent: window,
bounds: Rect(20, 100, 410, 65)
);
titleBox.stringColor_(Color.white);
titleBox.background_(colourMain);
titleBox.string_("1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM".scramble);
titleBox.font_(Font("Arial Black", 35));

//Make a line:
line = SCStaticText(
parent: window,
bounds: Rect(2,2,440,2)
);
line.background_(colourMain);

// Build Control consisting of Label, Min NumBox, Range Slider, Max NumBox,
sliderData.do({

// Arguments
arg val, idx;

// Variables
var guiEZ, specGUI;

// Build Slider
guiEZ = EZSlider(
window, // window
400 @ 24, // dimensions
val[0], // label
ControlSpec(val[1][0], val[1][1], \lin), // control spec
{|ez| ~g.set(val[3], ez.value);}, // action
val[2] // initial Value
);
});
)


Thanks Dave.

.sources.

Dowling, Dave 11.08.08, " Creative Computing IIIB – Week 2 – Semester 2, 2008: “Graphical User Interfaces (2),” http://notesdontmatter.blogspot.com/


6.8.08

Listening to music while doing something else... like err breathing?

.forum - week one.

It's true that people listen to music while they play video games and ride the bus and cook dinner for their children. But should we really be that concerned?

I remember one day in high-school my science teacher encouraged students to never listen to music while doing homework. He described the way that we (humans) can only focus our brains toward a certain amount at any time, and any amount focussed toward music in the background was a waste. A wasted portion of our attention span, or "chunk" of our brain - that could be focussed on something else, like chlorophyll I guess. This is an interesting point of contention because I do not believe that the answer that as "black & white," that is to say, while this may be true for some it may not for others. Unfortunately we are not robots and do not really understand the full capabilities and attributes of our brains, but depending on the said brain different responses to music could be evoked. It is from this philosophical standpoint that I tend to lean kindly toward visuals with music.

.sources.

Whittington, Stephen 31.07.08, "Technology Theory & Culture." Forum of EMU, University of Adelaide.


4.8.08

A Symphony of Horror

.aa - week one.

Nosferatu: A Symphony of Horror is one of many German expressionist films made during the period after WWI. In this time many science fiction and horror films were created, many of which live on today in re-makes, re-scores and so forth. I am going to be making a new score for a selected scene scene of the film. Metropolis was similarly re-scored by the New Pollutants in 2005.



In my effort to re-score a part of this film I am intending to really bring out the horror and mystery of Orlok. I hope to add some emotion to the old film.



.sources.

Harrald, Luke 29.07.08, "Film Sound Design," Lecture of EMU, University of Adelaide, South Australia.


I am the operator of my SuperCollider GUI

.cc - week one.

This is my first experiment with creating a GUI in SuperCollider. It's a "Gain Envelope" program, an idea I borrowed from Peak. Note that at this stage it's a bit like Anna Kornikova, it looks good but doesn't actually do anything.

SuperCollider has plenty of options for the creation of UI's. I had a look at a video on youtube that uses the WiimoteLib class to use a Wii controller with SC.



(

var a, env, c, combo, comboInfo, loadButton, saveButton, previewButton, soundFile;

//window
a = GUI.window.new( "Gain Envelope...", Rect(158, 185, 360, 315));
a.view.decorator = FlowLayout(a.view.bounds);

comboInfo = ["Fade In", "Fade Out", "Retro Synth", "Random"];
combo = SCPopUpMenu(a, Rect(10,10,100,20));
combo.items = comboInfo;
combo.background_(Color.white);
combo.action = {/*ACTION*/};

//envelope
env = SCEnvelopeView(a, Rect(0, 0, 350, 100))
.thumbSize_(5)
.drawLines_(true)
.fillColor_(Color.black)
.selectionColor_(Color.red)
.drawRects_(true)
.value_([(0.0, 0.25 .. 1.0), (0.0, 0.25 .. 1.0)])
.setEditable(0,false);
a.front;

//buttons
loadButton = SCButton(a, Rect(10,10,114,20))
.states_([
["Load", Color.black, Color.white],
["Loading file", Color.black, Color.grey]
])
.action_({/*ACTION*/});

saveButton = SCButton(a, Rect(10,10,114,20))
.states_([
["Save", Color.black, Color.white],
["Saving file", Color.black, Color.grey]
])
.action_({/*ACTION*/});

previewButton = SCButton(a, Rect(10,10,114,20))
.states_([
["Preview", Color.black, Color.white],
["Previewing", Color.black, Color.grey]
])
.action_({/*ACTION*/});

//sliders
b = [0, 100].asSpec;
c = SCNumberBox(a, Rect(10, 20, 40, 20));
j = SCSlider(a, Rect(10, 80, 305, 20))
.focusColor_(Color.red(alpha:0.2))
.action_({
c.value_(b.map(j.value).round(0.01))
});

//sound file
soundFile = SCSoundFileView.new(a, Rect(20,20, 350, 120));

f = SoundFile.new;
f.openRead("sounds/a11wlk01.wav");
f.inspect;

soundFile.soundfile = f;
soundFile.read(0, f.numFrames);
soundFile.elasticMode = true;

soundFile.timeCursorOn = true;
soundFile.timeCursorColor = Color.black;
soundFile.gridColor = Color.white;
// soundFile.waveformColor = Color.grey;
soundFile.timeCursorColor = Color.grey;
soundFile.setSelectionColor(0, Color.grey);
soundFile.timeCursorPosition = 2050;
soundFile.drawsWaveForm = true;
soundFile.gridOn = true;
soundFile.gridResolution = 0.2;

)


ui.rtf


.sources.

Haines, Christian 31.07.08, "Graphical User Interface (1)," Lecture of EMU, Adelaide University.


26.6.08

Galaxy2

Jake Morris
5 ‘ 11

Galaxy2 is multichannel work based on the sound of new environment. It explores the fibonacci series, which helps to establish the feeling of environment. Adding a flavour of ‘the natural world’ into this piece is little unusual considering it is a highly electronic piece – conceived completely digitally. As such, Galaxy2 is mesh of natural and digital worlds. Like many electronica works Galaxy2 is quite mathematic and angular, however some biased random generators add a level of mysteriousness to the work. Galaxy2 should interact with its listener – who is encouraged to realise it visually, sparking the imagination into a new place. The listener is also encouraged to move his or her head around during playback of the piece, as this creates vastly different sounds. Galaxy2 was largely inspired by the Space Odyssey series by Sir Arthur C. Clarke, and musically by Atmosphères (György Ligeti) which serves as the opening of the 2001 film by Stanley Kubrick and the recently passed away Clarke.


(score fullsize: 1.8mB)

Galaxy2.mp3 (stereo bounce 7.1 mB)

SuperCollider Code:

// GALAXY2.6180039987 (6 CHANNEL or 5.1)
// jake morris

// SYNTHDEF
(

SynthDef("Europa", {

// Arguments
arg out, //output bus
sustain, //note sustain time
freq, //frequency
amp = 0.99; //amplitude

// Variables
var partials = 9, //number of partials
waveshape, //osc
envStruct, //envelope shape
envGen, //envelope instance
final, //final osc with env and low-pass filter
a, b;

//ENV
envStruct = Env(
levels: [0.0,0.75, 0.75, 0.0],
times: [3.0, sustain, 3.0],
curve: 'sine'
); //.plot;

envGen = EnvGen.kr(
envelope: envStruct,
gate: 1.0,
doneAction: 2.0
);

//Osc
waveshape = Mix.fill(10, {SinOsc.ar(freq + freq * [Rand(1.0, 5.0), Rand(1.0, 5.0)], 0, amp / partials) }) * envGen;


final = RLPF.ar(waveshape, 22050, 0.1);

#a, b = final;

// OUTPUT
Out.ar(0, PanAz.ar(1, [a, b])); // channel 1 out
Out.ar(1, PanAz.ar(1, [a, b])); // channel 2 out
Out.ar(2, PanAz.ar(1, [a, b])); // channel 3 out
Out.ar(3, PanAz.ar(1, [a, b])); // channel 4 out
Out.ar(4, PanAz.ar(1, [a, b])); // channel 5 out
Out.ar(5, PanAz.ar(1, [a, b])); // channel 6 out

}).store;

)

//recording settings
s.recChannels_(6);
s.recHeaderFormat_("WAVE");
s.options.sampleRate_(44100);
s.recSampleFormat_("int24");

//TRIGGERs
(
//VARs
var baseDur = 3.0, //initial note duration
ratio = 0.6180339887, //inverse golden ratio
ratio2 = 1.6180339887, //golden ratio
f1 = 987, //starting frequency (fib.16)
f2 = f1 * ratio,
f3 = f2 * ratio,
f4 = f3 * ratio,
f5 = f4 * ratio,
f6 = f5 * ratio,
f7 = f6 * ratio,
f8 = f7 * ratio, //CLIMAX
f9 = f8 * ratio2,
f10 = f9 * ratio2,
f11 = f10 * ratio2,
f12 = f11 * ratio2,
f13 = f12 * ratio2,

partials = 9,
a1 = 0.1; //duration

// NOTEs
SystemClock.sched(0.0, { //0'00

Pbind(
\freq, Pseq([f1, f1 * 2, f1 * 3, f1 * 5, f1 * 8, f1 * 13, f1 * 21, f1 * 34, f1 * 55],1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur],9),
\instrument, "Europa"
).play;

});

SystemClock.sched(9.0, { //0'09

Pbind(
\freq, Pseq([f2, f2 * 2, f2 * 3, f2 * 5, f2 * 8, f2 * 13, f2 * 21, f2 * 34, f2 * 55], 1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur],9),
\instrument, "Europa"
).play;

});

SystemClock.sched(18.0, { //0'18

Pbind(
\freq, Pseq([f3, f3 * 2, f3 * 3, f3 * 5, f3 * 8, f3 * 13, f3 * 21, f3 * 34, f3 * 55],1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur * 2],9),
\instrument, "Europa"
).play;

});

SystemClock.sched(30.0, { //0'30

Pbind(
\freq, Pseq([f4, f4 * 2, f4 * 3, f4 * 5, f4 * 8, f4 * 13, f4 * 21, f4 * 34, f4 * 55],1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur * 3],9),
\instrument, "Europa"
).play;

});

SystemClock.sched(45.0, { //0'45

Pbind(
\freq, Pseq([f5, f5 * 2, f5 * 3, f5 * 5, f5 * 8, f5 * 13, f5 * 21, f5 * 34, f5 * 55],1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur * 5],9),
\instrument, "Europa"
).play;

});

SystemClock.sched(66.0, { //1'06

Pbind(
\freq, Pseq([f6, f6 * 2, f6 * 3, f6 * 5, f6 * 8, f6 * 13, f6 * 21, f6 * 34, f6 * 55],1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur * 8],9),
\instrument, "Europa"
).play;

});

SystemClock.sched(96.0, { //1'36

Pbind(
\freq, Pseq([f7, f7 * 2, f7 * 3, f7 * 5, f7 * 8, f7 * 13, f7 * 21, f7 * 34, f7 * 55],1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur * 13],9),
\instrument, "Europa"
).play;

});

SystemClock.sched(141.0, { //2'21

Pbind(
\freq, Pseq([f8, f8 * 2, f8 * 3, f8 * 5, f8 * 8, f8 * 13, f8 * 21, f8 * 34, f8 * 55],1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur * 21],9),
\instrument, "Europa"
).play;

});

SystemClock.sched(210.0, { //3'30

Pbind(
\freq, Pseq([f9, f9 * 2, f9 * 3, f9 * 5, f9 * 8, f9 * 13, f9 * 21, f9 * 34, f9 * 55],1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur * 8],9),
\instrument, "Europa"
).play;

});

SystemClock.sched(240.0, { //4'00

Pbind(
\freq, Pseq([f10, f10 * 2, f10 * 3, f10 * 5, f10 * 8, f10 * 13, f10 * 21, f10 * 34, f10 * 55],1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur * 5],9),
\instrument, "Europa"
).play;

});

SystemClock.sched(261.0, { //4'21

Pbind(
\freq, Pseq([f11, f11 * 2, f11 * 3, f11 * 5, f11 * 8, f11 * 13, f11 * 21, f11 * 34, f11 * 55],1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur * 3],9),
\instrument, "Europa"
).play;

});

SystemClock.sched(276.0, { //4'36

Pbind(
\freq, Pseq([f12, f12 * 2, f12 * 3, f12 * 5, f12 * 8, f12 * 13, f12 * 21, f12 * 34, f12 * 55],1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur * 2],9),
\instrument, "Europa"
).play;

});

SystemClock.sched(288.0, { //4'48

Pbind(
\freq, Pseq([f13, f13 * 2, f13 * 3, f13 * 5, f13 * 8, f13 * 13, f13 * 21, f13 * 34, f13 * 55], 1),
\dur, Pseq([a1 * 55, a1 * 34, a1 * 21, a1 * 13, a1 * 8, a1 * 5, a1 * 3, a1 * 2, a1],1),
\sustain, Pseq([baseDur],9),
\instrument, "Europa"
).play;

});

)


6.6.08

.forum - week twelve.

This week we watch a few DJing tutorials, including an interesting one called "How to Rock a Party," host by Z-Trip. He, like many in this area, has a pretty unusual way of speaking. I understand he is ranked something like the ninth best DJ in the world, and although he seemed a fair outgoing and outspoken bloke, he does not seem like he is conceited.

We watch the "Window Licker" video clip made by Chris Cunningham. To be honest, so far I have not really gotten into his work. Having said that, he has worked with a slew of fantastic eletronica artists from the brilliant Warp label.



.sources.

Whittington, Stephen 05.06.08, "Scratch & Video Clips," Forum of EMU, Adelaide University.


relax and enjoy...

.cc - week ten.

This week in SuperCollider I have added another line to the melodic stream and added some modal transposition.


stream3.rtf (4 kB)


(

s = Server.local;

SynthDef( "PlesantAdventure", {

arg freq, dur=1.0;

var osc;

osc = SinOsc.ar( [freq,freq+0.05.rand] ) * EnvGen.ar(

Env.perc(0.05, 0.75, 0.75, -4), doneAction: 2, levelScale: 0.3, timeScale: dur

);

Out.ar(0,osc);

}).send(s);

)

(

var line1,
line2;

line1 = Pbind(
\instrument, "PlesantAdventure",
\dur, 0.15,
\degree, Pseq([ Pshuf(#[0, 3, 7], 3), Pseq([0, 6, 7]) ], 1)
);

line2 = Paddp(
\mtranspose,
Pseq( [0, 3, 6, 2, 5, 1, 4]),
Ppar([
line1,
Padd(\mtranspose, 7, line1),
Padd(\mtranspose, -2, line1)
])
);


Pseq([
line1,
line2,
Pstretch(1.5, line2)
], inf).play
)




.sources.

Haines, Christian 22.06.08, "Streams (3)," Lecture of EMU, Adelaide University.


30.5.08

"the power is yours!"

.forum - week eleven.

8 ways to make the Electronic Music Unit more environmentally friendly:

1.
Move to Outer-space.
The amount of CO2s used by cars in Earth’s orbit is little to none.



2.
Rely solely on solar power.
Orbiting Earth allows one to constantly stay on the ‘day-side’ of the planet, hence giving students 24/7 access (See: terms and conditions) to solar power.

3.
Recruit more ‘green’ people.
People like hippies and vegans are very environmentally alert, have strong morals grounded on saving the planet.

4.
Install “Braincaps” on all EMU students. Communication will be made solely through braincaps.
Telephathic Braincap communication is even more energy efficient than sending an E-mail, because they require a computer. Oh yeah, computers are bad!

5.
Recycle.
Recycling plays a crucial part in the survival of both the EMU and the planet Earth. The diet will consist solely of Soylent Green.

6.
“A Soma a day keeps the Jim-Jams away!”
Because life in Outer-space may become a bit like living in a mental asylum, eating nothing but toothpaste, Soma will be provided by the lectures.

7.
Habitat.
Atmosphere Laboratories will allow students to reconnect with their original habitat on Earth. Common multimedia habitats would include the forest, the beach and many other environs.

8.
Collaboration.
Students will be encouraged to bring traditional Classical and Jazz music students into the EMU, with a view to establishing long lasting collaborations. EMU students will truly be the ‘avant-garde’ musicians, bringing music toward a more sustainable world.

.sources.

Whittington, Steven and Harris, David 29.05.08, “The Philosophy of Technology,” Forum of EMU, Adelaide University.


scratch

.forum - week ten.

“Scratch” is a great documentary, which outlines the short history of Turntablism. It interviewed a number of key artists in the field, including Grand Wizard Theodore, Grand Mixer QBert, DJ Shadow, DJ Krush, Mix Master Mike and many others.



Scratching is such an impressive looking skill and certainly an area where technology and improvisation meet in an effective way. The use of ‘sampling’ by these artists, particularly in the highly instrumental music of DJ Shadow, is a significant part of their artform. Some musicians have a difficult time accepting this – the art of ‘digging’ as they describe it, can appear to be stifling on their creativity. Coming from a classically trained background, I must admit that ‘digging’ was idea I that I was slow to grow upon. However, since my naïve childhood days I have done a complete back flip on the idea – to the point where I have even sampled at times in my own music. In the grand scheme of music in this day and age, sampling is a really practical way of making music. Recycling the enormous amount of material that exists out-there is not only a viable way of making art, but a necessity of the twenty-first century world.

.sources.

Whittington, Stephen 22.05.08, "Turntablism," Lecture of EMU, University of Adelaide.


20.5.08

A few words from veterans of the EMU

.forum - week nine.

This week in Music Technology Forum two emerging artists who came through the same degree at the Electronic Music Unit as the one I am doing presented some of their work and approaches to creativity.

Seb Tomczak presented a few projects that he has coordinated. The first of these was an album he wrote this year called Automaton. This album was created using a single 11.6 millisecond sound. Seb has an artistic obsession with small things, as suggested by track three – ‘the emphasis is on small things’. This fixation is ingrained too in his ongoing Milkcrate project, which involves sound artists working within specific restraints – rules – by which they must write music. One of these restraints is that the instruments of the session must fit into a Milkcrate (and hence be small). I have never been involved in a “Milkcrate” session, but have certainly had the opportunity to if I wanted.


Darren Curtis has, for as long as I can remember, been interested in using sound to heal as well as using it to represent patterns in nature and supernature, by which I believe he means Outer-Space. Also, he is interested in “Ancient Sound,” something to do with Pyramids and patterns and maybe religion (?). How all of these things tie together I am still figuring out. I am fairly sceptical of his ideas, however I am sure that there is a large group of people who would not be. Further, to comment harshly on his work would really be inappropriate before I learn more about what he does – needless to say I am not yet sold on his music – where it is going, what it is hoping to achieve for him, and so forth.


.sources.

Tomczak, Sebastian and Curtis, Darren 15.05.08, "Postgraduate Presentations," Forum of EMU, Adelaide University.


19.5.08

Streamworks

.cc - week nine.

This week I have continued using streams in SuperCollider. I've pinched a small motive/idea from Phillip Glass, his minor chord with a flattened 6th found in the peice "Dance 8." This version is fairly different though.


streams(2).rtf


(

s = Server.local;

SynthDef( "Glass", {

arg freq, dur=1.0;

var osc;

osc = SinOsc.ar( [freq,freq+0.05.rand] ) * EnvGen.ar(

Env.perc, doneAction: 2, levelScale: 0.3, timeScale: dur

);

Out.ar(0,osc);

}).send(s);

)

(

var wait,
a,
b,
c = 60; //MouseY.kr(minval: 30, maxval: 80); //THE BASENOTE

a = Pshuf.new(
list: [
Pseq.new([c, c + 3, c + 7], {rrand(1,2)}),
Prand.new([c, c + 3, c + 7], {rrand(1,2)}),
Pshuf.new([c, c + 3, c + 7], {rrand(1,2)}),
Pseq.new([c, c + 3, c + 8], {rrand(1,2)}),
Prand.new([c, c + 3, c + 8], {rrand(1,2)}),
Pshuf.new([c, c + 3, c + 8], {rrand(1,2)})
],
repeats: inf //{rrand(5,10)}
);

b = a.midicps.asStream; //TO STREAM

wait = rrand(0.1,0.9); //0.2; //WAIT DUR

Task({ //TO SYNTH
inf.do({
Synth("Glass", [ \freq, (b.next), ]);
wait.wait;
});
}).play

)






.sources.

Haines, Christian 15.05.08, "Streams (2)," Lecture of EMU, Adelaide University.


13.5.08

Peter Dowdall on Sound Engineering

.forum - week eight.



Engineer and Producer, Peter Dowdall, who has worked on the like of Britney Spears (above) came to the Electronic Music Unit last Thursday.

Dowdall spoke about his life and time spent in the Sound Engineering / Production industry. A lot of his ideas on the topic were not new to me but it is always useful to go over things - like the importance of Autotune – and also to hear that the production techniques are fairly universal (he has worked primarily in the United States).

One thing that really stood out was the fanatical and fastidious organisation which Dowdall puts into his work in the studio. It really was amazing just hearing how Dowdall goes about planning his recording sessions to the finest detail, and his numerous contingency plans should problems arise. This pre-session preparation was almost like he was planning a trip to the moon – this was the main ethic of this field of work that Dowdall impressed upon me.


.sources.

Dowdall, Peter 08.05.08, "Sound Engineering and Production," Forum of EMU, Adelaide University.


Ice Streams

.cc - week eight.

Streams of numbers are commonly used in computer music - this week I have used them make continuos stream of random frequencies and also partials in SuperCollider.


streams.rtf


(

var poly;

poly = Array.newClear(128); //array to hold the synth instances

SynthDef("SoundWallKeys", {

arg freq = 440,
rate = 0.4,
gate = 0.0;

// Variables - declaring
var partials = 20, //number of partials
freqadd = 0,
waveshape,
envStruct,
envGen,
out,
final;

waveshape = {

Mix.fill(
partials, { //each partial's function
SinOsc.ar(
freq: freq + 200.0.rand,
phase: 0,
mul: 1.0 / partials
)
});
};

// Envelope Structure
envStruct = Env(
levels: [0.0,0.99, 0.75, 0.0],
times: [0.1,10.0, 0.1],
curve: 'sine'
); //.plot;

// Envelope Instance
envGen = EnvGen.kr(
envelope: envStruct,
gate: 1.0,
doneAction: 2.0
);

// Output
Out.ar( 0, waveshape * envGen); //add envelope to waveform
Out.ar( 1, waveshape * envGen); //add envelope to waveform


}).send(s);

)

(

var dur, a, b;
dur = 3.7;

a = Routine({ //stream for freq

loop({

750.0.rand.yield;

});

});

b = Routine({ //stream for partials

loop({

25.15.rand.yield;

});

});

Routine({

loop({

Synth( "SoundWallKeys", [ \freq, a.next, \partials, b.next ] );

dur.wait; //make routine wait

});

}).play;

)



.sources.

Haines, Christian 08.05.08, "Streams (1)," Lecture of EMU, Adelaide University.


7.5.08

Tristram Cary (May 1925 - April 2008)

.forum - week seven.



Sadly Tristram Cary died a few weeks ago, so out of respect we spent Music Technology forum mourning the loss. Unfortunately I had very little to do with Tristram, his time at the Elder Conservatorium of Music was before mine. He achieved many great things in his life, some of the things he is best known for are his work in Electronic Music Studios (EMS) who invented the VCS-3 synthesizer. While he was known for his work as an engineer, he was also a valuable composer, who wrote music for both electronic and acoustic instruments. He created the sound for many of the early Dr. Who series. His contribution to the Elder Conservatorium of Music at the Adelaide University is substantial – many of his old ‘toys’, like his Theremin, can still be found around the Electronic Music Unit.

.sources.

Whittington, Stephen 01.05.08, "Tristram Cary," Forum of EMU, Adelaide University.


6.5.08

synthesizer creation in SuperCollider (2)

.cc - week seven.

Today I created a Synthesizer using an Audio File (stored in a Buffer). This is a sample from Nine Inch Nail's new DRM-FREE CD The Slip, taken from the track "Corona Radiata."

//Load File Path/Directory of Audio Fide
(
// File Path
~filePath = (PathName.new(Document.current.path)).pathOnly;
)

(
// Play Sample
SynthDef("CoronaRadiata",{

// Arguments
arg bufnum = 0, pitch, amp;

// Variables
var out = 0, envStruct, envGen, sig, postSig, panLine, panMod, panSig, postPan;

// Envelope Structure
envStruct = Env(
levels: [0.0, 0.7, 0.6, 0.0],
times: [0.5, 6.0, 1.0],
curve: 'sine'
).plot;

// Envelope Instance
envGen = EnvGen.kr(
envelope: envStruct,
gate: 1.0,
doneAction: 2.0
);

// Playback
sig = PlayBuf.ar(
numChannels: 1,
bufnum: bufnum,
rate: BufRateScale.kr(bufnum) * pitch
);
postSig = (sig * amp) * envGen;

// Panner
panLine = Line.kr(
start: 0,
end: 1.0,
dur: 1.0,
doneAction: 0
);
panMod = SinOsc.kr(
freq: 2
);
panSig = Pan2.ar(
in: postSig,
pos: panMod * panLine,
level: 0.3
);
postPan = panSig;

// Output
Out.ar(
bus: out,
channelsArray: sig.dup
);

}).send(s);
)
(
// Load Sound File
b = Buffer.read(s, ~filePath++"CoronaRadiata.aif")
)

(
// Play the Buffer (Check that Sound File is found)
. c = Synth("CoronaRadiata", [\bufnum, b.bufnum, \pitch, 1.0, \amp, 0.75]);
)

//MIDI control
(
// Activate - Note On
MIDIIn.noteOn = {

// Arguments
arg src, chan, num, vel;

// Carrier Frequency
Synth("CoronaRadiata", [\bufnum, b.bufnum, \pitch, (num/127.0), \amp, (vel/127.0)]);
};
MIDIIn.noteOff = {};
)




The .zip file below contains the "CoronaRadiata.aif" file needed to run the synthesizer. It also contains more legible formatting for the code.

synth_def(2).zip (1.6 mB)



synth_def(2).zip also contains a 'IndustrialAmbience' synth, which I made using code borrowed from John Delany.

.sources.

Haines, Christian 01.05.08, "Synthesiser Definitions (2)," Lecture of EMU, Adelaide University.