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

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Il componente ''gb.sdl.sound'' permette di riprodurre anche i file Midi in Gambas mediante la sua Classe ''Music''. E' inoltre necessario aver installato il file banco di suo...')
 
Riga 6: Riga 6:
 
==Uso della Classe ''Music''==
 
==Uso della Classe ''Music''==
 
La classe '''''Music''''' consente di ascoltare <Span style="text-decoration:underline">un solo</span> file Midi per volta.
 
La classe '''''Music''''' consente di ascoltare <Span style="text-decoration:underline">un solo</span> file Midi per volta.
 +
 +
Esempio in ambiente grafico:
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
 
   
 
   
Riga 12: Riga 14:
 
     .Play()
 
     .Play()
 
   End With
 
   End With
 +
 +
'''End'''
 +
 +
 +
Esempio con applicazione ''a riga di comando'':
 +
'''Public''' Sub Main()
 +
 +
  With <FONT color=#B22222>Music</font>
 +
    .Load("''percorso/del/file.mid''")
 +
    .Play()
 +
  End With
 +
 +
  Do
 +
    Sleep 0.01
 +
  Loop Until Music.State = Music.Stopped
 +
 +
'''End'''
  
  

Versione delle 17:32, 18 ott 2014

Il componente gb.sdl.sound permette di riprodurre anche i file Midi in Gambas mediante la sua Classe Music.

E' inoltre necessario aver installato il file banco di suoni di default di Timidity: "/usr/share/sounds/sf2/TimGM6mb.sf2", oppure di FluidSynth: "/usr/share/sounds/sf2/FluidR3_GM.sf2".


Uso della Classe Music

La classe Music consente di ascoltare un solo file Midi per volta.

Esempio in ambiente grafico:

Public Sub Button1_Click()

 With Music
   .Load("percorso/del/file.mid")
   .Play()
 End With

End


Esempio con applicazione a riga di comando:

Public Sub Main()

 With Music
   .Load("percorso/del/file.mid")
   .Play()
 End With

 Do
   Sleep 0.01
 Loop Until Music.State = Music.Stopped

End


Indicazione del tempo trascorso di un file Midi

La classe "Music" consente di verificare il tempo trascorso dall'inizio dell'escuzione di un file Midi mediante l'uso del metodo "Pos". Sarà sufficiente utilizzare un Timer, ed andare a vedere ogni tot millisecondi il valore che restituisce il metodo "Pos". Ciò consentirà di applicare una ProgressiveBar o uno Slider per indicare, appunto, il tempo trascorso. Quando il brano sarà terminato, Pos restituirà un valore zero; e pertanto si saprà così che il brano è terminato.

Public Sub Button1_Click()

  With Music
    .Load("/percorso/del/file.mid")
    .Play()
  End With

' Facciamo partire il Timer con ritardo di ms 300
  With Timer1
    .Delay = 300
    .Start()
  End With

End


Public Sub Timer1_Timer()
 
 With Music
   Print .Pos

' Se "Pos" ci restituisce zero allora fermiamo il Timer:
   If .pos = 0 Then
     Timer1.Stop
' Fermeremo anche, se inseriti, l'avanzamento di una "ProgressiveBar" o di uno "Slider":
     ProgressiveBar1.Value = 0
   Endif
 End With
  
End


Indicazione dello Stato

La proprietà .State della Classe Music ci informa lo stato della risorsa, restituendo un intero.

Music.State As Integer

Se il valore ritornato è 1, allora la risorsa sta eseguendo il file Midi; se il valore ritornato è zero, allora il suo stato è "fermo".