Stessa nota, suono diverso: la misurazione che ho sbagliato all’inizio
Tre forme d'onda a 528 Hz corrispondono alla stessa nota, ma non hanno affatto lo stesso suono. Cercando di capirne il motivo, sono mi sono imbattuto in un numero che non dovrebbe esistere, e il mio primo tentativo di misurarlo si è rivelato errato.
Se si riproducono un’onda sinusoidale e un’onda quadra alla stessa frequenza, nessuno le confonde. Una è morbida, l’altra è stridente. Eppure, se si chiede a uno strumento quale nota stia suonando, in entrambi i casi dà la stessa risposta.
Quel divario è proprio il fulcro della questione. Mi ha anche portato a un valore che, secondo la teoria, non avrebbe dovuto esserci affatto — e la mia prima misurazione di quel valore era errata, in un modo che vale la pena illustrare piuttosto che correggere in silenzio.
La nota non è il suono
Crea tre forme d’onda a 528 Hz in Python — una sinusoidale, una quadra e una triangolare — ed esegui una FFT su ciascuna di esse. Tutte e tre riportano una frequenza fondamentale pari a 528,00 Hz. In termini di nota, sono identiche.
Ciò che fa la differenza è tutto ciò che si trova al di sopra della frequenza fondamentale. Un’onda periodica può essere rappresentata come una sovrapposizione di semplici onde sinusoidali a multipli interi di quella frequenza fondamentale. Questi multipli sono le armoniche, e quali di esse sono presenti, e a quale livello, è ciò che l’orecchio percepisce come timbro.
Per un’onda quadra la regola è nota e ben definita: sopravvivono solo i multipli dispari, e ciascuno di essi porta una frazione dell’ampiezza della fondamentale pari a uno su se stesso. Un terzo dell’ampiezza alla terza armonica. Un quinto alla quinta.
Misurato sul mio file:
| Harmonic | Predicted | Measured |
|---|---|---|
| 3rd | −9.5 dB | −9.5 dB |
| 5th | −14.0 dB | −14.0 dB |
| 7th | −16.9 dB | −16.9 dB |
| 9th | −19.1 dB | −19.1 dB |
La regola vale fino alla cifra decimale. Questa è la parte facile.
Il numero che avrebbe dovuto essere zero
La stessa regola afferma che le armoniche pari dovrebbero essere del tutto assenti. Non in misura minima. Assenti.
Non sono assenti. La seconda armonica si trova a 75,9 dB al di sotto della fondamentale — circa una parte su seimila. Minuscola, impercettibile, ma non pari a zero. La teoria prevedeva che fosse pari a zero.
Il sospettato più ovvio è lo strumento di misura. Ma non è così: se si esegue la stessa misurazione su un seno puro, lo stesso intervallo di lettura indica un valore inferiore di 238 dB, il che non è altro che il rumore aritmetico dei numeri stessi. Lo strumento è in grado di rilevare valori ben inferiori a questo.
La risposta corretta è che l’onda quadra campionata non si ripete affatto a 528 Hz.
Calcoliamo il massimo comune divisore tra la frequenza e la frequenza di campionamento: gcd(528, 44100) = 12. La sequenza dei campioni si ripete solo circa dodici volte al secondo, quindi ciò che la trasformata rileva non è una serie armonica pulita, ma un pettine con una linea ogni 12 Hz. Alcune di queste linee del pettine si trovano vicino a dove si troverebbe un’armonica, e una di esse è quella che compare nel bin pari.
Dove ho sbagliato
Ecco la parte su cui il video si sofferma a lungo, proprio perché è quella che la maggior parte dei canali taglierebbe.
La mia prima misurazione di quell’armonico pari ha dato come risultato −67,3 dB, e l’ho annotato come risposta.
Non era quella la risposta. Avevo cercato il picco all’interno di una finestra larga circa ±14 Hz intorno alla frequenza prevista, ragionando che una piccola tolleranza sarebbe stata accettabile. Ma le linee del pettine sono distanziate di 12 Hz l’una dall’altra. Una finestra così ampia contiene inevitabilmente una linea del pettine adiacente, e quella linea era più forte dell’armonica che stavo effettivamente cercando. La misurazione ha riportato fedelmente il segnale più forte presente nella finestra e io l’ho scambiato per quello che stavo cercando.
Il valore corretto, rilevato proprio in quel punto specifico anziché in corrispondenza del suono più forte nelle vicinanze, è −75,9 dB. Otto decibel e mezzo in meno rispetto a quanto avevo inizialmente pubblicato per conto mio.
La lezione che si può trarre da questo documento va oltre: una finestra di tolleranza non è illimitata. Allargarla per maggiore sicurezza aumenta la probabilità che la misurazione risponda a una domanda diversa da quella che hai posto. Se c’è un concetto pratico da trarre da questo articolo, è proprio questo.
Allargando la finestra ho scoperto qualcosa di peggio
Quando ho smesso di affidarmi a un’interpretazione ristretta e ho considerato l’intero spettro, è emerso un artefatto più grande, che non ha nulla a che vedere con le linee di pettine.
Un’onda quadra presenta armoniche all’infinito. Tutto ciò che si trova al di sopra della metà della frequenza di campionamento non può essere rappresentato e ricade nella gamma udibile. A una nota più alta è possibile percepirlo senza alcuna analisi: generate un’onda quadra a 3000 Hz e sentirete un tono basso sottostante che non fa parte della nota. Si tratta della quindicesima armonica, a 45 kHz, ripiegata verso il basso a 900 Hz — due ottave al di sotto di ciò che viene riprodotto.
A 528 Hz, la piega più forte si attesta a −33 dB. Si tratta di quaranta decibel in più rispetto all’artefatto armonico pari che stavo cercando. Quello che definivo “artefatto” non era in realtà quello più significativo.
Due test confermano che si tratta proprio di un fenomeno di piegamento e non di qualcos’altro:
Raddoppiando la frequenza di campionamento, l’ampiezza delle armoniche diminuisce di sei decibel, ogni volta. −33, −39, −45, −51. Non è una questione di fortuna: la prima armonica che non rientra più nell’intervallo raddoppia il proprio valore, e un’armonica con frequenza doppia risulta più silenziosa di sei decibel in base alla stessa regola “uno su n”.
Costruisci la stessa forma utilizzando seni che si adattino perfettamente tra loro — senza serie infinite, senza bordi che causino aliasing — e il livello scende a 236 dB, tornando al rumore aritmetico.
Tre cose che il timbro non è
Non è la nota. Tutte e tre le forme hanno una frequenza di 528,00 Hz. Se si chiede allo strumento cosa sta suonando, risponde la stessa cosa per tre volte.
Non è una questione di volume. A parità di altezza di picco, l’onda quadra trasporta circa 3 dB di energia in più rispetto all’onda sinusoidale. Questo è un dato di fatto, ma si tratta di una differenza nel fattore di cresta — ovvero quanto densamente la stessa energia si concentra attorno al picco — e non di una prova che le armoniche aumentino il volume. Se invece si mettono a confronto le due onde in termini di energia, la fondamentale dell’onda quadra si trova circa 1 dB al di sotto di quella dell’onda sinusoidale: stessa energia, distribuita su un numero maggiore di gradini.
Non è una questione di qualità. Nessuna delle due forme è più ricca, più pura o migliore dell’altra. Ciò che abbiamo misurato è una distribuzione di energia lungo una scala — sei numeri per il quadrato, sei numeri diversi per il triangolo, la stessa nota alla base di entrambi. Questa è una descrizione completa di un tono costante, ed è l’intera affermazione che la fisica sostiene. Uno strumento reale cambia anche mentre suona, ma questa è una questione a parte.
Provalo e leggi il bin esatto
Quattro righe. Genera un segnale quadratico a 528 Hz con una frequenza di campionamento di 44.100 campioni al secondo, esegui la sua FFT e leggi il livello a tre volte la frequenza fondamentale e poi a due volte.
Leggi il bin esatto, non il segnale più forte nelle vicinanze, altrimenti ripeterai il mio errore. Dovresti rilevare −9,5 dB in quello dispari e circa 76 dB in meno in quello pari.
Quindi modifica la frequenza ed esegui nuovamente il calcolo. Il valore −9,5 non si sposterà, in nessun punto compreso tra 100 Hz e 1000 Hz, perché è una legge. Il numero pari si sposterà, e puoi prevedere dove prima di eseguire il test: calcola il massimo comune divisore tra la tua frequenza e 44.100: quello è l’intervallo di tutti gli elementi aggiunti dalla griglia di campionamento.
Entrambe le correzioni sopra indicate sono presenti nella versione pubblicata del video. Pubblicare il dato errato accanto a quello corretto non è modestia; è l’unico modo in cui un’affermazione relativa a una misurazione possa essere verificata da chiunque non sia la persona che l’ha formulata.
Bibliografia
Il contenuto qui presentato riguarda la teoria dell’elaborazione del segnale piuttosto che l’evidenza clinica: la trasformata di Fourier discreta e la sua griglia di bin (numpy.fft), la dispersione spettrale e la risoluzione della finestra, il limite di Nyquist e l’aliasing, nonché la serie di Fourier di un’onda quadra con le sue ampiezze delle armoniche dispari pari a uno su n. Implementato con numpy; lo script di misurazione e il suo output sono mostrati sullo schermo nel video di accompagnamento.
Contenuti didattici sull’elaborazione del segnale audio. Non costituiscono un parere medico.
Listen · FFT-verified session Stessa nota, suono diverso: la misurazione che ho sbagliato all’inizio Watch on YouTube →