npm 包 tumult 使用教程

1. 前言

tumult 是一个基于 Web Audio API 和 Web MIDI API 的 JavaScript 库,主要用于音频处理和 MIDI 控制。它提供了丰富的 API ,便于开发者对音频进行采集、过滤等处理,同时能够支持 MIDI 设备控制。在实际开发中,往往需要用到复杂的音频效果或 MIDI 控制,而使用 tumult ,可以让开发者更加轻松和高效地完成这些任务。

2. 安装和使用

tumult 是一个基于 npm 工具的包,使用之前需要先对其进行安装。可以通过以下命令进行安装:

--- ------- ------

在代码中使用 tumult :

------ - -- ------ ---- ---------

3. API

在 tumult 中,提供了大量的 API ,包括以下几个方面:

3.1. AudioNodes

AudioNodes 表示音频数据的节点,在 tumult 中,可以通过构建一个 AudioNode 的图形来实现音频的处理。具体来说,AudioNodes 提供了以下 API 。

3.1.1. AudioNode.createAnalyser()

创建一个 AnalyserNode ,主要用于对原始音频数据进行频域分析。

-- ---- ------------
----- -------- - ----------------------------------

3.1.2. AudioNode.createBandpassFilter()

创建一个 BiquadFilterNode ,主要用于通过定义一个频率带通滤波器过滤音频信号。

-- ---- --------------
----- -------------- - ----------------------------------------
------------------------------ - -----
---------------------- - --

3.1.3. AudioNode.createGain()

创建一个 GainNode ,主要用于通过调节音量来控制音频的增益。

-- ---- ----
----- ---- - ------------------------------
--------------- - ----

3.1.4. AudioNode.createOscillator()

创建一个 OscillatorNode ,主要用于生成一个简单的音频波形。

-- ---- ----------
----- ---------- - ------------------------------------
--------------- - -------
-------------------------- - ---- -- -- -

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 权限。

-- -- ---- --
------------------------------------------------- -
  -- ---
------------------------ -
  -------------------
---

3.2.2. WebMidi.getInput()

获取一个 MIDI 输入设备。

-- -- ---- ----
----- ----- - ---------------------------

3.2.3. WebMidi.getOutput()

获取一个 MIDI 输出设备。

-- -- ---- ----
----- ------ - ----------------------------

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 。

-- ---------------- -----------
----- ------ - ----------------------------------------- - --- -----

4. 示例

下面是一个简单的示例,演示了使用 AudioNodes 和 Web MIDI API 来生成一个简单的两个音符的音乐。

------ - -- ------ ---- ---------

----- -------- ------ -
  -- -------
  ----- ------- - --- ---------------

  -- ----
  ----- ------ - --- ------------------------------- - ----- ----- --- ----- ---------- ---------- ---
  ----- ------- - --- ------------------------------- - ----- ----- --- --- ---------- ---------- ---

  -- ------
  ----- ---- - ------------------------------
  --------------- - ----
  ----- ----------- - ------------------------------------
  ---------------- - -------
  --------------------------- - ----
  ----- ----------- - ------------------------------------
  ---------------- - -------
  --------------------------- - ----

  -- ----
  --------------------------
  --------------------------
  ----------------------------------

  -- -- ---- --
  ----- ----- - ---------------------------
  ------------------- - --------------- -
    ----- ---- - -----------
          --- - ------- -- --
          ------- - ------- - ----
          ---- - ------- - -----
          ---- - --------
          -------- - --------
    -- ---- --- - -- ---- --- ---- - -- ---- --
      -- ----- --- --- -
        --------------------
        ----------------------------
      - ---- -- ----- --- --- -
        --------------------
        ----------------------------
      -
    - ---- -- ---- --- - -- ---- --- - -- -------- --- --- - -- ---- ---
      -- ----- --- --- -
        -------------------
        -----------------------------
      - ---- -- ----- --- --- -
        -------------------
        -----------------------------
      -
    -
  --
-

---------------------------- -
  -------------------
---

5. 总结

tumult 是一个非常实用的 JavaScript 库,它提供了丰富的 API ,可以用于音频处理、MIDI 控制等工作中。在实际开发中,tumult 可以大大提高开发效率和质量,并且它的 API 很易于理解和使用,是值得推荐的前端库之一。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60067381890c4f7277584203


猜你喜欢

  • npm 包 init-lib 使用教程

    在前端开发中,引用大量的开源库已经成为了日常工作中必不可少的一部分。而自己开发的库,也通常需要发布到npm上供其他开发者使用。此时,我们就需要快速创建一个符合规范的npm包。

    4 年前
  • npm 包 react-simple-calculator 使用教程

    React Simple Calculator 是一个可以在 React 项目中使用的简单计算器组件。使用这个组件可以快速实现计算器的功能。 安装 你可以使用 npm 在你的项目中安装这个包: ---...

    4 年前
  • npm 包 file-tree-transform 使用教程

    文件树在前端项目中经常被用来组织代码和资源,但是在实际开发中,很多时候我们需要将文件树进行转换、合并、筛选等操作。npm 包 file-tree-transform 可以帮我们快速地完成这些任务。

    4 年前
  • npm 包 musical-timer 使用教程

    如果用 JavaScript 写前端页面或项目,不管是为了一些交互效果还是动态生成内容,定时器都是不可或缺的一环。而在此基础上,如何运用音乐化的方式来设计你的定时器,进而增加用户的体验感呢?这就需要使...

    4 年前
  • npm 包 ssb-clingy 使用教程

    在前端开发过程中,我们经常需要使用 npm 包来提高效率和完成复杂的功能。本文将介绍一个非常实用的 npm 包 ssb-clingy,并详细讲解它的使用方法和指导意义。

    4 年前
  • npm 包 gunsen 使用教程

    在前端开发中,我们经常需要使用各种各样的库和框架来完成我们的项目需求。npm 是一个广泛使用的 JavaScript 包管理器,它可以帮助我们更方便地使用各种 JavaScript 库和框架。

    4 年前
  • npm 包 @iwanabethatguy/axios 使用教程

    介绍 @iwanabethatguy/axios 是基于 Promise 的 HTTP 客户端,可以在 Node.js 和浏览器中使用。它具有以下特点: 在浏览器和 Node.js 中使用相同的 A...

    4 年前
  • npm 包 furkot-import-csv 使用教程

    简介 furkot-import-csv 是一个基于 Node.js 的 npm 包,它可以将 CSV 格式的数据转换成 JSON 格式,方便在前端项目中使用。CSV (Comma-Separated...

    4 年前
  • npm 包 crudone 使用教程

    概述 crudone 是一个用于快速构建 CRUD 操作的 npm 包。它可以帮助前端开发者快速搭建出基于 RESTful API 的增删改查操作界面。该 npm 包支持多种前端框架,如 React、...

    4 年前
  • npm 包 @jkearl/pratt 使用教程

    前言 在前端开发中,我们经常会用到 JavaScript 的解析器来分析代码结构,帮助我们完成语法分析以及语法树的构造等工作。而 npm 包 @jkearl/pratt 就是一款优秀的 JavaScr...

    4 年前
  • npm 包 aspis 使用教程

    在前端开发中,经常需要处理异步请求、调用 API 等操作,而 aspis 是一个可以帮助你更加方便地进行这些操作的 npm 包。它提供了一种基于装饰器的方式来处理异步操作的方法,并且可以让你的代码更加...

    4 年前
  • npm 包 windows-build-tools 使用教程

    如果你是一位前端开发人员,那么在 Windows 系统上安装一些 npm 包时,你可能会遇到一些麻烦,因为一些包需要 C++ build 工具。这些工具可以让你在 Windows 上成功安装 npm ...

    4 年前
  • npm 包 dijkstra-one-path 使用教程

    在前端开发中,我们经常需要寻找最短路径。而解决这个问题的算法之一就是 Dijkstra 算法。Dijkstra 算法对于大多数前端工程师来说不陌生。而在本文中,我将介绍一款名为 dijsktra-on...

    4 年前
  • npm 包 react-kiwi-dropdown 使用教程

    React-kiwi-dropdown 是一款基于 React 的下拉菜单组件,可以方便快捷地添加下拉菜单功能。 安装 在需要使用的 React 项目中,使用 npm 安装 react-kiwi-dr...

    4 年前
  • npm 包 irv-algo 使用教程

    IRV(Instant-Runoff Voting)是一种用于多个候选人的投票排序算法,也叫做"另类投票法"、"一轮投票法"、"选举前主要民意投票"等。IRV 算法在众多选举中使用,例如澳大利亚的联邦...

    4 年前
  • npm 包 microservice-server-routes 使用教程

    简介 microservice-server-routes 是一个基于 Node.js 的开源 npm 包,主要用于构建微服务应用时使用的路由库。该库提供了简单易用的 API 和路由设计,可以轻松搭建...

    4 年前
  • npm 包 jest-matcher-one-of 使用教程

    前言 在前端开发中,测试是必不可少的一环。而 Jest 是一款非常流行的测试框架,它提供了丰富的 API 和内置的断言库,使得测试变得更加简单和高效。 但是有时候我们需要自定义断言来满足更特定的需求,...

    4 年前
  • npm 包 @fushihara/vue-dummy 使用教程

    前言 如今,前端开发越来越流行,而 npm 作为前端包管理工具,更是成为了前端开发中不可或缺的一部分。而 @fushihara/vue-dummy 这个 npm 包,也成为了 Vue.js 开发中一个...

    4 年前
  • 使用 npm 包 @nowzoo/ngx-date-time

    简介 @nowzoo/ngx-date-time 是一个 Angular 的时间处理工具库,可以快速处理日期格式的输入,输出,以及转换。它提供了包括日期选择、日期格式化、日期计算等常见时间处理功能。

    4 年前
  • npm 包 react-state-action-hooks 使用教程

    简介 react-state-action-hooks 是一个基于 React Hooks 和 useReducer API 的 npm 包,它提供了一种统一的状态管理方案,可以帮助开发者更好地管理组...

    4 年前

相关推荐

    暂无文章