Controlador MIDI por USB con PIC para Virtual Dj

He tratado de comunicar mi pic 18f4550 con virtual empezando con un botón pero no logro hacerlo trabajo en ccs alguna ayuda este es mi código:
Código:
#include <G-PIC Lite!.c>
#fuses hspll,nowdt,nomclr,noprotect,nolvp,nodebug,usbdiv,pll1,cpudiv1,vregen
#use delay(clock=48M)
#define USB_CONFIG_HID_RX_SIZE   16
#define USB_CONFIG_HID_TX_SIZE   16
#DEFINE USB_HID_DEVICE TRUE
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
#define USB_EP1_TX_SIZE 16
#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
#define USB_EP1_RX_SIZE 16
#include <pic18_usb.h>
#include <usb_desc_hid.h>
#include <usb.c>
int out_data[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1};
void main()
{
   usb_init ();
   enable_interrupts (global);
   enable_interrupts (INT_usb);
   usb_wait_FOR_enumeration ();
   output_high (PIN_B6);
   WHILE (true)
   {
   if (usb_enumerated())
   {
   usb_task();
   if (input(pin_b7)==1)
   {
      usb_put_packet(1,out_data,16,USB_DTS_TOGGLE);
      delay_ms(50);
   }
   
      }
   }

   }

si alguien puede ayudarme o lo estoy haciendo mal plis.
todo por HID
 
Última edición por un moderador:
Hola JABE:
No me he mirado muy a fondo el código, pero veo que dentro del bucle while, en el momento que pin_B7 está a "1" lo envías por usb, pero nunca envías cuando está a cero.
Por otra parte, falta el reporte HID para ver si está bien definido el botón.
Nunca he probado HID en Virtual Dj, pero bueno, mira este par de cosas.
Saludos
 
quería hacerles una pregunta, quizá tonta, pero soy mas teórico que "constructor", diseñé un aparato midi para un proyecto en mi universidad (no se si conocen el theremín), la cosa es que me pillo con esto y me pareció interesante la comunicación por USB, entonces quería preguntarles: en el PCB de mi circuito, el chasis del conector USB lo conecto con mis 0[V]??? Tengo una confusión con ello, porque todo mi circuito es alimentado con un transformador de punto medio, y precisamente el punto medio lo tengo conectado a tierra, entonces no se si eso afectará y haré un cuete gigante en mi notebook.

(es mi primer post, pero siempre leo este foro)
 
Si tienes dudas déjalo sin conectar. Yo no lo conecto. Si no me equivoco, la carcasa del conector va unida a la malla del cable USB y ya hace contacto en el lado del PC, así que en la placa no lo conectes.
Si estoy equivocado me pueden corregir.
Un saludo
 
justamente ayer conversando con un profesor me dijo lo mismo, que no los conectara, porque en el notebook podría hacer un cuete y decidí usar un optoacoplador en el conversor AD...
Por lo demás rachelies, estuve probando tu programa para la comunicación usb, y funcionó muy bien a la primera. Decidí tu descriptor que está muy bueno, yo tenía todo escrito directamente en el programa principal. (hace poco comencé a programar en C y hay muchas cosas que no conozco. En este tema recién me enteré que era un descriptor )
 
El chasis si va conectado a tierra en la computadora, pero en el dispositivo no debería, o se hace a través de una resistencia ya que no debe transportar corriente, esta debe ser centralizada a la fuente (la computadora que es la que alimenta el USB) así se asegura que la malla cumpla con su función.
Pero bueno, esto hablando de un cable USB correcto, por que he visto unos baratos sin malla donde ya no importa ya que el chasis queda aislado.
 
hola companeros, al igual que jabe no consigo comunicar VIRTUAL DJ con mi dispositivo HID programado con el PIC18F4550, me han dicho que si el sistema operativo es de 64 bits no va funcionar... ¿es eso cierto?
 
Última edición:
Eso es falso, porque el mio es el windows 7 64bits y funciona. Lo complicado es hacerlo funcionar por el tema de los mappers y todo eso. Al final lo dejé porque era bastante fastidioso, mucho más fácil con el Traktor
 
Exacto, yo probe los programas que subieron acá en un 18F4550 y en un 18F2550 y funcionan la mayoria (los que están pulidos) y tengo windows 7 de 64 bits y en notebook, ademas han funcionado en todos los computadores que probé. Un detalle para el que le sirva, de todos los programas que probé, el mas simple para recibir las señales midi es el FRUITY LOOPS. No hay que configurar nada, y los potenciometros los puedes asignar a cualquier pista con solo moverlos + 1 click
 
Saludos, muy interesante el tema... (y muy extenso para leerlo todo, solo he leído los últimos comentarios).

Apenas ando terminando un proyecto similar pero para controlar Traktor, como interfaz utilizo Arduino UNO, el cual se encarga de recibir datos serie enviados por un PIC16F73 para posteriormente enviarlos vía USB a la computadora. En la computadora, aparte de estar corriendo el traktor, utilizo otro programa (LoopBe3) que recibe los datos desde el puerto USB y los envía a un puerto MIDI virtual que finalmente se comunica con el Traktor.

Aquí es donde tengo un "problema", este programa LoopBe3 lo descargué como versión de prueba y después de 60 min caduca y el puerto virtual se cierra. Entonces quisiera saber si ustedes conocen algun otro programa para generar puertos MIDI virtuales sin la limitación temporal (si no los hay, tendré que comprar la versión de paga de LoopBe3). Utilizo W7 con 64 Bits.

PD. Si ya hablaron de esto en el tema por favor si pueden dirigirme al post donde lo trataron

 
Sabes el Arduino Uno se puede programar para aparecer como MIDI-USB así que no necesitarías usar la interfaz virtual, lo que necesitas es cambiar el firmware del ATmega16u2 que controla la comunicación.
 
¿Y no te merece más la pena enviar los datos MIDI directamente al USB? Supongo que en el Arduino se puede hacer.

Nuyel, hemos pensado lo mismo a la vez, jajajaja

Sabes el Arduino Uno se puede programar para aparecer como MIDI-USB así que no necesitarías usar la interfaz virtual, lo que necesitas es cambiar el firmware del ATmega16u2 que controla la comunicación.

Gracias por responder, verán esa es una solución pero lo que pasa es que en un futuro pienso quitarle el Arduino y utilizar un FT232 para hacer la conversión RS232-USB. Por eso me interesa más un programa que esté en el ordenador

Saludos
 
Pues el LoopBe1 es gratuito, solo que se limita a un dispositivo pero no tiene limite de tiempo, por que de otra manera no se si solo es cosa mía pero conseguir un PIC18F4550 para usar la comunicación USB de este en lugar del FT232 y emplearlo para el procesamiento en lugar del PIC16F73 podria ser más económico ($4.50 + $8.69 = 13.19 comparados con los $5.82 del PIC18F4550)
 
Pues el LoopBe1 es gratuito, solo que se limita a un dispositivo pero no tiene limite de tiempo, por que de otra manera no se si solo es cosa mía pero conseguir un PIC18F4550 para usar la comunicación USB de este en lugar del FT232 y emplearlo para el procesamiento en lugar del PIC16F73 podria ser más económico ($4.50 + $8.69 = 13.19 comparados con los $5.82 del PIC18F4550)


Y si no necesitas tantos pines, yo he utilizado un 18F2455 que es más barato aún.

Muy bien, en realidad solo necesito un puerto así que creo este me servirá (y veo que si opera bajo W7 (y)).

Tengo a la mano dos PIC's con puerto USB, el 18F2550, y el 18F2450 y por su número de pines ambos me servirían bien salvo que aún no se programarles el puerto USB, verán que se me dificulta un poco el C, me voy más por el asm. Pero en un futuro seguiré su consejo de utilizar un PIC18 para ahorrar componentes.
Gracias por sus respuestas

PD. Seguiré al pendiente del post por si puedo aportar algo
 
El USB en asm...yo ni me lo planteo, jejeje. Si miras por el comienzo del hilo, sale todo explicado para manejar el puerto USB como si fuese un dispositivo midi, y así no necesitas el programa puente para convertir a MIDI. Eso sí, en lenguaje C de CCS. Yo creo que es bastante sencillo.
Un saludo
 
Si la USB y asm es mucho muy complejo por eso me fui por el Arduino jeje, bueno por el momento ya descargué el LoopBe1 y quedó resuelto el problema del tiempo, ya me armé un djset de más de una hora :cool:
Saludos
 
Eso es falso, porque el mio es el windows 7 64bits y funciona. Lo complicado es hacerlo funcionar por el tema de los mappers y todo eso. Al final lo dejé porque era bastante fastidioso, mucho más fácil con el Traktor

Hola rachelies ¿porque es fastidioso?, segun revice la informacion en la pagina de virtual DJ, dicen que HID es recomendable antes que midi.

mi dispositivo funciona bien con WIN7 de 32 bits pero en la portatil de 64 bits no puedo hacerlo funcionar.. que pudiera estar ocurriendo??:confused::confused:
 
Última edición:
En HID no lo probé, pero en MIDI si, y tienes que hacer dos archivos en el virtual dj, el mappers y el devices si no recuerdo mal, donde (y te hablo de cabeza porque hace muuucho que no lo hago) tienes que declarar como variables en un archivo y hacer la llamada en el otro archivo para decir lo que hace esa tecla o conjunto de teclas. No es tan fácil como pulsar una tecla y que la detecte el vitual dj y asignarle una función como se hace en otros.
En HID puede que sea más fácil, no se.
 
Atrás
Arriba