MIDI (continuação)
General MIDI
Arquivos MIDI Standard
Geber Ramalho & Osman Gioia
1
General MIDI (GM)
 Problema
 Um instrumento (patch) é só um número....
 Como garantir que uma seqüência (música) feita para um
sintetizador vai soar com os instrumentos certos em outro?
 Solução: General MIDI System, Level 1
 Formato e a configuração mínimos que o instrumento
reprodutor deverá possuir (logotipo GM)
 Padrão que assegura portabilidade às seqüências pois
define mapeamento entre canais, programas (instrumentos)
e sons
Geber Ramalho & Osman Gioia
2
General MIDI
 Especificações para os sintetizadores
 Mínimo de 24 vozes de polifonia alocadas dinamicamente
 Resposta multitimbral aos 16 canais MIDI
 Todas as vozes deverão responder à dinâmica
 O número de nota MIDI 60 deve corresponder à nota Do
central do piano
 Cada canal deve responder aos controles de:
» modulação, volume, estereofonia, expressão, sustentação,
desativação de todos os controles e desativação de todas as
notas
Geber Ramalho & Osman Gioia
3
General MIDI
 Pré-alocação dos canais
 Canal 4: Melodia
 Canal 8: Harmonia
 Canal 10: Percussão (único realmente respeitado!!!)
 Percussão
 O diferentes sons de percussão são associados a números
de nota MIDI específicos
Geber Ramalho & Osman Gioia
4
Tabela de Percussão GM
Nota MIDI
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Nota
Instrumento
B1
C2
C# 2
D2
D# 2
E2
F2
F# 2
G2
G#2
A2
A# 2
B2
C3
C# 3
D3
D# 3
E3
F3
F# 3
G3
G# 3
A3
A# 3
Bumbo acústico
Bumbo 1
Baqueta +aro
Caixa acústica
Palmas
Caixa elétrica
Surdo grave
Contratempo fechado
Surdo agudo
Contratempo fechado
Tom-tom grave
Contratempo aberto
Tom-tom médio-grave
Tom-tom médio-agudo
Prato batido
Tom-tom agudo
Prato condutor
Prato chinês
Centro do prato
Pandeiro
Prato espalmado
Sino de vaca
Prato batido 2
Chicote
Geber Ramalho & Osman Gioia
Nota MIDI
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Nota
Instrumento
B3
C4
C# 4
D4
D# 4
E4
F4
F# 4
G4
G# 4
A4
A# 4
B4
C5
C# 5
D5
D# 5
E5
F5
F# 5
G5
G# 5
A5
Prato condutor 2
Bongô agudo
Bongô grave
Conga aguda abafada
Conga aguda aberta
Conga grave
Tímbale agudo
Tímbale grave
Agogô agudo
Agogô grave
Cabaça
Maracas
Apito curto
Apito longo
Reco-reco curto
Reco-reco longo
Claves
Bloco de madeira agudo
Bloco de madeira grave
Cuíca fechada
Cuíca aberta
Triângulo fechado
Triângulo aberto
5
Especificações GM
 Pré-alocação dos timbres (programas/instrumentos)
 Números de Programa devem chamar os timbres
especificados exceto no canal 10 (percussão)
 Atenção
 GM é só uma mapeamento de nomes...
 Não há garantia que 2 equipamentos tocando “program 1”
(acoustic piano) vão soar igualmente... Depende da
qualidade deles
Geber Ramalho & Osman Gioia
6
Mapa de Timbres GM
Geber Ramalho & Osman Gioia
7
Standard MIDI Files (SMF)
Geber Ramalho & Osman Gioia
8
SMF: Histórico e Definição
 Motivação: incompatibilidade
 A especificação MIDI lidava com controle musical, não com
armazenamento
 Anos depois da introdução do MIDI, cada aplicação usava
formatos proprietários de arquivos de seqüências musicais
 Em 1988: Standard MIDI Files (SMF)
 Permitindo...
 Troca de dados seqüenciados entre diferentes programas
 Especialização dos programas (editores, seqüenciadores,
impressão, composição,....)
» mesmo os que usam formatos proprietários exportam e
importam arquivos MIDI
 Troca de arquivos à distância (ex. Web)
Geber Ramalho & Osman Gioia
9
SMF: Conceitos Básicos
 Trilha
 é o fluxo contendo informação temporal para cada evento
(ex. notas) e meta-evento (ex. andamento, compasso) MIDI
 Arquivos MIDI podem conter uma ou mais trilhas
 Nomes de trilhas e outros textos também podem ser
armazenados
 Formatos dos dados
 Sempre MSB LSB (Big-Endian format)
» Lembrar que processadores Intel seguem padrão little-endian
format!
Geber Ramalho & Osman Gioia
10
SMF: Formato
 Formado por 2 tipos de bloco
 Cabeçalho: fornece as informações iniciais sobre o arquivo
 Trilhas: Contém o fluxo seqüencial de eventos MIDI
separados em até 16 canais
 Sempre começa com um Bloco Cabeçalho e é seguido por
um ou N Blocos de Trilha.
 Cada bloco é formado por
 Um rótulo com 4 caracteres: “MThd” e “MTrk”
 Seu tamanho do bloco (descrito em 32 bits, MSB LSB)
 Bytes de dados
Rótulo
Tamanho (32 bits)
Bytes de Dados
MThd
Quantidade de dados do Cabeçalho
Dados do Cabeçalho
MTrk
Quantidade de dados da Trilha
Dados da Trilha
Geber Ramalho & Osman Gioia
11
Bloco de Cabeçalho
 Contém informações sobre Formato, Número de
Trilhas e Divisão
Rótulo
Tamanho (em bytes)
Formato
Número de trilhas
Divisão (resolução)
Geber Ramalho & Osman Gioia
Valores
Tamanho
MThd
4 caracteres (4 Bytes)
00 00 00 06
4 Bytes
00 00 (Formato 0)
00 01 (Formato 1)
00 02 (Formato 2)
00 01 (p/ formato 0 e 2)
00 01 a FF FF(p/ formato 1)
0+15bits (ticks per beat)
1+15 bits (frames per second)
2 Bytes
2 Bytes
2 Bytes
12
Formatos
 Formato 0: single track
 Uma trilha multicanal
 Mapa de andamentos (tempo) na própria trilha
 Mais básico dos formatos (e historicamente o primeiro)
 Formato 1: multitrack
 Várias trilhas simultâneas com métrica de compasso e
andamento iguais
 Primeira trilha contém o mapa de andamentos geral
 Formato 2: multisequence
 Várias trilhas independentes, cada uma com a sua própria
métrica de compasso e andamento
 Pouquíssimo usado (nem todo equipamento dá suporte)
Geber Ramalho & Osman Gioia
13
Bloco de Trilha
 Observações
 Igual independente do formato
 Os eventos são amazenados usando o running status
Rótulo
Tamanho (em bytes)
Eventos
Geber Ramalho & Osman Gioia
Valores
Tamanho
MTrk
4 caracteres (4 Bytes)
00 00 00 00 - FF FF FF FF
4 Bytes
Eventos, Meta-eventos e SysEx
14
Timestamps
 Cada mensagem MIDI em uma trilha está associada a
um indexador temporal chamado de timestamp
 O início da seqüência corresponde ao tempo zero
 Timestamp (delta de tempo)
 mensurado em Clock Ticks = subdivisão de uma semínima
e a menor subdivisão do tempo em MIDI
 Normalmente, um múltiplo de 2 e 3 (ex. 96)
 Indica ao programa quando executar os eventos
(escalonamento)
 Valor entre 8 a 32 bits representando o lapso de tempo
entre dois eventos consecutivos na mesma trilha
» quanto tempo passou desde o último evento!
» Não é uma medida absoluta, mas relativa!
» exemploSMF.doc
Geber Ramalho & Osman Gioia
15
Parêntese sobre o timestamp...
 A Posição temporal absoluta nos sequenciadores e
editores adota formatos mais amigáveis
 MBT: Measure:Beat:Tick
 Representação métrica (compasso:tempo:ticks decorridos
dentro do beat)
 04:02:48 = 4o compasso, segundo tempo, metade do
tempo caso tempo = 96 (semínima = 96 => 48 = colcheia)
 HMSF: Hour:Minute:Second:Frame
 Representação tempo real (hora:minuto:segundo:frames
decorridos dentro de um segundo)
 Usado em sincronização de equipamentos: SMPTE
(Society of Motion Picture and Television Engineers) e MTC
(MIDI time code)
Geber Ramalho & Osman Gioia
16
Eventos MIDI
 Evento MIDI (propriamente dito)
 É representado por qualquer mensagem com número de
canal, com status corrente podendo ser utilizado
» Já estudamos (Note On/Off, Pitch Bend, Program Change,...)
 Meta Evento
 Especificam vários tipos de informação úteis além das
previstas nas mensagens MIDI normais
 Não é permitido o uso de status corrente
 Não é exigido o reconhecimento de todos os Meta Eventos
por parte dos programas aplicativos
 Mensagem Exclusiva do Sistema (Sysex)
 Utilizada para especificar um fluxo de dados arbitrário e
proprietário de cada fabricante
Geber Ramalho & Osman Gioia
17
Meta Eventos
Rótulo
0xFF
Tipo
0 - 127
Tamanho
Número de Bytes de Dados
Dados
Bytes de Dados
 Rótulo
 Meta Eventos sempre iniciam com o identificador 0xFF
 Tipo
 14 tipos da tabela a seguir
 Tamanho
 Quantidade de bytes de dados armazenado em número
com tamanho variável, se não existirem dados,
Tamanho = 0
 Dados
 Bytes de dados pertinentes ao tipo de evento em questão
Geber Ramalho & Osman Gioia
18
Meta Eventos
Tipo
0x00
0x01
0x02
0x03
Dados
2 bytes
Variável
Variável
Variável
Descrição
Número de Seqüencia
Evento Texto
Direitos Autorais
Nome da Seqüência ou Trilha
0x04
0x05
0x06
0x07
0x2F
0x51
0x54
0x58
Variável
Variável
Variável
Variável
0 bytes
3 bytes
Hora:Minuto:Segundo:Frames:Divisão
Numerador:Denominador:Resolução:
Fusas/Compasso
Tom:Modo
Variável
Nome do Instrumento
Letra
Marcador de Seção
Ponto de Cue
Fim de Trilha
Andamento
SMPTE offset
Compasso
0x59
0x7F
Geber Ramalho & Osman Gioia
Armadura de Clave
Específico do Seqüenciador
19
Meta Eventos
 Número de Seqüência (MIDI Channel Prefix)
 Evento opcional que deve ocorrer no tempo zero de uma
pista antes de qualquer evento MIDI
 Evento Texto (Text Event)
 Qualquer tipo de texto descritivo podendo ocorrer em
qualquer momento ou trilha
 Direitos Autorais (Copyright Notice)
 Deve conter o formato padrão: , “ano”, “autor”
 Nome da Seqüência ou Trilha (Track Name)
 Quando estiver na primeira trilha especifica o nome da
seqüência, caso contrário especifica o nome da trilha
 Nome único para cada trilha
Geber Ramalho & Osman Gioia
20
Meta Eventos
 Nome do Instrumento (Instrument Name)
 Instrumento que executa a trilha
 Letra (Lyrics)
 Letra da canção, geralmente secionada em sílabas
correspondendo aos tempos de início de cada evento nota
 Marcador de Seção (Marker)
 Deverá estar na primeira trilha e serve como guia de ensaio
ou marcação de seção (refrão, ponte, parte A, etc.)
 Ponto de Cue (Cue Point)
 Texto descritivo de evento temporal multimídia
Geber Ramalho & Osman Gioia
21
Meta Eventos
 Fim de Pista (End of Track)
 Evento obrigatório, deve aparecer como último evento de
uma determinada trilha especificando o seu término.
 Andamento (Set Tempo)
 Andamento inicial ou mudança de andamento normalmente
em microsegundos por semínima (beat)
» Em um arquivo no formato 0, as mudanças de andamento
estarão entremeadas aos outros eventos
» Em um arquivo no formato 1, o mapa de tempos deverá estar
na primeira trilha
» Em um arquivo no formato 2 cada padrão independente
deverá conter pelo menos um andamento inicial
 Se não houver andamento especificado é assumido o valor
de 120 semínimas por minuto (bpm - beats per minute)
Geber Ramalho & Osman Gioia
22
Meta Eventos
 Compasso (Time Signature)
 Formato (4 bytes)
» Numerador:Denominador:Resolução:Fusas/Compasso
» Numerador especifica o numerador do compasso
» Denominador especifica o denominador do compasso em
potência negativa de dois
» Resolução especifica o número de pulsos MIDI por tempo
» Fusas/Compasso especifica o número de fusas em um
compasso
 Obedece às mesmas regras que o Andamento
 Se não for especificado é assumido o compasso 4/4
Geber Ramalho & Osman Gioia
23
Meta Eventos
 SMPTE offset
 Especifica o lapso de tempo a partir do qual a seqüência
deve iniciar a execução
 Deverá estar no tempo zero da primeira trilha, e antes de
qualquer evento MIDI
 A hora deverá estar codificada no formato SMPTE
 Armadura de Clave
 Formato (2 Bytes)
» Tom:Modo
» Tom especifica a tonalidade variando de -7 (sete bemóis - Dó
b Maior ou La b menor) a +7 (sete sustenidos - Dó # Maior ou
La # menor) com o valor 0 igual a Dó Maior ou La menor
» Modo: 0 = Modo Maior e 1 = Modo menor
Geber Ramalho & Osman Gioia
24
Meta Eventos
 Meta Evento Específico de Sequenciador
 Reservado a informações proprietárias de cada fabricante
 O primeiro byte de dados deverá conter o número de
identificação do mesmo.
Geber Ramalho & Osman Gioia
25
Download

smf