Taller de Audio del Centro Multimedeia del CNA

aSMS y Quarks


Conexión Arduino-SuperCollier usando SimpleMessageSystem (SMS) y Quark "Arduino"



Existe una forma ya mas fácil y rápida para instalar el Quark de Arduino así como todos los demas Quarks.

Primero tienes que ir a http://supercollider.sourceforge.net/  descargar el archivo SuperCollider 3.2 en file releases; bajar el archivo que dice SuperCollider-3.2-With-Extras e instalarlo en tu computadora. Después de copiarlo a tus aplicaciones tienes otro folder que se descargó que dice Optional Installs, dentro de ese folder  tienes otro folder de nombre Quarks, ese folder de Quarks lo vas a poner en /Library/Application Support/SuperCollider.

Ahora abres tu collider y abres un documento nuevo en donde vas a poner Quarks.gui y se va a abrir una ventana con todos los Quarks, del lado izquierdo de cada Quark hay un boton con un signo "-" que significa que no esta instalado, le das clik sobre el signo menos y va a cambiar a un signo "+" de color verde, selecciona todos los Quarks que quieras instalar y cierras la ventana.

Para comprobar que se instalaron correctamente, en tu documento en blanco de collider escribes Quarks.checkoutAll y te debe de aparecer una lista en la postwindow con los Quarks que seleccionaste para instalar, quiere decir que ya estan instalados. Para el quark de Arduino puedes verificar escribiendo Quarks.install("Arduino") y te va a aparecer en la postwindow que ya esta instalado. Y listo ya puedes usar tu arduino con SuperCollider

 

El siguiente metodo esta en revision...


La union entre estos dos desarrollos tecnologicos suele ser muy util sobre todo para los usuarios de sc3 ya que podemos aumentar las opciones de crear nuevas herramientas

Existen diferentes formas de hacer esta conexion, puede ser via arduino--> pd-->osc-->sc3 o la mas recomendable via SMS ya que esta forma ocupa menos cpu por lo que es la que ocuparemos.

Simple Message System (SMS) es una libreria para Arduino 004 y posteriores. Facilita la comunicacion con terminales o mensajes basados en programas como Pure Data o Max/Msp. Todas las entradas y salidas seriales pueden ser interpretadas en codigo ASCII.

A parte de la libreria SMS de arduino necesitamos tener un programa que se llama SVN (SubVersion) que es   un software de control de versiones que reemplaza al CVS. El SVN sigue la historia de los archivos y directorios a traves de copias y renombrados, crea ramas y etiquetas, maneja eficientemente archivos binarios y permite el bloqueo de archivos. Se usa en archivos binarios que, al no poder fusionarse facilmente, convienen que no sean editados por mas de una persona.

Despues de que tengamos estos programas instalados en nuestra computadora, necesitamos abrir una terminal y escribir los siguientes comandos:

            ~ katya$ svn list https://quarks.svn.sourceforge.net/svnroot/quarks

y      ~ katya$ svn status https://quarks.svn.sourceforge.net/svnroot/quarks 

y dar aceptar cuando nos lo pregunte y cuando pregunte si es permanente, escribe p. Una lista de archivos y quarks se va a desplegar y listo, ya tenemos instalados los quarks para ser usados en sc3.

Ahora, para instalar el quarks Arduino abres una sesion de supercollider y tecleamos quarks.checkoutAll y se despliega una lista en la post window, despues en nuestra sesion tecleamos  Quarks.install("Arduino") y damos enter, ahora si ya esta listo para usarse en conjunto.

 Como abrir una sesion conectando el arduino con el supercollider?


 En la figura siguiente se encuantra una foto de la conexión que debes realizar con el potenciometro en una tableta protoboard y el arduino.



Potenciometro

Vamos a hacer una programación en Arduino y en SuperCollider para recibir datos desde el potenciómetro.

Abrimos un sesion nueva de arduino y tecleamos el siguiente codigo:

#include "SimpleMessageSystem.h"

 int potPin = 0;    // selecciona el pin de entrada del potenciometro
 int val = 0;       // almacena la variable que viene del sensor (potenciometro)
 int a;

 
 void setup() {
  Serial.begin(115200);
 }

 void loop() {
  a = analogRead(potPin);    // lee el valor del potenciómetro
  messageSendChar('v');        // manda el valor en un mensaje
  messageSendInt(millis());    // junto con el tiempo que ha pasado desde que prendio el Arduino
  messageSendInt(val);
  messageEnd();
  delay(val);                  // detiene el programa por algun momento
 }

Compilamos, presionamos el push botton de reset de la tableta Arduino y lo cargamos.

En una sesion de supercollider  escribimos el siguiente codigo:

p = ArduinoSMS("/dev/tty.usbserial-191", 115200); 

 p.action = { |... msg| msg.postln };

Los numeros 115200 tienen que coincidir con la velocidad de transmision de datos y los datos /dev/tty.usbserial-191 con los valores del puerto usb en donde tenemos conectado el arduino.  Esto se mira en el menu Tools/Serial port y en el icono de Serial monitor.
}