|
Что такое Dithering. Поговорим про ditheringО'кей, тут уместно начать с объяснения сути цифрового сигнала. Аналоговый сигнал - есть непрерывная зависимость от времени, например, напряжения на выходе аналоговой схемы. Кто учил математику, тому будет понятно, что непрерывность здесь понимается в том же смысле, что и непрерывность в математическом анализе: Если есть любые два разные момента времени, то всегда можно рассматривать некий момент времени между ними, и так до бесконечности. Точно также, если есть два уровня сигнала, скажем 0,5В и 1В, то можно рассматривать 0,75В между ними, а между 0,5В и 0,75В можно взять 0,7В или 0,511111111111111111В и т.д. В общем, чем точнее мы хотим знать какую либо величину, тем больше цифр в числе нам нужно. Математики додумались до чисел (вещественные числа) с бесконечным количеством цифр после запятой. Но наши устройства (компьютеры) как бы мы не пыжились, не могут оперировать с бесконечно точными значениями величин времени и сигнала. В цифровой электронике от аналогового сигнала берут его значения только в определённые моменты времени (с частотой например 44,1кГц или 96кГц) и округляют их также до определённых значений. Всё бесконечное количество цифр выражающее значение аналогового сигнала округляют до 16 или 20 или 24 (двоичных) цифр. Принципиальной разницы между двоичным, шестнадцатеричным, десятичным и другими исчислениями не существует, это просто разные обозначения одного и того же. А вот процесс округления везде сводится к тому, что мы выкидываем огромное количество уточняющих цифр, а оставляем только те, которые лишь приближённо характеризуют сигнал. Вот тут то и понадобился dither. Допустим, у нас есть 24-битный АЦП, который принимает на вход аналоговый сигнал, и выдаёт с частотой дискретизации (например 96кГц) на выходе в виде набора из нулей и единиц в количестве 24 штук на каждый отсчёт по времени. ЦАП наоборот может принимать на вход эту самую последовательность из 24-битных чисел и выдавать некую "округлённую" приближённую копию исходного аналогового сигнала. А теперь представим, что мы хотим записать эту копию на обычный музыкальный компакт-диск. Тогда нам эти 24 бита не удастся впихнуть полностью, компакт позволяет хранить огрублённое значение сигнала только в 16 битах. Как нам быть? Ну берём и отбрасываем младшие 8 бит в 24 битном сигнале. Это примерно, как если бы в магазине калькулятор показал, что за батон колбасы нужно заплатить 45руб 56,78564коп. Ясно, что сумма округлится до 45руб 57коп или даже до 46руб просто. Так вот оказывается, что 24-битное кодирование аналогового сигнала настолько совершенно, что "ни одна собака" не отличит его от исходного аналогового, но если взять и тупо отрезать эти самые 8 бит, то качество сигнала, особенно такие его "жизненные" характеристики как слабенькое далёкое затухание реверберации, всякие там послезвучия самих инструментов и т.п., всё это ощутимо убивается обрезанием битов, и весьма заметно на слух. Это и есть ЭФФЕКТ ОБРЕЗАНИЯ с которым борется DITHER. Теперь немножко о динамическом диапазоне цифрового аудио. Децибел - это характеристика, для сравнения величин двух сигналов. Если нужно сравнить два напряжения U1 и U2, то считаем след. величину: 10 lg (U1/U2), это и будет сравнение в децибелах двух сигналов. Число 10 перед логарифмом как раз отвечает приставке деци-, те. десятой части. Если бы просто считался десятичный логарифм, то отношение сигналов выражалось бы в Беллах, а Белл - неудобная и слишком большая величина. Если U1 = 10 Вольт, а U2 = 1 Вольт, то U1 будет по амплитуде на 10дБ выше чем U2. На самом деле, человеческое ухо сравнивает скорее не амплитуды сигналов, а их мощности. Мощность же сигнала пропорциональна амплитуде, возведённой в квадрат (степень 2). Поэтому эта двойка выносится из под знака десятичного логарифма, и получается формула для сравнения: 20 lg (U1/U2) и те же самые 10 Вольт и 1Вольт будут по мощности различаться на 20дБ. А увеличение амплитуды в 2 раза с хорошей точностью равно увеличению по мощности на 6дБ. Человеческое ухо чувствует изменение громкости примерно на 1дБ. Этим и объясняется преимущество дециБелла по сравнению с Беллом. Теперь нет ничего проще, чем посчитать динамический диапазон (а как выяснится позже, это всё же не динамический диапазон, а всего лишь максимальное отношение сигнал/шум) стандартного цифрового 16-битного аудио: 20 lg (2^16/2^0) = 20 lg (65536) = 96,3 дБ Вот, самый громкий и самый тихий звуки, казалось бы, не могут различаться более чем на 96дБ, ибо бит с наименьшим значением, когда все старшие равны нулю, уже не в состоянии, как кажется, кодировать ещё меньшие сигналы. Вот тут то и проявляется магия dithering'a. Dither - это шумовой сигнал, который суммируется с исходным сигналом большой разрядности (например 24 бита) и имеет амплитуду на уровне самого младшего разряда того сигнала, который планируется получить (например 16 битный) Если исходный 24-битный сигнал имеет форму ABCD EFGH IJKL MNOP QRST UVWX, где любая буква обозначает либо 0 либо 1 (двоичное представление), бит А - старший, бит X - младший, то dither имеет форму 0000 0000 0000 0000 ЭЮЯЦ ФКТП, т.е. младшие восемь битов могут быть либо 0, либо 1, а все старшие 16 бит равны нулю. 24 - битный сигнал суммируется с ditherom, и затем происходит то самое обрезание до 16-битного сигнала. Но....обрезание после суммирования приводит к тому, что 16-битный сигнал имеет форму: ABCD EFGH IJKL МНЬЪ где прежние младшие 2 бита O и P могут измениться из за суммирования с ditherom и стать Ь и Ъ. Таким образом, при суммировании вся отрезанная последовательность из битов QRST UVWX влияет на младшие биты Ь и Ъ полученного 16 битного сигнала. И оказывается, что такое добавление шума не ухудшает, а улучшает восприятие 16-битной музыки. Все слабые оживляющие сигналы из обрезанных восьми битов дают о себе знать в 16-битном сигнале. Это всё немножко похоже на чудо, но вполне объективно звукоинженеры прослушивают динамический диапазон не до 96дБ, а аж до 115!!!!!!! Фантастично, не правда ли? Это расширение динамического диапазона приводит к тому, что становятся слышны звуки в 9 раз более слабые по амплитуде, нежели тот самый слабый звук, который можно кодировать самым младшим битом. Вот, это суть ditheringa. Теперь чуть-чуть о терминах. dither - вышеописанный шумовой сигнал. Спектральные характеристики этого сигнала разными фирмами варьируются в довольно широких пределах, от белого шума, до каких-то уже периодических (формально не шумовых) сигналов. Спектр dither'a сказывается и на качестве расширения динамического диапазона, и на восприятии самого дизера, как шума записи. Если дизер (дитер) имеет спектр в диапазоне 10кГц - 20кГц, то на слух он практически незаметен но хорошо делает своё дело. Здесь уместно отметить, что сам dither не обязательно должен быть цифровым сигналом. По самому смыслу процедуры получения цифрового сигнала понятно, что можно подмешать аналоговый шум к аналоговому сигналу, и потом уже провести аналогово-цифровое преобразование с любой разрядностью. К месту отметить, что если разрядность АЦП достигает 20, то дальше dither суммируется к сигналу независимо от того, хотим мы этого, или нет, потому как электроника при комнатных температурах генерирует собственный шумы, от которых никуда не денешься (криогенные системы мы не рассматриваем), и эти шумы добавляются к сигналу. Но на уровне разрядности в 20 бит нужды в ditheringe практически нет, такое представление сигнала уже совершенно. Запись аналогового сигнала в цифре с добавлением шума обычно называют dithering'om. А redithering'om называют понижение разрядности сигнала уже после цифровой обработки. Любая обработка требует как правило существенно большей разрядности, нежели 24, а тем более 16 бит. Виртуальный синты, например, работают с 32 разрядными числами с плавающей запятой, а потом, чтобы правильно преобразовать сигнал в 16-битный применяется redithering. Хотя суть процесса одна и та же и можно говорить просто - dithering. Из всего сказанного понятно, что dithering тесно связан с разрядностью представления сигнала, точнее с преобразованием одной разрядности в другую, более грубую, но дешёвую и принятую. Однако не надо злоупотреблять этим инструментом. Опытные мастеринг-инженеры советуют пользоваться ditheringom лишь один раз за весь период осуществления проекта. Несколько преобразований типа 16 -> 24; 24-> 16 убьют качество и дитер не поможет. Не удастся компенсирвать дитером и низкую разрядность внутренней арифметики процессоров (плагинов). Со временем 16 бит наверное умрут, будут 20 и 24 битные системы. Наверное мы будем вспоминать о дитере аналогично тому, как играючи в Квейк-3 вспоминаем игрушки под Дос, гениальные в своей изворотливости, направленной на расширение рамок скудных технических возможностей мощью программистского интеллекта. Но к слову сказать, что гений (не только технический, но и музыкальный тоже) всегда работает и творит в каких-то рамках. Dithering (сглаживание) заключается в добавлении к сигналу небольшого количества шума (псевдослучайного цифрового сигнала) разного спектра (белый, розовый и т.п.). При этом заметно ослабляется корреляция ошибок квантования с полезным сигналом ("рассеиваются" ошибки округления) и, несмотря на некоторое увеличение шума, субъективное качество звучания заметно повышается. Уровень добавляемого шума выбирается в зависимости от задачи и колеблется от половины младшего разряда отсчета до нескольких разрядов. |