Differenze tra le versioni di "Estrarre informazioni da un file Midi con le sole funzioni di Gambas"

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Mostreremo un possibile codice per ottenere da un file Midi le seguenti informazioni: * Nome; * Dimensione; * Tipo; * Quantità di tracce presenti; * Risoluzione PPQN; * Tempo...')
 
Riga 19: Riga 19:
 
    
 
    
 
  <FONT color=gray>' ''Mostra il nome del file Midi:''</font>
 
  <FONT color=gray>' ''Mostra il nome del file Midi:''</font>
  Print "Nome del file Midi: "; File.Name(file_midi)
+
  Print "Nome del file Midi: "; File.Name(file_midi)
 
   
 
   
 
  <FONT color=gray>' ''Verifica la dimensione del file Midi:''</font>
 
  <FONT color=gray>' ''Verifica la dimensione del file Midi:''</font>
  Print "Dimensione del file Midi: "; Lof(fl); " byte"
+
  Print "Dimensione del file Midi: "; Lof(fl); " byte"
 
    
 
    
 
  <FONT color=gray>' ''Legge l'intero file Midi e carica i dati nella variabile "bb":''</font>
 
  <FONT color=gray>' ''Legge l'intero file Midi e carica i dati nella variabile "bb":''</font>
  With bb = New Byte[Lof(fl)]
+
  With bb = New Byte[Lof(fl)]
    .Read(fl)
+
    .Read(fl)
  End With
+
  End With
 
   
 
   
 
  <FONT color=gray>' ''Verifica che il file caricato sia un file Midi standard:''</font>
 
  <FONT color=gray>' ''Verifica che il file caricato sia un file Midi standard:''</font>
  If bb.ToString(0, 4) <> "MThd" Then Error.Raise("Il file caricato non è un file Midi !")
+
  If bb.ToString(0, 4) <> "MThd" Then Error.Raise("Il file caricato non è un file Midi !")
 
    
 
    
 
  <FONT color=gray>' ''Verifica il tipo di file Midi:''</font>
 
  <FONT color=gray>' ''Verifica il tipo di file Midi:''</font>
  Print "Tipo di file Midi: "; CStr(bb[9])
+
  Print "Tipo di file Midi: "; CStr(bb[9])
 
    
 
    
 
  <FONT color=gray>' ''Verifica la quantità di tracce presenti nel File Midi:''</font>
 
  <FONT color=gray>' ''Verifica la quantità di tracce presenti nel File Midi:''</font>
  Print "Numero tracce presenti: "; CStr(bb[11])
+
  Print "Numero tracce presenti: "; CStr(bb[11])
 
    
 
    
 
  <FONT color=gray>' ''Verifica la risoluzione PPQN del file Midi:''</font>
 
  <FONT color=gray>' ''Verifica la risoluzione PPQN del file Midi:''</font>
  Print "Risoluzione PPQN: "; Val("&" & Hex(bb[12]) & Hex(bb[13]))
+
  Print "Risoluzione PPQN: "; Val("&" & Hex(bb[12]) & Hex(bb[13]))
 
   
 
   
 
  <FONT color=gray>' ''Verifica il Tempo metronomico iniziale del file Midi:''</font>
 
  <FONT color=gray>' ''Verifica il Tempo metronomico iniziale del file Midi:''</font>
  i = InStr(bb.ToString(0, Lof(fl)), Chr(&FF) & Chr(&51) & Chr(&03))
+
  i = InStr(bb.ToString(0, Lof(fl)), Chr(&FF) & Chr(&51) & Chr(&03))
  If i > 0 Then
+
  If i > 0 Then
    t = 60000000 \ Val("&" & Hex(bb[i + 2]) & Hex(bb[i + 3]) & Hex(bb[i + 4]))
+
    t = 60000000 \ Val("&" & Hex(bb[i + 2]) & Hex(bb[i + 3]) & Hex(bb[i + 4]))
  Else
+
  Else
    t = 120
+
    t = 120
  Endif
+
  Endif
  Print "Tempo metronomico: "; t
+
  Print "Tempo metronomico: "; t
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione delle 09:19, 18 ago 2014

Mostreremo un possibile codice per ottenere da un file Midi le seguenti informazioni:

  • Nome;
  • Dimensione;
  • Tipo;
  • Quantità di tracce presenti;
  • Risoluzione PPQN;
  • Tempo metronomico iniziale.
Public Sub Main()

 Dim file_midi As String = "/percorso/del/file.mid"
 Dim fl As File
 Dim bb As Byte[]
 Dim i As Integer
 Dim t As Short
 
 
  fl = Open file_midi For Read
 
' Mostra il nome del file Midi:
  Print "Nome del file Midi: "; File.Name(file_midi)

' Verifica la dimensione del file Midi:
  Print "Dimensione del file Midi: "; Lof(fl); " byte"
 
' Legge l'intero file Midi e carica i dati nella variabile "bb":
  With bb = New Byte[Lof(fl)]
    .Read(fl)
  End With

' Verifica che il file caricato sia un file Midi standard:
  If bb.ToString(0, 4) <> "MThd" Then Error.Raise("Il file caricato non è un file Midi !")
 
' Verifica il tipo di file Midi:
  Print "Tipo di file Midi: "; CStr(bb[9])
 
' Verifica la quantità di tracce presenti nel File Midi:
  Print "Numero tracce presenti: "; CStr(bb[11])
 
' Verifica la risoluzione PPQN del file Midi:
  Print "Risoluzione PPQN: "; Val("&" & Hex(bb[12]) & Hex(bb[13]))

' Verifica il Tempo metronomico iniziale del file Midi:
  i = InStr(bb.ToString(0, Lof(fl)), Chr(&FF) & Chr(&51) & Chr(&03))
  If i > 0 Then
    t = 60000000 \ Val("&" & Hex(bb[i + 2]) & Hex(bb[i + 3]) & Hex(bb[i + 4]))
  Else
    t = 120
  Endif
  Print "Tempo metronomico: "; t
 
End