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
Download

intro-midi - Centro de Informática da UFPE