«modulo2» by lambda
on 14 Jul'20 18:14 inlo mismo que modulo pero usando slider2d
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
// Modulo // ukiyo-neko systems // // Modulo es un ejemplo de un programa en supercollider // Primero se describe un sintetizador ( // en Supercollider los sintetizadores son funciones cuyos argumentos podemos modular de diversas y múltiples maneras // Primero llamamos SynthDef que se come una funcion Ugen {esa cosa que tiene sombrero chino} como argumento // esta funcion le dice al servidor que cree una instancia de sintetizador y nos escupe un nombre para ese sinte // con ese nombre le podemos pedir cosas, que cambie parametros o que nos diga información sobre la función // por ejemplo frecuencia de una onda seno SynthDef(\modulo,{arg carrfreq=440, modfreq=10, moddepth=0.5; // Modulo es un ejemplo de modulaci'on de frecuencia (FM) simple // tiene 3 argumentos // carrfreq que es una freciencia base a la cual le sumamos una onda de seno // entonces la grafica de la frecuencia de nuestro nuevo sonido es una onda de seno modulada en frecuencia alrededor de //carrfreq con frecuencia // modfreq // que tanto modulamos la frecuencia depende de moddepth Out.ar(0, // SinOsc.ar(carrfreq + SinOsc.ar(modfreq,0,moddepth),0,0.25)!2) }).add; ) s.scope; ( var w, carrfreqslider, m1control, m1addslider, synth; ////////////////////// // Initialize Windows ////////////////////// Window.closeAll; s.scope; // we have the possibility of creating subwindows /* subwin = FlowView.new( parent: win, bounds: Rect(710, 230, 185, 150), margin: 10@10, gap: 10@10; );*/ //////////////////// // window creation //////////////////// w=Window("frequency modulation", Rect(100, 500, 400, 300),resizable: false); w.view.decorator = FlowLayout(w.view.bounds); w.front; w.onClose = {s.freeAll}; // What to do on close (or ctrl+period) CmdPeriod.doOnce({Window.closeAll}); //// window aesthetics w.background = Color.new(1,1,1,1); w.alpha = 0.95; /////////////// // synth creation/ ////////////////// a = Synth(\modulo); // create the slider with EXSlider carrfreqslider is how we address it carrfreqslider= EZSlider(w, 300@50, "carrfreq", ControlSpec(20, 5000, 'linear', 10, 440), {|ez| a.set(\carrfreq, ez.value)}); w.view.decorator.nextLine; w.view.decorator.nextLine; m1control = Slider2D(w,Rect(10,10,180,180)); // modfreqslider= EZSlider(w, 300@50, "modfreq", ControlSpec(1, 2000, 'linear', 1, 1), {|ez| a.set(\modfreq, ez.value)}); // // w.view.decorator.nextLine; // moddepthslider= EZSlider(w, 300@50, "moddepth", ControlSpec(0.01, 5000, 'linear', 0.01, 0.01), {|ez| a.set(\moddepth, ez.value)}); m1control.action = { a.set(\modfreq,m1control.x*100.0+1);//\moddepth,m1control.y*0.5+0.01).postln; a.set(\moddepth,m1control.y*1000.0);//\moddepth,m1control.y*0.5+0.01).postln; a.get(\modfreq,{arg value;("freq:" + value + "Hz").postln;}); a.get(\moddepth,{arg value;("depth:" + value + "Hz").postln;}); }; w.front; ) ( var w, carrfreqslider, modfreqslider, moddepthslider, synth; w=Window("frequency modulation", Rect(100, 400, 400, 300)); w.view.decorator = FlowLayout(w.view.bounds); c= Synth(\modulo); carrfreqslider= EZSlider(w, 300@50, "carrfreq", ControlSpec(20, 5000, 'linear', 10, 440), {|ez| c.set(\carrfreq, ez.value)}); w.view.decorator.nextLine; modfreqslider= EZSlider(w, 300@50, "modfreq", ControlSpec(1, 2000, 'linear', 1, 1), {|ez| c.set(\modfreq, ez.value)}); w.view.decorator.nextLine; moddepthslider= EZSlider(w, 300@50, "moddepth", ControlSpec(0.01, 5000, 'linear', 0.01, 0.01), {|ez| c.set(\moddepth, ez.value)}); w.front;
reception
comments