|
|
(7 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'''
| |
− | | |
− | | |
− | ===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=gray>' ''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=gray>' ''Se "Pos" ci restituisce zero allora fermiamo il Timer:''</font>
| |
− | If .pos = 0 Then
| |
− | Timer1.Stop
| |
− | <FONT color=gray>' ''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''".
| |
− | | |
− | | |
− | ==Esecuzione con applicazione ''a riga di comando''==
| |
− | In questo caso bisognerà dopo il metodo ''.Play()'' della Classe ''Music'' attivare un ciclo, che avrà termine solo quando lo status della Classe ''Music'' si troverà nella situazione rappresentata dalla costante ''Stopped'':
| |
− | '''Public''' Sub Main()
| |
− |
| |
− | With <FONT color=#B22222>Music</font>
| |
− | .Load("''percorso/del/file.mid''")
| |
− | .Play()
| |
− | End With
| |
− |
| |
− | Do
| |
− | <FONT color=gray>' ''Mostra il tempo trascorso durante l'esecuzione:''</font>
| |
− | Print CStr(Date(0, 0, 0, 0, 0, 0, Music.Pos * 1000))
| |
− | Loop Until Music.State = Music.Stopped
| |
− |
| |
− | '''End'''
| |