Differenze tra le versioni di "Audio ed Alsa: apertura del subsistema PCM"
Riga 26: | Riga 26: | ||
e potremo, quindi, in subroutine richiamarla per l'uso (i nomi dei parametri sono quelli indicati nel paragrafo precedente): | e potremo, quindi, in subroutine richiamarla per l'uso (i nomi dei parametri sono quelli indicati nel paragrafo precedente): | ||
err = snd_pcm_open(handle, device, SND_PCM_STREAM_PLAYBACK, 0) | err = snd_pcm_open(handle, device, SND_PCM_STREAM_PLAYBACK, 0) | ||
+ | |||
+ | |||
+ | ===Riassunto esemplificativo=== | ||
+ | Il codice sin qui esposto sarà il seguente: | ||
+ | Library "libasound:2" | ||
+ | |||
+ | '''Private''' handle As Pointer | ||
+ | '''Private''' device As String = "default" | ||
+ | '''Private''' Const SND_PCM_STREAM_PLAYBACK As Byte = 0 | ||
+ | |||
+ | '''Private''' Extern snd_pcm_open(handleP As Pointer, nome As String, flusso As Integer, mode As Integer) As Integer | ||
+ | |||
+ | |||
+ | '''Public''' apre_alsa() | ||
+ | |||
+ | Dim err As Integer | ||
+ | |||
+ | err = snd_pcm_open(VarPtr(handle), device, SND_PCM_STREAM_PLAYBACK, 0) | ||
+ | |||
+ | '''End''' |
Versione delle 08:00, 17 giu 2013
Indice
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 (i nomi dei parametri sono quelli indicati nel paragrafo precedente):
err = snd_pcm_open(handle, device, SND_PCM_STREAM_PLAYBACK, 0)
Riassunto esemplificativo
Il codice sin qui esposto sarà il seguente:
Library "libasound:2" Private handle As Pointer Private device As String = "default" Private Const SND_PCM_STREAM_PLAYBACK As Byte = 0 Private Extern snd_pcm_open(handleP As Pointer, nome As String, flusso As Integer, mode As Integer) As Integer Public apre_alsa() Dim err As Integer err = snd_pcm_open(VarPtr(handle), device, SND_PCM_STREAM_PLAYBACK, 0) End