Просмотр полной версии : "ровное" звучание Метронома
Приветствую всех
Нужна помощь с Метрономом:
заказчик уже всю плеш проел с тем, что звучание не равномерное, мол некие сбои в переодичности воспроизведения звука счелчка
звук у меня - это коротенький wav файл который переодично запускается по средствам переодичной функции setInterval
носом в кучу примеров где всё "ровно" тикает, а мне от этого не легче+)
Если кто сталкивался с разработкой таких вещей, подскажите выход из сложившецся ситуации, может каким то другим способом звук выводить переодично или что то ещё, чего я по неопотности не знаю
Благодарю
возможно у вас малькое значение fps, setInterval стремится выполняться с частотой fps, поэтому при маленьких значениях fps вызовы функции могут пропадать.
Увы но нет, ставил даже максимальный fps (120), не помогло, сама функция setInterval не идеальа, когда периуд повторения равна, например, 230 мс, то на самом деле функция повторяется через 230 ... 238 мс, проверка делалась по средством setTimer().
Что бы от FPS не "зависило" можно в конце функции дописать
updateAfterEvent()
Psycho Tiger
06.05.2010, 18:53
Это погрешности флеш плеера, их никак не избежать.
По поводу того, что setInterval стремится к FPS - это всё ложь и провокация, он асинхронен.
И да, используйте Timer.
Psycho Tiger
06.05.2010, 22:50
Ой, разделом ошибся =)
getTimer() возвращает количество миллисекунд с момента запуска флешки
если с умом сделать, будет тикать точно
что вы предлагаете? чделать переодичную функцию которая бы проверяла сколько времени прошло после начала проигрывания ролика и сопоставлять некие промежуточные значения?
getTimer имеет точно такую-же низкую точность, как и setInterval и все таймеры во Flash.
rainbowrussia
07.05.2010, 06:08
Метроном фиксированный? Если да, то можно попробовать дополнить файл тишиной до нужной длины и сделать:
mySound = new Sound();
mySound.attachSound("chpok");
mySound.start(0, 200);
На такое воспроизведение, вроде бы, не влияет почти ничего, в отличает от интервалов, таймера, кадров.
Ну а если интервал метронома произволен, то видел в сети программые генераторы звука на флеше, то есть паузу можно программно выставить и запустить звук.
А у вас ко звуку метронома изображение разве никакое не привязано?
UPD. Ну и в догонку еще один вариант - отсчитывать интервалы на javascript (setTimeout) и запускать функцию во флеше, проигрывающую звук (вроде так можно). Как тут будет с точностью не знаю - не проверил.
Как тут будет с точностью не знаю - не проверил.
Ещё хуже.
Ок... вобщем, ситуация примерно следующая. Когда вы начинаете во флеше воспроизводить звук, флешу нужно получить систему. На то, чтобы ее получить уходит время. Это время может быть разным т.как. никакая ось вам прям сразу напрямую доступ к девайсу не даст.
Точность таймера и всяких интервалов во флеше колеблется в пределах 10 миллисекунд, на то, чтобы получить систему, на разных осях может уйти и до 100 миллисекунд... Это значит, что вариант с таймерами отпадает в принципе.
Но, если флеш будет постоянно играть PCM звук (для MP3 у него особая схема синхронизации), то система у него будет постоянно. Если звук встроенный, то можно добится вполне сносного результата... Вы никогда не сможете добится, чтобы воспроизведение началось именно по клику на кнопке, например, но добится того, чтобы интервалы впоследствии были ровными в принципе можно.
Я бы наверное все-таки попробовал это делать на AS3 под десятый плеер с использованием SampleDataEvent, не то, чтобы оно было так уж сильно лучше, но все же... Еще есть вариант - в 10.1 добавили возможность подгружать байты NetStream'у, я это еще не пробовал, и не знаю как там с синхронизацией, но смысл попробовать думаю есть.
С SampleDataEvent всё будет очень ровно.
Если нужно только один звук играть - то да, а если нужно несколько синхронизировать - то нет. Т.как не извесно, и не возможно рассчитать время которое пройдет между play() и тем, когда действительно начнется воспроизведение.
Несколько можно смешать программно, играя через один поток. Это медленно.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.