Differenze tra le versioni di "Eseguire due o più file audio contemporaneamente mediante la Classe ''MediaPipeline'' del componente gb.media"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
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''. | 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 utilizzati devono avere la medesima frequenza di campionamento | + | I due file audio utilizzati devono avere la medesima frequenza di campionamento. |
+ | Private bo As Boolean | ||
+ | |||
+ | |||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
Riga 9: | Riga 12: | ||
Dim mix, snk As MediaControl | Dim mix, snk As MediaControl | ||
− | pl = New MediaPipeline | + | pl = New MediaPipeline As PLine |
<FONT Color=gray>' ''Primo file audio wav:''</font> | <FONT Color=gray>' ''Primo file audio wav:''</font> | ||
Riga 33: | Riga 36: | ||
pan2["panorama"] = -1.00 <FONT Color=gray>' ''Pan a sinistra''</font> | pan2["panorama"] = -1.00 <FONT Color=gray>' ''Pan a sinistra''</font> | ||
− | + | mix = New MediaControl(pl, "audiomixer") | |
− | + | snk = New MediaControl(pl, "alsasink") | |
− | + | ||
− | |||
src.LinkTo(wap) | src.LinkTo(wap) | ||
wap.LinkTo(res) | wap.LinkTo(res) | ||
Riga 43: | Riga 45: | ||
vol.LinkTo(pan) | vol.LinkTo(pan) | ||
pan.LinkTo(mix) <FONT Color=gray>' ''La prima sorgente audio alla fine converge nel mixer audio:''</font> | pan.LinkTo(mix) <FONT Color=gray>' ''La prima sorgente audio alla fine converge nel mixer audio:''</font> | ||
− | + | ||
src2.LinkTo(wap2) | src2.LinkTo(wap2) | ||
wap2.LinkTo(res2) | wap2.LinkTo(res2) | ||
Riga 50: | Riga 52: | ||
vol2.LinkTo(pan2) | vol2.LinkTo(pan2) | ||
pan2.LinkTo(mix) <FONT Color=gray>' ''La seconda sorgente audio alla fine converge nel mixer audio:''</font> | pan2.LinkTo(mix) <FONT Color=gray>' ''La seconda sorgente audio alla fine converge nel mixer audio:''</font> | ||
− | + | ||
mix.LinkTo(snk) | mix.LinkTo(snk) | ||
− | + | ||
pl.Play() | pl.Play() | ||
− | + | ||
− | + | Repeat | |
− | Write "\rTempo: " & | + | Write "\rTempo trascorso: " & Str(Time(0, 0, 0, pl.Position * 1000)) |
− | Wait 0. | + | Wait 0.01 |
− | + | Until bo | |
− | + | ||
− | |||
pl.Stop | pl.Stop | ||
pl.Close | pl.Close | ||
Riga 66: | Riga 67: | ||
Write "\nEsecuzione terminata !" | Write "\nEsecuzione terminata !" | ||
+ | '''End''' | ||
+ | |||
+ | '''Public''' Sub PLIne_End() | ||
+ | |||
+ | bo = True | ||
+ | |||
'''End''' | '''End''' |
Versione delle 22:55, 22 set 2022
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 utilizzati devono avere la medesima frequenza di campionamento.
Private bo As Boolean Public Sub Main() Dim pl As MediaPipeline Dim src, wap, res, con, vol, pan As MediaControl Dim src2, wap2, res2, con2, vol2, pan2 As MediaControl Dim mix, snk As MediaControl pl = New MediaPipeline As PLine ' 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() Repeat Write "\rTempo trascorso: " & Str(Time(0, 0, 0, pl.Position * 1000)) Wait 0.01 Until bo pl.Stop pl.Close Write "\nEsecuzione terminata !" End Public Sub PLIne_End() bo = True End