Differenze tra le versioni di "La gestione mediante il componente gb.openal"

Da Gambas-it.org - Wikipedia.
Riga 69: Riga 69:
 
   al.SourcePlay(source)
 
   al.SourcePlay(source)
 
   
 
   
<FONT color=gray>' ''Attende che l'esecuzione sia terminata:''</font>
+
   While True
   While status = 0
+
     Wait 0.001
     Alure.Update()
 
 
   Wend
 
   Wend
 
    
 
    
Riga 105: Riga 104:
 
   al.SourcePlay(ags)
 
   al.SourcePlay(ags)
 
   
 
   
   While status = 0
+
   While True
     alure.Update()
+
     Wait 0.001
 
   Wend
 
   Wend
 
    
 
    

Versione delle 11:44, 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|


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, status 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 status = 0
     Alure.Update()
   Wend

End


2a modalità

Public Sub Main()

 Dim err As Boolean
 Dim buffer, source, status 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)

  While True
    Wait 0.001
  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, status 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 True
   Wait 0.001
  Wend
 
End


Note

[1] La Classe Alure del componente gb.openal consente di gestire le funzioni di ALURE, che è una libreria di supporto di Openal.