1. 前言
tumult 是一个基于 Web Audio API 和 Web MIDI API 的 JavaScript 库,主要用于音频处理和 MIDI 控制。它提供了丰富的 API ,便于开发者对音频进行采集、过滤等处理,同时能够支持 MIDI 设备控制。在实际开发中,往往需要用到复杂的音频效果或 MIDI 控制,而使用 tumult ,可以让开发者更加轻松和高效地完成这些任务。
2. 安装和使用
tumult 是一个基于 npm 工具的包,使用之前需要先对其进行安装。可以通过以下命令进行安装:
npm install tumult
在代码中使用 tumult :
import * as tumult from 'tumult';
3. API
在 tumult 中,提供了大量的 API ,包括以下几个方面:
3.1. AudioNodes
AudioNodes 表示音频数据的节点,在 tumult 中,可以通过构建一个 AudioNode 的图形来实现音频的处理。具体来说,AudioNodes 提供了以下 API 。
3.1.1. AudioNode.createAnalyser()
创建一个 AnalyserNode ,主要用于对原始音频数据进行频域分析。
// 创建一个 AnalyserNode const analyser = tumult.AudioNode.createAnalyser();
3.1.2. AudioNode.createBandpassFilter()
创建一个 BiquadFilterNode ,主要用于通过定义一个频率带通滤波器过滤音频信号。
// 创建一个 BandpassFilter const bandpassFilter = tumult.AudioNode.createBandpassFilter(); bandpassFilter.frequency.value = 8000; bandpassFilter.Q.value = 1;
3.1.3. AudioNode.createGain()
创建一个 GainNode ,主要用于通过调节音量来控制音频的增益。
// 创建一个 Gain const gain = tumult.AudioNode.createGain(); gain.gain.value = 0.5;
3.1.4. AudioNode.createOscillator()
创建一个 OscillatorNode ,主要用于生成一个简单的音频波形。
// 创建一个 Oscillator const oscillator = tumult.AudioNode.createOscillator(); oscillator.type = 'sine'; oscillator.frequency.value = 440; // 中央 C
3.1.5. AudioNode.createScriptProcessor()
创建一个 JavaScript 处理器节点,用于处理音频数据。
-- -------------------- ---- ------- -- ---- --------------- ----- --------------- - -------------------------------------------- -- --- ------------------------------ - --------------- - ----- ----------- - ------------------ ----- ------------ - ------------------- ----- --------- - ------------------------------ ----- ---------- - ------------------------------- --- ---- - - -- - - ----------------- ---- - ------------- - ------------ - ---- - --
3.2. Web MIDI
tumult 并不仅仅支持 Web Audio API ,还可以支持 Web MIDI API 。具体来说,Web MIDI 使用 MIDI 设备对音频进行控制,这对于一些音乐应用非常重要。在 tumult 中,可以通过以下 API 实现 MIDI 设备的操作:
3.2.1. WebMidi.access()
获取 Web MIDI API 权限。
// 取得 MIDI 权限 tumult.WebMidi.access().then(function(midiAccess) { // ... }).catch(function(error) { console.log(error); });
3.2.2. WebMidi.getInput()
获取一个 MIDI 输入设备。
// 获取 MIDI 输入设备 const input = tumult.WebMidi.getInput(0);
3.2.3. WebMidi.getOutput()
获取一个 MIDI 输出设备。
// 获取 MIDI 输出设备 const output = tumult.WebMidi.getOutput(0);
3.3. 其他 API
除了 AudioNodes 和 Web MIDI API 以外,tumult 还提供了其他一些 API ,包括以下几个方面。
3.3.1. AudioUtils
AudioUtils 提供了一些实用的音频操作函数。
-- -------------------- ---- ------- -- ---------------- ----------------- ----- ----- - --------------------------- -- --- -- - -- -------------------- --------- - - - -- ----- --------------- - ------------------------------- -- ---- -- --- -- --------------------- ---- ----------- ----- ------- - --- --------------- ----- ------ - ----------------------------- ------------- - ------- ------------------------------------- --------
3.3.2. AudioRecorder
AudioRecorder 是一个用于录制音频的模块。
-- -------------------- ---- ------- -- -------- ----- -------- - --- ----------------------- -- ---- --------------------- --- -- ---- ---------------- -- --------- ----- ------ - --------------------- ----- ------- - ----------------------
3.3.3. AudioUtils.createNoiseBuffer()
创建一个包含指定长度的随机噪声数据的 AudioBuffer 。
// 创建一个包含指定长度的随机噪声的 AudioBuffer const buffer = tumult.AudioUtils.createNoiseBuffer(44100 * 10, 0.1);
4. 示例
下面是一个简单的示例,演示了使用 AudioNodes 和 Web MIDI API 来生成一个简单的两个音符的音乐。
-- -------------------- ---- ------- ------ - -- ------ ---- --------- ----- -------- ------ - -- ------- ----- ------- - --- --------------- -- ---- ----- ------ - --- ------------------------------- - ----- ----- --- ----- ---------- ---------- --- ----- ------- - --- ------------------------------- - ----- ----- --- --- ---------- ---------- --- -- ------ ----- ---- - ------------------------------ --------------- - ---- ----- ----------- - ------------------------------------ ---------------- - ------- --------------------------- - ---- ----- ----------- - ------------------------------------ ---------------- - ------- --------------------------- - ---- -- ---- -------------------------- -------------------------- ---------------------------------- -- -- ---- -- ----- ----- - --------------------------- ------------------- - --------------- - ----- ---- - ----------- --- - ------- -- -- ------- - ------- - ---- ---- - ------- - ----- ---- - -------- -------- - -------- -- ---- --- - -- ---- --- ---- - -- ---- -- -- ----- --- --- - -------------------- ---------------------------- - ---- -- ----- --- --- - -------------------- ---------------------------- - - ---- -- ---- --- - -- ---- --- - -- -------- --- --- - -- ---- --- -- ----- --- --- - ------------------- ----------------------------- - ---- -- ----- --- --- - ------------------- ----------------------------- - - -- - ---------------------------- - ------------------- ---
5. 总结
tumult 是一个非常实用的 JavaScript 库,它提供了丰富的 API ,可以用于音频处理、MIDI 控制等工作中。在实际开发中,tumult 可以大大提高开发效率和质量,并且它的 API 很易于理解和使用,是值得推荐的前端库之一。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60067381890c4f7277584203