Hola,
Paso el código en SuperCollider para mapear la función Coseno. Hay notas
que se repiten por redondear los valores con "floor", y hay otras que se
saltan por lo que el resultado es una pseudo-escala o pseudo-arpegio.
Al manipular algunos de estos parámetros se pueden lograr resultados mas
creativos pero esto puede ser una base.
/*****************************************************************************
*
* coseno.sc
*
******************************************************************************
*/
s = Server.default.boot;
//
// Definición de un sinte con sinusoidal básico
// ============================================
(
SynthDef("sinep",
{arg freq=440, dur=0.5, gate=1.0, done=0;
var env;
env = EnvGen.kr(Env.asr(0.05, 0.25, 0.1),gate);
Out.ar(0, SinOsc.ar(freq, 0, env))
}).load(s);
)
//
// Una rutina para probar los valores de la función de mapeo
// =========================================================
(
var twopi = 2*pi,
angincr=pi/128;
Routine ({
var playNote=0.0, fi=0.0;
{
playNote = floor((127*cos(fi))/2 + 63.5);
fi = (fi + angincr);
if (fi == twopi, {
fi = 0.0;
});
playNote.post;
" ".post;
1.0.wait;
}.loop
}).play
)
//
// Una rutina para que suene una pseudo escala cromática de 4 octavas
// =====================================================================
(
var twopi = 2*pi,
soni;
Routine ({
var frequ, midint=0.0, fi=0.0, angincr=pi/64;
soni = Synth("sinep");
{
midint = floor((24*cos(fi)) + 60);
fi = (fi + angincr);
if (fi == twopi, {
fi = 0.0;
});
frequ = midint.midicps;
soni.set("freq", frequ);
soni.set("gate", 1.0);
0.25.wait;
soni.set("gate", 0);
0.15.wait;
}.loop
}).play
)
/*************************************************************************/
> Hay que aclarar que las formulas de Coseno que menciono generan escalas
> cromáticas para arriba y para abajo (no necesariamente arpeggios). La
> formula exacta es:
>
> M = 127*COS(tFi)/2 + 63.5
>
> Hay que añadir el offset 63.5 o 64 para que los valores estén dentro del
> rango de notas MIDI.
>
_______________________________________________
Expyezp mailing list
[email protected]
http://lists.slow.tk/listinfo.cgi/expyezp-slow.tk
Archivo de mensajes:
http://lists.slow.tk/pipermail/expyezp-slow.tk/