2013-03-18 3 views
0

Я ищу, чтобы создать драм-машину в ActionScript 3 (в качестве приложения Adobe AIR для Android), которая будет поддерживать определенный пользователем темп (BPM).ActionScript 3: Как я могу хранить точный счетчик BPM?

Я изо всех сил пытаюсь найти способ сохранить проект вовремя, поэтому на данный момент я сделал так, чтобы 5 разных звуков были представлены в строках из 8 квадратов, и пользователь может щелкнуть каждый квадрат, чтобы выбрать, когда играть в этот звук (надеюсь, это имеет смысл).

В настоящее время я использую таймер, чтобы сохранить проект вовремя, что очень лаконично и непоследовательно.

+0

звучит для меня, как есть дефект дизайна. Таймер блокируется только при раздувании вызова. –

+0

Не могли бы вы рассказать об этом, пожалуйста? Таймер в основном не очень точен, он оставляет разный размер пробелов между каждым «битом» –

+0

Недавно я построил что-то подобное. Я также использовал класс таймера, и он был OKAY, но не велик. Воспроизведение звуков - очень дорогостоящая операция, и в сочетании с минимальными анимациями мой фильм иногда «пропускает» удары или добавляет незначительные задержки. Я не мог найти способ улучшить его. Обязательно отлаживайте с помощью getTimer(), чтобы точно измерять задержки. – lostPixels

ответ

2

с помощью таймера является плохой идеей для этого, там я это сказал ...

Вопрос заключается в том, что таймер имеет дрейф и срабатывает несколько миллисекунд позже. Попробуйте простой тест, в котором у вас есть таймер, который выполняется каждые 500 мс, а затем сравните счет getTimer(). То, что я обнаружил в своих экспериментах, что таймер постоянно выключен, и похоже, что он не сам исправляет. Я пробовал использовать самонастраивающийся таймер, который меняет время стрельбы на основе разности getTimer() с момента последнего прогона, но он по-прежнему не является надежным. и в любое время при загрузке вашего процессора таймер будет отключен.

Правильный способ справиться с этим - использовать данные byteArray в качестве источника звука. На основе расчета разрешения выборки вы можете заранее заполнить поток данными, и звук будет воспроизводиться вовремя, в значительной степени гарантированный. Я не зашел так далеко, чтобы создать то, что делает это сам. Но есть несколько библиотек, которые вы можете использовать, которые могут вам помочь.

Моей две верхней уменьшенная библиотека SiON и tonfall

вы можете увидеть образец Sion здесь http://wonderfl.net/c/qf4b
и tonfall примера в http://tonematrix.audiotool.com/

В то время как я не пробовал их на андроид, я думаю, либо должен работать

+0

Спасибо, много мат, проверит их и отчитается! Хороший :) –

Смежные вопросы