Differenze tra le versioni di "Conoscere la lunghezza in byte di ciascuna traccia MTrk di un file Midi"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per conoscere la lunghezza in byte di ciascuna traccia MTrk di un file Midi standard, si può adottare i seguente codice: Public Sub Main() Dim filemidi As String Dim i...")
 
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 1: Riga 1:
Per conoscere la lunghezza in byte di ciascuna traccia MTrk di un file Midi standard, si può adottare i seguente codice:
+
Per conoscere la lunghezza in byte di ciascuna traccia [https://www.gambas-it.org/wiki/index.php/La_struttura_di_un_file_Midi#Il_blocco_Traccia_.28MTrk.29 '''MTrk'''] di un file Midi standard, si può adottare i seguente codice:
 
  Public Sub Main()
 
  Public Sub Main()
 
   
 
   
Riga 10: Riga 10:
 
   
 
   
 
   mid = Open filemidi For Read
 
   mid = Open filemidi For Read
 +
 +
  Print "=== Tracce MTrk ==="
 
   
 
   
 
   Repeat
 
   Repeat
Riga 17: Riga 19:
 
  <FONT Color=gray>' ''Cerca il valore numerico corrispondente ai quattro caratteri ASCII "MTrk":''</font>
 
  <FONT Color=gray>' ''Cerca il valore numerico corrispondente ai quattro caratteri ASCII "MTrk":''</font>
 
     If i == 1802654797 Then
 
     If i == 1802654797 Then
  <FONT Color=gray>' ''Ottiene il valore numerico della lunghezza della traccia "MTrk" dalla sua memorizzazione in formato Big-Endian:''</font> <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
+
  <FONT Color=gray>' ''Ottiene il valore numerico della lunghezza della traccia "MTrk" dalla sua memorizzazione di quattro byte in formato Big-Endian:''</font> <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
 
       For n = 1 To 4
 
       For n = 1 To 4
 
         Read #mid, b
 
         Read #mid, b

Versione attuale delle 02:53, 2 lug 2023

Per conoscere la lunghezza in byte di ciascuna traccia MTrk di un file Midi standard, si può adottare i seguente codice:

Public Sub Main()

 Dim filemidi As String
 Dim i, c, n, j As Integer
 Dim b, t As Byte
 Dim mid As File

 filemidi = "/percorso/del/file/Midi"

 mid = Open filemidi For Read

 Print "=== Tracce MTrk ==="

 Repeat
' Avanza dall'inizio del file Midi di un byte alla volta:
   Seek #mid, c
   Read #mid, i
' Cerca il valore numerico corrispondente ai quattro caratteri ASCII "MTrk":
   If i == 1802654797 Then
' Ottiene il valore numerico della lunghezza della traccia "MTrk" dalla sua memorizzazione di quattro byte in formato Big-Endian: [nota 1]
     For n = 1 To 4
       Read #mid, b
       j = Shl(j, 8) Or b
     Next
     Inc t
     Print "Traccia n. \e[1m"; Format(t, "##")
     Print "\e[0mPosizione indice = "; c
     Print "Lunghezza = \e[31m"; Format(j, "######"); "\e[0m byte\n"
   Endif
   Inc c
 Until Eof(mid)

 mid.Close

End


Note

[1] Al riguardo vedere la seguente pagina: Ottenere un numero dalla sua memorizzazione in formato Big-Endian