BeaRLibSound - звуки и мелодии в рогалике

Форум библиотеки BeaRLib

Модератор: Apromix

Ответить
Аватара пользователя
Apromix
Мастер
Сообщения: 1154
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

BeaRLibSound - звуки и мелодии в рогалике

Сообщение Apromix » 11 апр 2013, 18:39

Обычно рогалики беззвучны. Предлагаю написать музыкальную библиотеку, которая позволит озвучить любой рогалик наименьшими силами. Имхо, нужно буквально несколько методов, не нужно саму либу сильно усложнять. Кто возьмется? :D
Изображение Изображение

Аватара пользователя
Uvadzucumi
Сообщения: 365
Зарегистрирован: 29 ноя 2011, 07:13
Откуда: Дубай, ОАЭ (Минск, Беларусь)
Контактная информация:

Re: BeaRLibSound - озучиваем рогалик

Сообщение Uvadzucumi » 19 апр 2013, 16:25

тут вопрос, как проигрывать звук? слава богу спикер и порты ввода вывода ушли в небытие, но тогда:
winapi, directsound - только в винде
alsa - только линукс (возможно макос, не знаю - что там у них)
openal - дополнительную либу тягать (в винде), зависимость - в линуксе

соответственно придется или жестко привязать либу к опреционке, или 2 либы писать при сборке компилится необходимая часть... т.е. грубо говоря нужна ли либа звуковая, когда и так велосипедов хватает?
Меня окружали милые, добрые люди... медленно сжимая кольцо

Аватара пользователя
Frolik
Сообщения: 624
Зарегистрирован: 08 мар 2011, 17:21

Re: BeaRLibSound - озучиваем рогалик

Сообщение Frolik » 19 апр 2013, 16:39

Рекомендую soundsence. Всего-то нужно настроить фильтры и накидать звуков. Останется правильные сообщения в gamelog кидать.

Аватара пользователя
Apromix
Мастер
Сообщения: 1154
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BeaRLibSound - озучиваем рогалик

Сообщение Apromix » 22 апр 2013, 16:42

Uvadzucumi писал(а):тут вопрос, как проигрывать звук? слава богу спикер и порты ввода вывода ушли в небытие, но тогда:
winapi, directsound - только в винде
alsa - только линукс (возможно макос, не знаю - что там у них)
openal - дополнительную либу тягать (в винде), зависимость - в линуксе

соответственно придется или жестко привязать либу к опреционке, или 2 либы писать при сборке компилится необходимая часть... т.е. грубо говоря нужна ли либа звуковая, когда и так велосипедов хватает?
Да, лучше если это будет нечто универсальное п простое в использовании :D
Изображение Изображение

Аватара пользователя
Uvadzucumi
Сообщения: 365
Зарегистрирован: 29 ноя 2011, 07:13
Откуда: Дубай, ОАЭ (Минск, Беларусь)
Контактная информация:

Re: BeaRLibSound - озучиваем рогалик

Сообщение Uvadzucumi » 23 апр 2013, 10:47

openal тогда в руки. занкомый, кстати, либу обертку над ним поддерживает (для паскаля). некто duncon, с форума glscene.ru
могу и прямую ссылку на проект поискать. но (просто), кудаж уже проще то?
Меня окружали милые, добрые люди... медленно сжимая кольцо

Аватара пользователя
Apromix
Мастер
Сообщения: 1154
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BeaRLibSound - озучиваем рогалик

Сообщение Apromix » 22 фев 2017, 09:08

По этой либе вообще ничего не понятно. Кто возьмется за нее?
Изображение Изображение

Аватара пользователя
Cfyz
Сообщения: 764
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: BeaRLibSound - озучиваем рогалик

Сообщение Cfyz » 22 фев 2017, 11:44

-- Песчаный карьер?
-- Я!

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

Есть только момент с настройкой. В терминале я предполагаю реиспользовать стандартный для него способ конфигурации:

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

terminal_set("audio.sound-volume=80");
terminal_set("audio 1: ping.wav");
terminal_set("music 10: background.ogg");
...
terminal_play_music(10);
terminal_play_sound(1);
И как видите это становится немножко приколочено к терминалу. Ну, наверное можно в отдельной либе просто заменить "terminal_" на "audio_".

Деление на sound и music целенаправленное, у них разное поведение. Sound это короткий звуковой эффект, а music это длинная такая мелодия. Команда воспроизведения sound запускает еще один экземпляр независимо от того, сколько их там сейчас воспроизводится (т. е. всякие пиу-пиу, бум-бам и пр.), в то время как запуск music плавно сменяет предыдущую мелодию на новую. Уровни громкости у них обычно тоже разные, да и ставить на паузу их надо независимо (например при заходе в меню может потребоваться поставить звуки на паузу, а вот останавливать фоновую музыку необязательно).
Cfyz теперь - наглая морда.

Аватара пользователя
Apromix
Мастер
Сообщения: 1154
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BeaRLibSound - звуки и мелодии в рогалике

Сообщение Apromix » 22 фев 2017, 21:51

Эт хорошо. Насчет выпиливания в отдельную либу ваще круть. Но и в терминале тоже то что надо.

Я оставлю свои идеи насчет API этой либы, как я ее представлял. Абстрактно (такое модное словечко) :lol: Мож пригодятся.

Вобщем основными для API либы есть 3 метода: music, fademusic, play. Это все разные независимые методы и роли у них разные.

1. Music - для музыки, как описано постом выше, параметры: имя_файла/stop - запустить проигрыш мелодии или остановить, если вместо имени файла строка "stop". Только одина мелодия проигрывается одновременно. Следующий параметр - время в миллисекундах – время, в течении которого громкость музыки будет нарастать (или угасать – в зависимости от того, включаем мы воспроизведение, или выключаем). Если музыка уже звучит и мы запускаем новый трек с указанием времени нарастания громкости, то будет исполнен эффект crossfade – старый трек будет угасать, а новый – нарастать по громкости. Еще один параметр - громкость. Еще один булевый параметр - зацикливание мелодии (по умлоч. она зациклена).

2. Fademusic - два параметра - громкость и время в мс. Для плавного изм. громкости мелодии. Можно функционал совместить с методом music, но мне кажется его параметров будет замноговато.

3. Play - и в Африке play :D Параметры - имя фала, loop/stop, громкость, время в мс (для эффектов). Все :) Различие в stop для music - если указать параметр stop без имени файла, то будут остановлены все звуки.
Изображение Изображение

Аватара пользователя
Apromix
Мастер
Сообщения: 1154
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BeaRLibSound - звуки и мелодии в рогалике

Сообщение Apromix » 22 фев 2017, 22:45

И еще возможно пригодится информация об движке instead из этой вики. Сорцы движка открыты (я там частенько зависаю, поглядываю в код, хоть он и сишный, но интерес. до жути :)), можно посмотреть, как там релизована работа с sdl mixer. Инстед работает на всех платформах. Автор всегда доступен в irc-чате, вдруг чего надо спросить :)
Изображение Изображение

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость