Eseguire due o più file MIDI contemporaneamente mediante la Classe ''MediaPipeline'' del componente gb.media
Da Gambas-it.org - Wikipedia.
Versione del 17 gen 2024 alle 18:36 di Vuott (Discussione | contributi)
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