Задумал написать одну ритм игру. Что-то вроде упрощенного Audio Surf. Для этого мне нужно в любой момент воспроизведения звука знать все его ритмы, чтобы с ними работать. Я уже смог найти код, который строит спектрограмму звука в любой момент.
Код AS3:
import flash.events.Event;
var url:String = "test.wav";
var request:URLRequest = new URLRequest(url);
var s:Sound = new Sound();
s.load(request);
var song:SoundChannel;
var ba:ByteArray = new ByteArray();
var gr:Sprite = new Sprite();
gr.x = 20;
gr.y = 200;
addChild(gr);
addEventListener(Event.ENTER_FRAME, loop);
function loop(e:Event):void
{
SoundMixer.computeSpectrum(ba, true);
var i:int;
gr.graphics.clear();
gr.graphics.lineStyle(0, 0xFF0000);
gr.graphics.beginFill(0xFF0000);
gr.graphics.moveTo(0, 0);
var w:uint = 3;
for (i=0; i<512 i++)
{
var t:Number = ba.readFloat();
var n:Number = (t * 100);
gr.graphics.drawRect(i*w, 0, w, -n);
}
}
Но проблема в том что звук искажается при загрузке, и спектрограмма, следовательно, тоже.
Как максимально приблизить качество загружаемого звука к качеству mp3 файла?
ИЛИ
Как получить более четкую спектрограмму?
P.S. Вроде бы ещё можно использовать метод extract() для получения данных о mp3, но на выходе получается какая-то мелеберда, если знаете что он извлекает напишите пожалуйста