Mostrare i dati del blocco d'intestazione e delle tracce di un file Midi con le sole risorse di Gambas: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
(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...') |
Nessun oggetto della modifica |
||
| 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 16: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