Generarsi da soli i file audio di test e non solo con SoX

Test sui sitemi audio: dall'RTA ai tempi di volo, passando per le misure elettriche. Teoria e pratica alla portata di tutti
Rispondi
Avatar utente
Etabeta
sysadmin
sysadmin
Messaggi: 2673
Iscritto il: 13 apr 2018, 17:32
Località: Torino

Generarsi da soli i file audio di test e non solo con SoX

#1

Messaggio da Etabeta »

Carissimi,
condivido con voi alcune informazioni su una piccola ma potente utility "the Swiss Army knife of sound processing programs", free e open source, per pc (Windows, Linux, MacOS X) che probabilmente diversi di voi già conoscono: SoX (che sta per Sound eXchange).
Si tratta di un programma, utilizzabile da riga di comando, dai molteplici usi: conversione di formato file audio, elaborazione di vario tipo come conversione freq. di campionamento, generazione di file o riproduzione di segnali audio.
Le funzionalità sono davvero molte, tutta la documentazione nonchè il download è reperibile qui: http://sox.sourceforge.net

Essendo il funzionamento basato su riga di comando potrà apparire un pò ostico ma in realtà è piuttosto semplice una volta compresa la logica.

In questo post mi concentrerò sull'utilizzo per generale file audio di segnali di test, utili ovviamente in svariati contesti (misurare la risposta in frequenza, il livello di uscita, la distorsione ecc.. ecc..).
Il punto forza di SoX, specialmente nel contesto della generazione di file audio di test, è la grande accuratezza di elaborazione (64 bit).
Naturalmente è molto comodo poter genererare file a piacere piuttosto che tenere un archivio permanente.



ESEMPIO: Generazione di un file audio tono sinusoidale 1KHz, livello 0dB, 16bit, 44.1KHz, wav, stereo, durata 120sec.

Codice: Seleziona tutto

sox -r 44100 -b 16 -n -c 2 -D C:\tono_1KHZ-0db.wav synth 120 sine 1000
Dettaglio della sintassi (nota bene: per ogni comando vanno rispettate maiuscole/minuscole)
-r 44100 : determina il "sample rate" ovvero la frequenza di campionamento del file audio che vogliamo generare, in questo caso 44100

-b 16 : risoluzione del file, in questo caso 16bit (ovviamente è basilare che sia la risoluzione che la freq. di campionamento sia supportata dal player che poi utilizzeremo per riprodurre il file)

-n : nessun file di input (SoX può elaborare file audio in input oppure generare da zero un file, come in questo caso)

-c 2 : numero di canali, 2 per stereo

-D : disabilita il "dithering", cosa è il diter? vedi qui https://it.wikipedia.org/wiki/Dithering , di default SoX effettua dithering quando il file di output ha risoluzione <24bit e in tutti i casi in cui ai richiede una elaborazione su un file di input con output con risolzuione inferiore all'input. In questo caso specifico (generazione di un tono a zero dB) normalmente si scegliere di evitare il dithering per evitare clipping, semmai il dithering è di solito utilizzato per i segnali a basso livello (si arriva anache a -120dB con risoluzione 16bit, ovvero al di sotto del limite teorico di risoluzione di -96dB) ma sono contesti particolari, non tanto per la taratura del proprio impianto audio ma per la misurazione ad es. della risoluzione/linearità di un DAC. Nei cd di test è di norma sempre specificato per ogni traccia se è stato utilizzato o no dithering. Ci sarebbe da scrivere un capitolo a parte su questo argomento, al di là di questo contesto (generare file di test) il corretto utilizzo del dithering è importante quando si tratta di transcodificare file audio in alta risoluzione verso formati a risolzione più bassa (tipicamente pcm 44.1/16) per renderli compatibili con le nostre sorgenti car audio, SoX da questo punto di vista offre una gestione molto raffinata con diverse curve/algoritmi di "noise shaping" (argomento colleralto al dithering: https://it.wikipedia.org/wiki/Noise_shaping).

L'output del file generato in questo esemprio è il seguente: C:\tono_1KHZ-0db.wav, il nome è arbitrario, se non si specifica il percorso il file sarà salvato nella stessa directory dove risiede l'eseguibile SoX. Cambiando l'estensione (es.: flac) è possibile generare file in svariati formati (per alcuni di essi è necessario avere installato i rispettivi codec).

synth 120 sine 1000 : genera "synth" un tono sinusoidale "sine" della durata di 120 secondi e frequenza fissa di 1000 Hz, il comando synth può generare toni sia a frequenza fissa che sweep nonchè rumore (white, pink, brown)



ESEMPIO 2: rumore rosa, livello -12dB, 16bit, 48KHz, flac, stereo, durata 5 min.

Codice: Seleziona tutto

sox -r 48000 -b 16 -n -c 2 -D C:\pink_-12dB.flac synth 300 pinknoise gain -12
Dettaglio sintassi:
synth 300 pinknoise gain -12 : genera rumore rosa, duarata 300 sec., livello -12dB



ESEMPIO 3: sweep lienare da 15Hz a 150Hz, livello -12dB, 16bit, 48KHz, stereo, flac, durata sweep 30sec., durata file 5min.

Codice: Seleziona tutto

sox -r 48000 -b 16 -n -c 2 -D C:\sweep_15-150Hz_-12dB.flac synth 30 sine 15:150 gain -12 repeat 9
Dettaglio sintassi:
synth 30 sine 15:150 gain -12 repeat 9 : genera sweep tono sinusoidale da 15 a 150Hz con crescita lineare frequenza, durata sweep 30sec., ripetuto per 1+9 volte (totale durata file 300sec.).


Le funzionalità di SoX sono molte molte altre, questi sono solo piccoli spunti, chi è stato incuriosito più consulare l'elenco completo dei comandi e le regole sintattiche qui: http://sox.sourceforge.net/sox.html
La qualità e precisione dei file generati è eccellente al pari, e in alcuni casi superiore, rispetto ai più blasonati cd di test.
Avatar utente
Alessio Giomi
Moderatore
Moderatore
Messaggi: 12589
Iscritto il: 23 mag 2012, 21:14
Località: Toscana Val di Cornia
Contatta:

Re: Generarsi da soli i file audio di test e non solo con So

#2

Messaggio da Alessio Giomi »

Bella guida!!!!
Stasera ci butto un occhio, anche se cd test ne ho a bizzeffe....
PIONEER SPH DA120 optical out
HELIX DSP.3
Zapco Z150C2VX ______Sw RE10D4
Zapco Z220II_________ Wf AD W60
Zapco Studio 150______ Mr
------------------------------------------------- > Xtant xis 2.4 by morel
Zapco Studio 100______ Tw

MY CAR KIA
MY OLD CAR
Avatar utente
Lustrike
Woofer
Messaggi: 1474
Iscritto il: 25 apr 2017, 23:32

Re: Generarsi da soli i file audio di test e non solo con So

#3

Messaggio da Lustrike »

Si ma oltre a generare segnali, sarebbe molto utile sapere quando e come utilizzarli nella taratura.
Una guida, insomma, partendo da zero....
Sorgente: CarPC con DAW
FA: Audio Art 240.4XE ->> Kit 2 vie Monza (tw MT25 & mw MW130) biamplificato
Avatar utente
Etabeta
sysadmin
sysadmin
Messaggi: 2673
Iscritto il: 13 apr 2018, 17:32
Località: Torino

Re: Generarsi da soli i file audio di test e non solo con So

#4

Messaggio da Etabeta »

Lustrike ha scritto:Si ma oltre a generare segnali, sarebbe molto utile sapere quando e come utilizzarli nella taratura.
Una guida, insomma, partendo da zero....
Osservazione comprensibile,
però lo scopo di questo thread è dare un'idea dell'oggetto o "strumento" specifico SoX, con il quale è possibile generare un insieme letteralmente infinito di file audio di riferimento per altrettanti infiniti tipi di test, infiniti contesti,
cioè SoX non è un tool specifico per la taratura di un impianto (si può usare anche per questo tipo di scopo, come per mille altri contesti).
Non a caso esiste invece una sezione del forum "Impariamo a misurare" (di cui questo thread fa parte) con tanti thread su vari argomenti.
Partire da zero per creare un compendio che arrivi a definire tutto il processo di taratura (dovendo però decidere per quali tipo di impianto: passivo? multiamplificato? con dsp?) significherebbe centinaia di ore/uomo...
Sarebbe necessario vedere un contesto alla volta e per ogni contesto suddividere in temi, alcuni di essi sono già stati trattati in altri thread.
Insomma gli aspetti sono comunque molteplici: da un lato disporre di una sorgente di riferimento (ad esempio un player con file generati con SoX) e dall'altra andrebbero trattati gli strumenti di misura (microfoni, analizzatori di spettro, di livello...), e infine le procedure di misura.
Insomma, penso sia umanamente impossibile sia esporli sia affrontarli tutti insieme "d'un fiato" in un singolo thread a mò di "bignami", anche se lo facessi per mestiere (cosa che non è...), poi ovviamente dipende se si intende fare una panoramica che non scende nel dettaglio pratico oppure appunto creare "La guida definitiva alla taratura di qualsiasi impianto".
In generale poi ci si sta sempre più spostando verso impianti dotati di dsp, quindi con gestione tramite software proprietari, ciascuno con sue procedure, ad esempio gli Helix/Match hanno già nativamente una procedura di RTA per la taratura con il vantaggio di poter ottenere ottimi risultati senza necessità alcuna di conoscere alcunchè delle teorie che stanno dietro (ma ovviamente per chi ha un prodotto simile basta leggersi la guida data a corredo).

L'obiettivo di questo thread é, molto più semplicemente, offrire uno sguardo su una comoda alternativa rispetto al portarsi dietro in auto 20 chiavette usb o cd di test per poi scoprire che per la misura che vogliamo fare non c'è la traccia che desideriamo XD
Avatar utente
Lustrike
Woofer
Messaggi: 1474
Iscritto il: 25 apr 2017, 23:32

Re: Generarsi da soli i file audio di test e non solo con So

#5

Messaggio da Lustrike »

Si, capisco lo spirito del 3D e comprendo anche che l'argomento potrebbe essere stato affrontato più volte in questa sezione ma, da quello che sono riuscito a leggere, è stato sempre affrontato partendo da un problema specifico di chi già sapeva da dove cominciare e poi si è trovato difronte a qualche inghippo da risolvere.
Il punto è proprio lì: sarebbe utile avere un'idea dei primi passi da fare per cominciare la taratura senza andare a caso e magari poi ricominciare daccapo. Anche poche dritte per i neofiti dell'argomento come il sottoscritto.
Certo non sto chiedendo a te di farlo eh ma penso che qui le competenze ci siano.....

In ogni caso apprezzo molto il sw che hai proposto.
Sorgente: CarPC con DAW
FA: Audio Art 240.4XE ->> Kit 2 vie Monza (tw MT25 & mw MW130) biamplificato
Avatar utente
max1974
Midrange
Messaggi: 1876
Iscritto il: 24 giu 2016, 12:56
Località: Conca Ternana nell'Umbria del Sud

Re: Generarsi da soli i file audio di test e non solo con So

#6

Messaggio da max1974 »

Ho appena scaricato e installato SoX.
L'uso da riga di comando per generare toni sinusoidali è semplicissimo, anche perché una volta scritto il comando per una data frequenza basta copiare e incollare tutta la riga cambiando poi i parametri che interessano.

Con i toni generati ho scoperto che sento a stento i 15kHz!!!

Se ci riesco questa sera o domani provo a montare a banco una sorgente e un ampli per vedere i segnali con l'oscilloscopio e rendermi conto del livello di uscita della sorgente e del clipping dell'ampli.
Poi una volta capito come muovermi farò le prove sulla sorgente e sugli ampli ufficiali.
MASSIMO

Auto: Fu... VW Passat Variant

Sorgente: Pioneer DEH-80PRS / Kenwood KRC-658R / Kenwood KDC-C469 modificato
Ampli Woofer: 2 x Zapco Z100 in dual mono
Ampli Tweeter: Zapco Z50S2II
Ampli Sub: Zapco Z150
Altoparlanti FA: Kit 2 vie Focal 165AS
Subwoofer: Ciare CW254 in bass reflex
Avatar utente
giandam
Subwoofer
Messaggi: 382
Iscritto il: 27 ott 2018, 15:52

Re: Generarsi da soli i file audio di test e non solo con So

#7

Messaggio da giandam »

ho installato sox

non so perché ma non genera nulla

dopo che do un comando, sta lì ad elaborare , poi rida il prompt comandi
senza errori ma neanche senza file generati
sorgente alpine x802d-u

alto:tweeter hertz ml 280.3 montanti autocostruiti
medi :hertz mp70.3 predisposizioni cruscottto
woofer: focal isu690 woofer 6x9 in portiera
sub: audison aps10 in cassa chiusa
audison prima ap 8.9 per il fronte anteriore (due vie a ponte per ogni canale)
audison ap1d per il sub
Avatar utente
Etabeta
sysadmin
sysadmin
Messaggi: 2673
Iscritto il: 13 apr 2018, 17:32
Località: Torino

Re: Generarsi da soli i file audio di test e non solo con So

#8

Messaggio da Etabeta »

giandam ha scritto:ho installato sox

non so perché ma non genera nulla

dopo che do un comando, sta lì ad elaborare , poi rida il prompt comandi
senza errori ma neanche senza file generati
Puoi postare qui esattamente la riga di comando che hai utilizzato?
Inserisci il comando -V all'inzio così che venga generato a video il log dell'esecuzione e, se possibile, posta qui il risultato, ad esempio:

Codice: Seleziona tutto

C:\Program Files (x86)\sox-14-4-2>sox -V -r 44100 -b 16 -n -c 2 -D C:\tono_1KHZ-0db.wav synth 120 sine 1000
sox:      SoX v14.4.2

Input File     : '' (null)
Channels       : 1
Sample Rate    : 44100
Precision      : 16-bit
Endian Type    : little
Reverse Nibbles: no
Reverse Bits   : no


Output File    : 'C:\tono_1KHZ-0db.wav'
Channels       : 2
Sample Rate    : 44100
Precision      : 16-bit
Sample Encoding: 16-bit Signed Integer PCM
Endian Type    : little
Reverse Nibbles: no
Reverse Bits   : no
Comment        : 'Processed by SoX'

sox INFO sox: effects chain: input        44100Hz  1 channels
sox INFO sox: effects chain: synth        44100Hz  1 channels
sox INFO sox: effects chain: channels     44100Hz  2 channels
sox INFO sox: effects chain: output       44100Hz  2 channels

Nota: occhio sempre a rispettare maiuscole e minuscole per i comandi e inserirli nel corretto ordine.
Nota2: il comando va lanciato da prompt dopo essersi posizionati nella stessa directory dove risiede l'eseguibile di sox (tipicamente "C:\Program Files (x86)\sox-14-4-2\" se è questa la release che hai installato tu, e se il percorso di installazione non è stato modificato), oppure inserendo per intero il percorso, quindi ad esempio:

Codice: Seleziona tutto

C:\Program Files (x86)\sox-14-4-2\sox -V -r 44100 -b 16 -n -c 2 -D C:\tono_1KHZ-0db.wav synth 120 sine 1000
Avatar utente
giandam
Subwoofer
Messaggi: 382
Iscritto il: 27 ott 2018, 15:52

Re: Generarsi da soli i file audio di test e non solo con So

#9

Messaggio da giandam »

ecco fatto:



C:\Program Files (x86)\sox-14-4-0>sox -V -r 44100 -b 16 -n -c 2 -D C:\tono_1KHZ-
0db.wav synth 120 sine 1000
sox: SoX v14.4.0

Input File : '' (null)
Channels : 1
Sample Rate : 44100
Precision : 16-bit
Endian Type : little
Reverse Nibbles: no
Reverse Bits : no

sox INFO sox: Overwriting `C:\tono_1KHZ-0db.wav'

Output File : 'C:\tono_1KHZ-0db.wav'
Channels : 2
Sample Rate : 44100
Precision : 16-bit
Sample Encoding: 16-bit Signed Integer PCM
Endian Type : little
Reverse Nibbles: no
Reverse Bits : no
Comment : 'Processed by SoX'

sox INFO sox: effects chain: input 44100Hz 1 channels
sox INFO sox: effects chain: synth 44100Hz 1 channels
sox INFO sox: effects chain: channels 44100Hz 2 channels
sox INFO sox: effects chain: output 44100Hz 2 channels

C:\Program Files (x86)\sox-14-4-0>
sorgente alpine x802d-u

alto:tweeter hertz ml 280.3 montanti autocostruiti
medi :hertz mp70.3 predisposizioni cruscottto
woofer: focal isu690 woofer 6x9 in portiera
sub: audison aps10 in cassa chiusa
audison prima ap 8.9 per il fronte anteriore (due vie a ponte per ogni canale)
audison ap1d per il sub
Avatar utente
giandam
Subwoofer
Messaggi: 382
Iscritto il: 27 ott 2018, 15:52

Re: Generarsi da soli i file audio di test e non solo con So

#10

Messaggio da giandam »

non so pare funzioni tutto
ma il file non lo vedo
sorgente alpine x802d-u

alto:tweeter hertz ml 280.3 montanti autocostruiti
medi :hertz mp70.3 predisposizioni cruscottto
woofer: focal isu690 woofer 6x9 in portiera
sub: audison aps10 in cassa chiusa
audison prima ap 8.9 per il fronte anteriore (due vie a ponte per ogni canale)
audison ap1d per il sub
Avatar utente
Etabeta
sysadmin
sysadmin
Messaggi: 2673
Iscritto il: 13 apr 2018, 17:32
Località: Torino

Re: Generarsi da soli i file audio di test e non solo con So

#11

Messaggio da Etabeta »

giandam ha scritto:non so pare funzioni tutto
ma il file non lo vedo
Il file in questo caso lo dovresti trovare nella radice del drive C:
cioè come specificato nella riga di comando "C:\tono_1KHZ-0db.wav"
Nel log è indicato anche:

Codice: Seleziona tutto

Overwriting `C:\tono_1KHZ-0db.wav'
Segno che era già presente ed è stato sovrascritto.
Per comodità puoi creare una cartella a tuo piacere e indirizzare lì l'output di sox
o anche un drive USB, se ad esempio il drive/pen usb è l'unità "D" basterà indirizzare su di essa l'output, quindi "D:\nome_del_tuo_file.wav" o anche una sottocartella "D:\pinco\nome_del_tuo_file.wav"
Avatar utente
max1974
Midrange
Messaggi: 1876
Iscritto il: 24 giu 2016, 12:56
Località: Conca Ternana nell'Umbria del Sud

Re: Generarsi da soli i file audio di test e non solo con So

#12

Messaggio da max1974 »

Io ho modificato il percorso di installazione in C:\sox per semplificarmi la vita quando lavoro da riga di comando e mi sono fatto un cartella C:\toni dove salvare i toni generati.
MASSIMO

Auto: Fu... VW Passat Variant

Sorgente: Pioneer DEH-80PRS / Kenwood KRC-658R / Kenwood KDC-C469 modificato
Ampli Woofer: 2 x Zapco Z100 in dual mono
Ampli Tweeter: Zapco Z50S2II
Ampli Sub: Zapco Z150
Altoparlanti FA: Kit 2 vie Focal 165AS
Subwoofer: Ciare CW254 in bass reflex
Avatar utente
giandam
Subwoofer
Messaggi: 382
Iscritto il: 27 ott 2018, 15:52

Re: Generarsi da soli i file audio di test e non solo con So

#13

Messaggio da giandam »

si ma il file non c'è...
sorgente alpine x802d-u

alto:tweeter hertz ml 280.3 montanti autocostruiti
medi :hertz mp70.3 predisposizioni cruscottto
woofer: focal isu690 woofer 6x9 in portiera
sub: audison aps10 in cassa chiusa
audison prima ap 8.9 per il fronte anteriore (due vie a ponte per ogni canale)
audison ap1d per il sub
Avatar utente
Etabeta
sysadmin
sysadmin
Messaggi: 2673
Iscritto il: 13 apr 2018, 17:32
Località: Torino

Re: Generarsi da soli i file audio di test e non solo con So

#14

Messaggio da Etabeta »

giandam ha scritto:si ma il file non c'è...
Se dai il comando

Codice: Seleziona tutto

dir C:\*.wav
Non viene elencato nulla?
L'unica cosa che mi viene in mente è che ci sia impostata qualche polocies in windows che impedisca l'accesso il lettura alla radice del drive di sistema C: (potrebbe anche essere, se ad esempio è un pc aziendale), di sicuro il file viene generato e salvato (lo si deduce dal fatto che nel log è indicato che viene sovrascritto).
Al di là di ciò puoi naturalmente impostare un diverso percorso di destinazione a piacere, anche su un drive esterno usb, come detto prima.
Avatar utente
giandam
Subwoofer
Messaggi: 382
Iscritto il: 27 ott 2018, 15:52

Re: Generarsi da soli i file audio di test e non solo con So

#15

Messaggio da giandam »

ecco
ho provato anche al pc di casa
e non andava
stesso problema

ho impostato altra cartella (nei downloads )
e va

forse era quello qualche sistema di protezione della cartella principale
grazie!!!!
sorgente alpine x802d-u

alto:tweeter hertz ml 280.3 montanti autocostruiti
medi :hertz mp70.3 predisposizioni cruscottto
woofer: focal isu690 woofer 6x9 in portiera
sub: audison aps10 in cassa chiusa
audison prima ap 8.9 per il fronte anteriore (due vie a ponte per ogni canale)
audison ap1d per il sub
Rispondi

Torna a “Impariamo a misurare”