Differenze tra le versioni di "Estrarre una traccia di un CD audio convertendola in un file WAV con il Componente gb.media"
(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 | + | 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() | |
− | + | ||
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 | ||
− | + | 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) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<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() | |
− | + | 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(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 | |
Riga 41: | Riga 42: | ||
− | + | 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 | |
− | + | 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> | <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.Play() | ||
− | + | Repeat | |
− | Write | + | 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 | ||
− | + | Until (pl.Position >= pl.Duration) | |
− | + | End | |
− | + | Public Sub Button2_Click() | |
− | + | ||
pl.Stop() | pl.Stop() | ||
pl.Close() | pl.Close() | ||
− | + | 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 | + | 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 | + | * 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 | + | * 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() | |
− | + | ||
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 | |
− | + | 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> | <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() | pl.Play() | ||
− | + | Repeat | |
− | Write | + | 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 | ||
− | + | Until (pl.Position >= pl.Duration) | |
− | + | End | |
− | + | Public Sub Button2_Click() | |
− | + | ||
pl.Stop() | pl.Stop() | ||
pl.Close() | pl.Close() | ||
− | + | End | |
===Uso del plugin ''cdparanoiasrc''=== | ===Uso del plugin ''cdparanoiasrc''=== | ||
− | Analogamente possiamo utilizzare anche il plugin | + | Analogamente possiamo utilizzare anche il plugin ''cdparanoiasrc'' di ''GStreamer''. |
Mostriamo un semplice esempio pratico: | Mostriamo un semplice esempio pratico: | ||
− | + | 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 | |
− | + | 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) | |
<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() | |
− | + | 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''. | |
− | |||
− | 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
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() 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.