forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Проблема с музыкой (http://forum.boolean.name/showthread.php?t=6142)

Maxim1441 21.07.2008 15:23

Проблема с музыкой
 
В общем, использую музыку в *.MID через PlayMusic

Примерно вот так:

function PlMus()
select RND(1,2)
case 1
ChanMus=PlayMusic("Sound1.mid")
case 2
ChanMus=PlayMusic("Sound2.mid")
end select
end function

В цикле:

If ChannelPlaying(ChanMus)=0 Then PlMus()

Т.е., по уму, если в Цикле музыка уже (или еще) не проигрывается, то переходим в ф-цию, устанавливаем случ. композицию и все. А пока она играет, ChannelPlaying=1 и в Цикле она ее не вызывает. Но проблема в том, что музыка играет, но все жутко начинает тормозить. Все из-за ChannelPlaying, когда я просто в начале проги запускал PlayMusic, то ничего не тормозило. Может кто знает, где я не прав?:dontknow:

jimon 21.07.2008 15:35

Ответ: Проблема с музыкой
 
читаем справку к PlayMusic :

Цитата:

You can't 'preload' the audio like you can a sound sample via the LoadSound command. Every time you call the PlayMusic command, the file is reloaded and played. This means that if you use the command while some graphics are moving on-screen, you may get a slight pause when the hard drive seeks and grabs the music file. To avoid this, you might want to use the PlaySound/LoopSound commands instead.
тоесть когда команда вызывается то она загружает файл в память что может вызвать тормоза
в коде ChanMus глобальная переменная ?

HolyDel 21.07.2008 15:36

Ответ: Проблема с музыкой
 
Привет! Проверяй раз в несколько секунд. Или испоьзуй не midi музыку.
if millisecs() > a+2000
a = millisecs()
If ChannelPlaying(ChanMus)=0 Then PlMus()
endif

Maxim1441 21.07.2008 15:38

Цитата:

Сообщение от jimon (Сообщение 82679)
читаем справку к PlayMusic :
тоесть когда команда вызывается то она загружает файл в память что может вызвать тормоза в коде ChanMus глобальная переменная ?


Справку я читал, но не в этом дело потому что если я вне цикла ставлю PlayMusic, то ничего не тормозит, да и не может тормозить компьютер загрузка позорного 20 Кб файла - это гон. В справке явно имели ввиду MP3 или там WAV. Переменая глобальная, конечно. Я думаю, может ChannelPlaying сам по себе тормозной, и когда он в цикле каждый раз проверяет, проигрывается или нет музыка, то из-за него и тормозит, хотя это вряд ли.

Цитата:

Сообщение от HolyDel (Сообщение 82680)
Привет! Проверяй раз в несколько секунд. Или испоьзуй не midi музыку.
if millisecs() > a+2000
a = millisecs()
If ChannelPlaying(ChanMus)=0 Then PlMus()
endif


Спасибо, конечно, но все-равно тормозит.

jimon 21.07.2008 16:08

Ответ: Проблема с музыкой
 
Maxim1441
попробуй заменить командами PlaySound\LoadSound
и загружать музыку до начала цикла

скорее всего midi как-то хитро грузится вот и тормозит :/

Maxim1441 21.07.2008 16:24

Ответ: Проблема с музыкой
 
Цитата:

Сообщение от jimon (Сообщение 82683)
попробуй заменить командами PlaySound\LoadSound
и загружать музыку до начала цикла
/

А все-равно для того, чтобы менять треки, придется пользоваться
ChannelPlaying, и тормозить будет также.
Цитата:

Сообщение от jimon (Сообщение 82683)
скорее всего midi как-то хитро грузится вот и тормозит :/

Да это вряд ли. Если без ChannelPlaying, вне цикла ставить PlayMusic, то все замечательно. Я уже подумал, чтобы в каком-нибудь редакторе слить все эти миди в один фпайла и загружать его в начале.

jimon 21.07.2008 16:30

Ответ: Проблема с музыкой
 
Maxim1441
ты ищешь решения ? я тебе сказал куда копать
удостоверся что тормозит именно ChannelPlaying :

Цитата:

ms% = Millisecs()
ChannelPlaying(ChanMus)
debuglog (Millisecs()-ms)
если в дебаг будет выводится больше 0 (числа 30-40) значит она тормозит и откажись от неё :)

таким же способом замерь сколько времени занимает PlayMusic перед началом цикла
Цитата:

msp% = Millisecs()
PlayMusic("Sound1.mid")
debuglog (Millisecs()-msp)

Maxim1441 21.07.2008 16:40

Ответ: Проблема с музыкой
 
Ты знаешь, сейчас загрузил вне цикла здоровую midi, так она без всяких ChannelPlaying тормозит, так что, видимо - midi и Blitz3D - несовместимы ;-). Придется делать MP3, жаль, хотел сэкономить место.

jimon 21.07.2008 16:43

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

Maxim1441 21.07.2008 16:51

Ответ: Проблема с музыкой
 
Цитата:

Сообщение от jimon (Сообщение 82688)
были библиотеки для проигрывания схожих форматов :)

Неа, нехочу библиотек. Если в Справке написано, что можно проигрывать MIDI, значит, д.б. способ. Кстати, нашел такой глюк, если вне цикла писать

PlayMusic ("sfx\S.mid")

то все работает без тормозов, а стоит написать так

ChanSum=PlayMusic ("sfx\S.mid")

то сразу все тормозит ужасно, причем нигде у меня ChanSum не используется. Так вот.

dimanche13 21.07.2008 20:43

Ответ: Проблема с музыкой
 
так у тебя в цикле PlayMusic?

HolyDel 21.07.2008 21:25

Ответ: Проблема с музыкой
 
судя по первому посту - все у него нормально

Maxim1441 21.07.2008 21:39

Цитата:

Сообщение от dimanche13 (Сообщение 82703)
так у тебя в цикле PlayMusic?

Нет. В цикле у меня проверяется, играет ли музыка функцией ChannelPlayning().

Цитата:

Сообщение от HolyDel (Сообщение 82707)
судя по первому посту - все у него нормально

Да. У меня все нормально, только ничего не работает. :( . Даже не знаю, что делать. Получается, Блитц работает с миди, только если не присаивать Плайсаунд имени канала, а это ужас, т.к. нельзя проверить, проигрывается ли музыка, даже громкость не изменить.

HolyDel 21.07.2008 21:44

Ответ: Проблема с музыкой
 
Maxim1441, используй xm музыку. весит немного.

Maxim1441 21.07.2008 22:03

Ответ: Проблема с музыкой
 
Цитата:

Сообщение от HolyDel (Сообщение 82713)
Maxim1441, используй xm музыку. весит немного.

Первый раз о таком формате слышу, но в справке написано, что только PlayMusic можно этот формат проигрывать, поэтому, думаю, глючить будет так же. Или нет? И можно ли, и если можно, то каким софтом, переконвертировать MIDI в XM?


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

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