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.
 
(7 versioni intermedie di uno stesso utente non sono mostrate)
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.
  '''Public''' Sub Main()
+
Private bo As Boolean
 +
 +
 +
  Public Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
   Dim src, src2, wap, wap2, res, res2, con As MediaControl
+
   Dim src, wap, res, con, vol, pan As MediaControl
   Dim con2, vol, vol2, pan, pan2 As MediaControl
+
   Dim src2, wap2, res2, con2, vol2, pan2 As MediaControl
 
   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>
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
   src["location"] = "<FONT Color=gray>''/percorso/del/primo/file.wav''</font>"
+
   src["location"] = "<FONT Color=darkgreen>''/percorso/del/primo/file.wav''</font>"
 
   wap = New MediaControl(pl, "wavparse")
 
   wap = New MediaControl(pl, "wavparse")
 
   res = New MediaControl(pl, "audioresample")
 
   res = New MediaControl(pl, "audioresample")
Riga 24: Riga 27:
 
  <FONT Color=gray>' ''Secondo file audio wav:''</font>
 
  <FONT Color=gray>' ''Secondo file audio wav:''</font>
 
   src2 = New MediaControl(pl, "filesrc")  
 
   src2 = New MediaControl(pl, "filesrc")  
   src2["location"] = "<FONT Color=gray>''/percorso/del/secondo/file.wav''</font>"
+
   src2["location"] = "<FONT Color=darkgreen>''/percorso/del/secondo/file.wav''</font>"
 
   wap2 = New MediaControl(pl, "wavparse")
 
   wap2 = New MediaControl(pl, "wavparse")
 
   res2 = New MediaControl(pl, "audioresample")
 
   res2 = New MediaControl(pl, "audioresample")
 
   con2 = New MediaControl(pl, "audioconvert")
 
   con2 = New MediaControl(pl, "audioconvert")
 
   vol2 = New MediaControl(pl, "volume")
 
   vol2 = New MediaControl(pl, "volume")
   vol2["volume"] = 0.2
+
   vol2["volume"] = 0.6
 
   pan2 = New MediaControl(pl, "audiopanorama")
 
   pan2 = New MediaControl(pl, "audiopanorama")
 
   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")
+
  mix = New MediaControl(pl, "audiomixer")
  snk = New MediaControl(pl, "alsasink")
+
  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()
 
+
   While pl.Duration > pl.Position
+
   Repeat
     Write "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
+
     Write "\rTempo trascorso: " & Str(Time(0, 0, 0, pl.Position * 1000))
     Wait 0.001
+
     Wait 0.01
  Wend
+
   Until bo
    
+
   
  <FONT Color=gray>' ''Libera la memoria e va in chiusura:''</font>
 
 
   pl.Stop
 
   pl.Stop
 
   pl.Close
 
   pl.Close
Riga 66: Riga 67:
 
   Write "\nEsecuzione terminata !"
 
   Write "\nEsecuzione terminata !"
 
    
 
    
  '''End'''
+
  End
 +
 +
 +
Public Sub PLIne_End()
 +
 +
  bo = True
 +
 +
End

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