Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Спектрограмма / Качество звука (http://www.flasher.ru/forum/showthread.php?t=212530)

Cake_Eater 05.03.2016 07:33

Спектрограмма / Качество звука
 
Задумал написать одну ритм игру. Что-то вроде упрощенного 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, но на выходе получается какая-то мелеберда, если знаете что он извлекает напишите пожалуйста

alatar 06.03.2016 12:36

Что значит "звук искажается при загрузке"? :eek:

Цитата:

Сообщение от Cake_Eater (Сообщение 1192399)
P.S. Вроде бы ещё можно использовать метод extract() для получения данных о mp3, но на выходе получается какая-то мелеберда, если знаете что он извлекает напишите пожалуйста

А вы вторым параметром в computeSpectrum передайте false и получите ту же "мелеберду". Только убедитесь, что у вас другие звуки не воспроизводятся.
Другими словами, чтобы получить ту же картину, что и в SoundMixer вам необходимо выполнить FFT преобразование.


Часовой пояс GMT +4, время: 12:38.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.