Está en la página 1de 5

Manejo de MIDIS

Contenido
Manejo de MIDIS ........................................................................................................................................ 1
1. Secciones del MIDI ............................................................................................................................. 1
2. Datos de Cabecera ............................................................................................................................. 2
2.1 Divisin de Tiempo ....................................................................................................................... 2
3. Datos de Tracks .................................................................................................................................. 2
3.1 Eventos del Track ......................................................................................................................... 3
3.1.1 Longitud Variable .................................................................................................................. 3
3.1.2 Eventos MIDI ......................................................................................................................... 4
3.1.3 Meta Eventos ........................................................................................................................ 4
Apndice..................................................................................................................................................... 4
Valores Hexadecimales y Binario - Decimal ........................................................................................... 4
Operaciones binarias .............................................................................................................................. 5

1. Secciones del MIDI


El MIDI se maneja en bsicamente en dos Chunks, los de Cabecera y de Tracks. Solo hay una cabecera,
en cambio se puede tener ms de un Track de datos.
Secciones del MIDI
Datos de Cabecera
Datos de Track 1
...

Datos de Track N

2. Datos de Cabecera
A continuacin se muestran los datos que forman la cabecera, para ellos se utilizan los primeros 14 Bytes.
Datos de Cabecera MIDI
ndice

Datos

Tamao

0x00

MThd

4 bytes

MThd (0x4D546864)

0x04

Tamao de Cabecera

4 bytes

Siempre 6. Son los 3 renglones siguientes

0x08

Tipo

2 bytes

3 tipos. Valores del 0 - 2

0x10

Numero de Tracks

2 bytes

1 - 65535

0x12

Divisin de Tiempo

2 bytes

2 tipos

El tipo de MIDI puede ser de 3 tipos, el valor 0 es un Track Simple, mientras que el valor 1 es MultiTrack Paralelo y 2 Multi-Track Serial (Convendra ahondar ms).

2.1 Divisin de Tiempo


La divisin de tiempo puede ser de dos tipos Ticks por Beats o SMPTE Frames por Segundo. Se
utilizan 2 Bytes o 16 bits para identificarlo. El bit ms significativo identifica el tipo de tiempo
Divisin de Tiempo
1 Bytes

1 Bytes

Bit 15

Del 14 al 8

Formato Ticks por beats

Formato SMPTE

Del 7 al 0

Ticks por Frames

Si es bit ms significativo es 0 entonces es Ticks por segundo y los 15 bit menos significativos indican
el valor, o sera igual tomar los 2 Bytes completos, dado que el valor ms significativo es 0.
Si el bit ms significativo es 1, entonces es SMPTE , los valores del 14 a 8 nos dan los 4 valores
estndares de SMPTE, que pueden ser: 24, 25, 29 o 30. El Byte menos significativo (7 al 0), nos da la
unidades por frames, sus valores tpicos son 8, 10, 80 o 100.

3. Datos de Tracks
Considerando que tenga al menos un Track, los datos de este comienzan a partir del 14 byte. Si tiene
ms de uno este mismo formato se repite despus de terminar el tamao del primer track.

Datos de Track MIDI


ndice

Datos

Tamao

0x14

MTtk

4 bytes

MTtk (0x4D546864)

0x18

Tamao del Track

4 bytes

Nos da el tamao del 1 Track

0x22

Evento del Track

bytes

0x..

...

bytes

0xnn

Evento del Track n

bytes

3.1 Eventos del Track


Con el fin de ahorrar espacio se utilizar longitudes variables en el tiempo, por lo que en veces no existe
un tamao fijo para los eventos del MIDI, pero su estructura es similar esta:
Evento del Track = <Tiempo variable + Evento MIDI> | <Meta Evento> | <Evento del Sistema>
Eventos del Track
<Tiempo variable>

Utiliza longitudes variables para indicar el tiempo.

<Evento MIDI>

Nos indica la accin que se tomara (Ver Tabla de


Eventos MIDIs)

<Meta Evento>

Sin varios indicadores, que proporcionan


informacin (Ver tabla de Meta Eventos)

<Evento del Sistema>

Son eventos exclusivos del sistema, solo existen


dos:

0xF0 + <data_bytes>, los datos MIDIs


incluyen el 0xF0
0xF7 + <data_bytes>, los datos MIDIs
0xF0 son omitidos.

3.1.1 Longitud Variable


Cuando ocurre una longitud variable, se toma el byte ms significativo.
Si el byte ms significativo es 0, entonces es no variable, los 7 bits menos significativos del Byte tomaran,
tomaran el papel del valor y finaliz.
Si es 1 entonces ser de longitud variable. Los 7 bits menos significativos del Byte tomaran el papel del
valor. El bit 8 se ignora. El sguete Byte formara parte del valor sumndolo, volviendo a repetir el proceso

para comprobar si es de valor variable y terminara hasta encontrar un valor 0 en el bit ms significativo
del siguiente Byte. Ejemplo:
Longitud Variable
Hex

Valor Binario

Suma

Valor Decimal

01111111

64 + 32 + 16 + 8 + 4 + 2 + 1

127

0x81 0x7F

10000001 01111111

128 + 64 + 32 + 16 + 8 + 4 + 2 + 1

255

0x82 0x81
0x01

10000010 10000001
00000001

32768 + 128 + 1

32897

0x7F

Todo valor por debajo de 0x7F (hexadecimal) 127 (Decimal) es de longitud no variable.
3.1.2 Eventos MIDI
3.1.3 Meta Eventos
Los meta eventos son una lista de etiquetas proporcionan informacin, pueden ser textos, tiempos o
claves de partituras, etc.

Apndice
Valores Hexadecimales y Binario - Decimal
Tabla de Valores Hexadecimales
Dec

Hex

Dec

Hex

10

11

12

13

14

15

Valor Decimal Binario

Posicin
Valor

16

15

14

13

12

11

10

32768

16384

8192

4096

2048

1024

512

256

128

64

32

16

1 Byte

Tamao

Operaciones binarias
Operaciones de tipo | para manejo de operaciones binarias.
Tabla de OR o |
1

1 Byte

También podría gustarte