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.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 1: Riga 1:
 
===Uso del plugin ''cdiocddasrc''===
 
===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''.
+
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()
+
   pl.Stop()
 +
  pl.Close()
 
    
 
    
  '''End'''
+
  End
  
  
Riga 41: Riga 42:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
   Dim src, cnv, res, enc, snk As MediaControl
 
   Dim src, cnv, res, enc, snk As MediaControl
 
   Dim flt As MediaFilter
 
   Dim flt As MediaFilter
 
    
 
    
  pl = New MediaPipeline
+
  pl = New MediaPipeline
 
    
 
    
  src = New MediaControl(pl, "cdiocddasrc")
+
  src = New MediaControl(pl, "cdiocddasrc")
  src["track"] = 2
+
  src["track"] = 2
  cnv = New MediaControl(pl, "audioconvert")
+
  cnv = New MediaControl(pl, "audioconvert")
  res = New MediaControl(pl, "audioresample")
+
  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>
 
  <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")
+
  flt = New MediaFilter(pl, "audio/x-raw,rate=11025,channels=2")
  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(res)
+
  cnv.LinkTo(res)
  res.LinkTo(flt)
+
  res.LinkTo(flt)
  flt.LinkTo(enc)
+
  flt.LinkTo(enc)
  enc.LinkTo(snk)
+
  enc.LinkTo(snk)
 
    
 
    
  '''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))
 +
    Flush 
 
     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
  
  
 
====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====
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:
+
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 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.
+
* per impostare la velocità del tempo di esecuzione si userà la Proprietà "tempo": il valore di partenza predefinito è 1.0.
 
  Private pl As MediaPipeline
 
  Private pl As MediaPipeline
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
+
 
   Dim src, cnv, res, pit, enc, snk As MediaControl
 
   Dim src, cnv, res, pit, enc, snk As MediaControl
 
   Dim flt As MediaFilter
 
   Dim flt As MediaFilter
 
    
 
    
  pl = New MediaPipeline
+
  pl = New MediaPipeline
 
    
 
    
  src = New MediaControl(pl, "cdiocddasrc")
+
  src = New MediaControl(pl, "cdiocddasrc")
  src["track"] = 2
+
  src["track"] = 2
  cnv = New MediaControl(pl, "audioconvert")
+
  cnv = New MediaControl(pl, "audioconvert")
  res = New MediaControl(pl, "audioresample")
+
  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>
 
  <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")
+
  flt = New MediaFilter(pl, "audio/x-raw,rate=11025,channels=2")
  pit = New MediaControl(pl, "pitch")
+
  pit = New MediaControl(pl, "pitch")
  pit["pitch"] = 0.9
+
  pit["pitch"] = 0.9
  pit["tempo"] = 1.1
+
  pit["tempo"] = 1.1
  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(res)
+
  cnv.LinkTo(res)
  res.LinkTo(flt)
+
  res.LinkTo(flt)
  flt.LinkTo(pit)
+
  flt.LinkTo(pit)
  pit.LinkTo(enc)
+
  pit.LinkTo(enc)
  enc.LinkTo(snk)
+
  enc.LinkTo(snk)
 
    
 
    
  '''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))
 +
    Flush 
 
     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
  
  
  
 
===Uso del plugin ''cdparanoiasrc''===
 
===Uso del plugin ''cdparanoiasrc''===
Analogamente possiamo utilizzare anche il plugin "''cdparanoiasrc''" di ''GStreamer''.
+
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
+
  Repeat
<FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
+
    Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
    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))
+
    Flush 
    Wait 0.01
+
    Wait 0.01
  Loop
+
  Until (pl.Position >= pl.Duration)
    
+
  pl.Stop()
+
   pl.Stop()
  pl.Close()
+
  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''.
 
 
Per l'impostazione dei valori della frequenza di campionamento (''rate'') e dei canali, 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.