@@ -12,16 +12,16 @@ enum kMIDIFile {
12
12
// swiftformat:options --maxwidth none
13
13
14
14
/// Example Digital Performer 8 MIDI file export containing marker and cue point events.
15
- static let DP8Markers : [ UInt8 ] = [
16
- 0x4D , 0x54 , 0x68 , 0x64 , // MThd
15
+ static let dp8Markers : [ UInt8 ] = [
16
+ 0x4D , 0x54 , 0x68 , 0x64 , // " MThd"
17
17
0x00 , 0x00 , 0x00 , 0x06 , // 6 header bytes
18
18
0x00 , 0x01 , // type 1 file
19
- 0x00 , 0x03 , // 3 tracks
19
+ 0x00 , 0x03 , // 3 chunks
20
20
0x01 , 0xE0 , // musical divisions, 480 ticks per quarter
21
21
22
22
// track 1
23
- 0x4D , 0x54 , 0x72 , 0x6B , // MTrk
24
- 0x00 , 0x00 , 0x00 , 0xBE , // track length
23
+ 0x4D , 0x54 , 0x72 , 0x6B , // " MTrk"
24
+ 0x00 , 0x00 , 0x00 , 0xBE , // track length (int 190)
25
25
0x00 , 0xFF , 0x03 , 0x05 , 0x53 , 0x65 , 0x71 , 0x2D , 0x31 , // track name
26
26
0x00 , 0xFF , 0x54 , 0x05 , 0x40 , 0x00 , 0x00 , 0x00 , 0x00 , // SMPTE offset
27
27
0x00 , 0xFF , 0x58 , 0x04 , 0x04 , 0x02 , 0x18 , 0x08 , // time signature
@@ -55,18 +55,51 @@ enum kMIDIFile {
55
55
0x00 , 0xFF , 0x2F , 0x00 , // end of track
56
56
57
57
// track 2
58
- 0x4D , 0x54 , 0x72 , 0x6B , // MTrk
58
+ 0x4D , 0x54 , 0x72 , 0x6B , // " MTrk"
59
59
0x00 , 0x00 , 0x00 , 0x1A , // track length
60
60
0x00 , 0xFF , 0x03 , 0x06 , 0x4D , 0x49 , 0x44 , 0x49 , 0x2D , 0x31 , // track name
61
61
0x81 , 0xD3 , 0x8E , 0x77 , 0x90 , 0x3B , 0x40 , // note on
62
62
0x86 , 0x60 , 0x80 , 0x3B , 0x40 , // note off
63
63
0x00 , 0xFF , 0x2F , 0x00 , // end of track
64
64
65
65
// track 3
66
- 0x4D , 0x54 , 0x72 , 0x6B , // MTrk
66
+ 0x4D , 0x54 , 0x72 , 0x6B , // " MTrk"
67
67
0x00 , 0x00 , 0x00 , 0x13 , // track length
68
68
0x00 , 0xFF , 0x03 , 0x06 , 0x4D , 0x49 , 0x44 , 0x49 , 0x2D , 0x32 , // track name
69
69
0x00 , 0xFF , 0x20 , 0x01 , 0x00 , // channel prefix: chan 0
70
70
0x00 , 0xFF , 0x2F , 0x00 // end of track
71
71
]
72
+
73
+ /// Example MIDI file containing a custom chunk.
74
+ static let customChunk : [ UInt8 ] = [
75
+ 0x4D , 0x54 , 0x68 , 0x64 , // "MThd"
76
+ 0x00 , 0x00 , 0x00 , 0x06 , // 6 header bytes
77
+ 0x00 , 0x01 , // type 1 file
78
+ 0x00 , 0x03 , // 2 chunks
79
+ 0x01 , 0xE0 , // musical divisions, 480 ticks per quarter
80
+
81
+ // chunk 1 - track
82
+ 0x4D , 0x54 , 0x72 , 0x6B , // "MTrk"
83
+ 0x00 , 0x00 , 0x00 , 0x3F , // track length (int 63)
84
+ 0x00 , 0xFF , 0x03 , 0x05 , 0x50 , 0x69 , 0x61 , 0x6E , 0x6F , // track name, 5 bytes, "Piano"
85
+ 0x00 , 0xFF , 0x04 , 0x10 , // instrument name, 0x10 (16) bytes, "Steinway Piano 2"
86
+ 0x53 , 0x74 , 0x65 , 0x69 ,
87
+ 0x6E , 0x77 , 0x61 , 0x79 ,
88
+ 0x20 , 0x50 , 0x69 , 0x61 ,
89
+ 0x6E , 0x6F , 0x20 , 0x32 ,
90
+ 0x00 , 0xFF , 0x58 , 0x04 , 0x04 , 0x02 , 0x18 , 0x08 , // time signature
91
+ 0x00 , 0xFF , 0x59 , 0x02 , 0x00 , 0x00 , // key signature
92
+ 0x00 , 0xFF , 0x54 , 0x05 , 0x60 , 0x00 , 0x00 , 0x00 , 0x00 , // SMPTE offset
93
+ 0x00 , 0xFF , 0x51 , 0x03 , 0x07 , 0xA1 , 0x1F , // tempo
94
+ 0x00 , 0xFF , 0x2F , 0x00 , // end of track
95
+
96
+ // chunk 2 - custom chunk
97
+ 0x4B , 0x64 , 0x6F , 0x63 , // "Kdoc"
98
+ 0x00 , 0x00 , 0x00 , 0x23 , // track length (35 bytes)
99
+ 0x0D , 0x00 , 0x00 , 0x80 , 0x3F , 0x10 , 0x01 , 0x22 ,
100
+ 0x14 , 0x0D , 0x00 , 0x00 , 0xF0 , 0x41 , 0x15 , 0x00 ,
101
+ 0x00 , 0x48 , 0x42 , 0x1D , 0x00 , 0x00 , 0xA0 , 0x41 ,
102
+ 0x25 , 0x00 , 0x00 , 0x20 , 0x42 , 0x30 , 0x02 , 0x38 ,
103
+ 0x16 , 0x40 , 0x5A
104
+ ]
72
105
}
0 commit comments