ndice
0. Introduccin al MIDI
1. Especificacin MIDI
o 1.1. Hardware de conexin
o 1.2. Conceptos Bsicos
o 1.3. Tipos de estados
o 1.4. Tipos de mensajes
o 1.5. Mensajes de modo de canal
o 1.6. Mensajes de voces de canal
o 1.7. Mensajes de sistema comunes
o 1.8. Mensajes de sistema de tiempo real
o 1.9. Mensajes de sistema exclusivos
2. Aparatos MIDI
o 2.1. Visin general
o 2.2. Teclado Mudo
o 2.3. Pedales y palancas MIDI
o 2.4. Secuenciador
o 2.5. Lanzadores
o 2.6. Arpegiadores y armonizadores
o 2.7. Generador de sonidos sintetizados (sintetizador)
o 2.8. Generador de sonidos basado en grabaciones (sampler)
o 2.9. Caja THRU
o 2.10. Filtro MIDI
o 2.11. Canalizador MIDI
o 2.12. Monitor MIDI
o 2.13. Multiprocesador
3. General MIDI
o 3.1. Introduccin
o 3.2. Instrumentos General MIDI
o 3.3. Kit de percusin General MIDI
o 3.4. Controles General MIDI
o 3.5. Recomendaciones para los sistemas General MIDI
4. Archivos Standard MIDI (SMF)
o 4.1. Visin general
o 4.2. Chunk de cabecera
o 4.3. Chunk de pista
o 4.4. Metaeventos
5. Ampliaciones de MIDI 1.0
Bibliografa, Links y Referencias
0. Introduccin al MIDI
MIDI es un protocolo de comunicacin digital entre instrumentos musicales que se empez a usar
en los 70 y que ya hace tiempo que esta consolidado como la interfaz entre instrumentos por
excelencia.
Lo que se enva por MIDI no es el sonido que producen los instrumentos, sino los eventos: Cuando
se pulsa una nota, cuando se vara un control... Permite sincronizar y secuenciar instrumentos,
almacenar una interpretacin para su posterior edicin y reproduccin...
La ventaja del MIDI es que es un estndar muy establecido y que la mayora de aparatos musicales
tienen algn tipo de interfaz MIDI. Pero, esta es, al parecer, su nica ventaja, pues, en todos los
sentidos, el MIDI limita por anticuado: polifona, nmero de aparatos, conectividad, longitud del
cableado, ancho de banda... Esto provoca, a menudo, que cada fabricante establezca su propia
ampliacin del estndar aunque, por suerte, mantienen, la compatibilidad con el MIDI bsico.
1. Especificaciones MIDI
1.1. Hardware de conexin
Interfaz serie: A 31,250 Kb/s (1% de tolerancia) asncrono con un start bit, ocho bits de datos
empezando por el menos significativo y un stop bit, sin bit de paridad. Se realiza por bucle de
corriente: 5 mA -> zero lgico y 1uA -> uno lgico. Entradas optoaisladas con un tiempo de
respuesta de 2ns o menor.
Conectores: DIN de 5 pins (180o). Se utilizan 3: In(4), Out(5) y massa(2). La longitud mxima del
cable es de 15 metros y tiene que ser trenzado y apantallado con la pantalla conectada al pin 2 en
ambos extremos. Las patillas 1 y 3 se dejan sin conectar.
Puertos MIDI.
Los elementos MIDI se conectan mediante tres tipos de puertos.
Configuraciones tpicas:
Cadena: Lo que enva el director lo interpretan todos pero lo que se toca en los otros no es
enviado a los dems.
Bucle: Los dispositivos envan informacin al director y este la distribuye posteriormente.
Se utiliza mucho en composicin cuando el director es, por ejemplo, un ordenador que
almacena lo que interpreta un instrumento, y, despus de editarlo, se devuelve al
instrumento para escuchar el reculado.
Estrella: En cadenas muy largas, se suelen producir errores de comunicacin y retardos.
Un director, con ms de una salida, que enva mensajes por cada una de ellas a un
dispositivo diferente reduce la longitud de las cadenas.
Hbridos Se pueden combinar hasta la saciedad. Cada situacin tiene su configuracin
apropiada.
De modo: Se envan por el canal bsico del instrumento y son los que definen la respuesta
a los mensajes de voz.
Mensajes de sistema: Son los que no se ligan a un canal. Los 4 bits altos de byte de estado estn a
uno y los bajos indican el comando.
Estado Cambio de programa (1100nnnn): Solo necesita un byte de datos que indica un
programa del 0 al 127.
Estado Presin de canal (1101nnnn): Es similar al de Pulsacin de teclado polifnico pero afecta
a todas las notas del canal especificado. Por lo tanto solo requiere un byte de datos, el de presin.
Estado Modificacin del pitch (1110nnnn): De los dos bytes de datos que necesita, el primero es
el byte menos significativo y el segundo el mas significativo. El valor central del pitch es 2000h y
la sensibilidad de variacin del pitch se selecciona en el receptor.
Mensaje de seleccin de cancin (11110011): Un solo byte de datos indica el nmero de cancin
que ser interpretada una vez llegue el mensaje de tiempo real de inicio.
Mensaje de requerimiento de entonacin (11110110): Lo utilizan los sintetizadores analgicos
(que tiempos aquellos...) para sintonizar sus osciladores. No llego a ver claro su funcin, pero si
algn DIA te las tienes que ver con un analgico y te enteras, no estara de ms que me lo
explicases.
Mensaje de fin de exclusivo (11110111): Se utiliza para finalizar los mensajes de sistema
exclusivos aunque dicha funcin la puede realizar cualquier otro byte de estado que no sea de
tiempo real. No tiene bytes de datos.
NB: Los mensajes comunes de sistema 11110100 y 11110101 son estados no definidos en la norma
hasta una futura ampliacin.
(coarse)
(coarse)
(coarse)
(coarse)
(coarse)
(coarse)
(coarse)
(coarse)
(coarse)
(coarse)
(coarse)
Slider
Slider
Slider
1
2
3
Ajuste LSB
20
21
22
24
25
Bank
Select
Modulation
Wheel
Breath
controller
Foot
Pedal
Portamento
Time
(fine)
(fine)
(fine)
(fine)
(fine)
26
Data
Entry
27
Volume
28
Balance
2A
Pan
position
2B
Expression
2C
Effect
Control
1
2D Effect Control 2 (fine)
(fine)
(fine)
(fine)
(fine)
(fine)
(fine)
Interruptores
40
Hold
Pedal
41
Portamento
42
Sustenuto
Pedal
43
Soft
Pedal
44
Legato
Pedal
45 Hold 2 Pedal (on/off)
(on/off)
(on/off)
(on/off)
(on/off)
(on/off)
Level
Level
Level
Level
Parmetros
60
Data
Button
increment
61
Data
Button
decrement
62 Non-registered Parameter (fine)
63 Non-registered Parameter (coarse)
64
Registered
Parameter
(fine)
65 Registered Parameter (coarse)
Modo de canal
78
All
Sound
Off
79
All
Controllers
Off
7A
Local
Keyboard
(on/off)
7B
All
Notes
Off
7C
Omni
Mode
Off
7D
Omni
Mode
On
7E
Mono
Operation
7F Poly Operation
2. Aparatos MIDI
2.1. Visin general
A parte de los instrumentos, los generadores de sonido y los secuenciadores, existen otros
elementos ms discretos, pero igual de tiles en una configuracin MIDI, gracias a los cuales
podemos sacarle un mayor partido.
Hoy en da muchos de los elementos aqu citados, suelen estar acoplados entre si en una sola
unidad. El ejemplo mas claro de esto es el ordenador que, gracias a su versatilidad, prcticamente,
puede hacer las funciones de cualquier elemento MIDI. Aun asi, no siempre se amortiza un equipo
que haga demasiadas funciones.
Los elementos pueden hacer tres tipos de funciones:
2.4. Secuenciador
Un secuenciador permite generar secuencias MIDI en fro para reproducirlas despus de forma
sincronizada. Por lo general, el aparato ofrece la posibilidad de crear la secuencia con un mtodo
que consiste en llenar los espacios de un comps con determinadas notas. No tenemos, pues, que
interpretarla con un instrumento.
Esta claro que si nos ceimos a los 16 espacios que suele tener el secuenciador y a poner o no una
nota, se limita mucho la expresividad de las secuencias por lo que, adems se nos permite variar
varios parmetros de cada uno de los 16 slots: Retardo, si se prolonga al siguiente slot, si hay un
slide o el valor de uno o varios controles del generador de sonidos.
Tambin existen los llamados DNA. Un DNA es una serie de parmetros de retardo, nfasis... que
se recogen a partir de un intrprete real y que se aplican a la secuencia en cuestin. Dan mucha
mas personalidad dado que cada intrprete y cada estilo tienen su propio DNA. Tan solo tengo
noticias de DNA's aplicados a las secuencias de percusin, pero pronto se aplicaran tambin a otro
tipo de secuencias.
2.5. Lanzadores
Un lanzador es un modulo que almacena secuencias MIDI y que, a una seal de el interprete, lanza
una o otra secuencia a la cadena. El modulo que hace de lanzador, suele permitir guardar las
secuencias en un soporte no voltil.
La funcin de lanzador de secuencias suele estar en el teclado o en el ordenador.
2.13. Multiprocesador
Los multiprocesadores son aparatos programables basados en un microprocesador. Estos aparatos
permiten realizar cualquier tipo de proceso a la secuencia de mensajes MIDI que nuestra habilidad
como programadores nos permita.
Hoy en da este tipo de tarea la suele realizar un ordenador, pero a veces, un ordenador tiene un
tiempo de respuesta (latencia MIDI) excesivo para que la secuencia no se demore demasiado.
Un ordenador tiene, a menudo, otras cosas a las que atender y se produce lo que se llama una alta
latencia MIDI, es decir, se tarda demasiado en responder. Por eso, a veces, es aconsejable dedicar
uno de estos pequeos procesadores exclusivamente al proceso MIDI.
3. General MIDI
3.1. Introduccin
General MIDI es un estndar, aadido a MIDI, que intenta garantizar que la msica realizada en un
equipo de un fabricante se pueda interpretar en otro equipo de un fabricante diferente y suene de
forma similar a como fue concebido.
Un dispositivo General MIDI ha de cumplir los siguientes requisitos:
Los canales del 1 al 16 han de tener una polifona mnima de 24 voces cada uno.
El canal 10 reservado para instrumentos de percusin y el resto para los meldicos.
Los nmeros de programa asociados a un conjunto estndar de 128 instrumentos.
Un kit de percusin estndar para usar en el canal 10.
Reconocer como mnimo un subconjunto de controles de los controles recomendados.
Ha de ser sensible a la velocidad.
Recorrido de la rueda picht bend de +/- 2 semitonos.
percusin Cromtica
04 Rhodes Piano
05 Chorused Piano
06 Harpsichord
07 Clavinet
rganos
10 Hammond Organ
11 Percussive Organ
12
Rock
Organ
13 Church Organ
14 Reed Organ
15
Accordion
16
Harmonica
17 Tango Accordion
Lengetas
18 Acoustic Guitar1
19 Acoustic Guitar2
1A Electric Guitar1
1B Electric Guitar2
1C Electric Guitar3
1D Overdrive Guitar
1E Distortion Guitar
1F Guitar Harmonics
Cuerda
24 Slap Bass 1 28
Violin
25 Slap Bass 2 29
Viola
26 Synth Bass 1 2A
Cello
27 Synth Bass 2
2B Contrabass
Ensemble
30 String Ensemble1
31 String Ensemble2
32
SynthStrings
1
33 SynthStrings 2
0C
Marimba
0D
Xylophone
0E Tubular Bells
0F Dulcimer
Guitarra
Bajo
20
Acoustic
Bass
21 Electric Bass 1
22 Electric Bass 2
23 Fretless Bass
08
Celesta
09 Glockenspiel
0A Music box
0B Vibraphone
2C Tremolo Strings
2D Pizzicato StringS
2E Orchestral Harp
2F Timpani
Metales
34 Choir Aahs
35 Voice Oohs
36 Synth Voice
37 Orchestra Hit
38
Trumpet
39
Trombone
3A
Tubah
3B Muted Trumpet
Tubos
3C French Horn
3D Brass Section
3E Synth Brass 1
3F Synth Brass 2
40
Soprano
41
Alto
42
Tenor
43 Baritone Sax
Sax
Sax
Sax
44
Oboeh18
45 English Horn
46
Bassoon
47 Clarinet
Sintetizador solista
50 Lead 1 square
51 Lead 2 sawtooth
52 Lead 3 caliope
53 Lead 4 chiff
54 Lead 5 charang
55 Lead 6 voice
56 Lead 7 fifths
57 Lead 8 brass
5C Pad 5 bowed
5D Pad 6 metallic
5E Pad 7 halo
5F Pad 8 sweep
Etnicos
64 FX 5 brightness
65 FX 6 goblins
66 FX 7 echoes
67 FX 8 sci-fi
percusin
70
Tinkle
Bell
71
Agogo13
72
Steel
Drums
73 Woodblock
4C Bottle Blow
4D Shakuhachi
4E
Whistle
4F Ocarina
Sintetizador Acompaamiento
Sintetizador Efectos
60
FX
1
rain
61 FX 2 soundtrack
62
FX
3
crystal
63 FX 4 atmosphere
48
Piccolo
49
Flute13
4A
Recorder
4B Pan Flute
68
Sitar4
69
Banjo5
6A
Shamisen
6B Kotoh7
6C
Kalimba
6D
Bagpipe
6E
Fiddlet
6F Shanai0
Efectos
74 Taiko Drum
75 Melodic Tom
76 Synth Drum
77 Reverse Cymbal
78 Guitar FretNoise
79 Breath Noise
7A
Seashore
7B Bird Tweet
7C Telephone Ring
7D
Helicopter
7E
Applause
7F Gunshot
Sonido Asociado
Voz
Sonido Asociado
35
59
Ride Cymbal 2
36
Bass Drum 1
60
Hi Bongo
37
Side Stick
61
Low Bongo
38
Acoustic Snare
62
Mute Hi Conga
39
Hand Clap
63
Open Hi Conga
40
Electric Snare
64
Low Conga
41
65
High Timbale
42
Closed Hi-Hat
66
Low Timbale
43
HighFloorTom
67
High Agogo
44
Pedal Hi-Hat
68
Low Agogo
45
Low Tom
69
Cabasa
46
Open Hi-Hat
70
Maracas
47
Low-Mid Tom
71
Short Whistle
48
Hi-Mid Tom
72
Long Whistle
49
Crash Cymbal 1
73
Short Guiro
50
High Tom
74
Long Guiro
51
Ride Cymbal 1
75
Claves
52
Chinese Cymbal
76
Hi Wood Block
53
Ride Bell
77
54
Tambourine
78
Mute Cuica
55
Splash Cymbal
79
Open Cuica
56
Cowbell
80
Mute Triangle
57
Crash Cymbal 2
81
Open Triangle
58
Vibraslap
Comentarios
Modulation
Main Volume
10
Pan
11
Expression
64
Sustain
121
123
Si se incluyen los parmetros de afinacin, la afinacin inicial deber ser la referencia estndar:
440 Hz para el La medio.
Recomendaciones sobre mensajes exclusivos de sistema:
General MIDI On:
0xF0
0x7E
[dd]
0x09
0x01
0xF7
0xF0
0x7E
[dd]
0x09
0x02
0xF7
Roland GS Mode: F0 41 10 42 12 40 00 7F 00 41 F7
GM Master Volume: F0 7F 7F 04 01 ll mm F7 (ll=LSB, mm=MSB - use 7F 7F for
maximum volume)
GM Master Balance: F0 7F 7F 04 02 ll mm F7 (ll=LSB, mm=MSB - use 00 40 for centre
balance)
NOTA: Los cambios de volumen y balanceado como SysEx se difieren del cambio de control en
que los controles se refieren al canal y los SysEx al dispositivo.
0 Pista nica.
1 Pista Mltiple sncrona. Todas las pistas empiezan al mismo tiempo y llevan el mismo
reloj.
2 Pista Mltiple asncrona. Cada pista puede empezar cuando quiera y adems tiene un
clock propio.
Los siguientes dos bytes codifican el numero de pistas del fichero y los dos ltimos el numero de
tiempos de delta por cuarto de nota cuyo significado se vera mas adelante.
Los chunks de pista tienen el identificador 'MTrk'. Una vez indicada la longitud del chunk vienen
los eventos MIDI. Cada evento MIDI viene precedido por un tiempo de delta que tiene que pasar
antes de enviarlo.
Dicho tiempo de delta se especifica de la siguiente manera: Se divide el nmero de deltas en
palabras de 7 bits. Se completa cada palabra con el bit 7 (el mas significativo) para tener bytes
completos. El bit 7 ser 1 en todas las palabras menos en la palabra menos significativa que valdr
0. En el fichero las palabras se colocan de mas a menos significativas de tal forma que, cuando
leamos la menos significativa (bit 7=0), sabemos que ha acabado la delta y empieza un evento. El
ultimo evento de cada track ha de ser el (meta) evento 2Fh 00h.
4.4. Metaeventos
Los metaeventos son eventos utilizados en los SMF que no estn definidos en el estndar MIDI.
Siguen el formato:
FF xx nn dd...
Empiezan todos con FF (11111111) seguido del identificador del comando (xx), la longitud de los
datos en bytes (nn) y los datos propiamente dichos (dd...)
Cuidado: Estos mensajes no se deben de enviar a la ligera por el puerto MIDI pues un FF significa
un Reset del sistema.
Aqu tenis algunos de los ms utilizados:
Hex Binary
Data
Description
00
00000000 nn ssss
Nmero de Track.
nn=02 (length of 2-byte sequence number)
ssss=sequence number
01
00000001 nn tt ...
Evento de Texto
nn=length in bytes of text
tt=text characters
02
00000010 nn tt ...
Informacin de Copyright.
nn tt=same as text event
03
00000011 nn tt
04
00000100 nn tt
05
00000101 nn tt
Letra de la cancin.
nn tt=same as text event
06
00000110 nn tt
Marcador.
nn tt=same as text event
07
00000111 nn tt
Cue point
nn tt=same as text event
2F
00101111 00
Finalizador de track.
51
01010001 03 tttttt
58
59
01011001 02 sf mi
Key signature
sf=sharps/flats (-7=7 flats, 0=key of C, 7=7 sharps)
mi=major/minor (0=major, 1=minor)
7F
01111111 xx dd
Frames/segundo Usado en
24
Cine
25
video Europeo (Sistema PAL)
30 (non drop)
Audio
29,97 (30 drop) Video USA (Sistema NTSC)
NOTA: El formato 3 de SMPTE es un poco mas complejo que los otros, pues no se trata de un
nmero entero de frames por segundo. Lo que se hace es contar 30 frames pero colarnos (drop) los
dos primeros frames de cada minuto excepto si el minuto es mltiple de 10 que no nos saltamos
ninguno. Esto da una media de 29.97 frames/minuto.
Para formar una trama MTC completa utilizamos de 8 mensajes MTC (F1h). Se enva una trama
completa cada dos frames, por tanto, un mensaje cada cuarto de frame. El byte de datos del
mensaje MTC tiene el formato 0nnnxxxx donde:
nnn Significado de xxxx
0
4 bits bajos de Frames
1
2
3
4
5
6
7
Tambin se pueden especificar bits de usuario de SMPTE. Algunos dispositivos SMPTE los
utilizan para propsitos propios. En principio, estn pensados para almacenar 8 dgitos decimales
que podran tener el contador de vueltas en una cinta, por ejemplo.
Mensaje de especificacin de bits de usuario
0xF0
0x7F
[dd]
0x01
0x02
[u1]
[u2]
[u3]
[u4]
[u5]
[u6]
[u7]
[u8]
[u9]
0xF7
Los bits 'i' son Flags y los otros son datos que estn pensados para representar dgitos decimales
por eso los cuatro bits de arriba estn a 0: para representar un digito decimal de 0 a 9 solo hace
falta 4 bits.
Esta extensin permite acceder a la afinacin de cada una de las voces de cada programa de un
dispositivo MIDI. Una tabla de afinacin consiste en una lista de valores de afinacin para cada
voz MIDI de un programa.
La afinacin de cada voz se codifica con 3 bytes. Como son bytes de datos (7 bits tiles) tenemos
un margen de 21 bits por nota. El primero de los 3 bytes indica la nota por encima de la que se
afina, los dos bytes siguientes son un nmero positivo que subdividen el intervalo entre esa nota y
el siguiente semitono ms agudo en 214 divisiones. Tenemos una precisin tal que se nos permite
ajustar la afinacin 0'006125 centsimas de semitono.
Mensaje de requerimiento de volcado de las tablas de afinacin:
0xF0
0x7E
[dd]
0x08
0x00
[pp]
0xF7
Este mensaje se puede utilizar tanto para extraerlas como para cambiarlas dependiendo de quien lo
enve.
El valor de Checksum se calcula haciendo la XOR de todos los bytes de datos hasta antes del
propio checksum.
Mensaje de cambio de afinacin de voces concretas:
0xF0
0x7F
[dd]
0x08
0x02
[pp]
[nn]
[data]
0xF7
Hay que tener en cuenta que en este mensaje es necesario indicar la voz a la que pertenece cada
dato de afinacin. En los mensajes de volcado no era necesario pues se enviaba toda la tabla
ordenada.
Los 'cue' son puntos de inters que se insertan en la representacin. Los cues se colocan en
diversos puntos a lo largo del tiempo, por lo que van de la mano del MIDI Time Code. Consiste en
un conjunto de 14 mensajes que permiten posicionarlos para cualquier dispositivo compatible.
Utiliza el protocolo SysEx Universal RealTime 05h.
MIDI File Dumps
Es una extensin del protocolo que estandariza la forma de transmitir ficheros va MIDI. Las
aplicaciones ms directas son la transmisin de ficheros MIDI, samples en formato propietario (no
compatible con SDS) o cualquier tipo de informacin de configuracin. Cada fabricante
implementaba su forma de hacerlo por lo que se estableci, finalmente, este estndar.
Utiliza el protocolo SysEx Universal Non-RealTime 07h.
MIDI Show Control
Esta extensin pretende dar herramientas para controlar, de una forma estndar, equipo, que pese a
no ser musical, forme parte de una representacin: Luces, fuegos artificiales, aparatos de video,
maquinaria de escenario...
Utiliza el protocolo SysEx Universal RealTime 02h.
MIDI Machine Control
Es un protocolo de mensajes exclusivos de sistema universales para controlar sistemas de
produccin multimedia. Tiene bastantes vas de expansin futura, aunque actualmente solo
estandariza como controlar sistemas de audio y video.
Utiliza los protocolos SysEx Universal RealTime 06h (comandos) y SysEx Universal RealTime
07h (respuestas).