mp3波形器

简介:

as3可以把声音解析成二进制,并加以分析。结合pv3d,做了个例子~

package
{

import flash.events.Event;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundMixer;
import flash.net.URLRequest;
import flash.utils.ByteArray;

import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.shadematerials.PhongMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.view.BasicView;

[SWF(backgroundColor=0x000000)]
public class Sound3D extends BasicView
{
    private var universe:DisplayObject3D;
    private var cubesArray:Array;
    
    private var bgm:Sound;
    private var bgmChannel:SoundChannel;
    private var ba:ByteArray;
    private var num:Number;
    private var myBlockArray:Array;
    private var smallBlockArray:Array;
    private var ready:Boolean=false;
    public function Sound3D()
    {
        init3D();            
    }
    private function init3D():void
    {
        cubesArray=[];
        smallBlockArray=[];
        universe=new DisplayObject3D();
        //camera.z=500;
        camera.zoom=80;
        scene.addChild(universe);
        var light:PointLight3D=new PointLight3D();
        for(var i:uint=0;i<20;i++)
        {
            var mt:PhongMaterial=new PhongMaterial(light,0xff0000,0x220000,3);
            var ml:MaterialsList=new MaterialsList({all:mt });
            var cube:Cube=new Cube(ml,30,30,200);
            
            var cubeSmall:Cube=new Cube(ml,30,30,10);
            
            //cube.x=15*i-30*15/2;
            cubeSmall.rotationY=cube.rotationY=18*i;

            cube.moveForward(200);
            cubeSmall.moveForward(200);
            cubeSmall.y=250;
            
            var cubeHolder:DisplayObject3D=new DisplayObject3D();
            cube.y=100;
            cubeHolder.addChild(cube);
            cubesArray.push(cubeHolder);
            smallBlockArray.push(cubeSmall);
            
            universe.addChild(cubeHolder);
            universe.addChild(cubeSmall);
            
            
        }
        ready=true;
        initSound();
        startRendering();
    }
    private function initSound():void
    {
        bgm = new Sound();
        ba = new ByteArray();
        bgm.load(new URLRequest('../lib/where-is-the-love.mp3'));
        bgmChannel = bgm.play();    
    }
    override protected function onRenderTick(event:Event=null):void
    {
        super.onRenderTick();
        universe.rotationY=viewport.containerSprite.mouseX/10;
        universe.y=viewport.containerSprite.mouseY;
        
        drawFunction();
        
    }

    private function drawFunction():void
    {
        //获取音谱信息
        SoundMixer.computeSpectrum(ba, true, 0);
        trace(ba.length);
        if(ready)
        {
            for (var i:uint = 0; i < 20; i++)
            {
                if(cubesArray[i].scaleY<.1)
                {
                    cubesArray[i].alpha=0;
                }
                else
                {
                    cubesArray[i].alpha=.5;
                }
                cubesArray[i].scaleY = ba.readFloat();
                if(cubesArray[i].scaleY*200>smallBlockArray[i].y)
                {
                    smallBlockArray[i].y=cubesArray[i].scaleY*200;
                }
                smallBlockArray[i].y-=10;
                if(smallBlockArray[i].y<5)
                {
                    smallBlockArray[i].y=5;
                }
                
            }
        }
    }
}

}
本文转自jiahuafu博客园博客,原文链接http://www.cnblogs.com/jiahuafu/archive/2009/09/30/1577015.html如需转载请自行联系原作者

jiahuafu

相关文章
|
10月前
|
编解码
音频 AAC和MP3的帧大小
音频 AAC和MP3的帧大小
460 0
|
5月前
|
编解码 语音技术 内存技术
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
《FFmpeg开发实战:从零基础到短视频上线》一书中的“5.1.2 把音频流保存为PCM文件”章节介绍了将媒体文件中的音频流转换为原始PCM音频的方法。示例代码直接保存解码后的PCM数据,保留了原始音频的采样频率、声道数量和采样位数。但在实际应用中,有时需要特定规格的PCM音频。例如,某些语音识别引擎仅接受16位PCM数据,而标准MP3音频通常采用32位采样,因此需将32位MP3音频转换为16位PCM音频。
139 0
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
|
传感器 编解码 芯片
【Renesas RA6M4开发板之I2C读取BMP180气压温度】
【Renesas RA6M4开发板之I2C读取BMP180气压温度】
113 0
|
存储 编解码 JSON
MP4封装格式
MP4封装格式介绍及解释,本文介绍 mp4 里面各种 box 的作用,包括 mdat box, moov box,mdhd box 等等。
458 0
|
语音技术 内存技术
用C/CCC++实现输出双声道(立体声).wav 文件
audioCodec为1,channels为2,samplesPerSec为8000(非常重要)。samplesPerSec设置为8000的原因是需要用16000/2,也就是要用采样率除以通道数。这样做的原因是立体声设置语音内容时将左右声道的语音数据打散交叉放置到内容中。
|
安全 Java 语音技术
将mp3格式的音频转换为采样率8k的wav
将mp3格式的音频转换为采样率8k的wav
568 0
|
编解码 算法 数据格式
iOS音视频开发 - 音频编码格式(pcm、wav、mp3、aac、ogg)
我们通常从音乐App(如:网易云音乐)听歌时,会看到一首歌需要的存储空间大概是10M左右,对于手机磁盘来说这是可以接受的。但在网络中实时在线传播的话,这个数据量可能就太大了,所以必须对其进行压缩编码。
|
算法 Windows 内存技术
程序人生 - 音频格式 PCM、WAV、MP3 区别
程序人生 - 音频格式 PCM、WAV、MP3 区别
1606 0
|
内存技术
ffmpeg4音频pcm转aac编码
本文是基于ffmpeg4开发的音频编码器开源,并对其中出现的一些bug与各界同行探讨。
426 0
|
C++ 内存技术
C++ 调节PCM音频音量大小
在用解码器解码音频数据得到PCM音频数据块之后,可以在将数据送给声卡播放之前调节其音量大小,具体的实现函数如下:   [cpp] view plain copy   void RaiseVolume(char* buf, UINT32 size, UINT32 uRepe...
3173 0

热门文章

最新文章