Differenze tra le versioni di "Visualizzare un oscilloscopio od uno spettroscopio durante l'esecuzione di un file Midi mediante il Componente gb.media"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per visualizzare in apposita finestra, generata dalle risorse di ''Gstreamer'', un oscilloscopio od uno spettroscopio durante l'esecuzione di un file Midi mediante il Componen...")
 
 
(9 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
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''.
 
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.
+
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.
  
 
+
===Semplice esempio in un'applicazione a ''riga di comando''===
Mostriamo un semplice esempio pratico:
+
Private bo As Boolean
'''Public''' Sub Main()
+
 
+
   Dim mp As New MediaPlayer
+
Public Sub Main()
 
+
  mp.URL = Media.URL("<FONT Color=gray>''/percorso/del/file.mid''</font>")
+
   Dim mp As MediaPlayer
 
+
  AvviaPlugin(mp)
+
  With mp = New MediaPlayer As "MediaPlayer1"
 
+
    .URL = Media.URL("<FONT Color=darkgreen>''/percorso/del/file.mid''</font>")
  <FONT Color=gray>' ''Esegue il file Midi:''</font>
+
  <FONT Color=gray>' ''Attiva il Plugin grafico:''</font>
  mp.Play()
+
    AvviaPlugin(mp)
      
+
    .Play()
  '''End'''
+
     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
 +
  End With
 +
 +
  Write "\n\e[0mEsecuzione terminata !"
 +
  <FONT Color=gray>' ''Avendo utilizzato l'Evento "Application_Read()", è necessario invocare l'istruzione "Quit" per terminare il programma:''</font>
 +
  Quit
 +
 +
End
 +
 
   
 
   
 +
Private Procedure AvviaPlugin(medpl As MediaPlayer)
 
   
 
   
'''Private''' Procedure AvviaPlugin(medpl As MediaPlayer)
 
 
 
 
   Dim plugVis As MediaControl
 
   Dim plugVis As MediaControl
 
   Dim b As Byte
 
   Dim b As Byte
 
   Dim tipoPlug As String[] = ["monoscope", "spectrascope", "wavescope"]
 
   Dim tipoPlug As String[] = ["monoscope", "spectrascope", "wavescope"]
 
   Dim arrplugin As MediaControl[]
 
   Dim arrplugin As MediaControl[]
 
+
 
  <FONT Color=gray>' ''Un array di variabili di tipo "MediaControl", ossia di vari PlugIn disponibili:''</font>
 
  <FONT Color=gray>' ''Un array di variabili di tipo "MediaControl", ossia di vari PlugIn disponibili:''</font>
  arrplugin = New MediaControl[]
+
  arrplugin = New MediaControl[]
  For b = 0 To tipoPlug.Max
+
  For b = 0 To tipoPlug.Max
    plugVis = New MediaControl(medpl, tipoPlug[b])
+
    plugVis = New MediaControl(medpl, tipoPlug[b])
    arrplugin.Push(plugVis)
+
    arrplugin.Push(plugVis)
  Next
+
  Next
 
+
 
  <FONT Color=gray>' ''Imposta il plug-in da utilizzare fra quelli contenuti dal vettore "arrplugin":''</font>
 
  <FONT Color=gray>' ''Imposta il plug-in da utilizzare fra quelli contenuti dal vettore "arrplugin":''</font>
  medpl.Video.Visualisation = arrplugin[2]
+
  medpl.Video.Visualisation = arrplugin[2]
     
+
  '''End'''
+
End
 +
 +
 +
  Public Sub MediaPlayer1_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando l'escuzione è terminata''</font>
 +
 +
  bo = True
 +
 +
End
 +
 +
 +
Public Sub Application_Read() <FONT Color=gray>' ''Premendo il tasto "Invio" della tastiera, si arresta il programma''</font>
 +
 +
  bo = True
 +
 +
End
 +
 
 +
 
 +
===Se si vuole far apparire l'effetto grafico del plugin in una DrawingArea===
 +
Se, avendo un'applicazione in ambiente grafico, si intende far apparire l'effetto grafico del plugin all'interno di una ''DrawingAea'' sarà sufficiente impostare tale Oggetto nel Metodo ".SetWindow()".
 +
 
 +
Riprendendo il codice precedente, fatte le dovute modifiche per l'ambiente grafico, posta una ''DrawingArea'' sul ''Form'', si imposterà come segue:
 +
Private bo As Boolean
 +
 +
 +
Public Sub '''Button1'''_Click()
 +
 +
Dim mp As MediaPlayer
 +
 
 +
With mp = New MediaPlayer As "MediaPlayer1"
 +
  .URL = Media.URL("<FONT Color=darkgreen>''/percorso/del/file.mid''</font>")
 +
  <FONT Color=#b22222>.SetWindow(DrawingArea1)</font>
 +
  AvviaPlugin(mp)
 +
  .Play()
 +
  <FONT Color=gray>''etc... etc...''</font>

Versione attuale delle 19:46, 17 gen 2024

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.

Semplice esempio in un'applicazione a riga di comando

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
 End With

 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


Se si vuole far apparire l'effetto grafico del plugin in una DrawingArea

Se, avendo un'applicazione in ambiente grafico, si intende far apparire l'effetto grafico del plugin all'interno di una DrawingAea sarà sufficiente impostare tale Oggetto nel Metodo ".SetWindow()".

Riprendendo il codice precedente, fatte le dovute modifiche per l'ambiente grafico, posta una DrawingArea sul Form, si imposterà come segue:

Private bo As Boolean


Public Sub Button1_Click()

Dim mp As MediaPlayer
 
With mp = New MediaPlayer As "MediaPlayer1"
  .URL = Media.URL("/percorso/del/file.mid")
  .SetWindow(DrawingArea1)
  AvviaPlugin(mp)
  .Play()
  etc... etc...