1 USING: io.encodings.binary io.streams.byte-array midi
2 midi.private sequences tools.test ;
5 ! variable-width numbers
32 B{ 0x81 0x80 0x80 0x00 }
33 B{ 0xC0 0x80 0x80 0x00 }
34 B{ 0xff 0xff 0xff 0x7f }
35 } [ binary [ read-number ] with-byte-reader ] map
49 B{ 0x81 0x80 0x80 0x00 }
50 B{ 0xC0 0x80 0x80 0x00 }
51 B{ 0xff 0xff 0xff 0x7f }
67 } [ binary [ write-number ] with-byte-writer ] map
87 { name "time-signature" }
90 { "clocks-per-tick" 24 }
94 "notated-32nd-notes-per-beat"
107 { name "program-change" }
117 { name "program-change" }
127 { name "program-change" }
225 { name "end-of-track" }
244 0x00 0xFF 0x58 0x04 0x04 0x02 0x18 0x08
245 0x00 0xFF 0x51 0x03 0x07 0xA1 0x20
253 0x81 0x40 0x82 0x30 0x40
278 { name "time-signature" }
281 { "clocks-per-tick" 24 }
285 "notated-32nd-notes-per-beat"
298 { name "end-of-track" }
309 { name "program-change" }
341 { name "end-of-track" }
352 { name "program-change" }
384 { name "end-of-track" }
395 { name "program-change" }
449 { name "end-of-track" }
468 0x00 0xFF 0x58 0x04 0x04 0x02 0x18 0x08
469 0x00 0xFF 0x51 0x03 0x07 0xA1 0x20
470 0x83 0x00 0xFF 0x2F 0x00
475 0x81 0x40 0x90 0x4C 0x20