Differenze tra le versioni di "Audio ed Alsa: apertura del subsistema PCM"

Da Gambas-it.org - Wikipedia.
(Creata pagina con '==Dichiarazione della Libreria di Alsa== Poiché bisognerà utilizzare delle funzioni esterne a Gambas, appartenenti alle [http://it.wikipedia.org/wiki/Application_programming...')
 
Riga 3: Riga 3:
  
 
Si dichiarera all'inizio della Classe specifica la libreria di ALSA:
 
Si dichiarera all'inizio della Classe specifica la libreria di ALSA:
  Library "libasound"
+
  Library "libasound:2"
  
  

Versione delle 07:51, 17 giu 2013

Dichiarazione della Libreria di Alsa

Poiché bisognerà utilizzare delle funzioni esterne a Gambas, appartenenti alle API di ALSA, bisognerà innanzitutto individuare la specifica libreria condivisa .so ove tali funzioni sono contenute.

Si dichiarera all'inizio della Classe specifica la libreria di ALSA:

Library "libasound:2"


Apertura del subsistema PCM

L'apertura del sub-sistema PCM nella modalità di Riproduzione audio avviene medinete la specifica delle API di ALSA, così espressa in C:

int snd_pcm_open(snd_pcm_t **pcm, const char *name, snd_pcm_stream_t stream, int mode)

laddove:

  • snd_pcm_t **pcm è un puntatore ad un puntatore che rappresenta, quest'ultimo, l'handle necessario per l'apertura del dispositivo PCM.

In Gambas detto handle sarà dichiarato come una variabile di tipo Pointer:

Private handle As Pointer
  • const char * name è una stringa che rappresenta il nome identificativo dell'handle del dispositivo PCM, e che potrà essere inizialmente "default":
Private device As String = "default"
  • snd_pcm_stream_t stream è un intero che specifica la modalità scelta della direzione del flusso dei dati, in tal caso sarà in modalità Riproduzione audio, ossia valore pari a zero:
Private Const SND_PCM_STREAM_PLAYBACK As Byte = 0
  • int mode è la modalità di apertura del sub-sitema PCM. L'impostazione standard del valore mode è zero. Altre modalità sono Non blocking e Async notification.


La funzione restituisce un intero che, se è uguale, a zero significa che l'operazione della funzione ha avuto successo.


Dichiarazione della funzione esterna snd_pcm_open

In Gambas la funzione snd_pcm_open per l'apertura del sub-sistema PCM dovrà essere innanzitutto dichiarata preventivamente con Extern:

Private Extern snd_pcm_open(handleP As Pointer, nome As String, flusso As Integer, 0) As Integer

e potremo, quindi, in subroutine richiamarla per l'uso:

  err = snd_pcm_open(handle, device, SND_PCM_STREAM_PLAYBACK, 0)