Você está na página 1de 45

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 http://www.cin.ufpe.br/~musica/cmps/
• Chart_Pitch_1.pdf, ou equivalencia.html

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
» ex.disparando 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