Differenze tra le versioni di "Eseguire un file MIDI mediante il componente gb.openal"

Da Gambas-it.org - Wikipedia.
Riga 9: Riga 9:
  
 
Mostriamo di seguito un semplice codice per eseguire un file Midi:
 
Mostriamo di seguito un semplice codice per eseguire un file Midi:
 +
'''Private''' src As Integer
 +
'''Private''' ast As AlureStream
 +
'''Private''' ciclo As Boolean
 +
 +
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
 
   
 
   
 
   Dim percorsoFile As String = "''/percorso/del/file.mid''"
 
   Dim percorsoFile As String = "''/percorso/del/file.mid''"
   Dim src, lungh As Integer
+
   Dim lungh As Integer
   Dim ast As AlureStream
+
    
 
 
   
 
   
 
  <FONT color=gray>' ''Inizializza la libreria "Alure":''</font>
 
  <FONT color=gray>' ''Inizializza la libreria "Alure":''</font>
Riga 33: Riga 37:
 
   Alure.PlaySourceStream(src, ast, 3, 0)
 
   Alure.PlaySourceStream(src, ast, 3, 0)
 
   
 
   
   While True
+
   ciclo = True
 +
 +
  Do
 +
    Wait 0.01
 
     Alure.Update()
 
     Alure.Update()
   Wend
+
   Loop Until ciclo = False
 +
 +
'''End'''
 +
 +
 +
'''Public''' Sub Button2_Click()
 +
 +
  With Alure
 +
    .StopSource(src)
 +
    .DestroyStream(ast)
 +
    .ShutdownDevice()
 +
  End With
 +
 +
  ciclo = False
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione delle 03:42, 25 ott 2013

Con la revisione 5753 di Gambas-3 è stato aggiunto il componente: gb.openal che utilizza le risorse dell'API di Openal.


Oltre all'esecuzione dei file audio, con il componente gb.openal è possibile eseguire anche i file Midi, utilizzando in particolare la funzione

SetStreamPatchset(Stream as AlureStream, Patchset As String) As Boolean

appartenente alla Classe Alure. |1|
Questa funzione specifica il patchset da utilizzare per i flussi MIDI. Tale patchset è sostanzialmente un file contenente il banco di suoni (soundfont bank) con estensione .sf2 . Pertanto sarà sufficiente in quel parametro indicare il percorso del file soundfont .sf2 che si intende utilizzare.


Mostriamo di seguito un semplice codice per eseguire un file Midi:

Private src As Integer
Private ast As AlureStream
Private ciclo As Boolean


Public Sub Button1_Click()

 Dim percorsoFile As String = "/percorso/del/file.mid"
 Dim lungh As Integer
 

' Inizializza la libreria "Alure":
  Alure.InitDevice(Null, Null)

  src = Al.GenSources(1)[0]

  lungh = Stat(percorsoFile).Size

  ast = Alure.CreateStreamFromFile(percorsoFile, lungh, 0)

  Alure.SetStreamPatchset(ast, "/percorso/del/soundfont/file.sf2")

' Esegue il flusso di dati Midi.
' 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 Midi deve essere di almeno 2.
  Alure.PlaySourceStream(src, ast, 3, 0)

  ciclo = True

  Do
    Wait 0.01
    Alure.Update()
  Loop Until ciclo = False

End


Public Sub Button2_Click()

  With Alure
    .StopSource(src)
    .DestroyStream(ast)
    .ShutdownDevice()
  End With

  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.