Certa vez, comprei um sintetizador Yamaha PSR-550 para meus filhos. A ferramenta não foi a primeira juventude, mas prestável. As crianças demonstraram entusiasmo e rapidamente se acostumaram ao sintetizador: descobriram os controles, aprenderam a "escrever latas" etc. A presença dos conectores “MIDI IN” e “MIDI OUT” na parte traseira do sintetizador não me incomodou.
Declaração do problema
No século passado, a maneira mais fácil de conectar um computador e sintetizador via MIDI era usar uma
porta de jogo . Para combinar os sinais das interfaces (o “loop de corrente” em MIDI e TTL no conector da porta do jogo), foi feito um adaptador simples, cujo circuito é fornecido no
artigo MIDI da Wikipedia :

Atualmente, as portas de jogos de som e placas-mãe desapareceram como uma classe. Não é possível encontrar drivers de porta de jogos para sistemas operacionais modernos.
A “física” da interface era compreensível em princípio em um
artigo da Wikipedia : os dados são trocados usando o protocolo start-stop a uma velocidade de 31250 bps com transmissões de dados de 8 bits sem paridade com um bit de parada. O zero lógico nos circuitos de sinal corresponde a um fluxo de corrente de 5 mA; para uma unidade lógica, não há corrente no circuito.
Em princípio, a porta do jogo pode ser substituída pelo USB UART e conectar o adaptador descrito no artigo da Wikipedia a ele.
O primeiro problema com esta solução é forçar o sistema operacional a definir a porta UART COM como uma porta MIDI. Inesperadamente, para mim, uma solução para o problema foi encontrada nos fóruns do Arduino. Lá encontrei um link para um emulador de porta MIDI gratuito "na parte superior" de uma porta COM virtual. Para conectar a porta emulada a um editor MIDI, o desenvolvedor recomendou o uso de um cabo loopMIDI virtual.
O segundo problema: fazer o UART rodar a 31.250 bps.
Todos esses dados já eram suficientes para formular uma
proposta técnica :
“Para conectar um computador a um sintetizador via MIDI, é proposto o uso de USB UART junto com um adaptador para correspondência de sinais TTL com sinais de“ loop atual 0 ... 5 mA ”, software loopMIDI, drivers Hairless MIDI <-> Serial Bridge e UART, permitindo que ele trabalhe em velocidades de 31.250 bps ".Hardware
A escolha de uma solução de hardware foi extremamente simples - nas caixas do autor do artigo foram encontradas:
- UART USB baseado no CP2102;
- Optocoupler AOT101A;
- microcircuito K1533LN2;
- um par de conectores SSH-5 (outras designações: ONC-VG-4-5 / 16-V, DIN 41524);
- vários metros de cabo acústico blindado SHGES.
Como resultado, esse circuito adaptador foi montado no corte de uma tábua de pão universal de 40x15 em tamanho:

O desempenho do circuito montado foi verificado da seguinte forma:
- O adaptador foi conectado aos conectores MIDI do sintetizador.
- O sintetizador foi desabilitado no controle local (MIDI Local = Off).
- Após instalar um jumper entre os sinais RX e TX do adaptador, o sintetizador começou a responder às teclas.
Espero que a operação do circuito seja clara sem explicações. Noto apenas que:
- os elementos do chip K1533LN2 têm uma saída do tipo "coletor aberto" que não funciona sem carga externa;
- o capacitor C1 é conectado o mais próximo possível dos terminais de energia DD1;
- a trança do cabo que vai ao conector "MIDI IN" do sintetizador é conectada apenas ao fio comum do adaptador;
- a trança do cabo que vai para o conector MIDI OUT do sintetizador é conectada apenas ao terminal 2 do conector.
De software
Em seguida, o seguinte software foi instalado no computador:
- Driver VCP para CP2102 .
- Pacote de utilitários para configurar o CP2102 .
- Emulador de porta MIDI MIDI sem fio <-> Serial Bridge de Angus Gratton.
- MIDI virtual cord loopMIDI de Tobias Erichsen.
- Editor MIDI Anvil Studio.
Em seguida, dois cabos foram criados no loopMIDI - "Synthesizer" e "Keyboard":

Para conectar o editor MIDI à entrada do sintetizador MIDI IN, foi conectado um cabo sintetizador entre a saída do Anvil Studio e a entrada do emulador de porta MIDI.
Para conectar o editor MIDI ao conector do sintetizador MIDI OUT, um cabo de teclado foi conectado entre a saída do emulador de porta MIDI e a entrada do Anvil Studio.


O último e muito importante passo na configuração do software foi definir a taxa de bits do CP2102 para 31.250 bps em vez de 38.400 bps:

Depois de definir a velocidade, você deve clicar no botão "Definir configuração". Em seguida, no Gerenciador de dispositivos e na ponte serial sem fio MIDI <->, nas configurações da velocidade de comunicação da porta COM do UART CP2102, selecione 38400.
Breve resumo
Como resultado, o editor MIDI do Anvil Studio recebeu um canal de comunicação com o sintetizador Yamaha PSR-550. As crianças começaram entusiasticamente a aprender a trabalhar com um editor MIDI. Eu recuperei a paz de espírito.
PS Como definir a velocidade para 31.250 bps em vez de 38.400 bps para o PL2303 foi discutido
aqui .
PPS Como definir a velocidade para 31.250 bps em vez de 38.400 bps para o CH341, não é encontrado em nenhum lugar.