Eseguire due o più file audio contemporaneamente mediante la Classe ''MediaPipeline'' del componente gb.media

Da Gambas-it.org - Wikipedia.

Mostriamo di seguito un esempio pratico per eseguire contemporaneamente due file audio (in questo caso di formato WAV) mediante la Classe MediaPipeline del Componente gb.media.
I due file audio devono avere la medesima frequenza di campionamento !

Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, src2, wap, wap2, res, res2, con, con2, vol, vol2, pan, pan2, mix, snk As MediaControl
 
 pl = New MediaPipeline 
 
' Primo file audio wav:
 src = New MediaControl(pl, "filesrc")
 src["location"] = "/percorso/del/primo/file.wav"
 wap = New MediaControl(pl, "wavparse")
 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
 
' Secondo file audio wav:
 src2 = New MediaControl(pl, "filesrc") 
 src2["location"] = "/percorso/del/secondo/file.wav"
 wap2 = New MediaControl(pl, "wavparse")
 res2 = New MediaControl(pl, "audioresample")
 con2 = New MediaControl(pl, "audioconvert")
 vol2 = New MediaControl(pl, "volume")
 vol2["volume"] = 0.2
 pan2 = New MediaControl(pl, "audiopanorama")
 pan2["panorama"] = -1.00    ' Pan a sinistra
 
  mix = New MediaControl(pl, "audiomixer")
  snk = New MediaControl(pl, "alsasink")
 
 
 src.LinkTo(wap)
 wap.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(wap2)
 wap2.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()
 
 Do
   Wait 0.01
 Loop
 
End