Verificare la corrispondenza fra il numero di tracce dichiarato nel file Midi e quelle effettive
Da Gambas-it.org - Wikipedia.
Versione del 10 giu 2015 alle 07:49 di Vuott (Discussione | contributi)
La quantità delle tracce Midi, ciascuna individuata dall'identificativo MTrk, è riportata in ordine Little-Endian dai byte di indice 10 e 11 del file Midi, ossia dal 11° e dal 12° byte del blocco d'intestazione del file medesimo.
Per verificare la corrispondenza fra il numero di tracce dichiarato nel predetto blocco header del file Midi e quelle effettivamente esistenti, si potrà adottare il seguente codice:
Public Sub Main() Dim fl As File Dim bb As Byte[] Dim s As String Dim i As Integer Dim ii As New Integer[] fl = Open "/percorso/del/file.mid" For Read With bb = New Byte[Lof(fl)] .Read(fl, 0, bb.Count) s = .ToString(0, bb.Count) End With fl.Close Repeat i = InStr(s, "MTrk", i + 1) ii.Push(i) Until i = 0 ii.Remove(ii.Max, 1) If bb[11] <> ii.Count Then Error.Raise("Numero di Tracce dichiarato nel file Midi diverso dalle Tracce effettivamente trovate !") Endif Print "Sono state trovate "; ii.Count; " Tracce ai byte di indice:" For i = 0 To ii.Max Print String$(i, "\x20"); ii[i] - 1 Next End