Звуковой модуль. Девять кругов ада. (комментарии)
Это сообщение сгенерировано автоматически.
Жаль разочаровывать, но в висте и Win7 нет никакого аппаратного звука.
Так что решением проблемы это будет исключительно под XP.
В програмировании не силён, но кое какой опыт в микшировании звука у меня есть, так что есть подозрения почему так происходит.
1) Суммарная громкость всех проигрываемых звуков не должна превышать 100%
2) Если проигрываются одинаковые звуки от разных источников, то неплохо было бы их проигрывать хоть с какой то задержкой друг относительно друга.
3) Использовать pitch в чистом виде при софтварном обсчёте не самая лучшая идея. Честный способ довольно таки русурсоёмок, а "быстрые" могут давать всяческие артефакты, либо вобще просто дублировать или отрезать куски звука в зависимости от того что надо сделать. Советовал бы использовать какой нить свой алгоритм для этого.
B.F.
>Жаль разочаровывать, но в висте и Win7 нет никакого аппаратного звука.
>Так что решением проблемы это будет исключительно под XP.
Блин.. надо будет потестить... иногда из-за таких тупняков у меня руки начинают опускаться
B.F.
>В програмировании не силён, но кое какой опыт в микшировании звука у меня есть,
>так что есть подозрения почему так происходит.
>1) Суммарная громкость всех проигрываемых звуков не должна превышать 100%
С громкостью всё окей, потрескивает при отсутствии аппаратного звука только SetPitch..
>2) Если проигрываются одинаковые звуки от разных источников, то неплохо было бы
>их проигрывать хоть с какой то задержкой друг относительно друга.
С этим тоже вроде траблов нету, т.к. для каждого эффекта задан небольшой случайный pitch, для большей вариативности звука.
>3) Использовать pitch в чистом виде при софтварном обсчёте не самая лучшая
>идея.
Ну а какие варианты то? Для моторов полюбому он нужен. Причём с постоянным обновлением.Для остальных звуков его использую только один раз при начале воспроизведения.
>Честный способ довольно таки русурсоёмок, а "быстрые" могут давать
>всяческие артефакты, либо вобще просто дублировать или отрезать куски звука в
>зависимости от того что надо сделать. Советовал бы использовать какой нить свой
>алгоритм для этого.
Какие алгоритмы то например? Я и так туда имплементировал отрубание тихих источников, запрещение изменения питча для не важных источников и т.д.
Думаешь стоит ограничить количество одновременно воспроизводимых звуков? Но этож такая жесть....
Протестил на Висте, вроде всё ок..
XIRMAC
Не понимаю почему все стремятся для звука использовать какие-то непонятные либы...
Ведь нет ничего сложного, чтобы написать свой мини-модуль для работы с 3D-звуком
на основе DirectSound3D напрямую... Там совсем ничего сложного нет.. Подобный
модуль я писал за день...
DEN 3D
>XIRMAC
>Не понимаю почему все стремятся для звука использовать какие-то непонятные
>либы...
>Ведь нет ничего сложного, чтобы написать свой мини-модуль для работы с
>3D-звуком
>на основе DirectSound3D напрямую... Там совсем ничего сложного нет.. Подобный
>модуль я писал за день...
Cо стриммингом с диска, с менеджментом каналов, с поддержкой треккерных форматов, с EAX... и всего за день? :)
Да даже мне и один день дорог (а вспоминая как я прогал на DirectSound - это там далеко не один день чтобы сделать все нужные фичи). Чёрную низкоуровневую работу стараюсь делать с помощью чужих библиотек.
XIRMAC
Ну стриминг с диска я пока не трогал - ИМХО он нужен только для проигрывания музыки (больших звуковых данных).
А для проигрывания коротеньких звучков вроде выстрелов и взрывов можно и целиком в память данные ложить...
Менеджмент каналов уже есть в DS3D - причём как и софтварный, так и аппаратный (и выбирается автоматически в за-
висимости от возможностей звучки). Число программных каналов там не ограничено, что очень радует (знаю, что в не-
которых либах их не больше 10-20).
Трекерные форматы - эт я так понимаю для музыки) Поэтому это отдельная тема)
EAX - это вообще другое API, зачем оно, если у всех есть поддержка DS3D? :)
>Какие алгоритмы то например? Я и так туда имплементировал отрубание
>тихих источников, запрещение изменения питча для не важных источников и т.д.
Я имел в виду софтварный обсчёт самого питча. Чтобы на микширование шли уже готовые звуки.
Может даже стоит сделать несколько зарание подготовленых звуков.
Эта библиотечка кстати своими средствами питч считать умеет?
>Думаешь стоит ограничить количество одновременно воспроизводимых звуков?
>Но этож такая жесть....
Если дело в количестве, то стоит проверить при каком количестве звуков в софтваре начинает глючить.
DEN 3D
>EAX - это вообще другое API, зачем оно, если у всех есть поддержка DS3D? :)
Это вопрос из разряда:
А зачем вам DX3D, если можно в софтваре считать?
B.F.
DS3D имеет аппаратную поддержку при её наличии в железе.
Кстати, насчёт изменения питча - это есть не что иное как изменение частоты, в DS3D я делал через метод SetFrequency - там можно любое значение загонять до опред. лимита. Работает быстро. Я у себя использую для симуляции звука двигателя машины при наборе скорости. Довольно реалистично звучит. А делать набор звуков с разными питчами - это гон.
>DS3D имеет аппаратную поддержку при её наличии в железе.
Имела.
начиная с висты есть только софтвар.
DEN 3D
>Кстати, насчёт изменения питча - это есть не что иное как изменение частоты,
Капитан Очевидность? :)
>DS3D я делал через метод SetFrequency - там можно любое значение загонять до
>опред. лимита. Работает быстро.
Ну так аудиер и использует по дефолту direct sound и наверно этот же SetFrequency для изменения питча\частоты. (может ещё через winmm рабобтать но там ужас со звуком)
>Я у себя использую для симуляции звука
>двигателя машины при наборе скорости.
Ну так я для тогоже использую)) Вообщем когда 20-30 роботов проигрывают звук мотора, иногда появляются щёлкающие звуки...
> Довольно реалистично звучит. А делать
>набор звуков с разными питчами - это гон.
Да, если квантовать - придётся 1000 вариантов делать.. иначе будут слышны переходы
B.F.
>Если дело в количестве, то стоит проверить при каком количестве звуков в
>софтваре начинает глючить.
Да там ещё от паннинга и громкости сильно зависит... вообще я во многих коммерческих гамесах такие артефакты звука слышал))
Вообщем пока оставлю как есть, если будет потом сильно не радовать - буду переползать на чтото другое...
Я с год назад в XAudio2 ковырялся.
Именно потому, что ДиректСаунд устарел серьёзно. Под Висту мелкомягкие, кажись, не рекомендуют использовать.
Вообще с подобными эффектами в звуке много досадных граблей. Здесь правильнее всего мидлваре использовать. Уповая на то, что разработчики часть косяков уже обошли. Печально, что адекватные разработки в данном направлении стоят недёшево.
Тема в архиве.
| Winrating.ru/stats/team/39177 winrating.ru |