Download Descargar Documento

Document related concepts
no text concepts found
Transcript
Pbind
Esta clase es mejor explicarla con ejemplos:
// en este primer caso, Pbind va a tomar todos
sus valores
// del prototipo 'default' de la clase Event
//
// una secuencia infinita de la nota Do
(60.midicps)
Pbind.new.play
Pbind.new.play
\midinote
// sustituimos el valor 'default' del parámetro
midinote. todos los
// otros parámetros (\amp, \dur, etc.) seguirán
utilizando los valores
// en el prototipo 'default' de la clase Event
Pbind.new(\midinote, 61).play
Pbind(\midinote, 71).play
Pbind(\midinote, Pseq([ 61, 71 ], inf)).play
\dur
Pbind.new.play
Pbind(\dur, 0.25).play
Pbind(\dur, 0.5).play
Pbind(\dur, Pseq([ 0.25, 0.5, 0.25], inf)).play
\amp
Pbind.new.play
Pbind(\amp, 0.3).play
Pbind(\amp, 0.01).play
(
Pbind(\midinote, Pseq([ 61, 71 ], inf),
\dur, Pseq([ 0.25, 0.5, 0.25] * 0.25,
inf),
\amp, Pwrand([ 0.01, 0.1 ], [ 0.9, 0.1 ],
inf)).play
)
\pan
Pbind.new.play
Pbind(\pan, -1).play
Pbind(\pan, 1).play
(
Pbind(\pan, Pseq([-1, 0, 1], inf),
\midinote, Pseq([ 61, 71 ], inf),
\dur, Pseq([ 0.25, 0.5, 0.25] * 0.0625,
inf),
\amp, Pwrand([ 0.01, 0.1 ], [ 0.9, 0.1 ],
inf)).play
)
modelado de frecuencia
Event.default implementa un modelo multi nivel
para la especificación de la altura de las
notas. Este modelo permite componer utilizando
escalas, modos, distintas divisiones de la
octava, números de nota MIDI o frecuencias en
Hertz. Todas estas diferentes formas de
especificar la altura de las notas pueden ser
utilizadas de forma intercambiable.
\freq
Especificamos la altura en Hertz:
(
Pbind(\dur, 0.1,
\freq, Pseq([ 100, 200, 300, 400, 500, 600,
700 ], inf)
).play
)
\detune (en Hertz)
Desafinamos en Hertz la altura que haya sido
especificada:
(
Pbind(\dur, 0.1,
\detune, -50,
\freq, Pseq([ 100, 200, 300, 400, 500, 600,
700 ], inf)
).play
)
\midinote
Especificamos la altura en número de nota MIDI:
(
Pbind(
\dur, 0.2,
\midinote, Pseq([ Pshuf([60, 61, 62, 63, 64,
65, 66, 67], 3) ], inf)
).play
)
\note
Especificamos el número de nota dentro de una
octava:
(
Pbind(
\dur, 0.2,
\note, Pseq([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12 ], inf)
).play
)
\octave
Especificamos el número de octava:
(
Pbind(
\dur, 0.2,
\octave, 5,
\note, Pseq([ 0, 2,3,4 ], inf)
).play
)
(
Pbind(
\dur, 0.2,
\octave, 8,
\note, Pseq([ 0, 3 ], inf)
).play
)
(
Pbind(
\dur, 0.2,
\octave, Pseq([ 3, 4, 5, 6, 7, 8, 9 ], inf),
\note, 0
).play
)
\stepsPerOctave
También podemos dividir la octava en cualquier
número de partes, no sólo en doce:
http://en.wikipedia.org/wiki/Equal_temperame
nt
(
Pbind(
\dur, 0.2,
\stepsPerOctave, 31,
\note, Pseq((0..31), inf)
).play
)
(
Pbind(
\dur, 0.5,
\stepsPerOctave, 12,
\note, Pseq((0..5), inf)
).play
)
(
Pbind(
\dur, 0.4,
\stepsPerOctave, 13,
\note, Pseq((0..13), inf)
).play
)
(
Pbind(
\dur, 0.5,
\stepsPerOctave, 100,
\note, Pseq((0..100), inf)
).play
)
\scale
\degree
Con \scale podemos especificar una escala. Y
con \degree especificamos qué grados de esta
escala queremos utilizar:
(
Pbind(
\dur, 0.2,
\scale, [0, 2, 3, 5, 7, 9, 11], //una escala
menor armónica
\degree, Pseq([ 0, 1, 2, 3, 4, 5, 6 ], inf)
).play
)
(
// una escala hecha a partir de una serie números
primos,
// dentro de una octava dividida en 19 partes
iguales
Pbind(
\dur, Pwrand([ 0.1, Prand([ 1, 2, 3, 4]) ],
[ 0.95, 0.05 ], inf),
\scale, [0, 3, 5, 7, 11, 13, 17, 19],
\stepsPerOctave, 19,
\degree, Prand([ 0, 1, 2, 3, 4, 5, 6 ], inf)
).play
)
modelado de duracion
\dur (en beats)
(
Pbind(\dur, Pseq([Pgeom(0.05, 1.1, 24),
Pgeom(0.5, 0.909, 24)],
inf)).play
)
\legato
El valor que hayamos especificado en \dur es
multiplicado por el valor que pongamos en
\legato:
Pbind(\dur, 1, \legato, 0.01, \midinote, Pseq([
80, 79 ], inf)).play
Pbind(\dur, 1, \legato, 0.5, \midinote, Pseq([
80, 79 ], inf)).play
Pbind(\dur, 1, \legato, 1, \midinote, Pseq([
80, 79 ], inf)).play
Pbind(\dur, 1, \legato, 1.5, \midinote, Pseq([
80, 79 ], inf)).play
(
Pbind(\dur, 0.5,
\legato, Pseq([ Pgeom(0.1, 1.18, 15),
Pgeom(1.015,
1.18.reciprocal, 15) ],
inf),
\midinote, Pseq([ 80, 79 ], inf)
).play
)
\tempo
Especificamos el tempo en número de pulsos por
segundo:
(
Pbind(\tempo, 180/60,
\dur, Pseq([1, 0.5, 0.5 ], inf),
\midinote, Pseq([ 36, 84, 83.5 ],
inf)).play
)
(
Pbind(\tempo, 30/60,
\dur, Pseq([1, 0.5, 0.5 ], inf),
\midinote, Pseq([ 36, 84, 83.5 ],
inf)).play
)
(
Pbind(\tempo, 60/60,
\dur, Pseq([1, 0.5, 0.5 ], inf),
\midinote, Pseq([ 36, 84, 83.5 ],
inf)).play
)
\instrument
Hasta ahora sólo hemos utilizado la SynthDef
'default' del prototipo 'default', pero con la
llave \instrument podemos especificar
cualquier SynthDef como instrumento. Sólo hay
un requisito:
- mandar el mensaje .store a la SynthDef, en
vez de .load o .send
(
SynthDef("sine",
{ | out, freq=500, amp, pan, gate = 1 |
var signal, env;
signal
1.01 ], 0.5pi, 0.5));
env
= Mix(SinOsc.ar([ freq.midicps, freq.midicps *
= EnvGen.kr(Env.asr(0.001, amp, 0.3),
gate,
doneAction: 2);
Out.ar(out, Pan2.ar(signal * env, pan))}).store
)
Pbind(\instrument, \sine).play
(
p = Pbind(\instrument, \sine,
\tempo, 180/60,
\dur, 0.5,
\legato, 0.5,
\midinote, Pn(Pshuf([ 40, 42, 43, 45,
46 ], 2), inf),
\amp, Pwrand([ 0.1, 0.7 ], [ 0.8, 0.2
], inf),
\pan, Pseq([ -1, -0.5, 0, 0.5, 1 ],
inf)
).play
)
p.mute // sigue tocando, pero sustituye las
alturas por silencios
p.unmute
p.pause // pausamos el Pbind
p.resume
// quitamos la pause
////////////////////////////////////////////
////////////////////////////////////////////
///////////
(
SynthDef("acid", { arg out, freq = 1000, gate
= 1, pan = 1, cut = 4000, rez = 0.8, amp = 1;
var sen,env;
sen=Pan2.ar(RLPF.ar(Pulse.ar(freq,0.05),c
ut, rez),pan)*amp ;
env= EnvGen.kr(Env.linen(0.06, 0.4,
0.3), gate, doneAction:2);
Out.ar(0,sen*env)
}).store;
)
(
Pbind(\instrument,\acid,
\dur,Pseq([0.25,0.5,0.25],inf),
\root,-12,
\degree,Pseq([0,3,5,7,9,11,5,1],inf),
\pan,Pfunc({1.0.rand2}),
\cut,Pxrand([1000,500,2000,300],inf),
\rez,Pfunc({0.7.rand +0.3}),
\amp,Pfunc({0.2.rand})
).play;
)