Привет парни!
В обнимку с мануалом собираюсь сделать простенький визуализатор.

Код AS1/AS2:
import flash.display.Graphics;
import flash.events.Event;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundMixer;
import flash.net.URLRequest;
const HEIGHT:int = 100;
const LENGTH:int = 256;
var req:URLRequest = new URLRequest("music.mp3");
var snd:Sound = new Sound(req);
var channel:SoundChannel;
channel= snd.play();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
snd.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete);
var bytes:ByteArray = new ByteArray();
function onEnterFrame(event:Event):void
{
SoundMixer.computeSpectrum(bytes, true, 0);
var g:Graphics = this.graphics;
g.clear();
g.lineStyle(0, 0x000000);
var n:Number = 0;
for (var i:int = 0; i < LENGTH; i++)
{
n = (bytes.readFloat() * HEIGHT);
g.beginFill(0xffff00);
g.drawRect (i*32, HEIGHT-n, 32, HEIGHT) ;
}
}
function onPlaybackComplete(event:Event)
{
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}
Ширину колонки я выбрал в 32 пиксела, но не могу уложить всю ширину спектра (32*256=8192 пикселей) в ширину своего окна.
Крутил третье значение у SoundMixer.computeSpectrum(bytes, true, 0),
но так ничего путного и не получилось (надо, чтобы между колонками был один пиксель).
Я так понял, чтобы уместить спектр в 512 пикселей, например, надо чтобы миксер просчитывал не каждое значение массива битов, а суммарное из 256/(8192/512)= 16 значений.
Как это сделать, я не знаю. Тут ваш хэлп и требуется.
Да, еще, с чем может быть связано то, что колонки "прыгают" дальше, чем надо?