Показать сообщение отдельно
Старый 03.04.2012, 17:18
Mulin вне форума Посмотреть профиль Отправить личное сообщение для Mulin Найти все сообщения от Mulin
  № 1  
Ответить с цитированием
Mulin
 
Аватар для Mulin

Регистрация: Aug 2010
Сообщений: 107
По умолчанию Проблемы с анализатором спектра computeSpectrum ()

Код ниже (сильно упрощен), должен рисовать спектрограмму звуковой волны такого вида как на картинке ниже.



Происходит это следующим образом. По таймеру, 100 раз в секунду, вызывается функция draw_spectrogramma которая суммирует массив bytes. Далее из библиотеки берется элемент размером 1x на 2y пикселя и добавляется на экран. scaleY элемента устанавливается в зависимости от суммы intreger массива bytes. Затем элемент сдваигается вправо на один пиксель и за ним сразу же рисуется следующий элемент с уже другой высотой. Таким образом мыдолжны получать то что на картинке выше. Однако Я получаю вот эту фигню



А все потому, что сумма intreger массива bytes два или три раза подряд оказывается одинаковой о чем говорит trace(num);. В результате элементы из библиотеки получают одинаковый scaleY и мы видим то, что ы видим. То есть получается низкое разрешение звуковой волны на семпл. Если я ставлю вызов функции не 100 а 30 раз в секунду, то все нормально, сумма каждый раз разная, но мне мало 30 раз в секунду, нужно минимум 100.
Как решить проблему?
Код AS3:
var snd:Sound = new Sound();
var req:URLRequest = new URLRequest("track.mp3");
snd.load(req);
snd.play();
var complete_wave_res:uint=256; //разрешение волны
var bytes:ByteArray = new ByteArray();
var myTimer2:Timer = new Timer(10, 0);
myTimer2.addEventListener(TimerEvent.TIMER, draw_spectrogramma);
myTimer2.start();
var i:uint=0;
function draw_spectrogramma(event:Event)
{
 
	var temp:Number = num;
	SoundMixer.computeSpectrum(bytes,true,0);
	var num:Number=0;
	for(i;i<complete_wave_res;i++)
	{
		var intreger:Number = bytes.readFloat();	
		num += intreger;
	}
	trace(num);
 
          Здесь код рисования спектрограммы
}
Во вложении прилагаю полный файл проекта, там еще есть дополнительные фичи
Изображения
   
Вложения
Тип файла: rar Звук.rar (234.9 Кб, 39 просмотров)