Анализировать звук впереди времени - Actionscript - PullRequest
0 голосов
/ 12 октября 2011

Я бы хотел создать игру, которая бы анализировала mp3 на несколько секунд раньше, чем он играет вживую.Основная идея была бы похожа на гитарного героя: «лады», которые вы можете увидеть, приходят и готовятся, затем они попадают и синхронизируются с песней в реальном времени.

Есть ли способ заранее проанализировать звуковой файл или проанализировать приглушенный звуковой файл?

1 Ответ

1 голос
/ 25 октября 2011

Вы можете получить доступ к основным аудиоданным с помощью Sound.extract ().Вы также можете динамически передавать семплы на объект Sound, добавив к нему прослушиватель SampleDataEvent и воспроизведя его без предоставления mp3.

Таким образом, по сути, процесс обычно выглядит следующим образом:

  1. Загрузите mp3 в объект Sound.
  2. Извлеките некоторые или все его образцы данных в ByteArray, чтобы вы могли проанализировать / изменить его.В зависимости от того, что вам нужно сделать, вы можете просто извлечь достаточно за раз, чтобы опередить вывод на желаемую величину.
  3. Создайте второй объект Sound для вывода - не предоставляйте этому объектуmp3.Добавьте слушателя для SampleDataEvents и затем воспроизведите его.Он будет отправлять SampleDataEvents регулярно, так как ему нужно больше звука (требуется 2048, 4096 или 8192 семплов за раз, 44100 - это одна секунда).Каждый раз, когда вы получаете SampleDataEvent, вы заполняете его свойство ByteArray с данными сэмплами, которые хотите воспроизвести следующим.

Хотя я не совсем понимаю, что именно вы пытаетесь сделать, оноЗвучит так, будто вы хотите, чтобы процесс извлечения продолжался на пару секунд раньше процесса воспроизведения - извлечение в буфер ByteArray, выполнение анализа, а затем копирование семплов из начала этого буфера BA каждый раз, когда выходной звук запрашивает больше семплов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...