Mostrare i dati del blocco d'intestazione e delle tracce di un file Midi con le sole risorse di Gambas: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
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
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
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:
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()
  Public Sub Main()
    
    
   Dim midi, s, r As String
   Dim midi, s, r As String
Riga 8: Riga 8:
   Dim bb As Byte[]
   Dim bb As Byte[]
    
    
  midi = "<FONT Color=gray>''/percorso/del/file.mid''</font>"
  midi = "<FONT Color=darkgreen>''/percorso/del/file.mid''</font>"
    
    
  s = File.Load(midi)
  s = File.Load(midi)
  If IsNull(s) Then Error.Raise("File privo di dati !")
  If IsNull(s) Then Error.Raise("File privo di dati !")
  Print "File Midi: "; midi
  Print "File Midi: "; midi
  Print "Dimensione: "; Len(s);; "byte\n\n== Dati contenuti dal file Midi =="
  Print "Dimensione: "; Len(s);; "byte\n\n== Dati contenuti dal file Midi =="
    
    
  i = Asc(Mid(s, 12, 1))
  i = Asc(Mid(s, 12, 1))
  If i = 0 Then Error.Raise("Risultano zero Tracce Midi !")
  If i == 0 Then Error.Raise("Risultano zero Tracce Midi !")
    
    
  If Left(s, 4) <> "MThd" Then Error.Raise("Non è un file Midi standard !")
  If Left(s, 4) <> "MThd" Then Error.Raise("Non è un file Midi standard !")
  ss = Scan(s, "Mth*" & String(i, "MTr*"))
  ss = Scan(s, "Mth*" & String(i, "MTr*"))
    
    
  For b = 0 To ss.Max
  For b = 0 To ss.Max
    s = "4D 54 72 6B"
    s = "4D 54 72 6B"
    r = "Traccia n. " & b
    r = "Traccia n. " & b
    If b = 0 Then
    If b == 0 Then
      s = "4D 54 68 64"
      s = "4D 54 68 64"
      r = "blocco d'intestazione"
      r = "Blocco d'intestazione (MThd)"
    Endif
    Endif
    bb = Byte[].FromString(ss[b])
    bb = Byte[].FromString(ss[b])
    Print "\nLunghezza "; r; ":";; bb.Count + 3;; "byte"
    Print "\n\e[1mLunghezza "; r; ":\e[31m";; bb.Count + 3;; "byte\e[0m"
    For i = 0 To bb.Max
    For i = 0 To bb.Max
      If i = 0 Then
      If i == 0 Then
        Print s;;
        Print s;;
      Else
      Else
        Print Hex(bb[i], 2);;
        Print Hex(bb[i], 2);;
      Endif
      Endif
    Next
    Next
    Print
    Print
  Next
  Next
    
    
  '''End'''
  End

Versione attuale delle 15:01, 20 set 2025

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 (MThd)"
   Endif
   bb = Byte[].FromString(ss[b])
   Print "\n\e[1mLunghezza "; r; ":\e[31m";; bb.Count + 3;; "byte\e[0m"
   For i = 0 To bb.Max
     If i == 0 Then
       Print s;;
     Else
       Print Hex(bb[i], 2);;
     Endif
   Next
   Print
 Next
  
End