Вот это очень хорошая карточка. И с Линуксом дружит.
cucullus
нда. ещё одно доказательство того, что никто не опозорит человека лучше, чем он сам! ;)
Обычно подобные утверждения принято аргументировать.
Natrio
Пока вы не привели НИКАКИХ доводов, имеющих отношение к программированию аудиокарт, всё это лишь голословные утверждения и ссылки на домыслы и слухи.
Я вам и не собирался приводить НИКАКИХ доводов, имеющих отношение к программированию звуковых карт. Вы забыли о чем вообще шла речь. Это раз. Я не собираюсь “вешать” систему, что доказать вам неивестно что. Это два. И наконец…, вы знаете, есть такой компьютерный прикол, в котором говорится, что хакер может наступить на грабли даже если они лежат в сарае и заперты на замок, а ламер вообще граблей не замечает. Так вот вы не заметите грабли даже если покрасить их в красный цвет, оградить забором и поставить запрещающий знак. У вас совсем нет опыта работы со звуковыми картами. И в то, что вы когда-то программировали их я уже не верю, у вас серьезные проблемы с теорией. Дальнейший спор считаю бесполезным, вы толком не понимаете что я вообще говорю.
Natrio
Что бы вы ни говорили, я программировал звуковую карту на уровне регистров и прерываний, и потому я ЗНАЮ, как это работает. Ваши же представления об этом основаны лишь на УБЕЖДЕНИИ, что ТАК ДОЛЖНО БЫТЬ.
В точности до наоборот. Вы когда-то программировали, очень давно. И знаете как оно работало тогда. Вы отстали, и сильно. Мои же убеждения основаны на практическом опыте работы с современными звуковыми картами. Я слышу разницу на слух (кстати автор темы, от которой образовалась эта, ее тоже услышал). Между rt ядром, не rt ядром и Windows, на одних и тех-же звуковых картах. При наличии asio/jack и отсутствии. Ваши знания о вопросе, на существующий момент, даже не теоретические, а просто любительские.
Разница между ISA- и PCI-картами главным образом в том, что первые получали данные из буфера в памяти через DMA, а вторые проецируют свой буфер в непосредственно в доступное процессору адресное пространство. В любом случае звуковая карта воспроизводит звук САМА, без участия процессора, который лишь управляет ей и организует АСИНХРОННОЕ пополнение буфера.
В процессе работы звуковая карта еще и управляется в той или иной мере CPU. Может быть вы наконец подумаете зачем ей вообще DSP и как работают звуковые карты без DSP, то бишь большинство интегрированных? Чем управляются ЦАП-ы, АЦП, синтезаторы? Сами по себе работают что-ли?
Что же касается задержки, jack и RT-ядра, то всё просто – если вы действительно обрабатываете реальный звук в реальном времени, то очень полезно уменьшить задержку в буфере, а для этого уменьшить буфер.
Ага, все просто. Ну детский сад настоящий. Этот вопрос один из самых мутных и злободневных в звукорежессуре. И времени на его решение обычно уходит предостаточно. Вы бы хоть на форумы тематические сходили бы, что-ли… Он уже буквально исчавкан, но до конца решается лишь по ситуации.
Natrio
Вы говорили об обширном опыте работы со звуком. В чём конкретно он заключается?
Я говорил о достаточном практическом опыте работы со звуком. А заключается он в обработке аудио материала (и видео, но это уже не в тему).
СО ЗВУКОВОЙ КАРТОЙ в любой ОСи (кроме DOS) работает ТОЛЬКО драйвер, и ничего больше. Все API – по определению той или иной подсистемы ядра или вообще прикладных программ. Чтобы выяснить, как работает аудиокарта, надо изучать её саму, а не программные слои абстракции от неё.
Подробные материалы о работе конкретных звуковых плат найти далеко не так просто. При желании можно найти технические характеристики, даже структурные схемы. Но принципиальных схем или описаний процессоров днем с огнем не сыщешь. Поэтому я и написал о косвенных средствах. Впрочем есть еще сайт с alsa “дровами”. Можете покопаться в исходниках. :) Но вы увели тему (не ту что сейчас в названии :) в сторону. Вы фактически признали, что система посредством драйвера таки работает с DSP и стало быть не в одном только заполнении буфера заключается весь смысл работы со звуковой картой. И стало быть мы возвращаемся к тому, с чего начали - важности свовременного отклика системы.
Natrio
Прикладное программирование?
Причем тут прикладное программирование?
Откуда API у микросхемы? API это ПРОГРАММНЫЙ интерфейс, которым оперирую программы юзерспейса, а у микросхем обычно бывают регистры, доступные CPU через шину по определённым адресам, именно ими оперирует драйвер.
Вы его собираетесь на ассемблере программировать что-ли? Или вам нужна возможность разобраться? Описание самих процессоров вы едва-ли найдете. А вот какой-нибудь API для работы со звуковой картой вполне можете.
Спасибо, эта история проходила перед моими глазами, я даже приводил пример :)
Ага, только часть этой истории прошла мимо них. Вы вероятно в этот момент просто спали. :D Иначе фраза “Sound Blaster” у вас не вызывала бы столько удивления.
Natrio
Нам нужно не то, что снаружи, а то что ВНУТРИ этой пресловутой микросхемы.
Нам это не нужно. Я прочитал достаточно материала на эту тему. И у меня есть достаточно большой практический опыт работы со звуком, чтобы делать выводы. Это нужно вам. На более или менее продвинутых звуковых картах DSP имеется. Выбирайте любую карту, списывайте маркировку с микросхемы (обычно это самая большая микросхема на плате) и ищите для нее API.
О да, вы правы! Я не заметил вот этого перла:
Обычное косноязычие. Им грешат многие статьи.
Хотя уже ЭТО должно была насторожить.
Читаем здесь историю. Никого это не должно насторожить. Статья просто старая.
Natrio
yura_n, вы хоть посмотрели бы, что там написано, и как они назвали звуковую карту – “Sound Blaster” :)))
Ну да, вот как раз в те бородатые времена, о которых я рассказывал, такие “современные” и были в ходу. Ещё 8-битные ;)
Правда, они подключались к шине (E)ISA, а не PCI.
Потом появились 16-битные, и я программировал именно такую.

А вообще статья откровенно поверхностная и общеобразовательная, сообщающая совсем несведущим чайникам (студентам?) очень абстрактную теорию в вакууме, и никаких подробностей устройства, равно как и ссылок на них там нет. Ни о каком описании хотя бы интерфейса речи не идёт в принципе. Вся цифровая часть аудиокарты там обозначена как “процессор”. С таким же успехом можно что угодно процессором обозвать, если в этом чём-то идут какие-то тайные процессы ;)

В общем, уровень дискуссии мне теперь более-менее понятен, так что предлагаю не продолжать.
Я вам на статью указал только для того, чтобы вы посмотрели на структурную схему. Название, в данном случае, значения не имеет. Что касается процессора, то это отдельная программируемая микросхема. Это и есть процессор, самый что ни на есть настоящий, только ориентированный на определенные вычисления. И он не вся логическая часть. Что касается спора, то он представляется мне бессмысленным, вы умудрились даже в простой статье не заметить очевидного.
Natrio
В приведённом мной примере фигурировали DOS и ассемблер. Никакого драйвера там не было, было прямое управление звуковой картой из программы на ассемблере. И привёл я этот пример именно для иллюстрации того, как происходит управление звуковой картой НА САМОМ НИЗКОМ уровне. И когда я говорил “программы”, я имел в виду ВЕСЬ программный уровень, ВКЛЮЧАЯ драйвер.
А было это лет 15-20 назад. Вы бы еще программирование “пищалки” вспомнили. Вот линк. В нем есть схема устройства современной звуковой карты. DSP взаимодействует с материнской платой, ОС и CPU. При отсутствии DSP вся работа ложится на CPU, то есть управление АЦП, ЦАП, синтезатором, промежуточные вычисления. И даже при наличии DSP часть работы все равно остается на CPU. Если вы и после этого будете утверждать, что на самом НИЗКОМ уровне все заключается только в наполнении буфера, то спорить я с вами больше не буду, по причине полной бессмысленности этого процесса.
Natrio
yura_n, чтобы понять друг друга сразу – что именно вы имеете в виду под “событиями звуковой карты”?
Я воспринимаю это сочетание слов исключительно в прямом смысле, с точки зрения низкоуровневого программирования – прерывание, которым аудиокарта запрашивает пополнение буфера.
Под событиями звуковой карты я подразумеваю все случаи, которые требуют вмешательства CPU. А звуковая карта, как может быть вы думаете, это вовсе не отдельный (независимый) от системы модуль, значительная часть вычислений ложится именно на плечи процессора. Как программисту вам требуется только наполнить буфер. Но почему вы забываете про драйвер?