Saltar al contenido principal
MIDI Mapping, mods y homebrew

Cómo controlar LEDs y colores desde un mapping

Los LEDs son asignaciones de salida, no de entrada. Cómo se iluminan, cómo se les da color, cómo mantenerlos sincronizados con el software y por qué fallan.

  • Avanzado
  • DJ · Técnico
  • 6 min de lectura
  • Revisado el 29/09/2026

Los LEDs son la parte del mapping que más se descuida y la que más cambia la experiencia. Un mapping con feedback de estado se maneja a oscuras; uno sin él te obliga a mirar la pantalla cada vez que dudas. La diferencia entre ambos no es hardware: es haber hecho las asignaciones de salida.

Y ahí está el primer malentendido que hay que deshacer: que un botón se ilumine no forma parte de la asignación del botón. Son dos mappings distintos.

Entrada y salida son dos mappings distintos

Un mapping tiene dos direcciones, y conviene pensarlas por separado:

  • Entrada: lo que el equipo le dice al software. «Se ha pulsado este botón.» Decide qué hace la función.
  • Salida: lo que el software le dice al equipo. «Enciende esta luz.» Decide qué se ve.

Por eso el síntoma es tan común y tan desconcertante: el botón funciona, pero no se ilumina. No es un fallo: es que la mitad del trabajo está hecha. La entrada está asignada y la salida no existe.

Existe incluso una consecuencia que ahorra tiempo en la diagnosis: como la salida es una asignación aparte, el LED puede estar iluminando mal sin que la función falle, y al revés.

Entrada y salida: dos mappings distintos
Aspecto Asignación de entrada Asignación de salida
Qué decide Qué hace el software al pulsar o mover el control.Qué mensaje manda el software al equipo.
A qué afecta A la función: play, cue, loop, efecto.Al elemento visual: LED, color, parpadeo.
Cómo se asigna Se aprende moviendo el control físico.Casi siempre hay que escribir el código a mano.
Si falta El control no hace nada.Todo funciona pero a oscuras.
Para sincronizarlo bien Basta con que llegue el mensaje.Hay que reaccionar al estado real del software, no al botón.

Si un botón responde pero no se ilumina, el diagnóstico casi siempre está en la segunda columna.

Cómo se ilumina realmente un LED

Hay una convención que vale para casi todo el hardware y que explican las tres fuentes de esta guía:

Los botones suelen controlar su LED enviando un mensaje corto con los mismos dos primeros bytes que cuando el controlador envía la señal de que el botón se ha pulsado.

Dicho de forma práctica: si tu botón envía 0x91, 0x11, 0x7F al pulsarse, entonces:

  • Enviar 0x91, 0x11, 0x7F enciende el LED.
  • Enviar 0x91, 0x11, 0x00 lo apaga.

Es decir, el LED y el botón comparten «dirección». Lo único que cambia es quién manda el mensaje y con qué tercer byte.

El color: normalmente el tercer byte

Si el LED tiene varios colores, el color suele determinarlo el tercer byte. El mismo mensaje con un valor distinto da otro color.

Esa es la clave para no volverse loco: guarda los códigos de color en una tabla con nombre en lugar de repartir números por todo el código. En la práctica es la diferencia entre un mapping que puedes retocar en dos minutos y uno que no te atreves a tocar.

Dónde se activan los LEDs, según el software

Depende del programa, y cada uno lo llama distinto:

  • rekordbox: la columna MIDI OUT es el código que se envía al equipo. Y hay un detalle cómodo: si la función incluye indicador, el mismo código del MIDI IN se envía automáticamente al MIDI OUT, así que en muchos casos el LED funciona sin que hagas nada. Existe además un tipo de control llamado Indicator, específico para mandar información de iluminación, con una particularidad importante: con ese tipo no puedes asignar la función operando el control, hay que escribir el código en MIDI OUT a mano.
  • Traktor: hay una columna I/O que distingue entradas y salidas. Las salidas sirven para que el controlador visualice el estado del software y se ven como LEDs encendidos o parpadeando. Aquí hay una regla que conviene conocer: la asignación manual es la única forma de asignar un control de salida. No hay un «Learn» que te lo resuelva.
  • Mixxx: se envía MIDI de vuelta al controlador desde el script, con una función para mensajes cortos y otra para SysEx.

El patrón se repite en todos: la salida es más manual que la entrada. Aprender moviendo el control solo funciona para la entrada.

El error que desincroniza todos los LEDs

Este es el consejo de diseño más valioso de toda la guía, y viene de la documentación de Mixxx:

No envíes los mensajes de LED directamente desde las funciones que manejan la entrada. Cambia el estado de un control del software y envía el MIDI desde un callback que reaccione a ese cambio.

La razón es contundente: si el LED refleja el estado real del software, el controlador se mantiene correcto aunque el usuario use el teclado, el ratón u otro controlador. Si en cambio lo enciendes porque «se ha pulsado el botón», el LED miente en cuanto el estado cambia por otra vía.

Piensa en un caso real: tienes un botón de loop y su LED. Si activas el loop con el ratón, un LED que solo reacciona al botón seguirá apagado, y tú creerás que el loop no está activo. Eso, en directo, es un error grave.

La regla práctica: el LED debe leer el estado, no recordar la última pulsación.

Cuando el fabricante no documenta los códigos

Aquí es donde mucha gente se atasca. No todos los fabricantes publican la lista de mensajes de salida de su equipo.

Lo que la documentación recomienda en ese caso es interceptar los mensajes:

  • El modo de depuración de controladores, que registra todos los mensajes MIDI entrantes y salientes.
  • Un monitor MIDI como MIDI-OX en Windows o MIDI Monitor en macOS.

Y el método a seguir es sencillo aunque laborioso: mover el control en el software oficial del fabricante, ver qué mensaje sale, y reproducirlo desde tu mapping.

Ese trabajo de documentación es exactamente lo que después permite crear soporte para un controlador que no lo tenía, y es la puerta de entrada al terreno del reverse engineering que trata este bloque más adelante.

Apagar los LEDs al cerrar

Un detalle pequeño que delata un mapping cuidado: si no apagas los LEDs al cerrar el programa, pueden quedarse encendidos en el equipo.

La solución es la misma que la del encendido, pero en el otro extremo: enviar el estado apagado en la función de cierre del controlador. Es un caso clásico y muy visible, porque el usuario lo ve cada vez que termina de pinchar.

En los programas con scripting, esa función de cierre existe y es donde corresponde hacerlo. En los que tienen columna de salida, basta con asegurarse de que el estado inicial del programa coincide con el del equipo.

Errores frecuentes

  • Dar por hecho que el LED viene incluido con la función. No viene incluido: es una asignación de salida.
  • Buscar un «Learn» para la salida. En Traktor la asignación de salida es manual por diseño.
  • Enviar el LED desde la función del botón, con lo que se desincroniza al usar el ratón o el teclado.
  • Repartir números de color por el código en lugar de guardarlos en una tabla con nombre.
  • No apagar los LEDs al cerrar y dejarlos encendidos.
  • Suponer que el fabricante documenta los códigos de salida. Muchas veces no, y hay que interceptarlos.
  • Confundir que un LED no funcione con que el mapping esté mal. Suele faltar solo la mitad de salida.

Siguiente paso

Ya tienes el feedback visual resuelto, que es lo que hace que un mapping se sienta profesional. Queda el elemento del equipo que más problemas da y con más diferencia entre protocolos: los jog wheels. Y ahí ya no se trata de mapear bien o mal, sino de qué protocolo usa tu controladora, que es justo lo siguiente.

Preguntas frecuentes

¿Por qué mi botón funciona pero su LED no se enciende?

Porque son dos asignaciones distintas. La de entrada decide qué hace el botón al pulsarlo; la de salida decide qué mensaje manda el software al equipo para iluminarlo. Puedes tener la primera bien y la segunda sin hacer.

¿Cómo se ilumina un LED cuando el fabricante no documenta el código?

Por convención, un botón suele iluminarse enviando un mensaje corto con los dos primeros bytes iguales que cuando el botón se pulsa. Si el fabricante no documenta los códigos, hay que interceptarlos con un monitor MIDI o con el modo de depuración de controladores.

¿De qué depende el color de un LED RGB?

Normalmente del tercer byte del mensaje: el mismo mensaje con un valor distinto da otro color. Por eso conviene guardar los códigos de color en una tabla con nombre en lugar de repartir números por el código.

¿Es mejor enviar los LEDs desde la función del botón o desde otro sitio?

Desde un callback que reaccione al estado real del software. Si los envías desde la función de entrada, el LED se desincroniza en cuanto cambias el estado con el teclado, el ratón u otro controlador.

¿Qué es el tipo Indicator en rekordbox?

Es el tipo de control que envía información de iluminación al equipo. Con ese tipo no se pueden asignar funciones operando el control: hay que escribir el código MIDI en la columna MIDI OUT.

¿Por qué los LEDs se quedan encendidos al cerrar el programa?

Porque nadie les dijo que se apagaran. Es un caso clásico que se resuelve enviando el estado apagado en la función de cierre del controlador.

Continúa aprendiendo

Siguiente lecciónJog wheels en MIDI y HID: por qué unos funcionan mejor que otros

El jog es el control que peor se lleva con MIDI, y hay una razón medible. Los dos gestos que debe resolver, cómo se implementan y por qué el protocolo decide la sensación.

Fuentes

  1. Mixxx Wiki — MIDI Scripting (Controller Scripting) Comunidad (señal complementaria) Mixxx (proyecto de código abierto) · consultado el 29/09/2026

    Fuente principal del apartado técnico. Documenta las funciones para enviar MIDI de vuelta al controlador (mensaje corto y SysEx), que la convención general es que un botón controle su LED enviando un mensaje corto con los mismos dos primeros bytes que cuando se pulsa, y que si el LED tiene varios colores el color suele determinarlo el tercer byte. Añade una recomendación de diseño clave: no enviar los mensajes de LED directamente desde las funciones de entrada, sino desde callbacks registrados sobre los controles del software, para que el estado del controlador coincida con el del software aunque el usuario use el teclado, el ratón u otro controlador. Describe también la inicialización de LEDs en la función init y su apagado en shutdown, y cómo interceptar mensajes del fabricante con MIDI-OX o MIDI Monitor cuando no están documentados.

  2. MIDI LEARN Operation Guide (rekordbox 7.0.5) Documentación oficial AlphaTheta / rekordbox · consultado el 29/09/2026

    Documenta la columna MIDI OUT como el código que se envía al equipo, y aclara que si la función incluye indicador, el mismo código del MIDI IN se envía automáticamente al MIDI OUT. Describe además el tipo de control Indicator como el que manda información de iluminación al equipo, con la particularidad de que en ese tipo no se pueden asignar funciones operando el control: hay que introducir el código en MIDI OUT.

  3. How to Use the Controller Manager in Traktor Documentación oficial Native Instruments · consultado el 29/09/2026

    Explica el modelo de salida desde el lado del software DJ: hay una columna I/O que distingue asignaciones de entrada y de salida, las de salida sirven para que el controlador visualice el estado del software, y se visualizan normalmente como LEDs encendidos o parpadeando. Indica que la asignación manual del desplegable es la única forma de asignar un control de salida, y que la columna Mapped to muestra el origen como Channel.CC o Channel.Note.

Última revisión técnica: 29/09/2026. Si detectas un error, indícalo para corregirlo.