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