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
Permite troca dados entre os mais diversos
equipamentos musicais
Possibilita existência de vários tipos de controladores
ex. teclado, bateria, guitarra, flauta, ...
Possibilita comunicação (bidirecional) entre
equipamentos musicais e computadores
6
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
Também facilita uso/desenvolvimento de software
específicos a um dispositivo
ex. editores de patch
Pode ser utilizado para controle e sincronismo de
equipamentos não-musicais
ex. luzes do palco, mesa de som, etc.
7
Geber Ramalho & Osman Gioia
Hardware
8
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
9
Geber Ramalho & Osman Gioia
Hardware: Portas MIDI
Saída
MIDI thru
Entrada Saída
MIDI Receptor Repetidor Transmissor MIDI
Circuitos Internos
do Dispositivo
MIDI
Entrada/Saída
Analógicas 10
Geber Ramalho & Osman Gioia
Hardware: Portas MIDI Tocar Gravar
Seqüência Seqüência
Dois exemplos de Hardware Hardware
interligação de dispositivos Sequencer Sequencer
out in
MIDI Patch Bay
Alternativa à conexão em in thru
cascata Synthesizer 1 Synthesizer 1
Roteia diretamente evitando thru in
atraso
Midi Sources in thru
Synthesizer 2 Synthesizer 2
thru in
MIDI Patch Bay
in out
Keyboard Keyboard
Midi Destinations Sampler Sampler 11
Geber Ramalho & Osman Gioia
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
12
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
13
Geber Ramalho & Osman Gioia
Canais MIDI Teclado
Computador
1 2
Exemplo Split Point
Placa MIDI
in
out
Sintetizador 1
(10 vozes
1 a 10
multitimbral)
Sintetizador 2
(4 vozes 11 a 14
multitimbral)
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...
15
Geber Ramalho & Osman Gioia
Protocolo (Mensagens MIDI)
16
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
17
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
19
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
20
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
21
Geber Ramalho & Osman Gioia
Mensagens MIDI: Tipos
Channel System
Voice Mode Real Time Common Sys Ex
Note on All Notes Off
Note off Local Control
Channel Pressure Omni Off
Key Pressure Omni On
Control Change Mono
Program Change Poly
Pitch Bend
22
Geber Ramalho & Osman Gioia
Mensagens de Canal
Mensagens de Voz
Mensagens de Modo
23
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) 24
Geber Ramalho & Osman Gioia
Mensagens de Voz: Note On/Note Off
Note On
Indica a nota a ser tocada: altura (MIDI key) e intensidade
(velocity)
3 bytes 9n key velocity
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 [Link]
• Chart_Pitch_1.pdf, ou [Link]
0 12 24 36 48 60 72 84 96 108 120 127
Tecla
25
C1 C2 C3 C4 C5 C6 C7 C8
Geber Ramalho & Osman Gioia
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 64 127
off ppp pp p mp mf f ff fff
26
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
27
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
28
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
» [Link] um efeito
Channel Pressure
Igual a anterior mais se aplica à todas as notas do canal, e
não a um única tecla
29
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
30
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
31
Geber Ramalho & Osman Gioia
Mensagens de Voz: Control Change
0, 32 Seleção de Banco (somente 66 Sostenuto (Booleano)
MSB)
67 Abafador (Booleano)
1 Modulação
69 Sustentação 2 (Booleano)
2 Embocadura
91 Reverberação
4 Pedal
92 Tremolo
5 Tempo de Portamento
93 Chorus
6, 38 Entrada de Dados
94 Desafinador
7 Volume
95 Modificador de Fase
8 Balanço
98, 99 NRPN (LSB, MSB)
10 Estereofonia
100, 101 RPN (LSB, MSB)
11 Expressão
120 Cancela todas as Notas
64 Sustentação 1 (Booleano)
121 Zera todos os controladores
65 Portamento (Booleano)
32
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
33
Geber Ramalho & Osman Gioia
Usar Midi Monitor
34
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
35
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
36
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
37
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
38
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!
39
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
40
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!
41
Geber Ramalho & Osman Gioia
Mensagens do Sistema
Mensagens Comuns
Mensagens Tempo Real
Mensagens Exclusivas
42
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
43
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)
44
Geber Ramalho & Osman Gioia
Exemplo de
Fluxo de
Dados
MIDI
45
Geber Ramalho & Osman Gioia