Differenze tra le versioni di "Estrarre una traccia di un CD audio convertendola in un file WAV con il Componente gb.media"
(2 versioni intermedie di uno stesso utente non sono mostrate) | |||
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.