Где можно почитать/посмотреть примеры работы с вводом/выводом звука в драйвере? Чтиво какое-нибудь не очень сухое..
Вот пример работы со звуком http://www.wasm.ru/article.php?article=drvw2k03 А вообще советую весь цикл почитать
Novi4ek под вин нет никакой работы со звуковой картой. Есть создание в памяти некоторого массива с частотами/длительностями, в форматах wav или midi - и потом проигрывание их штатными средствами, через АПИ. Я могу ошибаться (поскольку ни разу это не делал), но вроде бы так ) Драйвер - значит надо с Интела мануал по AC'97 или чему-то подобному, там порты, управляющие команды, и прочая-прочая, как раз для драйверописателей. Есть еще подозрение, что для разных звуковых карт разные порты и/или управляющие команды... Логично, что для других звуковых карт надо искать мануалы на сайтах производителей. 25275101.pdf Intel® 82801EB (ICH5) I/O 82801ER (ICH5R), and 82801DB (ICH4) Controller Hub: AC ’97 Programmers Reference Manual (PRM) Содержание: 1. Introduction 2. Overview 3. Intel® ICH5 AC ’97 Controller Theory of Operation - 3.1 Intel® ICH5 AC ’97 Initialization - 3.2 DMA Engines - 3.3 Channel Arbitration - 3.4 Data Buffers - 3.5 Multiple Codec/Driver Support - 3.6 Power Management 4. Surround Audio Support - 4.1 Determine Codec’s Audio Channels - 4.2 Enabling Intel® ICH5 AC ’97 Controller Audio Channels 5. 20-Bits PCM Support 6. Independent S-P/DIF Output Capability 7. Support for Double Rate Audio 8. Independent Input Channels Capability 9. Intel® ICH5 AC ’97 Modem Driver
я же не собираюсь писать драйвер звуковой платы, я просто хочу работать со звуком в реальном времени с минимальной задержкой между тем временем когда я захотел подать/считать звук и тем временем когда это собственно произойдет (из драйвера). Разве нельзя это как-то сделать, используя уже существующий драйвер звуковой платы?
Novi4ek Время реакции человеческого мозга на изменение внешней информации - порядка 0.2 сек. Поэтому желание гонятьяся за микросекундами выглядит немножко забавно, если не... А нет ли, случайно, желания использовать саундбластер в качестве измерительной карточки, ы?
Ребят, ну зачем этот оффтоп? Я написал то что меня интересует, зачем мне это надо разговор дела не касается. Я кстати нашел форум, целиком и полностью посвященный тематике звука в ядре виндоус. если кому интересно могу дать ссылку.
Novi4ek Ещё вроде SI умеет играть звук в ядре. Но ни когда этим сильно не интересовался, юзер мода вполне хватало. Ссылку давай, посмотрим. Может замутим дровину - плейер. Ну а в реальном времени играть звук в винде - это перебор. Современные карты играют его без CPU, через DMA, загрузкой в свою память. А софтварный звук совсем устарел.
В открытой библиотеке PortAudio www.portaudio.com , есть фронт-енд сквозного канала (ввод/вывод), использующий KS (kernel streaming). Сия технология, замороченая на COM/WDM/GUID (и прочие мракосаксонские вкусности), использует вызовы DeviceIOControl для прямого доступа к WDM дровам, (коих там целый легион)... Кой какая дока есть в KS-Sample (гуглиться на сайте негрософта) Пример генерирует только звук, и иногда BSOD
Это совсем не оффтоп. Звуковые карты и чипы имеют стандартную систему команд и программируются через порты. Быстрей этого просто ничего нет. Отсюда и возникло: _зачем_ нужно решать задачу, и корректо ли вообще поставлен вопрос. Тем более, что речь уже пошла про "ядро", "драйвера", "библиотеки", "сквозные каналы" и т.п.
А насколько это вообще хорошо, работать с картой непосредственно через dma/прерывания и т.д. в ОС windows? Нельзя ли добиться схожей производительности, используя какие-то ядерные интерфейсы, которые предлагает microsoft для разработчиков драйверов?
Что ты вообще понимаешь под производительностью звуковой карты? У подавляющего большинства карт "производительность" - 44100 отсчётов в секунду по 16 бит по 2(4,5,8... ненужное зачеркнуть) канала(ов). Разгону не поддаётся Нужна большая частота - паяешь свою плату на сверхбыстродействующем ЦАП, вставляешь в шину и гонишь сигнал хоть с максимальной частотой 600+ МГц (или какая сейчас самая крутая частота шины) Для работы со звуком в винде имеется API. Для прямой рабоы с чем-либо нужно найти на него документацию. Соответственно нужны доки по шине\чипсету и собственно устройству, с которым нужно работать. Если допустить, что звуковая карта Sound-blaster совместимая (но мне кажется, что её ещё нужно поставить в этот режим) то программировать её несложно и документации по этому делу навалом, в том числе и на руском языке.
Параметры карты меня устраивают, меня интересует скорость общения с ней из драйвера. Это я и понимаю под производительностью. Видел я и документацию по программированию саунд бластера и совместимых карт, а теперь плз см. выше...
Novi4ek А в чем собственно проблема качаем DDK и разбираемся. Можно, берешь и используешь. Только смысла нет. Человеческое ухо не заметит задержки даже если ты будешь подовать команды из приложения.
Novi4ek Сам себе противоречишь Вначале заявляешь Код (Text): работы с вводом/выводом звука в драйвере? То бишь нужен драйвер Далее пишешь Код (Text): я же не собираюсь писать драйвер звуковой платы, я просто хочу работать со звуком в реальном времени... То есть хочешь не написав ни строчки ядерного кода работать в реал таймс ... (извинине , ну не бред ли... ) Далее тебе предложили юзать готовые дрова и даже обращения к дровам средствами API - так нет же... не то. Далее мега тупость Код (Text): меня интересует скорость общения с ней из драйвера. Вот это как раз и не должно тебя интересовать, так как тебе ж он не нужен (свой драйвер то , сам так сказал что не хочешь писать) А готовые написаны грамотными людьми. И скорость общения из драйвера - ну она будет такой, что можно 5 звуковух сразу юзать... (раз уж из приложения можно нормально контроллировать) ИМХО не шаришь...
TermoSINteZ, мне ненужен драйвер звуковой карты, мне нужно общение с ним из моего драйвера, что тут непонятного?\ >>ИМХО не шаришь... Это следует из моего ника. -------------------------------------------- А как определить какое irq и базовый порт использует звуковая карта?
Хм... по теме вопрос возник. Звучать спикером умею) А вот де почитать про то, как заставить звуковуху проиграть определенную частоту при определенной длительности ? Драйвер мне не надо :-0 Юзер мода надеюсь будет достаточно ? вроде ф-ии BOOL Beep( DWORD dwFreq, DWORD dwDuration); ? Хм.. и вот еще в добавок... желательно чтобы можно было одновременно играть несколько частот
>>А вот де почитать про то, как заставить звуковуху проиграть определенную частоту при определенной длительности? waveOut*** >>Юзер мода надеюсь будет достаточно ? Да, но зачем писать в этой теме?..