View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide

Tenori-on SuperCollider Interface

Home   How To   Code Pool   Public Library   Theory   Events
more information at:

http://music.z0id.net/doku.php/wiki/tenori-on_playing_supercollider


//Tenori on as a Drummachine:

(

MIDIPort.init;
MIDIIn.connect;

MIDIResponder.removeAll

)


// ================= MidiResponder ========================

(



// ============= 16-SOLO - Primitive
NoteOnResponder({ |src, chan, num, vel|

"04-SCORE.primitive".postln;
vel.postln; //

Synth("Bouncer",[\note,num, \vel, vel]);

 }, 

	nil, // any source
	[15], // midi channels
	nil, //any note
	nil); //any vel






// ============= 14-BOUNCE - Bouncer
NoteOnResponder({ |src, chan, num, vel|

"14-BOUNCE.bouncer".postln;

Synth("Bouncer",[\note,num]);

}, 

nil, // any source
[13], // midi channels
nil, //any note
nil); //any vel





// ============= 12-DRAW - Primitive
NoteOnResponder({ |src, chan, num, vel|

"04-SCORE.primitive".postln;
vel.postln; //

Synth("Bouncer",[\note,num, \vel, vel]);

 }, 

	nil, // any source
	[11], // midi channels
	nil, //any note
	nil); //any vel







// ============= O8-RANDOM - Primitive
NoteOnResponder({ |src, chan, num, vel|

"04-SCORE.primitive".postln;
vel.postln; //

Synth("Bouncer",[\note,num, \vel, vel]);

 }, 

	nil, // any source
	[7], // midi channels
	nil, //any note
	nil); //any vel







// ============= O4-SCORE - Primitive
NoteOnResponder({ |src, chan, num, vel|

"04-SCORE.primitive".postln;
vel.postln; //

Synth("Primitive",[\note,num, \vel, vel]);

 }, 

	nil, // any source
	[3], // midi channels
	nil, //any note
	nil); //any vel





// ============= O3-SCORE  - VOCALS
NoteOnResponder({ |src, chan, num, vel|
"vocals".postln;
// Synth("speakR",[\num,num])



if (num == 60, 
   { "SuperCollider".speak;
     "supercollider".postln},{
   
       if (num == 62, 
        	{ "rocks".speak;},{
        	  if (num == 64,
               	{ "thank you for listening".speak;},{}
                   )
        	}
       )
   }
)
 }, 

	nil, // any source
	[2], // midi channels
	nil, //any note
	nil); //any vel
	
	
// ============= O1-SCORE  DRUM MACHINE


//Line1
NoteOnResponder({Synth("kick1";"kick".postln)}, 
	nil, // any source
	[0], // first layer
	(60), // first line
	nil); //any vel


//Line2
NoteOnResponder({
Synth("edlx_drum.wav";
"edlx_drum.wav".postln)}, 
	nil, [0], (62),	nil);
	
	
	
	
//Line3
NoteOnResponder({Synth("clap";"clap".postln)}, 
	nil, 	[0], 	(64), //any note
	nil); //any vel



//Line4
NoteOnResponder(
{
	Synth("snare";"snare".postln)
}, 
	nil, 	[0], 	(65),nil); 
	
//Line5
NoteOnResponder(
{
	Synth("snare2";"snare2".postln)
}, 	nil, [0],	(67), nil);
	


//Line6
NoteOnResponder(
{
	Synth("snare3";"snare3".postln)
}, 	nil,[0],(69),nil); 


//Line7

NoteOnResponder({
Synth("edlx_noise.wav";
"edlx_noise.wav".postln)}, 
	nil, [0], (71),	nil);
	


//open: 72,74,76,77,79,81,83,84,86



) //end of noteresponders





// ================= SYNTHDEFS =========================
(   //beginning


SynthDef("Primitive",  
{ arg note = 62,out,vel=100;

out = SinOsc.ar(note.midicps, mul:0.3 );  // convert midi note to frequency

Out.ar([0,1], out  *EnvGen.kr(Env.perc(0, 1), doneAction:2)); // has an percussive envelope, so the sound will fade to silence, then the doneAction will kill the Synth
}
).load(s);
//Env.perc(0, 1).plot;

//Env.perc(0, 12).plot;

SynthDef("Bouncer",  
{ arg note = 62,out;
"bouncer".postln;

out = SinOsc.ar(note.midicps, mul:0.4 );  // convert midi note to frequency

Out.ar([0,1], out  *EnvGen.kr(Env.perc(0.05, 1, 1, -4), doneAction:2));
}
).load(s);

//Env.cutoff(1, 1, 4).plot;
//Env.perc(0.05, 1, 1, -4).plot;




SynthDef("kick1", { |basefreq = 50, envratio = 3, freqdecay = 0.02, ampdecay = 0.5|
    var   fenv = EnvGen.kr(Env([envratio, 1], [freqdecay], \exp), 1) * basefreq,
    aenv = EnvGen.kr(Env.perc(0.005, ampdecay), 1, doneAction:2), out;
    out = SinOsc.ar(fenv.dup, 0.5pi, aenv);
   Out.ar([0,1] ,out);
}).load(s);



SynthDef(\snare, { |freq=100, sustain=5, amp=0.1|
	var mod, sound, env, saw, filter;
	//mod = XLine.kr(freq*1,freq,sustain); von freq nach freq
	env = EnvGen.ar(Env.perc(0.04, sustain,amp*10,-60),doneAction:2); //amp*10 statt 1
	saw = WhiteNoise.ar(0.06 * [1,1]) * Saw.ar(10 * [1,1]).sum; //sum?
	filter = BPF.ar(saw, LFNoise1.kr(0.1).exprange(5000, 20000), 0.9);
	//sound = SinOsc.ar(mod,0,amp.dup); keine amp
	Out.ar(0, filter * env);
};
).load(s);



SynthDef(\snare2, { |sustain=3, amp=0.5, freq=20, hard=0|
	var sound, env, env2;
	env = EnvGen.ar(Env.perc(0.025, sustain*(1-hard), 1, -12));
	env2 = EnvGen.ar(Env.perc(0.05, sustain*1.5), doneAction: 2);
	sound = Decay.ar(Impulse.ar(0), 0.00072, WhiteNoise.ar(amp.dup)) + WhiteNoise.ar(0.1).dup;
	sound = sound * env;
	sound = CombL.ar(sound, freq.reciprocal, freq.reciprocal, sustain);
	Out.ar(0, sound * env2);
 };
).load(s);

SynthDef(\snare3, { |sustain=3, amp=0.5, freq=20, hard=0|
	var sound, env, env2;
	env = EnvGen.ar(Env.perc(0, sustain*(1-hard), 1, -12));
	env2 = EnvGen.ar(Env.perc(0, sustain*1.5), doneAction: 2);
	sound = Decay.ar(Impulse.ar(0), sustain * 0.1, GrayNoise.ar([1, 1] * 0.3), WhiteNoise.ar(0.1.dup) + 0.3);
	
	sound = sound * (LFSaw.ar(Rand(5, 10)).max(0) + 1) * (env * amp);
	Out.ar(0, sound * env2);
 };
).load(s);



//Clap
SynthDef(\clap, { |freq=100, sustain=5, amp=0.1|
	var mod, sound, env, saw, filter;
	mod = XLine.kr(freq*1,freq,sustain);
	env = EnvGen.ar(Env.perc(0.02, sustain,1,-200),doneAction:2);
	saw = LFPulse.kr(0.6,0,0.5) * WhiteNoise.ar(0.07 * [1,1]) * Saw.ar(1000 * [1,1]).sum;
	filter = BPF.ar(saw, LFNoise1.kr(0.1).exprange(10000, 20000), 0.9);
	
	sound = SinOsc.ar(mod,0,amp.dup);
	Out.ar(0, filter * env);
};
).load(s);

)//end of synthdefs





//==============  CONCRETE SOUNDS ==============================

( //beginning of concrete sounds


b = Buffer.read(s,"/Users/meatz/tmp/edlx_drum.wav"); 
SynthDef("edlx_drum.wav", { arg out=0,bufnum= 0;        //b.bufnum;
	Out.ar(out,
		PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum), doneAction:2)
	)
}).load(s);

c = Buffer.read(s,"/Users/meatz/tmp/edlx_noise.wav");

SynthDef("edlx_noise.wav", { arg out=0,bufnum= 1;       //c.bufnum;
	Out.ar(out,
		0.5 * PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum), doneAction:2)  //0.5* == 50% volume
	)
}).load(s);



)//end of concrete sounds




//====================EXPERIMENTAL - PUSH - only one sound =============

SynthDef("Push",  
{ arg note = 62,out,vel=100;

out = SinOsc.ar(note.midicps, mul:0.3 );  // convert midi note to frequency

Out.ar([0,1], out);
}
).load(s);


(
NoteOnResponder({ |src, chan, num, vel | 
"PUSH-NoteOn".postln; 

p = Synth("Push",[\note,num]);

 
}, 
nil, // any source
[14], // midi channel 1
nil, //any node
nil);
)


NoteOffResponder({ |src, chan, num, vel| 
 "PUSH-NoteOff".postln;
     p.free;
 }, 
   nil, // any source
   [14], // midi channel 1
   nil, //any node
   nil);
   





Link to this Page