Differenze tra le versioni di "Estrarre una traccia di un CD audio convertendola in un file WAV con il Componente gb.media"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per estrarre una traccia di un CD audio e convertirla conseguentemente in un file WAV mediante il Componente ''gb.media'', è possibile utilizzare il plugin "''cdiocddasrc''"...")
 
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per estrarre una traccia di un CD audio e convertirla conseguentemente in un file WAV mediante il Componente ''gb.media'', è possibile utilizzare il plugin "''cdiocddasrc''" di ''GStreamer''.
+
===Uso del plugin ''cdiocddasrc''===
 +
Per estrarre una traccia di un CD audio e convertirla conseguentemente in un file WAV mediante il Componente ''gb.media'', è possibile utilizzare il plugin ''cdiocddasrc'' di ''GStreamer''.
  
 
Mostriamo un semplice esempio pratico:
 
Mostriamo un semplice esempio pratico:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
+
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
   Dim src, cnv, enc, snk As MediaControl
 
   Dim src, cnv, enc, snk As MediaControl
 +
 +
  pl = New MediaPipeline
 
    
 
    
  pl = New MediaPipeline
+
  src = New MediaControl(pl, "cdiocddasrc")
 +
  src["track"] = 10
 +
  cnv = New MediaControl(pl, "audioconvert")
 +
  enc = New MediaControl(pl, "wavenc")
 +
  snk = New MediaControl(pl, "filesink")
 +
  snk["location"] = "/tmp/audio.wav"
 
    
 
    
  src = New MediaControl(pl, "cdiocddasrc")
+
  src.LinkTo(cnv)
  src["track"] = 10
+
  cnv.LinkTo(enc)
  cnv = New MediaControl(pl, "audioconvert")
+
  enc.LinkTo(snk)
  enc = New MediaControl(pl, "wavenc")
 
  snk = New MediaControl(pl, "filesink")
 
  snk["location"] = "/tmp/audio.wav"
 
 
 
  src.LinkTo(cnv)
 
  cnv.LinkTo(enc)
 
  enc.LinkTo(snk)
 
 
        
 
        
 
  <FONT Color=gray>' ''Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file WAV:''</font>
 
  <FONT Color=gray>' ''Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file WAV:''</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 #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
+
    Flush
  Loop Until (pl.Position >= pl.Duration)
+
    Wait 0.01
 +
  Until (pl.Position >= pl.Duration)
 +
 +
  pl.Stop()
 +
  pl.Close()
 +
 
 +
End
 +
 
 +
 
 +
====Impostazione della frequenza di campionamento (''rate'') e dei canali====
 +
Per impostare preliminarmente i valori della frequenza di campionamento (''rate'') e dei canali, che il file WAV assumerà, si può operare come segue:
 +
Private pl As MediaPipeline
 +
 +
 +
Public Sub Form_Open()
 +
 
 +
  Dim src, cnv, res, enc, snk As MediaControl
 +
  Dim flt As MediaFilter
 +
 
 +
  pl = New MediaPipeline
 +
 
 +
  src = New MediaControl(pl, "cdiocddasrc")
 +
  src["track"] = 2
 +
  cnv = New MediaControl(pl, "audioconvert")
 +
  res = New MediaControl(pl, "audioresample")
 +
<FONT Color=gray>' ''Imposta la frequenza di campionamento ed il numero dei canali del file audio WAV che sarà creato:''</font>
 +
  flt = New MediaFilter(pl, "audio/x-raw,rate=11025,channels=2")
 +
  enc = New MediaControl(pl, "wavenc")
 +
  snk = New MediaControl(pl, "filesink")
 +
  snk["location"] = "/tmp/audio.wav"
 +
 
 +
  src.LinkTo(cnv)
 +
  cnv.LinkTo(res)
 +
  res.LinkTo(flt)
 +
  flt.LinkTo(enc)
 +
  enc.LinkTo(snk)
 +
 
 +
End
 +
 +
 +
Public Sub Button1_Click()
 +
 +
  pl.Play()
 
    
 
    
  pl.Stop()
+
  Repeat
  pl.Close()
+
    Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
 +
    Flush 
 +
    Wait 0.01
 +
  Until (pl.Position >= pl.Duration)
 
    
 
    
  '''End'''
+
  End
 +
 +
 
 +
Public Sub Button2_Click()
 +
 +
  pl.Stop()
 +
  pl.Close()
 +
 
 +
End
  
  
Analogamente possiamo utilizzare anche il plugin "''cdparanoiasrc''" di ''GStreamer''.
+
====Impostazione della frequenza di campionamento (''rate'') e dei canali, nonché modifica della tonalità e del tempo di esecuzione====
 +
Mediante l'uso del plugin ''pitch'' è possibile impostare preliminarmente anche i valori della tonalità e del tempo di esecuzione che il file WAV assumerà, 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.
 +
Private pl As MediaPipeline
 +
 +
 +
Public Sub Form_Open()
 +
 +
  Dim src, cnv, res, pit, enc, snk As MediaControl
 +
  Dim flt As MediaFilter
 +
 
 +
  pl = New MediaPipeline
 +
 
 +
  src = New MediaControl(pl, "cdiocddasrc")
 +
  src["track"] = 2
 +
  cnv = New MediaControl(pl, "audioconvert")
 +
  res = New MediaControl(pl, "audioresample")
 +
<FONT Color=gray>' ''Imposta la frequenza di campionamento ed il numero dei canali del file audio WAV che sarà creato:''</font>
 +
  flt = New MediaFilter(pl, "audio/x-raw,rate=11025,channels=2")
 +
  pit = New MediaControl(pl, "pitch")
 +
  pit["pitch"] = 0.9
 +
  pit["tempo"] = 1.1
 +
  enc = New MediaControl(pl, "wavenc")
 +
  snk = New MediaControl(pl, "filesink")
 +
  snk["location"] = "/tmp/audio.wav"
 +
 
 +
  src.LinkTo(cnv)
 +
  cnv.LinkTo(res)
 +
  res.LinkTo(flt)
 +
  flt.LinkTo(pit)
 +
  pit.LinkTo(enc)
 +
  enc.LinkTo(snk)
 +
 
 +
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))
 +
    Flush 
 +
    Wait 0.01
 +
  Until (pl.Position >= pl.Duration)
 +
 
 +
End
 +
 +
 
 +
Public Sub Button2_Click()
 +
 +
  pl.Stop()
 +
  pl.Close()
 +
 
 +
End
 +
 
 +
 
 +
 
 +
===Uso del plugin ''cdparanoiasrc''===
 +
Analogamente possiamo utilizzare anche il plugin ''cdparanoiasrc'' di ''GStreamer''.
  
 
Mostriamo un semplice esempio pratico:
 
Mostriamo un semplice esempio pratico:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
+
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
   Dim src, cnv, enc, snk As MediaControl
 
   Dim src, cnv, enc, snk As MediaControl
 
    
 
    
  pl = New MediaPipeline
+
  pl = New MediaPipeline
 
    
 
    
  src = New MediaControl(pl, "cdparanoiasrc")
+
  src = New MediaControl(pl, "cdparanoiasrc")
  src["track"] = 10
+
  src["track"] = 10
  cnv = New MediaControl(pl, "audioconvert")
+
  cnv = New MediaControl(pl, "audioconvert")
  enc = New MediaControl(pl, "wavenc")
+
  enc = New MediaControl(pl, "wavenc")
  snk = New MediaControl(pl, "filesink")
+
  snk = New MediaControl(pl, "filesink")
  snk["location"] = "/tmp/audio.wav"
+
  snk["location"] = "/tmp/audio.wav"
 
    
 
    
  src.LinkTo(cnv)
+
  src.LinkTo(cnv)
  cnv.LinkTo(enc)
+
  cnv.LinkTo(enc)
  enc.LinkTo(snk)
+
  enc.LinkTo(snk)
 
        
 
        
 
  <FONT Color=gray>' ''Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file WAV:''</font>
 
  <FONT Color=gray>' ''Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file WAV:''</font>
  pl.Play()
+
  pl.Play()
 
 
  Do
 
<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))
 
    Wait 0.01
 
  Loop
 
 
    
 
    
  pl.Stop()
+
  Repeat
  pl.Close()
+
    Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
 +
    Flush 
 +
    Wait 0.01
 +
  Until (pl.Position >= pl.Duration)
 +
 +
  pl.Stop()
 +
  pl.Close()
 
    
 
    
  '''End'''
+
  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''.

Versione attuale delle 08:37, 30 lug 2023

Uso del plugin cdiocddasrc

Per estrarre una traccia di un CD audio e convertirla conseguentemente in un file WAV mediante il Componente gb.media, è possibile utilizzare il plugin cdiocddasrc di GStreamer.

Mostriamo un semplice esempio pratico:

Public Sub Main()

 Dim pl As MediaPipeline
 Dim src, cnv, enc, snk As MediaControl

 pl = New MediaPipeline
 
 src = New MediaControl(pl, "cdiocddasrc")
 src["track"] = 10
 cnv = New MediaControl(pl, "audioconvert")
 enc = New MediaControl(pl, "wavenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/audio.wav"
 
 src.LinkTo(cnv)
 cnv.LinkTo(enc)
 enc.LinkTo(snk)
     
' Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file WAV:
 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))
   Flush
   Wait 0.01
 Until (pl.Position >= pl.Duration)

 pl.Stop()
 pl.Close()
  
End


Impostazione della frequenza di campionamento (rate) e dei canali

Per impostare preliminarmente i valori della frequenza di campionamento (rate) e dei canali, che il file WAV assumerà, si può operare come segue:

Private pl As MediaPipeline


Public Sub Form_Open()
 
 Dim src, cnv, res, enc, snk As MediaControl
 Dim flt As MediaFilter
 
 pl = New MediaPipeline
  
 src = New MediaControl(pl, "cdiocddasrc")
 src["track"] = 2
 cnv = New MediaControl(pl, "audioconvert")
 res = New MediaControl(pl, "audioresample")
' Imposta la frequenza di campionamento ed il numero dei canali del file audio WAV che sarà creato:
 flt = New MediaFilter(pl, "audio/x-raw,rate=11025,channels=2")
 enc = New MediaControl(pl, "wavenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/audio.wav"
  
 src.LinkTo(cnv)
 cnv.LinkTo(res)
 res.LinkTo(flt)
 flt.LinkTo(enc)
 enc.LinkTo(snk)
  
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))
   Flush  
   Wait 0.01
 Until (pl.Position >= pl.Duration)
  
End

 
Public Sub Button2_Click()

 pl.Stop()
 pl.Close()
  
End


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

Mediante l'uso del plugin pitch è possibile impostare preliminarmente anche i valori della tonalità e del tempo di esecuzione che il file WAV assumerà, 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.
Private pl As MediaPipeline


Public Sub Form_Open()

 Dim src, cnv, res, pit, enc, snk As MediaControl
 Dim flt As MediaFilter
 
 pl = New MediaPipeline
  
 src = New MediaControl(pl, "cdiocddasrc")
 src["track"] = 2
 cnv = New MediaControl(pl, "audioconvert")
 res = New MediaControl(pl, "audioresample")
' Imposta la frequenza di campionamento ed il numero dei canali del file audio WAV che sarà creato:
 flt = New MediaFilter(pl, "audio/x-raw,rate=11025,channels=2")
 pit = New MediaControl(pl, "pitch")
 pit["pitch"] = 0.9
 pit["tempo"] = 1.1
 enc = New MediaControl(pl, "wavenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/audio.wav"
  
 src.LinkTo(cnv)
 cnv.LinkTo(res)
 res.LinkTo(flt)
 flt.LinkTo(pit)
 pit.LinkTo(enc)
 enc.LinkTo(snk)
  
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))
   Flush  
   Wait 0.01
 Until (pl.Position >= pl.Duration)
  
End

 
Public Sub Button2_Click()

 pl.Stop()
 pl.Close()
  
End


Uso del plugin cdparanoiasrc

Analogamente possiamo utilizzare anche il plugin cdparanoiasrc di GStreamer.

Mostriamo un semplice esempio pratico:

Public Sub Main()

 Dim pl As MediaPipeline
 Dim src, cnv, enc, snk As MediaControl
 
 pl = New MediaPipeline
 
 src = New MediaControl(pl, "cdparanoiasrc")
 src["track"] = 10
 cnv = New MediaControl(pl, "audioconvert")
 enc = New MediaControl(pl, "wavenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/audio.wav"
  
 src.LinkTo(cnv)
 cnv.LinkTo(enc)
 enc.LinkTo(snk)
     
' Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file WAV:
 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))
   Flush  
   Wait 0.01
 Until (pl.Position >= pl.Duration)

 pl.Stop()
 pl.Close()
  
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.