Arreglos En Super Collider

Páginas: 8 (1974 palabras) Publicado: 19 de diciembre de 2012
Sesión 3
3.3 Funciones, Arreglos
Funciones
Las funciones en SC se encasillan entre llaves { }. Una función en SC representa una acción,
por ejemplo hacer sonar un sonido o ejecutar una rutina. las funciones por sí mismas no
trabajan, necesitan de un mensaje para saber que hacer.
La siguiente función es una onda sinoidal, que mediante el mensaje .play sonará cuando
evaluemos esta línea decódigo. (recuerden encender el servidor con s.boot)
{SinOsc.ar (440, 0, 0.5)}.play
Las funciones también trabajan del mismo modo que en la forma tradicional matemática f(x).
Por ejemplo si queremos hacer la función f(x)=x² podemos escribirla así:
f={|x| x**2}
Los caracteres | | indican que x es el argumento que recibirá el valor al que queramos aplicar
la función.
Para dar un valor a x lohacemos con el método o mensaje .value(). La siguiente línea da el
valor 2 a x pidiendo así 2²
f.value(2)
Al evaluar la función obtenemos, porsupuesto, el número 4 en la post window.
Podemos usar mas de un argumento en la función. Por ejemplo para una suma de cuadrados:
f={|a,b| (a**2)+(b**2)}
f.value(3,4)
El resultado debe ser 25

O para la hipotenusa de un triángulo rectángulo. Recordemosel teorema de Pitágoras
a² + b² = c²

f={|a, b| ((a**2)+(b**2)).sqrt}
f.value(3,4) // el resultado es 5
Se puede usar una función dentro de otra operación:
10*f.value(3,4) // el resultado es 50
Una función solo arroja el resultado de lo último que tenga escrito dentro de ella. En el siguiente
ejemplo solo obtendremos el resultado de la suma a + b y no el de la multimplicación a * bf={|a, b| a*b; a+b}
f.value(2,3) // el resultado es 5
Una misma función puede ejecutarse cualquier cantidad de veces con el mensaje .do
5.do{"hola mundo".postln}
El resultado en la post es:
hola mundo
hola mundo
hola mundo
hola mundo
hola mundo
5
Para el siguiente ejemplo utilizaremos el mensaje .rrand
Si enviamos el mensaje .rrand a un número a y agregamos un número b como argumentopodemos obtener un valor aleatorio dentro del rango entre a y b.
a.rrand(b)
Así si a=300 y b=500 obtendremos un número aleatorio entre 300 y 500
300.rrand(500)

Con este método .rrand podemos, por ejemplo, producir varias ondas senoidales.
10.do{{SinOsc.ar(300.rrand(500), 0, 0.1)}.play}
Notar que hay una función dentro de otra y por eso usamos llaves anidadas {{}}. También
estamos escribiendo0.1 en el argumento amp del SinOsc para bajar el volumen de cada onda,
de esta forma al sumarse el volumen de cada una de las 10 ondas tenemos un volumen total
de 1

SuperCollider tiene definida la función de iteración de la suma automáticamente. Una iteración
es una operación que se realiza sobre el resultado de la misma operación las veces que se

desee. Si partimos del 0, y la operaciónes sumar 1 al resultado, obtenemos una secuencia de
números enteros:
0+1=1
1+1=2
2+1=3
3+1=4
.
.
.
Para ver esto simplemente hay que declarar la siguiente línea:
10.do{ | i | i.postln }

En la post se imprime:
1
2
3
4
5
6
7
8
9
10
El 10 no fué un valor de i. El 10 se imprime por que la función se realizó 10 veces.
Lo que está sucediendo aqui es que el argumento i estasiendo iterado con la operación + 1

Con esta iteración, y el mensaje .do , podemos hacer funciones como la siguiente, donde al
número 40 se le va sumando la iteración del argumento i dando como resultado los números
del 40 al 49 (del 40 al 49 hay 10 números)
10.do{ | i | (40 + i).postln}

En la post se imprime:
41
42
43
44
45
46
47
48
49
10
El 10 no fué un valor de (40 + i). El 10se imprime por que la función se realizó 10 veces.

Más aún, si usamos la suma 40 + i como argumento para una onda sinusoidal SinOsc
podemos escuchar lo siguiente:
10.do{ | i | {Pulse.ar( 40 + i )}.play}

Arreglos
Los arreglos o arrays son parte del lenguaje de programación en general. Los arreglos son
conjuntos ordenados. En SC los arreglos se encasillan entre corchetes [ ]. Sirven para...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Arreglos
  • Arreglos
  • Arreglos
  • Arreglos
  • Arreglos
  • Arreglos
  • Arreglos
  • ARREGLOS

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS