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.
(Creata pagina con '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 inst...') |
|||
(6 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 | + | Private Extern smf_get_length_seconds(smf_t As Smf_struct) As Float |
+ | |||
+ | <FONT Color=gray>' ''void smf_delete (smf_t *smf)'' | ||
+ | ' ''Frees smf and all it's descendant structures.''</font> | ||
+ | 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''") | + | smf = smf_load("<FONT Color=darkgreen>''/percorso/del/file.mid''</font>") |
durata = smf_get_length_seconds(smf) | durata = smf_get_length_seconds(smf) | ||
− | Print | + | smf_delete(smf) |
+ | |||
+ | Print "Durata del file Midi: "; Time(0, 0, 0, durata * 1000) | ||
− | + | End | |
− | |||
Versione attuale delle 10:43, 19 giu 2024
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