📜  空间的颤动小部件 (1)

📅  最后修改于: 2023-12-03 15:41:06.157000             🧑  作者: Mango

空间的颤动小部件

简介

空间的颤动小部件(Spatial Vibrations Widget)是一个能够创建和操纵 FFT (快速傅里叶变换)频谱的开源小部件。该小部件可用于创建可视化效果,这些效果对于音乐和声音制作、数据可视化和科学研究非常有用。

特点
  • 使用 WebGL 技术加速,具有高速渲染和高级3D效果。
  • 可定制的外观、颜色和形状。
  • 可使用定制的音频源或任何声音文件。
  • 兼容大多数现代浏览器和设备。
  • 部署方便,可在 Web 应用程序或单独的网页中使用。
安装

使用 npm 安装:

npm install spatial-vibrations-widget

或者在 HTML 中添加以下代码:

<!-- 首先添加 canvas 元素 -->
<canvas id="myCanvas"></canvas>

<!-- 在 JavaScript 中初始化小部件 -->
<script src="spatial-vibrations-widget.min.js"></script>
<script>
  // 初始化小部件
  var spatialWidget = new SpatialVibrationsWidget({
    canvas: document.getElementById('myCanvas'),
    audioSource: 'path/to/audio.mp3'
  });
</script>
使用
创建小部件实例

初始化小部件时需要传递一个配置对象。

var spatialWidget = new SpatialVibrationsWidget({
  canvas: document.getElementById('myCanvas'), // 必须,指定要绘制小部件的 canvas 元素
  audioSource: 'path/to/audio.mp3', // 可选,一个 URL 字符串或 AudioBuffer 对象,表示要使用的音频源
  ... // 其他配置项
});
更新音频

要更新音频,请调用小部件实例的 setAudio 方法,并传入一个字符串或 AudioBuffer 对象。

var spatialWidget = new SpatialVibrationsWidget(...);

// 将音频源更改为另一个URL
spatialWidget.setAudio('another/path/to/audio.mp3');

// 将音频源更改为 ArrayBuffer
// (请注意,对 AudioContext 有特殊的环境要求,详情请参阅 MDN 文档)
spatialWidget.setAudio(myArrayBuffer);
更新配置选项

要更新配置选项,请调用小部件实例的 setOptions 方法,并传入一个对象,该对象包含要更新的配置选项的键和值。

var spatialWidget = new SpatialVibrationsWidget(...);

// 将颜色更改为红色
spatialWidget.setOptions({ color: 'red' });

// 将形状更改为椎体
spatialWidget.setOptions({ shape: 'cone' });

// 将旋转速度更改为 0.5
spatialWidget.setOptions({ rotationSpeed: 0.5 });
销毁小部件

要销毁小部件,请调用小部件实例的 destroy 方法。

var spatialWidget = new SpatialVibrationsWidget(...);

// 销毁小部件
spatialWidget.destroy();
示例
var spatialWidget = new SpatialVibrationsWidget({
  canvas: document.getElementById('myCanvas'),
  audioSource: 'path/to/audio.mp3',
  color: 'green',
  shape: 'sphere',
  rotationSpeed: 0.2
});

// 将音频源更改为另一个URL
spatialWidget.setAudio('another/path/to/audio.mp3');

// 将颜色更改为红色
spatialWidget.setOptions({ color: 'red' });

// 将形状更改为椎体
spatialWidget.setOptions({ shape: 'cone' });

// 销毁小部件
spatialWidget.destroy();
参考文献