Monday, November 10, 2008
CC3 Major Project - Record-Madness!
My project is a performance patch that incorporates the user recording an input into the patch and then playing back the sample and processing the patch through SuperCollider. The processes that SuperCollider performs on the patch are:
1) BBCut
2) Tempo
3) Filter
4) Reverb
This results in the playback cutting up the sample and creating stutter effects. Along with this is the ability to speed up or slow down the sample playback. There is also a slider to control a reverb effect and a filter effect. The filter is a bandpass filter. Below is a screenshot of the patch and the elements to download.
CODE
DOCUMENTATION
AUDIO [4.6MB] (low quality)
AUDIO [12.8MB] (high quality)
Sunday, November 09, 2008
Week 12 Forum - Final Form....ever
I didn't come to this forum because I had to finish a presentation for another subject. But, I know what it was about and it was the typical form. Babbling and blather and blah blah blah blah blah....etc
From speaking to other students I know some of the forum touched on what students thought of the degree. If this degree taught me anything it is this:
If you want to study something that will give you the piece of paper that people will think highly of but will be completely useless in the actual work force, go to university.
If you want to study something that will give you the piece of paper that people don't regard highly but will actually teach you useful skills relevant to the work force, go to any vocational training institution.
Unless you want to be a doctor, engineer, lawer or businessman, university is pretty much useless. It just tries to make you an intellect.
[1] Stephen Whittington, "Music Technology Forum: Semester 2 - Week 12 – Babble". Lecture presented at the Electronic Music Unit, University of Adelaide, South Australia, 6th November 2008
Week 11 Forum - Electroacoustic Music
Today we watched some movies that had some music written by some famous composers. I was particularly interested when Stephen mentioned that John Chowning made millions off something. I should've paid more attention to what he was saying. My ears pricked up when I heard "musician" and "millionaire". You don't hear those two words in one sentence music here at all.
[1] Stephen Whittington, "Music Technology Forum: Semester 2 - Week 11 – Electroacoustic Music". Lecture presented at the Electronic Music Unit, University of Adelaide, South Australia, 23rd October 2008
Wednesday, November 05, 2008
Week 10 Forum - Honors Presentation
Today we had two presentations. They were from Poppi Doser and Martin Victory.
Poppi presented a movie with an animation student she has been working with for a few years. Poppi's work always seems to be of very high quality. I think the way she interprets media is quite good. The music suited to visuals quite well.
Martin presented us with a complicated SuperCollider patch that interpreted network traffic into music. This is defiantly an original idea but I don't see it being commercial viable unless the patch can differentiate between certain data. What would be really cool if it was possible to generate certain music based on what material was being searched. I don't think this is possible but it's worth a shot. I think Martin's original idea is still pretty impressive and I'm curious to see how he explores this topic further.
[1] Poppi Doser & Martin Victory, "Music Technology Forum: Semester 2 - Week 10 – Honors Presentation". Lecture presented at the Electronic Music Unit, University of Adelaide, South Australia, 16th October 2008
Sunday, November 02, 2008
AA3 Week 10 - Project So Far
This is my progress so far. We were meant to have a rough cut by week 10 but clearly I don't have that. I have employed my sounds so far with some music but there is still some work left to go.
[1] Luke Harrald. "Audio Arts: Semester 2 - Week 10 - Rough Cut". Lecture presented at EMU, University of Adelaide, South Australia, 14th October 2008
Week 9 Forum - 3rd Year Presentations
[1]
Today we had presentation by the third years. I was impressed by how many students decided to use surround sound in their works. I haven't used surround in my work but not because it doesn't interest me. I just haven't found a use for it yet. I do want to learn how to mix in surround properly for future work. I thought Ben's piano piece was nice and Jake's piece sounded great with the surround sounds pulsating through the room. Dave's piece was also quite good.
[1] 100Cute, Technology, Celebrity & Fashion Blog. http://www.100cute.com/design-your-own-surround-sound-spherical-speakers-for-the-real-bang.html (Accessed 10/10/8)
[2] Stephen Whittington & 3rd Year Students, "Music Technology Forum: Semester 2 - Week 9 – Student Presentations". Lecture presented at the Electronic Music Unit, University of Adelaide, South Australia, 9th October 2008
CC3 Week 9 - Spatialisation
AUDIO [1.7MB]
(
var sbs;
~gFreqMenu = 0;
~gFreq = 80;
~gAmp = 0.05;
~gDur = 1.0;
~gWait = 0.01;
~gPanX = 1;
~gPanY = 1;
SynthDef("FSinOsc", {
// Args
arg gFreq = 440, gAmp = 1.0, gDur = 3.0, xpan= 1, ypan=1;
// Vars
var osc, env, envGen, out;
// Unit Generators
osc = FSinOsc.ar(freq: gFreq);
env = Env.sine(
dur: gDur,
level: 1
);
envGen = EnvGen.ar(
envelope: env,
gate: 1,
levelScale: gAmp,
doneAction: 2
);
out = envGen * osc;
// Output
Out.ar(
bus: 0,
channelsArray: Pan4.ar(out,xpan, ypan)
)
}).send(s);
SynthDef("SinOsc", {
// Args
arg gFreq = 440, gAmp = 1.0, gDur = 3.0, xpan= 1, ypan=1;
// Vars
var osc, env, envGen, out;
// Unit Generators
osc = SinOsc.ar(freq: gFreq);
env = Env.sine(
dur: gDur,
level: 1
);
envGen = EnvGen.ar(
envelope: env,
gate: 1,
levelScale: gAmp,
doneAction: 2
);
out = envGen * osc;
// Output
Out.ar(
bus: 0,
channelsArray: Pan4.ar(out,xpan, ypan)
)
}).send(s);
SynthDef("LFTri", {
// Args
arg gFreq = 440, gAmp = 1.0, gDur = 3.0, xpan= 1, ypan=1;
// Vars
var osc, env, envGen, out;
// Unit Generators
osc = LFTri.ar(freq: gFreq);
env = Env.sine(
dur: gDur,
level: 1
);
envGen = EnvGen.ar(
envelope: env,
gate: 1,
levelScale: gAmp,
doneAction: 2
);
out = envGen * osc;
// Output
Out.ar(
bus: 0,
channelsArray: Pan4.ar(out,xpan, ypan) )
}).send(s);
SynthDef("Pulse", {
// Args
arg gFreq = 440, gAmp = 1.0, gDur = 3.0, xpan= 1, ypan=1;
// Vars
var osc, env, envGen, out;
// Unit Generators
osc = Pulse.ar(freq: gFreq);
env = Env.sine(
dur: gDur,
level: 1
);
envGen = EnvGen.ar(
envelope: env,
gate: 1,
levelScale: gAmp,
doneAction: 2
);
out = envGen * osc;
// Output
Out.ar(
bus: 0,
channelsArray: Pan4.ar(out,xpan, ypan) )
}).send(s);
SynthDef("Saw", {
// Args
arg gFreq = 440, gAmp = 1.0, gDur = 3.0, xpan= 1, ypan=1;
// Vars
var osc, env, envGen, out;
// Unit Generators
osc = Saw.ar(freq: gFreq);
env = Env.sine(
dur: gDur,
level: 1
);
envGen = EnvGen.ar(
envelope: env,
gate: 1,
levelScale: gAmp,
doneAction: 2
);
out = envGen * osc;
// Output
Out.ar(
bus: 0,
channelsArray: Pan4.ar(out,xpan, ypan)
)
}).send(s);
//w.close;
// WHOLE WINDOW
w = SCWindow.new.front;
// Parameters
w.bounds = Rect(170,150,450,380); // Rectangular Window Bounds (Bottom Left Width Height)
w.name_("Grainulator"); // Window Name
w.alpha_(0.8); // Transparency
// w.boxColor_(Color.black);
// PANEL
e = SCCompositeView(w,Rect(10,50,430,310));
e.background = Color.new255(100,0,50);
//Gradient(Color.blue,Color.black);
// DROP DOWN MENU (WAVEFORM)
l = [
"Fast Sine Wave","Sine Wave","Triangle Wave","Square Wave","Saw Tooth Wave"];
sbs = SCPopUpMenu(w,Rect(10,10,150,20));
sbs.items = l;
sbs.background_(Color.new255(100,0,50));
sbs.stringColor_(Color.white);
sbs.action = { arg sbs;
~gFreqMenu = sbs.value.postln;
};
// 4 CHANNEL PANNER
v = SC2DSlider(w, Rect(300, 1, 45, 45))
.x_(0.5) // initial location of x
.y_(1) // initial location of y
.action_({|sl|
~gPanX = (sl.x*2)-1;
~gPanY = (sl.y*2)-1;
});
// TEXT (FREQ)
r = SCStaticText(e, Rect(350, 80, 100, 20));
r.stringColor_(Color.white);
r.string = "Frequency";
r.font_(Font("Arial", 12));
// SLIDER (FREQ)
r = SCSlider(e, Rect(30, 85, 300, 15))
//.lo_(0.001)
//.hi_(1)
//.range_(1)
.knobColor_(HiliteGradient(Color.blue, Color.white, Color.red))
.action_({ |slider|
//slider.lo=0;
// slider=0;
//r.value=""++(slider.hi*2000) ++"Hz";
r.value=""++(slider.value*2000) ++"Hz";
// ~gFreq = slider.hi*2000;
~gFreq = slider.value*2000;
r.stringColor_(Color.white);
// [\sliderLOW, slider.lo, \sliderHI, slider.hi].postln;
});
// NUMBER BOX (FREQ)
r = SCTextField(
parent: e,
bounds: Rect(350, 110, 50, 15) // Left Top Width Height
).boxColor_(Color.new255(100,0,50));
// TEXT (AMP)
t = SCStaticText(e, Rect(350, 150, 100, 20));
t.stringColor_(Color.white);
t.string = "Amplitude";
t.font_(Font("Arial", 12));
// SLIDER (AMP)
t = SCSlider(e, Rect(30, 85+70, 300, 15))
// .lo_(0.0001)
// .hi_(1)
//.range_(1)
.knobColor_(HiliteGradient(Color.blue, Color.white, Color.red))
.action_({ |slider|
// slider=0;
t.value=""++(slider.value*1) ++"";
~gAmp = slider.value*0.1;
t.stringColor_(Color.white);
// [\sliderLOW, slider.lo, \sliderHI, slider.hi].postln;
});
// NUMBER BOX (AMP)
t = SCTextField(
parent: e,
bounds: Rect(350, 180, 50, 15) // Left Top Width Height
).boxColor_(Color.new255(100,0,50));
// TEXT (DUR)
u = SCStaticText(e, Rect(350, 220, 150, 20));
u.stringColor_(Color.white);
u.string = "Duration";
u.font_(Font("Arial", 12));
// SLIDER (DUR)
u = SCSlider(e, Rect(30, 225, 300, 15))
// .lo_(0.001)
// .hi_(1)
// .range_(1)
.knobColor_(HiliteGradient(Color.blue, Color.white, Color.blue))
.action_({ |slider|
// slider=0;
u.value=""++(slider.value*1) ++"s";
~gDur = slider.value*1;
u.stringColor_(Color.white);
//[\sliderLOW, slider.lo, \sliderHI, slider.hi].postln;
});
// NUMBER BOX (DUR)
u = SCTextField(
parent: e,
bounds: Rect(350, 250, 50, 15) // Left Top Width Height
).boxColor_(Color.new255(100,0,50));
// TEXT (WAIT)
p = SCStaticText(e, Rect(350, 290, 150, 20));
p.stringColor_(Color.white);
p.string = "Iteration Time";
p.font_(Font("Arial", 12));
// SLIDER (WAIT)
p = SCSlider(e, Rect(30, 295, 300, 15))
// .lo_(0.001)
// .hi_(1)
// .range_(1)
.knobColor_(HiliteGradient(Color.blue, Color.white, Color.red))
.action_({ |slider|
// slider.lo=0;
p.value=""++(0.01/slider.value*1) ++"s";
~gWait = 0.01/slider.value*1;
p.stringColor_(Color.white);
// [\sliderLOW, slider.lo, \sliderHI, slider.hi].postln;
});
// NUMBER BOX (WAIT)
p = SCTextField(
parent: e,
bounds: Rect(350, 320, 50, 15) // Left Top Width Height
).boxColor_(Color.new255(100,0,50));
Routine({ s.sync;
inf.do({
~gFreqMenu.switch(0,{Synth("FSinOsc", [\gFreq, ~gFreq, \gAmp, ~gAmp, \gDur, ~gDur, \xpan, ~gPanX, \ypan, ~gPanY])},
1,{Synth("SinOsc", [\gFreq, ~gFreq, \gAmp, ~gAmp, \gDur, ~gDur, \xpan, ~gPanX, \ypan, ~gPanY])},
2,{Synth("LFTri", [\gFreq, ~gFreq, \gAmp, ~gAmp, \gDur, ~gDur, \xpan, ~gPanX, \ypan, ~gPanY])},
3,{Synth("Pulse", [\gFreq, ~gFreq, \gAmp, ~gAmp, \gDur, ~gDur, \xpan, ~gPanX, \ypan, ~gPanY])},
4,{Synth("Saw", [\gFreq, ~gFreq, \gAmp, ~gAmp, \gDur, ~gDur, \xpan, ~gPanX, \ypan, ~gPanY])}
);
// Create Grain
// Synth("Pulse", [\gFreq, {rrand(80, 300).postln}, \gAmp, 0.05, \gDur, 1.0]);
// [1000, 8000] [200, 400]
// Grain Delta - 0.1, 0.01
~gWait.wait;
})
}).play;
)
[1] Christian Haines. "Creative Computing: Semester 2 - Week 9 - Spatialisation". Lecture presented at the Electronic Music Unit, University of Adelaide, South Australia, 23th October 2008
Saturday, November 01, 2008
Week 8 Forum - My Favourite Things III
Today we watched a David Lynch film called Eraserhead. I found this movie to be weird and boring. It is not something I'd bother watching again. Maybe I just didn't get it, but either way I found it uninteresting.
[1] David Harris, "Music Technology Forum: Semester 2 - Week 8 – My Favorite Things III". Lecture presented at the Electronic Music Unit, University of Adelaide, South Australia, 18th September 2008
CC3 Week 8 - FFT II
I extended my patch further from the previous FFT week. I have used the same panner but the X-Y coordinates control different parameters. The X coordinate controls the string sample and the Y coordinate controls the saw wave synth def. By moving the panner in different directions the freeze point of each sound changes. If the panner is on the bottom left corner, both sounds play as normal. If it is on the top right corner, both sounds freeze. If it is on the top left corner the string sounds continues to play and the saw wave freezes and if it is on the bottom right the string sound freezes and the saw wave continues to play.
I have an audio example of me messing around with the panner. Click here to have a listen. [1.7MB]
s.boot;
(
b = Buffer.alloc(s,1024);
c = Buffer.read(s,"sounds/100- strings.wav");
// string sample [3.6MB]
SynthDef("help-freeze", { arg out=0, bufnum=0, x=0;
var in, chain;
in = Saw.ar(LFNoise1.kr(5.2,250,400), 0.25);
chain = FFT(bufnum, in);
chain = PV_Freeze(chain, x > 0.5);
Out.ar(out, 0.5 * IFFT(chain).dup);
}).send(s);
SynthDef("help-magFreeze2", { arg out=0, bufnum=0, soundBufnum=2, y=0;
var in, chain;
in = PlayBuf.ar(1, soundBufnum, BufRateScale.kr(soundBufnum), loop: 1);
chain = FFT(bufnum, in);
chain = PV_Freeze(chain, y > 0.5 );
Out.ar(out, 0.5 * IFFT(chain).dup);
}).send(s);
)
(
t = Synth("help-freeze",[\out, 0, \bufnum, b.bufnum]);
u = Synth("help-magFreeze2",[\out, 0, \bufnum, b.bufnum, \soundBufnum, c.bufnum]);
w = SCWindow("Orkester", Rect(100, 500, 400, 400))
.front;
w.view.background_(Color.white);
w.alpha = 0.8;
p = SC2DSlider(w, Rect(20, 20,350, 350))
.x_(0.5) // initial location of x
.y_(1) // initial location of y
.action_({p.background = (Color.new(p.x, p.y, 200, 1));
t.set(\x, p.x);
u.set(\y, p.y);
});
//w.front;
);
[1] Christian Haines. "Creative Computing: Semester 2 - Week 8 - FFT III". Lecture presented at the Electronic Music Unit, University of Adelaide, South Australia, 18th September 2008