La cocina PolyPHONIC (6 / 8 paso)

Paso 6: El código: procesamiento

En nuestro código de procesamiento, enganchadas las entradas recibidas del puerto Serial a un archivo de sonido. Si ese cierto sensor se apaga, se iniciará el sonido. Usted puede notar un ligero retraso en el inicio del sonido. Esto es porque nosotros hemos calculado que comenzará en el ritmo y trabajar con otros sonidos.

El archivo zip tiene los archivos de datos (clips de sonido) y el bosquejo de procesamiento en la jerarquía de carpeta correcta tan sólo Descargue el archivo zip, extraer la carpeta con los archivos que contiene a y abrir el bosquejo del proceso! (Si algo le sucedió, sólo asegúrese de que la carpeta de datos y el fichero .pde están dentro de la carpeta con el mismo nombre que el fichero .pde.)

Notas sobre el código:
1) Puerto serie definido en este código debe coincidir con el puerto serie conectado el Arduino a. En la función de configuración, hemos creado el puerto variable a un objeto Serial que representa el puerto que usará para leer los datos. Actualmente, se encuentra en el primer puerto disponible, pero si eso no funciona, cambie el segundo argumento por el nombre del puerto que está conectado el Arduino.
2) nos hemos cargado dos géneros de la música. Para cambiar entre los dos, debe establecer el tempo variable y contar los números correctos tal como se define en los comentarios.

Código de procesamiento:

/*
La cocina polifónica
Sara Montoro
Karl Landin
Alice Lee
Pitts de Noé

Universidad de California, Berkeley
CNM290/CS294-85
: Crítica materiales, protocolos y cultura

Dejanos un comentario si tienes otras ideas y sugerencias!
*/

Import processing.serial.*;
Import ddf.minim.*;

int [] mag = {0,0,0,0};
pote de int [] = {0,0,0,0,0}; Los potenciómetros no se almacenan en orden. El centro
conectada al pin de que a3 realmente se alimenta en la serie después
todos los otros potenciómetros. Será el último valor de
esta matriz (pot[4]).
Float volumeCab;

mot int = 0; sensor de movimiento. (no utilizado)
tapa int.

archivos de sonido
String [] canciones;
Cadena de reggae [] = {"t75bass1.wav","t75drums1.wav","t75horn1.wav","t75guitar1.wav","t75keys1.wav","t75synth1.wav","t75vocals1.wav","t75backup1.wav"};
Cadena de flamenco [] = {"t120bass1.wav", "t120drums1.wav", "t120guitar1.wav", "t120guitarSolo1.wav", "t120percusA1.wav", "t120percusB1.wav", "t120piano1.wav", "t120vocals1.wav"};

Boolean minimStarted = false;

Si usted desea elegir un género diferente, cambiar la por debajo de dos variables a las que la música que quieras.
REGGAE, tempo = 75, count = 1
FLAMENCO, tempo = 120, count = 1
tempo de int = 75;
int cuenta = 1;

vencer a int, beatSum, lastMillis, error, mspb, bps;

Puerto serial;

Mínima mínima;
AudioPlayer [] jugadores = nuevo AudioPlayer [8];

void setup() {}
MSPB = count * 60000/tempo;
BPS = tempo/60;
tamaño (512, 200, P3D);

Nota: el segundo argumento en esta convocatoria debe ser el nombre del puerto serie que
el Arduino se comunica con la computadora a través de. (En el Arduino Sketch
vaya a herramientas > Serial Port. El puerto marcado es el que está usando el Arudino.)
Para ver una lista de puertos disponibles, descomentar el umbral.
println(serial.List());
puerto = serie nueva (este, Serial.list() [0], 9600);

poder llegar al directorio de datos
mínima = nuevo Minim(this);

{Switch(tempo)}
caso 100:
println ("Tempo: 100 - sin medios de comunicación disponibles en la actualidad");  Tempo = 100
rotura;

caso 120:
Temp FLAMENCO = 120
canciones = flamenco;
rotura;

caso 140:
println ("Tempo: 140 - sin medios de comunicación disponibles en la actualidad");  Tempo = 140
rotura;

Tempo REGGAE = 75
caso 75:
canciones = reggae;
rotura;
}

Loadfiles de carpeta de datos y la carpeta de dibujo
para (int x = 0; x < songs.length; x ++) {}
jugadores [x] = minim.loadFile(songs[x]);
}

Solicitar valores de inmediato
Port.Write(65);

para (int i = 0; i < 4; i ++) {}
Players[i].loop();
Players[i].setGain(-80);
}
Minim.Start(this);
}

void draw() {}
Background(0);
Stroke(255);
frameRate(120);

cambiar el volumen de la estufa
para (int i = 0; i < 4; i ++) {}
Players[i].setGain(MAP(float(pot[i]),0,1023,-80,14));
}

volumeCab = map(float(pot[4]),0,1023,-80,14);

para (int i = 0; i < 4; i ++) {}
Players[i+4].setGain(volumeCab);
}

mantener el tiempo musical
if(Millis() > = lastMillis + mspb) {}
lastMillis = millis ()-6;
if(Beat == 32) {}
batir = 0;
}
error = lastMillis % mspb;
Print(Beat);
Imprimir ("," + beatSum);
println (", Error:" + error + "ms");

para (int i = 0; i < 4; i ++) {}
Si (mag [i] == 1 & &! players[i+4].isPlaying()) {}
jugadores [1 + 4] .setLoopPoints (0, 5);
Players[i+4].Play(0);
println ("jugador" + (i + 4) + "apenas comenzó");
}
Players[i+4].setGain(volumeCab);
}

Añadir para vencer a cuentas
batir = beat + count;
beatSum = beatSum + recuento;
println ("cap:" + Integer.toString(cap));
}
}

cerrar todos los reproductores de audio y minim
void stop() {}
para {} (AudioPlayer p: jugadores)
p.Close();
}
Minim.STOP();
Super.STOP();
}

siempre que hay algo disponible para leer
void serialEvent(Serial port) {}
Leer los datos
String entrada = port.readStringUntil('*');
Si (entrada! = null) {}
Empalmar la cadena en un array de enteros
int [] vals = int (splitTokens (entrada, ", *"));

Compruebe que todos los valores se encuentran
Si (vals.length! = 10) {}
println ("ERROR: sólo recibió" + vals.length + "valores.");
retorno;
}

Poner valores en las variables
Si (cap! = {int(vals[0]))}
Cap = int(vals[0]);
mínima de arranque/parada
}

para (int i = 1; i < = 5; i ++) {}
Si (pote [i-1]! = {vals[i])}
¡ Cuidado! El potenciómetro del medio impreso a últimos y será pot [4]
porque era el horno en nuestro prototipo y no un quemador de la estufa como el
otros 4 potentionmeters
Pot [i-1] = vals [i];
}
}

para (int i = 6; i < = 9; i ++) {}
Si (mag [i-6]! = {vals[i])}
MAG [i-6] = vals [i];
}
}
}
apretón de manos
Port.Write(65);
}

Artículos Relacionados

Placa de cocina / encimera

Placa de cocina / encimera

¿Cuántos quemadores siempre usas al mismo tiempo? Nunca he usado a la vez es 3 cuando yo estoy cocinando un pliego grande para un montón de amigos. Yo uso casi siempre sólo uno o dos a la vez. Con limitado espacio en mi cocina, yo estoy siempre preca
Montaje de cubierta, libro de cocina

Montaje de cubierta, libro de cocina

Decoupage es una excelente forma de hacer libros, cajas, tarjetas de cumpleaños, etc. más personal. Todo lo que necesita es una pila de revistas (que haya lectura), o algunas imágenes o servilletas lindos. De niño disfrutaba mirando a través de revis
Kit de cocina Solar y Altoids supervivencia

Kit de cocina Solar y Altoids supervivencia

Si usted se está preguntando lo que es incluso mejor que una supervivencia de Altoids puede aquí es un gran ejemplo! Con estos sencillos pasos tienes un kit de supervivencia fiable que no toma su bolsa entera. Sienta libre de añadir tus propias modif
Cirugía estética de la gran cocina

Cirugía estética de la gran cocina

Dar a su cocina una cirugía estética con nuevas puertas de los armarios.Voy a explicar cómo hacer la puerta roja en la foto, con tirón integrado (mango), que se podría agregar como un acento a su cocina, o hacer lo suficiente para reemplazar sus viej
El Sr. y la Sra. tejer paños de cocina

El Sr. y la Sra. tejer paños de cocina

Yo quería hacer mi primo y su esposa algo para su regalo de boda. Pensé que sería divertido para tejer trapos de cocina ya que me gustaria hacerlo ahora :) En lugar de hacer todo "su" y "Suyo" trapos de cocina, me fui con "Señor&q
Ropa Peg cocina Hack

Ropa Peg cocina Hack

¿Qué puede hacer una clavija de ropa en la cocina?Puede sonar como una broma, pero esto es lo que he hecho.Paso 1: artículos Unas pinzas de tender ropaDoble cara cinta (o un pegamento del silicio)CadenaUna tijeraPuede obtener fácilmente esos artículo
Soporte de cuchilla de cocina

Soporte de cuchilla de cocina

Mi esposa quería algún tipo de bloque de cuchillos. Pero tenemos varias diversas clases y tipos de cuchillos.La primera idea fue comprar un portacuchillos magnético, pero estos titular no encajaba en nuestra cocina... dijo mi mujer.Así que he constru
Esferas jugoso bocado - cocina fácil ciencia

Esferas jugoso bocado - cocina fácil ciencia

Se trata de una forma fácil y divertida para jugar con su comida! Si tienes niños quisquillosos, podría hacer algunos jugos de frutas y verduras y crear estas jaleas "caviar" de ella.Sólo se trata de dos ingredientes! .. .y una taza de aceite!Si
D4E1 cocina ayuda

D4E1 cocina ayuda

Este producto fue creado para ayudar a una persona con discapacidad visual que quiere ser capaz de cocinar otra vez.Los mayores problemas eran:Detectar donde se encuentra cada utensilio de cocina > funciona muy lentoVer verduras oscuras y claras en l
Cocina solar (caja de cartón)

Cocina solar (caja de cartón)

Cocina solar - utilizando una construcción de caja de cartón forrada con papel de aluminio para aprovechar la energía del sol para cocinar sus comidas, deshidratación de alimentos y purificar incluso el agua!Recetas pueden encontrarse en: http://sola
Jabón de cocina de buena mañana (café)

Jabón de cocina de buena mañana (café)

he estado haciendo jabón durante unos 12 años. Cuando digo "haciendo jabón" quiero decir REAL... no la glicerina del jabón, o derretir y verter tipo como usted comprar desde la tienda de artesanía (todo aunque he tenido ocasión de utilizarlo par
Deshidratador de un armario de la cocina.

Deshidratador de un armario de la cocina.

Sé que se puede salir y comprar un deshidratador eléctrico, pero éste se puede construir con cosas que ya tenga y también su siempre fresco para construir usted mismo. Arriba encontrará la parte 3 video que hice para mi canal de Youtube en esta compi
Hack de ayudante de cocina de PVC

Hack de ayudante de cocina de PVC

Amaba la idea de los ayudantes de cocina pero no apreció sus etiquetas de precio. Miró para un montón de hacks y la mayoría de ellos se dedican para trabajar la madera que necesita herramientas adicionales; no es exactamente nuestra taza de té. Luego
Cajones de cocina despensa

Cajones de cocina despensa

Conducir por el barrio, vi unos signos "en venta" en el patio de un vecino. Me detuve a hablar con él y, siendo un contratista general jubilado, él había acumulado algunas herramientas antiguas, algunas de las cuales habían quedados inutilizable