sexta-feira, 2 de outubro de 2009

Interconexão de Sistemas de Controle de Áudio

Nesse artigo iniciaremos a discussão sobre as formas de interconectar dispositivos de controle de Áudio e as novas formas de interconectar computadores para troca de mensagens de controle.


O que é MIDI


O protocolo MIDI (Musical Instrument Digital Interface) foi proposto no inicio dos anos 80 e possibilita a interconexão e troca de mensagens musicais e de controle entre instrumentos musicais eletrônicos, sintetizadores, computadores, bateria eletrônicas, e outros dispositivos de áudio. MIDI não trasmite áudio - transmite apenas "mensagens de eventos" como tonalidade e intensidade de notas tocada, sinais de controle de parâmetros como volume, vibrato e pan, sinais de "clock" para sincronismo de tempo entre dispositivos. Também é utilizado para troca de dados de controle de sistemas de iluminação em shows e eventos.


Na sua concepção original a conexão de equipamentos por MIDI era feita via cabos com conectores DIN-5 (o mesmo conector usado nos antigos teclados de computador, antes da adoção do padrão PS/2 de pinagem).



Conector DIN-5

Vários equipamentos MIDI podem ser interconectados em em uma estrutura de conexão conhecida como "anel", na qual o INPUT de um equipamento era conectado ao OUTPUT do próximo. No caso de computadores operando sinais MIDI essa estrutura requeria a presença de uma interface MIDI no mesmo. A limitação dessa forma de conexão está no fato de que vários dispositivos MIDI podem ser controlados a partir de um dispositivo (1 MIDI out controla varios MIDI in via ligação em anel) mas vários dispositivos não podem controlar ao mesmo tempo um único dispositivo. Cada dispositivo de controle necessita de uma entrada IN exclusiva no dispositivo controlado.


Conector USB tipo A - Foto: Andreas Frank - Creative Commons

Com a adoção atual das conexões USB nos equipamentos MIDI (que engloba tanto o IN quanto o OUT de sinais MIDI), simplificaram-se as conexões, pois o computador tornou-se o centro de controle principal. Mas para a interconexão de computadores via MIDI, a conexão via cabos USB não é possível. E as placas de som mais simples não possuem conectores MIDI do tipo DIN-5.


Conector DB15 presente em algumas placa de som,
também utilizado para conexão MIDI

Mensagens MIDI podem ser agrupadas e armazenadas em um arquivo de computador, popularmente conhecido como "Arquivo MIDI". Com extensão do tipo ".mid" esse arquivo, também conhecido como "Standard MIDI File (SMF)", se tornaram muito populares recentemente em telefones celulares, como ringtones. Na marioria das vezes esses arquivos contem as informações das notas tocadas, intensidade e duração, e que para serem ouvidas necessitam de um software ou hardware chamado de sintetizador. Nos celulares está presente um tipo simples de hardware sintetizador, com timbres simples de instrumentos diversos. Nos computadores é comum a presença de um sintetizador em software embutido no sistema operacional ou na placa de som, com simulação de timbres simples de instrumentos.

Via conexão MIDI é possível conectar o PC a um sintetizador em hardware, geralmente na forma de teclados sintetizadores, que possuem bancos de sons com timbres mais realistas. Recentemente também se tornou popular a utilização de sintetizadores em software no formato de plug-in (principalmente no formato VST), que possibilitam tanto a execução de informações MIDI presentes nos arquivos SMF quanto a interpretação de sinais MIDI vindo de controladores no formato de teclados, baterias eletrônicas e similares.

Esses aplicativos que permitem a interpretação e edição de sinais MIDI são conhecidos como Sequenciadores. Os mais conhecidos são o Cakewalk Sonar, Cubase, Reason e Ableton Live.

É possível a interconexão MIDI de dois aplicativos sequenciadores rodando na mesma máquina por meio de um software que simula um HUB MIDI. O MIDIYoke cria entradas e saídas virtuais, permitindo o envio de sinais MIDI de um programa para outro.

O futuro do MIDI

Existe também um esforço para atualizar o padrão MIDI e possibilitar a troca de mesagens via rede, possibilitando maior velocidade e flexibilidade de interconexões. O RTP-MIDI (Real Time Protocol) foi disponibilizado ao publico no final de 2006 pelo IETF (Internet Engineering Task Force, que controla as padronizações da Internet). Mas a Apple disponibilizou uma versão modificada do protocolo em seu sistema operacional OS X. Está disponivel para qualquer aplicação que rode nesse sistema e parace que será adotado em breve como padrão de MIDI sobre Rede pelo comitê gestor do protocolo (MIDI Manufacturers Association).

Um driver para Windows foi lançado pela empresa Kiss para um de seus produtos - justamente um dispositivo de trasformacão de conexões MIDI via cabo DIN para cabos CAT-5, (os populares cabos de rede Ethernet), que funciona com o protocolo RTP-MIDI. Esse driver permite a troca de informações MIDI entre dois computadores interligados pelo aparelho KISS BOX, criando em cada um deles uma porta MIDI virtual, acessível a todos os programas que rodam MIDI.

A partir do inicio de 2011 a implementacao proposta pela Apple para comunicacao de MIDI via rede TCP-UDP/IP (Ethernet ou WI-FI, por exemplo) se tornou de facto a versao geral adotada por diversos outros drivers, em varios sistemas operacionais como Linux, Windows, iOS e Android. Essas drivers sao gratuitos e possibilitam a troca de informações MIDI através de uma rede TCP-UDP/IP entre diversos sistemas operacionais e entre varias maquinas simultaneamente.

A Apple apresenta no OS X um driver nativo do protocolo RTP-MIDI.

No windows temos o rtpMIDI, criado por Tobias Erichsen.

No Linux temos o multimidicast.



O que é OSC

Open Sound Control (OSC) eh um protocolo de comunicação entre computadores, sintetizadores e outros dispositivos de mulimídia, otimizado para as tecnologias modernas de comunicação via rede. Permite que instrumentos musicais eletrônicos como sintetizadores, computadores e outros dispositivos multimídia compartilhem dados musicais e de controle em tempo real via rede. Exatamente por ser um protocolo de comunicação via rede, permite a troca de dados por uma conexão de rede comum, como a rede Ethernet (via hubs e switches), Wi-Fi ou mesmo a Internet - ou seja, qualquer meio de transmissão que implemente o protocolo TCP/IP e UDP . Opera em velocidades de banda larga (acima de 1Mbps), possibilitando um tráfego maior de dados em suas mensagens e menor atraso entre pacotes, permitindo novos tipos de interação em tempo real que não eram possíveis no protocolo MIDI (que em sua especificação original usa conexões seriais de 31kbps ou 0,03Mbps e possui um atraso, ou "lag" muito grande). Alem disso, o OSC permite uma flexibilidade maior dos tipos de dados que podem ser enviados, possibilitando novos tipos de aplicação alem dos possíveis com MIDI (que possui um cojunto mais restrito de dados).

É exatamente na forma de conexão que o OSC se mostra útil, pois elimina a necessidade de dispositivos específicos para interconexão de equipamentos, como ocorre na comunicação MIDI (via conector DIN de 5 pinos ou USB - que só permite comunicação entre 2 equipamentos). Basta uma conexão que trafegue UDP/IP - como uma placa de rede Ethernet ou rede Wi-Fi, com uma velocidade maior do que 1Mbps para se criar um link OSC entre dois dispositivos. No caso de conexão via placa de rede, basta um hub ou switch para conectar vários computadores ao mesmo tempo, trocando mensagens OSC entre si.





Cabo de rede Etherner CAT-5 e conector RJ45 - o popular "cabo de rede"

O protocolo OSC funciona em uma estrutura conhecida como Cliente/Servidor. Um cliente OSC envia dados para um servidor OSC, que recebe e interpreta esses dados de controle. Aplicações que recebem e enviam dados de controle possuem ambos o Cliente e o Servidor do protocolo. Sendo um protocolo orientado a rede, a identificação de um dispositivo é feita por um numero de IP (que identifica o computador na rede) e de um par de "Portas de Conexão" virtual, uma para recepção de dados (na qual os clientes se conectam) e uma para o envio. O diagrama abaixo ilustra o processo:




As mensagens do protocolo OSC são compostas por simples linhas de texto, que codificam o controle de destino a ser modificado e o novo valor para esse controle. Uma mensagem do tipo:

/dispositivo1/controle01 0.500000

indica que o controle01 presente no dispositivo1 conectado via OSC deve ter ser valor mudado para 0.500000.

Por serem mensagens de texto, os comandos do protocolo OSC permitem uma grande variedade de dados de controle a ser enviado, como também um refinamento maior quanto aos valores numéricos enviados, que podem conter números inteiros ou com casas decimais.

OSC - Aplicações

Já existem vários softwares que utilizam o protocolo OSC, além do MIDI, para troca de informações de controle. Entre eles:

- Usine
- Plogue Bidule

Existem também hardwares compatíveis com o protocolo OSC:
- Lemur
- Monome
- iPhone e iPod touch rodando aplicativos de controle OSC (TouchOSC, OSCemote, Mrmr, OSCRemote, MSA Remote, entre outros)

Uma lista completa de softwares e hardwares que utilizam OSC pode ser obtida em http://opensoundcontrol.org/implementations

A adoção em larga escala do OSC, apesar da sua flexibilidade, ainda não ocorreu. Especula-se que essa adoção pode acontecer assim que um grande fabricante de hardware ou software incluir o protocolo em um de seus produtos, assim com aconteceu com o MIDI no começo dos anos 80.

O protocolo não é mantido por nenhuma instituição e também não está padronizado (ao contrario do MIDI, que foi padronizado no inicio dos anos 80). No estado atual, cada aplicação define os nomes das mensagens trocadas, o que pode gerar uma confusão em um futuro próximo. Também não estão padronizadas as informações que correspondem ao envio de notas musicais, como as presentes no MIDI. Essa fato limita um pouco o uso do protocolo com um substituto do MIDI nas aplicações que envolvem controle de notas em sintetizadores, como ocorre em teclados. Também não foi definido um arquivo OSC semelhante ao arquivo MIDI SMF. Um esforço de padronização está em processo, sob o nome de OSC-SYN.



Nenhum comentário: