js实现音频三维可视化动画效果代码

代码语言:html

所属分类:多媒体

代码描述:js实现音频三维可视化动画效果代码

代码标签: 三维 可视化 动画 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        html, body, div {
          margin: 0;
          padding: 0;
          border: 0;
        }
        body {
          overflow: hidden;
          background-color:#000;
        }
        
        .bt {
        	-moz-box-shadow:inset 0px 1px 0px 0px #2c302e;
        	-webkit-box-shadow:inset 0px 1px 0px 0px #2c302e;
        	box-shadow:inset 0px 1px 0px 0px #2c302e;
        	background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #909590), color-stop(1, #474a48));
        	background:-moz-linear-gradient(top, #909590 5%, #474a48 100%);
        	background:-webkit-linear-gradient(top, #909590 5%, #474a48 100%);
        	background:-o-linear-gradient(top, #909590 5%, #474a48 100%);
        	background:-ms-linear-gradient(top, #909590 5%, #474a48 100%);
        	background:linear-gradient(to bottom, #909590 5%, #474a48 100%);
        	background-color:#909590;
        	-moz-border-radius:3px;
        	-webkit-border-radius:3px;
        	border-radius:3px;
        	border:1px solid #2c302e;
        	display:inline-block;
        	cursor:pointer;
        	color:#ffffff;
        	font-family:Arial;
        	font-size:12px;
        	padding:4px 12px;
        	text-decoration:none;
        	text-shadow:0px 1px 0px #2c302e;
        }
        .bt:hover {
        	background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #474a48), color-stop(1, #909590));
        	background:-moz-linear-gradient(top, #474a48 5%, #909590 100%);
        	background:-webkit-linear-gradient(top, #474a48 5%, #909590 100%);
        	background:-o-linear-gradient(top, #474a48 5%, #909590 100%);
        	background:-ms-linear-gradient(top, #474a48 5%, #909590 100%);
        	background:linear-gradient(to bottom, #474a48 5%, #909590 100%);
        	background-color:#474a48;
        }
        .bt:active {
        	position:relative;
        	top:1px;
        }
        
        input[type="file"] {
            display: none;
        }
        
        #menu {
          position: absolute;
          top: 10px;
          left: 10px;
        }
        
        #txtStatus {
          position: absolute;
          bottom: 0px;
          left: 10px;
          font-family:Arial;
          font-size: 12px;
          color: rgb(255,255,255);
        }
    </style>
</head>

<body>

    <div id="menu">
        <a id="btStartAudioVisualization" class="bt">启动音频可视化</a>
        <input id="btLoadAudio" type="file" accept="audio/*" /><label id="labelLoadAudio" for="btLoadAudio" class="bt">加载音频</label>
    </div>

    <p id="txtStatus"></p>

    <script>
        var audio, audioContext, audioSrc;
        var analyser, analyserBufferLength;
        var audioInfo = 'Song: LAKEY INSPIRED - Chill Day';
        
        //---
        
        var MATHPI2 = Math.PI * 2;
        
        //---
        
        var w;
        var h;
        
        var btStart;
        var btLoadAudio;
        var labelLoadAudio;
        var txtStatus;
        var canvas;
        var context;
        
        var imageData;
        var data;
        
        var mouseActive = false;
        var mouseDown = false;
        var mousePos = { x:0, y:0 };
        
        var fov = 250;
        
        var speed = 0.75;//0.25;
        
        var cubeMinHeight = 2;
        
        var frequencyDamp = 25;
        var smoothingTimeConstant = 0.65;
        var fftSize = 8192;//32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768
        
        var circleHolder = [];
        
        var time = 0;
        
        var colorInvertValue = 0;
        
        var rgb = {};
            rgb.r = Math.random() * MATHPI2;
            rgb.g = Math.random() * MATHPI2;
            rgb.b = Math.random() * MATHPI2;
            
        var rgb2 = {};
            rgb2.r = Math.random() * MATHPI2;
            rgb2.g = Math.random() * MATHPI2;
            rgb2.b = Math.random() * MATHPI2;
        
        //---
        /*
        function getRGBColor() {
        
          var r = Math.sin( rgb.r += 0.010 ) * 1 + 1;
          var g = Math.sin( rgb.g += 0.007 ) * 1 + 1;
          var b = Math.sin( rgb.b += 0.013 ) * 1 + 1;
          //var r = Math.sin( rgb.r += 0.040 ) * 1 + 1;
          //var g = Math.sin( rgb.g += 0.028 ) * 1 + 1;
          //var b = Math.sin( rgb.b += 0.052 ) * 1 + 1;
        
          return { r:r, g:g, b:b };
        
        };*/
        
        function getRGBColor( color ) {
        
          var r = Math.sin( color.r += 0.010 ) * 1 + 1;
          var g = Math.sin( color.g += 0.007 ) * 1 + 1;
          var b = Math.sin( color.b += 0.013 ) * 1 + 1;
          //var r = Math.sin( color.r += 0.040 ) * 1 + 1;
          //var g = Math.sin( color.g += 0.028 ) * 1 + 1;
          //var b = Math.sin( color.b += 0.052 ) * 1 + 1;
        
          return { r:r, g:g, b:b };
        
        };
        
        function getRGBColor2( color ) {
        
          //var r = Math.sin( color.r += 0.010 ) * 1 + 1;
          //var g = Math.sin( color.g += 0.007 ) * 1 + 1;
          //var b = Math.sin( color.b += 0.013 ) * 1 + 1;
          var r = Math.sin( color.r += 0.040 ) * 1 + 1;
          var g = Math.sin( color.g += 0.028 ) * 1 + 1;
          var b = Math.sin( color.b += 0.052 ) * 1 + 1;
        
          return { r:r, g:g, b:b };
        
        };
        
        function limitRGBColor( color, percent = 0.45 ) {
        
          if ( color.r < percent ) {
          
            color.r = percent;
          
          }
          
          if ( color.g < percent ) {
          
            color.g = percent;
          
          }
          
          if ( color.b < percent ) {
          
            color.b = percent;
          
          }
        
        };
        
        function init() {
        
          canva.........完整代码请登录后点击上方下载按钮下载查看

网友评论0