CDJ emulation con QEMU: laboratorio aislado y test/rollback.
Qué es la CDJ emulation, cómo montar un laboratorio aislado con QEMU, cómo encadenar test y rollback, y qué queda fuera de un banco de pruebas DJ.
Hay una pregunta que parece una y en realidad son cuatro: ¿puedo probar mi software contra un CDJ sin tener un CDJ delante? La respuesta depende de qué quieras probar. Emular la capa de red de un reproductor, emular su protocolo USB, reproducir su interfaz o ejecutar su firmware son caminos distintos, con distinto coste y con distinto estado de disponibilidad.
Esta guía continúa Emular un CDJ para pruebas, donde ya se separó emular el protocolo de ejecutar el firmware del fabricante. Aquí toca montar el banco de pruebas: qué papel juega QEMU, cómo se construye un laboratorio aislado que no dependa de tu cabina y cómo se organiza un ciclo de test/rollback para que un fallo cueste un reinicio y nada más.
Qué es la CDJ emulation y qué no promete
La CDJ emulation no es una cosa sola. En la práctica hay cuatro capas, y cada una tiene su vía:
- Capa de red. Un dispositivo virtual que se presenta en la red DJ Link como un reproductor más: recibe lo que circula y publica lo suyo. Es lo que hace una biblioteca de interoperabilidad, y es la vía documentada.
- Capa USB/HID. La conversación entre el equipo y el ordenador: botones, LEDs, informes de estructura fija. Está documentada desde fuera, con cabecera
0x20de entrada y0x21de salida. - Capa de interfaz. La pantalla y lo que muestra: ondas, portada, posición del playhead. Se puede simular, pero simularla no es emular el equipo.
- Capa de firmware. El software que arranca dentro del reproductor. Ahí no hay método verificado publicado, y esta guía no explica cómo ejecutarlo.
La tabla de abajo ordena esas cuatro y añade la que la gente olvida al empezar: el hardware real. Mírala antes de decidir qué vas a probar, porque la última columna es la que decide cuánto puedes permitirte experimentar.
| Capa | Qué se emula | Vía documentada | Rollback en el laboratorio |
|---|---|---|---|
| Red DJ Link | Un participante más que recibe y publica mensajes. | Bibliotecas de interoperabilidad. | Sí: se retira el participante. |
| Protocolo HID por USB | Entrada y salida local con cabecera 0x20 y 0x21. | Análisis público observado desde fuera. | Sí: no se modifica nada. |
| Interfaz y pantalla | La forma en que se muestran ondas y datos. | Simulación parcial en el propio software. | Sí: es software de tu entorno. |
| Firmware del reproductor | El sistema que arranca dentro del equipo. | Sin método verificado publicado. | No es una opción de laboratorio. |
| Hardware real | Tacto del jog, latencia y ruta de audio. | No hay vía: se comprueba con el equipo. | No aplica. |
La fila del firmware marca el límite del laboratorio: ahí no hay snapshot posible, y por eso no es una opción de pruebas.
QEMU en el laboratorio: emulador y virtualizador
QEMU se define en su propia documentación como un emulador de máquina y virtualizador genérico y de código abierto, y ofrece tres formas de trabajo: emulación de sistema completo, para arrancar sistemas operativos en cualquier arquitectura soportada; emulación de usuario, para ejecutar programas de otro objetivo; y virtualización con rendimiento próximo al nativo sobre KVM o Xen.
Para un laboratorio de DJ interesa la primera, y dentro de ella tres recursos sostienen el montaje:
- Imágenes de disco. QEMU trabaja con imágenes crecientes, comprimidas y cifradas; los formatos recomendados son
rawyqcow2, y este último admite múltiples snapshots. - Modo snapshot con
-snapshot. Todas las imágenes de disco se tratan como de solo lectura y cada escritura va a un fichero temporal. Nada de lo que ocurra dentro toca la imagen base, y aun así puedes forzar el commit si decides conservar los cambios. - Snapshots de máquina completa. Con
savevmse guarda el estado completo —CPU, memoria, estado de dispositivos y contenido de los discos— y conloadvmse vuelve a ese punto exacto.info snapshotslista lo disponible ydelvmelimina una entrada.
Dos límites que conviene conocer antes de prometer nada: los snapshots no soportan bien los dispositivos extraíbles que cambian después de guardarlos, y algunos controladores, USB entre ellos, tienen soporte incompleto de snapshot. Además, QEMU bloquea las fichas de imagen para evitar accesos concurrentes: si dos procesos intentan abrir la misma imagen en modo conflictivo, solo el primero continúa.
Sobre esa base montas un sistema operativo, y dentro de él tu software y tus herramientas de red. La hipervisor es solo el suelo del laboratorio; el resto lo pones tú.
Laboratorio aislado: red, imágenes y copias
Un laboratorio aislado no es una carpeta llamada pruebas. Son cuatro decisiones tomadas antes de la primera prueba:
- Red aparte. Si el laboratorio comparte red con la cabina, una prueba malograda acaba en el escenario que usas para trabajar. Un segmento propio, o una red sin salida, evita que un participante mal construido ensucie la red real.
- Imágenes base de solo lectura. La plantilla limpia nunca se toca: se copia, se lanza la copia y se descarta. La regla es que cualquier estado del laboratorio sea recreable desde la plantilla, no reparable a mano.
- Participantes virtuales en lugar de hardware. Un dispositivo virtual ocupa el hueco de un reproductor sin meter miles de euros sobre la mesa. La documentación de la biblioteca de referencia describe un Virtual CDJ que obtiene información detallada de los demás reproductores: tempo actual, pitch, estado de reproducción, quién es el tempo master y el origen e identificador de base de datos de la pista cargada.
- Cero dependencia de producción. Nada de bibliotecas reales sin copiar, nada de credenciales de trabajo, nada de equipo de cabina «solo para probar un momento».
Hay un techo documentado en la propia vía buena: con cuatro reproductores en uso, la interfaz con el servidor de base de datos no es fiable, porque el laboratorio no puede ocupar un número de reproductor real. La alternativa que describe esa misma documentación es descargar los ficheros de exportación desde los servidores NFSv2 de los reproductores, que no dependen de ese número. Si tu prueba toca ese flanco, ya sabes dónde está el techo.
Test/rollback: repetir el fallo y volver atrás
El ciclo tiene dos mitades que solo se entienden juntas.
Test significa repetir. El mismo escenario, con el mismo estado inicial, tantas veces como haga falta hasta ver el fallo: una prueba que no es repetible no es una prueba, es una anécdota. Antes de lanzarla se toma un snapshot con etiqueta y fecha; después se ejecuta, se anota qué versión de qué componente estaba corriendo y qué pasó.
Rollback significa volver a un estado conocido. En el laboratorio es baratísimo: loadvm devuelve la máquina al punto guardado y el modo -snapshot ni siquiera deja residuos en la imagen base. El coste real está en lo que no se puede rebobinar: el firmware de un equipo físico. Si algo se instala ahí, no hay snapshot que lo salve.
Por eso el ciclo se escribe antes de empezar:
- Estado limpio etiquetado, con fecha y versión incluidas.
- Prueba con un único cambio respecto al estado anterior.
- Anotación del resultado, sea positivo o negativo.
- Vuelta al estado limpio antes del siguiente cambio.
Si saltas el paso cuatro, dejas de saber qué causó qué, y el banco de pruebas deja de ser un laboratorio para convertirse en una colección de fallos sueltos.
Qué se puede probar y qué no
Se prueba bien: aparición y desaparición de dispositivos en la red, sincronización de tempo, lectura de metadatos y ondas, reacción de tu herramienta ante estados incómodos —un jugador que se cae, un cambio de tempo master, una pista que se recarga— y en general todo lo que se expresa en mensajes observables.
No se prueba nada el tacto del jog, la latencia real ni la ruta de audio. Tampoco se prueba el HID si tu herramienta vive en la red: un participante virtual no habla HID, porque esa conversación es local y viaja por USB. Si tu problema es leer controles o encender LEDs de un equipo concreto, necesitas trabajar contra la especificación observada de esa capa, no contra el laboratorio de red.
Y queda una tercera categoría, la que más decepciona: comprobar que «funciona con el equipo real». Eso no se emula. Se verifica con el aparato delante, en su red, con su firmware exacto y su fecha.
Límites, riesgos y la línea que no se cruza
- El protocolo observado no es un contrato. Lo documentado refleja lo que se vio en un momento dado, y una actualización puede cambiarlo sin avisar.
- Un participante mal construido ensucia el laboratorio. Si tu virtual se comporta mal, el fallo aparece lejos de su causa y pierdes la repetibilidad, que es lo único que hacía valer al banco.
- No se redistribuye firmware propietario. Se analiza, se describe y se cita; no se empaqueta ni se aloja.
- Las normas varían por país y esta guía no da asesoramiento jurídico. La práctica de la comunidad técnica es trabajar sobre equipo propio, con propósito de interoperabilidad y documentando lo observado.
- Si tu plan depende de saltarse una protección, el laboratorio no lo arregla. El montaje sirve para probar dentro de lo soportado; no convierte lo que queda fuera en algo seguro.
Siguiente paso
Ya tienes el banco de pruebas montado en la cabeza: capas separadas, una virtualizador con snapshots, red aislada y un ciclo de test/rollback que no depende del equipo de cabina. El paso siguiente es usarlo contra la red de verdad: qué es Pro DJ Link, cómo se organiza y qué se puede hacer desde fuera del ecosistema oficial. Ese terreno se abre en Qué es Pro DJ Link, y la pieza que pondrás en marcha durante las siguientes pruebas es la que explica Qué es un Virtual CDJ, que es donde continúa esta guía.
Preguntas frecuentes
¿La CDJ emulation ejecuta el firmware del reproductor?
No. Emular la capa de red o la capa HID significa construir un participante que se comporta como el equipo; ejecutar el software que arranca dentro del aparato es otra cosa, sin método verificado publicado y con implicaciones legales distintas.
¿Para qué sirve QEMU en un laboratorio de DJ?
Para tener un sistema completo donde instalar tu software y tus herramientas de red sin tocar la cabina. Su interés real está en las imágenes y los snapshots: puedes volver al estado inicial tras cada prueba con un comando.
¿Qué diferencia hay entre un laboratorio aislado y una red normal de casa?
Que el laboratorio no comparte nada con producción: red aparte, imágenes base de solo lectura y participantes virtuales en lugar de equipo real. Si una prueba puede afectar a tu red de trabajo, no está aislado.
¿Cómo se vuelve atrás tras una prueba fallida?
Con un snapshot guardado antes de empezar, se restaura la máquina completa con loadvm, o se descarta la imagen temporal si se trabajó en modo snapshot. El rollback barato existe dentro del laboratorio; el caro es el firmware de un equipo físico.
¿Se puede medir la latencia o el tacto del jog en el laboratorio?
No. Tacto, latencia y ruta de audio dependen del hardware y se comprueban con el equipo delante. El laboratorio valida mensajes, estados y flujos de datos, no la sensación de la rueda.
¿Es legal emular un CDJ en casa?
Esta guía no da asesoramiento jurídico y las normas varían por país. Lo que sí se describe es la práctica de la comunidad técnica: equipo propio, propósito de interoperabilidad, documentación de lo observado y nada de redistribuir firmware propietario.
Continúa aprendiendo
Si esto te suena a chino, empieza por aquí
Relacionadas
Fuentes
- QEMU — A generic and open source machine emulator and virtualizer
Portada oficial: define QEMU como emulador de máquina y virtualizador genérico y de código abierto y describe sus tres modos de trabajo (emulación de sistema completo, emulación de usuario y virtualización con KVM o Xen). De ahí sale la clasificación que uso para explicar qué hace la herramienta dentro del laboratorio.
- Disk Images — QEMU documentation
Documenta el modo -snapshot (las imágenes se tratan como de solo lectura y las escrituras van a un fichero temporal, con posibilidad de forzar el commit), los snapshots de máquina completa con savevm, loadvm, delvm e info snapshots sobre qcow2, sus limitaciones con dispositivos extraíbles y con controladores USB, y el bloqueo de ficheros de imagen frente a accesos concurrentes. Es la base de la sección de test/rollback.
- beat-link — A Java library for communicating with Pioneer DJ Link equipment
Biblioteca de interoperabilidad que se comunica con equipos DJ Link. Es el ejemplo de participante virtual documentado: el laboratorio se apoya en este tipo de proyecto para simular reproductores sin ejecutar firmware de terceros.
- beat-link API — Overview
Describe las clases para encontrar una red DJ Link, vigilar la aparición y desaparición de dispositivos y crear un Virtual CDJ que obtiene tempo, pitch, estado de reproducción, tempo master e identificador de base de datos de la pista cargada. También documenta el techo de los cuatro reproductores y la alternativa NFSv2, datos que uso en la sección de laboratorio aislado.
- Pioneer CDJ HID Protocol — CDJ Control
Documenta la capa HID local de los CDJ: cabecera 0x20 para la entrada y 0x21 para la salida, con estructura de offsets fijos. Sirve para separar esa capa de la red DJ Link y explicar por qué un participante virtual no habla HID.
Última revisión técnica: 01/10/2026. Si detectas un error, indícalo para corregirlo.