Записали – а как слушать? В файле лежит просто длинный список чисел и короткая шапка, в которой записано, что это за числа: частота дискретизации $f$, разрядность $b$, число каналов $k$. Воспроизведение – это тот же путь в обратную сторону, и проходит он три шага.
Шаг первый: числа снова становятся напряжением. Этим занимается цифро-аналоговый преобразователь (ЦАП) – деталь, которая есть в любом телефоне, ноутбуке и наушниках с USB. Он вынимает числа из файла ровно с той же частотой, с какой их записывали: если в шапке стоит 44 100 Гц, то 44 100 раз в секунду. На каждое число ЦАП выставляет на выходе напряжение соответствующего уровня и держит его до следующего числа. Получается та самая ступенчатая линия из виджета: пока новое число не пришло, напряжение не меняется.
Шаг второй: ступеньки сглаживаются. Резкий скачок между двумя ступеньками – это, с точки зрения физики, очень высокая частота: напряжение изменилось мгновенно. В исходном сигнале таких частот не было, их породил сам ЦАП. Поэтому сразу за ним стоит сглаживающий фильтр, который вырезает всё выше $f/2$. От ступенек не остаётся углов – получается плавная кривая, проходящая через все отсчёты.
И вот здесь начинает работать теорема Котельникова. Такая кривая – единственная, и это не «примерно так вышло», а строгий факт, который стоит проверить самому.
Возражение напрашивается: реальный звук – не одна синусоида, а сумма многих, с разными частотами, амплитудами и сдвигами. Неужели нельзя подобрать другой набор синусоид, который пройдёт через те же точки? Оказывается, нельзя – и как раз потому, что сигнал складывается из синусоид.
Допустим, всё-таки нашлись две разные волны: обе без частот выше $f/2$, и обе проходят через все наши отсчёты. Вычтем одну из другой и посмотрим на разность.
- Разность – тоже сумма тех же синусоид, только с другими амплитудами (складывая и вычитая синусоиды, новых частот не создать). Значит, в ней тоже нет частот выше $f/2$.
- В каждой точке отсчёта разность равна нулю: там обе волны по условию совпадают.
Итого разность – это сигнал, который обязан обращаться в ноль каждые $1/f$ секунды и при этом не содержит частот выше $f/2$. Такого не бывает, кроме скучного случая. Чтобы между двумя соседними отсчётами отойти от нуля и вернуться обратно, сигналу нужно успеть полколебания за время $1/f$ – а полколебания за $1/f$ это в точности частота $f/2$, уже за запретной границей. Отойти от нуля разности нечем: она равна нулю везде, а значит, две «разные» волны были одной и той же.
Тот же счёт можно провести и на пальцах, через количество чисел. Сигнал длиной в секунду, в котором нет частот выше $F$, полностью задаётся своими гармониками – а каждая гармоника это два числа, амплитуда и сдвиг фазы; всего около $2F$ чисел на секунду. Ровно столько отсчётов в секунду и даёт частота $f = 2F$. Неизвестных столько же, сколько измерений, – лишней свободы, в которой могла бы спрятаться вторая подходящая волна, просто не остаётся. А когда отсчётов берут меньше, свобода появляется сразу: подходящих волн становится бесконечно много, и фильтр выбирает из них самую медленную – это и есть наложение частот из пресета «Наложение», где 10 Гц прикинулись 2 Гц.
Поэтому фильтр не «угадывает» и не «дорисовывает похоже»: если при записи условие $f \ge 2F$ выполнили, на выходе получается исходная волна, а не её приближение.
Шаг третий: напряжение снова становится воздухом. Плавный сигнал усиливают и подают на катушку динамика. Катушка тянет мембрану вперёд-назад точно по форме напряжения, мембрана толкает воздух – и по комнате идёт волна сжатий и разрежений. Та самая, с которой урок начинался. Барабанная перепонка колеблется, и мозг слышит звук.
Что при этом всё-таки потеряно? Ровно две вещи, обе появились на записи, а не на воспроизведении: ошибка квантования – каждый отсчёт округлили до ближайшего из $2^b$ уровней, и это округление слышно как тихий шум; и всё выше $f/2$ – эти частоты срезал фильтр ещё перед оцифровкой. Больше ничего между отсчётами не «выпадает»: провалов в звуке нет, хотя чисел в файле конечное количество.