1 USING: io.encodings.binary io.streams.byte-array midi
2 midi.private sequences tools.test ;
4 ! variable-width numbers
31 B{ 0x81 0x80 0x80 0x00 }
32 B{ 0xC0 0x80 0x80 0x00 }
33 B{ 0xff 0xff 0xff 0x7f }
34 } [ binary [ read-number ] with-byte-reader ] map
48 B{ 0x81 0x80 0x80 0x00 }
49 B{ 0xC0 0x80 0x80 0x00 }
50 B{ 0xff 0xff 0xff 0x7f }
66 } [ binary [ write-number ] with-byte-writer ] map
86 { name "time-signature" }
89 { "clocks-per-tick" 24 }
93 "notated-32nd-notes-per-beat"
106 { name "program-change" }
116 { name "program-change" }
126 { name "program-change" }
224 { name "end-of-track" }
243 0x00 0xFF 0x58 0x04 0x04 0x02 0x18 0x08
244 0x00 0xFF 0x51 0x03 0x07 0xA1 0x20
252 0x81 0x40 0x82 0x30 0x40
277 { name "time-signature" }
280 { "clocks-per-tick" 24 }
284 "notated-32nd-notes-per-beat"
297 { name "end-of-track" }
308 { name "program-change" }
340 { name "end-of-track" }
351 { name "program-change" }
383 { name "end-of-track" }
394 { name "program-change" }
448 { name "end-of-track" }
467 0x00 0xFF 0x58 0x04 0x04 0x02 0x18 0x08
468 0x00 0xFF 0x51 0x03 0x07 0xA1 0x20
469 0x83 0x00 0xFF 0x2F 0x00
474 0x81 0x40 0x90 0x4C 0x20