Convertidor serial data to midi data

  • 1
Batu
#1 por Batu el 04/04/2008
Buenas estoy intentando encontrar un conversor de datos serie a datos midi, si alguien tiene alguna idea me seria de gran ayuda.
He encontrado uno llamado S2MIDI, de memeteam, que esta en esta [url=webhttp://www.memeteam.net/2007/s2midi/]webhttp://www.memeteam.net/2007/s2midi/[/url]
pero la verdad es q deja un poco que desear, aunq nose si es problema mio o del programa.

Muchas gracias
Subir
modulay
#2 por modulay el 04/04/2008
Qué estas conectando al puerto serie?
Subir
Batu
#3 por Batu el 04/04/2008
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 :]
Subir
modulay
#4 por modulay el 04/04/2008
Batu escribió:
Tengo conectado al puerto serie USB de mi PC un arduino :]


¿Cuando conectas el arduino al usb, aparece en el administrador de dispositivos?

¿Esa aplicación que usas no recibe bien los datos o no recibe nada?

¿qué baudrate le tienes configurado?

¿y el resto de parámetros como los tienes?

¿el arduino aparte de la conexión usb lleva alguna serie? si es que sí ¿lhas probado con ella?
Subir
Batu
#5 por Batu el 04/04/2008
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.
Subir
modulay
#6 por modulay el 04/04/2008
Al ser un puerto com virtual no se hasta que punto son importantes esos parámetros de configuración del puerto serie,ya que el usb funciona de manera distinta.Aunque si dices que con una baudrate te funciona y con otro no,pues influir parece que influyen.
El bit de stop es parte del protocolo RS232 (serie) y sirve para marcar el fin de la transmisión de un byte.Lo normal en una comunicación serie suele ser 1 bit de stop ¿lo probaste?
Parity significa paridad...es un bit extra que también se transmite y se usa para comprobar que el byte transmitido se transmitió de forma correcta.No se suele usar.
Aunque ya te digo,todas estos parámetros son propios de un puerto serie físico,de verdad,con su conector de 9 pines.
Bueno,a ver...

Yo comprobaría si los datos de salida de S2MIDI están bien.
Eso lo puedes comprobar con un monitor midi como midi-ox

http://www.midi-ox.com

Aunque para poder conectarlo a S2MIDI necesitarás instalar midi-yoke,que lo encontrarás en la misma página.

¿cómo conectas la salida de S2MIDI a Ableton?
Subir
Batu
#7 por Batu el 04/04/2008
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.
Subir
modulay
#8 por modulay el 05/04/2008
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:
Subir
modulay
#9 por modulay el 06/04/2008
He probado S2MIDI mandándole datos desde un monitor COM a través de un puerto serie virtual...

http://www.eltima.com/products/vspdxp/

...he monitorizado la salida de S2MIDI conectándola a MIDI-OX...y funciona bien.

O es arduino quien no está enviando datos coherentes o algo tienes mal en ableton.

Usa los monitores que te he recomendado para ver que está pasando en ambos puertos
Subir
Batu
#10 por Batu el 09/04/2008
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.
Subir
modulay
#11 por modulay el 09/04/2008
Yo m'alegro :)
Suerte
Subir
ananjar
#12 por ananjar el 15/05/2008
A mi me funciona usando el driver de roland que se busca en google, roland serial midi driver.
Hay un hilo abierto en el foro de arduino. http://www.arduino.cc/cgi-bin/yabb2/YaB ... 1207256841
con logic 5.5 me va de lujo, xp sp2 profesional.
Con una LDR zas, tecnazo como la gente quiera.
Suerte al que no le vaya.
A mi a la primera, con la tasa de baudios correcta y todo, ningún problema.
Subir
meryburrojeb
#13 por meryburrojeb el 25/06/2008
Wenas! tengo un problema con el s2midi.
:cry:

Estoy intentando conectar el arduino y q m reconozca midi. al conectar el programa del arduino y el s2midi da un problema de conflicto de puertos.
Es decir el arduino lo tenemos al com3 x ejemplo, y el s2midi no nos deja leer de ese puerto con lo q no hay conversion..no se si me explico...
espero q m podais ayudar muxas gracias
Subir
modulay
#14 por modulay el 26/06/2008
¿A qué te refieres exactamente con que no te deja leer de ese puerto?
Por cierto ¿com3? ¿cuantos puertos serie tiene tu pc?
Subir
meryburrojeb
#15 por meryburrojeb el 26/06/2008
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
Subir
Respuesta rápida

Regístrate o para poder postear en este hilo