Звуковой массив,.. миф или реальность?!
Модератор: Модераторы
Звуковой массив,.. миф или реальность?!
Уважаемое сообщество, помогите разобраться с вопросом по воспроизведению звуковых фрагментов в приложении...
Сейчас в свободное время делаю простенькую игрушку, и вот подходит время озвучить игровой процесс. Попробовал воспроизводить звуковой файл при помощи PlaySound (т.е. пока только для win), но столкнулся с одним крайне неприятным явлением: при первом проигрывании наблюдается заметное притормаживание при подгрузке файла с диска, при следующем проигрывании файла такого не наблюдается (по свей видимости читается из памяти)... и так с каждым звуком, а в аркаде их не один и не два.
Есть ли возможность заранее подгрузить все нужные звуки в некое подобие массива и потом их воспроизвести? (желательно только средствами lazarus, без привлечения сторонних библиотек).
Сейчас в свободное время делаю простенькую игрушку, и вот подходит время озвучить игровой процесс. Попробовал воспроизводить звуковой файл при помощи PlaySound (т.е. пока только для win), но столкнулся с одним крайне неприятным явлением: при первом проигрывании наблюдается заметное притормаживание при подгрузке файла с диска, при следующем проигрывании файла такого не наблюдается (по свей видимости читается из памяти)... и так с каждым звуком, а в аркаде их не один и не два.
Есть ли возможность заранее подгрузить все нужные звуки в некое подобие массива и потом их воспроизвести? (желательно только средствами lazarus, без привлечения сторонних библиотек).
Если делать всё без PlaySound, а проигрывать звук самому, то запросто.
Если интересует только Windows, погуглите по названиям апи функций WaveOutOpen, waveOutPrepareHeader, waveOutPrepareHeader.
Если интересует только Windows, погуглите по названиям апи функций WaveOutOpen, waveOutPrepareHeader, waveOutPrepareHeader.
Bupyc писал(а):Если делать всё без PlaySound, а проигрывать звук самому, то запросто.
Планируется кросс-платформенность, поэтому рано или поздно от PlaySound пришлось бы отказаться. Что есть "проигрывать звук самому"?
Andreich
Попробуйте засунуть звуки в ресурсы экзешника. Тогда не будет обращения к файлам, а все звуки загрузятся при запуске программы. Наверное...
Попробуйте засунуть звуки в ресурсы экзешника. Тогда не будет обращения к файлам, а все звуки загрузятся при запуске программы. Наверное...
Vadim писал(а):Andreich
Попробуйте засунуть звуки в ресурсы экзешника.
PlaySound умеет обращаться к ресурсам?
Добавлено спустя 5 минут 11 секунд:
Andreich писал(а): Что есть "проигрывать звук самому"?
Я ж Вам говорю, поищите примеры использования функций WaveOutOpen, waveOutPrepareHeader, waveOutPrepareHeader. Для проигрывания организовывается цикл и в цикле звуковой карте подсовываются блоки PCM данных из WAV файла. Структура WAV файла достаточно проста, поэтому вытащить из него данные не должно составить большого труда.
Если планируется кроссплатформенность, то я бы использовал готовую библиотеку. Точное её название не подскажу, но здесь на форуме информация о ней проскакивала.
Добавлено спустя 2 минуты 17 секунд:
Хммм ... действительно, PlaySound умеет проигрывать ресурсы. По крайней мере на MSDN об этом пишут. Не знал.
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Если планируется кроссплатформенность, то я бы использовал готовую библиотеку. Точное её название не подскажу, но здесь на форуме информация о ней проскакивала.
BASS. Бесплатна для некоммерческого. Для коммерческого - если постараться.
Bupyc писал(а):PlaySound умеет обращаться к ресурсам?
Ага... Если третьим параметром указать флаг SND_RESOURCE, то первым можно задать имя ресурса, а не файла.
- Little_Roo
- энтузиаст
- Сообщения: 639
- Зарегистрирован: 27.02.2009 18:56:36
- Откуда: Санкт-Петербург
Nik писал(а):BASS доступна только для Win32 и Mac OS X - для Linux версии нет (пока?).
.
Есть и для Linux - http://www.un4seen.com/forum/?topic=8682.0
1. BASS - кросс. Есть для Linux.
2. Не знаю ничего про FMod. Но знаю, что BASS простая, удобная и хорошо документированная. Причём, имеет широкие возможности (всякие 3D звуки, 5.1 там тоже имеются, но я не пробовал).
3. При коммерческом использовании, возможно купить лицензию.
Добавлено спустя 5 минут 21 секунду:
Да, посмотрел, FMod крутая библиотека. Ещё и дизайнер навороченный. Но возможности BASS схожи. Почти всё тоже самое, хотя и попроще.
Vadim писал(а):Попробуйте засунуть звуки в ресурсы экзешника. Тогда не будет обращения к файлам, а все звуки загрузятся при запуске программы. Наверное...
А каким образом их потом от туда проигрывать?
Руками или используя библиотеку. Так же, как это делают "сторонние программы". 
Audio Components Suite - вот крутая библиотека. Её крутизна заключается в том, что для неё не требуется дополнительных DLL- и so- и проч. файлов и библиотек, всё в исходниках.
Знаю я её. Не пользовал, но смотрел как-то... Вроде, не торт. Только под delphi и иже с ним.
А.Н., вы что-то кажется путаете. я использовал с Lazarus лично, в т.ч с линухом
