Последний раз редактировалось Konkere; 06.12.2011 в 09:33.
Кстати, ОС действительно запросто может не знать о __настоящей__ частоте сэмплирования - при синхронизации не от того генератора именно это и происходит - буфер опустошается не с той скоростью, звук выше или ниже, но ничего не ломается (если не требуется синхронность с чем-то ещё, например с видео, но это уже вопрос измерения времени).
ОС "знает" в том смысле, что пытается настроить звуковую карту на ту или иную частоту и/или передискретизировать на неё, не более, а далее оно всё само. Если взять audigy и поменять кварц, то файл 44 кГц можно будет проиграть без передискретизации в 48, но для этого потребуется обмануть драйвер/плеер (для эксперимента проще всего исправить частоту дискретизации в файле - в смысле информацию о ней, одно число в заголовке, а не все данные). Отчаявшись найти Tremor, я чуть не пошёл по этому пути.
P.S. Я не уверен на все 100 в bit perfect у аудиgy, равно как и в то, что на выходе будет 44, а не 88 или 176, но данные изначально записанные в 44 будут играть с нормальной скоростью.
Дело в том, что из памяти слово не попадает сразу в ЦАП звуковой карты. Оно попадает в регистр, а из него переписывается в ЦАП (и поступает на выход) по локальному генератору звуковой карты. После этого в регистр попадает следующее слово и лежит там (долго лежит) до очередного такта звуковухи. Это при буфере только на одно слово. Если буфер больше - туда сразу заливается часть потока, и потом по каплям выдаётся на выход.
Я не зря приводил аналогию со школьной задачей "в одну трубу вливается, из другой выливается". Буфер всегда заполняется заранее, задолго до такта генератора звуковой карты, поэтому никакие задержки в системе не влияют. Ну только если они не вылезут за период сэмплирования - но тогда будет щелчок (да и вылезти задержкой за пределы 10мкс - это я даже не представляю, сколько десятков тысяч тактов современного процессора, даже без учёта конвейера, и если не используется DMA).
---------- Сообщение добавлено 20:04 ---------- Предыдущее сообщение было 20:00 ----------
Буфер (на карте) опустошается аппаратно тактовым генератором звуковой карты. Какой коэффициент деления записал драйвер в регистр карты - такая частота вывода и будет.
А из буфера в оперативной памяти в буфер карты данные всегда передаются на максимально возможной скорости - скорости шины. Как буфер в ЗК освободился (вариант - почти освободился) - ЗК выставляет прерывание, и сразу данные из оперативной памяти быстрым потоком заполнили буфер под завязку.
Именно для этого в 20 веке и были придуманы звуковые карты - чтобы выводить аппаратно, и не зависеть от тактов системы.
---------- Сообщение добавлено 20:07 ---------- Предыдущее сообщение было 20:04 ----------
В карточках с одной частотой вывода (или несколькими только кратными) передискретизация осуществляется всегда. И поэтому битперфекта там нет.
Большинство карт используют один или несколько каналов прямого доступа к памяти (DMA) для считывания и записи цифровых аудиоданных на аудиоустройство и обратно.
http://gd.tuwien.ac.at/opsys/linux/a...y24HT091DS.pdf - Где hardware buffer ?
Я знаю, собственно про возможные МАЛЫЕ неравномерности этого процесса и пишу. Большие - устранены by design точно так, как вы описали.
Именно это мой пример и иллюстрирует. Вообще похоже я не с Вами спорю
А вот тут не соглашусь: пусть карточка выводит 48кгц без передискретизации; берём файл 44, меняем в его заголовке частоту (делаем 48), он выводится без передискретизации, но чуть ускоренно. Bit perfect при этом есть. Теперь меняем на карте кварц и избавляемся от ускорения. Правда, карточка теперь нормально не воспроизводит ни 44 ни 48, но 44 вот так выданные за 48 - уже вполне. Осталось поправить драйвер|плеер и готово.
Попробую объяснить. В своё время начали делать карточки с одной частотой дискретизации 48кГц. Для того, чтобы в микросхему заталкивать потоки с разной частотой дискретизации (и доставать из неё тоже) - внутрь запихнули многоотводный цифровой фильтр (вот такое вот "упрощение"). Сначала этот фортель сделал кто-то из крупных производителей, а потом "узаконил" Microsoft в стандарте.
Смысл вот в чём: во всех мне известных реализациях этот фильтр неотключаемый. То есть, при выводе даже на нативной частоте он продолжает работать. И самое противное, что подробности его работы в даташитах не описываются.
Где-то в интернете лежат исследования карточек с одной фиксированной частотой вывода - народ удивлялся наличию на спектрограмме двух палок интермодуляционных искажений при выводе на любой частоте.
Я допускаю, что есть карточки, которые одну из сеток частот выводят нативно, но документального подтверждения у меня нет.
---------- Сообщение добавлено 06:43 ---------- Предыдущее сообщение было 06:40 ----------
Для дебилов: самый последний буфер стоит в микросхеме ЦАП, данные из него в сам ЦАП передаются по фронту сигнала LRCK.
Для них же: на структурной схеме чипа Envy практически любой квадратик является буфером, так как содержит регистры и работает в синхронном режиме.
Иди столярничай.
Последний раз редактировалось straus; 21.03.2017 в 07:14.
И в ЦАПе есть как правило фильтр; однако в своей сетке частот ЦФ скорее всего работает много лучше. И при работе на максимальной рабочей частоте фильтр скорее всего будет работать 1-в-1 (если это именно ЦФ, а не какая-то совсем другая микросхема, например, микшер), то есть передискретизация 48->192 делается предварительно (на самом деле у нас получается 44->176, но карта об этом никогда не узнает), а дальше 192 воспроизводится как есть.
Ну и просто проверить можно в конце концов (и с этого начать - bit perfect на 48 или 192, иначе - взять другую карту), а начинал я с того, что можно легко обмануть и карту и софт (вот чтоб с этого выгоду получить, уже потребуется учитывать работу ЦФ и т.д.) и заставить работать не на той частоте, что подтверждает тезис о том, что компьютер НЕ ЗНАЕТ о настоящей частоте дискретизации.
P.S. Самое беспроигрышное - взять дешёвую карту, умеющую отдавать ТОЛЬКО 48кГц без обработки (48->48 это уже не про ЦФ), с неё выдрать (из AC97 ) i2s или вообще S/PDIF и завести внешний генератор вместо кварца; к счастью, есть VIA Tremor и этого не нужно.
Просто поверь, что в чипе ENVY буферы фифо есть, иначе не бывает. Я тебе несколько страниц назад это пояснял и советовал посмотреть дш на аналогичные приборы более ранних годов выпуска. Приводил дш на AD1845. Буфер фифо в данном контексте применения есть обыденность, де факто стандартное решение, их на блок-схемах приборов чье функциональное назначение иное нежели только "контроллер DMA" давно перестали обозначать как некий самостоятельный элемент. В дш на AD1845 есть прямой намек на это "...буфер фифо прозрачен для разработчика...." т.е. его не надо как то конфигурировать, программировать, обслуживать, "держать в голове" и т.д. Он есть и он просто работает.
Но ты ж "на мнении"...
---------- Сообщение добавлено 09:09 ---------- Предыдущее сообщение было 08:55 ----------
Да, там походу бесполезняк объяснять. Всё всерьёз у парня.
Последний раз редактировалось Denisius; 21.03.2017 в 10:34.
Касаюсь струн, держу суперсимметрию.
Дык:
AD1845 includes dual DMA count registers for full duplex operation enabling it to capture data on one DMA channel and play back data on a separate channel.
The FIFOs on the AD1845 reduce the risk of losing data when making DMA transfers over the ISA/EISA bus.
The FIFOs buffer data transfers and allow for relaxed timing in acknowledging requests for capture and playback data
"Замполит, чайку?"(с)"Охота за Красным Октябрем".
"Да мне-то что, меняйтесь!"(с)анек.
<-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.
Alex, разумеется. Я ему про то, почему фифо не нарисовано в дш на ENVY.
Касаюсь струн, держу суперсимметрию.
Кто какими драйверами под какую ОС пользуется для вывода цифры?
Под XPSP3 пробовал M-Audio Delta AP192:
5057 - работает KS и ASIO до 192кГц.
5069, 5078 - KS не работает вообще, только ASIO и показалось, что оно звучит интереснее, чем в 5057.
Последний раз редактировалось AleXH; 23.09.2017 в 23:25.
Уважаемые форумчане! Прошу у вас помощи. Начитавшись о прекрасном звуке, что даёт перепрошивка звуковой карты VIA Tremor 7.1, с горем пополам произвёл оную операцию. Но я совершенно упустил из вида, что перепрошивка нужна, прежде всего, для вывода звука через цифровые интерфейсы... Теперь я остался без звука совсем. Скорее всего мне нужен файл eeprom.ini оригинального VIA Tremor 7.1, чтобы я вновь смог в обычном режиме пользоваться этой звуковой картой. Пожалуйста откликнитесь неравнодушные. И прошу прощения за своё дилетантство.
UPDATE!
Нашёл eeprom.ini от оригинального VIA Tremor 7.1 в данной теме (пост #1981). Проблема решена!
UPDATE2!
После прошивки оригинального eeprom.ini и установки драйверов версии 5.40F, в панели управления картой Audio Deck, нет кнопки с выбором аккустической конфигурации 7.1 (максимально есть 5.1). Делаю вывод, что я прошил eeprom.ini от Tremor 5.1. Есть ли у кого eeprom.ini от Tremor 7.1? Поделитесь пожалуйста!
Последний раз редактировалось Soundoomer; 21.01.2018 в 17:50. Причина: Проблема (всё-таки) не решена.
Кто-нибудь пытался запустить сабж (AP192) под Linux? - Поделитесь опытом.
AP192 (а точнее - subj., прошитый в AP192) - просто работает. Помню, выставил синхронизацию от внешнего источника (в alsamixer это в пункте выбора частоты дискретизации) - при этом карта не должна работать (в настройке pulseaudio временно выключить), иначе синхронизация не установится, а дальше настройки сохранились и уже несколько месяцев всё работает.
44 и 48 - точно - при частотах синхронизации 11-12мГц, для 88 и 96 частота должна быть вдвойне; про 176 и 192 - не помню, у меня двойную пока не подать, насколько помню, там тоже двойная (а не четверная) нужна, но может и ошибаюсь.
tinycore в глаза не видел, конечно могу сесть и начать разбираться, но не сегодня и не завтра.
masterspammer, TinyCore мелкий - 16МБ, поэтому он хорошо бы подошёл для плейера lossless с флешки.
Прочитал несколько страниц, но ответ не нашёл. Можно ли из такой карточки, после прошивки чужого ини файла, получить устройство, поддерживающее обратную синхронизацию? На, скажем, audiotrak prodigy 7.1, основанной на via, оная имеется.
Социальные закладки