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.
Riga 6: Riga 6:
 
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 29:
 
  <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 38:
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
   
 
   
   Dim smf As Pointer
+
   Dim smf As smf_struct
 
   Dim durata As Float
 
   Dim durata As Float
 
    
 
    

Versione delle 03:20, 1 giu 2016

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: "; Date(0, 0, 0, 0, 0, 0, durata * 1000)

End



Riferimenti