«modulo2» by lambda

on 14 Jul'20 12:14 in

lo 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;
raw 3667 chars (focus & ctrl+a+c to copy)
reception
comments