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

Da Gambas-it.org - Wikipedia.
Riga 74: Riga 74:
 
   
 
   
 
   Music.Play
 
   Music.Play
+
   
<FONT Color=gray>' ''Per l'esecuzione del file Midi in un'applicazione "a riga di comando" il ciclo è indispensabile:''</font>
 
 
   While Music.State = Music.Playing
 
   While Music.State = Music.Playing
 
  <FONT Color=gray>' ''Mostra il tempo trascorso dall'inizio dell'esecuzione:''</font>
 
  <FONT Color=gray>' ''Mostra il tempo trascorso dall'inizio dell'esecuzione:''</font>
Riga 96: Riga 95:
 
   Music.Play
 
   Music.Play
 
   
 
   
   While Music.State = Music.Playing
+
   Do
 +
<FONT Color=gray>' ''Una brevissima attesa consente di inviare valori allo standard Input:''</font>
 +
    Wait 0.01
 
  <FONT Color=gray>' ''Mostra il tempo trascorso dall'inizio dell'esecuzione:''</font>
 
  <FONT Color=gray>' ''Mostra il tempo trascorso dall'inizio dell'esecuzione:''</font>
 
     Write #File.Out, CStr(Date(0, 0, 0, 0, 0, 0, Music.Pos * 1000)) & "\r"
 
     Write #File.Out, CStr(Date(0, 0, 0, 0, 0, 0, Music.Pos * 1000)) & "\r"
   Wend
+
   Loop Until Music.State = Music.Stopped
 
    
 
    
 
   Quit
 
   Quit

Versione delle 05:44, 7 set 2015

Le risorse della libreria SDL2 per la gestione dell'audio e del Midi sono state implementate 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 solo 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()

' Se si vuole modificare il volume audio durante l'esecuzione, bisogna ricordare che il file banco dei suoni va caricato 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 continuamente 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
   
  While Music.State = Music.Playing
' Mostra il tempo trascorso dall'inizio dell'esecuzione:
    Write #File.Out, CStr(Date(0, 0, 0, 0, 0, 0, Music.Pos * 1000)) & "\r"
  Wend
  
  Quit
  
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 l'azione desiderata, scrivendo così il carattere in basso nella console o nel Terminale (se l'applicazione è stata lanciata da Terminale), 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

  Do
' Una brevissima attesa consente di inviare valori allo standard Input:
    Wait 0.01
' Mostra il tempo trascorso dall'inizio dell'esecuzione:
    Write #File.Out, CStr(Date(0, 0, 0, 0, 0, 0, Music.Pos * 1000)) & "\r"
  Loop Until Music.State = Music.Stopped
  
  Quit

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
      Print Music.Volume
    Case "-"
      Music.Volume -= 1
      Print Music.Volume
  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