Livecoding
De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
Scripts
Dia 1, 17/09/2011
Script para tocar o baixo em loop com uma pausa.
// duracao do compasso: 2.6746 segundos // script toca o audio do baixo e faz uma // pausa de um ou alguns compassos // sound file "a.wav" => string filename; 2 => int compassos_pausa; // the patch SndBuf buf => dac; // load the file filename => buf.read; // time loop while( true ) { 1 => buf.rate; 39*441 => buf.pos; 10.6985::second => now; 0 => buf.rate; (compassos_pausa*2.6746)::second => now; } // Std.rand2f(.2,.9) => buf.gain; // Std.rand2f(.5,1.5) => buf.rate; // if( me.args() ) me.arg(0) => filename;
Utilizando uma pulsação qualquer:
// Sincronizando 0.5::second => T; T - (now%T) => now; // Pegando o áudio SndBuf buf => dac; "data/kick.wav" => buf.read; // Loop infinito while(1) { 0 => buf.pos; T => now; }
Tocando um arquivo inteiro com o máximo de simplicidade. Amostra por amostra:
SndBuf buf => dac; "a.wav" => dac; while(1) 1::samp => now;
Em SuperCollider, tocando o arquivo durante 22 compassos
TempoClock.default.tempo = 1; b = Buffer.read(s, "/home/vilson/Samples/ginzburg.wav"); ( SynthDef(\player, { | out=0, bufnum=0, rate=1, start=0, dur=1, amp=0.8 | var signal = PlayBuf.ar(1, bufnum, BufRateScale.kr(bufnum)*rate, startPos:start); signal = signal * amp * EnvGen.kr(Env.linen(0.01, dur, 0.01), doneAction:2); Out.ar(out, signal ! 2) }).store; ) Pdef(\p1, Pbind(\instrument, \player, \dur, Pseq([22],inf))) Pdef(\p1).play Pdef(\p1).stop
Modificando rate e duração, acrescentando novos patterns para tocar o mesmo buffer
Pdef(\p1, Pbind(\instrument, \player, \dur, Pseq([2],inf), \start, Pseq([44100*24], inf), \rate, 0.2)) Pdef(\p1).play Pdef(\p1).stop Pdef(\p2, Pbind(\instrument, \player, \dur, Pseq([2],inf), \start, Pseq([44100*23], inf), \rate, Pseq([0.3, 0.3, 0.3, 0.3, 0.4, 0.4], inf))) Pdef(\p2).play Pdef(\p2).stop Pdef(\p3, Pbind(\instrument, \player, \dur, Pseq([8],inf), \start, Pseq([44100*46], inf), \rate, 0.4)) Pdef(\p3).play Pdef(\p3).stop
Dia 2
Em ChucK, soltar estas duas linhas em alguma música bem ritmada e deixar os padrões à vontade com este arco maior:
// stupidly rising SinOsc s1 => Gain g => g => s1 => dac; 2 => s1.sync; while(second => now); // crazy wind through a window Noise s1 => Gain g1 => g1 => SinOsc s2 => dac; 2 => s2.sync; while(second => now);
Em SuperCollider, thrasheira:
http://soundcloud.com/aut0mata/day2
TempoClock.default.tempo= 1 // drum ( SynthDef(\kick, { | out=0, amp=0.2, atk=0.03, rel=1, pan=0, freq=100 | var sig = Mix(SinOsc.ar([freq, freq+1.01, freq+5, freq+1.02])); var env = EnvGen.ar(Env.perc(atk, rel, amp), doneAction:2); Out.ar(out, Pan2.ar(sig*env, pan)); }).store ) // snare ( SynthDef(\snare, { | out=0, amp=0.1, atk=0.02, rel=0.2, pan=0 | var sig = HPF.ar(WhiteNoise.ar, 5000); var env = EnvGen.ar(Env.perc(atk, rel, amp), doneAction:2); Out.ar(out, Pan2.ar(sig*env, pan)); }).store ) // hat ( SynthDef(\hat, { | out=0, amp=0.1, atk=0.03, rel=0.2, pan=0, freq=4000 | var sig = BPF.ar(GrayNoise.ar, freq, 0.1, 10); var env = EnvGen.ar(Env.perc(atk, rel, amp)); Out.ar(out, Pan2.ar(sig*env, pan)); }).store ) // bass ( SynthDef(\bass, { | out=0, freq=220, amp=0.8, atk=0.05, rel=1, pan=0 | var sig = BPF.ar(Mix(Saw.ar([freq, freq+1.01, freq+3]))*SinOsc.ar(3, 0, 1), 500); var env = EnvGen.ar(Env.perc(atk, rel, amp)); Out.ar(out, Pan2.ar(sig*env, pan)); }).store ) Pdef(\p_kick, Pbind(\instrument, \kick, \freq, Pseq([\rest,60], inf), \dur, 1/2)) Pdef(\p_snare, Pbind(\instrument, \snare, \freq, Pseq([1, \rest], inf), \dur, 1/2)) Pdef(\p_hat, Pbind(\instrument, \hat, \freq, Pseq([\rest, 3000], inf), \dur, 1/2)) ( Pdef(\p_bass, Pbind(\instrument, \bass, \note, Pseq([0.5, 1.5,0.5,0.5,0.5, 0.5, 1.5,0.5,0.5,0.5, 0.5, 5, 7,1.5], inf), \octave, 4, \dur, Pseq([1/2, 1/4,1/4,1/4,1/4, 1/2, 1/4,1/4,1/4,1/4, 1/4,1/4,1/4,3/4], inf))) ) Ppar([Pdef(\p_kick), Pdef(\p_snare), Pdef(\p_bass)]).play