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

Da Gambas-it.org - Wikipedia.
 
(9 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Il componente ''gb.sdl.sound'' permette di riprodurre anche i file Midi in Gambas mediante la sua Classe ''Music''.
+
#REDIRECT [[Eseguire_un_file_MIDI_mediante_il_componente_gb.sdl2.audio]]
 
 
E' inoltre necessario aver installato il file banco di suoni di default di Timidity: "''/usr/share/sounds/sf2/<FONT color=#B22222>TimGM6mb.sf2</font>''", oppure di FluidSynth: "''/usr/share/sounds/sf2/<FONT color=#B22222>FluidR3_GM.sf2</font>''".
 
 
 
 
 
==Uso della Classe ''Music''==
 
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()
 
 
  With <FONT color=#B22222>Music</font>
 
    .Load("''percorso/del/file.mid''")
 
    .Play()
 
  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'''
 
 
 
 
 
==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
 
 
<FONT color=#006400>' ''Facciamo partire il Timer con ritardo di ms 300''</font>
 
  With Timer1
 
    .Delay = 300
 
    .Start()
 
  End With
 
 
'''End'''
 
 
 
'''Public''' Sub Timer1_Timer()
 
 
 
  With Music
 
    Print .Pos
 
 
<FONT color=#006400>' ''Se "Pos" ci restituisce zero allora fermiamo il Timer:''</font>
 
    If .pos = 0 Then
 
      Timer1.Stop
 
<FONT color=#006400>' ''Fermeremo anche, se inseriti, l'avanzamento di una "ProgressiveBar" o di uno "Slider":''
 
      ''ProgressiveBar1.Value = 0''</font>
 
    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''".
 

Versione attuale delle 07:38, 12 giu 2020