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:
  '''Public''' Struct sox_signalinfo_t
+
  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
+
  End Struct
 
   
 
   
  '''Public''' Struct sox_format_t
+
  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
+
  End Struct
 
'''Private''' sfIn As New Sox_format_t
 
 
 
Library "libsox:2.0.1"
 
 
   
 
   
  '''Private''' Const SOX_SUCCESS As Byte = 0
+
  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
+
  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
+
  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