Cómo hackear Rekordbox para usar jogwheels de cualquier controlador
Cuando Pioneer convirtió Rekordbox en un completo software para pinchar, únicamente los controladores de la marca podían usarse con el programa. Poco después en una actualización incluyeron la posibilidad de mapear controladores de terceros, pero impusieron una limitación: no es posible mapear las funciones de un joghweel. Eso queda reservado a los controladores de la marca.
A pesar de ello, y tratando de ayudaros a sacar el máximo provecho a vuestro equipo, hemos averiguado cómo saltarnos esa limitación con un sencillo “hack” y poder mapear al 100% cualquier controladora. Antes de empezar debo advertir que lo que se describe en este artículo es totalmente legal puesto que no se modifica absolutamente ningún archivo de la instalación de Rekordbox, con lo que no se incumple el EULA del software. También debo añadir que el método descrito aquí sólo lo he probado en macOS, tengo que investigar si se puede replicar en Windows. En caso de que consiga averiguarlo, se añadirá al artículo la información necesaria.
En qué consiste
[Índice]El procedimiento consta de tres partes:
- Engañar a Rekordbox haciéndole creer que un controlador de su propia marca está conectado.
- Emplear Bome MIDI Translator para que los mensajes MIDI que envían nuestros jogwheels se conviertan en los mensajes MIDI que Rekordbox espera recibir de los jogwheels de un controlador de su marca.
- Mapear el resto de funciones del controlador con el sistema de mapeo estándar de Rekordbox.
Como ya he explicado, es necesario emplear MIDI Translator Pro, que es una aplicación de pago –cuesta 60€–, esta herramienta permite enrutar mensajes MIDI entre todos los puertos reales o virtuales del ordenador, así como transformar los mensajes en otros diferentes o en otro tipo de comandos como pulsaciones de teclado o clicks de ratón. Existe una versión de prueba del programa que funciona exactamente igual que la versión de pago, con la salvedad de que se cierra cada 20 minutos, aunque se puede volver a abrir tantas veces como se quiera.
El procedimiento implica convertir números hexadecimales en decimales y viceversa, si no sabes hacerlo puedes emplear el conversor de esta web.
Empezamos engañando a Rekordbox
[Índice]Rekordbox detecta si un controlador de su marca está conectado de una manera muy simple: comprueba que un dispositivo MIDI con el nombre del controlador está conectado. Si el controlador es un modelo class compliant ahí acaban las comprobaciones, si el controlador necesita drivers específicos, comprueba que los drivers estén instalados y en caso de que no lo estén te indica que los debes instalar y luego comprueba que el driver está activo. Por lo tanto, lo más fácil es hacer creer que hay conectado un controlador de su marca que sea class compliant.
De entre todos los modelos class compliant que soporta Rekordbox los mejores resultados los he obtenido haciendo creer a Rekordbox que tiene conectado un controlador DDJ-SX, aunque también se puede hacer con el DDJ-Ergo y con el DDJ-WeGo3 por ejemplo.
Para hacer creer que uno de estos controladores está conectado simplemente necesitamos un dispositivo virtual con el mismo nombre que el de verdad; macOS tiene instalado su propio driver virtual llamado IAC al cual se le puede cambiar el nombre, así que ya tienes casi todo el trabajo hecho.
Para saber qué nombres busca Rekordbox para saber si alguno de los dispositivos está conectado, sólo debes mirar los nombres de los mapeos de cada uno. Los mapeos están algo escondidos, dirígete a la aplicación de Rekordbox en la carpeta Aplicaciones/Rekordbox 4, haz click con el botón derecho en el icono de la aplicación y selecciona “Mostrar contenido del paquete”, y después dirígete a Contents/Resources. Todos los archivos con extensión .csv que hay en esa carpeta son los mapeos de los controladores oficiales, y el nombre del archivo te indica el nombre de dispositivo que busca Rekordbox; por ejemplo, si hay un archivo llamado PIONEER DDJ-SX.midi.csv, Rekordbox buscará un dispositivo MIDI llamado PIONEER DDJ-SX –respetando las mayúsculas–. Y ese es precisamente el que vamos a usar en este artículo. Estos archivos se pueden abrir y ver con Excel o Numbers.
Ahora dirígete a Aplicaciones/Utilidades y abre la aplicación Configuración Audio MIDI. Ahora dirígete a Ventana/Mostrar Estudio MIDI, y se abrirá una ventana con todos los dispositvos MIDI reales y virtuales conectados al ordenador. Verás un icono rojo rotulado como IAC, haz doble click para abrir sus propiedades. Activa la opción “Dispositivo conectado” y luego edita “Nombre del dispositivo” para cambiarlo por PIONEER DDJ-SX. Más abajo en “Puertos” borra el nombre “Bus 1” del puerto y déjalo en blanco.
Si lo has hecho bien, al abrir Rekordbox verás que en la parte inferior de la pantalla aparece el mensaje “PIONEER DDJ-SX connected”, y que algunos botones como los de selección de tamaño de loop desaparecen. Si entras al panel de mapeo MID –el botón que pone MIDI en la esquina superior derecha– podrás seleccionar un dispositivo llamado PIONEER DDJ-SX, y al seleccionarlo ver el mapeo de todo todo el dispositivo; bueno, todo no, las funciones de los jogs aquí no se pueden ver.
Ahora transformamos los mensajes de los jogs
[Índice]Bien, ahora es cuando necesitas usar MIDI Translator Pro para convertir los mensajes de tus jogs en los que Rekordbox espera recibir. Primero debes saber qué mensajes son esos y para ello debes mirar el archivo de mapeo correspondiente –antes expliqué donde están–, así que emplea Excel o Numbers para abrir el archivo. Observarás que cada línea define el mensaje que necesita cada control, es bastante fácil saber lo que es cada uno porque se emplean nombre obvios como PlayPause o TempoSlider. Las líneas que nos interesan son JogScratch y JogTouch. En todas las líneas hay una expresión en hexadecimal de de cuatro cifras que empieza por B o por 9, como por ejemplo B010. Los que empiezan por B son mensajes CC, los que empiezan por 9 son mensajes Note On. La siguiente. cifra indica el canal por el que se envía el mensaje, siendo 0 el canal 1, 1 el canal 2, 2 el canal 3 y 3 el canal 4; Pioneer construye sus controladores de forma que los controles de cada deck o canal de mixer, envían los mismos mensajes con la diferencia de que los envían por canales diferentes. Así pues, en los mapeos sólo se indica el mensaje con la cifra del primer canal por el que se envía. Los mensajes de controles globales como los de la librería se envían habitualmente por el canal 6. Las dos últimas partes del mensaje indican el CC o la nota en hexadecimal.
El mensaje JogTouch es el que se envía cuando se toca la parte superior de un jogwheel o se activa la presión mecánica, según modelo; el mensaje MIDI en hexadecimal que se emplea para JotgTouch en el mapeo del DDJ-SX es 9036, es decir, mensaje de de la nota 54 y el canal 1. JogScratch se usa para los mensajes que envía el jog al usar el modo Vinyl y es movido tocando o presionando la parte superior; el mensame MIDI en hexadecimal que se emplea para JogTouch en el mapeo del DDJ-SX es B022, es decir, un mensaje por el CC 34 y el canal 1. JogScratch es un mensaje CC con lo que puede recibir valores que van de 0 a 127, aunque de todos modos los jogs del controlador Pioneer DDJ-SX –esto lo averigüé a base de prueba-error– responde sólo ante valores entre 70 y 83 cuando se gira en el sentido de las agujas del reloj –hacia delante– y entre 58 y 45 cuando se gira en sentido contrario. El valor que se envía depende de la velocidad a la que se gire el jog. Es bastante probable que los jogs de tu controlador envíen mensajes empleando otros rangos, así que habrá que convertir los mensajes de tus jogs en otros distintos con MIDI Translator Pro.
Convirtiendo mensajes
[Índice]Conecta el controlador DJ que vayas a usar y arranca MIDI Translator Pro –en adelante MTP–. En los puertos MIDI que usarás en el proyecto –icono con forma de puerto MIDI en la parte superior derecha– selecciona en MIDI Input el puerto de tu controlador y en MIDI Output el dispositivo virtual que hemos llamado PIONEER DDJ-SX.
Comenzaremos observando en qué rangos envía mensajes nuestro controlador, para ello tenemos en MTP un monitor de actividad, se abre en la parte inferior de la interfaz pulsando el botón que está justo a la derecha del botón con forma de puerto MIDI. En el monitor de actividad deja marcado sólo las opciones “Incoming” y “Outcoming” y ahora mueve adelante y atrás con bastante fuerza tu jog y observa los valores máximos y mínimos de los mensajes en el movimiento hacia delante y detrás, porque definen el rango. En el controlador Vestax VCI-100 que usé para hacer todo esto, los valores al mover adelante son entre 65 y 78, y al mover hacia atrás entre 63 y 50. Estos valores los envía por el CC16 para el jog izquierdo y por el CC17 por el jog derecho, en ambos casos por el canal 1. Esto nos hace ver que los valores de nuestro jogwheel son 5 puntos más bajos al moverlo adelante y 5 puntos más bajos al moverlo hacia atrás que los que envía los de un DDJ-SX.
Tienes ahora dos opciones, introducir para cada jogwheel 26 líneas de comandos en MTP –13 para el movimiento adelante y 13 hacia atrás– y que cada una convierta cada valor del mismo mensaje, o introducir una sola línea con un script muy sencillo que traduzca los valores. Trataré de explicar los pasos con MTP usando como ejemplo lo que hemos obtenido de la VCI-100:
- Click en Add Translator. En Incoming elige las siguientes opciones: MIDI Message, Control Change, CC 16, Channel 1 y en value escribe pp. Lo que hemos escrito en value es una variable.
- En Rules vamos a añadir el script que convierte los valores, es muy simple:
if pp>64 then qq=pp+5
if pp<64 then qq=pp-5
- El script anterior simplemente coge el valor de la variable pp –que es el valor transmitido por el CC 16 y le añade 5 puntos en caso de que sea mayor de 64 o le resta 5 en caso de que sea menor, el valor queda en la variable qq.
- En Outcoming elige las siguientes opciones: MIDI Message, Control Change, CC34 y en value escribe qq.
- Repite el proceso anterior para añadir otro “translator” para el jog derecho empleando los valores correspondientes. Recuerda que nuestro controlador envía por otro CC y que el DDJ-SX aunque recibe por el mismo CC lo hace en otro canal.
Nos falta añadir el JogTouch, para que Rekordbox detecte si estamos tocando la parte superior del jog. Observa en la ventana de actividad los mensajes MIDI que envía tu controlador cuando tocas el jog por arriba, en el caso de la VCI-100 es un mensaje Note On y Note Off de la nota 46 y de la nota 48. ¿Por qué dos notas? Muy sencillo, ambos mensajes de Note On se envían al tocar el jog, pero los mensajes de Note Off se envían de forma distinta; el primero cuando se deja de tocar el jog y el segundo cuando se deja de tocar el jog y además el jog está totalmente quieto. Esto sirve para poder hacer backspins y que el software mueva la canción hasta que el movimiento por inercia del jog cesa; esto no sucede en todos los jogs, los hay que emplean la misma nota y sólo envían el Note Off cuando está parado el jog y no se toca.
En nuestro caso usaremos el mensaje de Note On del 46 y el Note Off del 48, así que añadimos dos translators a MTP:
- En el primero elige en Incoming MIDI Message, Channel 1, Note 46, value 127. En Outgoing elige MIDI Message, Channel 1, Note 54 y value 127.
- En el segundo elige en outgoing MIDI Message, Channel 1, Note 48, value 0. En Outgoing elige MIDI Message, Channel 1, Note 54 y value 1.
- Ya tienes todo el trabajo con MTP realizado.
Te quedará algo parecido a esto:
Ahora mapeamos el resto de funciones
[Índice]Lo que te queda por hacer es mapear el resto de funciones. Para ello en Rekordbox, que ahora cree que tienes conectada una DDJ-SX, abre el panel de mapeo MIDI y elige el dispositivo DDJ-SX. Bien, esto te sonará raro, pero lo que tienes que hacer es borrar absolutamente todas las entradas de mapeo que aparecen ahí en todas las pestañas. Tranquilo, lo que has preparado con MTP no se borrará porque te recuerdo que ahí no aparecen los comandos de los jogs.
El borrado de todo esto se debe a que si mantienes funciones del mapeo original, Rekordbox enviaría mensajes de iluminación y otros comandos que pueden interferir en el normal control del software ya que el controlador oficial realmente no está conectado y no obtiene respuesta de esos comandos por parte del controlador.
Para borrar todo el mapeo simplemente seleccionada cada entrada, haz click en Delete y después confirma la operación. Ahora selecciona tu dispositivo en la herramienta de mapeo y asigna los controles que desees de tu controladora a Rekordbox. Es importante que independientemente de los controles que selecciones, debes realizar un mapeo adicional a los jogwheels, y es la función de pitchbend tocando la parte externa del jogwheel. Habitualmente los jogs envían mensajes diferentes si al girarlos se toca o no la parte superior del controlador, aunque por suerte no necesitamos esta vez recurrir a MTP para ello, ya que Rekordbox permite asignar botones MIDI a la función de pitchbend y los jogwheels cuando se mueven tocando el aro externo envían mensajes de Note On –mensajes de botón MIDI– diferentes al moverlo adelante o atrás. Así que en la pestaña deck –con tu controlador seleccionado, no con el DDJ-SX “virtual”– añade entradas para Pitchbend Up y Pitchbend Down y asigna cada entrada al movimiento adelante y atrás de tu jogwheel respectivamente.
Para terminar, puedes asignar el resto de funciones de tu controladora normalmente, como funciones de EQ, volumen, ganancia, controles de transporte, etc. Si lo haces todo bien, podrás hacer algo como esto:
Disculpad la calidad del vídeo, se ha grabado de forma muy rudimentaria pero permite observar el resultado. Es probable que tengáis muchas dudas al respecto ya que el proceso es algo complejo y no todos los controladores responden igual, no dudéis en expresarlas en los comentarios y trataré de resolverlas.
Agradecimientos: a Robin Domingo (Rowf the Beatbender en Hispasonic) y a Nacho Castaño por su apoyo en la realización de este artículo y por brindarme una información que me puso sobre la pista de cómo funcionan los jogs de los controladores Pioneer. A Kaiser por haberme proporcionado por muy poco dinero una VCI-100 con la que puede completar el artículo y que resultó francamente útil.