mp3波形器

简介: as3可以把声音解析成二进制,并加以分析。结合pv3d,做了个例子~   package{    import flash.events.Event;    import flash.media.Sound;    import flash.

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;
                    }
                    
                }
            }
        }
    }
}

 

下载:img_0c3030c6f8e48e75340ba490c7753120.jpg

另存为... 后缀名改为.swf

相关文章
|
2月前
|
编解码
音频 AAC和MP3的帧大小
音频 AAC和MP3的帧大小
39 0
|
4月前
|
传感器 算法
esp32使用fft算法显示音乐频谱
esp32使用fft算法显示音乐频谱
|
4月前
来看看生词:CVBS、S-Video、YPbPr、模拟RGB、DVI和HDMI
来看看生词:CVBS、S-Video、YPbPr、模拟RGB、DVI和HDMI
73 0
|
内存技术
音频格式G711转PCM的代码
音频格式G711转PCM的代码
221 0
|
10月前
|
编解码
STM32F103C8 AD单通道
STM32F103C8 AD单通道
47 0
|
传感器 编解码 芯片
【Renesas RA6M4开发板之I2C读取BMP180气压温度】
【Renesas RA6M4开发板之I2C读取BMP180气压温度】
71 0
【Renesas RA6M4开发板之Arduino六路ADC采样】
【Renesas RA6M4开发板之Arduino六路ADC采样】
160 0
|
语音技术 内存技术
用C/CCC++实现输出双声道(立体声).wav 文件
audioCodec为1,channels为2,samplesPerSec为8000(非常重要)。samplesPerSec设置为8000的原因是需要用16000/2,也就是要用采样率除以通道数。这样做的原因是立体声设置语音内容时将左右声道的语音数据打散交叉放置到内容中。
|
存储 编解码 JSON
MP4封装格式
MP4封装格式介绍及解释,本文介绍 mp4 里面各种 box 的作用,包括 mdat box, moov box,mdhd box 等等。
327 0
|
安全 Java 语音技术
将mp3格式的音频转换为采样率8k的wav
将mp3格式的音频转换为采样率8k的wav
437 0