Eseguire un file MIDI mediante il componente gb.sdl2.audio
Le risorse della libreria SDL2 per la gestione dell'audio e del Midi è stata implementata in Gambas attraverso il nuovo componente gb.sdl2.audio.
Va sottolineato che il componente gb.sdl2.audio può essere attivato anche indipendentemente dal componente gb.sdl2 .
Il componente fornisce per l'esecuzione dei file Midi la Classe Music. E' possibile eseguire un file Midi per volta.
E' necessario impostare nella proprietà Music.SoundFontPath il percorso del file banco dei suoni (soundfont bank) di formato .SF2 per la riproduzione dei suoni con il Midi.
Esempio di esecuzione con un'applicazione in ambiente grafico
Mostriamo un semplice esempio in applicazione grafica, nel quale si avrà anche la possibilità di arrestare, mettere in pausa l'esecuzione del file Midi e modificare il volume sonoro con uno Slider:
Public Sub Form_Open() ' Volendo modificare il volume audio durante l'esecuzione, dobbiamo caricare il file banco dei suoni subito all'apertura del Form: Music.SoundFontPath = "/percorso/del/soundfont/bank/file.sf2" With Slider1 .MaxValue = 128 .Value = 100 End With ValueBox1.Text = CStr(Slider1.Value) End Public Sub Button1_Click() With Music .Load("/percorso/del/file.mid") .Play End With End Public Sub ToggleButton1_Click() Select Case ToggleButton1.Value Case True Music.Pause ToggleButton1.Text = "Riprendi" Case False Music.Play ToggleButton1.Text = "Pausa" End Select End Public Sub Button2_Click() Music.Stop End Public Sub Slider1_Change() Music.Volume = Slider1.Value ValueBox1.Text = CStr(Slider1.Value) End
Esempio di esecuzione con un'applicazione a riga di comando
In quest'altro esempio viene eseguito un file Midi con un'applicazione a riga di comando. Il codice consente di vedere anche il tempo trascorso dall'inizio dell'esecuzione del file Midi:
Public Sub Main() ' Impostiamo il percorso del file del banco di suoni ".sf2" che vogliamo utilizzare: Music.SoundFontPath = "/percorso/del/soundfont/bank/file.sf2" Music.Load("/percorso/del/file.mid") Music.Play ' Per l'esecuzione del file Midi in un'applicazione "a riga di comando" il ciclo è indispensabile: While Music.State = Music.Playing ' Mostra anche il tempo trascorso: Print CStr(Date(0, 0, 0, 0, 0, 0, Music.Pos * 1000)) Wend End
In questo secondo esempio di esecuzione di un file Midi con un'applicazione a riga di comando si potrà interagire con essa inviando tramite console/Terminale istruzioni con la tastiera per fermare l'esecuzione, metterla in pausa e riprenderla, aumentare ed abbassare il volume audio, nonché vedere il tempo trascorso in quel momento dall'inizio dell'esecuzione del file Midi. Per interagire con la tastiera si premerà il tasto previsto per 'evento desiderato e si premerà sul tasto "Invio"
Public Sub Main() ' Impostiamo il percorso del file del banco di suoni ".sf2" che vogliamo utilizzare: Music.SoundFontPath = "/percorso/del/soundfont/bank/file.sf2" Music.Load("/percorso/del/file.mid") Music.Play End Public Sub Application_Read() Dim s As String Line Input #File.In, s Select Case s Case "s" Music.Stop Print "Esecuzione fermata." Quit Case "p" Music.Pause Print "Pausa..." Case "r" Music.Play Print "...continua" Case "+" Music.Volume += 1 Case "-" Music.Volume -= 1 Case "t" Print CStr(Date(0, 0, 0, 0, 0, 0, Music.Pos * 1000)) End Select End
Modificare il volume
Come già visto, la Classe Music fornisce la proprietà .Volume per modificare appunto il volume audio dell'esecuzione. L'ambito dei valori possibili va da 0 a 128.
Esempio:
Music.Volume = 110