Ряд Фур'є та перетворення Фур'є
Кожна музична нота, кожен голосний звук, кожен удар дзвону — це хвиля тиску, яка повторюється знову і знову. Приголомшливе твердження Жозефа Фур'є з 1807 року: будь-яку таку періодичну хвилю, хоч би якою нерівною вона була, можна точно відтворити нескінченною сумою чистих синусоїд. Саме ця ідея лежить в основі синтезаторів, стиснення MP3 та еквалайзера у ваших навушниках.
Періодичні сигнали як суми синусоїд
Звукова хвиля є періодичною з періодом T, якщо вона точно повторюється кожні T секунд: p(t) = p(t + T). Чистий тон — одна синусоїда — найпростіший періодичний сигнал. Але нота скрипки, людський голосний звук чи прямокутний патч синтезатора виглядають на осцилографі набагато складніше, ніж синусоїда, хоча так само повторюються з фіксованим періодом.
Теорема Фур'є стверджує, що будь-яку достатньо «пристойну» періодичну функцію можна записати як суму сталої (це середнє значення, або зміщення постійного струму) плюс синус і косинус хвилі на цілих кратних основної частоти f₀ = 1/T — ці кратні називаються гармоніками.
Числа a₀, a₁, a₂, … та b₁, b₂, … — це коефіцієнти Фур'є. Вони точно показують, скільки кожної гармоніки присутньо — і саме цей набір чисел є тембром звуку. Флейта має енергію, зосереджену в перших кількох гармоніках; яскравіший, «дзижчачий» гобой має енергію, розподілену по багатьох гармоніках.
Коефіцієнти ряду Фур'є
Коефіцієнти знаходять шляхом проєктування сигналу на кожну гармоніку — множення на синус або косинус тієї частоти та інтегрування за один період. Це працює, бо синуси й косинуси різних номерів гармонік ортогональні: їхній добуток інтегрується в нуль за повний період, якщо частоти не збігаються.
aₙ = (2/T) ∫₀T p(t)·cos(2π n f₀ t) dt
bₙ = (2/T) ∫₀T p(t)·sin(2π n f₀ t) dt
Маючи aₙ та bₙ, часто зручніше об'єднати їх у амплітуду та фазу для кожної гармоніки — саме це відображає аналізатор спектра у вигляді стовпчиків над кожною частотою:
φₙ = atan2(bₙ, aₙ) (фаза гармоніки n)
Приклад: прямокутна хвиля
Класична прямокутна хвиля синтезатора (амплітуда ±1, період T) містить лише непарні гармоніки, які спадають як 1/n:
= (4/π) [ sin(ωt) + sin(3ωt)/3 + sin(5ωt)/5 + sin(7ωt)/7 + … ]
Саме тому прямокутна хвиля звучить порожньо і «схоже на кларнет» порівняно з пилкоподібною хвилею (яка має і парні, і непарні гармоніки, що спадають як 1/n, і звучить яскравіше й буйніше). Різницю можна почути безпосередньо: зіграйте лише основну частоту, потім додайте 3-тю гармоніку з амплітудою 1/3, потім 5-ту з 1/5 — і тон поступово перетворюється з м'якої синусоїди на різку прямокутну хвилю.
Ефект Ґіббса
Ідеальна прямокутна хвиля має миттєвий, нескінченно різкий стрибок — але будь-яка часткова сума скінченної кількості синусоїд є гладкою. Додаючи більше гармонік, наближення стає точнішим майже всюди, але саме в місці стрибка вперте перевищення приблизно на 9% висоти стрибка ніяк не зникає, скільки б гармонік ви не додавали. Це ефект Ґіббса, відкритий Джозаєю Віллардом Ґіббсом у 1899 році.
Комплексна експоненційна форма
Інженери майже завжди записують ряд Фур'є через комплексні експоненти замість окремих синусів і косинусів — через формулу Ейлера eiθ = cos θ + i sin θ, вся сума згортається в один елегантний вираз:
cₙ = (1/T) ∫₀T p(t) · e−i 2π n f₀ t dt
Тут cₙ — одне комплексне число на гармоніку, що поєднує амплітуду (|cₙ|) та фазу (arg cₙ) разом, а від'ємне n просто представляє «від'ємну частоту» — партнера, потрібного, щоб p(t) залишалося дійсним. Саме ця форма використовується майже повсюдно в обробці сигналів — включно з ШПФ, яке обчислює скінченну, дискретизовану версію саме цієї суми.
Від ряду до перетворення
Ряд Фур'є застосовується лише до періодичних сигналів. Але більшість цікавих звуків — вимовлене речення, удар барабана, сплеск шуму — зовсім не періодичні. Перетворення Фур'є узагальнює ідею, розглядаючи неперіодичний сигнал як границю періодичного, у якого період T прямує до нескінченності. Коли T → ∞, відстань між гармоніками (1/T) прямує до нуля, дискретна сума за n перетворюється на неперервний інтеграл за частотою f, а коефіцієнти cₙ перетворюються на неперервну функцію X(f):
x(t) = ∫−∞∞ X(f) · ei 2π f t df (обернене перетворення)
X(f) називають спектром x(t): неперервна густина частотного вмісту, а не дискретний список амплітуд гармонік. Тепер енергію може нести будь-яка частота, а не лише цілі кратні f₀.
Дискретна версія: ДПФ
Комп'ютери не можуть інтегрувати за нескінченним неперервним часом, тому цифровий звук використовує дискретне перетворення Фур'є (ДПФ), застосоване до N відліків сигналу:
Обчислене напряму, це коштує O(N²) множень.
Швидке перетворення Фур'є (ШПФ, FFT) — Кулі та
Тьюкі, 1965 рік — рекурсивно розбиває суму на відліки з парними та
непарними індексами, знижуючи вартість до O(N log N). Саме це робить
можливими аналізатори спектра в реальному часі, детектори висоти
тону та еквалайзери на звичайному обладнанні; вузол
AnalyserNode з Web Audio API виконує саме цей алгоритм
щокадру.
Спробуйте самі
Подивіться, як гармоніки додаються одна за одною, обертаючись як фазори по колу, вимальовуючи хвилю в реальному часі — включно з перевищенням прямокутної хвилі через ефект Ґіббса:
Або спробуйте адитивний синтез наживо, регулюючи амплітуду кожної гармоніки самостійно: