192 = 1*102 + 9*101 + 2*100
192 = 128 + 64 = 1*27 + 1*26 donne (en regroupant les chiffres par 8 = 1 octet) 1100 0000
192 = 12*161 donne C0
Les hexa sont groupés par 2 = 1 octet
| 1. 0 | durée entre notes : |
| 1. 171 | 171 ticks |
| 2. 162 | 162 + (192-171) = 183 ticks |
| 3. 162 | 162 + (192-162) = 192 ticks |
| 4. 173 | 173 + (192-162) = 203 ticks
|
Liste de tous les octets contenus dans le fichier NotesRepetees.mid, représentés au format hexadécimal, avec leur traduction :
| Entête (Header chunk) |
4D 54 68 64 00 00 00 06 00 00 00 01 00 C0 |
"MThd" longueur = 6 octets format 0 1 piste (track) division = 128+64 = 192 ticks/noire |
| Données midi (Track chunk) |
4D 54 72 6B 00 00 00 3B
00 FF 01 07 54 72 61 63 6B 20 31
81 1F 90 3C 43
81 26 90 3C 42
81 32 90 3C 42
81 3C 90 3C 47 00 FF 2F 00
|
"MTrk" longueur = 32+16+8+2+1 = 59 octets
texte (méta-événement) "Track 1"
end-of-track (méta-événement)
|
0C = (0)000 1100 -> 8+4 = 12
81 1F = (1)000 0001 (0)001 1111 -> 128+16+8+4+2+1 = 159
total = 171 ticks
11 = (0)001 0001 -> 16+1 = 17
81 26 = (1)000 0001 (0)010 0110 -> 128+32+4+2 = 166
total = 183 ticks
0E = (0)000 1110 -> 8+4+2 = 14
81 32 = (1)000 0001 (0)011 0010 -> 128+32+16+2 = 178
total = 192 ticks
0F = (0)000 1111 -> 8+4+2+1 = 15
81 3C = (1)000 0001 (0)011 1100 -> 128+32+16+8+4 = 188
total = 203 ticks
0E = (0)000 1110
(define (dump-midifile nom-fich)
(let ((liste-octets (lecture (open-input-file nom-fich))))
(map (lambda (x) (display (car x)) (display (cadr x)) (display " ")) liste-octets)
'ok))
;;; (dump-midifile "NotesRepetees.mid")
(define (lecture port)
(let ((octet (read-char port)))
(if (eof-object? octet) ()
(cons (reverse (octet->hexa (char->integer octet)))
(lecture port)))))
(define (octet->hexa n)
(list (traduit-hexa (remainder n 16)) (traduit-hexa (quotient n 16))))
(define (traduit-hexa i)
(case i
((10) "A") ((11) "B") ((12) "C") ((13) "D") ((14) "E") ((15) "F") (else i)))
4D 54 68 64 00 00 00 06 00 01 00 02 01 E0 4D 54 72 6B 00 00 00 4A 08 FF 58 04 0C 03 0C 0C 8D 64 90 45 32 00 39 32 00 3F 32 83 60 3F 00 00 45 00 00 39 00 81 20 39 28 00 45 28 00 3F 28 82 40 3F 00 00 45 00 00 39 00 81 20 39 2D 00 45 2D 00 3E 2D 83 60 39 00 00 45 00 00 3E 00 83 5C FF 2F 00 4D 54 72 6B 00 00 00 38 8D 6C 90 23 32 83 60 23 00 00 2F 30 81 20 2F 00 00 27 35 82 40 27 00 00 33 2B 81 20 33 00 00 28 37 82 40 28 00 00 34 35 81 20 34 00 00 28 2E 82 40 28 00 81 1C FF 2F 00