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.
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 3: Riga 3:
 
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.
  
Mostriamo un semplice esempio pratico:
+
===Semplice esempio in un'applicazione a ''riga di comando''===
 
  Private bo As Boolean
 
  Private bo As Boolean
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
+
 
   Dim mp As MediaPlayer
 
   Dim mp As MediaPlayer
 
   
 
   
 
   With mp = New MediaPlayer As "MediaPlayer1"
 
   With mp = New MediaPlayer As "MediaPlayer1"
     .URL = Media.URL("<FONT Color=gray>''/percorso/del/file.mid''</font>")
+
     .URL = Media.URL("<FONT Color=darkgreen>''/percorso/del/file.mid''</font>")
 
  <FONT Color=gray>' ''Attiva il Plugin grafico:''</font>
 
  <FONT Color=gray>' ''Attiva il Plugin grafico:''</font>
 
     AvviaPlugin(mp)
 
     AvviaPlugin(mp)
Riga 23: Riga 23:
 
     .Stop
 
     .Stop
 
     .Close
 
     .Close
    
+
   End With
 +
 
   Write "\n\e[0mEsecuzione terminata !"
 
   Write "\n\e[0mEsecuzione terminata !"
 
  <FONT Color=gray>' ''Avendo utilizzato l'Evento "Application_Read()", è necessario invocare l'istruzione "Quit" per terminare il programma:''</font>
 
  <FONT Color=gray>' ''Avendo utilizzato l'Evento "Application_Read()", è necessario invocare l'istruzione "Quit" per terminare il programma:''</font>
 
   Quit
 
   Quit
 
   
 
   
  '''End'''
+
  End
 
   
 
   
  '''Private''' Procedure AvviaPlugin(medpl As MediaPlayer)
+
   
 +
Private Procedure AvviaPlugin(medpl As MediaPlayer)
 
   
 
   
 
   Dim plugVis As MediaControl
 
   Dim plugVis As MediaControl
Riga 47: Riga 49:
 
   medpl.Video.Visualisation = arrplugin[2]
 
   medpl.Video.Visualisation = arrplugin[2]
 
   
 
   
  '''End'''
+
  End
 +
 
   
 
   
  '''Public''' Sub MediaPlayer1_End() ' Questo Evento viene sollevato, quando l'escuzione è terminata
+
  Public Sub MediaPlayer1_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando l'escuzione è terminata''</font>
 
   
 
   
 
   bo = True
 
   bo = True
 
   
 
   
  '''End'''
+
  End
 +
 
   
 
   
  '''Public''' Sub Application_Read() <FONT Color=gray>' ''Premendo il tasto "Invio" della tastiera, si arresta il programma''</font>
+
  Public Sub Application_Read() <FONT Color=gray>' ''Premendo il tasto "Invio" della tastiera, si arresta il programma''</font>
 
   
 
   
 
   bo = True
 
   bo = True
 
   
 
   
  '''End'''
+
  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...