Каталог статей

Главная » Статьи » Мои статьи

Блеск и нищета теоремы Котельникова
Блеск и нищета теоремы КотельниковаСтуденты, читайте книжки, лучше самого Котельникова. Данный текст для тех, кто вообще "не в теме". Цель: показать, что не всё так просто в процессах преобразования цифры в аналог.
Данный текст содержит
несколько нецензурных
выражений. Вы можете
остановиться прямо здесь.



Часть первая. Из жизни.

Начнем с двух маленьких зарисовок из жизни, если в них что-то и преувеличено, то самую малость….

В ВУЗе…. пара по телемеханике (для тех, кто не в курсе – дисциплина такая, занимающаяся не телевизорами, а передачей сигналов на расстояние)

Преподаватель, Иван Иванович Иванов:

– Начинаем наше очередное мучение. Прежде, чем двигаться дальше, давайте проверим, что Вы знаете, – раздает три листочка с рисунком по рядам:

– Итак, у Вас есть рисунок с цифровым представлением сигнала в двух масштабах. Чтобы Вы не путались в отсчетах, соседние точки я соединил. Иванов! Нет, Иванов – это я. Петров, что это за сигнал?

– Это график амплитудной модуляции.

– Ответ неверный. Два. Добавлю балл, если посчитаете несущую частоту, модулируемую функцию, глубину модуляции. Ищите листочек…. Кто помнит математику? Какие еще будут мнения? Сидоров!

– Это биения суммы двух частот.

– Математику помнит, но ответ неверный. Два. Добавлю балл, если определите, какие частоты и их амплитуды. Кто еще? Веревочкина, Вы что думаете?

– Если это цифровые отсчеты, то надо воспользоваться теоремой Котельникова, которая говорит, что любой стохастический сигнал, спектр которого выше определенной частоты равен нулю, может быть восстановлен по цифровым отсчетам, взятым через одинаковые промежутки времени, частота следования которых более чем в два раза должна превышать верхнюю частоту в спектре исходного сигнала.

– А что такое «стохастический»? И как восстанавливать?

– Стохастический – значит случайный. Для восстановления нужно каждый отсчет умножить на базис Котельникова, который представляет собой функцию вида синус икс делить на икс, где икс.

– Достаточно, Веревочкина. Молодец. А Вы? Неучи! Смотрите, как девушка материал знает. Цените и берегите ее…. А Вы, Веревочкина, как на такую не женскую специальность попали? По призванию или по незнанию? Физику в школе любили?

– Физику любила, – опустив глаза, ответила Веревочкина.

– Вот блин, уважаю! Можно сказать, кол-л-лега! Пятерку Вы заработали.

– Ну и кто нам восстановит сигнал, пользуясь теоремой Котельникова?... Бывший медалист, настоящий отличник, будущий краснокнижник и педоровик производства, ой! Ну, Вы правильно поняли, давай, Вася. На своем программируемом калькуляторе быстренько. Восстановишь сигнал?

– Иван Иванович,… у меня на калькуляторе только 15 ячеек памяти, а точек больше сотни. Надо ведь сразу все точки обсчитывать, чтобы значения между отсчетами получить…

– Ну-у-у Вася…. Отвечать придется опять Иванову. На представленном графике был синус 22килогерца, оцифрованный с частотой 44100 Герц, т.е. практически близко к частоте Найквиста. Веревочкина, заткните уши…. Ага. В народе говорят: «Дай дураку *** стеклянный, он и *** сломает, и руки порежет!» Вася, откройте Веревочкиной уши. Так вот, Теорема Котельникова дает Вам очень мощный инструмент для восстановления сигналов по их отсчетам, а Вы им даже воспользоваться не можете. Как Маяковский говорит:

«Единица – ноль! Единица – вздор!

Один студент, даже самый важный

Не смог восстановить простой высокочастотный синус,

А если вместо синуса будет мат пятиэтажный?»

Вот так-то…. Государство тратит на Вас деньги. Учит. Я Вас учу! Вопросов на лекциях никаких не возникает, и внятных ответов от Вас тоже никаких. Похоже, немногие доживут до следующего семестра…. в качестве студентов…. Кстати, для тех, кто не понял: «единица-ноль-единица-вздор-один» – это Вам Маяковский напоминает, что в следующем семестре мы будем заниматься помехоустойчивым кодированием. Ладно, новая тема. Пишите….

Спустя лет 10….
разговор с одним из немногих, кто пошел работать по специальности….

– Как жизнь, работа?

– Да вот, первый раз развел плату в 4 слоя.

– А что у нас в России такие изготавливают?

– Да сколько хочешь, только деньги плати.

– А зачем в 4 слоя? Материнскую плату для компьютера делаешь?

– Да нет. «Матери» в 6 слоев разводят. Просто схема сложная, а приборчик маленький должен быть.

– Я гляжу, Вы тут приборами упакованы по самое «нехочу». Вон даже осциллограф цифровой…. Кстати, Ваню-Ваню помнишь? Теорему Котельникова? Синус по двум отсчетам восстанавливаешь?

– Да, Ваня-Ваня – веселый мужик. По двум? Больной что ли? Минимум пять надо. Это только чтобы догадаться, что сигнал может быть синусом. Реально – два десятка, ну полтора на период нужно. Тогда и выводы делать можно.

– А как же Х стеклянный, то есть теорема Котельникова?

– Забей. Мы цифровые осциллографы в основном для периодических сигналов используем. На периодическом он и гигагерц тебе покажет хотя АЦП 100 мегагерцовые стоят, дай только «синхру», откуда считать надо, а так, если аналог, да случайный, то на цифровом 100 мегагерцовом больше 10 мегагерц ничего не увидишь, вернее ты можешь увидеть совсем не то, что есть на самом деле. Вон, возьми аналоговый осциллограф на двести мегагерц и смотри чего хочешь до двухсот мегагерц….

Часть вторая. «Даешь натур продукт!»

Итак, что будем делать? Поверим на слово инженеру или проверять будем? Конечно, проверять! Кто же сейчас на слово верит? Поехали. Частота следования отсчетов на каждом из представленных ниже рисунков 44100, как в CD-audio. Частоты сгенерированы в редакторе: 10кГц (4.41 отсчетов на период), 2.9кГц (15.21 отсчет). Еще есть 22кГц (2.0045 отсчетов) выше по тексту, но их Вы уже видели.



Что мы видим на 10кГц? На синус слабо похоже. Сигнал все еще отдаленно напоминает или биение частот или модулированный сигнал… Перепады пиков амплитуд около 2дБ… Но, если мы заранее знаем, что должен получиться синус, то можно увидеть и его.

Теперь спросим у инженера, занимающегося аналоговой техникой уже как лет 30. Какова будет его оценка, если мы предложим ему «наш генератор синуса»?

«Ну, что? Синус. Слегка замодулированный. Нелинейщины мунимум процентов 20%. Как генератор точно не пойдет.»

Теперь предъявим этому же инженеру 2.9 кГц:



– Зае, хороший синус. 5% нелинейщины есть. Смотри сам, на пиках искажения, наверно опять модуляция или схема из режима выходит по-хитрому, так как явных ограничений на пиках нет. Таким генератором я тоже пользоваться не стану.

– А почему пять процентов? Почему пользоваться не станешь?

– Если на экране осциллографа видно отклонение от синуса на глаз, то гарантированно 5% есть. Если мне генератор такой «синус» дает, то как я свои схемы по нему настраивать буду?

Пора переходить к натурным испытаниям. Проверим ЦАП. Может там происходит восстановление сигнала по Котельникову? Для проверки опять же возьмем 22000 Гц синус (но только для того, чтобы видно было «на глаз», без привлечения мат аппарата).

Записываем CD-audio, пускаем получившийся сигнал на DHA-S-002, где стоит ЦАП CS-4391. Сигнал снимаем с помощью EMU-1212M, но уже в формате 192000 Гц * 24бит. Предъявляю рисунок:



Сильно отличается от рисунка в первой части статьи? Как говорится, те же яйца, но вид сбоку (масштаб немного не совпадает с первым рисунком в статье. Не старался я точно масштабы в рисунках сохранять, главное - принцип).

Еще один эксперимент. Может EMU1212M даст лучший результат? Ведь там целый мозг стоит – DSP. Да и ЦАП получше – CS4398 – один из лучших, чем гордится производитель. Только вот вопрос: «А чем снимать?». Да простым советским аналоговым осциллографом и снимем (С1-114/1). Фото экрана осциллографа ниже. Не очень качественно, так как штатива для фотоаппарата под рукой нет, но суть понятна. Опять те же яйца….




Есть такие «товарищи», которые утверждают, что самое важное в ЦАПе – это обвязка. И, в свете этого утверждения, «правильные» АЦП и ЦАП дают «совсем другой» звук, не то, что можно услышать в «дешевых» ЦАПах.


Тоже отвечу. Ни одна обвязка не восстановит Вам сигнал по отсчетам. В понятие обвязки входит питание микросхемы, аналоговая часть после ЦАПа (цифровую часть не берем, об этом в отдельной статье про ЦАПы).

Вывод: Ни один ЦАП не восстанавливает сигнал, пользуясь теоремой Котельникова, а только с ее помощью можно получить исходный аналоговый сигнал.

Часть третья. Увидим ли блеск?

Раз никто по Котельникову не считает, тогда сами попробуем? Восстановим аналоговый сигнал из цифрового, записанного на CD-audio.



t – текущее время, n – номер отсчета, T – период, через который берутся отсчеты 1/44.1кГц = 22.7мкс.

Формула есть. Теперь необходимо определиться, сколько нужно промежуточных значений между соседними отсчетами. Если инженеру надо 20-15 отсчетов для синуса, то почему слуховой системе меньше? Чем она хуже инженера? А еще, в качестве аргумента, могу отправить Вас к статье о возможностях слуховой системы, где наглядно показано, что предел разрешения слуховой системы находится на уровне 250кГц. Опять же это предел не «двух дырок в голове», а именно слуховой системы, ее «мат. аппарата». Куда деваться? Будем брать 15 отсчетов.

Да, еще раз повторю, мы восстанавливаем музыкальный сигнал, который по природе своей является именно стохастическим (случайным).

Теперь смотрим внимательно на формулу. Для получения любого промежуточного значения нам нужна сумма ряда от -бесконечности до +бесконечности. Что делать? Попробуем снизить количество учитываемых отсчетов в сумме ряда до какого-нибудь конечного числа.

Для этого произведем такую оценку: через какое время пик (максимальное значение) функции станет меньше, чем единица младшего разряда.

Сигнал у нас 16 разрядный (CD-audio). Производим оценку:



Здесь 0<t<T, синус во времени меняется от -1 до +1 (заменяем на 1, что тоже неверно с точки зрения математики, такой ряд будет расходящимся). Разрешая неравенство относительно n, получаем, что надо учитывать, как минимум, 20860 отсчетов. Будем дальше расстраиваться? Формула для восстановления требует от нас брать отсчеты не только назад, но и вперед, значит надо учитывать уже 41720 отсчетов.

Попытаюсь объяснить более подробно. Относительно текущего времени, нам надо использовать для восстановления текущего значения сигнала 20860 прошедших отсчетов и 20860 будущих отсчетов, то есть нам необходимо «окно» с отсчетами вперед и назад относительно текущего времени. Как только мы добираемся до времени t=T, мы отбрасываем последний отсчет из прошедшего времени и добавляем к рассмотрению следующий отсчет из будущего времени. Именно по этой причине текущее время лежит в пределах 0<t<T.

Мы получили "идеальную" математическую модель идеального ФНЧ для формата 16/44. Этот фильтр невозможно реализовать в аналоге, но методом цифровой обработки вполне можно посчитать любой недостающий отсчет между двумя соседними дискретами.

Дальше считаем? Оценим необходимые нам вычислительные мощности. Еще раз смотрим на формулу для восстановления сигнала, и делаем вывод, что для получения значения одного отсчета необходимо выполнить 6 действий. Для получения необходимого количества (15) промежуточных значений в реальном времени необходимо выполнить:

N=15*(6+1(сумма ряда))*41720*44100 = около 193 млрд. операций в секунду.

Сколько Ваш компьютер операций в секунду выполняет? А большая часть вычислений должна производиться как операции с плавающей запятой?

Слукавил? Самую малость. Реально, это оценка сверху. Если использовать таблицу готовых sin(x)/x, вычислений нужно меньше: одно умножение и одно сложение на каждый отсчет из «окна».

N=15*2*41720*44100= 55 млрд. операций в секунду

Наверное, алгоритм можно еще оптимизировать. Но остается вопрос: на чем считать будем? Процессор, находящийся внутри Вашего компьютера позволяет выполнять 2-4 млрд. операций в секунду, причем для целочисленных вычислений, а нам нужны вычисления с плавающей запятой, требующих больше одного такта процессора на вычисление одной операции.

А может тогда не брать 15 отсчетов, а взять один? Тогда поделите последнюю цифру на 15, получите около 3.7 млрд. операций с плавающей запятой – все равно очень много.


Часть четвертая. Где свет? В конце тоннеля?


1. Возможно, читателю не дает покоя мысль: «Автор взял синус 22кГц, а он для прослушивания музыки и не нужен, значит очередную страшилку написал».

Да. Синус 22кГц взят только для примера. В действительности, речь идет о музыкальных сигналах, которые по природе своей являются случайными переходными процессами. Синус можно восстановить и каким-нибудь интерполятором, а вот с музыкой так не получится. Надо «честно считать», как Котельников «прописал».

2. То, что автор предлагает восстанавливать с помощью теоремы Котельникова, на самом деле «мизер не ловленный». Оно и не слышно и не нужно.

Искажения, вносимые процессом «оцифровки» с некоторой частотой (44) тем заметнее, чем менее стационарен дискретизируемый сигнал. Вы можете это воспринимать как «медицинский факт», либо, если аргументов, приведенных в статье недостаточно, проверять самостоятельно.

Я утверждаю, что в оцифрованном для СД звуке нет очень многого, из того, что Вы можете получить из аналоговой записи. На аппаратуре соответствующего класса в этом легко убедиться самостоятельно. А в аналоговой записи нет многого, что можно услышать в живом звуке. В этом тоже легко убедиться, купив билеты на концерт классической музыки.

3. Теорема Котельникова для нас сейчас как «дураку игрушка стеклянная». Красиво, блестяще, исчерпывающе. Хороший инструмент, которым можно и нужно пользоваться. НО.... идеальный ФНЧ невозможно реализовать в аналоге. Это раз. И для цифровых моделей в представленном в статье виде на сегодняшний день ресурсов не достаточно. Это два. Именно в этом смысле и проявляется её нищета. (см ниже другой взгляд на проблему)

4. Гораздо более простым и изящным выходом является использование более быстродействующих ЦАП-АЦП. И при записи и при воспроизведении. Какие именно и почему, я напишу в другой статье, которая будет называться «Новый цифровой музыкальный формат»

5. Для самых внимательных и просвещенных читателей, которые знают, что на выходе ЦАП стоит фильтр низких частот. Да, там действительно стоит фильтр. Причем такой… внушительный фильтр, порядка четвертого, не меньше (именно такие фильтры рекомендуют ставить производители ЦАПов). А на входе АЦП тоже фильтр. И тот и другой имеют свои недостатки. Даже правильнее сказать: «вносят свои искажения». Тема эта не маленькая, и её также стоит вынести за пределы данной статьи.


Другой взгляд на проблему:
Естественно существуют современные методы обработки сигналов, и ту же теорему Котельникова можно использовать не напрямую, как в статье, а в виде интерполяционной формулы Уиттекера-Шеннона.
Формула в таком виде представляет собой свертку гребенки Дирака с функцией sinc. А еще существует БПФ, позволяющее вычислять свертки сигналов "на лету"... Дело за малым, - ткнуть в тот ЦАП, где это реализовано.

Я не ставил перед собой целью найти оптимальный алгоритм или придумать новый, еще более качественный, чем существующие ныне.


Приведенные в статье формулы реализуют идеальный цифровой ФНЧ. Не оптимально? Да. Идеальный ФНЧ вообще относится к классу не реализуемых фильтров, т.к. требует учета всех значений сигнала за весь бесконечный период наблюдения. Я представил такой вид приближения фильтра к идеалу.
Блеск и нищета теоремы Котельникова. Взгляд с обратной стороны или двойные грабли от SONY.
Ай да Sony, ай да сучьи дети!
И это самое мягкое выражение в их адрес

Данная статья нисколько не перечеркивает предыдущую статью, написанную несколько лет назад. Только дополняет ее. Позволяет взглянуть на ту же самую проблему под другим углом – с точки зрения музыкальных сигналов. Предыдущую можно перечитать, если интересно, там изложен взгляд со стороны самой теоремы Котельникова. В текущих рассуждениях придется сначала опустить некоторые «очень важные мелочи», но ниже они будут рассмотрены.

Теорема Котельникова, требует от нас использовать все отсчеты, входящие в сигнал. Ранее я рассчитал, что для формата 16/44 хватит окна sinc(x) около 44100 отсчетов (по полсекунды в обе стороны). Каждый следующий отбрасываемый нами будет меньше, чем единица младшего разряда в выбранном формате.
Предположим, что у нас есть ЦАП, восстанавливающий сигнал строго по теореме, использующий окно в 1с (44100 отсчетов). Надеюсь, придумал самый удачный пример для рассмотрения: оцифрованная пластинка. На ней щелчок от соринки. Такой процесс точно никак не связан с фонограммой. Наш «правильный» ЦАП отработает его следующим образом:
1. начнет вносить искажения в сигнал за полсекунды до того, как щелчок появился,
2. воспроизведет щелчок
3. будет продолжать вносить искажения еще полсекунды после окончания.

С точки зрения логики – логики в этих действиях нет никаких. Т.е. совершенно не понятно, зачем из-за огреха, даже не относящегося к фонограмме, мы должны испортить целую секунду звучания.
Теперь перенесем эту ситуацию внутрь фонограммы. Например, упал пюпитр. Ситуация будет точно такая же. Алгоритм не изменится. Если тут с пониманием нормально, поехали дальше. Необходимо понять, что звук есть только сейчас, одномоментно. И тот звук, который «сейчас» никак не влияет на фонограмму «раньше» и на фонограмму «после». Попробуем рассмотреть вариант с барабаном. Сам удар происходит во вполне определенное время. Если его записывать на аналог, то факт наличия удара в данное время не требует от нас вносить предискажения, начиная за полсекудны до него и еще полсекунды после. А использование «правильного» восстановления из цифры такие требования к нам предъявляет.

Что же может наш «правильный», «Котельниковский» ЦАП? Он может «суперточно» восстановить сигнал, удовлетворяющий условиям теоремы. Намного лучше, чем реальные ЦАП.

Давайте рассмотрим такой пример. Генерируем звуковой файл. Внутри 2с. тишины 20с. синус 22кГц, и еще 2с тишины.
Выглядит это примерно так:



Прогоняем его через реальный ЦАП. Получаем следующее:
1. Почти 2с тишины
2. Короткий «фейд в плюс»
3. 20с непонятно чего
4. Короткий «фейд в минус»
5. Почти 2с тишины

«Непонятно чего» выглядит вот так:



Прогоняем через наш, «суперправильный», Котельниковский и получаем следующее.
1. 1.5с тишины
2. 0.5с предискажений «фейд в плюс»
3. 0.5с «тыква превращается в карету» - процесс перехода от «некачественного» к нормальному синусу.
4. 19с чистого, идеального синуса 22кГц
5. то же, что и пункт 3, но в обратном направлении
6. то же, что и пункт 2, но в обратном направлении
7. 1.5с тишины.


Вернемся к рисунку со сгенерированным нами сигналом, и честно сознаемся, что он не удовлетворяет условиям теоремы Котельникова в точках перехода от тишины к синусу и обратно.



«Правильно» оцифрованный чистый синус 1кГц должен выглядеть примерно так:




Крупнее:




Следующий «очень неудобный» пример – сгенерированный меандр. Берем СаундФорж7 и генерируем меандр не самой большой амплитуды, чтобы был запас у алгоритмов ЦФ. (За что люблю СаундФорж7, так это за то, что ни про Котельникова, ни про Шеннона с Найквистом он ничего не знает). Получили меандр 1кГц, где переход из –U в +U происходит за один отсчет. Вот так это будет выглядеть в SF7.



Вот так он выглядит в Аудишн



Теперь из 96кГц преобразуем в 44кГц и увидим…



Меандр теперь правильный с точки зрения т. Котельникова. Лишние частоты, не удовлетворяющие условиям теоремы обрезаны. А меандр «почти честно» складывается из суммы синусоид. Которых у нас аж 22 гармоники. Хорошо видно, что перед переходом из одного состояния в другое есть некие «предискажения», продолжающиеся и после перехода. Этих искажений будет меньше, если взять бОльшее число гармоник. В пределе мы таки получим настоящий меандр, «неотличимый от аналогового». Вопрос только один. Какую брать частоту дискретизации? Для меандра 1кГц можно в 44кГц запихнуть 22 гармоники, а для меандра 10кГц – всего одну гармонику. Посмотрите еще раз внимательно на «правильный синус 1кГц», и на последние картинки. Это у нас первые грабли, которые продиктованы условиями т. Котельникова. Компания SONY о них широко не распространялась, когда пропихивала формат СД.

Поехали дальше. Возвращаемся к большооооому барабану. Изображение сигнала утрировано, для лучшего понимания смысла.



Вот такой сигнал является импульсным (апериодическим), следовательно, спектр его бесконечен. Т.е. для правильного сохранения и воспроизведения требуется бесконечная частота дискретизации. Абсолютно не важно, какой мы в данном случае возьмем микрофон с полосой 5кГц, 20кГц или 100кГц. Характер сигнала не изменится – он так и останется апериодическим. Спектр его останется бесконечным.
Вот Вам и вторые грабли от компании SONY. С одной стороны в массовое сознание интегрировано «знание»: если микрофон не может записывать частоты выше 20кГц, значит частоты в 44кГц хватает с запасом. А на самом деле – эти две частоты никак не связаны. Тут уже можно кричать: «Ай да SONY, {cenzored} {cenzored} {cenzored} {cenzored} {cenzored}, вот!»
Еще раз отмечу. Исходный сигнал с барабана мы снимаем микрофоном с полосой 5кГц, но спектр получается бесконечным. Чем выше частота дискретизации (ЧД) – тем точнее мы этот сигнал сумеем сохранить. И все полученные «микродобавки» от высокой ЧД – лишь уточнения к нашему непериодическому НЧ сигналу, сохранение его правильной формы. Для любителей понижать ЧД сразу отмечу, что энергия, которую мы отбрасываем при понижении ЧД небольшая, но для слухового восприятия значение она имеет. Измерять ее «в граммах» смысла нет, т.к. по отношению к оставшемуся спектру вес энергии мизЕрен, но и «весовые категории» в части «точности» - разные.

Вернемся к обозрению «правильного» и «неправильного» сигнала по Котельникову. «Правильные» сигналы не могут появиться внезапно. Каждый из них должен иметь некоторую зону «фейда» - несколько периодов, когда из нулевого состояния он «раскачивается» до нужной амплитуды. А из этого следует, что у сигналов не может быть острой «атаки». К каждой атаке при восстановлении будет добавлено «предзвучание», и переход от состояния «звука нет» к «звук есть» должен быть мягкий, с подготовкой слуха к восприятию атаки (чуть натянуто, но об этом ниже).

Опираясь на рассуждения выше, можно сказать, что у дискретного представления сигналов есть некоторые «музыкальные предпочтения». Первое, что приходит на ум – органные записи. У данного инструмента способ звукоизвлечения «очень удобный» для дискретных сигналов. По крайней мере, это касается язычковых труб органа. Возможно, в группу «любимых» попадут все смычковые при игре смычком (для проверки надо посмотреть), дальше – думайте сами.

Теперь сравним работу реального и идеального ЦАП



Давайте уже посмотрим живьем, как эти самые реальные ЦАП работают.
Сначала просто «неправильный меандр», про который писал выше. На эстакаде CS4398.



Крупнее:



А теперь я взял меандр из примера выше, но изменил его. В каждом переходе от –U к +U добавлен еще отсчет «0», имитируя ограниченность нашего микрофона частотой 20кГц. Теперь переход выглядит так: «-U» - «0» - «+U» и обратно так же. В Аудишине он выглядит теперь так:



На эстакаде снова CS4398. Примечателен он тем, что «пытается быть похожим на идеальный ЦАП». А картиночка получается вот такая:



Как я и говорил, перед фронтом идут предискажения, теперь относительно небольшие по амплитуде. И после фронта есть искажения. В увеличенном масштабе выглядит это так:



Возьмем для проверки другой ЦАП. Алгоритм работы у него другой, и картинка тоже другая:



Увеличено:



Что сказать про этот ЦАП? «Ай, молодца!» Никаких предискажений. Четко видна точка «0», и быстро устанавливающийся процесс после перехода. На реальных музыкальных сигналах он выглядит намного предпочтительнее, чем тот же CS4398. Сейчас бы гимн спеть этому ЦАП, да оду написать, в которой подробно рассказать об его великолепии, величии и блестящей работе с музыкальными сигналами… Ох я и интриган…. Второй ЦАП – это AC97 – встроенный на материнской плате звук.

Еще раз поговорим о предискажениях и «подготовке слуха». Рассматривать будем меандр. Перерегулирование в случае меандра у нас около 30% от амплитуды сигнала. Частота большая – 44кГц. Акустика точно нам воспроизвести такое не сможет, но, как порядочная, проинтегрирует. Какой-то звук на выходе так или иначе будет присутствовать. Причем из всех динамиков, независимо от верхней граничной частоты каждого.

Чтобы Вы не пытались «живьем ловить блох» в рассматриваемом примере, приведу другой пример, более жизненный. Заряд конденсаторов цепей питания в электронной схеме приводит к выбросу тока на очень короткое время. (Там же есть еще куча неприятных процессов). Если не принимать специальных мер по снижению наводок от цепей питания, то эти выбросы тока будут и на выходе прибора. В очень линейных схемах форма импульса тока не меняется, и он остается очень коротким, не размазывается. Ширину импульса не измерял, основную частоту не считал, но она значительно выше 44кГц по фронту (спад более мягкий) и выше, чем может воспроизводить акустика. Пиковая амплитуда этого импульса (по RMAA) порядка -70... -80дБ (FS). Для нормальных уровней громкости в нашей аппаратуре этот импульс не слышно. Однако, если громкость добавлять, то…. Мы будем отчетливо слышать 50Гц (или 100?), которые воспроизводят динамики в акустической системе. Такая же ситуация и с наушниками.

Про «предискажения» знают и разработчики ЦАП. Что они рекомендуют? А рекомендуют они «душить и душить» этих гадов аж четвертым порядком фильтра и выше. Забудьте про Бесселя. Бессель тут «не в теме». В хорошем случае это Баттерворт , а еще круче Чебышев, а дальше эллиптические фильтры. Иначе «душить» не получится. Нужна большая крутизна. На процесс «душения» - всего-то одна октава. А когда мы этот сигнал «жестко задушим» - забудьте о линейной фазе, забудьте о микронных, неслышимых уху фазовых искажениях. Тот же Бессель должен дать нам меньший сдвиг фазы, по сравнению с любым другим, причем, линейный сдвиг, соответствующий обыкновенной задержке форманты сигнала. («Разбег» фазы любого конкретного фильтра надо сравнивать именно с Бесселем). На выходе при использовании рекомендованных производителем фильтров будет «совсем другой» звук. И причина – именно фазовые искажения, которые появляются при ГВЗ<>const.

Если хотите, можно теперь поностальгировать о «старых добрых мультибитниках». Причем, именно о старых, где нет передискретизации внутри микросхемы, нет внутри ЦФ. Наверное, можно и из современных мультибит что-то подобрать достойное, аскетичное....
В другой статье я нарисовал «картину маслом» про то, как идеально может работать мультибитник вообще без фильтрации на выходе. Но эта картина идеальна только до первой нелинейности в тракте, причем не важно, на какой частоте эта нелинейность имеет место быть. Она запросто перетащит зеркалку хоть с 10МГц обратно, в звуковой диапазон. А разработчики такого безфильтрового ЦАП «хапнут горя» с этой самой зеркалкой по полной программе.
Можно пуститься и в другие размышления-рассуждения, но пора остановиться и сделать выводы.

1. Почти все музыкальные сигналы не удовлетворяют требованиям теоремы Котельникова. Сигнал любой частоты (чистый тон) по Котельникову не может возникнуть внезапно.
2. Точность сохранения и воспроизведения непериодических сигналов (с бесконечным спектром) – сюда попадут все атаки (периоды возбуждения с нуля до стационарного состояния), все ударные инструменты и многие другие – зависит только от выбранной частоты дискретизации. Рекомендую вспомнить передовой немецкий(?) опыт 30х-40х годов по ручному удалению фазы атаки из записи и предъявлению остатков музыкантам, которые не могли узнать свои инструменты.
3. Чем больше в музыкальном сигнале "нестационарностей", тем выше нужна частота дискретизации для корректного сохранения и воспроизведения.
4. Об этом уже несколько раз говорил мельком – перестаньте «жить и восстанавливать» по Котельникову, возьмите АЦП-ЦАП с достаточной для слуха частотой и «живите» в масштабе двух отсчетов – «тот, который сейчас» и «тот, куда надо переместиться». Этот вариант в наибольшей степени соответствует музыкальным сигналам.
Частота дискредитации или чистота дискретизации?
Трагедия в двух актах по мотивам «Блеск и нищета теоремы Котельникова».


Неравнодушным к качеству звука адресуется…..

Действующие лица и исполнители:
- Организованная группировка в составе: Котельникова, Шеннона, Найквиста, чьи постулаты до сих пор аукаются цифровому миру.
- Реализация CS4398 в форме EMU1212M
- Trial-версия программы (30 дней) SoundForge 7.0
- Почти девственная Windows XP SP3 (бедная)
- Монолог – Новиков К.

Пролог.

В статье «Блеск и нищета теоремы Котельникова», статье заурядной, рассчитанной на широкий круг лиц без специального образования, была сформулирована сама теорема, приведена формула для вычисления сигнала в любой момент времени, а также проведена оценка необходимого «окна» в количестве отсчетов, влияющих на сигнал в текущий момент времени. В итоге я получил, что имея 20860 отсчетов в обе стороны от текущего, пиковое значение сигнала (0дб) станет меньше, чем единица младшего разряда для формата 16/44.1кГц.
Если есть желание, можно перечитать только третью часть из первой статьи.
В этой пьессе сначала мы рассмотрим практическую реализацию ЦАП на примере звуковой карты с CS4398 на борту, сделаем промежуточные выводы и пойдем дальше.

Акт первый
Частота дискредитации.

Раньше я участвовал в обсуждениях на разных форумах по интересующим меня проблемам. Иногда мои посты приводили к дискредитации меня, как специалиста в области обсуждения. Но эти случаи приносили большую пользу мне самому. Я понимал: что-то я забыл из курса по электронике или какого-нибудь другого курса. Где-то я вообще не «копенгаген», а значит и в этом случае требуется восполнять пробелы в знаниях. Век живи – век учись.
Возможно и здесь, в нынешних рассуждениях, я что-то упустил из виду. Буду рад, если добрые, грамотные люди «ейной мордой в харю тыкать» будут. Ведь истина, она одна. К ней и стремимся.
Рассмотреть хочу один вопрос, тесно связанный с предыдущими рассуждениями на тему восстановления дискретных сигналов.
Мои призывы на форумах и в статье посмотреть на этот вопрос серьезно приводили к одному эффекту – люди крутили пальцем у виска. Ситуация напоминает анекдот с такой концовкой: «Объясняем тебе. В политбюро не дураки сидят. Чтобы ты не сгорел, мы тебя отправим на Солнце ночью». Мне очень хочется верить, что в «политбюро разработчиков ЦАП сидят не дураки», однако, факты – упрямая вещь. Вот на факты и будем смотреть.
Теория учит, что любой сигнал, спектр которого меньше Fs/2, где Fs – частота дискретизации, может быть восстановлен по его дискретным отсчетам. Возьмем частоту 44100Гц, как основополагающую для наиболее распространенного формата музыки, и посмотрим на то, что творится вблизи Fs/2. Исследовать будем формат 24бит/44100Гц
Сгенерируем синус в SoundForge длительностью 120 секунд (чтобы не спеша сделать фото). Выберем следующие частоты: 1000Гц (как опора), 20кГц, 21кГц, 21.5кГц, 22кГц… Уровень всех сигналов сделаем одинаковым: -3Дб в цифровом представлении.

Пару слов об осциллографе, для тех, кто не в курсе, что это такое. Советский Осциллограф – достаточно грубый прибор, если использовать его как «измеритель». При добавлении к осциллографу такого несертифицированного прибора, как глаз наблюдателя, усугубив положение наблюдением синусоиды, а не меандра, можем смело сказать, что 5% отклонения от синусоидальной формы практически не видны на глаз. 10% - уже есть серьезные подозрения. 20% - к бабке ходить не нужно, сам поймешь.

Фото в экрана осциллографа:

1000Гц/0.5V/0.2ms – здесь и далее через дробь указаны частота сигнала, масштаб по вертикали и горизонтали.




20000Гц/0.5V/0.01ms, полет нормальный:




20000Гц /0.5V/0.5ms, они же в другом масштабе:




21000Гц/0.5V/0.5ms, «чё-то я не понял?»:




21500Гц/0.5V/0.5ms, «а что это тут делается? А?»:




22000Гц/0.5V/0.5ms, упс, приплыли. Масштабной сетки не хватает:




22000Гц/1V/1ms, они же в другом масштабе:




22020Гц/1V/1ms, апофеоз:




Примечание. На графиках 21кГц и далее масштаб по оси времени не совсем верный (немного сжат по оси). Пришлось крутить ручку аналогового масштабирующего усилителя осциллографа, чтобы поймать картинку для фото. Возиться с отдельной синхронизацией было лень.

Насмотрелись? Пора комментировать. До 20кГц всё прекрасно. Дальше начинается дискредитация ЦАП, а именно, его цифровой фильтрации. С ростом частоты растет и глубина модуляции. Для начала определимся с частотой.

Fпаразитная= 2*(Fs/2-Fтекущая), где Fs – частота дискретизации


А вот с амплитудой я пролетел. Взяв -3Дб (71% от максимального), уже на частоте 22кГц я уперся в 0Дб по цифре. Обратите внимание. Правильно восстановленный сигнал (1000Гц) занимает примерно 6.5 клеток. 0Дб в данном случае – около 9.15 клетки (или 4.5 для масштаба 1V в клетке), что и наблюдается в случае с 22кГц. Значит, амплитуда паразитной гармоники должна расти и дальше. Если будет время – пересниму с меньшим начальным сигналом. Добавлю отдельным постом в ветку.

Первое, что всплывает в дурной голове - алиасинг, но критерий Найквиста не нарушен. Исходный сигнал имеет спектр ниже, чем Fs/2.... Я ничего не могу придумать, как отнести это явление к некорректной реализации цифровой обработки внутри ЦАП. (готов услышать другие объяснения)
Эта самая некорректность на графике АЧХ будет выглядеть примерно так:



Часть спектра от 21кГц и выше отражается в область от 0 до 2кГц. Слуховая система эту модуляцию прекрасно детектирует (Основы слуховой системы часть 4. Цитата из Альтмана), т.е. ультразвука Вы не услышите, а вот модуляцию – очень даже будет слышно.
Если отвлечься от конкретной реализации ЦФ в конкретном ЦАПе, и представить на секунду, что внутри этого ЦАП стоит идеальный ФНЧ. Какой вывод можно сделать? Вывод очень простой. Реализованный внутри ЦАПа идеальный ФНЧ работает с очень маленькой легендой предыдущих и будущих отсчетов. Её явно недостаточно для корректной работы в полосе пропускания. Следовательно, эту работу надо возложить на господина Полиграфа Полиграфовича Шарикова – аналоговый ФНЧ после ЦАП. Чтобы он душил и душил всё, что выше 20кГц.
Лирика: Только вот, хватит ли Шарикову 4 порядка фильтра? В кудыть уползет фаза на 10кГц, 5кГц, 2кГц? Про фазу я тоже писал в «основах слуховой системы...»
К сожалению, не имею под рукой ЦАПов других производителей, но, сдается мне, что все они одним миром мазаны: CIC+КИХ фильтрация. Такие мысли навевает просмотр их характеристик в даташитах.
Очень хочется получить от читателей помощь (пусть это желание и наивно) по части представления в статье фото для любых других «топовых ЦАП» (AD1955, AD1862, PCM 1792a, PCM 1794a) хотя бы для частоты 22кГц. Обвязка значения не имеет. Трудов Вам на 10-15 минут, а мне то сколько радости! Адрес Veryfoxyfox - собаказлая - mal - точка - ru
Акт второй
Чистота дискретизации

Вопрос на повестке всего один. В какой сортир кИдаться после первого акта? И чтоб не замочили?…

На сегодняшний день накоплено огромное количество музыкального материала в формате 16/44, простим звукорежиссерам и разработчикам студийного оборудования их просчеты, как в разрешающей способности слуховой системы, так и в неграмотной работе со звуковым материалом. Мы имеем то, что имеем. Далеко не все записи хочется сразу же положить под бульдозер. Есть вещи, которые хочется послушать.
А теперь сам вопрос. Каким образом можно добыть максимум информации из ущербного 16/44, зная, что напрямую воспроизводить нельзя в силу выявленных «особенностей», дискредитировавших наш(и) ЦАпы? Время на решение вопроса для анжанэров пошло. Минута на размышление.

Я тоже подумаю...
Убогость формата ограничивает нас с двух сторон.
С одной стороны: это дискретный сигнал, т.е. квантованный по времени. Но, как учит великий Котельников, из него можно достать всё, что ограничено частотой в 22050Гц
С другой стороны: это цифровой сигнал, т.е. квантованный по уровням. И с этой стороны всё выглядит несколько хуже.

Хочу вернуть Вас к произведенной мной оценке: для «точного» восстановления необходимо 20860 отсчетов в обе стороны от текущего отсчета. Конечно, оценок и обоснований ограничения размера окна можно придумать миллион, и у каждой будут свои резоны. Но, что мне понравилось именно в этой оценке – через 0.5 секунды после начала воспроизведения в сумму ряда идеального ФНЧ будут входить только отсчеты из самого сигнала, при этом, (хочется надеяться), обеспечивая высокую достоверность всех промежуточных отсчетов. Значит мы «потеряем» (недостаточно точно восстановим) 0.5 секунды с начала трека и 0.5 секунды в конце. Невелика потеря.

Мой риторический вопрос: «а какой ЦАП по Котельникову восстанавливает?» так и остается пока риторическим. В реальных ЦАПах тоже применяют апсемплинг, но алгоритмы его рассчитаны на необходимое высокое быстродействие в режиме реального времени, а не на качество результата. Нам спешить некуда. Можно написать программку в 20 строчек, которая сделает апсемплинг строго по Котельникову.
А зачем, собственно, апсемплинг нам нужен? Поясняю танкистам. Корявость используемых алгоритмов в ЦАП и ЦФ базируется на невозможности осуществления огромного количества умножений с плавающей запятой в режиме реального времени. Основаны алгоритмы на «что-то как-то быстро, а потом отфильтруем всё нахрен, и будет синус синусом» (шоб им всю жизнь и слушать только синус). С другой стороны посмотришь – вроде всё верно делается, но, как с теми шариками из анекдота: «Вроде и разноцветные, и надуваются, но бракованные – не радуют». Результаты работы применяемых на сегодняшний день фильтров при апсемплинге в ЦАП и ЦФ, как выяснилось, тоже не радуют.....

Позволю себе немного расширить размер окна: по 22050 отсчетов до и после текущего. Смысла особого в этом нет, только для ровного счету. Любой, средней руки программер быстро напишет программку, которая восстановит нам еще 3 отсчета между двумя соседними. Это эквивалентно повышению частоты дискретизации в 4 раза, т.е. до 176кГц. Можно повышать и дальше, только воспроизвести будет нечем.
Зачем нужны эти танцы с бубнами? Правильный апсемплинг восстановит отсчеты точнее, чем ЦАП. Корявые, но быстрые алгоритмы ЦАП будут работать на частоте дискретизации значительно выше и, соответственно, вносить меньшие искажения в нужный нам диапазон частот. Еще один плюс – фильтры после ЦАП могут быть настроены на более высокую частоту, а значит, вносить меньшие искажения в фазовые соотношения сигналов в воспроизводимой полосе частот.
Эти рассуждения отвечают на вопрос, в том числе и тех, кто любит крутить пальцем у виска: «А почему при апсемплинге появляется «воздух» которого не было в исходном сигнале?».
Как будет выглядеть сигнал после идеального апсемплинга на выходе ЦАП?

Приведу несколько фото. Апсемплинг идеальный я конечно не делал, а просто сгенерировал синусоиды но в формате 24/88.2кГц, считая, что он, идеальный, у нас уже есть.

1000 Гц/0.5V/1ms:




21500Гц/0.5V/1ms:




21500Гц/0.5V/0.1ms:




22050Гц/0.5V/0.1ms:




22050Гц/0.5V/1ms:




Синусы получились красивейшие. Никаких модуляций. Значит идеальный апсемплинг = НАШЕ ВСЁ. Идеальный апсемплинг = Идеальный ФНЧ.

Теперь начинается мракобесие с моей стороны. Анжанэрам рекомендуется выпить или выпить валерианки. Остальным – просто читать.

Рассмотрим исходный сигнал.




Теперь сигнал после апсемплинга на 176.4кГц:




На картинке неявно напрашивается не только апсемплинг, но и увеличение «значащей» разрядности. Увеличение частоты в 4 раза «просит» повышение разрядности сигнала на 2 разряда, чтобы «сохранить квадратно-гнездовой вид». (хорошо, что на кострах больше не жгут за убеждения и гипотезы). Выглядеть это будет так:





С одной стороны, нам никто такого права не дает, и это чистой воды техническое мракобесие. С другой стороны – можно вспомнить ЦАПы фирмы UltraAnalog, которые в рекламных проспектах гарантировали при 16 битной реализации ошибку не более четверти младшего разряда. Будем считать, что опираясь на UltraAnalog, мы имеем право добавить один разряд.
А теперь вторая мысль, не менее мракобесная, чем первая. Имеющаяся в нашем распоряжении запись является эталоном (ничего другого у нас нет вообще, и не будет). Раз это эталон, никто не мешает нам дорисовать желаемое нам количество нулей в младшие разряды (всего то два), и считать, что наш эталон имеет не 16, а 18 бит точности. Для изменившихся начальных условий изменится и окно для расчета промежуточных отсчетов. Получаем по 88200 отсчетов вперед и назад относительно текущего момента времени. И, сам расчет с вычислениями до 18 бит точности. Недостающие вначале трека и конце отсчеты заменяем нулями. Для себя запоминаем, что сигнал начинает «воспроизводиться точно» уже через 2 секунды от начала трека.

18 бит – ни уму ни сердцу ни ЦАПу. Поэтому с 19 по 24 биты заполняем «белым шумом» в дискретном его представлении. Можно и не белый шум, а шум аналоговой ленты или шум пустой канавки винила. Так сказать, припудрим носик мертвечине. Можно и нулями добить до 24 разрядов или сразу вести расчет с точностью 24 бит. Как говорится, вариации возможны.


Вместо эпилога


Звукорежиссерам необходимо сделать очень серьезные выводы
1. Работа с оцифрованным сигналом должна быть как минимум на удвоенной частоте, относительно частоты, на которой фонограмма записана. (разжевывать лень).
2. После всех-всех-всех манипуляций необходимо обязательно применять цифровой КИХ фильтр с жесткой обрезкой спектра выше 20кГц. (Назовите это словосочетанием «сакраментальный финальный мастеринг»).

Программистам:
1. Если у кого-то появится реальное желание написать программку с идеальным апсемплингом – формулу для расчета и алгоритм можно взять из «Блеск и нищета теоремы Котельникова». Эта программка должна получиться достаточно простая, но вместе с тем эффективная и популярная.
2. На пути написания алгоритма есть еще подводные камни, которых я коснулся вскользь.
3. Готов принять в дар такую программу для личных нужд.http://3vuk.ru
Категория: Мои статьи | Добавил: MAS (15.06.2012)
Просмотров: 3184 | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Мои статьи [51]
Справочные данные [165]
Справочные данные
Наш опрос
Оцените мой сайт
Всего ответов: 30
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Баннер
$$
Друзья сайта
  • Спортсменам
  • Огородникам СЮД(А
  • Строим вместе
  • Мир развлечений
  • Кто хочет похудеть
  • Здоровье у нас одно
  • Юмор
  • Кулинарные рецепты
  • Картинки_Заставки_Демотивоторы
  • Семья
  • Кто на мальчишник
  • Металлообработка
  • Кто на девишник
  • Блоки питания
  • Смерть соседям
  • Радиомедведь
  • Кибермедведь
  • Радиосайт
  • Деревообработка
  • Поиск