跳转至

波形文件 .pulse

来源: DG-BBS 论坛 - 3.4.4 新版波形数据格式解析

官方的波形数据

DG-LAB 官方在 3.4.4 版本开放了波形文件导出功能。.pulse 是官方定义的波形文件格式,社区可通过 DG-BBS 波形分享 分享和预览波形。

pulse 文件格式

整体结构

Dungeonlab+pulse:<波形描述>=<小节描述>+section+<小节描述>+section+...
  • 小节之间使用 +section+ 分隔
  • 每个波形至多 10 个小节

波形描述

pulse:<休息时长>,<速度倍率>,<未知>=

参数 说明
休息时长 播完所有小节后的休息时长 (滑块值 x0.1 = 秒)
速度倍率 播放速度,可选 1, 2, 4
未知 默认 16,作用尚不明确

小节描述

<频率A>,<频率B>,<小节时长>,<频率模式>,<小节开关>/<脉冲数据>

参数 说明 取值
频率A 频率变化初值索引 0~83
频率B 频率变化终值索引 0~83
小节时长 时长索引 0~99
频率模式 频率变化规律 1~4
小节开关 是否启用 0/1

频率模式

值 名称 说明
1 固定 频率恒定为频率A
2 节内渐变 整个小节内频率从A渐变到B
3 元内渐变 每个脉冲元内频率从A到B (周期性)
4 元间渐变 脉冲元内频率固定,但逐个脉冲元从A渐变到B

频率索引映射

频率值单位为 ms (10ms = 100Hz, 20ms = 50Hz):

const FREQ_SLIDER_VALUE_MAP = [
  10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
  20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
  30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
  40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
  50, 52, 54, 56, 58, 60, 62, 64, 66, 68,
  70, 72, 74, 76, 78,
  80, 85, 90, 95,
  100, 110, 120, 130, 140, 150, 160, 170, 180, 190,
  200, 233, 266, 300, 333, 366,
  400, 450, 500, 550,
  600, 700, 800, 900, 1000
]; // 索引 0~83

小节时长映射

const SECTION_TIME_MAP = [
  0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0,   // 0-9
  1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0,   // 10-19
  2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0,   // 20-29
  3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4.0,   // 30-39
  4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9,         // 40-48
  5, 5.2, 5.4, 5.6, 5.8, 6, 6.2, 6.4, 6.6, 6.8,        // 49-58
  7, 7.2, 7.4, 7.6, 7.8,                                  // 59-63
  8, 8.5, 9, 9.5,                                          // 64-67
  10, 11, 12, 13, 14, 15, 16, 17, 18, 19,                 // 68-77
  20, 23.4, 26.6, 30, 33.4, 36.6,                         // 78-83
  40, 45, 50, 55,                                          // 84-87
  60, 70, 80, 90,                                          // 88-91
  100, 120, 140, 160, 180,                                 // 92-96
  200, 250, 300                                            // 97-99
]; // 索引 0~99,单位秒

脉冲元形状

小节开关后以 / 分隔,后接脉冲数据:

<强度>-<类型>,<强度>-<类型>,...
参数 说明 取值
强度 脉冲强度 0~100
类型 0 = 普通 (自动插值), 1 = 锚点 (可编辑) 0/1

每根"竖条"代表 0.1s 的输出,脉冲元最少 2 根竖条 (0.2s)。锚点间的普通脉冲由线性插值自动计算。

完整示例: 弹跳.pulse

以下是 DG-LAB 官方内置波形「弹跳」的完整 .pulse 文件。

原始数据

Dungeonlab+pulse:20,1,16=0,30,44,2,1/0.00-1,33.30-0,66.65-0,100.00-1+section+0,20,19,1,0/0.00-1,100.00-1+section+0,20,19,1,0/0.00-1,100.00-1+section+0,20,0,1,0/0.00-1,100.00-1+section+0,20,0,1,0/0.00-1,100.00-1+section+0,20,0,1,0/0.00-1,100.00-1+section+0,20,0,1,0/0.00-1,100.00-1+section+0,20,0,1,0/0.00-1,100.00-1+section+0,20,0,1,0/0.00-1,100.00-1+section+0,20,0,1,0/0.00-1,100.00-1

格式化拆分

添加换行和空格后:

Dungeonlab+pulse: 20, 1, 16 =

0, 30, 44, 2, 1 / 0.00-1, 33.30-0, 66.65-0, 100.00-1   +section+
0, 20, 19, 1, 0 / 0.00-1, 100.00-1                      +section+
0, 20, 19, 1, 0 / 0.00-1, 100.00-1                      +section+
0, 20,  0, 1, 0 / 0.00-1, 100.00-1                      +section+
0, 20,  0, 1, 0 / 0.00-1, 100.00-1                      +section+
0, 20,  0, 1, 0 / 0.00-1, 100.00-1                      +section+
0, 20,  0, 1, 0 / 0.00-1, 100.00-1                      +section+
0, 20,  0, 1, 0 / 0.00-1, 100.00-1                      +section+
0, 20,  0, 1, 0 / 0.00-1, 100.00-1                      +section+
0, 20,  0, 1, 0 / 0.00-1, 100.00-1

波形描述

20, 1, 16

参数 值 含义
休息时长 20 20 x 0.1 = 2.0 秒
速度倍率 1 1x 正常速度
未知 16 默认值

小节 1 (唯一启用的小节)

0, 30, 44, 2, 1 / 0.00-1, 33.30-0, 66.65-0, 100.00-1

小节参数:

参数 值 查表 含义
频率A 0 FREQ[0] = 10ms 100 Hz (冲击感)
频率B 30 FREQ[30] = 40ms 25 Hz (缓慢)
小节时长 44 TIME[44] = 4.5s 持续 4.5 秒
频率模式 2 节内渐变 频率从 100Hz 渐变到 25Hz
小节开关 1 启用

脉冲元形状 (4 根竖条 = 0.4s 一个周期):

竖条 强度 类型 说明
1 0.00% 锚点 起始,无输出
2 33.30% 插值 线性上升
3 66.65% 插值 继续上升
4 100.00% 锚点 峰值,满强度

这组脉冲元形成了一个 0% → 100% 的线性爬升,每 0.4s 重复一次。配合频率从快到慢的渐变,产生"弹跳"的触感。

小节 2~10 (全部禁用)

所有剩余小节的 小节开关 = 0,不会播放。这些是 APP 导出时的占位数据。