Design de fim de semana: adaptador MIDI simples


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:

  1. O adaptador foi conectado aos conectores MIDI do sintetizador.
  2. O sintetizador foi desabilitado no controle local (MIDI Local = Off).
  3. 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:

  1. Driver VCP para CP2102 .
  2. Pacote de utilitários para configurar o CP2102 .
  3. Emulador de porta MIDI MIDI sem fio <-> Serial Bridge de Angus Gratton.
  4. MIDI virtual cord loopMIDI de Tobias Erichsen.
  5. 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.

Source: https://habr.com/ru/post/pt447652/


All Articles