Visualizzare un oscilloscopio od uno spettroscopio durante l'esecuzione di un file Midi mediante il Componente gb.media

Da Gambas-it.org - Wikipedia.

Per visualizzare in apposita finestra, generata dalle risorse di Gstreamer, un oscilloscopio od uno spettroscopio durante l'esecuzione di un file Midi mediante il Componente gb.media, è necessario utilizzare gli appositi plugin forniti da GStreamer attraverso la Classe MediaControl.

Si imposterà il plugin "monoscope " o il plugin "wavescope " per ottenere la visualizzazione di un oscilloscopio. Si utilizzerà il plugin "spectrascope ", per ottenere la visualizzazione di uno spettroscopio.

Mostriamo un semplice esempio pratico:

Private bo As Boolean


Public Sub Main()
 
 Dim mp As MediaPlayer

 With mp = New MediaPlayer As "MediaPlayer1"
   .URL = Media.URL("/percorso/del/file.mid")
' Attiva il Plugin grafico:
   AvviaPlugin(mp)
   .Play()
   Print "Durata del file Midi: \e[34m"; Str(Time(0, 0, 0, .Duration * 1000))
   Repeat
     Write "\r\e[0mTempo trascorso:      \e[1m\e[31m" & Str(Time(0, 0, 0, .Position * 1000))
     Wait 0.01
   Until bo
   .Stop
   .Close
 
 Write "\n\e[0mEsecuzione terminata !"
' Avendo utilizzato l'Evento "Application_Read()", è necessario invocare l'istruzione "Quit" per terminare il programma:
 Quit

End

Private Procedure AvviaPlugin(medpl As MediaPlayer)

 Dim plugVis As MediaControl
 Dim b As Byte
 Dim tipoPlug As String[] = ["monoscope", "spectrascope", "wavescope"]
 Dim arrplugin As MediaControl[]

' Un array di variabili di tipo "MediaControl", ossia di vari PlugIn disponibili:
 arrplugin = New MediaControl[]
 For b = 0 To tipoPlug.Max
   plugVis = New MediaControl(medpl, tipoPlug[b])
   arrplugin.Push(plugVis)
 Next

' Imposta il plug-in da utilizzare fra quelli contenuti dal vettore "arrplugin":
 medpl.Video.Visualisation = arrplugin[2]

End

Public Sub MediaPlayer1_End() ' Questo Evento viene sollevato, quando l'escuzione è terminata

 bo = True

End

Public Sub Application_Read() ' Premendo il tasto "Invio" della tastiera, si arresta il programma

 bo = True

End