Estrarre informazioni generali da un file audio con le funzioni esterne del API di Sox
Da Gambas-it.org - Wikipedia.
Versione del 8 gen 2014 alle 18:31 di Vuott (Discussione | contributi) (Creata pagina con 'La libreria '''''[http://sox.sourceforge.net/ Sox]''''' contiene risorse per poter gestire ampiamente i file audio: riproduzione e registrazione, conversione di vari formati a...')
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:
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 Library "libsox:2.0.1" 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 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 End