Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.09.2009, 23:45
Archi_xxx вне форума Посмотреть профиль Отправить личное сообщение для Archi_xxx Найти все сообщения от Archi_xxx
  № 1  
Ответить с цитированием
Archi_xxx

Регистрация: Apr 2009
Сообщений: 38
По умолчанию абсолютно безшовный звук...как?

Растолкуйте пожалуйста, умеет ли флеш проигрывать(повторять) звук с точностью до миллисекунд?

есть mp3 длинной в 18.024 сек, стык(шов) при повторе идеально ровный.
вставлял через attachSound, повтор идет с задержкой, что сильно портит впечатление о звуковом фоне.
Также просто кидал звук на первый кадр сцены, в опциях указывал цикл - теже яйца, есть задержки при каждом повторе, буквально кикие то миллисекунды но их хватает.

Может есть у кого готовое решение в виде куска кода? заранее благодарен..


Последний раз редактировалось Archi_xxx; 30.09.2009 в 23:54.
Старый 01.10.2009, 00:15
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Программно пробовали зациклить? Т.е.
Код AS1/AS2:
mySound.onSoundComplete = function() {
  mySound.start();
}
Или просто задать количество проигрываний:
Код AS1/AS2:
mySound.start(0, 999);
Но вообще, думаю, что до миллисекунд флеш не обеспечивает точности.
Не зря у метода start() в его синтаксисе первый параметр - offset (то есть смещение начала воспроизведения относительно начала самого звукового ролика) задается в секундах, а не в миллисекундах, как время, например, в интервальной функции.

Добавлено через 10 минут
Попробуйте переделать последние секунды mp3-шки так, чтобы пауза была незамента. Например, плавный фейд (снижение громкости) в тишину, и потом - нарастание громкости с начала ролика. Если конечно, звуковой сюжет позволит.


Последний раз редактировалось mooncar; 01.10.2009 в 00:38.
Старый 01.10.2009, 01:00
Archi_xxx вне форума Посмотреть профиль Отправить личное сообщение для Archi_xxx Найти все сообщения от Archi_xxx
  № 3  
Ответить с цитированием
Archi_xxx

Регистрация: Apr 2009
Сообщений: 38
mySound.start(0, 999); - об этом и писал

onSoundComplete - щас гляну.

Фейды и пр. не подходят нужен четкий переход без задержек.
мотив по звуку похож как тут http://flashden.net/item/green-web-t..._preview/10301 я конечно не знаю как он его так плавно проигрывает, но нет резона вставлять такой длинный повторяющийся мотив, соответственно цикл.. но без пробелов...

Старый 01.10.2009, 01:22
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Пример смотрел. Он ритмичный, и это навело на мысль.
Как вариант, если вы еще не пробовали, предлагаю вам сделать два идентичных звуковых объекта и за очень малое время до окончания звучания первого запускать второй. За вторым - опять по той же схеме - первый. Думаю, что можно попробовать подогнать так, чтобы рисунок не ломался и склейку не было слышно. Других мыслей нет.

Старый 01.10.2009, 01:40
Archi_xxx вне форума Посмотреть профиль Отправить личное сообщение для Archi_xxx Найти все сообщения от Archi_xxx
  № 5  
Ответить с цитированием
Archi_xxx

Регистрация: Apr 2009
Сообщений: 38
Цитата:
Как вариант, если вы еще не пробовали, предлагаю вам сделать два идентичных звуковых объекта и за очень малое время до окончания звучания первого запускать второй. За вторым - опять по той же схеме - первый. Думаю, что можно попробовать подогнать так, чтобы рисунок не ломался и склейку не было слышно. Других мыслей нет.
Впринципе мысль, через setInterval попробую ченить наваять (там же можно указывать в миллисекундах), но в кодинге к сожалению не так силен, дальше этого не прыгну. Если ченить получится отпишу, спасибо.

Старый 01.10.2009, 02:02
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вообще setInterval не точен.
Кстати, попробуйте посмотреть еще варианты с методом
Код:
position (Sound.position property)
public position : Number [read-only]
The number of milliseconds a sound has been playing.
Тут, в принципе, в миллисекундах указывается текущее положение воспроизведения.
Если проверять position максимально быстро, можно, видимо, отследить нужный момент и стартовать тут же второй экземпляр. Хотя "максимально быстро" через setInterval также делать придется. Хотя, может кто и подскажет более решение с повышенной точностью.

Вообще, еще для видео, например, есть Cue Points - можно при импорте видео во флеш прошить в нем маркеры в произвольных местах с высокой точностью и назначить по их достижению при проигрывании ролика запуск функции-обработчика. Но для mp3-шек, кажется, подобного нет. Хотя не уверен.

Кстати, я проверил - можно зацикливать через onSoundComplete. Видимо, главное - чтобы концы сращиваемой композиции подходили друг другу на начальном и конечном краях, и убрать компрессию, она может давать краевые эффекты.
То есть попробуйте нескомпрессированный WAV и убрите в настройках Publish Setting компрессию вообще, поставьте там Disabled.
Посмотрите пример 1, там использован программный loop для wav-файла. Склейка незаметна.
Конечно, тут дело может быть в том, что использованный в примере кусок с ритмической точки зрения представляет собой один квадрат (музыканты меня поправят, если что), и ухо не может понять, какой интервал между отдельными кусками правильный, и воспринимает имеющееся место склейки как правильный интервал.

В общем, задачка оказалась интересной, я ее почти решил.
Это пример 2, можете его использовать как стенд для вашего loop'а. Огрехи там есть, надо еще наводить лоск.
Опытным путем установил, насколько старт второго экземпляра должен опережать окончание первого, то есть даем время флешу на "раскачку".
Позиции определяем через Sound.position(), используем setInterval.
Возможно нужно будет подобрать интервалы иначе, там есть тонкие моменты, но в целом логика такая.
Компрессия везде отключена и использован WAV.
Вложения
Тип файла: rar AS_Loop.part1.rar (300.0 Кб, 87 просмотров)
Тип файла: rar AS_Loop.part2.rar (238.6 Кб, 74 просмотров)
Тип файла: rar Cклеиваем звук без шва.part1.rar (300.0 Кб, 85 просмотров)
Тип файла: rar Cклеиваем звук без шва.part2.rar (300.0 Кб, 82 просмотров)
Тип файла: rar Cклеиваем звук без шва.part3.rar (94.7 Кб, 70 просмотров)


Последний раз редактировалось mooncar; 01.10.2009 в 13:43.
Старый 01.10.2009, 15:10
Archi_xxx вне форума Посмотреть профиль Отправить личное сообщение для Archi_xxx Найти все сообщения от Archi_xxx
  № 7  
Ответить с цитированием
Archi_xxx

Регистрация: Apr 2009
Сообщений: 38
mooncar Спасибо за участие, и решение проблемы!
Также были правы по поводу компрессии в mp3 , при определенных настройках сжатия как бы обрезаются концы глухими кусочками, при том что в оригинале все ровно.
Второй вариант так вообще загляденье, тестирую...

Старый 01.10.2009, 15:19
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Есть там баг, есть. Алгоритм хромает, можно трейсами увидеть (двойные цепочки стартов - остановов). И еще - там ошибка накапливается - на определенном шаге есть скачек. Лучше пока не вышло. Интересно было бы найти абсолютное решение, которое не зависело бы от факторов: частоты кадров и нагрузки на проц.
К сожалению, в AS2 на редкость бедно и криво реализована работа с объектом Sound(). И вдобавок слушать позицию через SetInterval тяжело, точность низкая.
Пробовал через watch - не получается.
наверное нужно остановиться на 1-м варианте, убрав компрессию.


Последний раз редактировалось mooncar; 01.10.2009 в 15:28.
Создать новую тему Ответ Часовой пояс GMT +4, время: 23:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.