Звук изначально имеет аналоговую природу, но мы сознательно идем на компромисс и придаем звуковому сигналу промежуточное, цифровое, состояние, поскольку оцифрованная информация обладает огромными преимуществами для хранения и передачи. Дополнительно появляется возможность применить к оцифрованному сигналу цифровую же обработку. Регулировка громкости в проигрывателе по сути является одной из таких обработок, пожалуй, самой простой по реализации.
Немного теории
Для аналогового по природе сигнала аналоговая обработка всегда будет предпочтительнее, потому как цифровая обработка это ни что иное, как преобразование сигнала с помощью некоей физической модели аналогового процесса. Как любая модель, она имеет только некоторое приближение к реальности, а поскольку модель цифровая, то сюда добавляются проблемы, связанные с пересчетом и округлением числовых значений.
Сторонники аналоговой регулировки громкости (и, соответственно, противники цифровой) обычно основным аргументом приводят следующее утверждение: цифровая регулировка громкости уменьшает динамический диапазон. Утверждение, в целом, верное, но на самом деле только уменьшение динамического диапазона от цифровой регулировки громкости в программном проигрывателе в небольших пределах не так уж критично. Во-первых, в плеерах в подавляющем большинстве случаев доступно только уменьшение громкости относительно исходного сигнала, а во-вторых, не вдаваясь глубоко в технические подробности, поясню на простом примере: уменьшая громкость любым способом, вы же наверняка готовы к тому, что самые тихие звуки фонограммы могут перестать быть слышимыми?
Более заметное влияние может оказать то, что в результате пересчета к сигналу добавятся искажения. Применение в промежуточных вычислениях повышенной разрядности не избавляет от необходимости округления полученного результата. Округлять можно разными способами, например к большему, к меньшему, к ближайшему допустимому или в сторону ближнего по значению соседнего отсчета. Округление к меньшему (оно же отбрасывание, самый быстрый алгоритм) или к большему добавит к сигналу постоянную составляющую, к ближайшему или в сторону ближнего соседнего отсчета (пожалуй, наилучшее, хотя и самое медленное) – низкочастотную. При этом округление к ближайшему приведет к росту в спектре нечётных гармоник.
Для борьбы с этими эффектами применяются несколько способов в разной комбинации. Можно пропустить сигнал через низкочастотный фильтр, добавлять ошибку округления отсчета к следующему, подмешать к сигналу шум, близкий по уровню к шуму квантования. В общем, тут многое зависит от поставленных целей и таланта программиста, реализовывавшего алгоритм.
Если вывод в программном проигрывателе реализован правильно (именно вывод, входное декодирование в данной статье не рассматривается), то разницу в звучании проигрывателей можно ожидать только в одном случае – если задействована регулировка громкости, а алгоритмы пересчёта применяются разные.
Методика тестирования
В тестировании будут участвовать два популярных программных плеера, foobar2000 версии 0.9.6.6 и Winamp версии 5.552 на компьютере под управлением Windows XP SP3. Плееры будут тестироваться с плагинами вывода, входящими в комплект поставки, для Winamp это Nullsoft DirectSound Output v2.49(d) и WaveOut Output v2.12(d), для foobar2000 – стандартный вывод через DirectSound.
Почти все настройки проигрывателей оставлены по умолчанию, только для проигрывателя Winamp было внесено одно изменение.
Дело в том, что с настройками по умолчанию плагин WaveOut для регулировки громкости на самом деле использует канал Wave системного микшера. Поэтому в настройках регулятора громкости плагина была включена опция Alt. setting method, позволяющая избежать участия в регулировке громкости системного микшера.
Кроме того, в обоих проигрывателях вместо Primary Sound Driver в качестве устройства воспроизведения было явно задано виртуальное устройство Juli@ Ch1234.
Громкость в системном микшере, по очевидным из предыдущего материала причинам, установлена на максимум.
Поскольку тестируются не звуковые карты, а проигрыватели, весь путь от воспроизведения до записи в файл для анализа сигнал пройдет в цифровом виде. Поможет в этом звуковая карта ESI Juli@ и реализованная в её драйвере функция DirectWIRE.
Измерения выполнялись с помощью тестового пакета RightMark Audio Analyzer 6.2.3 PRO на тестовом WAV-файле 16 bit 44,1 kHz.
Запись в RMAA производилась через интерфейс ASIO, 32 bit 44,1 kHz.
Всего будет проведено три серии тестов, на максимальном уровне громкости и с уменьшением приблизительно на три и семь децибелов. Подстройка уровня для второго и третьего тестов проводилась по индикатору из RMAA.
Для справки в результатах тестов в скобках приведены значения уровня понижения громкости по показателям проигрывателей.
Вне конкурса будет проведён четвертый тест с проигрывателем foobar2000, позволяющим задавать повышенную разрядность для выходного сигнала. Предыдущее исследование показало, что при максимальной громкости на 16-битном источнике смена Output data format с 16-bit на 24-bit ничего не даёт. Посмотрим, что изменится при понижении громкости в проигрывателе. Тест будет проведён со стандартным DS output и дополнительно установленным плагином Kernel Streaming.
Область применимости результатов теста
Обратите внимание, что тестируются проигрыватели с различными плагинами для вывода и на WAV-файле, записанном с разрешением, принятым для AudioCD. Таким образом, результаты тестов будут справедливы только для воспроизведения аудиоматериалов в том же разрешении, несжатых, либо сжатых с применением lossless кодеков.
Примерять полученные результаты к воспроизведению lossy форматов (например, mp3) будет неправильно. Искажения от сжатия с потерями с применением психоакустических моделей наверняка превысят показатели искажений, полученные в данной серии тестов. Когда в дело вмешивается психоакустика, субъективное восприятие становится зависимо от очень многих факторов, в том числе от характера исходного сигнала, подвергнутого сжатию с потерями и особенностей пары кодер-декодер. Применение в этом случае сугубо инструментальных методов оценки качества бессмысленно.
Тестирование
Проводить все доступные в RMAA тесты для достижения поставленной цели не требуется. Остановимся только на тестах динамического диапазона, нелинейных и интермодуляционных искажений.
Тест первый. Winamp DirectSound и WaveOut, foobar2000 DS 16-bit, максимальная громкость.
Тест | Winamp DirectSound (100%) | Winamp WaveOut (100%) | foobar2000 DS 16-bit (0dB) |
Динамический диапазон, дБ (А): | 97.8 | 97.8 | 97.8 |
Гармонические искажения, %: | 0.0004 | 0.0004 | 0.0004 |
Интермодуляционные искажения + шум, %: | 0.0035 | 0.0035 | 0.0035 |
Как и следовало ожидать, результаты полностью совпали. На максимальной громкости никакой разницы в воспроизведении между Winamp и foobar2000 нет. Посмотрим, что произойдёт, когда в дело вмешается регулятор громкости проигрывателя.
Тест второй. Winamp DirectSound и WaveOut, foobar2000 DS 16-bit, -3 дБ.
Тест | Winamp DirectSound (66%) | Winamp WaveOut (70%) | foobar2000 DS 16-bit (-3.50dB) |
Динамический диапазон, дБ (А): | 95.6 | 96.0 | 95.6 |
Гармонические искажения, %: | 0.0008 | 0.0007 | 0.0008 |
Интермодуляционные искажения + шум, %: | 0.0047 | 0.0045 | 0.0047 |
Сиреневый график это результат первого теста, приведён для сравнения. Результаты foobar2000 и Winamp для DirectSound (белый и голубой графики) совпали. Winamp c WaveOut демонстрирует некоторые отличия. Отчасти отличия вызваны тем, что из-за дискретности регулировки, для WaveOut наверняка не удалось получить точно такого же понижения уровня, как и для DirectSound, хотя RMAA и показал одинаковые значения. Просто разница оказалась менее 0,1 дБ, то есть ниже точности индикатора RMAA. Посмотрим, что покажет третий тест, где и понижение по абсолютному значению больше, а потому относительные отличия уровней меньше.
Тест третий. Winamp DirectSound и WaveOut, foobar2000 DS 16-bit, -7 дБ.
Тест | Winamp DirectSound (43%) | Winamp WaveOut (45%) | foobar2000 DS 16-bit (-7.50dB) |
Динамический диапазон, дБ (А): | 94.1 | 93.4 | 94.1 |
Гармонические искажения, %: | 0.0012 | 0.0010 | 0.0012 |
Интермодуляционные искажения + шум, %: | 0.0057 | 0.0058 | 0.0057 |
Результаты в DirectSound обоих плееров вновь совпали. А Winamp WaveOut показал ещё большее отличие. Теперь уже можно утверждать, что, похоже, Питер Павловски (Peter Pawlowski), отделившись в 2002-м году от команды разработчиков Winamp и начав работу по созданию проигрывателя foobar2000, не стал изобретать велосипед, а применил для регулировки громкости при выводе через DirectSound тот же алгоритм. Что касается WaveOut в Winamp, для него, судя по всему, применяется несколько иной алгоритм расчётов, но в целом дающий качественно близкий результат.
Тест четвёртый, вне конкурса. foobar2000 DS 16 и 24-bit, KS 16 и 32-bit, -7 дБ.
При подготовке к этому тесту обнаружился сюрприз. При выводе через DirectSound в предыдущих тестах, показания понижения уровня сигнала самим foobar2000 и индикатором RMAA имели расхождение в 0,5 дб, то есть RMAA показывал -7,0 дБ при установке в foobar громкости -7,50 дБ. Но с плагином для Kernel Streaming ситуация изменилась, -7,0 дБ в RMAA получались при -7,00 дБ в foobar. Пришлось опять подстраивать громкость в проигрывателе.
Тест | foobar2000 DS 16-bit (-7.50dB) | foobar2000 DS 24-bit (-7.50dB) | foobar2000 KS 16-bit (-7.00dB) | foobar2000 KS 32-bit (-7.00dB) |
Динамический диапазон, дБ (А): | 94.1 | 97.8 | 93.5 | 97.8 |
Гармонические искажения, %: | 0.0012 | 0.0004 | 0.0012 | 0.0004 |
Интермодуляционные искажения + шум, %: | 0.0057 | 0.0035 | 0.0057 | 0.0035 |
Зелёный и сиреневый графики практически совпали. Предыдущее исследование, foobar2000: Kernel Streaming против DirectSound, показало, что на максимальной громкости в проигрывателе и системном микшере включение 24-bit output на 16-битном источнике, а так же задействование Kernel Streaming ничего не даёт. Данный тест, где был задействован регулятор громкости проигрывателя, демонстрирует, что от вывода через Kernel Streaming по-прежнему мало что меняется (напомню, громкость в системном микшере была выставлена на максимум), а вот повышение разрядности оказалось очень даже кстати.
Выводы
Ну что ж, господа маньяки-аудиофилы и просто интересующиеся, пришло время подвести некоторые итоги. Выводы оформим в виде рекомендаций.
Если позволяет остальной звуковой тракт без особых потерь в удобстве – пользуйтесь аналоговой регулировкой громкости, выставив уровень в проигрывателе (и в системе) на максимум.
Winamp и foobar2000 с настройками по умолчанию показали качественный паритет. Наверняка полученный результат можно экстраполировать и на другие распространённые проигрыватели. Поэтому, если нужно регулировать громкость в проигрывателе, но нет желания копаться в его настройках – пользуйтесь любым приличным программным плеером.
Включение в foobar2000 повышения разрядности вкупе с задействованием регулятора громкости позволило ему обойти Winamp. Так что если аналоговая регулировка не подходит, но хочется выжать максимум – ищите проигрыватель (или плагин) с аналогичной функцией.
Автор: Павел Селиванов
Источник: http://spvd.ru
А можно ли как-то вообще отключить громкость. Т.е.
подавать сигнал на ЦАП напрямую через ASIO
без какой либо предварительной обработки , даже громкость не менять.
Вернее вопрос чуть-чуть о другом.
РеCемплируется ли файл 44.1*16 Audio-CD ПО-УМОЛЧАНИЮ во что-либо
ДАЖЕ ЕСЛИ громкость выставлю на 100%
и все DSP отключены.
Короче задача воспроизвести самый честный аудио-тракт. взять 44.1*16.Flac декодировать его в PCM.wav
и вот ровно это подать тот час же подать на ASIO , которое уже тот час же подаст его на звуковую плату.
Есть ли такой Аудио-Плеер, где нет даже регулятора громкости, но есть ASIO вывод ?
PlayPCMWin весьма и очень похож на такой, но там кажется только WASApi . А ASIO нет.
===
Правильно ли я понял, что сами ASIO и WASApi (эксклюзивный) равносильный прямому транспотру в звуковуху без каких-либо промежуточных WindowsMixer
т.е.
Сами ASIO WASApi со звуком произвести ничего не могут по определению.
Т.е. любые предварительные ресемплеры - это суть опции программ плееров. Хочешь ресемплируй, хочешь не РеСемлируй, к транспотрту это отношения не имеет.
Так зачем же тогда что-то РеСемлировать ?!. Ведь на студии уже сделали ВСЁ! Нам остаётся лишь слушать.
Но нет, каждая программа предлагает как минимум регулировать громкость. Ну да вышеприведённая статья показала, что это -то как раз меньшее из зол, т.е. сама регулировка громкости не вносит изкажений. Искажения вносятся от РеСемлинга.
Вот я и боюсь, что громкость я выставляю на 100% всегда , а РеСемлиинг всё равно заложен в программах по-умолчанию..!
Как же быть?
Как подать на ASIO звук в том виде в каком он записан в файле ?. - по логике надо просто с ним ничего не делать. Т.е. выставить регулятор громкости в 100% и не использовать DSP - всё.
Но ведь все преобразования 32 битные ? А значит файл для этих преобразований прежде был РеСемплирован из 16 в 32. Или если все DSP отключены, то и РеСемплирования этого НЕ производится ? - как бы это узнать? или измерить?