Differenze tra le versioni di "Estrarre informazioni generali da un file audio con le funzioni esterne del API di Sox"
Da Gambas-it.org - Wikipedia.
Riga 4: | Riga 4: | ||
Potremo procedere con un codice simile al seguente: | Potremo procedere con un codice simile al seguente: | ||
− | + | Library "libsox:2.0.1" | |
+ | |||
+ | Public Struct sox_signalinfo_t | ||
rate As Float <FONT color=gray>' ''sox_rate_t: samples per second, 0 if unknown (typedef double sox_rate_t)''</font> | rate As Float <FONT color=gray>' ''sox_rate_t: samples per second, 0 if unknown (typedef double sox_rate_t)''</font> | ||
channels As Integer <FONT color=gray>' ''number of sound channels, 0 if unknown''</font> | channels As Integer <FONT color=gray>' ''number of sound channels, 0 if unknown''</font> | ||
precision As Integer <FONT color=gray>' ''bits per sample, 0 if unknown''</font> | precision As Integer <FONT color=gray>' ''bits per sample, 0 if unknown''</font> | ||
− | + | End Struct | |
− | + | Public Struct sox_format_t | |
filename As Pointer | filename As Pointer | ||
signal As Struct Sox_signalinfo_t | signal As Struct Sox_signalinfo_t | ||
− | + | End Struct | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Private sfIn As New Sox_format_t | |
+ | Private Const SOX_SUCCESS As Byte = 0 | ||
<FONT color=gray>' ''int sox_init(void)'' | <FONT color=gray>' ''int sox_init(void)'' | ||
' ''Client API: Initialize effects library. SOX_SUCCESS if successful.''</font> | ' ''Client API: Initialize effects library. SOX_SUCCESS if successful.''</font> | ||
− | + | Private Extern sox_init() As Integer | |
<FONT color=gray>' ''sox_format_t * sox_open_read(char const *path, sox_signalinfo_t const *signal, sox_encodinginfo_t const *encoding, char const *filetype)''</font> | <FONT color=gray>' ''sox_format_t * sox_open_read(char const *path, sox_signalinfo_t const *signal, sox_encodinginfo_t const *encoding, char const *filetype)''</font> | ||
− | + | Private Extern sox_open_read(path As String, signalP As Pointer, encoding As Pointer, filetype As String) As Sox_format_t | |
+ | |||
+ | <FONT color=gray>' ''sox_quit(void)'' | ||
+ | ' ''Close effects library and unload format handler plugins. Returns SOX_SUCCESS if successful.''</font> | ||
+ | Private Extern sox_quit() | ||
Riga 49: | Riga 51: | ||
Print "Risoluzione campionamento: "; .signal.precision; " bit" | Print "Risoluzione campionamento: "; .signal.precision; " bit" | ||
End With | End With | ||
+ | |||
+ | sox_quit() | ||
'''End''' | '''End''' |
Versione delle 10:08, 4 apr 2015
La libreria Sox contiene risorse per poter gestire ampiamente i file audio: riproduzione e registrazione, conversione di vari formati audio in altri formati, nonché applicazione di vari effetti.
Le risorse del API di Sox consentono anche di ottenere facilmente le informazioni basilari dai file audio, supportati dalla libreria Sox, richiamando l'attuale versione della libreria: libsox.so.2.0.1
Potremo procedere con un codice simile al seguente:
Library "libsox:2.0.1" Public Struct sox_signalinfo_t rate As Float ' sox_rate_t: samples per second, 0 if unknown (typedef double sox_rate_t) channels As Integer ' number of sound channels, 0 if unknown precision As Integer ' bits per sample, 0 if unknown End Struct Public Struct sox_format_t filename As Pointer signal As Struct Sox_signalinfo_t End Struct Private sfIn As New Sox_format_t Private Const SOX_SUCCESS As Byte = 0 ' int sox_init(void) ' Client API: Initialize effects library. SOX_SUCCESS if successful. Private Extern sox_init() As Integer ' sox_format_t * sox_open_read(char const *path, sox_signalinfo_t const *signal, sox_encodinginfo_t const *encoding, char const *filetype) Private Extern sox_open_read(path As String, signalP As Pointer, encoding As Pointer, filetype As String) As Sox_format_t ' sox_quit(void) ' Close effects library and unload format handler plugins. Returns SOX_SUCCESS if successful. Private Extern sox_quit() Public Sub Main() Dim err As Integer Dim file_audio As String file_audio = "/percorso/del/file/audio" err = sox_init() If err <> SOX_SUCCESS Then Error.Raise("Impossibile inizializzare la libreria 'libsox' !") sfIn = sox_open_read(file_audio, Null, Null, Null) With sfIn Print "File audio: "; String@(.filename) Print "Frequenza di campionamento: hrz "; .signal.rate Print "Numero di canali: "; .signal.channels Print "Risoluzione campionamento: "; .signal.precision; " bit" End With sox_quit() End
Riferimenti
[1] Api di Sox
[2] Api di Sox
[3] Documentazione di Sox