Низкоуровневое программирование звука в Windows
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 13.07.03 14:17
Оценка: 235 (10)
Статья:
Низкоуровневое программирование звука в Windows
Автор(ы): Евгений Музыченко
Дата: 10.07.2003
В отличие от MS DOS, термин "низкоуровневое" в Windows означает не манипуляцию регистрами, прерываниями и каналами DMA, а просто самый элементарный уровень сервиса, обычно предоставляемого непосредственно драйвером устройства. В нашем случае таким устройством обычно является звуковой адаптер (карта), хотя Windows совершенно безразлично, откуда драйвер берет вводимый звук и куда девает звук выводимый. Существует, например, драйвер для вывода произвольного звука на встроенный динамик (PC Speaker), а также виртуальные драйверы, которые просто перенаправляют звуковые потоки другим драйверам или программам.


Авторы:
Евгений Музыченко

Аннотация:
В отличие от MS DOS, термин "низкоуровневое" в Windows означает не манипуляцию регистрами, прерываниями и каналами DMA, а просто самый элементарный уровень сервиса, обычно предоставляемого непосредственно драйвером устройства. В нашем случае таким устройством обычно является звуковой адаптер (карта), хотя Windows совершенно безразлично, откуда драйвер берет вводимый звук и куда девает звук выводимый. Существует, например, драйвер для вывода произвольного звука на встроенный динамик (PC Speaker), а также виртуальные драйверы, которые просто перенаправляют звуковые потоки другим драйверам или программам.
Re[4]: Низкоуровневое программирование звука в Windows
От: emusic Франция https://software.muzychenko.net/ru
Дата: 12.01.06 16:29
Оценка: 6 (1)
Здравствуйте, Ash-2, Вы писали:

A2>Я считал, что DirectSound — надстройка над "низкоуровневыми функциями" (+ программная эмуляция)


Ну да. Это такой весьма удачный интерфейс, практически один-в-один повторяющий организацию аппаратуры, и в то же время — вполне себе высокоуровневый. Программная эмуляция там используется только в режимах совместимости, когда аппаратура что-то не поддерживает (смешивание, например).

A2>а) ресурсов надо больше

A2>б) быстродействие ниже (намного или нет — не важно).

Когда DirectSound только начинался, действительно было мало поддерживающих его драйверов, и для таких устройств он эмулировался поверх MME. В 98/2k и выше ситуация обратная: практически все драйверы сделаны в стандарте WDM, уровень DirectSound находится непосредственно над ним, а вот MME уже сделан достаточно криво, и его эффективность может быть существенно ниже, чем в 95/NT4.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Низкоуровневое программирование звука в Windows
От: emusic Франция https://software.muzychenko.net/ru
Дата: 12.01.06 18:22
Оценка: 6 (1)
Здравствуйте, Ash-2, Вы писали:

A2>Только, что-то меня настораживает "нестабильность" версий DirectX:

A2>- части то сливаются, то вроде бы планируется обратный процесс;

В DirectSound ничего не менялось уже много лет. Появился только DirectSound 2.0, в котором некоторые функции расширены, но его использовать никто не заставляет — для задач, которым хватает MME, базового DS хватит по уши.

A2>- если я пишу изначально для 8-ой версии (vc7.1), то будет ли это работать на предыдущих (у них ведь и интерфейсы постоянно меняются).


Обратной совместимости никогда не гарантировалось. Выберите минимально подходящую версию, и используйте ее.

A2>не было ли проблем с сопровождением программ (написанных лет 5-7 назад) из-за DirectX'а?


Не надо путать DirectSound и DirectX, в котором есть еще много чего Я не встречал ни одной программы, грамотно использующей DirectSound образца 97-98 годов, с которой на последующих версиях возникали бы проблемы. А проблем из-за кривизны определенных версий DirectX никто не отменял, равно как и проблемы кривизны определенных сервиспаков
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Низкоуровневое программирование звука в Windows
От: Аноним  
Дата: 14.07.03 08:07
Оценка:
Перевод MSDN и не более.
Re: Низкоуровневое программирование звука в Windows
От: swamp Россия  
Дата: 14.07.03 10:15
Оценка:
Здравствуйте, Евгений Музыченко,

Очень интересно, что означает отрицательная амплитуда? Это в каком смысле?
Sincerely yours,
Andrew Simontsev.
Re[2]: Низкоуровневое программирование звука в Windows
От: Аноним  
Дата: 14.07.03 10:40
Оценка:
Здравствуйте, swamp, Вы писали:

S>Очень интересно, что означает отрицательная амплитуда?

S> Это в каком смысле?

В классическом. Отрицательное амплитудное значение.
Re[3]: Низкоуровневое программирование звука в Windows
От: swamp Россия  
Дата: 14.07.03 11:01
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, swamp, Вы писали:


S>>Очень интересно, что означает отрицательная амплитуда?

S>> Это в каком смысле?

А>В классическом. Отрицательное амплитудное значение.



Все-таки мне непонятно как это может быть. Мне почему-то казалось, что с точки физики амплитуда всегда положительная величина (как например сила или что-нибудь в этом роде). Что знак у амплитуды обозначает с "бытовой" точки зрения?
Sincerely yours,
Andrew Simontsev.
Re[4]: Низкоуровневое программирование звука в Windows
От: emusic Франция https://software.muzychenko.net/ru
Дата: 14.07.03 11:22
Оценка:
Здравствуйте, swamp, Вы писали:

S> мне почему-то казалось, что с точки физики амплитуда

S> всегда положительная величина (как например сила или
S> что-нибудь в этом роде).

Если говорить предельно строго, как излагается в теории периодических колебаний, то амплитуда — действительно положительная величина, обозначающая МАКСИМАЛЬНЫЙ размах от нуля. Но в электро- и радиотехнике вполне устоялось основное значение термина "амплитуда" в смысле мгновенной, текущей величины. Часто используется выражение "максимальная амплитуда", хотя, с точки зрения физики, это просто "амплитуда". А мгновенное амплитудное значением может быть и положительным, и отрицательным.
Re[2]: Низкоуровневое программирование звука в Windows
От: emusic Франция https://software.muzychenko.net/ru
Дата: 14.07.03 12:29
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Перевод MSDN и не более.


Хм, а какие из известных Вам книг/статей о ДОКУМЕНТИРОВАННЫХ функциях программных систем не являются переводом (точнее — пересказом) документации производителя? Иначе говоря, что есть "более"?
Re: Низкоуровневое программирование звука в Windows
От: Ash-2 Россия  
Дата: 12.01.06 13:49
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

Прекрасная статья!

Хотелось бы услышать комментарии к следующей задаче:
нужно воспроизводить короткие звуковые файлы (< 1мин), форматы — PCM, MP3 и д.р. ОС от Win2k и выше. Так же очень желательно: задействовать минимум ресурсов и высокое быстродействие.
Было выбрано именно "Низкоуровневое программирование..." (waveOutxxxx),
ОДНАКО немного мучает вопрос: а может быть стоило воспользоваться DirectSound?
Что Вы думаете?

Заранее СПАСИБО!
Re[2]: Низкоуровневое программирование звука в Windows
От: emusic Франция https://software.muzychenko.net/ru
Дата: 12.01.06 14:08
Оценка:
Здравствуйте, Ash-2, Вы писали:

A2>ОС от Win2k и выше. Так же очень желательно: задействовать минимум ресурсов и высокое быстродействие.

A2>Было выбрано именно "Низкоуровневое программирование..." (waveOutxxxx),
A2>ОДНАКО немного мучает вопрос: а может быть стоило воспользоваться DirectSound?

Безусловно, при таких условиях однозначно показан DirectSound.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Низкоуровневое программирование звука в Windows
От: Ash-2 Россия  
Дата: 12.01.06 15:38
Оценка:
Здравствуйте, emusic, Вы писали:

>Безусловно, при таких условиях однозначно показан DirectSound.

Опа...
А можно пару слов почему? (т.к. я еще имею возможность переделать)
Я считал, что DirectSound — надстройка над "низкоуровневыми функциями" (+ программная эмуляция), т.о.:
а) ресурсов надо больше
б) быстродействие ниже (намного или нет — не важно).
Re[5]: Низкоуровневое программирование звука в Windows
От: Ash-2 Россия  
Дата: 12.01.06 17:27
Оценка:
Здравствуйте, emusic:

Спасибо за оперативные ответы!
Re[5]: Низкоуровневое программирование звука в Windows
От: Ash-2 Россия  
Дата: 12.01.06 17:36
Оценка:
Здравствуйте, emusic, Вы писали:

Еще один вопрос

E>В 98/2k и выше ситуация обратная: практически все драйверы сделаны в стандарте WDM, уровень DirectSound находится непосредственно над ним, а вот MME уже сделан достаточно криво, и его эффективность может быть существенно ниже, чем в 95/NT4.

Вы меня почти убедили, что надо переписать под DirectSound.

Только, что-то меня настораживает "нестабильность" версий DirectX:
— части то сливаются, то вроде бы планируется обратный процесс;
— если я пишу изначально для 8-ой версии (vc7.1), то будет ли это работать на предыдущих (у них ведь и интерфейсы постоянно меняются).
Собственно вопрос:
не было ли проблем с сопровождением программ (написанных лет 5-7 назад) из-за DirectX'а?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.