Differenze tra le versioni di "Eseguire una traccia di un CD audio mediante le risorse del Componente gb.media"

Da Gambas-it.org - Wikipedia.
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 9: Riga 9:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim mp As MediaPlayer
 
   Dim mp As MediaPlayer
 
    
 
    
  With mp = New MediaPlayer
+
  With mp = New MediaPlayer
    .URL = "cdda://<FONT Color=#B22222>10</font>"
+
<FONT Color=gray>' ''Esegue ad esempio la traccia n. 10 del CD:''</font>
    .Play
+
    .URL = "cdda://<FONT Color=#B22222>10</font>"
  End With
+
    .Play
 
+
  End With
  Do
+
 
 +
  Repeat
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
    Write #File.Out, "\rDurata del brano: " & CStr(Date(0, 0, 0, 0, 0, 0, mp.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Date(0, 0, 0, 0, 0, 0, mp.Position * 1000))
+
    Write "\rDurata del brano: " & CStr(Time(0, 0, 0, mp.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Time(0, 0, 0, mp.Position * 1000))
    Wait 0.01
+
    Wait 0.01
  Loop Until (mp.Position >= mp.Duration) Or (bo = True)
+
  Until (mp.Position >= mp.Duration) Or (bo = True)
 
    
 
    
  mp.Stop
+
  mp.Stop
  mp.Close
+
  mp.Close
 +
  Quit
 
    
 
    
  Quit
+
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'''
 
  
  
Riga 43: Riga 43:
  
 
Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:
 
Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:
  '''Public''' Sub Main()
+
  Private bo As Boolean
 
+
 +
 +
Public Sub Main()
 +
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
    
 
    
 
   pl = New MediaPipeline(Null, "playbin")
 
   pl = New MediaPipeline(Null, "playbin")
 +
<FONT Color=gray>' ''Esegue ad esempio la traccia n. 10 del CD:''</font>
 
   pl["uri"] = "cdda://<FONT Color=#B22222>10</font>"
 
   pl["uri"] = "cdda://<FONT Color=#B22222>10</font>"
 
    
 
    
 
   pl.Play()
 
   pl.Play()
 
    
 
    
   Do
+
   Repeat
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
     Write "\rDurata del brano: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Position * 1000))
+
     Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
     Wait 0.01
+
     Wait 0.001
   Loop Until (pl.Position >= pl.Duration)
+
   Until (pl.Position >= pl.Duration) Or (bo = True)
 
    
 
    
 
   pl.Stop
 
   pl.Stop
 
   pl.Close
 
   pl.Close
 +
  Quit
 
      
 
      
  '''End'''
+
  End
 +
 +
 +
Public Sub Application_Read()  <FONT Color=gray>' ''Premendo il tasto "Invio" della tastiera, si arresta il programma''</font>
 +
 
 +
  bo = True
 +
 
 +
End
  
  
Riga 71: Riga 83:
  
 
Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:
 
Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:
  '''Public''' Sub Main()
+
  Private bo As Boolean
 
+
 +
 +
Public Sub Main()
 +
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
   Dim src As MediaControl
 
   Dim src As MediaControl
Riga 79: Riga 94:
 
    
 
    
 
   src = New MediaControl(pl, "playbin")
 
   src = New MediaControl(pl, "playbin")
 +
<FONT Color=gray>' ''Esegue ad esempio la traccia n. 10 del CD:''</font>
 
   src["uri"] = "cdda://<FONT Color=#B22222>10</font>"
 
   src["uri"] = "cdda://<FONT Color=#B22222>10</font>"
 
    
 
    
 
   pl.Play()
 
   pl.Play()
 
    
 
    
   Do
+
   Repeat
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
     Write "\rDurata del brano: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Position * 1000))
+
     Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
     Wait 0.01
+
     Wait 0.001
   Loop Until (pl.Position >= pl.Duration)
+
   Until (pl.Position >= pl.Duration) Or (bo = True)
 
    
 
    
 
   pl.Stop
 
   pl.Stop
 
   pl.Close
 
   pl.Close
 +
  Quit
 +
 
 +
End
 +
 +
 +
Public Sub Application_Read()  <FONT Color=gray>' ''Premendo il tasto "Invio" della tastiera, si arresta il programma''</font>
 
    
 
    
  '''End'''
+
  bo = True
 +
 
 +
  End
  
  
===Uso del plug-in "''cdiocddasrc''"===
+
===Uso del plug-in ''cdiocddasrc''===
Volendo evitare il plug-in ''playbin'', è possibile utilizzare il plug-in "''cdiocddasrc''" per la lettura ed esecuzione della traccia audio prescelta.
+
Volendo evitare il plug-in ''playbin'', è possibile utilizzare il plug-in ''cdiocddasrc'' per la lettura ed esecuzione della traccia audio prescelta.
  
 
Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:
 
Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:
  '''Public''' Sub Main()
+
  Private bo As Boolean
 +
 +
 +
Public Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
Riga 107: Riga 134:
 
    
 
    
 
   src = New MediaControl(pl, "cdiocddasrc")
 
   src = New MediaControl(pl, "cdiocddasrc")
 +
<FONT Color=gray>' ''Esegue ad esempio la traccia n. 10 del CD:''</font>
 
   src["track"] = 10
 
   src["track"] = 10
 
   cnv = New MediaControl(pl, "audioconvert")
 
   cnv = New MediaControl(pl, "audioconvert")
Riga 116: Riga 144:
 
   pl.Play()
 
   pl.Play()
 
    
 
    
   Do
+
   Repeat
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
     Write #File.Out, "\rDurata del brano: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Position * 1000))
+
     Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
     Wait 0.01
+
     Wait 0.001
   Loop Until (pl.Position >= pl.Duration)
+
   Until (pl.Position >= pl.Duration) Or (bo = True)
 
    
 
    
 
   pl.Stop()
 
   pl.Stop()
 
   pl.Close()
 
   pl.Close()
 +
  Quit
 
    
 
    
  '''End'''
+
  End
 +
 +
 +
Public Sub Application_Read()  <FONT Color=gray>' ''Premendo il tasto "Invio" della tastiera, si arresta il programma''</font>
 +
 +
  bo = True
 +
 
 +
End
 +
 
  
 
====Impostazione della frequenza di campionamento (rate) e dei canali, nonché modifica della tonalità e del tempo di esecuzione====
 
====Impostazione della frequenza di campionamento (rate) e dei canali, nonché modifica della tonalità e del tempo di esecuzione====
Riga 139: Riga 176:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
+
 
   Dim src, cnv, res, enc, cnv2, snk As MediaControl
 
   Dim src, cnv, res, enc, cnv2, snk As MediaControl
 
   Dim flt As MediaFilter
 
   Dim flt As MediaFilter
Riga 147: Riga 184:
 
    
 
    
 
   src = New MediaControl(pl, "cdiocddasrc")
 
   src = New MediaControl(pl, "cdiocddasrc")
 +
<FONT Color=gray>' ''Esegue ad esempio la traccia n. 2 del CD:''</font>
 
   src["track"] = 2
 
   src["track"] = 2
 
   cnv = New MediaControl(pl, "audioconvert")
 
   cnv = New MediaControl(pl, "audioconvert")
Riga 177: Riga 215:
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
    
 
    
 
   pl.Play()
 
   pl.Play()
 
    
 
    
   Do
+
   Repeat
     Write #File.Out, "\rDurata del brano: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Position * 1000))
+
     Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
 
     Wait 0.01
 
     Wait 0.01
   Loop Until (pl.Position >= pl.Duration)
+
   Until (pl.Position >= pl.Duration)
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Button2_Click()
+
  Public Sub Button2_Click()
 
+
 
   pl.Stop()
 
   pl.Stop()
 
   pl.Close()
 
   pl.Close()
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Slider1_Change()
+
  Public Sub Slider1_Change()
 
    
 
    
 
   pitch = Slider1.Value / 100
 
   pitch = Slider1.Value / 100
 
   pit["pitch"] = pitch
 
   pit["pitch"] = pitch
 
   ValueBox1.Value = pitch
 
   ValueBox1.Value = pitch
 
 
'''End'''
 
 
   
 
   
 +
End
 +
 +
 +
Public Sub Slider2_Change()
 
   
 
   
'''Public''' Sub Slider2_Change()
 
 
 
 
   tempo = Slider2.Value / 100
 
   tempo = Slider2.Value / 100
 
   pit["tempo"] = tempo
 
   pit["tempo"] = tempo
 
   ValueBox2.Value = tempo
 
   ValueBox2.Value = tempo
 
    
 
    
  '''End'''
+
  End
  
  
===Uso del plug-in "''cdparanoiasrc''"===
+
===Uso del plug-in ''cdparanoiasrc''===
E' possibile anche utilizzare il plug-in "''cdparanoiasrc''" per la lettura ed esecuzione della traccia audio prescelta.
+
E' possibile anche utilizzare il plug-in ''cdparanoiasrc'' per la lettura ed esecuzione della traccia audio prescelta.
  
 
Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:
 
Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:
  '''Public''' Sub Main()
+
  Private bo As Boolean
 +
 +
 +
Public Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
   Dim src, cnv, snk As MediaControl
 
   Dim src, cnv, snk As MediaControl
 
    
 
    
  pl = New MediaPipeline
+
  pl = New MediaPipeline
 
    
 
    
  src = New MediaControl(pl, "cdparanoiasrc")
+
  src = New MediaControl(pl, "cdparanoiasrc")
  src["track"] = 10
+
<FONT Color=gray>' ''Esegue ad esempio la traccia n. 10 del CD:''</font>
  cnv = New MediaControl(pl, "audioconvert")
+
  src["track"] = 10
  snk = New MediaControl(pl, "alsasink")
+
  cnv = New MediaControl(pl, "audioconvert")
 
+
  snk = New MediaControl(pl, "alsasink")
  src.LinkTo(cnv)
+
 
  cnv.LinkTo(snk)
+
  src.LinkTo(cnv)
 
+
  cnv.LinkTo(snk)
  pl.Play()
+
 
 
+
  pl.Play()
  Do
+
 
 +
  Repeat
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
    Write #File.Out, "\rDurata del brano: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Position * 1000))
+
    Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
    Wait 0.01
+
    Wait 0.01
  Loop Until (pl.Position >= pl.Duration)
+
  Until (pl.Position >= pl.Duration) Or (bo = True)
 
+
 
  pl.Stop()
+
  pl.Stop()
  pl.Close()
+
  pl.Close()
 
+
  Quit
  '''End'''
+
 
 +
End
 +
 +
   
 +
Public Sub Application_Read()  <FONT Color=gray>' ''Premendo il tasto "Invio" della tastiera, si arresta il programma''</font>
 +
 +
  bo = True
 +
 
 +
End
  
  
Riga 261: Riga 311:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
+
 
   Dim mp As MediaPlayer
 
   Dim mp As MediaPlayer
 
   Dim usc As MediaControl
 
   Dim usc As MediaControl
 
    
 
    
  Me.Show
+
  Me.Show
 
    
 
    
  With mp = New MediaPlayer
+
  With mp = New MediaPlayer
    .URL = "<FONT Color=#B22222>cdda://10</font>"
+
<FONT Color=gray>' ''Esegue ad esempio la traccia n. 10 del CD:''</font>
  End With
+
    .URL = "<FONT Color=#B22222>cdda://10</font>"
 +
  End With
 
    
 
    
  usc = New MediaControl(mp, "jackaudiosink")
+
  usc = New MediaControl(mp, "jackaudiosink")
  mp.Audio.Output = usc
+
  mp.Audio.Output = usc
 
    
 
    
  mp.Play()
+
  mp.Play()
 
    
 
    
  Do
+
  Repeat
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
    Write #File.Out, "\rDurata del brano: " & CStr(Date(0, 0, 0, 0, 0, 0, mp.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Date(0, 0, 0, 0, 0, 0, mp.Position * 1000))
+
    Write "\rDurata del brano: " & CStr(Time(0, 0, 0, mp.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Time(0, 0, 0, mp.Position * 1000))
    Wait 0.01
+
    Wait 0.01
  Loop Until (mp.Position >= mp.Duration) Or (bo = True)
+
  Until (mp.Position >= mp.Duration) Or (bo = True)
 
    
 
    
  mp.Stop
+
  mp.Stop
 +
  mp.Close
 +
  Me.Close
 
    
 
    
  Me.Close
+
End
 
+
   
  '''End'''
 
 
   
 
   
 +
Public Sub Button1_Click()
 
   
 
   
'''Public''' Sub Button1_Click()
+
   bo = True
    
 
  bo = True
 
 
    
 
    
  '''End'''
+
  End

Versione attuale delle 08:18, 30 lug 2023

E' possibile eseguire una traccia di un CD audio mediante il Componente gb.media di Gambas, utilizzando alcune sue risorse.


Uso della sola Classe MediaPlayer

L'utilizzo della sola Classe MediaPipeline del Componente gb.media prevede l'uso del plug-in "playbin"

Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:

Private bo As Boolean


Public Sub Main()
 
 Dim mp As MediaPlayer
 
 With mp = New MediaPlayer
' Esegue ad esempio la traccia n. 10 del CD:
   .URL = "cdda://10"
   .Play
 End With
 
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:
   Write "\rDurata del brano: " & CStr(Time(0, 0, 0, mp.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, mp.Position * 1000))
   Wait 0.01
 Until (mp.Position >= mp.Duration) Or (bo = True)
 
 mp.Stop
 mp.Close
 Quit
  
End


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

 bo = True
  
End


Uso della sola Classe MediaPipeline

L'utilizzo della sola Classe MediaPipeline del Componente gb.media prevede l'uso del plug-in "playbin".

Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:

Private bo As Boolean


Public Sub Main()

 Dim pl As MediaPipeline
 
 pl = New MediaPipeline(Null, "playbin")
' Esegue ad esempio la traccia n. 10 del CD:
 pl["uri"] = "cdda://10"
 
 pl.Play()
  
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:
   Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
   Wait 0.001
 Until (pl.Position >= pl.Duration) Or (bo = True)
  
 pl.Stop
 pl.Close
 Quit
   
End


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


Uso della Classe MediaPipeline e della Classe MediaControl

L'esecuzione di una traccia può essere effettuata anche utilizzando le Classi MediaPipeline e MediaControl del Componente gb.media.

Uso del plug-in "playbin"

E' possibile utilizzare il plug-in "playbin" per la letura ed esecuzione della traccia audio prescelta.

Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:

Private bo As Boolean


Public Sub Main()

 Dim pl As MediaPipeline
 Dim src As MediaControl
  
 pl = New MediaPipeline
  
 src = New MediaControl(pl, "playbin")
' Esegue ad esempio la traccia n. 10 del CD:
 src["uri"] = "cdda://10"
  
 pl.Play()
  
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:
   Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
   Wait 0.001
 Until (pl.Position >= pl.Duration) Or (bo = True)
 
 pl.Stop
 pl.Close
 Quit
 
End


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


Uso del plug-in cdiocddasrc

Volendo evitare il plug-in playbin, è possibile utilizzare il plug-in cdiocddasrc per la lettura ed esecuzione della traccia audio prescelta.

Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:

Private bo As Boolean


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, cnv, snk As MediaControl
  
 pl = New MediaPipeline
  
 src = New MediaControl(pl, "cdiocddasrc")
' Esegue ad esempio la traccia n. 10 del CD:
 src["track"] = 10
 cnv = New MediaControl(pl, "audioconvert")
 snk = New MediaControl(pl, "alsasink")
 
 src.LinkTo(cnv)
 cnv.LinkTo(snk)
  
 pl.Play()
 
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:
   Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
   Wait 0.001
 Until (pl.Position >= pl.Duration) Or (bo = True)
  
 pl.Stop()
 pl.Close()
 Quit
  
End


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

 bo = True
  
End


Impostazione della frequenza di campionamento (rate) e dei canali, nonché modifica della tonalità e del tempo di esecuzione

E' possibile impostare i valori della frequenza di campionamento (rate) e dei canali, nonché modificare la tonalità e il tempo di esecuzione. Quest'ultime due impostazione verranno effettuate con il plugin "pitch", considerando che:

  • per impostare la tonalità si userà l'omonima proprietà "pitch": il valore di partenza predefinito è 1.0;
  • per impostare la velocità del tempo di esecuzione si userà la proprietà "tempo": il valore di partenza predefinito è 1.0.

Nell'esempio che segue sarà possibile modificare in "tempo reale" i valori della tonalità e del tempo mediante due Slider:

Private pl As MediaPipeline
Private pit As MediaControl
Private pitch As Float = 1.00
Private tempo As Float = 1.00


Public Sub Form_Open()

 Dim src, cnv, res, enc, cnv2, snk As MediaControl
 Dim flt As MediaFilter
 
  pl = New MediaPipeline
  
  src = New MediaControl(pl, "cdiocddasrc")
' Esegue ad esempio la traccia n. 2 del CD:
  src["track"] = 2
  cnv = New MediaControl(pl, "audioconvert")
  res = New MediaControl(pl, "audioresample")
  flt = New MediaFilter(pl, "audio/x-raw,rate=44100,channels=2")
  pit = New MediaControl(pl, "pitch")
  pit["pitch"] = 0.9
  pit["tempo"] = 1.1
  cnv2 = New MediaControl(pl, "audioconvert")
  snk = New MediaControl(pl, "alsasink")
   
  src.LinkTo(cnv)
  cnv.LinkTo(res)
  res.LinkTo(flt)
  flt.LinkTo(pit)
  pit.LinkTo(cnv2)
  cnv2.LinkTo(snk)
  
' Imposta alcuni valori dei due "Slider":
  With Slider1
    .MinValue = 0
    .MaxValue = 1000
    .Value = 100
  End With
 
  With Slider2
    .MinValue = 0
    .MaxValue = 1000
    .Value = 100
  End With
  
End


Public Sub Button1_Click()
 
 pl.Play()
 
 Repeat
   Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
   Wait 0.01
 Until (pl.Position >= pl.Duration)
  
End


Public Sub Button2_Click()

 pl.Stop()
 pl.Close()
  
End


Public Sub Slider1_Change()
 
 pitch = Slider1.Value / 100
 pit["pitch"] = pitch
 ValueBox1.Value = pitch

End


Public Sub Slider2_Change()

 tempo = Slider2.Value / 100
 pit["tempo"] = tempo
 ValueBox2.Value = tempo
  
End


Uso del plug-in cdparanoiasrc

E' possibile anche utilizzare il plug-in cdparanoiasrc per la lettura ed esecuzione della traccia audio prescelta.

Mostriamo un semplice esempio, nel quale imposteremo l'esecuzione della traccia num. 10 del CD audio:

Private bo As Boolean


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, cnv, snk As MediaControl
  
 pl = New MediaPipeline
  
 src = New MediaControl(pl, "cdparanoiasrc")
' Esegue ad esempio la traccia n. 10 del CD:
 src["track"] = 10
 cnv = New MediaControl(pl, "audioconvert")
 snk = New MediaControl(pl, "alsasink")
 
 src.LinkTo(cnv)
 cnv.LinkTo(snk)
 
 pl.Play()
 
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:
   Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
   Wait 0.01
 Until (pl.Position >= pl.Duration) Or (bo = True)
 
 pl.Stop()
 pl.Close()
 Quit
 
End


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

 bo = True
 
End


Per l'impostazione dei valori della frequenza di campionamento (rate) e dei canali, nonché della tonalità e del tempo di esecuzione, che il file WAV assumerà, il codice avrà la medesima costituzione di quello visto appena sopra per il plugin cdiocddasrc.


Uso delle Classi MediaPlayer e MediaControl e del plug-in jackaudiosink

L'uso delle Classi MediaPlayer e MediaControl e del plug-in jackaudiosink richiede che sia preliminarmente avviato il programma server Jack.

Mostriamo un esempio questa volta in ambiente grafico:

Private bo As Boolean


Public Sub Form_Open()

 Dim mp As MediaPlayer
 Dim usc As MediaControl
 
 Me.Show
  
 With mp = New MediaPlayer
' Esegue ad esempio la traccia n. 10 del CD:
   .URL = "cdda://10"
 End With
  
 usc = New MediaControl(mp, "jackaudiosink")
 mp.Audio.Output = usc
  
 mp.Play()
  
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:
   Write "\rDurata del brano: " & CStr(Time(0, 0, 0, mp.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, mp.Position * 1000))
   Wait 0.01
 Until (mp.Position >= mp.Duration) Or (bo = True)
  
 mp.Stop
 mp.Close
 Me.Close
  
End


Public Sub Button1_Click()

 bo = True
  
End