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.
 
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()
+
  Public Sub Main()
 
    
 
    
 
   Dim mid As String
 
   Dim mid As String
Riga 11: Riga 10:
 
   Dim ii As New Integer[]
 
   Dim ii As New Integer[]
 
    
 
    
   mid = "<FONT Color=gray>''/percorso/del/file.mid''</font>"
+
   mid = "<FONT Color=darkgreen>''/percorso/del/file.mid''</font>"
 
    
 
    
 
   fl = Open mid For Read
 
   fl = Open mid For Read
Riga 40: Riga 39:
 
   Next
 
   Next
 
    
 
    
  '''End'''
+
  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