Ta sama nuta, inne brzmienie: pomiar, który na początku źle wykonałem
Trzy przebiegi o częstotliwości 528 Hz odpowiadają tej samej nucie, a mimo to brzmią zupełnie inaczej. Poszukiwanie przyczyny doprowadziło mnie do liczby, która nie powinna istnieć, a moja pierwsza próba jej zmierzenia okazała się błędna.
Odtwórz falę sinusoidalną i prostokątną o tej samej częstotliwości – nikt ich nie pomyli. Jedna jest łagodna, druga ostra. A jednak jeśli zapytasz instrument, jaki dźwięk właśnie gra, w obu przypadkach udzieli tej samej odpowiedzi.
Właśnie ta rozbieżność stanowi sedno sprawy. Doprowadziła mnie ona również do pewnej wartości, która – zgodnie z teorią – w ogóle nie powinna się tam pojawić — a mój pierwszy pomiar tej wartości był błędny, i to w sposób, który warto pokazać, zamiast po cichu go poprawiać.
Dźwięk to nie ta sama rzecz co nuta
W języku Python wygeneruj trzy sygnały o częstotliwości 528 Hz — sinusoidalny, prostokątny i trójkątny — i przeprowadź transformację FFT dla każdego z nich. Wszystkie trzy sygnały wskazują częstotliwość podstawową wynoszącą 528,00 Hz. Pod względem nut są one identyczne.
Różnica polega na wszystkim, co znajduje się powyżej częstotliwości podstawowej. Powtarzającą się falę można zapisać jako układ zwykłych fal sinusoidalnych o częstotliwościach będących całkowitymi wielokrotnościami tej częstotliwości podstawowej. Te wielokrotności to harmoniczne, a to, które z nich są obecne i na jakim poziomie, jest tym, co ucho odbiera jako barwę dźwięku.
W przypadku fali prostokątnej zasada jest znana i jednoznaczna: zachowują się wyłącznie nieparzyste wielokrotności, a każda z nich ma amplitudę równą ułamkowi amplitudy tona, proporcjonalnemu do odwrotności jej kolejności. Jedna trzecia amplitudy przypada na trzecią harmoniczną. Jedna piąta – na piątą.
Wyniki pomiarów na moim własnym pliku:
| 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 |
Zasada ta obowiązuje z dokładnością do jednego miejsca po przecinku. To jest najłatwiejsza część.
Liczba, która powinna wynosić zero
Ta sama zasada mówi, że parzyste harmoniczne powinny całkowicie nie występować. Nie w niewielkim stopniu. W ogóle.
Nie są one nieobecne. Druga harmoniczna znajduje się 75,9 dB poniżej tonu podstawowego — to około jedna część na sześć tysięcy. Niewielka, niesłyszalna, ale nie zerowa. Teoria przewidywała zero.
Oczywistym podejrzanym jest przyrząd pomiarowy. Tak jednak nie jest: po przeprowadzeniu identycznego pomiaru na czystej fali sinusoidalnej ten sam przedział wskazuje wartość o 238 dB niższą, co jest niczym innym jak szumem arytmetycznym wynikającym z samych liczb. Przyrząd jest w stanie wykryć zjawiska o znacznie mniejszej amplitudzie.
Prawdziwa odpowiedź brzmi: próbkowana fala prostokątna wcale nie powtarza się z częstotliwością 528 Hz.
Obliczmy największy wspólny dzielnik częstotliwości i częstotliwości próbkowania: gcd(528, 44100) = 12. Wzór próbek powtarza się tylko około dwunastu razy na sekundę, więc transformacja nie widzi czystej serii harmonicznej, lecz grzebień z linią co 12 Hz. Niektóre z tych linii grzebienia znajdują się w pobliżu miejsc, w których znajdowałyby się harmoniczne, a jedna z nich pojawia się w przedziale parzystym.
W czym się pomyliłem
Oto fragment, któremu w filmie poświęcono najwięcej czasu, ponieważ jest to część, którą większość kanałów by wycięła.
Mój pierwszy pomiar tej parzystej harmonicznej dał wynik −67,3 dB, więc zapisałem tę wartość jako odpowiedź.
To nie była właściwa odpowiedź. Szukałem piku w oknie o szerokości około ±14 Hz wokół oczekiwanej częstotliwości, zakładając, że niewielki margines błędu nie będzie miał większego znaczenia. Jednak linie grzebieniowe są oddalone od siebie o 12 Hz. Tak szerokie okno z pewnością zawiera sąsiednią linię grzebieniową, a ta linia była głośniejsza niż harmoniczna, na którą faktycznie celowałem. Pomiar sumiennie odnotował najgłośniejszy sygnał w oknie, a ja pomyliłem go z tym, o który pytałem.
Prawidłowa wartość, odczytana dokładnie w tym paśmie, a nie na podstawie najgłośniejszego sygnału w jego pobliżu, wynosi −75,9 dB. Jest to o osiem i pół decybela ciszej niż to, co początkowo opublikowałem dla siebie.
Wniosek wyciągane z tego artykułu można uogólnić w następujący sposób: okno tolerancji nie jest dowolne. Poszerzenie go ze względów bezpieczeństwa zwiększa prawdopodobieństwo, że pomiar odpowie na inne pytanie niż to, które zadaliśmy. Jeśli z tego artykułu zapamiętasz tylko jedną praktyczną wskazówkę, niech to będzie właśnie ta.
Po powiększeniu okna okazało się, że sytuacja jest jeszcze gorsza
Kiedy przestałem polegać na wąskim ujęciu i spojrzałem na całe spektrum, ujawnił się większy artefakt, który nie ma nic wspólnego z liniami grzebieniowymi.
Fala prostokątna zawiera nieskończoną liczbę harmonicznych. Wszystkie częstotliwości powyżej połowy częstotliwości próbkowania nie mogą zostać odwzorowane i ulegają zwrotowi do zakresu słyszalnego. W przypadku wyższych dźwięków słychać to bez żadnej analizy: wygeneruj falę prostokątną o częstotliwości 3000 Hz, a pod nią usłyszysz niski ton, który nie występuje w tym dźwięku. Jest to piętnasta harmoniczna o częstotliwości 45 kHz, zredukowana do 900 Hz — dwie oktawy poniżej odtwarzanego dźwięku.
Przy częstotliwości 528 Hz najsilniejsze załamanie wynosi −33 dB. To o czterdzieści decybeli więcej niż artefakt o parzystej harmonicznej, którego szukałem. To, co nazywałem artefaktem, nie było tym największym.
Dwa testy potwierdzają, że to właśnie efekt fałdowania, a nie coś innego:
Wystarczy podwoić częstotliwość próbkowania, a poziom harmonicznych za każdym razem spada o sześć decybeli. −33, −39, −45, −51. To nie przypadek: pierwsza harmoniczna, która przestaje mieścić się w paśmie, podwaja swoją wartość, a harmoniczna o częstotliwości dwukrotnie wyższej jest o sześć decybeli cichsza zgodnie z tą samą zasadą „jeden na n”.
Zbuduj ten sam kształt z sinusoid, które wszystkie się mieszczą — bez szeregów nieskończonych, bez krawędzi powodujących efekt aliasingu — a poziom spadnie o 236 dB, wracając do poziomu szumu arytmetycznego.
Trzy rzeczy, którymi barwa dźwięku nie jest
Nie chodzi o nutę. Wszystkie trzy kształty mają częstotliwość 528,00 Hz. Jeśli zapytasz instrument, co gra, odpowie trzy razy to samo.
Nie chodzi o głośność. Przy tej samej wysokości szczytu fala prostokątna zawiera o około 3 dB więcej energii niż fala sinusoidalna. To prawda, ale jest to różnica we współczynniku szczytu — czyli tym, jak ściśle ta sama energia jest upakowana w punkcie szczytowym — a nie dowód na to, że harmoniczne zwiększają głośność. Jeśli natomiast dopasujemy te dwa sygnały pod względem energii, to podstawowa częstotliwość sygnału prostokątnego znajduje się około 1 dB poniżej częstotliwości podstawowej sygnału sinusoidalnego: ta sama energia, rozłożona na większą liczbę stopni.
Nie chodzi o jakość. Żaden z tych kształtów nie jest bogatszy, czystszy ani lepszy dla Ciebie. To, co zmierzyliśmy, to rozkład energii na skali — sześć liczb dla kwadratu, sześć różnych liczb dla trójkąta, ta sama nuta leżąca u podstawy obu. To jest pełny opis stabilnego tonu i stanowi całość twierdzenia popartego fizyką. Prawdziwy instrument zmienia się również podczas gry, co jest odrębną kwestią.
Wypróbuj to i zapoznaj się z dokładną zawartością kosza
Cztery linie. Wygeneruj sygnał prostokątny o częstotliwości 528 Hz i częstotliwości próbkowania 44 100 próbek na sekundę, oblicz jego transformację FFT, a następnie odczytaj poziom sygnału przy trzykrotności częstotliwości podstawowej, a następnie przy dwukrotności tej częstotliwości.
Sprawdź dokładnie ten przedział, a nie najgłośniejszy sygnał w jego pobliżu, bo inaczej popełnisz ten sam błąd co ja. W przedziale nieparzystym powinnaś odczytać wartość −9,5 dB, a w przedziale parzystym – około 76 dB poniżej.
Następnie zmień częstotliwość i uruchom program ponownie. Wartość −9,5 nie ulegnie zmianie w zakresie od 100 Hz do 1000 Hz, ponieważ jest to prawo. Liczba parzysta będzie się przesuwać, a jej położenie można przewidzieć przed uruchomieniem symulacji: oblicz największy wspólny dzielnik częstotliwości i liczby 44 100 – będzie to odstęp, o jaki przesuwa się każdy element siatki próbkowania.
Obie powyższe poprawki znalazły się w opublikowanej wersji filmu. Opublikowanie błędnej wartości obok prawidłowej nie jest przejawem skromności; jest to jedyny sposób, w jaki twierdzenie dotyczące pomiaru może zostać zweryfikowane przez kogokolwiek innego niż osoba, która je sformułowała.
Bibliografia
Przedstawiony tu materiał dotyczy raczej podstaw teoretycznych przetwarzania sygnałów niż dowodów klinicznych: dyskretnej transformacji Fouriera i jej siatki przedziałów (numpy.fft), wycieku spektralnego i rozdzielczości okna, granicy Nyquista i zjawiska aliasingu, a także szeregu Fouriera dla fali prostokątnej wraz z amplitudami nieparzystych harmonicznych wynoszącymi 1/n. Zaimplementowano przy użyciu biblioteki numpy; skrypt pomiarowy i jego wyniki są pokazane na ekranie w filmie towarzyszącym.
Materiały edukacyjne dotyczące przetwarzania sygnałów audio. Nie stanowią porady medycznej.
Listen · FFT-verified session Ta sama nuta, inne brzmienie: pomiar, który na początku źle wykonałem Watch on YouTube →