forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   Как можно проще управлять сразу несколькими звуками? (http://forum.boolean.name/showthread.php?t=15327)

xmarat 21.08.2011 14:13

Как можно проще управлять сразу несколькими звуками?
 
В общем есть несколько групп звуков. У каждой группы есть свой параметр громкости. Насколько я знаю для этих целей в BlitzMax есть каналы, только я не совсем понял как ими пользоваться. Не хочется менять громкость каждого звука в отдельности, в связи с чем прошу объяснить, как пользоваться каналами. Или они не для этих целей?
Заранее благодарен за ответы.

Reizel 21.08.2011 21:04

Ответ: Как можно проще управлять сразу несколькими звуками?
 
Писал большой ответ, но в момент отправки упала булка, схоронился тока код:
Код:


Type TSomeChannel
        Global MAP:Tmap = CreateMap()
       
        Field Channel:TChannel
        Field Sound:TSound
        Field MainVolume:String
       
        Function Load:TSomeChannel(Source:String,MainVolume:Float,label:String)
                Local somelist:TList = TList(MapValueForKey(MAP,label))
                If(somelist = Null)
                        somelist = CreateList();
                        MapInsert MAP,label,Somelist
                EndIf
               
                Local S:TSomeChannel = New TSomeChannel
                S.Sound = LoadSound(Source)
                S.Channel = CueSound(S.Sound)
                S.MainVolume = MainVolume
                SetChannelVolume(S.Channel,MainVolume)
                ListAddLast Somelist,S
                Return S
        End Function
       
        Function PlayRand(label:String)
                Local list:TList = MapValueForKey(MAP,label)
                If(list = Null) Return
               
                Local R:Int = Rand(1,CountList(list))
                Local K:Int = 0
               
                For Local S:TSomeChannel = EachIn list
                        K:+1
                        If(K = R)
                                ResumeChannel S.Channel
                                Exit
                        EndIf
                Next
        End Function
End Type


xmarat 22.08.2011 23:25

Ответ: Как можно проще управлять сразу несколькими звуками?
 
Интересное решение :) Благодарю за помощь.

xmarat 23.08.2011 22:07

Ответ: Как можно проще управлять сразу несколькими звуками?
 
Начал разбираться. Возник вопрос: получается нужно для каждого звука отдельный канал создавать?

xmarat 23.08.2011 23:54

Ответ: Как можно проще управлять сразу несколькими звуками?
 
В общем разобрался. Еще раз спасибо :)

edgemza 06.10.2016 21:15

Ответ: Как можно проще управлять сразу несколькими звуками?
 
Я только собираюсь осваивать Макс.
Вопрос: можно ли одновременно проигрывать мелодию (например wav, ogg или mp3) и звуковые эффекты, например для стрельбы, взрывов и т.п. ?

Arton 07.10.2016 00:40

Ответ: Как можно проще управлять сразу несколькими звуками?
 
Цитата:

Сообщение от edgemza (Сообщение 309012)
Я только собираюсь осваивать Макс.
Вопрос: можно ли одновременно проигрывать мелодию (например wav, ogg или mp3) и звуковые эффекты, например для стрельбы, взрывов и т.п. ?

Несомненно.
Зависит ещё от ограничений звуковой библиотеки. Но воспроизвести музыку и одновременно пару-тройку десятков звуков, без проблем. Актуально не только для BlitzMax.

edgemza 07.10.2016 08:25

Ответ: Как можно проще управлять сразу несколькими звуками?
 
Цитата:

Сообщение от Arton (Сообщение 309031)
... воспроизвести музыку и одновременно пару-тройку десятков звуков, без проблем.

Так подсказали бы сразу - это делается стандартными средствами Блица или нужна другая библиотека? Если да, то какая??

mingw 07.10.2016 14:58

Ответ: Как можно проще управлять сразу несколькими звуками?
 
создаешь отдельный канал для звуковых эффектов стрельбы и через него проигрываешь звуки.

Randomize 07.10.2016 15:11

Ответ: Как можно проще управлять сразу несколькими звуками?
 
Цитата:

Сообщение от edgemza (Сообщение 309035)
Так подсказали бы сразу - это делается стандартными средствами Блица или нужна другая библиотека? Если да, то какая??

Речь про Bmax, да?

Есть 2 стула: LoadSound и LoadMusic
Первый грузит звук полностью, второй играет длинные треки поточно. Больше тебе ничего не надо.

Не забудь к проекту заимпортить directsound и(или) freeaudio (модули из стандартной поставки)
Сколько в наличии каналов столько одновременно звуков и звучит.
Можешь произвести научный эксперимент.
У меня в своё время начинало "попёрдывать" при 500+ одновременноиграющих каналах.
Но это индивидуально для разных систем.


Часовой пояс GMT +4, время: 22:57.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot