Upload
internet
View
151
Download
2
Embed Size (px)
Citation preview
1Geber Ramalho & Osman Gioia
MIDI (continuação)MIDI (continuação)
General MIDI
Arquivos MIDI Standard
2Geber Ramalho & Osman Gioia
General MIDI (GM)General MIDI (GM)
ProblemaUm 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
3Geber Ramalho & Osman Gioia
General MIDIGeneral MIDI
Especificações para os sintetizadoresMí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
4Geber Ramalho & Osman Gioia
General MIDIGeneral MIDI
Pré-alocação dos canaisCanal 4: Melodia
Canal 8: Harmonia
Canal 10: Percussão (único realmente respeitado!!!)
PercussãoO diferentes sons de percussão são associados a números
de nota MIDI específicos
5Geber Ramalho & Osman Gioia
Tabela de Percussão GMTabela de Percussão GM
Nota MIDI Nota Instrumento Nota MIDI Nota Instrumento 35 B 1 Bumbo acústico 59 B 3 Prato condutor 2 36 C 2 Bumbo 1 60 C 4 Bongô agudo 37 C# 2 Baqueta +aro 61 C# 4 Bongô grave 38 D 2 Caixa acústica 62 D 4 Conga aguda abafada 39 D# 2 Palmas 63 D# 4 Conga aguda aberta 40 E 2 Caixa elétrica 64 E 4 Conga grave 41 F 2 Surdo grave 65 F 4 Tímbale agudo 42 F# 2 Contratempo fechado 66 F# 4 Tímbale grave 43 G 2 Surdo agudo 67 G 4 Agogô agudo 44 G#2 Contratempo fechado 68 G# 4 Agogô grave 45 A 2 Tom-tom grave 69 A 4 Cabaça 46 A# 2 Contratempo aberto 70 A# 4 Maracas 47 B 2 Tom-tom médio-grave 71 B 4 Apito curto 48 C 3 Tom-tom médio-agudo 72 C 5 Apito longo 49 C# 3 Prato batido 73 C# 5 Reco-reco curto 50 D 3 Tom-tom agudo 74 D 5 Reco-reco longo 51 D# 3 Prato condutor 75 D# 5 Claves 52 E 3 Prato chinês 76 E 5 Bloco de madeira agudo 53 F 3 Centro do prato 77 F 5 Bloco de madeira grave 54 F# 3 Pandeiro 78 F# 5 Cuíca fechada 55 G 3 Prato espalmado 79 G 5 Cuíca aberta 56 G# 3 Sino de vaca 80 G# 5 Triângulo fechado 57 A 3 Prato batido 2 81 A 5 Triângulo aberto 58 A# 3 Chicote
6Geber Ramalho & Osman Gioia
Especificações GMEspecificaçõ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çãoGM é 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
7Geber Ramalho & Osman Gioia
Mapa de Timbres GMMapa de Timbres GM
8Geber Ramalho & Osman Gioia
Standard MIDI Files (SMF)Standard MIDI Files (SMF)
9Geber Ramalho & Osman Gioia
SMF: Histórico e DefiniçãoSMF: 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)
10Geber Ramalho & Osman Gioia
SMF: Conceitos BásicosSMF: 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 dadosSempre MSB LSB (Big-Endian format)
» Lembrar que processadores Intel seguem padrão little-endian format!
11Geber Ramalho & Osman Gioia
SMF: FormatoSMF: 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 porUm 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
12Geber Ramalho & Osman Gioia
Bloco de CabeçalhoBloco de Cabeçalho
Contém informações sobre Formato, Número de Trilhas e Divisão
Valores Tamanho
Rótulo MThd 4 caracteres (4 Bytes)
Tamanho (em bytes) 00 00 00 06 4 Bytes
Formato 00 00 (Formato 0)00 01 (Formato 1)00 02 (Formato 2)
2 Bytes
Número de trilhas 00 01 (p/ formato 0 e 2)00 01 a FF FF(p/ formato 1)
2 Bytes
Divisão (resolução) 0+15bits (ticks per beat)1+15 bits (frames per second)
2 Bytes
13Geber Ramalho & Osman Gioia
FormatosFormatos
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)
14Geber Ramalho & Osman Gioia
Bloco de TrilhaBloco de Trilha
Observações Igual independente do formato
Os eventos são amazenados usando o running status
Valores Tamanho
Rótulo MTrk 4 caracteres (4 Bytes)
Tamanho (em bytes) 00 00 00 00 - FF FF FF FF 4 Bytes
Eventos Eventos, Meta-eventos e SysEx
15Geber Ramalho & Osman Gioia
TimestampsTimestamps
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
16Geber Ramalho & Osman Gioia
Parêntese sobre o timestamp...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)
17Geber Ramalho & Osman Gioia
Eventos MIDIEventos 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
18Geber Ramalho & Osman Gioia
Rótulo Tipo Tamanho Dados
0xFF 0 - 127 Número de Bytes de Dados Bytes de Dados
Meta EventosMeta Eventos
RótuloMeta Eventos sempre iniciam com o identificador 0xFF
Tipo14 tipos da tabela a seguir
TamanhoQuantidade de bytes de dados armazenado em número
com tamanho variável, se não existirem dados, Tamanho = 0
DadosBytes de dados pertinentes ao tipo de evento em questão
19Geber Ramalho & Osman Gioia
Meta EventosMeta Eventos
Tipo Dados Descrição0x00 2 bytes Número de Seqüencia0x01 Variável Evento Texto0x02 Variável Direitos Autorais
0x03 Variável Nome da Seqüência ou Trilha
0x04 Variável Nome do Instrumento0x05 Variável Letra
0x06 Variável Marcador de Seção0x07 Variável Ponto de Cue0x2F 0 bytes Fim de Trilha0x51 3 bytes Andamento0x54 Hora:Minuto:Segundo:Frames:Divisão SMPTE offset0x58 Numerador:Denominador:Resolução:
Fusas/CompassoCompasso
0x59 Tom:Modo Armadura de Clave0x7F Variável Específico do Seqüenciador
20Geber Ramalho & Osman Gioia
Meta EventosMeta 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
21Geber Ramalho & Osman Gioia
Meta EventosMeta 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
22Geber Ramalho & Osman Gioia
Meta EventosMeta 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)
23Geber Ramalho & Osman Gioia
Meta EventosMeta 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
24Geber Ramalho & Osman Gioia
Meta EventosMeta Eventos
SMPTE offsetEspecifica 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 ClaveFormato (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
25Geber Ramalho & Osman Gioia
Meta EventosMeta 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.