Hackear el mapeo MIDI de Serato DJ: Jogwheels, Touchstrips y modificadores

Desde los primeros años de Scratch Live hasta el actual Serato DJ Pro, Serato ha sido relativamente reservado sobre la implementación MIDI de su software. 

Aunque el software permite el uso de cualquier dispositivo MIDI, muchas funciones solo están disponibles en controladores certificados. 

No puede asignar sus propios jogwheels, las funciones como la búsqueda de agujas o la segmentación están restringidas y no hay capas de control de desplazamiento ni modificadores para crear asignaciones avanzadas. 

En el tutorial de hoy, el colaborador de DJTT, Teo Tormo, comparte secretos para escribir asignaciones MIDI personalizadas para Serato DJ, incluidos jogwheels, modificadores y más.

Si escribe manualmente una asignación MIDI para Serato DJ, desbloqueará muchas más funciones para cualquier controlador MIDI. 

El problema es que no existe un manual para esto (los empleados de Serato probablemente tengan uno de alto secreto), por lo que no conoce los comandos o la sintaxis completa y las variables.

Para obtener más información, comencé mi propia investigación en foros y sitios web. 

He descargado muchos mapeos que otros han hecho ( Radikarl podría ser el usuario que más ha contribuido a la comunidad de usuarios de Serato), y encontré un código para mapear los jogwheels y para usar modificadores. 

En el artículo de hoy, comparto los secretos de mapeo MIDI de Serato DJ que encontré, y en el video, hago una demostración usando ese código con un Pioneer DJ XDJ-700  (uno de los pocos reproductores de Pioneer que no está certificado por Serato ).

Advertencia del editor: Hacer tus propios mapeos personalizados o usar equipo no certificado es realmente divertido, pero si rompes algo, es tu culpa. 

Recomendamos  no usar estos trucos de mapeo en situaciones de palabras reales en las que su reputación está en juego, ¡esto es principalmente para experimentar en casa de forma divertida!

Antes de las explicaciones del texto, mire el tutorial de video paso a paso a continuación para mapear jogwheels, una función de búsqueda de aguja/tira táctil y crear un modificador para asignar más de una función a un control. 

El código XML necesario se encuentra al final del artículo , así que después de ver el video puedes descargarlo y usarlo para tus propios mapeos.

Nota del autor: ¡ Disculpen mi terrible pronunciación en inglés! Este es el primer video que grabo en inglés.

https://youtube.com/watch?v=YXBRYxb54m0%3Fversion%3D3%26rel%3D1%26showsearch%3D0%26showinfo%3D1%26iv_load_policy%3D1%26fs%3D1%26hl%3Den-US%26autohide%3D2%26wmode%3Dtransparent

Preguntas frecuentes sobre el tutorial de piratería MIDI de Serato DJ

  • ¿Por qué cambia el XDJ-700 al canal 1 para el modo MIDI al comienzo del video? Porque el código XML para copiar/pegar está hecho para funcionar con un controlador usando el canal 1. Puedes ver en el código que siempre eschannel="1"
  • ¿Puedo usar otro canal MIDI? Sí, pero verifique la concordancia entre el canal configurado en el código y el canal configurado en el reproductor.
  • ¿Puedo usar esto para más de un jugador o controlador? Sí, pero cada dispositivo debe configurarse para usar un canal MIDI diferente, y debe copiar/pegar el código para cada reproductor con el canal MIDI correcto. Serato no discrimina el controlador MIDI que envía los mensajes, por lo que debe usar diferentes canales para cada controlador MIDI que use.\
  • ¿Qué parte del video muestra el momento en que recibes la nota MIDI en el mensaje para el modificador? Ninguno. Olvidé registrar eso. Para el botón modificador/shift utilizo el botón de modo de vinilo del reproductor XDJ. La pantalla no se puede usar para eso porque no tiene capacidad multitáctil y el botón de acceso directo se asignó a un botón de pantalla.
  • ¿Se puede hacer esto en Windows? Seguro. Komodo Edit, Midi Monitor y Midi Translator están disponibles en Windows. Puede reemplazar Hex Fiend con HxD Editor. Los archivos XML son los mismos y están dentro de la carpeta de la biblioteca de Serato.
  • Serato está cambiando mi mapeo después de agregar algunas cosas más dentro del software, ¿qué está pasando? Como explico en el video, primero hay que hacer el mapeo regular –las funciones que Serato permite mapear–, y luego copiar/pegar todo el código adicional, o escribir uno propio. Esto se debe a que cada vez que presiona "Guardar" en las opciones de mapeo MIDI dentro de Serato, el software verifica todo el código y cambia cosas, especialmente las relacionadas con jogwheels . Parece que desde la versión 1.7.2, Serato usa una sintaxis diferente para algunas cosas, pero tiene una compatibilidad heredada con la sintaxis anterior. El código proporcionado aquí para los jogwheels está hecho con la sintaxis anterior.
    Un truco para no tener problemas con los cambios no deseados es cambiar el archivo XML con la asignación a solo lectura. Serato no tendrá problemas para cargar un mapeo de solo lectura.
  • ¿Puedo probar con más funciones? Descubrí que touch_strip_scrubtambién se puede usar con controles de tira táctil. Funciona de forma similar al Novation Twitch o al Kontrol D2. También encontré algunos comandos para la función de corte como   slicer_ enablerslicer_domain_valuesslicer_domain_sizeslicer_triggerpero hasta ahora no tuve suerte para que funcionara. Lo mismo con filter_roll_touchy  filter_roll_knob.
  • ¿Por qué no hablas de iluminación? El XDJ-700 no tiene puerto de entrada MIDI, una limitación intencional establecida para obligar a los desarrolladores a solicitar a Pioneer acceso al control HID, por lo que no puede controlar las luces de los botones .
  • ¿Hay alguna forma de controlar lo que muestra la pantalla del XDJ-700? ¿Cómo puedo tener una mejor resolución en el pitch fader? De ninguna manera, la pantalla solo reacciona a los comandos HID. Para tener acceso a HID, Pioneer debe darle una secuencia de comandos que le otorga el acceso. El pitch fader no puede enviar mensajes MIDI de alta resolución , así que lo que tienes es lo que tienes.
Índice

Reglas básicas de las asignaciones MIDI de Serato DJ:

Si observa detenidamente un archivo de mapeo de Serato DJ, incluso sin saber nada sobre XML, encontrará:

  1. Cada mapeo comienza  <midi app="[version number]">y termina con  </midi>, también puede comenzar un mapeo con solo  <midi>. Recuerda la regla de oro de que cuando usas un lenguaje de marcado siempre tienes que cerrar todas las etiquetas. Un editor XML como Komodo te ayudará mucho porque verifica si el código está escrito correctamente –solo verifica las reglas XML, no las reglas específicas del mapeo MIDI de Serato–
  2. Toda definición de un control mapeado comienza con  <control seguido del número de canal, tipo de control –cambio de control o nota sobre– y el número decimal del control. Después de eso, tenemos el <userio generalmente seguido de la dirección del mensaje, " clic " para un mensaje de entrada MIDI y " salida " para un control de salida MIDI para controlar la luz de un botón o indicador.
  3. En la siguiente línea normalmente tenemos el marcado con el nombre de la función mapeada, aparecen las variables “deck set”, “deck ID” y “slot ID”. No estoy seguro del primero, porque siempre encuentro que el valor es "predeterminado", tal vez sea el valor para una configuración de dos decks –solo tengo hardware para dos decks en Serato–. "Deck ID" se refiere al número de la plataforma, comenzando con 0 para la plataforma 1. "Slot ID" generalmente muestra un valor diferente a 0 cuando está mapeando una función con varios valores predefinidos, como el tamaño del bucle automático.
  4. En la   línea <translation la variable más importante es “behaviour”, el valor “explícito” es para una acción directa de un botón o control móvil, el otro valor usual es “toggle” usado para botones que cambian el estado de la función después cada pulsación –activa o desactiva un efecto, activa o desactiva el modo slip–.
  5. Si quieres usar modificadores, primero tienes que crear uno –mira el código– o tantos como necesites, y después puedes asignar varias funciones más de una a un control. Para cada función, debe usar una  <case>etiqueta y la  <condition>etiqueta para cada valor de modificador que desee usar. Puedes crear tantos casos como quieras, por ejemplo, esto se usa para pads con cinco o seis funciones diferentes que se seleccionan usando un conjunto de botones en la parte superior de los pads, el típico conjunto de 8 pads por deck que tiene cada controlador. ahora-.

El código

Aquí está la parte más interesante del artículo: el código XML. Solo tienes que copiarlo y pegarlo en tu mapeo, recordando reemplazar los números CC y Note On por los correctos para tu controlador. 

Además, recuerde respetar las marcas MIDI al principio y al final del archivo de mapeo XML. Otra cosa que tendrá que cambiar para su controlador es la variable de "rango" en el código de jogwheel. 

En el video y en el código a continuación, el rango mínimo y máximo es 1536, pero ¿por qué?  No puedo dar una respuesta precisa para eso.

En algunos mapeos que he encontrado durante mi investigación sobre este tema, generalmente el rango es la cantidad de mensajes que envía la rueda en un giro, y encontré mapeos con valores de 1500, 450, 1800…

pero con el XDJ-700 descubrí que el jogwheel solo envía un máximo de 128 mensajes en un turno. Probé con un valor de 128 en el mapeo, pero el resultado fue terrible, así que probé múltiplos de ese valor. Finalmente el valor que mejor funcionó fue 1536, que es 128 por 12.

Jogwheel

<control channel="1" control_type="CC" event_type="Control Change" control="16" data_type="Relative Binary Offset">
<userio event="click">
<platter_move deck_id="1">
<translation>
<range in_min="-1546" in_max="1546" out_min="-1" out_max="1" />
</translation>
</platter_move>
</userio>
</control>
<control channel="1" control_type="CC" event_type="Control Change" control="48" data_type="Relative Binary Offset">
<userio event="click">
<platter_move deck_id="1">
<translation>
<range in_min="-1546" in_max="1546" out_min="-1" out_max="1" />
</translation>
</platter_move>
</userio>
</control>
<control channel="1" event_type="Note On" control="32">
<userio event="click">
<platter_touch deck_set="Default" deck_id="0" slot_id="0">
<translation action_on="any" behaviour="explicit"/>
</platter_touch>
</userio>
</control>

Tira táctil/búsqueda de aguja

<control channel="1" control_type="CC" event_type="Control Change" control="28">
<userio event="click">
<touch_seek deck_set="Default" deck_id="0" slot_id="0">
<translation action_on="any" behaviour="explicit"/>
</touch_seek>
</userio>
</control>

Recuerda que puedes cambiar este código y usar touch_strip_scruben lugar de touch_seek.

modificador

<control channel="1" event_type="Note On" control="18">
<userio event="click">
<modifier_1>
<translation action_on="any" behaviour="explicit"/>
</modifier_1>
</userio>
</control>

Establecer/eliminar el primer hotcue

<control channel="1" event_type="Note On" control="24">
<case>
<condition>
<modifier_1 deck_set="Default" deck_id="0" slot_id="0" operator="equal" cmp_value="off"/>
</condition>
<userio event="click">
<cue_point deck_set="Default" deck_id="0" slot_id="0">
<translation action_on="any" behaviour="explicit"/>
</cue_point>
</userio>
</case>
<case>
<condition>
<modifier_1 deck_set="Default" deck_id="0" slot_id="0" operator="equal" cmp_value="on"/>
</condition>
<userio event="click">
<cue_point_delete deck_set="Default" deck_id="0" slot_id="0">
<translation action_on="any" behaviour="explicit"/>
</cue_point_delete>
</userio>
</case>
</control>

¿Quieres ser un hacker de mapas MIDI?

Serato nunca ha publicado información detallada sobre cómo funciona su mapeo XML, pero puede encontrar dentro del software una lista de comandos y variables que de alguna manera deben funcionar. 

Esto significa que los mapeadores MIDI hambrientos son libres de usar el método de prueba/error y compartir sus resultados con el mundo.

Navegando al ejecutable real de Serato DJ Pro

¿Dónde está esa lista? Haga clic con el botón derecho en el icono de la aplicación Serato, elija "Mostrar contenido del paquete", abra la carpeta Contenido/MacOS , abra el ejecutable real de Serato DJ Pro con un editor hexadecimal (mi favorito es Hex Fiend). 

Luego intente buscar (Comando + F) palabras como "buscar", "plato", "tocar" o "habilitar", y encontrará muchos comandos para probar. 

¡Tal vez usted sea la próxima persona en mostrarle al mundo algo nuevo sobre el mapeo MIDI de Serato!

¡POR FIN TURNTABLISM EN ESPAÑOL!

UNETE AL CLUB

DISFRUTA DE TODAS LAS NOTICAS SOBRE TURNTABLISMO EN ESPAÑOL
ADEMÁS, DISFRUTA DE HERRAMIENTAS Y MUCHOS RECURSOS PARA DJS

¡No hacemos spam! Lee nuestra política de privacidad para obtener más información.

Si quieres conocer otros artículos parecidos a Hackear el mapeo MIDI de Serato DJ: Jogwheels, Touchstrips y modificadores puedes visitar la categoría Tutoriales.