Комментарий к Статье Введение в OpenAL, и проигрывание музыкального формата OGG/Vorbis
В этой статье вы познакомитесь с программированием воспроизведения звука при помощи библиотеки OpenAL. Вы научитесь проигрывать потоки звуков, положение которых можно задавать в трёхмерном пространстве. Часть статьи посвящена воспроизведениию звука в формате OGG/Vorbis. К статье прилагается самодостаточный пример воспроизведения фоновой музыки и звука с положением в пространстве, совмещённым с графическим изображением источника звука.
Круто! особенно часть 2.
Некий Денис Ильин прислал коммент почтой:
Замечание к статье о библиотеке Open AL.
Статья очень хорошая, только в ней есть небольшой недостаток.
смотрим:
на первой странице:
pDevice = alcOpenDevice(NULL);
в общем то ясно, что pDevice - это указатель на какой то дивайс. Только
какой?!
Выше об этом ничего не сказано, а мысли автора читать на расстоянии
можно только по тому, что он написал. Хотелось бы что бы в статью было
внесено уточнение
(ну, типа определение pDevice).
Большое спасибо за внимание.
Денис
Блин! Молодец просто!
Автору бы с таким умищщем под линукс програмить... Если автор не против, то сюда:
http://plg.lrn.ru
Денису
Обращай большее внимание на комментарии. Я щедро здабривал исходный код ими. :)
И еше. Выдержка из статьи:
> Как вы видите, все довольно тривиально. В инициализации мы открываем звуковое устройство, заданное по умолчанию. В win32 системах
> используется DirectSound. Если вы хотите явно задать желаемое устройство, вместо NULL передайте строку с названием вашего устройства.
Также, в демонстрационном приложении есть специальная функция: GetSndInfo(), не освещенная в статье, которая возвращает информацию о используемом звуковом устройстве.
bEe_BrOTh
> Блин! Молодец просто!
Спасибо. :)
> Автору бы с таким умищщем под линукс програмить... Если автор не против, то сюда: http://plg.lrn.ru
Та не много там того умища. :) На счет ссылки, конечно, не против (если Вы это имели ввиду), но смотрите, чтобы администрация этого сайта была не против. :)
РУЛЕЗ! Спасибо!!
Дык администрация не против!!!
Я там как бы сам себе администрация!
Тоесть я владелец - чё хочу то и пишу :)
bEe_BrOTh
:) Я так понял, что администрация этого сайта имеется ввиду:)
в функции ReadOggBlock постоянно new, delete -- это, наверно, не очень эффективно.
wat
Да, вопросам оптимизации я таки мало внимания уделил. :)
шо-то у меня не работает этот ov_read под амд 64. :(
Статья, отличная.
Но у меня возникли проблемы, после компиляции на Builder'е 6.
При запуске программа выдавала Access violation.
Убрал объявление ifstream OggFile из класса remSnd в внутрь remSnd::LoadOggFile. Заработало. Почти :) . При потоковом воспроизведении External exception EEFFACE.
Вызывается в первом же remSnd::Update() > ReadOggBlock > ov_read > ReadOgg , а дальше где-то внутри File->read((char *)ptr, size * nmemb);
Если, кто знает что исправить (кроме моих кривых рук, и не переходя на VC++ :) ) пишите.
PS: Хотелось бы продолжения :). , многоканальное звучание, эффект Доплера, EAX расширение для OpenAL.
Я внимательно изучил статью "Введение в OpenAL, и проигрывание музыкального формата OGG-Vorbis", и нашел ее очень содержательной и полезной.
Спасибо.
Я в своей игре использую звуковую библиотеку OpenAL по примеру кода из вашей статьи.
И у меня возникли проблемы.
При запуске игры на 60% компьютеров все работает хорошо, а при запуске на 40% компьютеров возникает ошибка : "OpenAL error: Invalid Value".
Причем иногда на тех компьютерах, где игра выдавала ошибку, позже она запускалась...
Это для меня особенно странно.
Возможно, вы сталкивались с подобной проблемой ?
Помогите, пожалуйста, мне решить эту проблему.
если в looped поставить false, то звук вообще не проигрывается (ОГГ)
Денис
Вот, ну нашел к чему придраться. :-)
Ну неужели в alc.h, в конце концов, заглянуть нельзя, и узнать что же такое возвращает alcOpenDevice() - ну не void* же. :-)
vortex
Ну, статья очень даже неплохая, и хотя я давно её читал, значимоcти тогда особой не придал, а сейчас, когда звук собирался делать оч. даже выручила, так сказать.
Вот вопросы к автору есть:
1. (не относится к статье) Может ли скорость источника звука, двигающегося навстречу слушателю, превысить скорость звука. (Точнее, почему, когда это происходит у меня прога вылетает с ошибкой "Прога выполнила недопустимую операцию")
2. (по статье) Что означает эта строчка?
>BlockSize = ov_pcm_total(mVF, -1) * 4;
>произведения количества семплов несжатого файла (вызовом функции ov_pcm_total()), на длину >семпла
А почему длина семпла - 4 ? Может надо (mInfo->channels*2) ?
И попутный вопрос: а в ogg что, поддерживается только 16 битный звук?
wat
В обучающих статьях оптимизации лучше избегать - чтоб понятней было. Тут автор правильно сделал.
Тема в архиве.