Qué estas conectando al puerto serie?
Tengo conectado al puerto serie USB de mi PC un arduino, que me manda datos serie, y los qiero pasar a midi pa que ableton me lo reconozca, y de ese modo disparar sampler a partir de sensores conectados a arduino :]
Por partes:
1.- Si arduino me aparece en el administrador de dispositivos, en concreto como el puerto COM4 de USB
2.- Si la aplicacion S2MIDI, me recibe los datos, pero al enviarlos a ableton y hacer el mapeo de midi, me detecta no una nota, sino mil al mismo tiempo, por lo q no puedo hacer nada. De hecho creo q es aqui donde reside el problema, que no me hace la conversion bien, por eso pido otro software de conversion para comprovar.
3.-Como baudrate solo me funciona y mal el de 9600, pensaba q seria el de 4800, parecido al bitrate, pero como son otras cosas he pensao q ya estaria bien los 9600.
4.-resto de parámetros: Parity=None; Data bits=8(no me funciona con otro); Stop bits=None
No tengo ni idea de que es parity ni stop bits, si lo sabes, me lo podrias explicar??? gracias :]
5.-El arduino que uso yo, el diecimilia, solo tiene salida USB, pero ya actua como salida serie de datos. A parte de esto, podria connectar un cable midi, y sacar midi con un cable normal, pero me interesa hacerlo por el cable USB, ya que seria mucho mas comodo.
Gracias por la info :]
Conecto S2MIDI a ableton justamente usando el midiyoke, y funciona muy bien, lo he provado conectando pure data al ableton y me funciona correctamente.
El mismo S2MIDI, trae un pequeño monitor que indica que esta ocurriendo con los datos de salida, ya que me va dando diferentes valores de dato serie, y nota midi, y justamente me da el mismo resultado que en ableton, es decir, las notas midi, que te digo q me salen mil, que da S2MIDI, son las mismas que ableton reconoce.
Si he entendido bien,a S2MIDI le llega un mensaje midi de forma correcta (¿lo muestra en el monitor?),pero él a la salida saca el mismo mensaje de forma repetida y continuada ¿es así?
¿Conectándole Pure Data a su entrada va bien? ¿o te referías sólo a midi yoke cuando hacías referencia a pure data y ableton?
Habría que ver primero qué es lo que envía arduino por el puerto com para comprobar que está correcto.Según he leído en un par de sitios,arduino transmite a 115.200 baudios,aunque imagino que el baudrate se podrá configurar en la misma placa o con la aplicación que le cargues.
Te adjunto un monitor com para que lo compruebes y si puedes me pones una captura de pantalla con los mensajes que le llegan al monitor.
Archivos adjuntos (
loguéate para descargar)
Buenas, muchas gracias tio!
Al final lo he conseguido!!! El tema era que mandaba mal el mensaje midi desde arduino, y claro S2MIDI no pillaba nada, o al contrario me daba una nota por cada muestra que enviaba, y claro en S2MIDI me salian mil notas. Al final todo bien. Pero una cosa, hay q cambiar el baudrate de arduino, ya que para enviar MIDI es necesario enviar los datos con un Baud Rate de 31250, lo cual se consigue tan solo escribiendo una sentencia en arduino al principio del programa.
La sentencia es: Serial.begin(31250);
De este modo estamos diciendo a arduino que mande mensajes a esta velocidad.
Ya puestos pongo como enviar el mensaje midi desde arduino. Como sabeis, un mensaje midi esta compuesto por 2-3 bytes, los cuales suelen ser: 1byte estado, 1byte nota, 1byte velocidad(volumen). Por lo tanto, al enviar un mensaje midi hay que enviar 3 mensajes serie con la info de cada uno, es decir:
void noteOn(char cmd, char data1, char data2) {
Serial.print(cmd, BYTE);
Serial.print(data1, BYTE);
Serial.print(data2, BYTE);
}
Esta función coje los valores que le entran, y los manda en formato serie uno detras del otro. Cmd estado, data1 nota, data2 velocidad.
La sentencia adecuada para que entre a la funcion:
noteOn(0x90,KICK,63);
Siendo Kick el valor associado a la nota midi de un bombo.
Entonces, solo hace falta configurar el S2MIDI con este baud rate(aunq no ponga el valor predefinido, se puede seleccionar escribiendolo uno mismo), el puerto de entrada y el de salida y listos.
Muchissimas gracias.
¿A qué te refieres exactamente con que no te deja leer de ese puerto?
Por cierto ¿com3? ¿cuantos puertos serie tiene tu pc?
primero cargo el programa en la placa arduino, y lo pongo a correr siendo su salida el puerto com1.
abro el s2midi le doy start y me da un mensaje q el puerto com1 esta siendo utilizado. mi pregunta
el s2midi no tiene q leer del puerto donde escribe el arduino??????????????????????????
gracias