Hola,

Ahí va la versión pd del programa que manda Juan

Un saludo

José Manuel

Attachment: verhulst.pd
Description: Binary data



#N canvas 420 93 518 490 10;
#X obj 149 243 *;
#X obj 150 223 -;
#X msg 150 203 1;
#X obj 259 130 f;
#X obj 150 263 *;
#X obj 151 183 t b f;
#X floatatom 103 286 5 0 0 0 - - -;
#X obj 323 93 r semilla;
#X obj 193 244 r lambda;
#X obj 258 94 metro 90;
#X obj 30 286 s semilla;
#X obj 257 68 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 256 37 r marcha;
#X msg 391 23 \; semilla 0.2 \; lambda 3.8 \; marcha 1;
#X obj 150 285 + 0.45;
#X obj 150 307 / 2;
#X obj 149 327 * 127;
#X obj 149 348 + 0.5;
#X obj 149 368 i;
#X obj 149 390 makenote 127 80;
#X obj 150 415 noteout;
#X floatatom 89 393 5 0 0 0 - - -;
#X msg 393 81 \; marcha 0;
#X floatatom 119 72 5 0 4 0 - - -;
#X obj 118 95 s lambda;
#X floatatom 184 71 5 0 1 0 - - -;
#X obj 183 94 s semilla;
#X connect 0 0 4 0;
#X connect 1 0 0 0;
#X connect 2 0 1 0;
#X connect 3 0 0 1;
#X connect 3 0 5 0;
#X connect 4 0 6 0;
#X connect 4 0 10 0;
#X connect 4 0 14 0;
#X connect 5 0 2 0;
#X connect 5 1 1 1;
#X connect 7 0 3 1;
#X connect 8 0 4 1;
#X connect 9 0 3 0;
#X connect 11 0 9 0;
#X connect 12 0 11 0;
#X connect 14 0 15 0;
#X connect 15 0 16 0;
#X connect 16 0 17 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 18 0 21 0;
#X connect 19 0 20 0;
#X connect 19 1 20 1;
#X connect 23 0 24 0;
#X connect 25 0 26 0;

El 14/12/2010, a las 23:00, Juan I Reyes escribió:


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/

_______________________________________________

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/

Responder a