//practical sound analysis - fredrik olofsson

//organized by lullcec 28-30oct 2011, hangar, barcelona



//Amplitude

(

{ //mic amplitude controls oscillator amplitude

//mouse controls amp tracker sensitivity via the attack/release time

var src= SoundIn.ar;

var amp= Amplitude.kr(src, MouseX.kr(0.01, 1), MouseY.kr(0.01, 1));

SinOsc.ar(400, 0, amp)!2;

}.play

)


(

{ //mic amplitude controls oscillator frequency

//mouse controls amp tracker sensitivity via the attack/release time

var src= SoundIn.ar;

var amp= Amplitude.kr(src, MouseX.kr(0.01, 1), MouseY.kr(0.01, 1));

SinOsc.ar(amp*400+400, 0, 0.1)!2;

}.play

)


(

{ //mic amplitude controls reverb amount via the dry/wet mix

//soft sounds play with a lot of reverb and loud sounds with a little

//mouse controls amp tracker sensitivity via the attack/release time

//seems to work best with little attackTime (x) and long releaseTime (y)

//i.e. mouse in lower left corner

var src= SoundIn.ar;

var amp= Amplitude.kr(src, MouseX.kr(0.01, 1), MouseY.kr(0.01, 1));

FreeVerb.ar(src, amp.explin(0.001, 1, 1, 0, \minmax).poll)!2;

}.play

)



//Pitch

(

{ //simple pitch tracking

var src= SoundIn.ar;

var pch= Pitch.kr(src);

SinOsc.ar(pch[0], 0, pch[1].poll*0.2)!2;

}.play

)


(

{ //oscillator is panned to the right if high pitch in mic

var src= SoundIn.ar;

var pch= Pitch.kr(src);

Pan2.ar(SinOsc.ar(pch[0].poll, 0, 0.1), pch[0].explin(100, 3000, -1, 1, \minmax));

}.play

)


(

{ //set clar >0 and hasFreq will be continuous

var src= SoundIn.ar;

var pch= Pitch.kr(src, clar: 1);

pch[1].poll;

Pan2.ar(SinOsc.ar(pch[0], 0, 0.1*pch[1].lag(0.1)), pch[0].explin(100, 3000, -1, 1, \minmax));

}.play

)