Расчет 3д-параметров звука

Если кто может, то поделитесь пожалуйста опытом в написании собственных алгоритмов расчета параметров 3д звука - матрицы трансформации, уровня доплера, уровня низкочастотного фильтра и уровеня реверберации.

В данный момент для этого используется библиотека XAudio2, но есть желание написать что-то свое.

Пока единственно что было найдено по теме эта ссылка на ixbt, но там больше теории чем практики.

Последняя правка: пн, 29/08/2011 - 22:14
Submitted by Victor on

Комментарии

При программировании многоканального звука начните с OpenAL (основа C/C++, есть врапперы и под .NET).

Библиотека (open source) есть в исходниках и там производится расчет 3D звучания с учетом координат.

Если брать мой опыт то действительно это работает. Есть даже поддержка со стороны звуковых плат и их детект.

Для программиста есть OpenAL SDK.Под платформу windows она реализована поверх Direct Sound.

Использовал совместно с XNA/.NET как C++ CLI assembly.

Submitted by Necro on
В смысле своё? Ну т.е. вся работа с 3д-звуком сводится к выставлению пачки параметров в API, каковое на PC кстати ровно одно -- EAX, обёрнутый либо в OpenAL либо в DS3D/XAudio. Рассчитывать всё это самому программно -- безумие.
Submitted by BLK Dragon on
Обычно при разработке спрашивают сколько стоит 3D звук (в смысле сколько он отбирает ресурсов). Ну и тут не все так хорошо как хотелось бы. По моим тестам проблема начинается при больше 64 источников звуков (для моего случая). Т. е. тогда когда звук "рендериться" или микшируется если так можно сказать софтово.

А вот больше 256 источников я вообще трудно себе представляю.

Зачем это надо - представьте себе вы заходите в бар с пулметом и расстреливайте стеклянные бутылки (много бутылок). Во всех играх вы будете слышать всех раздражающий один сэмпл идущй из одной точки. А правильно должно быть многоголосие. Тоже если расстреливать предметы имеющие затухающие по амплитуде звучание как например колокола. Я думаю суть проблемы понятна.

Submitted by Necro on

Можно просто почитать доки по железкам и вопросы отпадут -- например, в типовых встроенных интеловских карточках последних лет пять обычно 32 hardware voice, соответственно всё что свыше будет начинать потиху тормозить (на креативах эта циферка обычно с 64 начинается). На тех же типичных карточках гарантированно есть EAX1 и с приличной вероятностью EAX2 -- т.е. как минимум позиционирование и затухание звука можно смело делать.

За все игры говорить не стоит -- как правило таки есть 2-5 вариаций каждого звука, даже во времена PS2 те же шаги перса имели 2-3 варианта. И звуки из одной точки делают только в пост-совке, да и то уже наверное не делают.

Submitted by BLK Dragon on
Quote:
BLK Dragon писал(а):
В смысле своё? Ну т.е. вся работа с 3д-звуком сводится к выставлению пачки параметров в API, каковое на PC кстати ровно одно - EAX, обёрнутый либо в OpenAL либо в DS3D/XAudio. Рассчитывать всё это самому программно - безумие.


Может и безумие. Просто есть идеи которые можно реализовать только используя свой "рендер" звука, к сожалению, на базе стандартных API эти задумки не реализуешь.

Сейчас для просчета 3д параметров, используем X3DAudio, но линковать его к проекту только ради этого как-то не хочется, поэтому и интересно как самим просчитать параметры 3д-звука.

Submitted by Victor on

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

Submitted by BLK Dragon on
OpenAL.

Особенно приятно использовать по-соседству с OpenGL.

Submitted by georgmay on
Quote:
BLK Dragon писал(а):
"Программно рендерить" звук можно только если есть дофига процессорной мощи, которую (почти) некуда деть -- PS3 SPU например, на PC такой программный рендер будет тормозить просто аццки. Не говоря уже о том, что пишется оно небыстро.
Может быть. А может и нет. Поэтому и хочется разобраться в алгоритмах которыми общитывается 3д звук.
Submitted by Victor on

Так кроме общефилософских разговоров на тему "покатит/непокатит", кто-нибудь может что-нибудь подсказать по теме топика?

Submitted by Victor on

Так здесь были музыканты, думаю лучше спросить их, возможно подскажут.

Submitted by S.I.M. on
Quote:
S.I.M. писал(а):
Так здесь были музыканты, думаю лучше спросить их, возможно подскажут.
Думаю вопрос лежит вне области компетенции музыкантов, это больше к физикам/математикам/программистам.
Submitted by Victor on

Извените, со звуком сталкивался лишь при замене озвучки юнитов, и не просто замена файликов, а написание нового архивчика, нарезка его на части, вписание их в базу... так что ничем больше помочь не могу, мне хватило и той мути. Впредь буду искать того кому это будет хотя бы приятно.

Submitted by S.I.M. on

опенсорс проект по сабжу: http://slab3d.sonisphere.com/

Submitted by lex_ on
Quote:
lex_ писал(а):
опенсорс проект по сабжу: http://slab3d.sonisphere.com/
Спасибо за линк.
Submitted by Victor on

GameDev.by