Differenze tra le versioni di "Eseguire due o più file MIDI contemporaneamente mediante la Classe ''MediaPipeline'' del componente gb.media"
Da Gambas-it.org - Wikipedia.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 3: | Riga 3: | ||
− | + | Public Sub Main() | |
Dim pl As MediaPipeline | Dim pl As MediaPipeline | ||
Riga 14: | Riga 14: | ||
<FONT Color=gray>' ''Il primo file audio MIDI:''</font> | <FONT Color=gray>' ''Il primo file audio MIDI:''</font> | ||
src = New MediaControl(pl, "filesrc") | src = New MediaControl(pl, "filesrc") | ||
− | src["location"] = "<FONT Color= | + | src["location"] = "<FONT Color=darkgreen>''/percorso/del/primo/file.mid''</font>" |
par = New MediaControl(pl, "midiparse") | par = New MediaControl(pl, "midiparse") | ||
flu = New MediaControl(pl, "fluiddec") | flu = New MediaControl(pl, "fluiddec") | ||
Riga 26: | Riga 26: | ||
<FONT Color=gray>' ''Il secondo file MIDI:''</font> | <FONT Color=gray>' ''Il secondo file MIDI:''</font> | ||
src2 = New MediaControl(pl, "filesrc") | src2 = New MediaControl(pl, "filesrc") | ||
− | src2["location"] = "<FONT Color= | + | src2["location"] = "<FONT Color=darkgreen>''/percorso/del/secondo/file.mid''</font>" |
par = New MediaControl(pl, "midiparse") | par = New MediaControl(pl, "midiparse") | ||
flu = New MediaControl(pl, "fluiddec") | flu = New MediaControl(pl, "fluiddec") | ||
Riga 64: | Riga 64: | ||
Until bo | Until bo | ||
− | |||
pl.Close | pl.Close | ||
Write "\nEsecuzione terminata !" | Write "\nEsecuzione terminata !" | ||
− | + | End | |
− | + | ||
+ | Public Sub PLIne_End() | ||
bo = True | bo = True | ||
− | + | End |
Versione attuale delle 18:36, 17 gen 2024
Mostriamo di seguito un esempio per eseguire due o più file MIDI contemporaneamente mediante la Classe MediaPipeline del componente gb.media.
Private bo As Boolean Public Sub Main() Dim pl As MediaPipeline Dim src, par, flu, res, con, vol, pan As MediaControl Dim src2, par2, flu2, res2, con2, vol2, pan2 As MediaControl Dim mix, snk As MediaControl pl = New MediaPipeline As PLine ' Il primo file audio MIDI: src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/primo/file.mid" par = New MediaControl(pl, "midiparse") flu = New MediaControl(pl, "fluiddec") res = New MediaControl(pl, "audioresample") con = New MediaControl(pl, "audioconvert") vol = New MediaControl(pl, "volume") vol["volume"] = 0.8 pan = New MediaControl(pl, "audiopanorama") pan["panorama"] = 1.00 ' Pan a destra ' Il secondo file MIDI: src2 = New MediaControl(pl, "filesrc") src2["location"] = "/percorso/del/secondo/file.mid" par = New MediaControl(pl, "midiparse") flu = New MediaControl(pl, "fluiddec") res2 = New MediaControl(pl, "audioresample") con2 = New MediaControl(pl, "audioconvert") vol2 = New MediaControl(pl, "volume") vol2["volume"] = 0.8 pan2 = New MediaControl(pl, "audiopanorama") pan2["panorama"] = -1.00 ' Pan a sinistra mix = New MediaControl(pl, "audiomixer") snk = New MediaControl(pl, "alsasink") src.LinkTo(par) par.LinkTo(flu) flu.LinkTo(res) res.LinkTo(con) con.LinkTo(vol) vol.LinkTo(pan) pan.LinkTo(mix) ' La prima sorgente audio alla fine converge nel mixer audio: src2.LinkTo(par2) par2.LinkTo(flu2) flu2.LinkTo(res2) res2.LinkTo(con2) con2.LinkTo(vol2) vol2.LinkTo(pan2) pan2.LinkTo(mix) ' La seconda sorgente audio alla fine converge nel mixer audio: mix.LinkTo(snk) pl.Play() Repeat Write "\rTempo trascorso: " & Str(Time(0, 0, 0, pl.Position * 1000)) Wait 0.01 Until bo pl.Close Write "\nEsecuzione terminata !" End Public Sub PLIne_End() bo = True End