Differenze tra le versioni di "Conoscere la durata di un file Midi mediante le funzioni esterne del API di Libsmf"

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
La libreria ''Libsmf'', ideata per la gestione degli ''standard Midi File'', consente, fra l'altro, di conoscere la durata in secondi di un file Midi.
 
La libreria ''Libsmf'', ideata per la gestione degli ''standard Midi File'', consente, fra l'altro, di conoscere la durata in secondi di un file Midi.
  
E' necessario aver installata e richiamare la libreria condivisa: "''libsmf:0.0.0''"
+
E' necessario aver installata e richiamare la libreria condivisa: "''libsmf:0.0.0'' ".
 
 
  
 
Mostriamo un semplice esempio:
 
Mostriamo un semplice esempio:
 
  Library "libsmf:0.0.0"
 
  Library "libsmf:0.0.0"
 +
 +
Public Struct smf_struct
 +
  formati As Integer
 +
  ppqn As Integer
 +
  frames_per_second As Integer
 +
  resolution As Integer
 +
  number_of_tracks As Integer
 +
  streamf As Pointer
 +
  file_buffer As Pointer
 +
  file_buffer_length As Integer
 +
  next_chunk_offset As Integer
 +
  expected_number_of_tracks As Integer
 +
  tracks_array As Pointer
 +
  last_seek_position As Float
 +
  tempo_array As Pointer
 +
End Struct
 
   
 
   
 
  <FONT Color=gray>' ''smf_t* smf_load (const char * file_name)''
 
  <FONT Color=gray>' ''smf_t* smf_load (const char * file_name)''
Riga 13: Riga 28:
 
  <FONT Color=gray>' ''double smf_get_length_seconds (const smf_t * smf)
 
  <FONT Color=gray>' ''double smf_get_length_seconds (const smf_t * smf)
 
  ' ''Length of SMF, in seconds.''</font>
 
  ' ''Length of SMF, in seconds.''</font>
  Private Extern smf_get_length_seconds(smf_t As Pointer) As Float
+
  Private Extern smf_get_length_seconds(smf_t As Smf_struct) As Float
 
   
 
   
 
  <FONT Color=gray>' ''void smf_delete (smf_t *smf)''
 
  <FONT Color=gray>' ''void smf_delete (smf_t *smf)''
Riga 22: Riga 37:
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
   
 
   
   Dim smf As Pointer
+
   Dim smf As smf_struct
 
   Dim durata As Float
 
   Dim durata As Float
 
    
 
    
Riga 31: Riga 46:
 
   smf_delete(smf)
 
   smf_delete(smf)
 
    
 
    
   Print "Durata del file Midi: "; Date(0, 0, 0, 0, 0, 0, durata * 1000)
+
   Print "Durata del file Midi: "; Time(0, 0, 0, durata * 1000)
 
   
 
   
 
  '''End'''
 
  '''End'''
 
  
  

Versione attuale delle 18:44, 2 dic 2021

La libreria Libsmf, ideata per la gestione degli standard Midi File, consente, fra l'altro, di conoscere la durata in secondi di un file Midi.

E' necessario aver installata e richiamare la libreria condivisa: "libsmf:0.0.0 ".

Mostriamo un semplice esempio:

Library "libsmf:0.0.0"

Public Struct smf_struct
  formati As Integer
  ppqn As Integer
  frames_per_second As Integer
  resolution As Integer
  number_of_tracks As Integer
  streamf As Pointer
  file_buffer As Pointer
  file_buffer_length As Integer
  next_chunk_offset As Integer
  expected_number_of_tracks As Integer
  tracks_array As Pointer
  last_seek_position As Float
  tempo_array As Pointer
End Struct

' smf_t* smf_load (const char * file_name)
' Loads SMF file.
Private Extern smf_load(file_name As String) As Pointer

' double smf_get_length_seconds (const smf_t * smf)
' Length of SMF, in seconds.
Private Extern smf_get_length_seconds(smf_t As Smf_struct) As Float

' void smf_delete (smf_t *smf)
' Frees smf and all it's descendant structures.
Private Extern smf_delete(smf As Smf_struct)


Public Sub Main()

 Dim smf As smf_struct
 Dim durata As Float
 
  smf = smf_load("/percorso/del/file.mid")
   
  durata = smf_get_length_seconds(smf)
   
  smf_delete(smf)
  
  Print "Durata del file Midi: "; Time(0, 0, 0, durata * 1000)

End


Riferimenti