# MIDI

MIDI (acrônimo do inglês: "Musical Instrument Digital Interface"; em português: "Interface Digital de Instrumentos Musicais") é um padrão de conexão física (interface digital, protocolo e conexão) e lógica, criado em 1982 por um consórcio de fabricantes de sintetizadores japoneses e americanos, que facilita a comunicação em tempo real entre instrumentos musicais eletrônicos, computadores e dispositivos relacionados.
Uma única ligação MIDI pode carregar até dezesseis canais de informação, cada um dos quais pode ser encaminhado para um dispositivo diferente. O MIDI carrega mensagens que especificam notação, pitch (altura), velocidade, vibrato, panning, pistas e sinais de MIDI clock, que sincronizam o ritmo entre vários dispositivos. Essas mensagens são enviadas através de um cabo MIDI para outros dispositivos onde são controladas a geração de som e outros recursos. Também podem ser gravadas em um dispositivo de hardware ou de software chamado de sequenciador, que pode ser usado para editar os dados e reprodução.
O esquema da tecnologia MIDI foi publicada formalmente em 1983 por representantes da indústria da música. Sendo o controle do padrão mantido pela MIDI Manufacturers Association (MMA) e Japan MIDI Standards Committee (JMSC).
As vantagens do MIDI incluem compacidade (uma canção inteira pode ser codificada em algumas linhas, ou seja, em poucos kilobytes), e também a facilidade de manipulação e escolha dos instrumentos.

## História
### O desenvolvimento do MIDI

Até o final da década de 1970, os dispositivos musicais eletrônicos foram se tornando cada vez mais comuns e acessíveis na América do Norte, Europa e Japão. Sintetizadores analógicos mais antigos eram normalmente monofônicos, e controlados através de uma tensão produzida por seus teclados. Fabricantes utilizavam esta tensão para ligar instrumentos em conjunto, de modo que um dispositivo poderia controlar um ou mais outros dispositivos, mas este sistema era inadequado para controle de sintetizadores digitais e polifônicos mais recentes.$^{:3}$ Alguns fabricantes criaram sistemas que permitiram a interligação do seu próprio equipamento, mas os sistemas eram incompatíveis, por isso, os sistemas de um fabricante não podiam sincronizar com os de outro.$^{:4}$
Em junho de 1981, o fundador da Roland Corporation, Ikutaro Kakehashi, propôs a ideia de padronização para o fundador da Oberheim Electronics, Tom Oberheim, que então conversou com o presidente da Sequential Circuits, Dave Smith. Em outubro de 1981, Kakehashi, Oberheim e Smith discutiram a ideia com representantes da Yamaha, Korg e Kawai.
Os engenheiros e designers de sintetizadores da Sequential Circuits, Dave Smith e Chet Wood inventaram uma interface universal para sintetizadores, o que permitiria a comunicação direta entre equipamentos de diferentes fabricantes. Smith propôs esta norma na amostra da Audio Engineering Society, em novembro de 1981.$^{:4}$ Ao longo dos próximos dois anos, o padrão foi discutido e modificado por representantes de empresas como Roland, Yamaha, Korg, Kawai, Oberheim, e Sequential Circuits,$^{:22}$ e foi rebatizado de Musical Instrument Digital Interface.$^{:4}$ O desenvolvimento do MIDI foi anunciada ao público por Robert Moog, na edição de outubro 1982 da revista Keyboard ..$^{:276}$
Até o Winter NAMM Show em janeiro de 1983, Smith foi capaz de demonstrar uma conexão MIDI entre o seu sintetizador analógico Prophet 600 e um Roland JP-6. A especificação MIDI foi publicada em agosto de 1983. O padrão MIDI foi divulgado por Ikutaro Kakehashi e Dave Smith, que em 2013 receberam o Technical Grammy Award por seus papéis-chave no desenvolvimento do MIDI.

## Softwares MIDI

A principal vantagem do computador pessoal em um sistema MIDI é que ele pode servir a vários propósitos diferentes, dependendo do software que é carregado.$^{:55}$ Computadores multitarefas permitem a operação simultânea de programas que podem ser capazes de compartilhar dados uns com os outros.$^{:65}$
Alguns softwares que trabalham com MIDI:
* Ableton Live
* Anvil Studio
* Band-in-a-Box
* BRELS MIDI Editor (GPL)
* Cakewalk Sonar
* FL Studio
* GarageBand
* LMMS
* Logic Pro
* Max/MSP/Jitter
* NEMIDi
* Nero
* NIAONiao
* Mixcraft
* Steinberg Cubase
* Steinberg Nuendo
* Pro Tools
* Guitar Pro
* Pure Data
* Reason
* Reaper
* Rosegarden
* Sonar X1
* Sony ACID Pro
* UTAU
* Vocaloid

## Especificações técnicas

As mensagens MIDI são compostas de informações de 8 bits (equivalente a 1 byte) que são transmitidas em série a 31,25 kbit/s. Esta taxa foi escolhida porque é a divisão exata de 1 MHz, a velocidade a que muitos dos primeiros microprocessadores operavam.$^{:286}$ O primeiro bit de cada dado identifica se a informação é de um byte de estado ou um byte de dados, e é seguido por sete bits de informação.$^{:13–14}$ Um bit de partida e um bit de parada são adicionados a cada byte para fins de enquadramento, de modo que um byte MIDI requer dez bits para a transmissão.$^{:286}$
Um link MIDI pode transportar dezesseis canais independentes de informação. Os canais são numerados de 1 a 16, mas a sua codificação binária real correspondente é de 0 a 15. Um dispositivo pode ser configurado para escutar somente canais específicos e ignorar as mensagens enviadas em outros canais (modo "Omni Off"), ou pode ouvir todos os canais, efetivamente ignorando o endereço do canal (modo "Omni On"). Um dispositivo individual pode ser monofônico (o início de um novo comando MIDI "note-on" implica o fim da nota anterior), ou polifônico (várias notas podem soar ao mesmo tempo, até que o limite de polifonia do instrumento for alcançado, ou as notas cheguem ao final do seu envelope de decaimento, ou comandos MIDI "note-off" explícitos são recebidos). Dispositivos receptores normalmente podem ser definidos para todas as quatro combinações de "omni off/on" versus modos "mono/poli".$^{:14–18}$

### Mensagens

Uma mensagem MIDI é uma instrução que controla algum aspecto do dispositivo receptor. Uma mensagem MIDI consiste de um byte de estado, que indica o tipo da mensagem, seguido por até dois bytes de dados que contêm os parâmetros. Mensagens MIDI podem ser "mensagens do canal", os quais são enviados em apenas um dos 16 canais e só podem ser ouvidos por dispositivos que recebem nesse canal, ou "mensagens do sistema", que são ouvidas por todos os dispositivos. Quaisquer dados que não são relevantes para um dispositivo receptor são ignorados.$^{:384}$ Há cinco tipos de mensagens: de Voz do Canal (Channel Voice), de Modo do Canal (Channel Mode), Comum do Sistema (System Common), em Tempo Real do Sistema (System Real-Time) e Exclusiva do Sistema (System Exclusive).
As mensagens de Voz do Canal transmitem dados de desempenho em tempo real sobre um único canal. Exemplos incluem mensagens "note-on" que contêm um número de nota MIDI que especifica o tom da nota, um valor de velocidade que indica com que força a nota foi tocada, e o número do canal; mensagens "note-off" que finalizam uma nota; mensagens de alteração do programa que mudam um trecho do dispositivo; e as alterações de controle que permitem o ajuste dos parâmetros de um instrumento. As mensagens de Modo do Canal incluem mensagens "on" e "off" dos modos omni/mono/poli, assim como mensagens para reiniciar todos os controladores aos seus estados padrão ou para enviar mensagens "note-off" para todas as notas. As mensagens do sistema não incluem os números dos canais e são recebidas por cada dispositivo na cadeia MIDI. Código de tempo MIDI é um exemplo de uma mensagem comum do sistema. As mensagens em Tempo Real do Sistema fornecem a sincronização, e incluem o MIDI clock e o sensoriamento ativo.$^{:18–35}$

#### Mensagens Exclusivas do Sistema (SysEx)

As mensagens Exclusivas do Sistema (SysEx) são uma das principais razões para a flexibilidade e longevidade do padrão MIDI. Elas permitem que os fabricantes criem mensagens exclusivas que fornecem controle sobre seus equipamentos de uma forma mais completa do que a fornecida pelas mensagens MIDI padrão.$^{:287}$ As mensagens SysEx são transmitidas a um dispositivo específico em um sistema. Cada fabricante tem um identificador único que está incluído em suas mensagens SysEx, que ajuda a garantir que as mensagens serão recebidas apenas pelo dispositivo de destino, e ignoradas por todos os outros dispositivos. Muitos instrumentos também incluem uma configuração SysEx ID, que permite que dois dispositivos do mesmo modelo sejam endereçados independentemente, enquanto conectados ao mesmo sistema.
As mensagens SysEx podem incluir funcionalidades além das que são oferecidas pelo padrão MIDI. Elas são direcionadas para um instrumento específico e são ignoradas por todos os outros dispositivos no sistema. A estrutura é definida especificamente para o aparelho que irá recebê-la, podendo tal estrutura conter qualquer tipo de dado. Por exemplo, um dispositivo pode ter uma especificação de mensagens SysEx que contenham caracteres ASCII.$^[$

#### MIDI Implementation Chart

Os dispositivos normalmente não respondem a qualquer tipo de mensagem definida pela especificação MIDI. A Carta de Execução de MIDI (MIDI Implementation Chart) foi padronizada pela MMA como uma maneira para que os usuários vejam que recursos específicos um instrumento tem e como ele responde as mensagens.$^{:231}$ Uma Carta de Execução de MIDI específica normalmente é publicada para cada dispositivo MIDI dentro da documentação dispositivo.

## Extensões

A flexibilidade e ampla adoção do MIDI têm levado a muitos refinamentos da norma e permitiram a sua aplicação para fins além daqueles para o qual foi originalmente projetado.

### General MIDI

General MIDI ou GM é uma especificação para sintetizadores que impõe vários requisitos para além da norma MIDI mais geral. Enquanto que a norma MIDI proporciona um protocolo de comunicações que assegura que diferentes instrumentos (ou componentes) possam interagir a um nível básico (por ex., tocando uma nota num teclado MIDI vai fazer com que um módulo de som reproduza uma nota musical), o General MIDI vai mais além de duas maneiras: ele requer que todos os instrumentos compatíveis com o GM tenham um mínimo de especificações (tais como pelo menos 24 notas de polifonia) e associa certas interpretações a vários parâmetros e mensagens de controle que não tinham sido especificadas na norma MIDI (como a definição de sons de instrumentos para cada um dos 128 números dos programas).$^[$