Musical Instrument Digital Interface Geber Ramalho & Osman Gioia Roteiro  Introdução  Hardware  Protocolo (Tipos, funções e formato das mensagens MIDI) 2 Geber Ramalho & Osman Gioia Introdução  Definição  MIDI = Musical Instrument Digital Interface  Esquema de interconexão física e protocolo de comunicação que possibilitam o controle e conexão de instrumentos musicais em tempo real  Codifica informações de execução (performance) através de mensagens em formato binário  MIDI x Áudio (wave)  MIDI não transmite informação sonora (espectros sônicos) mas só informações de controle » ex. toque Do6 agora com intensidade 64 usando um som de piano. O timbre a ser utilizado (ex. o som do “piano”) é sintetizado no equipamento receptor 3 Geber Ramalho & Osman Gioia Introdução: Histórico  Antigamente....  Controle analógico por variações de tensão (V)  Interconexão somente entre instrumentos do mesmo fabricante  1983  Sequential Circuits, Oberheim, Roland... primeira versão 1.0 do MIDI 4 Geber Ramalho & Osman Gioia Introdução  Duas grandes sacadas  É uma interface padrão  Separa o controlador do gerador de som 5 Geber Ramalho & Osman Gioia Introdução: conseqüências  Possibilita existência de vários tipos de controladores  ex. teclado, bateria, guitarra, flauta, ... 6 Geber Ramalho & Osman Gioia Introdução: conseqüências  Possibilita comunicação (bidirecional) entre equipamentos musicais e computadores 7 Geber Ramalho & Osman Gioia Introdução: conseqüências  Facilita o desenvolvimento de software musicais genéricos  ex. editores de partitura, seqüenciadores, sistemas de composição algorítmica  Embora MusicXML seja melhor para isto 8 Geber Ramalho & Osman Gioia Introdução: conseqüências  Também facilita uso/desenvolvimento de software específicos a um dispositivo  ex. editores de patch 9 Geber Ramalho & Osman Gioia Introdução: conseqüências  Pode ser utilizado para controle e sincronismo de equipamentos não-musicais  ex. luzes do palco, mesa de som, etc. 10 Geber Ramalho & Osman Gioia Hardware 11 Geber Ramalho & Osman Gioia Hardware: Portas MIDI  Transmissão de dados  serial assíncrona e unilateral  taxa 31.250 bits por segundo  usa portas  Porta MIDI de um equipamento musical  Transmite e recebe mensagens MIDI  Utiliza 3 conectores DIN (Deutsch Industrielle Normung) » MIDI In » MIDI out » MIDI Thru (through = através) cópia “amplificada” da entrada 12 Geber Ramalho & Osman Gioia Hardware: Portas MIDI Saída MIDI thru Entrada MIDI Receptor Repetidor Saída Transmissor MIDI Circuitos Internos do Dispositivo MIDI Entrada/Saída Analógicas Geber Ramalho & Osman Gioia 13 Hardware: Portas MIDI  Dois exemplos de interligação de dispositivos Tocar Seqüência Gravar Seqüência Hardware Sequencer out Hardware Sequencer in in thru Synthesizer 1 Synthesizer 1 thru in in thru Synthesizer 2 Synthesizer 2 thru in in out Keyboard Sampler Keyboard Sampler  MIDI Patch Bay  Alternativa à conexão em cascata  Roteia diretamente evitando atraso Midi Sources MIDI Patch Bay Midi Destinations Geber Ramalho & Osman Gioia 14 Hardware: MIDI/Computer Interface  As placas atuais têm...  Conversor A/D e D/A (como já sabemos...)  Sintetizador MIDI » Síntese na própria placa (Tabelas de formas de onda wavetable lookup)  Interface MIDI » Mandam mensagens MIDI para um sintetizador externo via um adaptador (MIDI Kit) em uma porta USB 15 Geber Ramalho & Osman Gioia Hardware: Canais MIDI  Pergunta  Estes tipos todos de conexão não geram confusão? Como saber que notas serão tocadas em que equipamento (de uma mesma porta ou não)?  Canais MIDI: Solução!  É um endereçamento de rede: mensagens processadas só equipamentos “sintonizados” naquele(s) canal(is) » Diferente da noção de canal de áudio » ex. se sintetizador 1 reponde ao canal 1, as mensagens dos outros canais serão ignoradas por ele  16 canais por porta » múltiplas portas = 16*portas canais 16 Geber Ramalho & Osman Gioia Canais MIDI  Exemplo Teclado 1 Split Point Computador 2 in Sintetizador 1 (10 vozes multitimbral) Sintetizador 2 (4 vozes multitimbral) Placa MIDI out 1 a 10 11 a 14 Unidade de Efeito 1 15 Unidade de Efeito 2 16 Hardware: Canais MIDI  Canal Base  Canal associado a fluxo de eventos com mensagens de modo de operação » Informa ao dispositivo a configuração de recebimento das mensagens de voz » Cada fabricante tem o seu default (em geral o canal 1)  Limitações » A configuração é manual: não configurável por software » Como não há handshaking (MIDI é unilateral), não se sabe se o equipamento esta recebendo  Canal de Voz  Canal associado ao fluxo de mensagens de voz (informação realmente musical) » Notas, controles, mudanças de programa, etc... 18 Geber Ramalho & Osman Gioia Protocolo (Mensagens MIDI) 19 Geber Ramalho & Osman Gioia Mensagens MIDI  Princípio  A comunicação se dá por mensagens MIDI  Transmissor origina mensagens e receptor realiza a ação desejada (sintetiza, processa, liga, ...)  Mensagens enviadas/reconhecidas por cada equipamento estão listadas na Tabela de Implementação MIDI 20 Geber Ramalho & Osman Gioia Exemplo de Tabela de Implementação MIDI Mensagens MIDI: Formato  Mensagens possuem  1 byte de Status , que codifica os comandos  Seguido por 0, 1 ou 2 bytes de dados (argumentos)  Byte de status  Bit de mais alta ordem sempre igual a 1 (=> vai de 0x80 a 0xFF)  Os outros 3 ou 7 bits mais significativos codificam tipo de mensagem,  Quando necessário, os 16 canais MIDI são codificados nos 4 bits menos significativos (para complicar!!) 1 cmd cmd cmd : chn chn chn chn 1 cmd cmd cmd : cmd cmd cmd cmd 22 Geber Ramalho & Osman Gioia Mensagens MIDI: Formato  Bytes de dados  Complementam (instanciam) a informação do status  Só usam 7 bits para não confundir com as o byte de status, o que é uma limitação 0 arg arg arg : arg arg arg arg 23 Geber Ramalho & Osman Gioia Mensagens MIDI: Tipos  Mensagens de canal (channel messages)  Endereçadas em um canal, dizem as notas a tocar, como modificar o som destas, ou como o equipamento deve tratar estas requisições  Subdivide-se em mensagens de voz e de modo  Mensagens de sistema (system messages)  Coordenam as atividades de todos os equipamentos conectados ao sistema  Subdivide-se em mensagens comuns, de tempo real e exclusivas do sistema 24 Geber Ramalho & Osman Gioia Mensagens MIDI: Tipos Channel Voice Mode Note on Note off Key Pressure Channel Pressure Control Change Program Change Pitch Bend System Real Time Common Sys Ex All Notes Off Local Control Omni Off Omni On Mono Poly 25 Geber Ramalho & Osman Gioia Mensagens de Canal Mensagens de Voz Mensagens de Modo 26 Geber Ramalho & Osman Gioia Mensagens de Voz  Dizem as notas a tocar, como modificar o som destas Byte de Status* Significado Bytes de Dados 0x8n Note Off 2 bytes - Tecla e Dinâmica 0x9n Note On 2 bytes - Tecla e Dinâmica 0xAn Key Pressure 2 bytes - Tecla e Valor 0xBn Control Change 2 bytes - Parâmetro e Valor 0xCn Program Change 1 byte - Programa selecionado 0xDn Channel Pressure 1 byte - Valor 0xEn Pitch Bend 2 bytes - Valor de 14 bits * n = canal (0 = canal 1, F = canal 16) Geber Ramalho & Osman Gioia 27 Mensagens de Voz: Note On/Note Off  Note On  Indica a nota a ser tocada: altura (MIDI key) e intensidade (velocity) 9n key velocity  3 bytes  Altura  Baseada no teclado (afinação temperada, La = 440 Hz)  7 bits => 128 valores (0 a 127) » Tessitura = MIDI C0 (8,17 Hz) a G10 (12.543,89 Hz) » Do Central (MIDI C5) = 60 (261,63 Hz) » Ver em http://www.cin.ufpe.br/~musica/cmps/ • Chart_Pitch_1.pdf, ou equivalencia.html Tecla 0 12 Geber Ramalho & Osman Gioia 24 36 48 60 72 84 96 108 C1 C2 C3 C4 C5 C6 C7 C8 120 127 28 Mensagens de Voz: Note On/Note Off  Intensidade  Chamada de velocidade devido à maneira de detectar intensidade em um teclado  7 bits => 128 valores (0 a 127) Velocity 0 off ppp pp p 64 mp mf f ff 127 fff 29 Geber Ramalho & Osman Gioia Mensagens de Voz: Note On e Note Off  Note off  Liberação de tecla  Mesma informação do Note On 8n key velocity  Duração  tempo decorrido entre Note On e Note Off  por ser em tempo real, não é possível trabalhar explicitamente com a duração em MIDI a priori  Observação importante  Usar Note On com velocity = zero dá no mesmo que um Note Off 30 Geber Ramalho & Osman Gioia Mensagens de Voz: Pitch Bend  Pitch Bend (mudança de altura)  Usada para efeitos musicais (ex. glissando), para obter micro afinação, etc.  Utiliza 14 bits = 16.384 valores » byte menos significativo antes » centro em 0x00 0x40  Variação é determinada pelo receptor » ex. se um sintetizador implementa um desvio de 3 semitons para cima e para baixo, teremos um “passo” 6/16384 31 Geber Ramalho & Osman Gioia Mensagens de Voz: Pressão  Key Pressure (aftertouch)  Enviada por alguns teclados depois de se pressionar a tecla  Pode ser interpretada de maneiras diversas » ex.disparando um efeito  Channel Pressure  Igual a anterior mais se aplica à todas as notas do canal, e não a um única tecla 32 Geber Ramalho & Osman Gioia Mensagens de Voz: Program Change  Program Change  Seleciona o programa/patch/instrumento desejado  Ex. uma mesma melodia de flauta pode passar a ser tocada (no mesmo canal) pelo piano, pela guitarra ou por uma flauta sttacato  Os sintetizadores General MIDI tem uma lista padrão de de instrumentos devidamente numerados      01 = piano acústico 27 = guitarra de jazz 53 = coral “ah” 70 = corne inglês 109 = kalimba 33 Geber Ramalho & Osman Gioia Mensagens de Voz: Control Change  Control Change  Usada para mudar volume, modulação e outras qualidades sonoras do sintetizador  120 controles 34 Geber Ramalho & Osman Gioia Mensagens de Voz: Control Change 0, 32 Seleção de Banco (somente MSB) 1 Modulação 2 Embocadura 4 Pedal 5 Tempo de Portamento 6, 38 Volume 8 Balanço (Booleano) 67 Abafador (Booleano) 69 Sustentação 2 (Booleano) 91 Reverberação 92 Tremolo Entrada de Dados 7 66 Sostenuto 93 Chorus 94 Desafinador 95 Modificador de Fase 98, 99 10 Estereofonia NRPN 100, 101 RPN 11 Expressão (LSB, MSB) (LSB, MSB) 120 Cancela todas as Notas 64 Sustentação 1 (Booleano) 65 Portamento (Booleano) 121 Zera todos os controladores 35 Geber Ramalho & Osman Gioia Running Status  Definição  Caso uma mensagem venha sem status, vale o último  Ganha tempo minimizando a redundância do protocolo MIDI  Exemplo  Pare enviar e relaxar 3 notas => 18 bytes (com Note On e velocity zero servindo de Note Off) » 90 3C 40 90 3B 62 90 39 27 ... 90 3C 00 90 3B 00 90 39 00  Com o running status => 13 bytes » 90 3C 40 3B 62 39 27 ... 3C 00 3B 00 39 00 36 Geber Ramalho & Osman Gioia Usar Midi Monitor 37 Geber Ramalho & Osman Gioia Mensagens de Modo  Mensagens de Modo  Servem para definir como cada equipamento vai receber as mensagens de voz  Recebidas pelo receptor através de canal base que pode ser fixo ou definido pelo usuário a critério de cada fabricante  Formato  Byte de status (0xB0 a 0xBF) mais 1 ou 2 bytes de dados 38 Geber Ramalho & Osman Gioia Mensagens de Modo Status Arg1 Arg2 Evento B0 7A 0/127 Local On/Off B0 7B 0 All Notes Off B0 7C 0 Omni On B0 7D 0 Omni Off B0 7E 0-16 Mono Mode B0 7F 0 Poly Mode 39 Geber Ramalho & Osman Gioia Mensagens de Modo  Mensagens (1)  Local/Remoto: Conecta/desconecta o controlador local (teclado) do sintetizador interno de som  All Notes off: Pânico  Mensagens (2)  Omni On/Off- Habilita a recepção de Mensagens de voz em qualquer canal  Mono/Poli - Responde monofônica ou polifonicamente  Estes dois últimos são utilizados conjuntamente para definir os modos de operação 1, 2, 3 e 4 40 Geber Ramalho & Osman Gioia Sintetizadores  Monofônicos x Polifônicos  Polifonia:capacidade de tocar mais de uma nota ao mesmo tempo » exemplo: piano, contra-exemplo: flauta  Todos sintetizadores MIDI minimamente decentes são polifônicos, porém a polifonia máxima pode variar  Monotimbrais x Politimbrais  Politimbralidade: capacidade de tocar mais de um timbre (notas de diferentes instrumentos) ao mesmo tempo » Todo politimbral é polifônico mais não o inverso  Os sintetizadores modernos são politimbrais, os antigos (ex. DX7) não 41 Geber Ramalho & Osman Gioia Modos de Operação  Modo 1: Omni On / Poli (ou simplesmente “omni”)  Mensagens de voz recebidas em todos os canais  Notas alocadas polifonicamente até o limite de polifonia do instrumento  Usado para testar a conexão  Modo 2: Omni On / Mono  Mensagens de voz recebidas em qualquer canal  Notas executadas monofonicamente  Em total desuso  Estes 2 modos são pouco ou não utilizados! 42 Geber Ramalho & Osman Gioia Modos de Operação  Modo 3: Omni Off / Poli (ou simplesmente “poli”)  Mensagens de voz recebidas somente pelo canal base e as notas alocadas polifonicamente  Muito útil para organizar vários sintetizadores monotimbrais mas polifônicos » Ex. sintetizador 1 = piano, sintetizador 2 = guitarra, sintetizador 3 = bateria, etc.  Pouco usado atualmente 43 Geber Ramalho & Osman Gioia Modos de Operação  Modo 4: Omni Off / ex-mono e atual Multi mode (“multi”)  Na versão anterior, o sintetizador respondia monofônicamente... atualmente muito usada para sintetizadores multitimbrais  Mensagens de voz recebidas em cada um dos canais com cada timbre ficando sintonizado em um canal! » Vários sintetizadores em um, pois pode responder a mais de um canal mas não necessariamente todos! 44 Geber Ramalho & Osman Gioia Mensagens do Sistema Mensagens Comuns Mensagens Tempo Real Mensagens Exclusivas 45 Geber Ramalho & Osman Gioia Mensagens do Sistema  System Common  Transportam informações gerais aos sistemas, enviadas para todas as unidades e todos canais » Utilizadas para configurar (set) os sintetizadores para tocar uma dada música a partir de uma dada posição no tempo  Real Time  Mensagens de sincronismo (start, stop, clock)  Exclusivas  Reservadas para utilização proprietária de cada fabricantes » Cada fabricante deverá fornecer explicação detalhada sobre a implementação Sys Ex em cada equipamento 46 Geber Ramalho & Osman Gioia Exemplo de Sys-ex Genérica  General MIDI On F0 7E 7F 09 01 F7 F0 - Início de Sys-ex 7E - ID number (Universal non-real time message) 7F - Device ID (Broadcast) 09 - sub-ID#1 (General MIDI message) 01 - sub-ID#2 (General MIDI on) F7 - EOX (End of Exclusive) 47 Geber Ramalho & Osman Gioia Exemplo de Fluxo de Dados MIDI 48 Geber Ramalho & Osman Gioia