Autor Tema: Controlador MIDI por USB con PIC para Virtual Dj o Traktor  (Leído 19881 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Controlador MIDI por USB con PIC para Virtual Dj o Traktor
« en: 30 de Junio de 2010, 04:48:43 »
Hola:
Estoy tratando de construir un controlador Midi para controlar el Virtual Dj (para los que no entiendan, un software para mezclar música). Todo ello lo hago con un pic, el cual tiene que hacer 2 funciones: enviar datos y recibir datos.
La parte de enviar los datos ya funciona perfectamente, es decir, las teclas y todo lo que controla al software.
Pero lo que quiero hacer, es que el software envíe datos hacia el pic, como por ejemplo, los leds, el display con el nombre de las canciones, etc... Esto segundo se puede hacer utilizando el VDJscript  http://www.virtualdj.com/wiki/ControllerDefinitionHID.html
Si alguien se quiere animar a unirse al proyecto estaría muy agradecido. Todavía no se como utilizar el VDJscript ni como enviar los datos hacia el pic.
Un saludo y muchas gracias.
« Última modificación: 09 de Agosto de 2010, 16:05:24 por rachelies »

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #1 en: 03 de Julio de 2010, 09:29:37 »
¿Nadie se anima?

Desconectado BEXTIXTOX

  • PIC16
  • ***
  • Mensajes: 108
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #2 en: 05 de Agosto de 2010, 13:36:05 »

apuntame en la lista
me gusta la electronica y tambien ago algunos mixes en EL  VIRTUAL DJ

estoy trabajando con la comunicacion USB que seria buena para tu proyecto
pues taraba buena velocidad
PERO aun lo consigo dominarla al 100% estoy a un 65% de avance


sobre el VDJscript no se nada de este (o esto) en el transcurso del dia investigare aver que avances puedo tener


otra cosa estoy utilizando un programa que se llama LABVIEW que es en el que recivo datos en la PC del mundo exterior por medio de USB y He visto algunos ejemplos que lo interfasan con EXCEL y desconosco aun si pueda aser una interfas con algun otro programa


mi correo es  robertiko_07@hotmail.com


saludos...

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #3 en: 05 de Agosto de 2010, 13:50:19 »
Muy interesante la idea!

No entiendo bien lo que lograste? La comunicación es USB? Las interfaces comerciales no son caras, no? Es con fines educacionales?
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #4 en: 05 de Agosto de 2010, 14:01:14 »
Hola, explicaré un poco más:
El controlador consta de 2 "controladores", al estilo de dos cdj1000 de pionner o algo por el estilo, pero sin los cd, no se si me explico. Bueno, pues uno de ellos lo llamo A y al otro B. El A se comunica con el PC por medio de USB, utilizo un pic 18F2455, y es la comunicación mediante MIDI por USB para el software a controlar. Con el Traktor funciona perfectamente, envía y recibe información, pero con el Virtual Dj, al utilizar los VDJScripts, algo me falla, pero bueno, si con el Traktor funciona ya es suficiente.
Por otro lado, el controlador B  es igual que el A, pero va conectado al A, no al PC, y consta de un pic 16F873A. Le envía la información al A por medio de I2C, y el A se encarga de enviar por USB la información de ambos. Entre el A y el B hay comunicación I2C.

Ahora mismo estoy estancado en esta comunicación I2C. El A lee 1 byte perfectamente de B por I2C en las pruebas, pero en la realidad tengo que leer 3bytes del B y aqui es donde me falla, porque no se que hago mal que no hace la comunicación.
En el master, el A, tengo el siguiente codigo para leer los bytes:
Código: [Seleccionar]
                                      i2c_start();
i2c_write(0x0A+1);
tempoB1=i2c_read();
TB1=i2c_read();
TB2=i2c_read(0);
i2c_stop();
En la interrupción del esclavo, el B, tengo lo siguiente:
Código: [Seleccionar]
#INT_SSP
void ssp_interrupt()
{
state=i2c_isr_state();
if(state==0x80){
i2c_write(buffer[0x00]);
i2c_write(buffer[0x01]);
i2c_write(buffer[0x02]);
}
return;
}
Esto es lo que me falla por el momento.
¿Alguna idea? Un saludo y gracias

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #5 en: 05 de Agosto de 2010, 14:48:49 »
Por qué I2C?

A es master y B esclavo? O es multimaster lo que usás?

Si hay un master y un esclavo, SPI es mucho más sencillo y rápido...

Volviendo a lo del I2C, me parece que en el i2c_read() si querés seguir leyendo bytes tenés que hacer i2c_read(ACK) para indicarle que esperás más bytes. Al menos así era con la memorias si mal no recuerdo. Nunca comuniqué 2 uC por I2C.

Saludos.
« Última modificación: 05 de Agosto de 2010, 14:53:24 por BrunoF »
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #6 en: 05 de Agosto de 2010, 14:54:46 »
Me interesa mucho el proyecto, podrías compartir lo que has hecho? Siempre quise tener mi propias Denon caseras. Hace más de 10 años que dejé de ser DJ...

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #7 en: 05 de Agosto de 2010, 16:24:38 »
Todavia estoy haciendo pruebas y tengo todo en unas placas de pruebas. Lo que puedo es ir poniendo ejemplos de como hago cada cosa (USB, midi, teclado....)
Hoy ya no tengo mas tiempo, así que mañana seguimos con el asunto.
Saludos

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3492
    • http://www.todopicelectronica.com.ar
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #8 en: 05 de Agosto de 2010, 20:06:15 »
Hola, muy bueno tu proyecto... yo tengo la BCD2000 de behringer para controlar en VD, lo que se pueda espiar, avisame y "lo espiamos" je je

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #9 en: 06 de Agosto de 2010, 09:07:47 »
Hola BrunoF.
Uso el I2C porque hay un maestro (el A), pero luego habrá varios esclavos. Un esclavo es el B, pero hay por lo menos un par de expansores de salidas, porque necesito varias salidas para los leds, y estos van en I2C, y con SPI solo podría utilizar un esclavo ¿o me equivoco? Nunca he utilizado SPI.
Además, tambien habria la posibilidad de añadir un display a cada controlador,  y tambien me comunicaria por I2C. De momento en las pruebas estoy en velocidad lenta, y no veo que haya problemas de retardo. En cuando lo tenga un poco dominado lo de la comunicación, lo pasaré a velocidad rapida.
Una duda que tengo: ¿Se pueden comunicar 2 PIC por USB?

Por otro lado, TODOPIC, se tendra en cuenta lo de la BCD2000 por si hay que espiar algo, jejejje. Muchas gracias

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #10 en: 06 de Agosto de 2010, 09:28:41 »
Empezaré a poner algo de lo que voy haciendo. Lo primero, creo que es la comunicación USB, y que el PC nos reconozca el PIC como un dispositivo MIDI. Yo lo estoy haciendo como MIDI, que he visto otros muchos proyectos que lo hacen como joystick y lo convierten a midi por software en el PC, pero creo con MIDI ofrece muchas mas posibilidades.

Para el USB por MIDI hace falta un USB_Desciptor para ello. Hay varias paginas que explican las caracteristicas que tiene que tener. Yo utilizo el codigo que pongo aqui en el archivo midi7.h Ya no se ni de donde lo he sacado... En el se dice al PC que numero de salidas y entradas MIDI tenemos y el resto de caracteristicas que hacen que reconozca el PIC como dispositivo MIDI. De esta forma no hacen falta drivers ni nada.

Para el PIC del controlador A, utilizo un PIC 18F2455 con un cristal de 20Mhz, y lo configuro para poder utilizar el USB todo ello con estas lineas en el encabezado:

Código: [Seleccionar]
#include <18F2455.h>
#device ADC=8
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN      //~~~ 20MHZ OSCILLATOR CONFIGS ~~~//
#use delay(clock=48000000)

#DEFINE USB_HID_DEVICE     FALSE
#define USB_EP1_TX_ENABLE  USB_ENABLE_BULK  //turn on EP1 for IN bulk/interrupt transfers
#define USB_EP2_RX_ENABLE  USB_ENABLE_BULK  //turn on EP1 for OUT bulk/interrupt transfers
#define USB_EP1_TX_SIZE    64  //size to allocate for the tx endpoint 1 buffer
#define USB_EP2_RX_SIZE    64   //size to allocate for the rx endpoint 1 buffer

#include <pic18_usb.h>
#include <.\include\midi7.h>   //USB Configuration and Device descriptors for this UBS device
#include <usb.c>           //handles usb setup tokens and get descriptor reports

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

Lo del Use RS232 lo he visto en todos los los ejemplos y no se si hace falta para el usb o no. Cuando lo tenga todo mas o menos pulido lo quitaré.

En el main del programa colocamos usb_init_cs(); y
Código: [Seleccionar]
while (TRUE) {
       usb_task();
}
y al conectar el pic al PC nos tendria que salir en el panel de contol, dispositivos de audio midi, como un dipositivo de audio usb
« Última modificación: 06 de Agosto de 2010, 09:32:10 por rachelies »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #11 en: 06 de Agosto de 2010, 11:40:59 »
Hola BrunoF.
Uso el I2C porque hay un maestro (el A), pero luego habrá varios esclavos. Un esclavo es el B, pero hay por lo menos un par de expansores de salidas, porque necesito varias salidas para los leds, y estos van en I2C, y con SPI solo podría utilizar un esclavo ¿o me equivoco? Nunca he utilizado SPI.
Además, tambien habria la posibilidad de añadir un display a cada controlador,  y tambien me comunicaria por I2C. De momento en las pruebas estoy en velocidad lenta, y no veo que haya problemas de retardo. En cuando lo tenga un poco dominado lo de la comunicación, lo pasaré a velocidad rapida.
Una duda que tengo: ¿Se pueden comunicar 2 PIC por USB?

Por otro lado, TODOPIC, se tendra en cuenta lo de la BCD2000 por si hay que espiar algo, jejejje. Muchas gracias

El SPI es multiesclavo. El problema es que, tecnicamente, hace falta 1 linea individual adicional por cada esclavo que agregues. Si es así, entonces I2C es mejor.

Sólo se pueden comunicar 2 PICs por USB si uno tiene la capacidad de ser Device(casi todos los que tienen USB la tienen) y otro Host u OTG(solo algunos de los mas nuevos PICs la tienen).

Saludos
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #12 en: 06 de Agosto de 2010, 13:41:24 »
rachelies, si te quieres hacer el dispositivo USB-MIDI te recomiendo que te leas la documentión que viene al caso para esta aplicación y la consigues en http://www.usb.org/developers/devclass_docs/midi10.pdf

Yo con esto no he trabajado, si con el HID, y si como dices que se puede usar un joystick y luego con un soft emular un MIDI pues seria mucho mas facil, ademas de que existen varios ejemplos de joystick, incluso si me dices que necesitas te modifico uno de los que tengo con las entradas que necesites. Pensando en usar un 18F2550 puedes tener 8 ejes hasta de 10 bits (creo que en otro hilo he mencionado algunos mas) y unos cuantos botones. Si necesitas mas entradas lo que puedes hacer es hacerte una placa identica y ya duplicas todo.

No se si tu aplicación tambien necesitaría salidas como los MIDI tienen.

Saludos, Willy
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado rachelies

  • PIC12
  • **
  • Mensajes: 65
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #13 en: 06 de Agosto de 2010, 14:33:53 »
Por HID fue como empecé, pero es mas facil en midi, que el Traktor lo reconoce sin problemas, y es más fácil a la hora de enviar los leds, los bpm, etc... desde el PC al controlador. Me funciona perfectamente el Midi.
Sobre como hacerlo con joystick y hid hay mucho en otros foros. Yo voy a hacerlo con midi porque a mi me parece mejor, y porque así abrimos otra puerta más. De esta forma se parece más a la forma de trabajar los controladores "de verdad".

El problema que tengo ahora es que no consigo leer desde el A 3bytes por i2c del B. Simulando en el proteus funciona, pero cuando lo monto y con la secuencia de i2c siguiente no funciona:
Código: [Seleccionar]
                       i2c_start();
i2c_write(0x0A+1);
tempoB1=i2c_read();
TB1=i2c_read();
output_high(PIN_A1);
TB2=i2c_read(0);
i2c_stop();
output_high(PIN_A2);

El primer read lo hace, el TB1 tambien, el TB2 también, pero es como si no hiciese el Stop, porque el led que tengo en el A2 ya no se enciende.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Controlador MIDI por USB con PIC para Virtual Dj
« Respuesta #14 en: 06 de Agosto de 2010, 14:54:32 »
Probaste lo que te dije del ACK en uno de los mensajes previos?
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.