Differenze tra le versioni di "Eseguire un file audio e un file MIDI contemporaneamente mediante la Classe ''MediaPipeline'' del componente gb.media"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per eseguire contemporaneamente un file audio (nell'esempio che segue sarà un file WAV) e un file MIDI mediante la Classe ''MediaPipeline'' del Componente ''gb.media'', si do...")
 
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 12: Riga 12:
 
   pl = New MediaPipeline As PLine  
 
   pl = New MediaPipeline As PLine  
 
    
 
    
  <FONT Color=gray>' ''Primo file audio wav:''</font>
+
  <FONT Color=gray>' ''Il 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=gray>''/percorso/del/file.wav''</font>"
 
   wap = New MediaControl(pl, "wavparse")
 
   wap = New MediaControl(pl, "wavparse")
 
   res = New MediaControl(pl, "audioresample")
 
   res = New MediaControl(pl, "audioresample")
Riga 31: Riga 31:
 
   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.8
 
   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>

Versione attuale delle 00:44, 23 set 2022

Per eseguire contemporaneamente un file audio (nell'esempio che segue sarà un file WAV) e un file MIDI mediante la Classe MediaPipeline del Componente gb.media, si dovranno utilizzare i plugin di GStreamer specifici per decodificare entrambi i formati di file.

Private bo As Boolean


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, wap, res, con, vol, pan As MediaControl
 Dim src2, par, flu, res2, con2, vol2, pan2 As MediaControl
 Dim mix, snk As MediaControl
 
 pl = New MediaPipeline As PLine 
 
' Il file audio wav:
 src = New MediaControl(pl, "filesrc")
 src["location"] = "/percorso/del/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
 
' Il file MIDI:
 src2 = New MediaControl(pl, "filesrc") 
 src2["location"] = "/percorso/del/file.mid"
 par = New MediaControl(pl, "midiparse")
 flu = New MediaControl(pl, "fluiddec")
 res2 = New MediaControl(pl, "audioresample")
 con2 = New MediaControl(pl, "audioconvert")
 vol2 = New MediaControl(pl, "volume")
 vol2["volume"] = 0.8
 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(par)
 par.LinkTo(flu)
 flu.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