Skip to content

步进

步进器用于按照指定的节奏模式生成时间片段。按照以下方式导入:

ts
import { Stepper } from "zaff";

基本用法

初始化步进器时,既可以传入一个配置对象,也可以直接传入一个 Timing:

ts
const stepper = new Stepper({
  time: 2333,
  bpm: 185,
  beats: 4
});

// const timing = Aff.timing(...);
const stepper = new Stepper(timing);

在步进器上挂载了一个核心方法 generate(),如果我们想生成 332 的节奏型,则可以这么做:

ts
const it = stepper.generate([3, 3, 2], {
  noteValue: 8,
  timeEnd: 7777
});

第一个参数 pattern 即为期望的节奏型数组,它表示依次按照 3 个音符、3 个音符、2 个音符的模式循环生成时间戳。第二个参数为配置对象,其中 noteValue 属性表示音符值,如 noteValue: 8 表示以 8 分音符为前者的基准,如果缺省则默认取步进器上的 beats 属性值。

这个方法实际上是一个 Generator 函数,使用 for ... of ... 来运行返回的遍历器对象,便可以生成相应的时间片段了:

ts
for (const time of it) {
  console.log(Math.floor(time));
}
// 2333, 2819, 3305, 3630, 4116, 4603, 4927...

MIT License