Audio ed Alsa: apertura del subsistema PCM
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)