Differenze tra le versioni di "Verificare la corrispondenza fra il numero di tracce dichiarato nel file Midi e quelle effettive"
Da Gambas-it.org - Wikipedia.
(Creata pagina con '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...') |
|||
(5 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
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. | 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: | 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 mid As String | ||
Dim fl As File | Dim fl As File | ||
Dim bb As Byte[] | Dim bb As Byte[] | ||
− | |||
Dim i As Integer | Dim i As Integer | ||
Dim ii As New Integer[] | Dim ii As New Integer[] | ||
− | + | mid = "<FONT Color=darkgreen>''/percorso/del/file.mid''</font>" | |
+ | |||
+ | fl = Open mid For Read | ||
− | + | With bb = New Byte[Lof(fl)] | |
− | + | .Read(fl, 0, bb.Count) | |
− | + | End With | |
− | |||
− | + | fl.Close | |
− | + | Repeat | |
− | + | i = InStr(bb.ToString(0, bb.Count), "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 "File MIDI: \e[32m"; mid | |
+ | Print "\n\e[0mNumero tracce dichiarate nel file: \e[34m"; bb[11] | ||
+ | Print "\n\e[0mTracce effettivamente trovate: \e[1m\e[31m"; ii.Count | ||
+ | |||
+ | For i = 0 To ii.Max | ||
+ | Print "\e[0mTraccia: "; Format(i + 1, "##"), "Offset:"; Format(ii[i] - 1, "######") | ||
+ | Next | ||
− | + | End | |
− | |||
− | |||
− | |||
− |
Versione attuale delle 10:56, 19 giu 2024
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 mid As String Dim fl As File Dim bb As Byte[] Dim i As Integer Dim ii As New Integer[] mid = "/percorso/del/file.mid" fl = Open mid For Read With bb = New Byte[Lof(fl)] .Read(fl, 0, bb.Count) End With fl.Close Repeat i = InStr(bb.ToString(0, bb.Count), "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 "File MIDI: \e[32m"; mid Print "\n\e[0mNumero tracce dichiarate nel file: \e[34m"; bb[11] Print "\n\e[0mTracce effettivamente trovate: \e[1m\e[31m"; ii.Count For i = 0 To ii.Max Print "\e[0mTraccia: "; Format(i + 1, "##"), "Offset:"; Format(ii[i] - 1, "######") Next End