Работая над проектом уютненькой аркады, я с сожалением обнаружил что
OpenAL отбирает слишком много моего времени. Мало того, что для него пришлось написать менеджер звуков о полутора тысячах строк кода, так ещё и приходилось бороться с разного рода чёрной магией. (Например реализация от nvidia намертво вешала венду) Поэтому, я внезапно решил что потратил на него достаточно времени и написал свой собственный велосипед, который и был успешно обкатан в поле, и выпущен с открытыми исходниками на sourceforge.
Вообще, наше ухо не такое уж и хитрое устройство. Позицию источника ухо определяет двумя способами. В горизонтальной плоскости звук приходит в одно ухо чуть раньше чем в другое. Простая тригонометрия умноженная на диаметр головы и дело в шляпе! :)
Второй способ уже куда сложнее — голова имеет разную плотность и разные технологические отверстия, следовательно, спектр звука искажается по разному в зависимости от направления вхождения сигнала. Было много попыток сделать эталонную голову(ничего постыдного, даже Стив Джобс делал это), заполнить её желеобразным заменителем мозга и померить искажения эталонного звука, например проект
KEMAR из MIT.
Мой проект называется Clunk, и умеет практически всё, что необходимо уметь звуковой библиотеке:
- Бесконечное количество всего: музыкальных потоков (SDL_Mix умеет только один, например), объектов и именованных источников звука прикреплённых к объектам или слушателю.
- Простое апи на c++. (В OpenAL вы вынуждены сами перестраивать сцену, для того чтобы перекинуть 16 источников поближе к слушателю, рестартуя источники (sic), ещё рекомендую посмотреть примерчик «как сделать фоновую музыку на OpenAL», ~полтыщи строк кода =-O ) )
- HRTF, HDT описанные выше(собственно 3d звук)
- Поддержка всех distance models (падение громкости в зависимости от расстояния) из OpenAL
- Опциональная оптимизация под процессоры с технологией SSE
- Эффект допплера
- Должно работать под всеми платформами где есть SDL, не содержит платформно-зависимого кода.
- Лицензия LGPL 2.1 — можно использовать в коммерческих продуктах.
Адрес проекта на sf.net:
https://sourceforge.net/projects/clunk
Если вам интересно, можно смело писать мне в icq, я готов ответить на любые вопросы.