Conoscere la lunghezza in byte di ciascuna traccia MTrk di un file Midi

Da Gambas-it.org - Wikipedia.

Per conoscere la lunghezza in byte di ciascuna traccia MTrk di un file Midi standard, si può adottare i seguente codice:

Public Sub Main()

 Dim filemidi As String
 Dim i, c, n, j As Integer
 Dim b, t As Byte
 Dim mid As File

 filemidi = "/percorso/del/file/Midi"

 mid = Open filemidi For Read

 Print "=== Tracce MTrk ==="

 Repeat
' Avanza dall'inizio del file Midi di un byte alla volta:
   Seek #mid, c
   Read #mid, i
' Cerca il valore numerico corrispondente ai quattro caratteri ASCII "MTrk":
   If i == 1802654797 Then
' Ottiene il valore numerico della lunghezza della traccia "MTrk" dalla sua memorizzazione di quattro byte in formato Big-Endian: [nota 1]
     For n = 1 To 4
       Read #mid, b
       j = Shl(j, 8) Or b
     Next
     Inc t
     Print "Traccia n. \e[1m"; Format(t, "##")
     Print "\e[0mPosizione indice = "; c
     Print "Lunghezza = \e[31m"; Format(j, "######"); "\e[0m byte\n"
   Endif
   Inc c
 Until Eof(mid)

 mid.Close

End


Note

[1] Al riguardo vedere la seguente pagina: Ottenere un numero dalla sua memorizzazione in formato Big-Endian