Hola gmazz94.
Si quieres te voy ayudando yo a empezar. Para hacer lo primero, con un botón enviar un comando al virtualdj, o traktor por midi es muy fácil. Mi controlador lo hice en CCS, así que es así como te puedo ayudar.
Primero haz el código para que detecte cuando presionas el botón, que eso lo puedes hacer a tu gusto. Después, para enviar esto en midi hay dos posibilidades: Enviar un "note_on" cuando presionas, y un "note_off" cuando sueltas, o la segunda posibilidad, que es como yo lo hago, que es enviar en cada modificación un "note_on" y variando el volumen, "0x7F" para enviar un "1", y volumen "0x00", para un "0".
¿Dificil?, jejej, verás que en la práctica no.
Yo he creado una matriz de 4 bytes llamada "envia" para meter los datos a enviar, declarandola así:
Una vez hayas detectado el cambio en el botón, metes esto en la matriz:
Código:
envia[1]=0x90;
envia[0]=envia[1]>>4;
envia[2]=0x00;
envia[3]=0x7F;
usb_put_packet(1,envia,4,USB_DTS_TOGGLE);
Traduciendo esto:
envia[1] es el comando "note_on", que está especificado en el estandar midi-usb que es así, 0x90. En algún sitio leí, pero no se donde, que antes del comando, tienes que enviarlo intercambiando los nibbles, es decir, en "envia[0]" habría que enviar 0x09, por eso la operación que ves más arriba.
Después, "envia[2]" lleva el número de nota, que va de 0x00 a 0x7F. Cada botón tiene que tener asignada una nota diferente, por lo que podrías tener 128 botones. En realidad se pueden enviar muchos más, porque hay más canales midi, y se podrían enviar 128 en cada uno de ellos, pero eso ya es más complejo.
Y al final, en "envia[3]" se mete el valor del volumen de nota, que asignamos para los botones 0x7F para cuando envias un "1", y 0x00 para un "0".
Para enviar solamente botones, "envia[0]" y "envia[1]" serían siempre iguales, y solo se cambiaria "envia[2]" que haría referencia al numero de boton, y "envia[3]" para el estado del botón. Y siempre que cambie un botón para enviarlo, después de cambiar las variables, colocas
Código:
usb_put_packet(1,envia,4,USB_DTS_TOGGLE);
y listo, para empezar ya tienes.
Échale un ojo y luego seguimos con más dudas.
Un saludo.