|
2D-программирование Вопросы, касающиеся двумерного программирования |
21.07.2008, 15:23
|
#1
|
Нуждающийся
Регистрация: 09.07.2008
Сообщений: 57
Написано 11 полезных сообщений (для 26 пользователей)
|
Проблема с музыкой
В общем, использую музыку в *.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, то ничего не тормозило. Может кто знает, где я не прав?
Последний раз редактировалось Maxim1441, 21.07.2008 в 15:29.
|
(Offline)
|
|
21.07.2008, 15:35
|
#2
|
|
Ответ: Проблема с музыкой
читаем справку к 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 глобальная переменная ?
|
|
|
21.07.2008, 15:36
|
#3
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Проблема с музыкой
Привет! Проверяй раз в несколько секунд. Или испоьзуй не midi музыку.
if millisecs() > a+2000
a = millisecs()
If ChannelPlaying(ChanMus)=0 Then PlMus()
endif
|
(Offline)
|
|
21.07.2008, 15:38
|
#4
|
Нуждающийся
Регистрация: 09.07.2008
Сообщений: 57
Написано 11 полезных сообщений (для 26 пользователей)
|
Сообщение от jimon
читаем справку к PlayMusic :
тоесть когда команда вызывается то она загружает файл в память что может вызвать тормоза в коде ChanMus глобальная переменная ?
|
Справку я читал, но не в этом дело потому что если я вне цикла ставлю PlayMusic, то ничего не тормозит, да и не может тормозить компьютер загрузка позорного 20 Кб файла - это гон. В справке явно имели ввиду MP3 или там WAV. Переменая глобальная, конечно. Я думаю, может ChannelPlaying сам по себе тормозной, и когда он в цикле каждый раз проверяет, проигрывается или нет музыка, то из-за него и тормозит, хотя это вряд ли.
Сообщение от HolyDel
Привет! Проверяй раз в несколько секунд. Или испоьзуй не midi музыку.
if millisecs() > a+2000
a = millisecs()
If ChannelPlaying(ChanMus)=0 Then PlMus()
endif
|
Спасибо, конечно, но все-равно тормозит.
Последний раз редактировалось jimon, 21.07.2008 в 21:53.
|
(Offline)
|
|
21.07.2008, 16:08
|
#5
|
|
Ответ: Проблема с музыкой
Maxim1441
попробуй заменить командами PlaySound\LoadSound
и загружать музыку до начала цикла
скорее всего midi как-то хитро грузится вот и тормозит :/
|
|
|
21.07.2008, 16:24
|
#6
|
Нуждающийся
Регистрация: 09.07.2008
Сообщений: 57
Написано 11 полезных сообщений (для 26 пользователей)
|
Ответ: Проблема с музыкой
Сообщение от jimon
попробуй заменить командами PlaySound\LoadSound
и загружать музыку до начала цикла
/
|
А все-равно для того, чтобы менять треки, придется пользоваться
ChannelPlaying, и тормозить будет также.
Сообщение от jimon
скорее всего midi как-то хитро грузится вот и тормозит :/
|
Да это вряд ли. Если без ChannelPlaying, вне цикла ставить PlayMusic, то все замечательно. Я уже подумал, чтобы в каком-нибудь редакторе слить все эти миди в один фпайла и загружать его в начале.
|
(Offline)
|
|
21.07.2008, 16:30
|
#7
|
|
Ответ: Проблема с музыкой
Maxim1441
ты ищешь решения ? я тебе сказал куда копать
удостоверся что тормозит именно ChannelPlaying :
ms% = Millisecs()
ChannelPlaying(ChanMus)
debuglog (Millisecs()-ms)
|
если в дебаг будет выводится больше 0 (числа 30-40) значит она тормозит и откажись от неё
таким же способом замерь сколько времени занимает PlayMusic перед началом цикла
msp% = Millisecs()
PlayMusic("Sound1.mid")
debuglog (Millisecs()-msp)
|
|
|
|
21.07.2008, 16:40
|
#8
|
Нуждающийся
Регистрация: 09.07.2008
Сообщений: 57
Написано 11 полезных сообщений (для 26 пользователей)
|
Ответ: Проблема с музыкой
Ты знаешь, сейчас загрузил вне цикла здоровую midi, так она без всяких ChannelPlaying тормозит, так что, видимо - midi и Blitz3D - несовместимы ;-). Придется делать MP3, жаль, хотел сэкономить место.
|
(Offline)
|
|
21.07.2008, 16:43
|
#9
|
|
Ответ: Проблема с музыкой
были библиотеки для проигрывания схожих форматов
поищи, может чего найдешь менее тормозного
|
|
|
21.07.2008, 16:51
|
#10
|
Нуждающийся
Регистрация: 09.07.2008
Сообщений: 57
Написано 11 полезных сообщений (для 26 пользователей)
|
Ответ: Проблема с музыкой
Сообщение от jimon
были библиотеки для проигрывания схожих форматов
|
Неа, нехочу библиотек. Если в Справке написано, что можно проигрывать MIDI, значит, д.б. способ. Кстати, нашел такой глюк, если вне цикла писать
PlayMusic ("sfx\S.mid")
то все работает без тормозов, а стоит написать так
ChanSum=PlayMusic ("sfx\S.mid")
то сразу все тормозит ужасно, причем нигде у меня ChanSum не используется. Так вот.
|
(Offline)
|
|
21.07.2008, 20:43
|
#11
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Ответ: Проблема с музыкой
так у тебя в цикле PlayMusic?
|
(Offline)
|
|
21.07.2008, 21:25
|
#12
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Проблема с музыкой
судя по первому посту - все у него нормально
|
(Offline)
|
|
21.07.2008, 21:39
|
#13
|
Нуждающийся
Регистрация: 09.07.2008
Сообщений: 57
Написано 11 полезных сообщений (для 26 пользователей)
|
Сообщение от dimanche13
так у тебя в цикле PlayMusic?
|
Нет. В цикле у меня проверяется, играет ли музыка функцией ChannelPlayning().
Сообщение от HolyDel
судя по первому посту - все у него нормально
|
Да. У меня все нормально, только ничего не работает. . Даже не знаю, что делать. Получается, Блитц работает с миди, только если не присаивать Плайсаунд имени канала, а это ужас, т.к. нельзя проверить, проигрывается ли музыка, даже громкость не изменить.
Последний раз редактировалось jimon, 21.07.2008 в 21:53.
|
(Offline)
|
|
21.07.2008, 21:44
|
#14
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Проблема с музыкой
Maxim1441, используй xm музыку. весит немного.
|
(Offline)
|
|
21.07.2008, 22:03
|
#15
|
Нуждающийся
Регистрация: 09.07.2008
Сообщений: 57
Написано 11 полезных сообщений (для 26 пользователей)
|
Ответ: Проблема с музыкой
Сообщение от HolyDel
Maxim1441, используй xm музыку. весит немного.
|
Первый раз о таком формате слышу, но в справке написано, что только PlayMusic можно этот формат проигрывать, поэтому, думаю, глючить будет так же. Или нет? И можно ли, и если можно, то каким софтом, переконвертировать MIDI в XM?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:18.
|