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.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 69: Riga 69:
 
  End
 
  End
 
   
 
   
 
+
 
  Public Sub PLIne_End()
 
  Public Sub PLIne_End()
 
   
 
   
Riga 75: Riga 75:
 
   
 
   
 
  End
 
  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 attuale delle 08:17, 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