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.
(5 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 "Durata del file Midi: "; | + | 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