🎹 Duplicador / Splitter MIDI con Arduino Clon chip serial CH340 🛸
Documentación del proceso para rutear una misma señal MIDI (proveniente de un teclado controlador o secuenciador) hacia dos módulos de sonido de hardware distintos de forma simultánea.
Esta configuración permite disparar las mismas notas o patrones, pero editando y aplicando efectos de manera separada en cada módulo de sonido. Es un recurso excelente para optimizar procesos creativos, trabajar en simultáneo y generar situaciones sonoras de mayor densidad y complejidad.
Componentes del Hardware
Arduino Uno (Versión Alternativa): Placa clonada que utiliza el chip de comunicación serial CH340 en lugar del Atmega16U2 original.
MIDI Shield: Placa de expansión con puertos IN, OUT, THRU y optoacoplador.
Teclado controlador MIDI.
2x Módulos de sonido (sintetizadores, samplers o procesadores de efectos).
Fuente de alimentación externa (conector de barril DC) para uso autónomo.
Experiencia con Placas Clonadas y Driver CH340
Una de las grandes ventajas de este montaje es que no requiere un Arduino original. Se probó y documentó el uso de una placa alternativa económica, demostrando ser 100% funcional, estable y con un rendimiento idéntico en términos de latencia. (Ojalá no se queme).
Identificación e Instalación
Al conectar el Arduino alternativo por primera vez, el sistema operativo no lo reconocerá automáticamente si no se cuenta con el puente de comunicación adecuado.
El Chip: Visualmente se identifica por ser un integrado rectangular pequeño cerca del puerto USB, marcado con la serigrafía CH340 (o CH340G).
La Búsqueda del Driver: Es necesario buscar en la web el instalador oficial del fabricante (WCH) como “CH340 Arduino Driver” para el sistema operativo correspondiente (Windows/macOS/Linux).
Instalación: El proceso de instalación es sumamente rápido. Una vez ejecutado el instalador y reiniciado el IDE de Arduino, el puerto COM se habilita inmediatamente y la placa queda lista para recibir el código.
Esta alternativa reduce significativamente los costos del circuito y facilita el acceso a herramientas de optimización de procesos musicales para cualquier usuario, sin sacrificar la inmediatez de la respuesta MIDI.
Diagrama de Ruteo y Conexiones
El sistema funciona combinando una duplicación por hardware y otra por software, logrando una latencia mínima y sincronizada:
MIDI IN: Recibe la señal original desde el teclado controlador.
MIDI THRU (Hardware): Envía una copia eléctrica exacta e instantánea de la señal de entrada hacia el Módulo de Sonido 1.
MIDI OUT (Software): Envía la señal procesada por el microcontrolador (Soft Thru) hacia el Módulo de Sonido 2.
Código (Soft Thru)
Para habilitar el puerto OUT como un espejo del puerto IN, se utiliza la función Soft Thru nativa de la librería MIDI de Arduino.
#include <MIDI.h>
// Crea una instancia de la librería en el puerto Serial estándar
MIDI_CREATE_DEFAULT_INSTANCE();
void setup() {
// Inicia la escucha en todos los canales MIDI.
// La función "Soft Thru" se activa automáticamente por defecto.
MIDI.begin(MIDI_CHANNEL_OMNI);
}
void loop() {
// Lee la entrada. Al hacerlo, la librería reenvía
// automáticamente los mensajes al puerto OUT.
MIDI.read();
}
Notas Técnicas y Flujo de Trabajo
Interruptor RX/TX (ON/OFF): Es el paso más crítico del montaje. Para compilar y subir el código desde el IDE de Arduino, el interruptor del shield debe estar obligatoriamente en OFF (para no generar colisiones de datos con el puerto USB y el chip CH340). Una vez cargado el programa, se debe pasar a ON para habilitar el flujo de datos MIDI por los puertos DIN.
Prevención de Bucles de Masa (Ground Loops): El puerto MIDI IN de este shield cuenta con un optoacoplador integrado. Esto aísla eléctricamente el teclado controlador de los módulos de sonido, evitando que ruidos parásitos de corriente o interferencias eléctricas viajen a través de los cables MIDI y se metan en la cadena de audio.
Diagnóstico Visual (LEDs): Durante una sesión o prueba de sonido, si algo falla, observa la placa base del Arduino. Cada vez que toques una tecla en el controlador, los LEDs RX (recepción) y TX (transmisión) deberían parpadear. Si el RX parpadea pero el TX no, significa que la señal entra pero el código no la está ruteando al OUT.
Gestión de Canales MIDI (OMNI): El código actual está configurado en MIDI_CHANNEL_OMNI, lo que significa que el puerto OUT repetirá los mensajes de los 16 canales MIDI por igual. El puerto THRU, al ser un clon por hardware, también enviará todo.
Potencial de Expansión: Aunque ahora funciona como un simple “espejo”, al estar pasando la señal del puerto OUT por el microcontrolador, el código se puede modificar en el futuro. Por ejemplo, se podría programar el Arduino para que transponga octavas, filtre ciertos mensajes (como el *Clock* o notas específicas), o genere secuencias algorítmicas que se sumen a lo que tocas en vivo. (Nota: Estas modificaciones por software solo afectarán a la salida OUT, la salida THRU siempre será una copia inalterable del IN).