跳转到内容

快速开始

安装

Terminal window
npm install waa-play

快速开始:类 API (WaaPlayer)

WaaPlayer 封装了 AudioContext,并将所有模块以方法形式暴露。这是最简单的入门方式。

import { WaaPlayer } from "waa-play";
const player = new WaaPlayer();
// Generate a 440 Hz sine tone, 2 seconds long
const buffer = player.createSineBuffer(440, 2);
// Start playback — returns a Playback handle
const playback = player.play(buffer);
// Listen to position updates
playback.on("timeupdate", ({ position }) => console.log(position));
// Clean up when done
player.dispose();

快速开始:函数 API (自带 AudioContext)

如果你需要完全控制,可以导入单个函数并自带 AudioContext。这种方式完全支持 tree-shaking。

import { createContext, ensureRunning, play } from "waa-play";
import { createSineBuffer } from "waa-play/synth";
const ctx = createContext();
await ensureRunning(ctx);
const buffer = createSineBuffer(ctx, 440, 2);
const pb = play(ctx, buffer);

每个函数都以 AudioContext 作为第一个参数,因此不存在任何隐藏的全局状态。

模块

waa-play 由 12 个独立模块组成。每个模块都是独立的入口点,打包器可以对未使用的代码进行 tree-shaking。

模块导入路径用途
playerwaa-playWaaPlayer 类 — 所有模块的便捷封装
contextwaa-play/contextAudioContext 生命周期 (createContext, ensureRunning, now)
bufferwaa-play/buffer音频文件加载 (loadBuffer, loadBufferFromBlob)
playwaa-play/play核心播放引擎 — 返回 Playback 句柄
emitterwaa-play/emitter类型安全的事件发射器 (createEmitter<Events>())
nodeswaa-play/nodes音频节点工厂、chain() / disconnectChain()
waveformwaa-play/waveformAudioBuffer 提取峰值 / RMS
fadewaa-play/fade淡入、淡出、交叉淡化工具
schedulerwaa-play/scheduler预读调度器和时钟
synthwaa-play/synth缓冲区合成(正弦波、噪声、脉冲)
adapterswaa-play/adapters框架集成 (getSnapshot, subscribeSnapshot, onFrame)
stretcherwaa-play/stretcher基于 WSOLA 的保持音高时间拉伸