Differenze tra le versioni di "La gestione mediante il componente gb.openal"
Da Gambas-it.org - Wikipedia.
Riga 7: | Riga 7: | ||
==Eseguire un file audio con le risorse della Classe ''Al'' e della Classe ''Alure''== | ==Eseguire un file audio con le risorse della Classe ''Al'' e della Classe ''Alure''== | ||
− | Vi sono almeno | + | Vi sono almeno tre modalità per eseguire un file audio mediante le risorse della Classe ''Al'' e della Classe ''Alure'' del componente ''gb.openal''. |
<BR>E' possibile riprodurre file audio dei seguenti tipi: | <BR>E' possibile riprodurre file audio dei seguenti tipi: | ||
* WAV; | * WAV; | ||
Riga 49: | Riga 49: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
+ | Dim err As Boolean | ||
Dim buffer, source As Integer | Dim buffer, source As Integer | ||
Riga 54: | Riga 55: | ||
<FONT color=gray>' ''Inizializza la libreria "Alure":''</font> | <FONT color=gray>' ''Inizializza la libreria "Alure":''</font> | ||
alure.InitDevice(Null, Null) | alure.InitDevice(Null, Null) | ||
+ | If err = AL_FALSE Then Error.Raise("Impossibile inizializzare la libreria 'Alure' !") | ||
buffer = alure.CreateBufferFromFile("''/percorso/del/file/audio''") | buffer = alure.CreateBufferFromFile("''/percorso/del/file/audio''") | ||
Riga 73: | Riga 75: | ||
'''End''' | '''End''' | ||
+ | |||
+ | |||
+ | ===3<SUP>a</sup> modalità=== | ||
+ | '''Private''' Const AL_FALSE As Boolean = False | ||
+ | |||
+ | |||
+ | '''Public''' Sub Main() | ||
+ | |||
+ | Dim err As Boolean | ||
+ | Dim fileAudio As String = "''/percorso/del/file/audio''" | ||
+ | Dim ags, agb, source_state As Integer | ||
+ | |||
+ | |||
+ | <FONT color=gray>' ''Inizializza la libreria "Alure":''</font> | ||
+ | err = alure.InitDevice(Null, Null) | ||
+ | If err = AL_FALSE Then Error.Raise("Impossibile inizializzare la libreria 'Alure' !") | ||
+ | |||
+ | <FONT color=gray>' ''Genera le sorgenti sonore ed i buffer:''</font> | ||
+ | ags = al.GenSources(1)[0] | ||
+ | |||
+ | agb = al.GenBuffers(ags)[0] | ||
+ | |||
+ | err = alure.BufferDataFromFile(fileAudio, agb) | ||
+ | If bdf = AL_FALSE Then Error.Raise("Impossibile creare un buffer-data dal file audio !") | ||
+ | |||
+ | al.Sourcei(ags, al.BUFFER, agb) | ||
+ | |||
+ | <FONT color=gray>' ''Esegue il file audio:''</font> | ||
+ | al.SourcePlay(ags) | ||
+ | |||
+ | While source_state = 0 | ||
+ | alure.Update() | ||
+ | Wend | ||
+ | |||
+ | <FONT color=gray>' ''Al termine della riproduzione audio, chiude la libreria 'Alure':''</font> | ||
+ | alure.ShutdownDevice() | ||
+ | |||
+ | '''End''' | ||
+ | |||
=Note= | =Note= | ||
[1] La Classe ''Alure'' del componente ''gb.openal'' consente di gestire le funzioni di [http://kcat.strangesoft.net/alure.html ALURE], che è una libreria di supporto di ''Openal''. | [1] La Classe ''Alure'' del componente ''gb.openal'' consente di gestire le funzioni di [http://kcat.strangesoft.net/alure.html ALURE], che è una libreria di supporto di ''Openal''. |
Versione delle 09:39, 24 ott 2013
Con la revisione 5753 di Gambas-3 è stato aggiunto il componente: gb.openal che utilizza le risorse dell'API di Openal.
E' possibile eseguire un file audio mediante le risorse delle seguenti Classi del componente gb.openal:
- Al ed Alure |1|
Indice
Eseguire un file audio con le risorse della Classe Al e della Classe Alure
Vi sono almeno tre modalità per eseguire un file audio mediante le risorse della Classe Al e della Classe Alure del componente gb.openal.
E' possibile riprodurre file audio dei seguenti tipi:
- WAV;
- MP3;
- OGG.
1a modalità
Public Sub Main() Dim percorsoFile As String = "/percorso/del/file/audio" Dim src, lungh, isdone As Integer Dim ast As Alurestream ' Inizializza la libreria "Alure": Alure.InitDevice(Null, Null) src = Al.GenSources(1)[0] ' Individua la lunghezza del file audio caricato da eseguire: lungh = Stat(percorsoFile).Size ast = Alure.CreateStreamFromFile(percorsoFile, lungh, 0) ' Esegue il flusso di dati audio. ' Il terzo parametro della funzione rappresenta il numero dei buffer utilizzati da accodare alla fonte di "OpenAL". ' Ogni buffer verrà riempito con la lunghezza del "chunk" specificato quando il flusso è stato creato. ' Tale valore nell'esecuzione di un file audio deve essere di almeno 2. Alure.PlaySourceStream(src, ast, 3, 0) ' Attende che l'esecuzione sia terminata: While isdone = 0 Alure.Update() Wend End
2a modalità
Public Sub Main() Dim err As Boolean Dim buffer, source As Integer ' Inizializza la libreria "Alure": alure.InitDevice(Null, Null) If err = AL_FALSE Then Error.Raise("Impossibile inizializzare la libreria 'Alure' !") buffer = alure.CreateBufferFromFile("/percorso/del/file/audio") ' Crea una sorgente sonora: source = al.GenSources(1)[0] ' Viene utilizzata la variabile "buffer" per riempire la sorgente. ' Il secondo argomento indica al buffer di fornire campioni sonori:</font> al.Sourcei(source, al.BUFFER, buffer) ' Esegue il flusso di dati audio. al.SourcePlay(source) ' Attende che l'esecuzione sia terminata: While state = 0 Alure.Update() Wend End
3a modalità
Private Const AL_FALSE As Boolean = False Public Sub Main() Dim err As Boolean Dim fileAudio As String = "/percorso/del/file/audio" Dim ags, agb, source_state As Integer ' Inizializza la libreria "Alure": err = alure.InitDevice(Null, Null) If err = AL_FALSE Then Error.Raise("Impossibile inizializzare la libreria 'Alure' !") ' Genera le sorgenti sonore ed i buffer: ags = al.GenSources(1)[0] agb = al.GenBuffers(ags)[0] err = alure.BufferDataFromFile(fileAudio, agb) If bdf = AL_FALSE Then Error.Raise("Impossibile creare un buffer-data dal file audio !") al.Sourcei(ags, al.BUFFER, agb) ' Esegue il file audio: al.SourcePlay(ags) While source_state = 0 alure.Update() Wend ' Al termine della riproduzione audio, chiude la libreria 'Alure': alure.ShutdownDevice() End
Note
[1] La Classe Alure del componente gb.openal consente di gestire le funzioni di ALURE, che è una libreria di supporto di Openal.