Una vez compré un sintetizador Yamaha PSR-550 para mis hijos. La herramienta no fue el primer joven, sino útil. Los niños mostraron entusiasmo y rápidamente se acostumbraron al sintetizador: descubrieron los controles, aprendieron a "escribir latas", etc. La presencia de conectores "MIDI IN" y "MIDI OUT" en la parte posterior del sintetizador no me molestó.
Declaración del problema.
En el siglo pasado, la forma más fácil de conectar una computadora y un sintetizador a través de MIDI era usar un
puerto de juego . Para hacer coincidir las señales de las interfaces (el "bucle actual" en MIDI y TTL en el conector del puerto del juego), se hizo un adaptador simple, cuyo circuito se da en el
artículo MIDI Wikipedia :

Actualmente, los puertos de juego de sonido y placas base han desaparecido como clase. No se pueden encontrar controladores de puerto de juego para sistemas operativos modernos.
La "física" de la interfaz era comprensible en principio de un
artículo de Wikipedia : los datos se intercambian utilizando el protocolo de inicio-parada a una velocidad de 31250 bps con transmisiones de datos de 8 bits sin paridad con un bit de parada. El cero lógico en los circuitos de señal corresponde a un flujo de corriente de 5 mA, a una unidad lógica no hay corriente en el circuito.
En principio, el puerto del juego se puede reemplazar con USB UART y conectarle el adaptador descrito en el artículo de Wikipedia.
El primer problema con esta solución es obligar al sistema operativo a definir el puerto COM UART como un puerto MIDI. Inesperadamente para mí, se encontró una solución al problema en los foros de Arduino. Allí encontré un enlace a un emulador de puerto MIDI gratuito "encima" de un puerto COM virtual. Para conectar el puerto emulado con un editor MIDI, el desarrollador recomendó usar un cable virtual loopMIDI.
El segundo problema: hacer que UART se ejecute a 31,250 bps.
Todos estos datos ya fueron suficientes para formular una
propuesta técnica :
"Para conectar una computadora con un sintetizador a través de MIDI, se propone utilizar USB UART junto con un adaptador para hacer coincidir las señales TTL con las señales de" corriente de 0 ... 5 mA ", el software loopMIDI, el puente serial MIDI sin pelo <-> y los controladores UART que le permiten trabajar en velocidades de 31,250 bps ".Hardware
La elección de una solución de hardware fue extremadamente simple: en los contenedores del autor del artículo se encontraron:
- USB UART basado en CP2102;
- Optoacoplador AOT101A;
- microcircuito K1533LN2;
- un par de conectores SSH-5 (otras designaciones: ONC-VG-4-5 / 16-V, DIN 41524);
- Varios metros de cable acústico apantallado SHGES.
Como resultado, dicho circuito adaptador se ensambló al recortar una placa de prueba universal de tamaño 40x15:

El rendimiento del circuito ensamblado se verificó de la siguiente manera:
- El adaptador estaba conectado a los conectores MIDI del sintetizador.
- El sintetizador ha deshabilitado el control local (MIDI Local = Off).
- Después de instalar un puente entre las señales RX y TX del adaptador, el sintetizador comenzó a responder a las pulsaciones de teclas.
Espero que el funcionamiento del circuito sea claro sin explicación. Solo noto que:
- los elementos del chip K1533LN2 tienen una salida de tipo "colector abierto" que no funciona sin carga externa;
- el condensador C1 está conectado lo más cerca posible de los terminales de alimentación DD1;
- la trenza del cable que va al conector "MIDI IN" del sintetizador está conectada solo al cable común del adaptador;
- la trenza del cable que va al conector MIDI OUT del sintetizador está conectada solo al terminal 2 del conector.
Software
A continuación, se instaló el siguiente software en la computadora:
- Controlador VCP para CP2102 .
- Paquete de utilidades para configurar CP2102 .
- Emulador de puerto MIDI MIDI sin pelo <-> Serial Bridge de Angus Gratton.
- MIDI virtual loop loopMIDI por Tobias Erichsen.
- Editor MIDI Anvil Studio.
Luego se crearon dos cables en loopMIDI: "Sintetizador" y "Teclado":

Para conectar el editor MIDI a la toma de sintetizador MIDI IN, el cable del sintetizador se conectó entre la salida de Anvil Studio y la entrada del emulador de puerto MIDI.
Para conectar el editor MIDI con el conector de sintetizador MIDI OUT, se conectó un cable de teclado entre la salida del emulador de puerto MIDI y la entrada de Anvil Studio.


El último y muy importante paso en la configuración del software fue establecer la velocidad de bits del CP2102 en 31,250 bps en lugar de 38,400 bps:

Después de configurar la velocidad, debe hacer clic en el botón "Establecer configuración". Luego, en el Administrador de dispositivos y en el Puente serial MIDI sin pelo <->, en la configuración de la velocidad de comunicación del puerto COM UART CP2102, seleccione 38400.
Resumen breve
Como resultado, el editor MIDI de Anvil Studio recibió un canal de comunicación con el sintetizador Yamaha PSR-550. Los niños comenzaron a aprender con entusiasmo cómo trabajar con un editor MIDI. Recuperé la tranquilidad.
PD: Aquí se discutió cómo configurar la velocidad a 31,250 bps en lugar de 38,400 bps para el PL2303.
PPS Cómo establecer la velocidad a 31,250 bps en lugar de 38,400 bps para CH341 no se encuentra en ninguna parte.