canvas+webgl实现三维shader驱动的音乐立体空间效果代码

代码语言:html

所属分类:三维

代码描述:canvas+webgl实现三维shader驱动的音乐立体空间效果代码,可拖动旋转切换视角,墙上流体动画。

代码标签: canvas webgl 三维 shader 驱动 音乐 立体 空间

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

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  

  
</head>

<body>
  
  
      <script  >
const choose = a => a[Math.floor(Math.random() * a.length)];
const speeds = [.8];
const resont = [.9];
const volmns = [1];
const options = {
  volume: choose(volmns),
  resonance: choose(resont),
  speed: choose(speeds) };


let shaderTime = 0;
let pan = 0;
const Composer = () => {

  let context,
  main, verb, bus, compressor;

  const trigger = Object.freeze({
    trig: function () {
      let prev = 0;
      let t = false;
      return function (val) {
        t = prev < 0 && val >= 0;
        prev = val;
        return t;
      };
    },
    change: function () {
      let prev = 0;
      let t = false;
      return function (val) {
        t = prev != val;
        prev = val;
        return t;
      };
    },
    pulse: function (threshold) {
      let prev = 0;
      let t = false;
      return function (b) {
        if (b) prev++;
        if (prev == threshold) {
          t = true;
          prev = 0;
        } else {t = false;}
        return t;
      };
    },
    skip: function (n) {
      let count = n;
      return function (b) {
        return count++ % n == 0;
      };
    } });


  const lowTrig = trigger.trig();
  const highTrig = trigger.trig();
  const bassTrig = trigger.trig();
  const lowChanged = trigger.change();
  const bassChanged = trigger.change();
  const highChanged = trigger.change();
  const roots = [21, 23, 24, 26, 28,.........完整代码请登录后点击上方下载按钮下载查看

网友评论0