-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmidispec.html
More file actions
1213 lines (1140 loc) · 67.3 KB
/
midispec.html
File metadata and controls
1213 lines (1140 loc) · 67.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<HTML lang="en">
<HEAD>
<META charset="utf-8">
<META NAME="description" CONTENT="MIDI File Format Spec. 1.1+">
<META NAME="keywords" CONTENT="MIDI, file, format, specification, updated">
<TITLE>Standard MIDI file format, updated</TITLE>
<link rel="shortcut icon" href="../favicon.ico">
<LINK rel="stylesheet" type="text/css" href="../style.css">
</HEAD>
<BODY>
<header>
<h2>MIDIMUSIC<span> Computer Processed Music</span></h2>
</header>
<nav>
<ul>
<li><a href="../index.html">Index</a></li>
<li><a href="../joplin/index.html">Scott Joplin Music</a></li>
<li><a href="../wurlitzer/index.html">Wurlitzer Music</a></li>
<li><a href="../tech/index.html">Technical</a></li>
<li><a href="../literature/index.html">Literature</a></li>
<li><a href="../estey/index.html">Estey Organ Music</a></li>
<li><a href="../about/index.html">About MidiMusic</a></li>
</ul>
</nav>
<article>
<ol class="crumb">
<li><a href="../index.html">Index</a></li>
<li><a href="index.html">Technical</a></li>
<li>Midi File Specification</li>
</ol>
<H1>Standard MIDI-File Format Spec. 1.1, updated</H1>
<H2>Abstract.</H2>
A detailed Specification of the Standard MIDI file format
<H1>Table of Contents</H1>
<P>
<UL>
<LI><A HREF="#BM0_">0 - Introduction</A>
<LI><A HREF="#BM1_">1 - Sequences, Tracks, Chunks: File Block Structure</A>
<UL>
<LI><A HREF="#BM1_1">1.1 - Variable Length Quantity</A>
<LI><A HREF="#BM1_2">1.2 - Files</A>
<LI><A HREF="#BM1_3">1.3 - Chunks</A>
<LI><A HREF="#BM1_4">1.4 - Chunk Types</A>
</UL>
<LI><A HREF="#BM2_">2 - Chunk Descriptions</A>
<UL>
<LI><A HREF="#BM2_1">2.1 - Header Chunks</A>
<LI><A HREF="#BM2_2">2.2 - MIDI File Formats 0,1 and 2</A>
<LI><A HREF="#BM2_3">2.3 - Track Chunks</A>
</UL>
<LI><A HREF="#BM3_">3 - Meta-Events</A>
<UL>
<LI><A HREF="#BM3_1">3.1 - Meta Event Definitions</A>
</UL>
<LI><A HREF="#BMA1_">Appendix 1</A> - MIDI Messages
<UL>
<LI><A HREF="#BMA1_1">Appendix 1.1</A> - Table of Major MIDI Messages
<LI><A HREF="#BMA1_2">Appendix 1.2</A> - Table of MIDI Controller Messages (Data Bytes)
<LI><A HREF="#BMA1_3">Appendix 1.3</A> - Table of MIDI Note Numbers
<LI><A HREF="#BMA1_4">Appendix 1.4</A> - General MIDI Instrument Patch Map
<LI><A HREF="#BMA1_5">Appendix 1.5</A> - General MIDI Percussion Key Map
</UL>
<LI><A HREF="#BMA2_">Appendix 2</A> - Program Fragments and Example MIDI Files
</UL>
<H3>Acknowledgement:</H3>
This document was originally distributed in text format by The International
MIDI Association. I have updated it and added new Appendices.<BR>
© Copyright 1999 David Back.<BR>
Web: <A HREF="http://midimusic.github.io">http://midimusic.github.io</A><BR>
This document may be freely copied in whole or in part provided the copy contains this
Acknowledgement.
<P>
<H3><A id="BM0_">0 - Introduction</A></H3>
<P>This document details the structure of MIDI Files. The
purpose of MIDI Files is to provide a way of interchanging
time-stamped MIDI data between different programs on the same or
different computers. One of the primary design goals is compact
representation, which makes it very appropriate for disk-based
file format, but which might make it inappropriate for storing in
memory for quick access by a sequencer program.
<P>MIDI Files contain one or more MIDI streams, with time
information for each event. Song, sequence, and track structures,
tempo and time signature information, are all supported. Track
names and other descriptive information may be stored with the
MIDI data. This format supports multiple tracks and multiple
sequences so that if the user of a program which supports
multiple tracks intends to move a file to another one, this
format can allow that to happen.
<P>The specification defines the 8-bit binary data stream used in the
file. The data can be stored in a binary file, nibbilized,
7-bit-ized for efficient MIDI transmission, converted to Hex
ASCII, or translated symbolically to a printable text file. This
spec addresses what's in the 8-bit stream. It does not address
how a MIDI File will be transmitted over MIDI.
<H3><A id="BM1_">1 - Sequences, Tracks, Chunks: File Block Structure</A></H3>
<P>In this document, bit 0 means the least significant bit of a
byte, and bit 7 is the most significant.
<H3><A id="BM1_1">1.1 - Variable Length Quantity</A></H3>
<P>Some numbers in MIDI Files are represented in a form called
VARIABLE-LENGTH QUANTITY. These numbers are represented 7 bits
per byte, most significant bits first. All bytes except the last
have bit 7 set, and the last byte has bit 7 clear. If the number
is between 0 and 127, it is thus represented exactly as one byte.
<P><B>Some examples of numbers represented as variable-length quantities:</B>
<P>
<TABLE class="joplin">
<TR><TD>00000000 </TD><TD>00</TD></TR>
<TR><TD>00000040 </TD><TD>40</TD></TR>
<TR><TD>0000007F </TD><TD>7F</TD></TR>
<TR><TD>00000080 </TD><TD>81 00</TD></TR>
<TR><TD>00002000 </TD><TD>C0 00</TD></TR>
<TR><TD>00003FFF </TD><TD>FF 7F</TD></TR>
<TR><TD>00004000 </TD><TD>81 80 00</TD></TR>
<TR><TD>00100000 </TD><TD>C0 80 00</TD></TR>
<TR><TD>001FFFFF </TD><TD>FF FF 7F</TD></TR>
<TR><TD>00200000 </TD><TD>81 80 80 00</TD></TR>
<TR><TD>08000000 </TD><TD>C0 80 80 00</TD></TR>
<TR><TD>0FFFFFFF </TD><TD>FF FF FF 7F</TD></TR>
</TABLE>
<P>The largest number which is allowed is 0FFFFFFF so that the
variable-length representations must fit in 32 bits in a routine
to write variable-length numbers. Theoretically, larger numbers
are possible, but 2 x 10<SUP>8</SUP> 96ths of a beat at a fast tempo of 500
beats per minute is four days, long enough for any delta-time!
<H3><A id="BM1_2">1.2 - Files</A></H3>
To any file system, a MIDI File is simply a series of
8-bit bytes. On the Macintosh, this byte stream is stored in the
data fork of a file (with file type 'MIDI'), or on the Clipboard
(with data type 'MIDI'). Most other computers store 8-bit byte
streams in files.
<H3><A id="BM1_3">1.3 - Chunks</A></H3>
MIDI Files are made up of -chunks-. Each chunk has a
4-character type and a 32-bit length, which is the number of
bytes in the chunk. This structure allows future chunk types to
be designed which may be easily be ignored if encountered by a
program written before the chunk type is introduced. Your
programs should EXPECT alien chunks and treat them as if they
weren't there.
<P>Each chunk begins with a 4-character ASCII type. It is
followed by a 32-bit length, most significant byte first (a
length of 6 is stored as 00 00 00 06). This length refers to the
number of bytes of data which follow: the eight bytes of type and
length are not included. Therefore, a chunk with a length of 6
would actually occupy 14 bytes in the disk file.
<P>This chunk architecture is similar to that used by Electronic
Arts' IFF format, and the chunks described herein could easily be
placed in an IFF file. The MIDI File itself is not an IFF file:
it contains no nested chunks, and chunks are not constrained to
be an even number of bytes long. Converting it to an IFF file is
as easy as padding odd length chunks, and sticking the whole
thing inside a FORM chunk.
<H3><A id="BM1_4">1.4 - Chunk Types</A></H3>
<P>MIDI Files contain two types of chunks: header chunks and
track chunks. A -header- chunk provides a minimal amount of
information pertaining to the entire MIDI file. A -track- chunk
contains a sequential stream of MIDI data which may contain
information for up to 16 MIDI channels. The concepts of multiple
tracks, multiple MIDI outputs, patterns, sequences, and songs may
all be implemented using several track chunks.
<P>A MIDI File always starts with a header chunk, and is followed
by one or more track chunks.
<P>MThd <length of header data><BR>
<header data><BR>
MTrk <length of track data><BR>
<track data><BR>
MTrk <length of track data><BR>
<track data><BR>
. . .
<H3><A id="BM2_">2 - Chunk Descriptions</A></H3>
<H3><A id="BM2_1">2.1 - Header Chunks</A></H3>
The header chunk at the beginning of the file
specifies some basic information about the data in the file.
Here's the syntax of the complete chunk:
<P><Header Chunk> = <chunk
type><length><format><ntrks><division>
<P>As described above, <chunk type> is the four ASCII
characters 'MThd'; <length> is a 32-bit representation of
the number 6 (high byte first).
<P>The data section contains three 16-bit words, stored
most-significant byte first.
<P>The first word, <format>, specifies the overall
organisation of the file. Only three values of <format> are
specified:
<P>0-the file contains a single multi-channel track<BR>
1-the file contains one or more simultaneous tracks (or MIDI outputs) of a sequence<BR>
2-the file contains one or more sequentially independent single-track patterns
<P>More information about these formats is provided below.
<P>The next word, <ntrks>, is the number of track chunks in
the file. It will always be 1 for a format 0 file.
<P>The third word, <division>, specifies the meaning of the
delta-times. It has two formats, one for metrical time, and one
for time-code-based time:
<TABLE class="joplin">
<TR><TH>bit 15 </TH><TH>bits 14 thru 8</TH><TH>bits 7 thru 0</TH></TR>
<TR><TD>0 </TD><TD COLSPAN=2>ticks per quarter-note</TD></TR>
<TR><TD>1 </TD><TD>negative SMPTE format </TD><TD>ticks per frame</TD></TR>
</TABLE>
<P>If bit 15 of <division> is zero, the bits 14 thru 0
represent the number of delta time "ticks" which make
up a quarter-note. For instance, if division is 96, then a time
interval of an eighth-note between two events in the file would
be 48.
<P>If bit 15 of <division> is a one, delta times in a file
correspond to subdivisions of a second, in a way consistent with
SMPTE and MIDI Time Code. Bits 14 thru 8 contain one of the four
values -24, -25, -29, or -30, corresponding to the four standard
SMPTE and MIDI Time Code formats (-29 corresponds to 30 drop
frame), and represents the number of frames per second. These
negative numbers are stored in two's compliment form. The second
byte (stored positive) is the resolution within a frame: typical
values may be 4 (MIDI Time Code resolution), 8, 10, 80 (bit
resolution), or 100. This stream allows exact specifications of
time-code-based tracks, but also allows millisecond-based tracks
by specifying 25 frames/sec and a resolution of 40 units per
frame. If the events in a file are stored with a bit resolution
of thirty-frame time code, the division word would be E250 hex.
<H3><A id="BM2_2">2.2 - MIDI File Formats 0,1 and 2</A></H3>
A Format 0 file has a header chunk
followed by one track chunk. It is the most interchangeable
representation of data. It is very useful for a simple
single-track player in a program which needs to make synthesisers
make sounds, but which is primarily concerned with something
else such as mixers or sound effect boxes. It is very desirable
to be able to produce such a format, even if your program is
track-based, in order to work with these simple programs.
<P>A Format 1 or 2 file has a header chunk followed by one or
more track chunks. Programs which support several simultaneous
tracks should be able to save and read data in format 1, a
vertically one dimensional form, that is, as a collection of
tracks. Programs which support several independent patterns
should be able to save and read data in format 2, a horizontally
one dimensional form. Providing these minimum capabilities will
ensure maximum interchangeability.
<P>In a MIDI system with a computer and a SMPTE synchroniser
which uses Song Pointer and Timing Clock, tempo maps (which
describe the tempo throughout the track, and may also include
time signature information, so that the bar number may be
derived) are generally created on the computer. To use them with
the synchroniser, it is necessary to transfer them from the
computer. To make it easy for the synchroniser to extract this
data from a MIDI File, tempo information should always be stored
in the first MTrk chunk. For a format 0 file, the tempo will be
scattered through the track and the tempo map reader should
ignore the intervening events; for a format 1 file, the tempo map
must be stored as the first track. It is polite to a tempo map
reader to offer your user the ability to make a format 0 file
with just the tempo, unless you can use format 1.
<P>All MIDI Files should specify tempo and time signature. If
they don't, the time signature is assumed to be 4/4, and the
tempo 120 beats per minute. In format 0, these meta-events should
occur at least at the beginning of the single multi-channel
track. In format 1, these meta-events should be contained in the
first track. In format 2, each of the temporally independent
patterns should contain at least initial time signature and tempo
information.
<P>Format IDs to support other structures may be defined in
the future. A program encountering an unknown format ID may still
read other MTrk chunks it finds from the file, as format 1 or 2,
if its user can make sense of them and arrange them into some
other structure if appropriate. Also, more parameters may be
added to the MThd chunk in the future: it is important to read
and honour the length, even if it is longer than 6.
<H3><A id="BM2_3">2.3 - Track Chunks</A></H3>
The track chunks (type MTrk) are where actual
song data is stored. Each track chunk is simply a stream of MIDI
events (and non-MIDI events), preceded by delta-time values. The
format for Track Chunks (described below) is exactly the same for
all three formats (0, 1, and 2: see "Header Chunk"
above) of MIDI Files.
<P>Here is the syntax of an MTrk chunk (the + means "one or
more": at least one MTrk event must be present):
<P><Track Chunk> = <chunk type><length><MTrk
event>+
<P>The syntax of an MTrk event is very simple:
<P><MTrk event> = <delta-time><event>
<P><delta-time> is stored as a variable-length quantity. It
represents the amount of time before the following event. If the
first event in a track occurs at the very beginning of a track,
or if two events occur simultaneously, a delta-time of zero is
used. Delta-times are always present. (Not storing delta-times of
0 requires at least two bytes for any other value, and most
delta-times aren't zero.) Delta-time is in some fraction of a
beat (or a second, for recording a track with SMPTE times), as
specified in the header chunk.
<P><event> = <MIDI event> | <sysex event> |
<meta-event>
<P><MIDI event> is any MIDI channel message
<A HREF="#BMA1_">See Appendix 1 - MIDI Messages.</A> Running status
is used: status bytes of MIDI channel messages may be omitted if
the preceding event is a MIDI channel message with the same
status. The first event in each MTrk chunk must specify status.
Delta-time is not considered an event itself: it is an integral
part of the syntax for an MTrk event. Notice that running status
occurs across delta-times.
<P><sysex event> is used to specify a MIDI system exclusive
message, either as one unit or in packets, or as an
"escape" to specify any arbitrary bytes to be
transmitted. <A HREF="#BMA1_">See Appendix 1 - MIDI Messages.</A> A normal
complete system exclusive message is stored in a MIDI File in this way:
<P>F0 <length> <bytes to be transmitted after F0>
<P>The length is stored as a variable-length quantity. It
specifies the number of bytes which follow it, not including the
F0 or the length itself. For instance, the transmitted message F0
43 12 00 07 F7 would be stored in a MIDI File as F0 05 43 12 00
07 F7. It is required to include the F7 at the end so that the
reader of the MIDI File knows that it has read the entire
message.
<P>Another form of sysex event is provided which does not imply
that an F0 should be transmitted. This may be used as an
"escape" to provide for the transmission of things
which would not otherwise be legal, including system realtime
messages, song pointer or select, MIDI Time Code, etc. This uses
the F7 code:
<P>F7 <length> <all bytes to be transmitted>
<P>Unfortunately, some synthesiser manufacturers specify that
their system exclusive messages are to be transmitted as little
packets. Each packet is only part of an entire syntactical system
exclusive message, but the times they are transmitted are
important. Examples of this are the bytes sent in a CZ patch
dump, or the FB-01's "system exclusive mode" in which
microtonal data can be transmitted. The F0 and F7 sysex events
may be used together to break up syntactically complete system
exclusive messages into timed packets.
<P>An F0 sysex event is used for the first packet in a series --
it is a message in which the F0 should be transmitted. An F7
sysex event is used for the remainder of the packets, which do
not begin with F0. (Of course, the F7 is not considered part of
the system exclusive message).
<P>A syntactic system exclusive message must always end with an
F7, even if the real-life device didn't send one, so that you
know when you've reached the end of an entire sysex message
without looking ahead to the next event in the MIDI File. If it's
stored in one complete F0 sysex event, the last byte must be an
F7. There also must not be any transmittable MIDI events in
between the packets of a multi-packet system exclusive message.
This principle is illustrated in the paragraph below.
<P>Here is a MIDI File of a multi-packet system exclusive
message: suppose the bytes F0 43 12 00 were to be sent, followed
by a 200-tick delay, followed by the bytes 43 12 00 43 12 00,
followed by a 100-tick delay, followed by the bytes 43 12 00 F7,
this would be in the MIDI File:
<TABLE class="joplin">
<TR><TD>F0 03 43 12 00</TD><TD> </TD></TR>
<TR><TD>81 48 </TD><TD>200-tick delta time</TD></TR>
<TR><TD>F7 06 43 12 00 43 12 00</TD><TD> </TD></TR>
<TR><TD>64 </TD><TD>100-tick delta time</TD></TR>
<TR><TD>F7 04 43 12 00 F7</TD><TD> </TD></TR>
</TABLE>
<P>When reading a MIDI File, and an F7 sysex event is encountered
without a preceding F0 sysex event to start a multi-packet system
exclusive message sequence, it should be presumed that the F7
event is being used as an "escape". In this case, it is
not necessary that it end with an F7, unless it is desired that
the F7 be transmitted.
<P><meta-event> specifies non-MIDI information useful to
this format or to sequencers, with this syntax:
<P>FF <type> <length> <bytes>
<P>All meta-events begin with FF, then have an event type byte
(which is always less than 128), and then have the length of the
data stored as a variable-length quantity, and then the data
itself. If there is no data, the length is 0. As with chunks,
future meta-events may be designed which may not be known to
existing programs, so programs must properly ignore meta-events
which they do not recognise, and indeed should expect to see
them. Programs must never ignore the length of a meta-event which
they do not recognise, and they shouldn't be surprised if it's
bigger than expected. If so, they must ignore everything past
what they know about. However, they must not add anything of
their own to the end of the meta- event. Sysex events and meta
events cancel any running status which was in effect. Running
status does not apply to and may not be used for these messages.
<H3><A id="BM3_">3 - Meta-Events</A></H3>
<P>A few meta-events are defined herein. It is not required for
every program to support every meta-event.
<P>In the syntax descriptions for each of the meta-events a set
of conventions is used to describe parameters of the events. The
FF which begins each event, the type of each event, and the
lengths of events which do not have a variable amount of data are
given directly in hexadecimal. A notation such as dd or se, which
consists of two lower-case letters, mnemonically represents an
8-bit value. Four identical lower-case letters such as wwww
mnemonically refer to a 16-bit value, stored
most-significant-byte first. Six identical lower-case letters
such as tttttt refer to a 24-bit value, stored
most-significant-byte first. The notation len refers to the length
portion of the meta-event syntax, that is, a number, stored as a
variable- length quantity, which specifies how many bytes
(possibly text) data were just specified by the length.
<P>In general, meta-events in a track which occur at the same
time may occur in any order. If a copyright event is used, it
should be placed as early as possible in the file, so it will be
noticed easily. Sequence Number and Sequence/Track Name events,
if present, must appear at time 0. An end-of- track event must
occur as the last event in the track.
<H3><A id="BM3_1">3.1 - Meta-Event Definitions</A></H3>
<P><B>FF 00 02 Sequence Number</B><BR>
This optional event, which must occur
at the beginning of a track, before any nonzero delta-times, and
before any transmittable MIDI events, specifies the number of a
sequence. In a format 2 MIDI File, it is used to identify each
"pattern" so that a "song" sequence using the
Cue message can refer to the patterns. If the ID numbers are
omitted, the sequences' locations in order in the file are used
as defaults. In a format 0 or 1 MIDI File, which only contain one
sequence, this number should be contained in the first (or only)
track. If transfer of several multitrack sequences is required,
this must be done as a group of format 1 files, each with a
different sequence number.
<P><B>FF 01 len text Text Event</B><BR>
Any amount of text describing
anything. It is a good idea to put a text event right at the
beginning of a track, with the name of the track, a description
of its intended orchestration, and any other information which
the user wants to put there. Text events may also occur at other
times in a track, to be used as lyrics, or descriptions of cue
points. The text in this event should be printable ASCII
characters for maximum interchange. However, other character
codes using the high-order bit may be used for interchange of
files between different programs on the same computer which
supports an extended character set. Programs on a computer which
does not support non-ASCII characters should ignore those
characters.
<P>Meta-event types 01 through 0F are reserved for various types
of text events, each of which meets the specification of text
events (above) but is used for a different purpose:
<P><B>FF 02 len text Copyright Notice</B><BR>
Contains a copyright notice as
printable ASCII text. The notice should contain the characters
(C), the year of the copyright, and the owner of the copyright.
If several pieces of music are in the same MIDI File, all of the
copyright notices should be placed together in this event so that
it will be at the beginning of the file. This event should be the
first event in the track chunk, at time 0.
<P><B>FF 03 len text Sequence/Track Name</B><BR>
If in a format 0 track, or
the first track in a format 1 file, the name of the sequence.
Otherwise, the name of the track.
<P><B>FF 04 len text Instrument Name</B><BR>
A description of the type of
instrumentation to be used in that track. May be used with the
MIDI Prefix meta-event to specify which MIDI channel the
description applies to, or the channel may be specified as text
in the event itself.
<P><B>FF 05 len text Lyric</B><BR>
A lyric to be sung. Generally, each
syllable will be a separate lyric event which begins at the
event's time.
<P><B>FF 06 len text Marker</B><BR>
Normally in a format 0 track, or the
first track in a format 1 file. The name of that point in the
sequence, such as a rehearsal letter or section name ("First
Verse", etc.)
<P><B>FF 07 len text Cue Point</B><BR>
A description of something happening
on a film or video screen or stage at that point in the musical
score ("Car crashes into house", "curtain
opens", "she slaps his face", etc.)
<P><B>FF 20 01 cc MIDI Channel Prefix</B><BR>
The MIDI channel (0-15)
contained in this event may be used to associate a MIDI channel
with all events which follow, including System exclusive and
meta-events. This channel is "effective" until the next
normal MIDI event (which contains a channel) or the next MIDI
Channel Prefix meta-event. If MIDI channels refer to
"tracks", this message may be put into a format 0 file,
keeping their non-MIDI data associated with a track. This
capability is also present in Yamaha's ESEQ file format.
<P><B>FF 2F 00 End of Track</B><BR>
This event is not optional. It is
included so that an exact ending point may be specified for the
track, so that an exact length is defined, which is necessary for tracks
which are looped or concatenated.
<P><B>FF 51 03 tttttt Set Tempo (in microseconds per MIDI quarter-note)</B><BR>
This event indicates a tempo change. Another way of
putting "microseconds per quarter-note" is "24ths
of a microsecond per MIDI clock". Representing tempos as
time per beat instead of beat per time allows absolutely exact
long-term synchronisation with a time-based sync protocol such as
SMPTE time code or MIDI time code. The amount of accuracy
provided by this tempo resolution allows a four-minute piece at
120 beats per minute to be accurate within 500 usec at the end of
the piece. Ideally, these events should only occur where MIDI
clocks would be located -- this convention is intended to
guarantee, or at least increase the likelihood, of compatibility
with other synchronisation devices so that a time signature/tempo
map stored in this format may easily be transferred to another
device.
<P><B>FF 54 05 hr mn se fr ff SMPTE Offset</B><BR>
This event, if present,
designates the SMPTE time at which the track chunk is supposed to
start. It should be present at the beginning of the track, that
is, before any nonzero delta-times, and before any transmittable
MIDI events. the hour must be encoded with the SMPTE format, just
as it is in MIDI Time Code. In a format 1 file, the SMPTE Offset
must be stored with the tempo map, and has no meaning in any of
the other tracks. The ff field contains fractional frames, in
100ths of a frame, even in SMPTE-based tracks which specify a
different frame subdivision for delta-times.
<P><B>FF 58 04 nn dd cc bb Time Signature</B><BR>
The time signature is
expressed as four numbers. nn and dd represent the numerator and
denominator of the time signature as it would be notated. The
denominator is a negative power of two: 2 represents a
quarter-note, 3 represents an eighth-note, etc. The cc parameter
expresses the number of MIDI clocks in a metronome click. The bb
parameter expresses the number of notated 32nd-notes in a MIDI
quarter-note (24 MIDI clocks). This was added because there are
already multiple programs which allow a user to specify that what
MIDI thinks of as a quarter-note (24 clocks) is to be notated as,
or related to in terms of, something else.
<P>Therefore, the complete event for 6/8 time, where the
metronome clicks every three eighth-notes, but there are 24
clocks per quarter-note, 72 to the bar, would be (in hex):
<P>FF 58 04 06 03 24 08
<P>That is, 6/8 time (8 is 2 to the 3rd power, so this is 06 03),
36 MIDI clocks per dotted-quarter (24 hex!), and eight notated
32nd-notes per quarter-note.
<P><B>FF 59 02 sf mi Key Signature</B><BR>
sf = -7: 7 flats<BR>
sf = -1: 1 flat<BR>
sf = 0: key of C<BR>
sf = 1: 1 sharp<BR>
sf = 7: 7 sharps<BR>
<P>
mi = 0: major key<BR>
mi = 1: minor key<BR>
<P><B>FF 7F len data Sequencer Specific Meta-Event</B><BR>
Special requirements for particular sequencers may use this event type:
the first byte or bytes of data is a manufacturer ID (these are
one byte, or if the first byte is 00, three bytes). As with MIDI
System Exclusive, manufacturers who define something using this
meta-event should publish it so that others may be used by a
sequencer which elects to use this as its only file format;
sequencers with their established feature-specific formats should
probably stick to the standard features when using this format.
<P>
<A HREF="#BMA2_">See Appendix 2 - Program Fragments and Example MIDI Files</A> for an
example midi file.
<HR>
<H2><A id="BMA1_">Appendix 1 - MIDI Messages</A></H2>
<P>
A MIDI message is made up of an eight-bit status byte which is generally followed
by one or two data bytes. There are a number of different types of MIDI messages.
At the highest level, MIDI messages are classified as being either Channel Messages
or System Messages. Channel messages are those which apply to a specific Channel, and
the Channel number is included in the status byte for these messages. System messages
are not Channel specific, and no Channel number is indicated in their status bytes.
<P>
Channel Messages may be further classified as being either Channel Voice Messages,
or Mode Messages. Channel Voice Messages carry musical performance data, and these
messages comprise most of the traffic in a typical MIDI data stream. Channel Mode
messages affect the way a receiving instrument will respond to the Channel Voice
messages.
<P>
MIDI System Messages are classified as being System Common Messages, System Real Time
Messages, or System Exclusive Messages. System Common messages are intended for all
receivers in the system. System Real Time messages are used for synchronisation between
clock-based MIDI components. System Exclusive messages include a Manufacturer's
Identification (ID) code, and are used to transfer any number of data bytes in a format
specified by the referenced manufacturer.
<P>
<H3><A id="BMA1_1">Appendix 1.1 - Table of Major MIDI Messages</A></H3>
<P>
<TABLE class="joplin">
<TR><TH COLSPAN=3>Channel Voice Messages</TH></TR>
<TR><TH>Status<BR>D7----D0<BR>nnnn is the MIDI channel no.</TH><TH>Data Byte(s)<BR>D7----D0</TH><TH>Description</TH></TR>
<TR><td>1000nnnn</TD><td>0kkkkkkk<BR>0vvvvvvv</TD><TD>Note Off event.<BR>
This message is sent when a note is released (ended).<BR>
(kkkkkkk) is the key (note) number.<BR>
(vvvvvvv) is the velocity.</TD></TR>
<TR><td>1001nnnn</TD><td>0kkkkkkk<BR>0vvvvvvv</TD><TD>Note On event.<BR>
This message is sent when a note is depressed (start).<BR>
(kkkkkkk) is the key (note) number.<BR>
(vvvvvvv) is the velocity.</TD></TR>
<TR><td>1010nnnn</TD><td>0kkkkkkk<BR>0vvvvvvv</TD><TD>Polyphonic Key Pressure (Aftertouch).<BR>
This message is most often sent by pressing down on the key after it "bottoms out".<BR>
(kkkkkkk) is the key (note) number.<BR>
(vvvvvvv) is the pressure value.</TD></TR>
<TR><td>1011nnnn</TD><td>0ccccccc<BR>0vvvvvvv</TD><TD>Control Change.<BR>
This message is sent when a controller value changes. Controllers include devices
such as pedals and levers. Certain controller numbers are reserved
for specific purposes. See Channel Mode Messages.<BR>
(ccccccc) is the controller number.<BR>
(vvvvvvv) is the new value.</TD></TR>
<TR><td>1100nnnn</TD><td>0ppppppp</TD><TD>Program Change.<BR>
This message sent when the patch number changes.<BR>
(ppppppp) is the new program number.</TD></TR>
<TR><td>1101nnnn</TD><td>0vvvvvvv</TD><TD>Channel Pressure (After-touch).<BR>
This message is most often sent by pressing down on the key after it "bottoms out".
This message is different from polyphonic after-touch. Use this message to send the single greatest
pressure value (of all the current depressed keys).<BR>
(vvvvvvv) is the pressure value.</TD></TR>
<TR><td>1110nnnn</TD><td>0lllllll<BR>0mmmmmmm</TD><TD>Pitch Wheel Change.<BR>
This message is sent to indicate a change in the pitch wheel. The pitch wheel is measured by a
fourteen bit value. Centre (no pitch change) is 2000H. Sensitivity is a function of the transmitter.<BR>
(lllllll) are the least significant 7 bits.<BR>
(mmmmmmm) are the most significant 7 bits.</TD></TR>
<TR><TH COLSPAN=3>Channel Mode Messages (See also Control Change, above)</TH></TR>
<TR><td>1011nnnn</TD><td>0ccccccc<BR>0vvvvvvv</TD><TD>Channel Mode Messages.<BR>
This the same code as the Control Change (above), but implements Mode control by using reserved
controller numbers. The numbers are:<BR>
Local Control.<BR>
When Local Control is Off, all devices on a given channel will respond only to data received
over MIDI. Played data, etc. will be ignored. Local Control On restores the functions of the
normal controllers.<BR>
c = 122, v = 0: Local Control Off<BR>
c = 122, v = 127: Local Control On<BR>
<P>All Notes Off.<BR>
When an All Notes Off is received all oscillators will turn off.<BR>
c = 123, v = 0: All Notes Off<BR>
c = 124, v = 0: Omni Mode Off<BR>
c = 125, v = 0: Omni Mode On<BR>
c = 126, v = M: Mono Mode On (Poly Off) where M is the number of channels (Omni Off) or 0 (Omni On)<BR>
c = 127, v = 0: Poly Mode On (Mono Off)
(Note: These four messages also cause All Notes Off)</TD></TR>
<TR><TH COLSPAN=3>System Common Messages</TH></TR>
<TR><td>11110000</TD><TD>0iiiiiii<BR>0ddddddd<BR>..<BR>..<BR>0ddddddd<BR>11110111</TD><TD>System Exclusive.<BR>
This message makes up for all that MIDI doesn't support. (iiiiiii) is usually a seven-bit Manufacturer's I.D. code.
If the synthesiser recognises the I.D. code as its own, it will listen to the rest of
the message (ddddddd). Otherwise, the message will be ignored. System Exclusive
is used to send bulk dumps such as patch parameters and other non-spec data.
(Note: Real-Time messages ONLY may be interleaved with a System Exclusive.)
This message also is used for extensions called Universal Exclusive Messages.</TD></TR>
<TR><TD>11110001</TD><TD> </TD><TD>Undefined.</TD></TR>
<TR><td>11110010</TD><td>0lllllll<BR>0mmmmmmm</TD><TD>Song Position Pointer.<BR>
This is an internal 14 bit register that holds the number of MIDI beats (1 beat=
six MIDI clocks) since the start of the song. l is the LSB, m the MSB.</TD></TR>
<TR><td>11110011</TD><td>0sssssss</TD><TD>Song Select.<BR>
The Song Select specifies which sequence or song is to be played.</TD></TR>
<TR><TD>11110100</TD><TD> </TD><TD>Undefined.</TD></TR>
<TR><TD>11110101</TD><TD> </TD><TD>Undefined.</TD></TR>
<TR><td>11110110</TD><td> </TD><TD>Tune Request.<BR>
Upon receiving a Tune Request, all analog synthesisers should tune their oscillators.</TD></TR>
<TR><td>11110111</TD><td> </TD><TD>End of Exclusive.<BR>
Used to terminate a System Exclusive dump (see above).</TD></TR>
<TR><TH COLSPAN=3>System Real-Time Messages</TH></TR>
<TR><td>11111000</TD><td> </TD><TD>Timing Clock.<BR>
Sent 24 times per quarter note when synchronisation is required.</TD></TR>
<TR><td>11111001</TD><td> </TD><TD>Undefined.</TD></TR>
<TR><td>11111010</TD><td> </TD><TD>Start.<BR>
Start the current sequence playing. (This message will be followed with Timing Clocks).</TD></TR>
<TR><td>11111011</TD><td> </TD><TD>Continue.<BR>
Continue at the point the sequence was Stopped.</TD></TR>
<TR><td>11111100</TD><td> </TD><TD>Stop.<BR>
Stop the current sequence.</TD></TR>
<TR><td>11111101</TD><td> </TD><TD>Undefined.<BR></TD></TR>
<TR><td>11111110</TD><td> </TD><TD>Active Sensing.<BR>
Use of this message is optional. When initially sent, the receiver will expect
to receive another Active Sensing message each 300ms (max), or it will be assume
that the connection has been terminated. At termination, the receiver will turn off
all voices and return to normal (non-active sensing) operation.</TD></TR>
<TR><td>11111111</TD><td> </TD><TD>Reset.<BR>
Reset all receivers in the system to power-up status. This should be used
sparingly, preferably under manual control. In particular, it should not
be sent on power-up.<BR>In a MIDI file this is used as an escape to introduce
<meta events>.</TD></TR>
</TABLE>
<HR>
<H3><A id="BMA1_2">Appendix 1.2 - Table of MIDI Controller Messages (Data Bytes)</A></H3>
<P>
The following table lists the MIDI Controller messages in numerical (binary) order.<P>
<TABLE class="joplin">
<TR><TH COLSPAN=3>2nd Byte Value</TH><TH>Function</TH><TH COLSPAN=2>3rd Byte</TH></TR>
<TR><TH>Binary</TH><TH>Hex</TH><TH>Dec</TH><TH> </TH><TH>Value</TH><TH>Use</TH></TR>
<TR><TD>00000000</TD><TD>00</TD><TD>0</TD><TD>Bank Select</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00000001</TD><TD>01</TD><TD>1</TD><TD>* Modulation wheel</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00000010</TD><TD>02</TD><TD>2</TD><TD>Breath control</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00000011</TD><TD>03</TD><TD>3</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00000100</TD><TD>04</TD><TD>4</TD><TD>Foot controller</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00000101</TD><TD>05</TD><TD>5</TD><TD>Portamento time</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00000110</TD><TD>06</TD><TD>6</TD><TD>Data Entry</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00000111</TD><TD>07</TD><TD>7</TD><TD>* Channel Volume (formerly Main Volume)</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00001000</TD><TD>08</TD><TD>8</TD><TD>Balance</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00001001</TD><TD>09</TD><TD>9</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00001010</TD><TD>0A</TD><TD>10</TD><TD>* Pan</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00001011</TD><TD>0B</TD><TD>11</TD><TD>* Expression Controller</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00001100</TD><TD>0C</TD><TD>12</TD><TD>Effect control 1</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00001101</TD><TD>0D</TD><TD>13</TD><TD>Effect control 2</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00001110</TD><TD>0E</TD><TD>14</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00001111</TD><TD>0F</TD><TD>15</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00010000</TD><TD>10</TD><TD>16</TD><TD>General Purpose Controller #1</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00010001</TD><TD>11</TD><TD>17</TD><TD>General Purpose Controller #2</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00010010</TD><TD>12</TD><TD>18</TD><TD>General Purpose Controller #3</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00010011</TD><TD>13</TD><TD>19</TD><TD>General Purpose Controller #4</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00010100</TD><TD>14</TD><TD>20</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00010101</TD><TD>15</TD><TD>21</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00010110</TD><TD>16</TD><TD>22</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00010111</TD><TD>17</TD><TD>23</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00011000</TD><TD>18</TD><TD>24</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00011001</TD><TD>19</TD><TD>25</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00011010</TD><TD>1A</TD><TD>26</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00011011</TD><TD>1B</TD><TD>27</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00011100</TD><TD>1C</TD><TD>28</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00011101</TD><TD>1D</TD><TD>29</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00011110</TD><TD>1E</TD><TD>30</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00011111</TD><TD>1F</TD><TD>31</TD><TD>Undefined</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>00100000</TD><TD>20</TD><TD>32</TD><TD>Bank Select</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00100001</TD><TD>21</TD><TD>33</TD><TD>Modulation wheel</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00100010</TD><TD>22</TD><TD>34</TD><TD>Breath control</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00100011</TD><TD>23</TD><TD>35</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00100100</TD><TD>24</TD><TD>36</TD><TD>Foot controller</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00100101</TD><TD>25</TD><TD>37</TD><TD>Portamento time</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00100110</TD><TD>26</TD><TD>38</TD><TD>Data entry</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00100111</TD><TD>27</TD><TD>39</TD><TD>Channel Volume (formerly Main Volume)</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00101000</TD><TD>28</TD><TD>40</TD><TD>Balance</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00101001</TD><TD>29</TD><TD>41</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00101010</TD><TD>2A</TD><TD>42</TD><TD>Pan</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00101011</TD><TD>2B</TD><TD>43</TD><TD>Expression Controller</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00101100</TD><TD>2C</TD><TD>44</TD><TD>Effect control 1</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00101101</TD><TD>2D</TD><TD>45</TD><TD>Effect control 2</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00101110</TD><TD>2E</TD><TD>46</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00101111</TD><TD>2F</TD><TD>47</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00110000</TD><TD>30</TD><TD>48</TD><TD>General Purpose Controller #1</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00110001</TD><TD>31</TD><TD>49</TD><TD>General Purpose Controller #2</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00110010</TD><TD>32</TD><TD>50</TD><TD>General Purpose Controller #3</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00110011</TD><TD>33</TD><TD>51</TD><TD>General Purpose Controller #4</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00110100</TD><TD>34</TD><TD>52</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00110101</TD><TD>35</TD><TD>53</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00110110</TD><TD>36</TD><TD>54</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00110111</TD><TD>37</TD><TD>55</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00111000</TD><TD>38</TD><TD>56</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00111001</TD><TD>39</TD><TD>57</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00111010</TD><TD>3A</TD><TD>58</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00111011</TD><TD>3B</TD><TD>59</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00111100</TD><TD>3C</TD><TD>60</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00111101</TD><TD>3D</TD><TD>61</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00111110</TD><TD>3E</TD><TD>62</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>00111111</TD><TD>3F</TD><TD>63</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01000000</TD><TD>40</TD><TD>64</TD><TD>* Damper pedal on/off (Sustain)</TD><TD><63=off</TD><TD>>64=on</TD></TR>
<TR><TD>01000001</TD><TD>41</TD><TD>65</TD><TD>Portamento on/off</TD><TD><63=off</TD><TD>>64=on</TD></TR>
<TR><TD>01000010</TD><TD>42</TD><TD>66</TD><TD>Sustenuto on/off</TD><TD><63=off</TD><TD>>64=on</TD></TR>
<TR><TD>01000011</TD><TD>43</TD><TD>67</TD><TD>Soft pedal on/off</TD><TD><63=off</TD><TD>>64=on</TD></TR>
<TR><TD>01000100</TD><TD>44</TD><TD>68</TD><TD>Legato Footswitch</TD><TD><63=off</TD><TD>>64=on</TD></TR>
<TR><TD>01000101</TD><TD>45</TD><TD>69</TD><TD>Hold 2</TD><TD><63=off</TD><TD>>64=on</TD></TR>
<TR><TD>01000110</TD><TD>46</TD><TD>70</TD><TD>Sound Controller 1 (Sound Variation)</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01000111</TD><TD>47</TD><TD>71</TD><TD>Sound Controller 2 (Timbre)</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01001000</TD><TD>48</TD><TD>72</TD><TD>Sound Controller 3 (Release Time)</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01001001</TD><TD>49</TD><TD>73</TD><TD>Sound Controller 4 (Attack Time)</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01001010</TD><TD>4A</TD><TD>74</TD><TD>Sound Controller 5 (Brightness)</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01001011</TD><TD>4B</TD><TD>75</TD><TD>Sound Controller 6</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01001100</TD><TD>4C</TD><TD>76</TD><TD>Sound Controller 7</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01001101</TD><TD>4D</TD><TD>77</TD><TD>Sound Controller 8</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01001110</TD><TD>4E</TD><TD>78</TD><TD>Sound Controller 9</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01001111</TD><TD>4F</TD><TD>79</TD><TD>Sound Controller 10</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01010000</TD><TD>50</TD><TD>80</TD><TD>General Purpose Controller #5</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01010001</TD><TD>51</TD><TD>81</TD><TD>General Purpose Controller #6</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01010010</TD><TD>52</TD><TD>82</TD><TD>General Purpose Controller #7</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01010011</TD><TD>53</TD><TD>83</TD><TD>General Purpose Controller #8</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01010100</TD><TD>54</TD><TD>84</TD><TD>Portamento Control</TD><TD>0-127</TD><TD>Source Note</TD></TR>
<TR><TD>01010101</TD><TD>55</TD><TD>85</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01010110</TD><TD>56</TD><TD>86</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01010111</TD><TD>57</TD><TD>87</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01011000</TD><TD>58</TD><TD>88</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01011001</TD><TD>59</TD><TD>89</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01011010</TD><TD>5A</TD><TD>90</TD><TD>Undefined</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01011011</TD><TD>5B</TD><TD>91</TD><TD>Effects 1 Depth</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01011100</TD><TD>5C</TD><TD>92</TD><TD>Effects 2 Depth</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01011101</TD><TD>5D</TD><TD>93</TD><TD>Effects 3 Depth</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01011110</TD><TD>5E</TD><TD>94</TD><TD>Effects 4 Depth</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01011111</TD><TD>5F</TD><TD>95</TD><TD>Effects 5 Depth</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD COLSPAN=6> </TD></TR>
<TR><TD>01100000</TD><TD>60</TD><TD>96</TD><TD>Data entry +1</TD><TD>N/A</TD><TD> </TD></TR>
<TR><TD>01100001</TD><TD>61</TD><TD>97</TD><TD>Data entry -1</TD><TD>N/A</TD><TD> </TD></TR>
<TR><TD>01100010</TD><TD>62</TD><TD>98</TD><TD>Non-Registered Parameter Number LSB</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01100011</TD><TD>63</TD><TD>99</TD><TD>Non-Registered Parameter Number MSB</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>01100100</TD><TD>64</TD><TD>100</TD><TD>* Registered Parameter Number LSB</TD><TD>0-127</TD><TD>LSB</TD></TR>
<TR><TD>01100101</TD><TD>65</TD><TD>101</TD><TD>* Registered Parameter Number MSB</TD><TD>0-127</TD><TD>MSB</TD></TR>
<TR><TD>01100110</TD><TD>66</TD><TD>102</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01100111</TD><TD>67</TD><TD>103</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01101000</TD><TD>68</TD><TD>104</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01101001</TD><TD>69</TD><TD>105</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01101010</TD><TD>6A</TD><TD>106</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01101011</TD><TD>6B</TD><TD>107</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01101100</TD><TD>6C</TD><TD>108</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01101101</TD><TD>6D</TD><TD>109</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01101110</TD><TD>6E</TD><TD>110</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01101111</TD><TD>6F</TD><TD>111</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01110000</TD><TD>70</TD><TD>112</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01110001</TD><TD>71</TD><TD>113</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01110010</TD><TD>72</TD><TD>114</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01110011</TD><TD>73</TD><TD>115</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01110100</TD><TD>74</TD><TD>116</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01110101</TD><TD>75</TD><TD>117</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01110110</TD><TD>76</TD><TD>118</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD>01110111</TD><TD>77</TD><TD>119</TD><TD>Undefined</TD><TD>?</TD><TD> </TD></TR>
<TR><TD COLSPAN=6> </TD></TR>
<TR><TD>01111000</TD><TD>78</TD><TD>120</TD><TD>All Sound Off</TD><TD>0</TD><TD> </TD></TR>
<TR><TD>01111001</TD><TD>79</TD><TD>121</TD><TD>* Reset All Controllers</TD><TD>0</TD><TD> </TD></TR>
<TR><TD>01111010</TD><TD>7A</TD><TD>122</TD><TD>Local control on/off</TD><TD>0=off</TD><TD>127=on</TD></TR>
<TR><TD>01111011</TD><TD>7B</TD><TD>123</TD><TD>* All notes off</TD><TD>0</TD><TD> </TD></TR>
<TR><TD>01111100</TD><TD>7C</TD><TD>124</TD><TD>Omni mode off (+ all notes off)</TD><TD>0</TD><TD> </TD></TR>
<TR><TD>01111101</TD><TD>7D</TD><TD>125</TD><TD>Omni mode on (+ all notes off)</TD><TD>0</TD><TD> </TD></TR>
<TR><TD>01111110</TD><TD>7E</TD><TD>126</TD><TD>Poly mode on/off (+ all notes off)</TD><TD>**</TD><TD> </TD></TR>
<TR><TD>01111111</TD><TD>7F</TD><TD>127</TD><TD>Poly mode on (incl mono=off +all notes off)</TD><TD>0</TD><TD> </TD></TR>
</TABLE>
* Equipment must respond in order to comply with General MIDI level 1.<BR>
** This equals the number of channels, or zero if the number of channels
equals the number of voices in the receiver.
<HR>
<H3><A id="BMA1_3">Appendix 1.3 - Table of MIDI Note Numbers</A></H3>
<P>
This table (Amended August 2012) lists all MIDI Note Numbers (middle C is note 60) by octave.
<P>
<I>The absolute octave number designations are based on Middle C = C5,
which is an arbitrary assignment (as used by Cakewalk).</I>
<P>
<TABLE class="joplin">
<TR><TH>Octave #</TH><TH COLSPAN=12>Note Numbers</TH></TR>
<TR><TH> </TH><TH>C</TH><TH>C#</TH><TH>D</TH><TH>D#</TH><TH>E</TH><TH>F</TH>
<TH>F#</TH><TH>G</TH><TH>G#</TH><TH>A</TH><TH>A#</TH><TH>B</TH></TR>
<TR><TD>0</TD><TD>0</TD><TD>1</TD><TD>2</TD><TD>3</TD><TD>4</TD><TD>5</TD><TD>6</TD><TD>7</TD><TD>8</TD><TD>9</TD><TD>10</TD><TD>11</TD></TR>
<TR><TD>1</TD><TD>12</TD><TD>13</TD><TD>14</TD><TD>15</TD><TD>16</TD><TD>17</TD><TD>18</TD><TD>19</TD><TD>20</TD><TD>21</TD><TD>22</TD><TD>23</TD></TR>
<TR><TD>2</TD><TD>24</TD><TD>25</TD><TD>26</TD><TD>27</TD><TD>28</TD><TD>29</TD><TD>30</TD><TD>31</TD><TD>32</TD><TD>33</TD><TD>34</TD><TD>35</TD></TR>
<TR><TD>3</TD><TD>36</TD><TD>37</TD><TD>38</TD><TD>39</TD><TD>40</TD><TD>41</TD><TD>42</TD><TD>43</TD><TD>44</TD><TD>45</TD><TD>46</TD><TD>47</TD></TR>
<TR><TD>4</TD><TD>48</TD><TD>49</TD><TD>50</TD><TD>51</TD><TD>52</TD><TD>53</TD><TD>54</TD><TD>55</TD><TD>56</TD><TD>57</TD><TD>58</TD><TD>59</TD></TR>
<TR><TD>5</TD><TD>60</TD><TD>61</TD><TD>62</TD><TD>63</TD><TD>64</TD><TD>65</TD><TD>66</TD><TD>67</TD><TD>68</TD><TD>69</TD><TD>70</TD><TD>71</TD></TR>
<TR><TD>6</TD><TD>72</TD><TD>73</TD><TD>74</TD><TD>75</TD><TD>76</TD><TD>77</TD><TD>78</TD><TD>79</TD><TD>80</TD><TD>81</TD><TD>82</TD><TD>83</TD></TR>
<TR><TD>7</TD><TD>84</TD><TD>85</TD><TD>86</TD><TD>87</TD><TD>88</TD><TD>89</TD><TD>90</TD><TD>91</TD><TD>92</TD><TD>93</TD><TD>94</TD><TD>95</TD></TR>
<TR><TD>8</TD><TD>96</TD><TD>97</TD><TD>98</TD><TD>99</TD><TD>100</TD><TD>101</TD><TD>102</TD><TD>103</TD><TD>104</TD><TD>105</TD><TD>106</TD><TD>107</TD></TR>
<TR><TD>9</TD><TD>108</TD><TD>109</TD><TD>110</TD><TD>111</TD><TD>112</TD><TD>113</TD><TD>114</TD><TD>115</TD><TD>116</TD><TD>117</TD><TD>118</TD><TD>119</TD></TR>
<TR><TD>10</TD><TD>120</TD><TD>121</TD><TD>122</TD><TD>123</TD><TD>124</TD><TD>125</TD><TD>126</TD><TD>127</TD><TD> </TD><TD> </TD><TD> </TD><TD> </TD></TR>
</TABLE>
<HR>
<H3><A id="BMA1_4">Appendix 1.4 - General MIDI Instrument Patch Map</A></H3>
<P>
<UL>
<LI>The names of the instruments indicate what sort of sound will
be heard when that instrument number (MIDI Program Change or "PC#")
is selected on the GM synthesizer.
<LI>These sounds are the same for all MIDI Channels except Channel
10, which has only percussion sounds and some sound "effects".
(See <A HREF="#BMA1_5">Appendix 1.5</A> - General MIDI Percussion Key Map)
</UL>
<H3>GM Instrument Families </H3>
<P>
The General MIDI instrument sounds are grouped by families. In
each family are 8 specific instruments.
<P>
<TABLE class="joplin">
<TR><TH>PC#</TH><TH>Family</TH><TH>PC#</TH><TH>Family</TH></TR>
<TR><TD>1-8</TD><TD>Piano</TD><TD>65-72</TD><TD>Reed</TD></TR>
<TR><TD>9-16</TD><TD>Chromatic Percussion</TD><TD>73-80</TD><TD>Pipe</TD></TR>
<TR><TD>17-24</TD><TD>Organ</TD><TD>81-88</TD><TD>Synth Lead</TD></TR>
<TR><TD>25-32</TD><TD>Guitar</TD><TD>89-96</TD><TD>Synth Pad</TD></TR>
<TR><TD>33-40</TD><TD>Bass</TD><TD>97-104</TD><TD>Synth Effects</TD></TR>
<TR><TD>41-48</TD><TD>Strings</TD><TD>105-112</TD><TD>Ethnic</TD></TR>
<TR><TD>49-56</TD><TD>Ensemble</TD><TD>113-120</TD><TD>Percussive</TD></TR>
<TR><TD>57-64</TD><TD>Brass</TD><TD>121-128</TD><TD>Sound Effects</TD></TR>
</TABLE>
<H3>GM Instrument Patch Map</H3>
<P>
<B>Note:</B> While GM does not define the actual characteristics
of any sounds, the names in parentheses after each of the synth
leads, pads, and sound effects are, in particular, intended only
as guides.
<P>
<TABLE class="joplin">
<TR><TH>PC#</TH><TH>Instrument</TH><TH>PC#</TH><TH>Instrument</TH></TR>
<TR><TD>1.</TD><TD>Acoustic Grand Piano</TD><TD>65.</TD><TD>Soprano Sax</TD></TR>
<TR><TD>2.</TD><TD>Bright Acoustic Piano</TD><TD>66.</TD><TD>Alto Sax</TD></TR>
<TR><TD>3.</TD><TD>Electric Grand Piano</TD><TD>67.</TD><TD>Tenor Sax</TD></TR>
<TR><TD>4.</TD><TD>Honky-tonk Piano</TD><TD>68.</TD><TD>Baritone Sax</TD></TR>
<TR><TD>5.</TD><TD>Electric Piano 1 (Rhodes Piano)</TD><TD>69.</TD><TD>Oboe</TD></TR>
<TR><TD>6.</TD><TD>Electric Piano 2 (Chorused Piano)</TD><TD>70.</TD><TD>English Horn</TD></TR>
<TR><TD>7.</TD><TD>Harpsichord</TD><TD>71.</TD><TD>Bassoon</TD></TR>
<TR><TD>8.</TD><TD>Clavinet</TD><TD>72.</TD><TD>Clarinet</TD></TR>
<TR><TD>9.</TD><TD>Celesta</TD><TD>73.</TD><TD>Piccolo</TD></TR>
<TR><TD>10.</TD><TD>Glockenspiel</TD><TD>74.</TD><TD>Flute</TD></TR>
<TR><TD>11.</TD><TD>Music Box</TD><TD>75.</TD><TD>Recorder</TD></TR>
<TR><TD>12.</TD><TD>Vibraphone</TD><TD>76.</TD><TD>Pan Flute</TD></TR>
<TR><TD>13.</TD><TD>Marimba</TD><TD>77.</TD><TD>Blown Bottle</TD></TR>
<TR><TD>14.</TD><TD>Xylophone</TD><TD>78.</TD><TD>Shakuhachi</TD></TR>
<TR><TD>15.</TD><TD>Tubular Bells</TD><TD>79.</TD><TD>Whistle</TD></TR>
<TR><TD>16.</TD><TD>Dulcimer (Santur)</TD><TD>80.</TD><TD>Ocarina</TD></TR>
<TR><TD>17.</TD><TD>Drawbar Organ (Hammond)</TD><TD>81.</TD><TD>Lead 1 (square wave)</TD></TR>
<TR><TD>18.</TD><TD>Percussive Organ</TD><TD>82.</TD><TD>Lead 2 (sawtooth wave)</TD></TR>
<TR><TD>19.</TD><TD>Rock Organ</TD><TD>83.</TD><TD>Lead 3 (calliope)</TD></TR>
<TR><TD>20.</TD><TD>Church Organ</TD><TD>84.</TD><TD>Lead 4 (chiffer)</TD></TR>
<TR><TD>21.</TD><TD>Reed Organ</TD><TD>85.</TD><TD>Lead 5 (charang)</TD></TR>
<TR><TD>22.</TD><TD>Accordion (French)</TD><TD>86.</TD><TD>Lead 6 (voice solo)</TD></TR>
<TR><TD>23.</TD><TD>Harmonica</TD><TD>87.</TD><TD>Lead 7 (fifths)</TD></TR>
<TR><TD>24.</TD><TD>Tango Accordion (Band neon)</TD><TD>88.</TD><TD>Lead 8 (bass + lead)</TD></TR>
<TR><TD>25.</TD><TD>Acoustic Guitar (nylon)</TD><TD>89.</TD><TD>Pad 1 (new age Fantasia)</TD></TR>
<TR><TD>26.</TD><TD>Acoustic Guitar (steel)</TD><TD>90.</TD><TD>Pad 2 (warm)</TD></TR>
<TR><TD>27.</TD><TD>Electric Guitar (jazz)</TD><TD>91.</TD><TD>Pad 3 (polysynth)</TD></TR>
<TR><TD>28.</TD><TD>Electric Guitar (clean)</TD><TD>92.</TD><TD>Pad 4 (choir space voice)</TD></TR>
<TR><TD>29.</TD><TD>Electric Guitar (muted)</TD><TD>93.</TD><TD>Pad 5 (bowed glass)</TD></TR>
<TR><TD>30.</TD><TD>Overdriven Guitar</TD><TD>94.</TD><TD>Pad 6 (metallic pro)</TD></TR>
<TR><TD>31.</TD><TD>Distortion Guitar</TD><TD>95.</TD><TD>Pad 7 (halo)</TD></TR>
<TR><TD>32.</TD><TD>Guitar harmonics</TD><TD>96.</TD><TD>Pad 8 (sweep)</TD></TR>
<TR><TD>33.</TD><TD>Acoustic Bass</TD><TD>97.</TD><TD>FX 1 (rain)</TD></TR>
<TR><TD>34.</TD><TD>Electric Bass (fingered)</TD><TD>98.</TD><TD>FX 2 (soundtrack)</TD></TR>
<TR><TD>35.</TD><TD>Electric Bass (picked)</TD><TD>99.</TD><TD>FX 3 (crystal)</TD></TR>
<TR><TD>36.</TD><TD>Fretless Bass</TD><TD>100.</TD><TD>FX 4 (atmosphere)</TD></TR>
<TR><TD>37.</TD><TD>Slap Bass 1</TD><TD>101.</TD><TD>FX 5 (brightness)</TD></TR>
<TR><TD>38.</TD><TD>Slap Bass 2</TD><TD>102.</TD><TD>FX 6 (goblins)</TD></TR>
<TR><TD>39.</TD><TD>Synth Bass 1</TD><TD>103.</TD><TD>FX 7 (echoes, drops)</TD></TR>
<TR><TD>40.</TD><TD>Synth Bass 2</TD><TD>104.</TD><TD>FX 8 (sci-fi, star theme)</TD></TR>
<TR><TD>41.</TD><TD>Violin</TD><TD>105.</TD><TD>Sitar</TD></TR>
<TR><TD>42.</TD><TD>Viola</TD><TD>106.</TD><TD>Banjo</TD></TR>
<TR><TD>43.</TD><TD>Cello</TD><TD>107.</TD><TD>Shamisen</TD></TR>
<TR><TD>44.</TD><TD>Contrabass</TD><TD>108.</TD><TD>Koto</TD></TR>
<TR><TD>45.</TD><TD>Tremolo Strings</TD><TD>109.</TD><TD>Kalimba</TD></TR>
<TR><TD>46.</TD><TD>Pizzicato Strings</TD><TD>110.</TD><TD>Bag pipe</TD></TR>
<TR><TD>47.</TD><TD>Orchestral Harp</TD><TD>111.</TD><TD>Fiddle</TD></TR>
<TR><TD>48.</TD><TD>Timpani</TD><TD>112.</TD><TD>Shanai</TD></TR>
<TR><TD>49.</TD><TD>String Ensemble 1 (strings)</TD><TD>113.</TD><TD>Tinkle Bell</TD></TR>
<TR><TD>50.</TD><TD>String Ensemble 2 (slow strings)</TD><TD>114.</TD><TD>Agogo</TD></TR>
<TR><TD>51.</TD><TD>SynthStrings 1</TD><TD>115.</TD><TD>Steel Drums</TD></TR>
<TR><TD>52.</TD><TD>SynthStrings 2</TD><TD>116.</TD><TD>Woodblock</TD></TR>
<TR><TD>53.</TD><TD>Choir Aahs</TD><TD>117.</TD><TD>Taiko Drum</TD></TR>
<TR><TD>54.</TD><TD>Voice Oohs</TD><TD>118.</TD><TD>Melodic Tom</TD></TR>
<TR><TD>55.</TD><TD>Synth Voice</TD><TD>119.</TD><TD>Synth Drum</TD></TR>
<TR><TD>56.</TD><TD>Orchestra Hit</TD><TD>120.</TD><TD>Reverse Cymbal</TD></TR>
<TR><TD>57.</TD><TD>Trumpet</TD><TD>121.</TD><TD>Guitar Fret Noise</TD></TR>
<TR><TD>58.</TD><TD>Trombone</TD><TD>122.</TD><TD>Breath Noise</TD></TR>
<TR><TD>59.</TD><TD>Tuba</TD><TD>123.</TD><TD>Seashore</TD></TR>
<TR><TD>60.</TD><TD>Muted Trumpet</TD><TD>124.</TD><TD>Bird Tweet</TD></TR>
<TR><TD>61.</TD><TD>French Horn</TD><TD>125.</TD><TD>Telephone Ring</TD></TR>
<TR><TD>62.</TD><TD>Brass Section</TD><TD>126.</TD><TD>Helicopter</TD></TR>
<TR><TD>63.</TD><TD>SynthBrass 1</TD><TD>127.</TD><TD>Applause</TD></TR>
<TR><TD>64.</TD><TD>SynthBrass 2</TD><TD>128.</TD><TD>Gunshot</TD></TR>
</TABLE>
<HR>
<H3><A id="BMA1_5">Appendix 1.5 - General MIDI Percussion Key Map</A></H3>
<P>
On MIDI Channel 10, each MIDI Note number ("Key#") corresponds