Hola, Ahí va la versión pd del programa que manda Juan
Un saludo José Manuel
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)) · lambdaPaso 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.5décimas de segundo. Quizá lo mas dificil de entender es la ecuación donde se obtiene elvalor de "midinote". Esto simplemente es un proceso de normalización conmáximos y mínimos.Ojalá lo puedan probar y se esperan comentarios. Ensayen con diferenteslambdas. 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/
