Eseguire un file MIDI mediante il componente gb.openal
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:
Public Sub Button1_Click()
Dim percorsoFile As String = "/percorso/del/file.mid"
Dim src, lungh As Integer
Dim ast As AlureStream
' 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)
While True
Alure.Update()
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.