Differenze tra le versioni di "Estrarre una traccia di un CD audio convertendola in un file WAV con il Componente gb.media"
Riga 85: | Riga 85: | ||
'''End''' | '''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") | ||
+ | <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/prova.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() | ||
+ | |||
+ | Do | ||
+ | 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 Until (pl.Position >= pl.Duration) | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub Button2_Click() | ||
+ | |||
+ | pl.Stop() | ||
+ | pl.Close() | ||
+ | |||
+ | '''End''' | ||
+ | |||
Versione delle 18:13, 30 giu 2017
Indice
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() Do ' Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati: 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 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/prova.wav" src.LinkTo(cnv) cnv.LinkTo(res) res.LinkTo(flt) flt.LinkTo(enc) enc.LinkTo(snk) End Public Sub Button1_Click() pl.Play() Do 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 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/prova.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() Do 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 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() Do ' Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati: 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() pl.Close() End
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.