Звуковой массив,.. миф или реальность?!

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Вот про BASS для Linux, увы, не знал - на сайте про ней не слова, да и на форуме только сама библиотека (не самой свежей версии). Что касается выбора между BASS и Fmod - то это дело вкуса. Я сам уже 6 лет с BASS работаю (пока только под Win) - всё более чем устраивает :)
А.Н.
постоялец
Сообщения: 230
Зарегистрирован: 13.03.2010 11:23:58

Сообщение А.Н. »

Исходники на Pascal. Использовать даже с CBuilder уже не получится. :-(
Andreich
постоялец
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Сообщение Andreich »

Nik
А где можно глянуть минимальный пример по использованию BASS для Lazarus (желательно в русскоязычном варианте)?
Например загрузка и воспроизведение маленького wav файла...
А.Н.
постоялец
Сообщения: 230
Зарегистрирован: 13.03.2010 11:23:58

Сообщение А.Н. »

Там хорошая документация и, вроде бы, есть примеры. Скачайте архив и смотрите. К тому же, в сетке где-то валяется статья про использование BASS. А в lazarus или нет - разницы никакой.
Аватара пользователя
FedeX
постоялец
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение FedeX »

Могу скинуть исходники своей недописанной кроссплатформенной звуковой библиотеки. Она работает и под Linux и под Windows. Для воспроизведения под Вин использует DirectSound или OpenAL (по выбору), для Линукс - только OpenAL. Умеет декодировать Ogg (если скомпилировать с соответствующим ключом и положить - под вин - в папку с приложением несколько длл с кодеком). Все файлы для проигрывания сначала загружаються в память, а уже потом из памяти могут неоднократно очень быстро воспроизводиться (причём используеться память аудиокарты, если доступна - она бывает на некоторых оч. дорогих аудиокартах). В отличие от PlaySnd можно проигрывать одновременно несколько звуков и они аппаратно (аудиокартой) микшируються. Есть возможность даже позиционировать источники звука в 3Д пространстве.
Но в библиотеке только начата поддержка потокового аудио (например длинный трек музыки, можно будет не грузить сразу весь в память - в расжатом виде это много - а одновременно читать с диска и сразу воспроизводить).

правка
Вообщем вот, если надо путь к SVN:
https://phloxlib.svn.sourceforge.net/sv ... hloxlib/HF

Туда я недавно залил последнюю версию, но не обновлял её уже давно (около двух лет). Библа устроена так чтоб использоваться как отдельная длл (со), но может быть и прикомпилирована к проекту.
Andreich
постоялец
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Сообщение Andreich »

FedeX
Спасибо! Особенно заинтересовало использование OpenAL, раньше с ним не работал.
Возможно, попробую обойтись первое время без движка как такового, на чистом OpenAL (надо только посмотреть, как он себя в Linux ведет).

Нашел интересную и весьма понятную статейку по OpenAL на GameDev.ru, как раз для начинающих работать со звуком! Проверил пример на Lazarus - все отлично работает, звук играет,.. красота. :)

Кому интересно, прикладываю пример проекта в lazarus (воспроизводится wav-файл). Инсталятор OpenAL для Windows можно взять здесь.

P.S. Если нетрудно, кто под Linux, отпишитесь как оно там работает.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
FedeX
постоялец
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение FedeX »

Под Линухом все должно быть гуд. Жаль я сейчас не под ним проверить не смогу(
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

Есть ли возможность заранее подгрузить все нужные звуки в некое подобие массива и потом их воспроизвести?
А в чем проблема ? Навскидку :

Код: Выделить всё

type
  pbyte: ^byte;

var 
 wav1_len: integer;
 [..]
 wavN_len: integer;
 all_wavs: array[0..wavs_cnt] of pbyte;

-------------
 wav1_len:= read_snd_file(snd_file1, all_wavs[0]);
 [...]
 wavN_len:= read_snd_file(snd_fileN, all_wavs[N-1]);
------------
[...]
 wav_play_proc(all_wavs[X],wavX_len);
Andreich
постоялец
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Сообщение Andreich »

В примере, который я выложил выше, используется один OpenAL источник и соответственно обрабатывается один звуковой файл... Но ничто не мешает сделать массив и загрузить несколько файлов, а затем воспроизводить нужный элемент, причем возможно воспроизводить звук из нескольких источников одновременно. Я уже проверил этот вариант! Так что можно с уверенностью говорить, что звуковой массив - реальность (причем кросс-платформанная). :)
kosteek
постоялец
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Сообщение kosteek »

Вот пример который может воспроизводить звуковой массив через OpenAL. (Код сыроват).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
minoshi
постоялец
Сообщения: 279
Зарегистрирован: 17.05.2008 21:23:38

Сообщение minoshi »

Andreich писал(а):FedeX
P.S. Если нетрудно, кто под Linux, отпишитесь как оно там работает.


не работает
консоль вывалила только две строки при сборке

Код: Выделить всё

[TMainIDE.DoRunProject] A
TMainIDE.DoInitProjectRun A True -1
alex208210
постоялец
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Сообщение alex208210 »

FedeX
P.S. Если нетрудно, кто под Linux, отпишитесь как оно там работает.

linux sabayon(gentoo), fpc 2.4.4 .. демка работает звук играет..

Вот пример который может воспроизводить звуковой массив через OpenAL. (Код сыроват).

Этот тоже работает
Ответить