Differenze tra le versioni di "Eseguire due o più file MIDI contemporaneamente mediante la Classe ''MediaPipeline'' del componente gb.media"

Da Gambas-it.org - Wikipedia.
 
Riga 3: Riga 3:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
Riga 14: Riga 14:
 
  <FONT Color=gray>' ''Il primo file audio MIDI:''</font>
 
  <FONT Color=gray>' ''Il primo file audio MIDI:''</font>
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
   src["location"] = "<FONT Color=gray>''/percorso/del/primo/file.mid''</font>"
+
   src["location"] = "<FONT Color=darkgreen>''/percorso/del/primo/file.mid''</font>"
 
   par = New MediaControl(pl, "midiparse")
 
   par = New MediaControl(pl, "midiparse")
 
   flu = New MediaControl(pl, "fluiddec")
 
   flu = New MediaControl(pl, "fluiddec")
Riga 26: Riga 26:
 
  <FONT Color=gray>' ''Il secondo file MIDI:''</font>
 
  <FONT Color=gray>' ''Il secondo file MIDI:''</font>
 
   src2 = New MediaControl(pl, "filesrc")  
 
   src2 = New MediaControl(pl, "filesrc")  
   src2["location"] = "<FONT Color=gray>''/percorso/del/secondo/file.mid''</font>"
+
   src2["location"] = "<FONT Color=darkgreen>''/percorso/del/secondo/file.mid''</font>"
 
   par = New MediaControl(pl, "midiparse")
 
   par = New MediaControl(pl, "midiparse")
 
   flu = New MediaControl(pl, "fluiddec")
 
   flu = New MediaControl(pl, "fluiddec")
Riga 68: Riga 68:
 
   Write "\nEsecuzione terminata !"
 
   Write "\nEsecuzione terminata !"
 
    
 
    
  '''End'''
+
  End
 
   
 
   
  '''Public''' Sub PLIne_End()
+
   
 +
Public Sub PLIne_End()
 
   
 
   
 
   bo = True
 
   bo = True
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 19:36, 17 gen 2024

Mostriamo di seguito un esempio per eseguire due o più file MIDI contemporaneamente mediante la Classe MediaPipeline del componente gb.media.

Private bo As Boolean


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, par, flu, res, con, vol, pan As MediaControl
 Dim src2, par2, flu2, res2, con2, vol2, pan2 As MediaControl
 Dim mix, snk As MediaControl
 
 pl = New MediaPipeline As PLine 
 
' Il primo file audio MIDI:
 src = New MediaControl(pl, "filesrc")
 src["location"] = "/percorso/del/primo/file.mid"
 par = New MediaControl(pl, "midiparse")
 flu = New MediaControl(pl, "fluiddec")
 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 secondo file MIDI:
 src2 = New MediaControl(pl, "filesrc") 
 src2["location"] = "/percorso/del/secondo/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(par)
 par.LinkTo(flu)
 flu.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(par2)
 par2.LinkTo(flu2)
 flu2.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.Close
  
 Write "\nEsecuzione terminata !"
 
End


Public Sub PLIne_End()

 bo = True

End