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

Da Gambas-it.org - Wikipedia.
Riga 15: Riga 15:
 
===1<SUP>a</sup> modalità===
 
===1<SUP>a</sup> modalità===
 
  '''Private''' src As Integer
 
  '''Private''' src As Integer
 +
'''Private''' ciclo As Boolean
 
   
 
   
 
   
 
   
Riga 48: Riga 49:
 
     Alure.PlaySourceStream(src, ast, 3, 0)
 
     Alure.PlaySourceStream(src, ast, 3, 0)
 
   
 
   
     While True
+
    ciclo = True
 +
 +
     While ciclo
 
       Wait 0.001
 
       Wait 0.001
 
     Wend
 
     Wend
Riga 71: Riga 74:
 
   
 
   
 
     al.SourceStop(src)
 
     al.SourceStop(src)
 +
 +
    ciclo = False
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 77: Riga 82:
 
===2<SUP>a</sup> modalità===
 
===2<SUP>a</sup> modalità===
 
  '''Private''' source As Integer
 
  '''Private''' source As Integer
 +
'''Private''' ciclo As Boolean
 
   
 
   
 
   
 
   
Riga 107: Riga 113:
 
   al.SourcePlay(source)
 
   al.SourcePlay(source)
 
   
 
   
   While True
+
  ciclo = True
 +
 +
   While ciclo
 
     Wait 0.001
 
     Wait 0.001
 
   Wend
 
   Wend
Riga 130: Riga 138:
 
   
 
   
 
     al.SourceStop(source)
 
     al.SourceStop(source)
 +
 +
    ciclo = False
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 136: Riga 146:
 
===3<SUP>a</sup> modalità===
 
===3<SUP>a</sup> modalità===
 
  '''Private''' ags As Integer
 
  '''Private''' ags As Integer
+
  '''Private''' ciclo As Boolean
+
 
  '''Public''' Sub Form_Open()
 
 
  Dim err As Boolean
 
 
    <FONT color=gray>' ''Inizializza la libreria "Alure":''</font>
 
    err = Alure.InitDevice(Null, Null)
 
    If err = False Then Error.Raise("Impossibile inizializzare la libreria 'Alure' !")
 
 
'''End'''
 
 
 
   
 
   
 
  '''Public''' Sub Button1_Click()    <FONT color=gray>' ''Avvia l'esecusione del file audio''</font>
 
  '''Public''' Sub Button1_Click()    <FONT color=gray>' ''Avvia l'esecusione del file audio''</font>
Riga 155: Riga 155:
 
   Dim agb As Integer
 
   Dim agb As Integer
 
   
 
   
 +
 +
<FONT color=gray>' ''Inizializza la libreria "Alure":''</font>
 +
  err = Alure.InitDevice(Null, Null)
 +
  If err = False Then Error.Raise("Impossibile inizializzare la libreria 'Alure' !")
 
   
 
   
 
  <FONT color=gray>' ''Genera le sorgenti sonore ed i buffer:''</font>
 
  <FONT color=gray>' ''Genera le sorgenti sonore ed i buffer:''</font>
Riga 169: Riga 173:
 
   al.SourcePlay(ags)
 
   al.SourcePlay(ags)
 
   
 
   
   While True
+
  ciclo = True
 +
 +
   While ciclo
 
     Wait 0.001
 
     Wait 0.001
 
   Wend
 
   Wend
Riga 178: Riga 184:
 
  '''Public''' Sub ToggleButton1_Click()
 
  '''Public''' Sub ToggleButton1_Click()
 
   
 
   
    If ToggleButton1.Value
+
  If ToggleButton1.Value
 
  <FONT color=gray>' ''Mette in pausa l'esecusione del file audio''</font>
 
  <FONT color=gray>' ''Mette in pausa l'esecusione del file audio''</font>
      al.SourcePause(ags)
+
    al.SourcePause(ags)
    Else
+
  Else
 
  <FONT color=gray>' ''Fa proseguire l'esecusione del file audio''</font>
 
  <FONT color=gray>' ''Fa proseguire l'esecusione del file audio''</font>
      al.SourcePlay(ags)
+
    al.SourcePlay(ags)
    Endif
+
  Endif
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 191: Riga 197:
 
  '''Public''' Sub Button2_Click()    <FONT color=gray>' ''Arresta l'esecusione del file audio''</font>
 
  '''Public''' Sub Button2_Click()    <FONT color=gray>' ''Arresta l'esecusione del file audio''</font>
 
   
 
   
    al.SourceStop(ags)
+
  al.SourceStop(ags)
 +
 +
  ciclo = False
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione delle 15:29, 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 Classi Al ed Alure |1| del componente gb.openal.


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à

Private src As Integer
Private ciclo As Boolean


Public Sub Form_Open()

  Dim err As Boolean

    ' Inizializza la libreria "Alure":
   err = Alure.InitDevice(Null, Null)
   If err = False Then Error.Raise("Impossibile inizializzare la libreria 'Alure' !")

End


Public Sub Button1_Click()    ' Avvia l'esecusione del file audio

  Dim percorsoFile As String = "/percorso/del/file/audio"
  Dim src, lungh As Integer
  Dim ast As Alurestream


   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)

   ciclo = True

   While ciclo
     Wait 0.001
   Wend
 
End


Public Sub ToggleButton1_Click()

   If ToggleButton1.Value
' Mette in pausa l'esecusione del file audio
     al.SourcePause(src)
   Else
' Fa proseguire l'esecusione del file audio
     al.SourcePlay(src)
   Endif

End


Public Sub Button2_Click()    ' Arresta l'esecusione del file audio

   al.SourceStop(src)

   ciclo = False

End


2a modalità

Private source As Integer
Private ciclo As Boolean


Public Sub Form_Open()

  Dim err As Boolean

    ' Inizializza la libreria "Alure":
   err = Alure.InitDevice(Null, Null)
   If err = False Then Error.Raise("Impossibile inizializzare la libreria 'Alure' !")

End


Public Sub Button1_Click()    ' Avvia l'esecusione del file audio

 Dim buffer As Integer

 
  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)

  ciclo = True

  While ciclo
    Wait 0.001
  Wend
 
End


Public Sub ToggleButton1_Click()

   If ToggleButton1.Value
' Mette in pausa l'esecusione del file audio
     al.SourcePause(source)
   Else
' Fa proseguire l'esecusione del file audio
     al.SourcePlay(source)
   Endif

End


Public Sub Button2_Click()    ' Arresta l'esecusione del file audio

   al.SourceStop(source)

   ciclo = False

End


3a modalità

Private ags As Integer
Private ciclo As Boolean
 

Public Sub Button1_Click()    ' Avvia l'esecusione del file audio
 
 Dim err As Boolean
 Dim fileAudio As String = "/percorso/del/file/audio"
 Dim agb As Integer


' Inizializza la libreria "Alure":
  err = Alure.InitDevice(Null, Null)
  If err = 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 err = 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)

  ciclo = True

  While ciclo
    Wait 0.001
  Wend
 
End


Public Sub ToggleButton1_Click()

  If ToggleButton1.Value
' Mette in pausa l'esecusione del file audio
    al.SourcePause(ags)
  Else
' Fa proseguire l'esecusione del file audio
    al.SourcePlay(ags)
  Endif

End


Public Sub Button2_Click()    ' Arresta l'esecusione del file audio

  al.SourceStop(ags)

  ciclo = False

End


Note

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