Страсти по Саунд Бластер :)

Natrio
Прикладное программирование?
Причем тут прикладное программирование?
Откуда API у микросхемы? API это ПРОГРАММНЫЙ интерфейс, которым оперирую программы юзерспейса, а у микросхем обычно бывают регистры, доступные CPU через шину по определённым адресам, именно ими оперирует драйвер.
Вы его собираетесь на ассемблере программировать что-ли? Или вам нужна возможность разобраться? Описание самих процессоров вы едва-ли найдете. А вот какой-нибудь API для работы со звуковой картой вполне можете.
Спасибо, эта история проходила перед моими глазами, я даже приводил пример :)
Ага, только часть этой истории прошла мимо них. Вы вероятно в этот момент просто спали. :D Иначе фраза “Sound Blaster” у вас не вызывала бы столько удивления.
bobart, lumberjack, прошу прощения :)
Всё, разделил тему.

yura_n
Причем тут прикладное программирование?
Вы говорили об обширном опыте работы со звуком. В чём конкретно он заключается?

Вы его собираетесь на ассемблере программировать что-ли? Или вам нужна возможность разобраться? Описание самих процессоров вы едва-ли найдете. А вот какой-нибудь API для работы со звуковой картой вполне можете.
СО ЗВУКОВОЙ КАРТОЙ в любой ОСи (кроме DOS) работает ТОЛЬКО драйвер, и ничего больше. Все API – по определению той или иной подсистемы ядра или вообще прикладных программ. Чтобы выяснить, как работает аудиокарта, надо изучать её саму, а не программные слои абстракции от неё.

Даташиты на DSP для звуковых плат встречаются в сети довольно часто, и некоторые их них я смотрел :)
P.S.
А вот, кстати, не даташит правда, но довольно интересное описание микросхемы EMU10K1, той самой, что в “SB Live!”, у автора топика про “металлический” звук.
http://www.datasheetarchive.com/EMU10K1-datasheet.html
Natrio
Вы говорили об обширном опыте работы со звуком. В чём конкретно он заключается?
Я говорил о достаточном практическом опыте работы со звуком. А заключается он в обработке аудио материала (и видео, но это уже не в тему).
СО ЗВУКОВОЙ КАРТОЙ в любой ОСи (кроме DOS) работает ТОЛЬКО драйвер, и ничего больше. Все API – по определению той или иной подсистемы ядра или вообще прикладных программ. Чтобы выяснить, как работает аудиокарта, надо изучать её саму, а не программные слои абстракции от неё.
Подробные материалы о работе конкретных звуковых плат найти далеко не так просто. При желании можно найти технические характеристики, даже структурные схемы. Но принципиальных схем или описаний процессоров днем с огнем не сыщешь. Поэтому я и написал о косвенных средствах. Впрочем есть еще сайт с alsa “дровами”. Можете покопаться в исходниках. :) Но вы увели тему (не ту что сейчас в названии :) в сторону. Вы фактически признали, что система посредством драйвера таки работает с DSP и стало быть не в одном только заполнении буфера заключается весь смысл работы со звуковой картой. И стало быть мы возвращаемся к тому, с чего начали - важности свовременного отклика системы.
yura_n
Вы фактически признали, что система посредством драйвера таки работает с DSP и стало быть не в одном только заполнении буфера заключается весь смысл работы со звуковой картой. И стало быть мы возвращаемся к тому, с чего начали - важности свовременного отклика системы.
Не надо заставлять меня доказывать, что я не верблюд, хорошо? Я говорил только то, что говорил сам, а не то, что вы мне приписали.

Что бы вы ни говорили, я программировал звуковую карту на уровне регистров и прерываний, и потому я ЗНАЮ, как это работает. Ваши же представления об этом основаны лишь на УБЕЖДЕНИИ, что ТАК ДОЛЖНО БЫТЬ.

Разница между ISA- и PCI-картами главным образом в том, что первые получали данные из буфера в памяти через DMA, а вторые проецируют свой буфер в непосредственно в доступное процессору адресное пространство. В любом случае звуковая карта воспроизводит звук САМА, без участия процессора, который лишь управляет ей и организует АСИНХРОННОЕ пополнение буфера.

Иногда это можно даже наблюдать непосредственно – если по каким-то причинам система “зависает” во время воспроизведения звука, часто это приводит к тому, что звуковая карта, лишившись управления, продолжает САМА зацикленно повторять содержимое своего буфера, который перестал обновляться.

Вы можете сами воспроизвести такую ситуацию – достаточно во время работы какого-нибудь плеера искусственно вызвать Kernel Panic, нажав Alt+SysRq+c, или если у вас отключены клавиатурные последовательности SysRq, выполнив от рута команду
echo c > /proc/sysrq-trigger
Если драйвер ВАШЕЙ аудиокарты настраивает её на циклическое воспроизведение буфера, не зависимо от его пополнения, то вы услышите зацикленный звук. Разумеется, возможен вариант, что драйвер настраивает её на однократное воспроизведение буфера при каждом пополнении, и тогда звук прекратится.
У меня на SB Live! звук успешно зацикливается :)

Что же касается задержки, jack и RT-ядра, то всё просто – если вы действительно обрабатываете реальный звук в реальном времени, то очень полезно уменьшить задержку в буфере, а для этого уменьшить буфер. Уменьшение буфера влечёт за собой повышение требований к оперативности пополнения буфера, а при экстремально коротком буфере (или сочетании просто короткого буфера с высокой загрузкой машины другими задачами) начинает даже требовать RT-ядра.
Natrio
Что бы вы ни говорили, я программировал звуковую карту на уровне регистров и прерываний, и потому я ЗНАЮ, как это работает. Ваши же представления об этом основаны лишь на УБЕЖДЕНИИ, что ТАК ДОЛЖНО БЫТЬ.
В точности до наоборот. Вы когда-то программировали, очень давно. И знаете как оно работало тогда. Вы отстали, и сильно. Мои же убеждения основаны на практическом опыте работы с современными звуковыми картами. Я слышу разницу на слух (кстати автор темы, от которой образовалась эта, ее тоже услышал). Между rt ядром, не rt ядром и Windows, на одних и тех-же звуковых картах. При наличии asio/jack и отсутствии. Ваши знания о вопросе, на существующий момент, даже не теоретические, а просто любительские.
Разница между ISA- и PCI-картами главным образом в том, что первые получали данные из буфера в памяти через DMA, а вторые проецируют свой буфер в непосредственно в доступное процессору адресное пространство. В любом случае звуковая карта воспроизводит звук САМА, без участия процессора, который лишь управляет ей и организует АСИНХРОННОЕ пополнение буфера.
В процессе работы звуковая карта еще и управляется в той или иной мере CPU. Может быть вы наконец подумаете зачем ей вообще DSP и как работают звуковые карты без DSP, то бишь большинство интегрированных? Чем управляются ЦАП-ы, АЦП, синтезаторы? Сами по себе работают что-ли?
Что же касается задержки, jack и RT-ядра, то всё просто – если вы действительно обрабатываете реальный звук в реальном времени, то очень полезно уменьшить задержку в буфере, а для этого уменьшить буфер.
Ага, все просто. Ну детский сад настоящий. Этот вопрос один из самых мутных и злободневных в звукорежессуре. И времени на его решение обычно уходит предостаточно. Вы бы хоть на форумы тематические сходили бы, что-ли… Он уже буквально исчавкан, но до конца решается лишь по ситуации.
Вставлю свои 5 коп.
Оба оппонента правы по своему.
Но не стоит забывать что есть два вида устройств!
1. думает само, а от проца получает небольшие корректировки.
2. безмозглое, напрягает проц по полной…
Все умолкаю, а то еще побьют… )))
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
Вставлю свои 5 коп.
Оба оппонента правы по своему.
Но не стоит забывать что есть два вида устройств!
1. думает само, а от проца получает небольшие корректировки.
2. безмозглое, напрягает проц по полной…
Все умолкаю, а то еще побьют… )))
Устройства из п.2 это вообще не звуковые карты, такие штуки презрительно называют “дырками”, и никакие уважающие себя любители хорошего звука таким Г не пользуются :)

yura_n, так как вы меня не слышите, и твёрдо считаете, что знаний “продвинутого пользователя”, достаточно, чтобы знать устройство аудиокарты, не читая даташитов, то спорить мне тут не с кем.
Разумеется, звуковая карта БЕЗ DSP это вообще не звуковая карта, как я уже сказал выше, и обсуждать их здесь бессмысленно.

Я предложил вам эксперимент, который на трёх имеющихся у меня звуковых картах приводит к описанному мной эффекту “зацикливания”. Если вам нечего на это возразить, не надо патетических рассуждений о “любительстве” и “профессионализме”. Пока вы не привели НИКАКИХ доводов, имеющих отношение к программированию аудиокарт, всё это лишь голословные утверждения и ссылки на домыслы и слухи.
Natrio
Пока вы не привели НИКАКИХ доводов, имеющих отношение к программированию аудиокарт, всё это лишь голословные утверждения и ссылки на домыслы и слухи.
Я вам и не собирался приводить НИКАКИХ доводов, имеющих отношение к программированию звуковых карт. Вы забыли о чем вообще шла речь. Это раз. Я не собираюсь “вешать” систему, что доказать вам неивестно что. Это два. И наконец…, вы знаете, есть такой компьютерный прикол, в котором говорится, что хакер может наступить на грабли даже если они лежат в сарае и заперты на замок, а ламер вообще граблей не замечает. Так вот вы не заметите грабли даже если покрасить их в красный цвет, оградить забором и поставить запрещающий знак. У вас совсем нет опыта работы со звуковыми картами. И в то, что вы когда-то программировали их я уже не верю, у вас серьезные проблемы с теорией. Дальнейший спор считаю бесполезным, вы толком не понимаете что я вообще говорю.
нда. ещё одно доказательство того, что никто не опозорит человека лучше, чем он сам! ;)
предлагаю тему завершить.
такие дела.
cucullus
нда. ещё одно доказательство того, что никто не опозорит человека лучше, чем он сам! ;)
Обычно подобные утверждения принято аргументировать.
 
Зарегистрироваться или войдите чтобы оставить сообщение.