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 5: | Riga 5: | ||
− | + | Public Sub Main() | |
Dim pl As MediaPipeline | Dim pl As MediaPipeline | ||
Riga 67: | Riga 67: | ||
Write "\nEsecuzione terminata !" | Write "\nEsecuzione terminata !" | ||
− | + | End | |
− | + | ||
+ | Public Sub PLIne_End() | ||
bo = True | bo = True | ||
− | ''' | + | End |
+ | |||
+ | |||
+ | ===Eseguire contemporaneamente due o più file audio, ma alterandone il momento della partenza=== | ||
+ | Se si intende far partire un file audio in ritardo o in anticipo, basterà assegnare un valore in ''nanosecondi'' alla Proprietà "ts-offset" dell'elemento finale "sink". | ||
+ | <BR>Riprendendo l'esempio precedente dunque: | ||
+ | snk = New MediaControl(pl, "alsasink") | ||
+ | snk["ts-offset"] = 5000000000 <FONT Color=gray>' ''Ritarda la partenza dell'esecusione audio di 5 secondi''</font> |
Versione delle 07:57, 3 lug 2024
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.6 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
Eseguire contemporaneamente due o più file audio, ma alterandone il momento della partenza
Se si intende far partire un file audio in ritardo o in anticipo, basterà assegnare un valore in nanosecondi alla Proprietà "ts-offset" dell'elemento finale "sink".
Riprendendo l'esempio precedente dunque:
snk = New MediaControl(pl, "alsasink") snk["ts-offset"] = 5000000000 ' Ritarda la partenza dell'esecusione audio di 5 secondi