Hola,
Siguiendo el consejo de Jose Manuel y como lo prometido es deuda,
> También hablas de algoritmos caóticos y de matemáticas en tus
> mensajes; de azar y probabilidad. La Teoría del Caos -y la
> Matemática, aún más- es demasiado amplia como para considerarla en su
> totalidad en un contexto de creación o investigación. No se puede
> emplear toda de golpe. Conviene escoger un algoritmo y ver qué ocurre
> en un contexto dado. Por ejemplo, el proceso de Verhulst, uno de los
> más simples de toda la Teoría del Caos, puede generar sorprendentes
> series de notas cuando lambda se acerca a 4
>
> x(i+1) = x(i) · (1-x(i)) · lambda
>
>
Paso a ustedes el código de SuperCollider para el proceso de Verhulst
que realmente es simple de implementar. Debería funcionar así no mas,
copiando y pegando. Lo adicional a este código es que como sonido,
instrumento o, sintetizador, escogí el modelo de cuerda pulsada de
Karplus-Strong porque con éste es fácil de notar cambios.
El proceso de Verhulst en este caso esta mapeado a valores de notas
MIDI. Esto se realiza en el "Task t", de este código de SuperCollider.
Las duraciones (o ritmo), se escogen de valores aleatorios entre 1 y 7.5
décimas de segundo.
Quizá lo mas dificil de entender es la ecuación donde se obtiene el
valor de "midinote". Esto simplemente es un proceso de normalización con
máximos y mínimos.
Ojalá lo puedan probar y se esperan comentarios. Ensayen con diferentes
lambdas.
Suerte,
--* Juan
/*
***********************************************************************************
* SimVerhulst.sc
*
* (c) 2010 Juan Reyes / juanig_at_CCRMA
* Codigo para demostrar el proceso de Verhulst.
* Por sugerencia de Jose Manuel Berenguer en expyeZp:
*
* "puede generar sorprendentes series de notas cuando lambda *
lambda se acerca a 4"
*
*
* Ecuacion:
* x(i) = x(i-1) (1 - x(i-1)) lambda
*
*
************************************************************************************/
s = Server.default.boot;
//SynthDef (Cuerda pulsada de Karplus Strong)
//--------------------------------------
(
SynthDef("kspluck",
{
// Definir argumentos y variables
arg amp=0.5, freq=440, fcoeff=0.5,
decayt=1.0;
var signal;
// Senal
signal = Pluck.ar(
WhiteNoise.ar(0.1), // Señal de Excitacion
Impulse.kr(0), // Disparar
freq.reciprocal, // Max retardo
freq.reciprocal, // Duración retardo
decayt, // Duración decay
fcoeff, // Coeficientes filtros
amp ); // Mul
Out.ar([0,1], signal);
}).load(s)
)
SynthDescLib.global.read;
// Para probar nuestro instrumento de cuerda pulsada:
//-------------------
~plucked = Synth("kspluck", [\freq, 440, \fcoeff, 0.5]);
~plucked = Synth("kspluck", [\freq, 600, \fcoeff, 0.45]);
~plucked = Synth("kspluck", [\freq, 500, \fcoeff, 0.45, \decayt, 7]);
//
// Ahora el task con el proceso de Verhulst Task::
//------------------------------------------------------------------------
//
// Escoger primero a "~lambda": condiciones iniciales:
~lambda = 3.97; // Melodia Caotica (a la Cowell)
~lambda = 3.65; // Melodia Cuasi periodica
~lambda = 3.05; // Melodía algo periodica (minimalista)
// Para correr el Task con la sucesion de notas
// ----------------------------
(
t = Task({
var x =0.75, lambda = ~lambda;
var frq = 600, newx, midinote;
{Synth("kspluck",
[
\freq, frq,
\fcoeff, 0.475,
\decayt, 1.25
]
);
newx =((1-x)*x)*lambda; // **-Ecuacion Verhulst-**
x = newx;
midinote = ((x + 0.45)/2.0 * 127.0 + 0.5).floor;
frq = midinote.midicps;
(0.1+0.75).rand.wait;
}.loop;
}).play(SystemClock)
)
/*
***********************************************************************************
************************************************************************************/
_______________________________________________
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/