Differenze tra le versioni di "Mostrare i dati del blocco d'intestazione e delle tracce di un file Midi con le sole risorse di Gambas"
Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Per mostrare in console i dati in rappresentazione esadecimale del blocco d'intestazione (''header chunk'') e di ciascuna traccia di un file Midi con le sole risorse di Gambas...') |
|||
Riga 8: | Riga 8: | ||
Dim bb As Byte[] | Dim bb As Byte[] | ||
− | + | midi = "<FONT Color=gray>''/percorso/del/file.mid''</font>" | |
− | + | s = File.Load(midi) | |
− | + | If IsNull(s) Then Error.Raise("File privo di dati !") | |
− | + | Print "File Midi: "; midi | |
− | + | Print "Dimensione: "; Len(s);; "byte\n\n== Dati contenuti dal file Midi ==" | |
− | + | i = Asc(Mid(s, 12, 1)) | |
− | + | If i == 0 Then Error.Raise("Risultano zero Tracce Midi !") | |
− | + | If Left(s, 4) <> "MThd" Then Error.Raise("Non è un file Midi standard !") | |
− | + | ss = Scan(s, "Mth*" & String(i, "MTr*")) | |
− | + | For b = 0 To ss.Max | |
− | + | s = "4D 54 72 6B" | |
− | + | r = "Traccia n. " & b | |
− | + | If b == 0 Then | |
− | + | s = "4D 54 68 64" | |
− | + | r = "blocco d'intestazione" | |
− | + | Endif | |
− | + | bb = Byte[].FromString(ss[b]) | |
− | + | Print "\nLunghezza "; r; ":";; bb.Count + 3;; "byte" | |
− | + | For i = 0 To bb.Max | |
− | + | If i == 0 Then | |
− | + | Print s;; | |
− | + | Else | |
− | + | Print Hex(bb[i], 2);; | |
− | + | Endif | |
− | + | Next | |
− | + | Print | |
− | + | Next | |
'''End''' | '''End''' |
Versione delle 15:35, 21 lug 2020
Per mostrare in console i dati in rappresentazione esadecimale del blocco d'intestazione (header chunk) e di ciascuna traccia di un file Midi con le sole risorse di Gambas, può essere adottato il seguente codice:
Public Sub Main() Dim midi, s, r As String Dim i As Integer Dim b As Byte Dim ss As String[] Dim bb As Byte[] midi = "/percorso/del/file.mid" s = File.Load(midi) If IsNull(s) Then Error.Raise("File privo di dati !") Print "File Midi: "; midi Print "Dimensione: "; Len(s);; "byte\n\n== Dati contenuti dal file Midi ==" i = Asc(Mid(s, 12, 1)) If i == 0 Then Error.Raise("Risultano zero Tracce Midi !") If Left(s, 4) <> "MThd" Then Error.Raise("Non è un file Midi standard !") ss = Scan(s, "Mth*" & String(i, "MTr*")) For b = 0 To ss.Max s = "4D 54 72 6B" r = "Traccia n. " & b If b == 0 Then s = "4D 54 68 64" r = "blocco d'intestazione" Endif bb = Byte[].FromString(ss[b]) Print "\nLunghezza "; r; ":";; bb.Count + 3;; "byte" For i = 0 To bb.Max If i == 0 Then Print s;; Else Print Hex(bb[i], 2);; Endif Next Print Next End