feat(rhythm): 鼓手模式重构——屏幕六区鼓组 + 无鼓伴奏合拍(用户裁定重构)
- 屏幕3列×2行六区鼓组(列=声像左中右/行=音高上亮下沉),六件程序合成打击乐,三重冗余蒙眼可辨
- 无鼓伴奏BGM上跟随领奏 call&response + 加花句;3曲90/105/120 BPM解锁制,BPM实测89.99/105.00/120.01
- 引擎后向兼容扩展:onGesture补{x,y}坐标(单参回调零感知,15游戏+3引擎测试全量回归零失败)
- 判定简化:全部音符=分区点按零延迟,旧双击补偿/下滑折中退役;键盘Digit1-6+空格=家区
- 教学摸鼓认区(摸哪报哪,8s无触摸自动进阶)+重教≤2+降速DDA+归因真话律
- 保留旧作好评:跟随领奏核心/S~C评级/解锁制/判定口径/guide工程遗产
- 语音49id双性别+8key;R1+R2连续2轮4/4愿意玩P0=0裁定可交付;live直证33 Perfect dt≈0.00s
- 03号文档仅文末加取代指针;新设计24号;档案research/rhythm-drummer/;Mureka累计$1.35
This commit is contained in:
@@ -183,3 +183,12 @@ idle → intro(语音) → tut(3 步教学) → select(选曲,二周目起)
|
||||
6. 语音全表见 03-rhythm-voice-ids.md;现版 `voice/welcome/rules/tut_start/tut_done` 弃用,`grade_*`/`restart` id 沿用但文案变更(重录)。
|
||||
7. 结算画面:单击=再来一遍(同曲),右滑=下一首(若已解锁),下滑=回大厅。
|
||||
8. 更新 `web/rhythm/README.md`(玩法、手势表、进度结构)。
|
||||
|
||||
---
|
||||
|
||||
> **取代指针(2026-09-14,24 号裁定)**:本文档(及 03-rhythm-voice-ids.md)的
|
||||
> 施工依据地位已被 [24-rhythm-drummer.md](24-rhythm-drummer.md) +
|
||||
> [24-rhythm-voice-ids.md](24-rhythm-voice-ids.md) 取代——《节拍行者》重构为
|
||||
> 屏幕分区鼓手模式(6 区打击乐 + 无鼓伴奏,跟随领奏核心/评级/解锁/BPM 精确性
|
||||
> 延续)。本文仅作历史档案保留,正文一字不改;13 号文档 §4 rhythm 断言段
|
||||
> 同理冻结,新断言见 24 号文档 §11。
|
||||
|
||||
@@ -0,0 +1,416 @@
|
||||
# 24 · 《节拍行者》鼓手模式重构设计(rhythm / Drummer Mode)
|
||||
|
||||
> 用户裁定:现有模式「不错,保留」——跟随领奏的合拍玩法核心、S~C 评级、曲目解锁制、
|
||||
> BPM 精确性延续;整体重构为**屏幕分区打击乐**:屏幕划分区域,每区一种打击乐音效,
|
||||
> 玩家作为乐队鼓手与无鼓伴奏音乐合拍。本文取代 [03-rhythm-rebuild.md](03-rhythm-rebuild.md)
|
||||
> 的全部施工依据(03 号文档仅作历史档案,文末有取代指针;其 rhythm 判定好评口径
|
||||
> 「PERFECT ±0.15 / GOOD ±0.35」经 live 校准,本文沿用)。
|
||||
>
|
||||
> 语音台词全表在 [24-rhythm-voice-ids.md](24-rhythm-voice-ids.md)。断言清单在 §12。
|
||||
|
||||
---
|
||||
|
||||
## 0. 可行性勘察决策(阶段零结论)
|
||||
|
||||
### 0.1 引擎手势事件是否携带坐标?
|
||||
|
||||
**不携带。** `web/engine/gesture.js` 的 `onGesture(g)` 只传手势名字符串,
|
||||
触摸坐标只在引擎内部用于滑动/点按判定,回调时丢弃。
|
||||
|
||||
### 0.2 两条路线的权衡
|
||||
|
||||
| | (a) 引擎扩展:第二参数透传坐标 | (b) 游戏层自建 touch 监听 |
|
||||
|---|---|---|
|
||||
| 改动面 | gesture.js 每个 onGesture 调用点补 `{x,y}` 第二参;docs/web-engine-api.md 同步 | 游戏层加 touchstart 记录坐标 |
|
||||
| 既有游戏影响 | **零**——全部 15 款游戏的回调都是单参 `(g) =>`,多余实参被忽略,手势分类/震动/时序逐字节不变(同 opts.pan / immediateTap / tapcancel 先例) | 零(不碰引擎) |
|
||||
| 键盘通道坐标 | **免费**:空格虚拟指针本就走 `handleDown(keyCenter)`,天然拿到元素中心坐标 | 无法区分键盘 tap 与残留触摸坐标,需自行加时效启发式(脏) |
|
||||
| 保持的引擎福利 | haptics 自动震动、多指守卫、tapcancel、长按快进 window 事件、双击状态机、键盘三通道全部保留 | 全部丢失,需在游戏层重写(双击窗/tapcancel/快进事件) |
|
||||
| 代价 | 全量回归:15 游戏 playtest + guide.test + engine-voice + engine-input + docs 同步(铁律) | 回归只需 rhythm 自身,但收获一个与引擎并行的第二输入状态机(长期维护债) |
|
||||
|
||||
### 0.3 决策:路线 (a),引擎后向兼容扩展
|
||||
|
||||
- `attachGestures` 的全部 `onGesture(...)` 调用补第二实参 `{x, y}`(视口像素
|
||||
clientX/clientY 语义):tap 类事件(含 immediateTap 序曲 tap、双击改判、tapcancel)
|
||||
与 longpress/longpressend 传**按下点**;四向滑动传**滑动起点**(出手瞄准位置);
|
||||
键盘通道传虚拟指针坐标(`keyCenter()`,方向键滑动同样补)。
|
||||
- 缺省行为逐字节不变:不加 config 开关、不改任何判定阈值与震动;回调签名扩为
|
||||
`(g, info?: {x, y})`,单参回调零感知。
|
||||
- 回归义务(已执行,见 research/rhythm-drummer/round0/engine-regression.md):
|
||||
15 游戏 playtest + web/harness/guide.test.mjs + engine-voice.test.mjs +
|
||||
engine-input.test.mjs 全绿,docs/web-engine-api.md §gesture 同步。
|
||||
|
||||
### 0.4 打击乐音色:程序合成
|
||||
|
||||
六区音色 + accent 全部 numpy 程序合成(`tools/gen_rhythm_syn.py`,
|
||||
gen_cipher_syn.py 同款工艺):可精确控制起音/衰减(盲玩靠起音对拍)、
|
||||
零授权问题、零网络延迟、与 BGM 调性关系无关(打击乐无调性)。
|
||||
|
||||
### 0.5 BGM:无鼓伴奏是硬需求
|
||||
|
||||
玩家就是鼓手——BGM 含鼓则叠打混乱。Mureka instrumental 生成时 prompt
|
||||
显式 `no drums, no percussion`,`tools/bpm_precise.py` 梳状扫描实测 BPM
|
||||
(节奏类硬性要求,误差 >0.5 则 atempo 拉伸,R3 track90 先例),
|
||||
无缝循环后处理沿用批次 1-4 工艺(强 onset 起点 → 整数小节裁剪 →
|
||||
首尾 3s acrossfade → loudnorm I=-20 → ogg q3 + m4a 128k)。
|
||||
|
||||
---
|
||||
|
||||
## 1. 概述与继承/舍弃清单
|
||||
|
||||
**一句话玩法**:屏幕是一面 3列×2行 的鼓组。系统(领奏)在无鼓伴奏上敲一小节
|
||||
节奏型,玩家在下一小节的相同拍点敲相同的鼓。曲子从 90 BPM 打到 120 BPM,
|
||||
拿 B 级以上解锁下一首。
|
||||
|
||||
### 1.1 继承自旧作(用户裁定「保留」的部分)
|
||||
|
||||
| 项 | 说明 |
|
||||
|---|---|
|
||||
| 跟随领奏 call & response 核心循环 | 领奏 1 小节 → 应答 1 小节,逐乐句推进 |
|
||||
| 时值判定口径 | PERFECT ±0.15s / GOOD ±0.35s(live round1 §13 校准值,吸收蓝牙延迟) |
|
||||
| 计分与评级 | Perfect=2/Good=1/Miss=0,rate = 得分/(2×总音符),S≥0.95 / A≥0.85 / B≥0.70 / C 其余;不掉血不中断,歌照唱完 |
|
||||
| 曲目解锁制 | 曲目 n 拿到 B 级 → 解锁 n+1;localStorage + 已登录 PUT 同步 |
|
||||
| BPM 精确性 | 谱面/判定全部锚定 BGM 实测 BPM 网格(bpm_precise 实测 + atempo 修正) |
|
||||
| 工程质量遗产 | AudioContext 预排程泵(40ms + LOOKAHEAD 0.6s)、BGM 手动 `src.start(t0)` 对网格、模态菜单断点续播、`_speakGuarded` 看门狗语音链、结算后 menu pad 看门狗、旁白单击跳过/长按快进豁免、guide 层全量接入(状态签名/gd_answer/gd_miss 归因/教学 DDA 降速/count-in 恢复) |
|
||||
|
||||
### 1.2 舍弃/替换
|
||||
|
||||
| 旧 | 新 | 理由 |
|
||||
|---|---|---|
|
||||
| 手势→乐器映射(tap=kick、left=闭镲…6 手势 6 音色) | 屏幕分区→乐器(6 区 6 音色,tap 即敲击) | 用户裁定的新核心 |
|
||||
| 滑动/双击作为音符类型(SWIPE_DELAY 0.15 / DOUBLE_DELAY 0.20 补偿、双击序曲撤销) | **全部音符 = 分区点按**,immediateTap 按下即判,零识别补偿 | 打击乐每次出手都是「敲一下」,滑动从音符类型降级为纯导航;双击=同区连击两下(两声都合法),**不再需要双击序曲撤销账簿** |
|
||||
| BGM 含鼓组(track90/105/120 有鼓) | 无鼓伴奏 | 玩家是鼓手 |
|
||||
| 下滑呼菜单的「down 音符临近」折中(live P0 加窗/复活窗一整套) | 下滑**无条件**呼菜单 | 音符全是点按,下滑永不与音符冲突;序曲 tap 仍出 ghost 音但判定时由 tapcancel 撤销 |
|
||||
| 教学 T1-T3(手势记忆) | 分区心智模型教学(摸鼓认区 → 跟打) | 「摸到哪是哪」的建立是设计核心(§6) |
|
||||
| 旧语音表 31 句 | 新表 41 句(+沿用向导 8 句 = 49 句双性别,配额见 §8) | 分区教学与区名播报需要新句 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 屏幕分区与音色映射
|
||||
|
||||
### 2.1 分区布局(3 列 × 2 行,纯听觉可辨是硬约束)
|
||||
|
||||
```
|
||||
┌─────────┬─────────┬─────────┐
|
||||
│ TL 左上 │ TC 上中 │ TR 右上 │ 上排:清亮/高频
|
||||
│ 踩镲 │ 高嗵 │ 吊镲 │ pan: -0.6 / 0 / +0.6
|
||||
├─────────┼─────────┼─────────┤
|
||||
│ BL 左下 │ BC 下中 │ BR 右下 │ 下排:低沉/低频
|
||||
│ 军鼓 │ 底鼓 │ 低嗵 │ pan: -0.6 / 0 / +0.6
|
||||
└─────────┴─────────┴─────────┘
|
||||
```
|
||||
|
||||
**双轴心智模型**(教学的主话术):
|
||||
- **列 = 声像**:左列在左耳、中列在中央、右列在右耳(opts.pan 引擎已支持)。
|
||||
- **行 = 音高**:上排清亮、下排低沉。
|
||||
- 在双轴之上,六件乐器音色本身两两不同(镲/嗵/鼓),盲玩家有
|
||||
「声像 + 音高 + 音色」三重冗余线索。
|
||||
|
||||
### 2.2 分区 ↔ 音色 ↔ 声像总表
|
||||
|
||||
| 区码 | 位置 | 乐器 | sfx id | pan | 合成要点(起音硬、≤0.5s 残响) |
|
||||
|---|---|---|---|---|---|
|
||||
| TL | 左上 | 闭合踩镲 | `sfx/dm_hat` | -0.6 | 6-10kHz 高通噪声,0.06s 急衰减 |
|
||||
| TC | 上中 | 高音嗵 | `sfx/dm_tomhi` | 0 | 200→140Hz 正弦扫频 + 轻皮噪,0.25s |
|
||||
| TR | 右上 | 吊镲 | `sfx/dm_crash` | +0.6 | 4-12kHz 噪声 + 非谐波泛音列,1.2s 长尾 |
|
||||
| BL | 左下 | 军鼓 | `sfx/dm_snare` | -0.6 | 200Hz 鼓皮 + 1-4kHz 带通噪声,0.2s |
|
||||
| BC | 下中 | 底鼓 | `sfx/inst_kick`(沿用旧 id) | 0 | 130→45Hz 正弦扫频 + 触击瞬态,0.25s |
|
||||
| BR | 右下 | 低音嗵 | `sfx/dm_tomlo` | +0.6 | 120→75Hz 正弦扫频 + 轻皮噪,0.3s |
|
||||
|
||||
- 附加层:`sfx/dm_accent`(Perfect 叠加亮音,程序合成木鱼 1.5kHz 短音)。
|
||||
- 分区判定:`zoneOf(x, y)` 以 `#game-root` 的 `getBoundingClientRect()` 为界,
|
||||
y 上半 = 上排、y 下半 = 下排;x 三等分 = 左/中/右。无布局环境(mock/harness)
|
||||
由调用方显式传 payload;payload 缺失时落 BC(中央家区,兜底不炸)。
|
||||
- **键盘平权**(游戏层 keydown,引擎键盘通道之外的补充,数字键引擎本就不拦截):
|
||||
`Digit1/2/3/4/5/6`(及小键盘)= TL/TC/TR/BL/BC/BR,按下即发、零延迟;
|
||||
引擎空格 tap 落在元素几何中心 → 判 BC(「家」)。选曲/菜单/结算态数字键不生效
|
||||
(那些态沿用手势导航)。
|
||||
|
||||
### 2.3 领奏音色 = 玩家音色
|
||||
|
||||
领奏音符与玩家敲击走**同一批 sfx**(同音色同声像)——做对时听到自己在和
|
||||
「另一个鼓手」合奏,这是旧作好评的「演奏感」来源,保留。
|
||||
|
||||
---
|
||||
|
||||
## 3. 玩法循环与状态机
|
||||
|
||||
### 3.1 循环
|
||||
|
||||
```
|
||||
选曲 → 数拍导入(1 小节底鼓×4,含节拍轻震) → 逐乐句(领奏 1 小节 + 应答 1 小节 [+ 休止])
|
||||
→ 过门/加花(领奏 1 小节密集加花 + 应答 1 小节) → 终句吊镲 → 结算评级
|
||||
```
|
||||
|
||||
### 3.2 状态机
|
||||
|
||||
```
|
||||
idle → intro(语音) → tut(分区教学) → select(选曲,二周目起) → countin → main(逐乐句/加花) → end(结算)
|
||||
↑_________________|
|
||||
```
|
||||
|
||||
- 数拍小节由游戏排程 4 记数拍(BGM 无鼓,数拍只能靠鼓手自己)+ 每拍 [8] 轻震:正片用底鼓 inst_kick×4(guide.test G3 的 _sched 锚点,13 号冻结文档不可改),教学步用木鱼 click(dm_accent,guide.test G2 要求教学 _sched 里 kick=领奏音)。
|
||||
- 每曲第一个应答窗口前 1 小节落 `gd_answer` + turn earcon(旧作 G1 修正沿用)。
|
||||
- 模态菜单(下滑呼出):单击循环 [继续演奏 / 回大厅]、双击确认、上滑帮助、
|
||||
下滑关闭;暂停真冻结(泵停、BGM 断点记 offset),恢复时全网格平移 +
|
||||
4 拍 count-in(guide full 档先播 `gd_count`,每局限 1 次,round3 G3 全套沿用)。
|
||||
|
||||
---
|
||||
|
||||
## 4. 谱面与难度曲线
|
||||
|
||||
### 4.1 记号
|
||||
|
||||
`拍:区码`,1 小节 4 拍,`x.5` = 八分反拍。乐句 = 领奏 1 小节 + 应答 1 小节;
|
||||
加花 = 特殊乐句(fill 标记),领奏为八分音符密集型,最后一音恒为 TR 吊镲收束。
|
||||
|
||||
### 4.2 曲目一《启程》90 BPM(教学曲,8 句 + 终曲加花,≈65s)
|
||||
|
||||
| 句 | 领奏节奏型 | 音符数 |
|
||||
|---|---|---|
|
||||
| 1 | `1:BC, 3:BC` | 2 |
|
||||
| 2 | `1:BL, 3:BR` | 2 |
|
||||
| 3 | `1:BC, 2:BC, 3:BL` | 3(双击底鼓引入同区连击) |
|
||||
| 4 | `1:BL, 2:BR, 3:BC` | 3 |
|
||||
| 5 | `1:BC, 2:BL, 3:BC, 4:BR` | 4 |
|
||||
| 6 | `1:TL, 3:BL, 4:BC` | 3(上排首次进正片) |
|
||||
| 7 | `1:BC, 2:TL, 3:BC, 4:TR` | 4 |
|
||||
| 8 | `1:BL, 2:BR, 3:TL, 4:BC` | 4 |
|
||||
| 终曲加花 | `1:BC, 1.5:BC, 2:BC, 2.5:BL, 3:BL, 3.5:BC, 4:TR` | 7(全曲唯一反拍,仅限加花) |
|
||||
|
||||
前 4 句应答后各休 1 小节,其余不休。
|
||||
|
||||
### 4.3 曲目二《追风》105 BPM(10 句 + 中途加花 + 终曲加花,≈80s)
|
||||
|
||||
| 句 | 领奏节奏型 | 音符数 |
|
||||
|---|---|---|
|
||||
| 1 | `1:BC, 3:BR` | 2 |
|
||||
| 2 | `1:BL, 2:BL, 3:BC` | 3 |
|
||||
| 3 | `1:TL, 3:BL, 4:BR` | 3 |
|
||||
| 4 | `1:BC, 2:BL, 3:BC, 4:TL` | 4 |
|
||||
| 5 | `1:BC, 2.5:BR, 3:BC` | 3(首个反拍) |
|
||||
| 中途加花 | `1:BL, 1.5:BL, 2:BC, 2.5:BC, 3:BR, 3.5:BR, 4:TR` | 7 |
|
||||
| 6 | `1:BL, 2:TL, 3.5:BR, 4:BC` | 4 |
|
||||
| 7 | `1:BC, 2:BL, 3:BR, 3.5:TL` | 4 |
|
||||
| 8 | `1:BR, 1.5:BL, 3:BC, 4:TR` | 4 |
|
||||
| 9 | `1:BC, 2.5:TL, 3:BC, 4:BL` | 4 |
|
||||
| 10 | `1:BL, 2:BR, 3:TL, 4:BC` | 4 |
|
||||
| 终曲加花 | `1:BC, 1.5:BL, 2:BC, 2.5:BL, 3:BC, 3.5:BR, 4:TR` | 7 |
|
||||
|
||||
前 2 句应答后各休 1 小节;第 5 句与中途加花之间不休。
|
||||
|
||||
### 4.4 曲目三《星爆》120 BPM(10 句 + 中途加花 + 终曲加花,≈75s)
|
||||
|
||||
| 句 | 领奏节奏型 | 音符数 |
|
||||
|---|---|---|
|
||||
| 1 | `1:BC, 2:BL, 3:BC, 4:BL` | 4 |
|
||||
| 2 | `1:TL, 2:BL, 3:TL, 4:BC` | 4 |
|
||||
| 3 | `1:BR, 2:TR, 3:BR, 4:BL` | 4 |
|
||||
| 4 | `1:BC, 2.5:TL, 3:BC, 4:BR` | 4 |
|
||||
| 5 | `1:BL, 1.5:BR, 2.5:BL, 3:BC` | 4 |
|
||||
| 6 | `1:BC, 2:TL, 2.5:BL, 3:BC, 4:TR` | 5 |
|
||||
| 中途加花 | `1:TL, 1.5:TL, 2:BL, 2.5:BL, 3:BC, 3.5:BC, 4:TR` | 7 |
|
||||
| 7 | `1:BR, 2:BC, 3:BL, 3.5:BR, 4:TL` | 5 |
|
||||
| 8 | `1:BC, 1.5:BC, 2.5:BL, 3:BC, 3.5:TL, 4:TR` | 6(高潮句) |
|
||||
| 9 | `1:BL, 2:BC, 2.5:BR, 3:TL, 4:BL` | 5 |
|
||||
| 10 | `1:BC, 2:BR, 3:BC, 3.5:TL, 4:BL` | 5 |
|
||||
| 终曲加花 | `1:BC, 1.5:BL, 2:BC, 2.5:BL, 3:BC, 3.5:BC, 4:TR` | 7 |
|
||||
|
||||
全曲不休。
|
||||
|
||||
### 4.5 难度曲线规则(改谱遵守)
|
||||
|
||||
1. 乐句长度:曲目一 2→4 音、曲目二 2→4 音、曲目三 4→6 音;同曲单调不减
|
||||
(终曲加花不计入)。
|
||||
2. 反拍(x.5):曲目一**只允许出现在加花**;曲目二第 5 句起、普通乐句每句至多
|
||||
1 个反拍音;曲目三不限。加花为八分音符基底,不受此限。
|
||||
3. 同一分区连续出现 ≤2 次(同区双击是合法手法,三连击禁止——盲玩极限)。
|
||||
4. 同一乐句内分区种类 ≥2(纯底鼓句仅允许曲目一句 1)。
|
||||
5. 相邻反拍连续位禁止左列↔右列大跳(`BL↔BR` 相邻反拍只允许曲目三)——
|
||||
声像跳变过快在耳机上易混(旧作 §3.5-6 同款)。
|
||||
6. 加花尾音恒为 TR 吊镲(收束感 + 吊镲长尾盖住应答结束)。
|
||||
|
||||
---
|
||||
|
||||
## 5. 时值判定与计分评级
|
||||
|
||||
```js
|
||||
const PERFECT = 0.15; // Perfect 窗口 ±150ms(live round1 §13 校准)
|
||||
const GOOD = 0.35; // Good 窗口 ±350ms(吸收蓝牙延迟)
|
||||
const LOOKAHEAD = 0.6; // 调度前瞻(秒)
|
||||
const PUMP_MS = 40; // 调度泵周期
|
||||
```
|
||||
|
||||
- **判定时刻 = 触摸/按键时刻**:immediateTap 按下即发 tap(零补偿);
|
||||
键盘数字键 keydown 即发(零补偿)。旧作的 TAP_DELAY/SWIPE_DELAY/DOUBLE_DELAY
|
||||
补偿与旧引擎闩锁、双击序曲撤销、超时复活窗**整体退役**(没有滑动/双击音符了)。
|
||||
- 归属:同分区最近未判定音符 |dt|≤GOOD → 出手即播该区音色(pan 随行),
|
||||
Perfect 叠 `sfx/dm_accent`;|dt|≤GOOD×0.5 的异分区音符被敲 = 判 Miss
|
||||
(错鼓);窗口外 = 自由演奏(出声音不判定)。
|
||||
- **序曲 tap 治理**(immediateTap 代价,旧作账簿简化版):每次按下先发 tap
|
||||
(出声+可认领),转滑动/长按/触摸取消时引擎补 `tapcancel` → 撤销该 tap 的
|
||||
认领(声音收不回当 ghost 音,判定/统计必须更正且不计 Miss)。双击不改判
|
||||
账簿——两下敲击各自独立成立。
|
||||
- Miss 超时:expected + GOOD + 0.10s 未应答 → 闷镲反馈音
|
||||
(`sfx/dm_hat` 降调 0.5× 复用,零新资产)+ error 震动。
|
||||
- 长按 = 死输入:Miss 反馈音 + error 震动,不判定不归属(演奏期长按快进
|
||||
`setRateBoostEnabled(false)` 豁免照旧)。
|
||||
- 计分/评级/连击:Perfect=2 / Good=1 / Miss=0;rate = 得分/(2×总音符);
|
||||
S≥0.95 / A≥0.85 / B≥0.70 / C 其余;16 连击 success 震、乐句全 Perfect
|
||||
[20,40,20]、结算 S/A success 震,全部沿用旧作。
|
||||
|
||||
---
|
||||
|
||||
## 6. 教学编排(分区心智模型,设计核心)
|
||||
|
||||
蒙眼玩家如何建立「摸到哪是哪」?分四步,全部零惩罚(教学不计分、不出
|
||||
Miss 音),单步重教 ≤2 次(第 2 次失败 → 领奏降速 25% 重演一次 → 再败跳过,
|
||||
旧作 G2 DDA 沿用):
|
||||
|
||||
| 步 | 内容 | 机制 |
|
||||
|---|---|---|
|
||||
| T0 摸鼓认区 | `tut_map` 讲双轴模型(横三列=左中右声像,竖两行=上亮下沉)→ `tut_probe` 进入**探索模式**:随便摸,敲到哪区就播哪区音色 + 区名(`zone_*` 六句) | 摸到 ≥3 个不同区自动进 T1(每区名每轮教学只播一次,重复摸只出声不报名,防刷屏);**防呆:8s 无触摸自动进 T1**(摸过 1-2 区再宽限 8s),探索是礼物不是门槛——guide.test G2 等无触摸驱动依赖此路径 |
|
||||
| T1 家区底鼓 | `tut_z_kick`:BC 是家。数拍 1 小节 → 领奏 `1:BC` → 下一小节应答 | 做错:纠正链(§7 归因)→ 重播领奏重试 |
|
||||
| T2 左右下排 | `tut_z_sides`:BL 军鼓、BR 低嗵。领奏 `1:BL, 3:BR` → 跟打 | 同上 |
|
||||
| T3 上排三音 | `tut_z_patt`:TL 踩镲、TC 高嗵、TR 吊镲。领奏 `1:TL, 2:TC, 3:TR` → 跟打 | 同上;通过后 `tut_done` 进曲目一 |
|
||||
|
||||
- 教学在曲目一无鼓 BGM 上进行;每步领奏前都有 1 小节底鼓数拍(教学期
|
||||
count-in 不省)。
|
||||
- 下滑跳过教学(`tut_skip`)保留;教学 Miss 归因真话律沿用(没出手报
|
||||
「这拍没接」gd_miss_none,不谎报早晚)。
|
||||
- 加花预告:`tut_fill`「最后有加花,跟着我连打。」在**曲目一终曲加花领奏
|
||||
前 1 小节**播,每账号一次。
|
||||
|
||||
---
|
||||
|
||||
## 7. 连击/错拍反馈
|
||||
|
||||
| 时机 | 反馈 |
|
||||
|---|---|
|
||||
| 出手敲对 | 该区音色(pan 随行)+ Perfect 叠 accent |
|
||||
| 敲错区(异分区音符半窗内被敲) | 该区音色照样出声(自由演奏语义)+ 闷镲 Miss 音 + error 震 + 播报实际敲中的区名(`zone_*`)+ `retry_wrong`「敲错鼓了,再听一遍。」(教学期)/ gd_miss 归因(正片,连 2 Miss 一次) |
|
||||
| 早/晚(窗内同区但超 Perfect) | 不出错音(Good 照播),教学期事后归因 `retry_early`/`retry_late` |
|
||||
| 没出手 | 音符超时闷镲 + error 震;教学归因 gd_miss_none「这拍没接」 |
|
||||
| 16 连击 / 乐句全 Perfect / 解锁 / S·A 结算 | success 震 / [20,40,20] / success+[20,40,20] / success(沿用旧作) |
|
||||
| 曲目过半 | `mid_song`(ducking 到 1/4 的旧作工艺沿用) |
|
||||
|
||||
---
|
||||
|
||||
## 8. 语音配额(拥挤控制)
|
||||
|
||||
打击乐密度高,语音是稀缺通道。全表 49 id 双性别(41 新 + 8 向导沿用),
|
||||
运行时配额:
|
||||
|
||||
1. **应答小节内零语音**(含 guide 插播——idle-only 语义天然保证)。
|
||||
2. 教学纠正:每次失败至多 1 条纠正链(归因 1 句 + 重听 1 句),同一步不叠加。
|
||||
3. 正片:连 2 Miss 才播 gd_miss,**同曲一次**;mid_song 每曲一次;
|
||||
加花预告 tut_fill 每账号一次。
|
||||
4. 探索模式区名播报每区每轮教学一次(重复摸只出声)。
|
||||
5. 结算链 = grade + [new_best_combo] + [unlock] + restart,无其他插话;
|
||||
结算 BGM 看门狗按链长缩放(旧作 P1 修复沿用)。
|
||||
6. 语音风暴保险丝(引擎 3s/5 次)是上届,游戏层不得绕过它连播同 id。
|
||||
|
||||
---
|
||||
|
||||
## 9. 音频资产规格
|
||||
|
||||
### 9.1 打击乐 sfx(程序合成,tools/gen_rhythm_syn.py 新建)
|
||||
|
||||
7 件 one-shot:`inst_kick(沿用旧 id)/ dm_snare / dm_hat / dm_tomhi / dm_crash /
|
||||
dm_tomlo / dm_accent`。QC 红线(gen_cipher_syn.py 同款):去直流 + 首尾 8ms cos² 淡化 +
|
||||
编码后解码回读真峰值 ≤ -3dBFS(MDCT 过冲坑,超限自动降档重编)。起音必须硬
|
||||
(盲玩对拍靠起音);kick/snare/hat ≤0.3s,tom ≤0.4s,crash ≤1.3s,accent ≤0.1s。
|
||||
|
||||
### 9.2 BGM(3 首无鼓伴奏,Mureka ≤$0.30)
|
||||
|
||||
| 曲 | BPM | prompt 特征 |
|
||||
|---|---|---|
|
||||
| track90《启程》 | 90 | bright optimistic pop rock backing, bass guitar + strummed acoustic + light synth pads, **no drums no percussion**, steady 90 bpm, A minor |
|
||||
| track105《追风》 | 105 | driving energetic pop backing, punchy bass + rhythmic guitar chops + synth, **no drums no percussion**, steady 105 bpm, A minor |
|
||||
| track120《星爆》 | 120 | high energy synth rock backing, aggressive bass + arpeggio synth + power chords, **no drums no percussion**, steady 120 bpm, A minor |
|
||||
|
||||
- `bpm_precise.py` 实测:|偏差|>0.5 BPM 则 atempo 拉伸到标称(R3 track90 先例),
|
||||
成品复测记录台账。
|
||||
- 后处理:强 onset 起点 → 整数小节裁剪(时长为 4 拍整数倍)→ 末 2 拍与开头
|
||||
acrossfade(tri) 无缝循环 → loudnorm I=-20/TP=-2/LRA=11 → 44.1kHz → ogg q3 + m4a 128k。
|
||||
- 旧 track90/105/120(含鼓)删除;`bgm/menu`(Mureka 状态曲,无鼓问题不影响
|
||||
玩法——menu pad 不与演奏同响)保留沿用。
|
||||
|
||||
### 9.3 语音
|
||||
|
||||
见 24-rhythm-voice-ids.md:41 新 id 双性别(Qwen3-TTS,flock GPU),
|
||||
gen_voice_dual.py rhythm 段全量替换;`--check`(时长/峰值/两性离群)+
|
||||
`--convert`(ogg q3 + m4a 128k)。废弃 id(tut_1/tut_2/tut_3/retry_gesture
|
||||
及旧 welcome/rules/retry_* 文案)的音频文件随 convert 后清理删除。
|
||||
|
||||
---
|
||||
|
||||
## 10. 进度存储
|
||||
|
||||
沿用旧作 schema 1 结构(`{tutorialDone, unlocked, grades, bestCombo, summary}`),
|
||||
key `soundgame.rhythm.progress` 不变;PUT `/api/progress` 带 summary
|
||||
(`《曲名》X级 · 已解锁N/3首` 取最高评级曲目)。解锁规则不变(B 级解锁下一首)。
|
||||
结算手势:单击=再来一遍(同曲)、右滑=下一首(已解锁)、下滑=回大厅,不变。
|
||||
|
||||
---
|
||||
|
||||
## 11. 断言清单(web/rhythm/test/playtest.mjs 覆盖全集)
|
||||
|
||||
> 13 号文档 §4 rhythm 段是旧玩法的断言,已被本文取代但**不回改**(13 号
|
||||
> 文档冻结);本节是 24 号文档的断言明细,按 §编号可被测试与评审引用。
|
||||
|
||||
- **A1 分区映射**:`zoneOf` 3×2 九宫边界正确(角落/边界点逐一断言);payload
|
||||
缺失兜底 BC。
|
||||
- **A2 判定窗**:|dt|≤0.15 → Perfect(+accent 叠加);0.15<|dt|≤0.35 → Good;
|
||||
|dt|>0.35 同区出手 = 自由演奏(出声不判定、不判 Miss)。
|
||||
- **A3 错鼓 Miss**:异分区音符 GOOD 半窗内被敲 → Miss(闷镲 + error 震 +
|
||||
combo 清零;区名播报限教学期——正片错音的归因就是那一声敲错的音色本身,不再叠语音(配额)。
|
||||
- **A4 超时 Miss**:expected+0.45s 无应答 → Miss(GOOD 0.35 + 放宽 0.10)。
|
||||
- **A5 序曲 tap 撤销**:immediateTap 按下认领 → 引擎 tapcancel → 认领撤销
|
||||
且不计 Miss(统计回滚)。
|
||||
- **A6 双击=两连击**:300ms 内同区两 tap + doubletap → 两次敲击各自独立
|
||||
(可认领两个相邻音符/一次认领一次自由演奏),无撤销、无崩溃。
|
||||
- **A7 教学流程**:T0 探索摸 3 区(区名每区一次)→ T1-T3 跟打通过 →
|
||||
`tutorialDone`;全程零 Miss 音、零计分。
|
||||
- **A8 教学重教**:单步失败 2 次 → 降速 25% 重演(gd_slow,每教学局 1 次)→
|
||||
再败跳过(retry_skip)不卡死;归因真话律(没出手 → gd_miss_none)。
|
||||
- **A9 数拍**:曲目开始先排 4 记底鼓 count-in(1 小节)再进句 1 领奏;
|
||||
网格对齐 BGM t0。
|
||||
- **A10 菜单**:main 中下滑**无条件**呼菜单(无 down 音符折中);暂停冻结
|
||||
(泵停、BGM 断点);恢复后 cue.expected/_bgmT0 平移量 = 暂停时长 +
|
||||
count-in 小节;guide full 档恢复先播 gd_count(每曲限 1 次)。
|
||||
- **A11 加花**:fill 句领奏为八分密集 + 尾音 TR;应答窗口与普句同规则;
|
||||
曲目一终曲加花前 1 小节播 tut_fill(每账号一次)。
|
||||
- **A12 结算评级**:全 Perfect → S + `grades.song1==='s'` + `unlocked===2` +
|
||||
unlock_song2 播报;B 级也解锁;C 级不解锁。rate 公式与阈值逐档断言。
|
||||
- **A13 结算导航**:单击=同曲重开、右滑=下一首(未解锁播 song_locked)、
|
||||
song3 末位右滑播 restart 不播 song_locked(旧作裁定①回归)。
|
||||
- **A14 连击里程碑**:16 连击 success 震、乐句全 Perfect [20,40,20]。
|
||||
- **A15 mid_song**:曲中点播报且领奏 duck 到 1/4、播完恢复。
|
||||
- **A16 进度同步**:PUT body 含 summary/grades/unlocked/bestCombo;B 级提升
|
||||
才覆写 grades。
|
||||
- **A17 语音配额**:应答小节内零 voice 调度;gd_miss 同曲一次;探索区名
|
||||
每区一次(转写级断言放 transcribe 剧本核)。
|
||||
- **A18 键盘平权**:Digit1-6 注入 = 对应区命中(零延迟判定);空格 tap
|
||||
(元素中心坐标)→ BC;选曲态数字键无效。
|
||||
- **A19 guide 接入**:select=menu / main=battle / end=settle 状态签名同点;
|
||||
首个应答窗口前 1 小节 gd_answer+turn。
|
||||
- **A20 资产完整**:check_all_assets.py rhythm 段全绿(含新 sfx/bgm/voice 双性别)。
|
||||
- **A21 旁白跳过**:intro/tut(引导语音)/select/end 语音播放中单击=跳句(12 号
|
||||
文档 §1.2);main 演奏期单击是演奏不跳。
|
||||
- **A22 全局**:启动遮罩前无音频;无未捕获异常;settings.voice 切换下一句生效;
|
||||
bgm=0 时不加载 BGM。
|
||||
- **A23(R1 F3)** 教学没出手失败的纠正链 retry_listen 只播一次(不二连复读)。
|
||||
- **A24(R1 F1)** 曲尾 3s 内连 2 Miss 不插播 gd_miss(结算链不被顶断)。
|
||||
- **A25(R1 F2)** 探针三连摸的三个区名全部播完不被掐断,教学句 queue 其后
|
||||
(进阶延迟 150ms 起步:引擎入队判定在 await 加载之前,同步连发会误判)。
|
||||
|
||||
---
|
||||
|
||||
## 12. 资产预算与台账
|
||||
|
||||
- 语音:49 id × 2 性别 = 98 文件(Qwen3-TTS,flock .gpu.lock,零 API 费)。
|
||||
- 打击乐:7 件程序合成(零成本)。
|
||||
- BGM:3 任务 × $0.03,每首至多 1 次重提 → 上限 $0.18(预算线 $0.30,
|
||||
累计 $1.26/$2.00 → 本轮后 ≤$1.44+$0.18=$1.56 上限)。台账追加
|
||||
tools/mureka_log.md。
|
||||
- 开发/测试/转写:零成本(复用 harness)。
|
||||
@@ -0,0 +1,115 @@
|
||||
# 24a · 《节拍行者》鼓手模式语音台词表(voice ids,24 号施工录音依据)
|
||||
|
||||
> 双性别:male=Uncle_Fu / female=Vivian(gen_voice_dual.py SPEAKERS 沿用)。
|
||||
> instruct 对:「低沉醇厚的男声,像节奏游戏主持人,平稳有力」/「活力清晰的
|
||||
> 年轻女声,像节奏游戏主持人,情绪饱满但不夸张」——全表同一常量。
|
||||
> 主表 41 句 + 向导层沿用 9 句(gd_*,已在库不重录)= 50 句双性别(§8 配额)。
|
||||
> 废弃:tut_1 / tut_2 / tut_3 / retry_gesture(手势教学时代遗产,音频随
|
||||
> 本轮 convert 后删除)。
|
||||
|
||||
## W 组 · 开场与流程(5 句)
|
||||
|
||||
| id | 文案 |
|
||||
|---|---|
|
||||
| welcome | 欢迎来到节拍行者。今天你是乐队的鼓手,整面屏幕都是你的鼓。 |
|
||||
| welcome_back | 欢迎回来,鼓手。准备好了就开始。 |
|
||||
| tut_done | 很好,演出开始。 |
|
||||
| tut_skip | 跳过教学,直接开始。 |
|
||||
| mid_song | 过半了,保持。 |
|
||||
|
||||
## Z 组 · 分区教学与区名(12 句)
|
||||
|
||||
| id | 文案 |
|
||||
|---|---|
|
||||
| tut_map | 先认识你的鼓。屏幕横着分三列,左边、中间、右边;竖着分两行,上面清亮,下面低沉。随便摸一摸,听到哪面鼓,我就告诉你它在哪。 |
|
||||
| tut_probe | 摸到三个不同的地方,我们就开始。 |
|
||||
| tut_z_kick | 下面正中间,是底鼓,你的家。先听四下数拍,然后跟着我敲。 |
|
||||
| tut_z_sides | 左下是军鼓,右下是低嗵。一左一右,跟着打。 |
|
||||
| tut_z_patt | 上面一排更清亮。左上踩镲,上中高嗵,右上吊镲。听这一句,三个音。 |
|
||||
| tut_fill | 最后有一段加花,跟着我连打。 |
|
||||
| zone_tl | 左上,踩镲。 |
|
||||
| zone_tc | 上中,高嗵。 |
|
||||
| zone_tr | 右上,吊镲。 |
|
||||
| zone_bl | 左下,军鼓。 |
|
||||
| zone_bc | 下中,底鼓。 |
|
||||
| zone_br | 右下,低嗵。 |
|
||||
|
||||
## C 组 · 教学纠正(5 句)
|
||||
|
||||
| id | 文案 |
|
||||
|---|---|
|
||||
| retry_early | 早了,等鼓点再出手。 |
|
||||
| retry_late | 晚了,跟着鼓点走。 |
|
||||
| retry_wrong | 敲错鼓了,再听一遍。 |
|
||||
| retry_listen | 再听一遍,跟着来。 |
|
||||
| retry_skip | 没关系,我们先走下一句。 |
|
||||
|
||||
## S 组 · 选曲与解锁(7 句)
|
||||
|
||||
| id | 文案 |
|
||||
|---|---|
|
||||
| select_hint | 左右滑选曲目,单击开始,下滑回大厅。 |
|
||||
| song1_name | 第一首,启程,九十拍。 |
|
||||
| song2_name | 第二首,追风,一百零五拍。 |
|
||||
| song3_name | 第三首,星爆,一百二十拍。 |
|
||||
| song_locked | 这首还没解锁。上一首拿到 B 级以上就能解锁。 |
|
||||
| unlock_song2 | 新曲目解锁,追风! |
|
||||
| unlock_song3 | 新曲目解锁,星爆! |
|
||||
|
||||
## G 组 · 结算(6 句)
|
||||
|
||||
| id | 文案 |
|
||||
|---|---|
|
||||
| grade_s | S 级!准确率超过九成五,完美演出。 |
|
||||
| grade_a | A 级!准确率超过八成五,非常出色。 |
|
||||
| grade_b | B 级,准确率超过七成。不错,还能更好。 |
|
||||
| grade_c | C 级,准确率不到七成。别灰心,再来一遍。 |
|
||||
| new_best_combo | 新连击纪录! |
|
||||
| restart | 单击再来一遍,右滑下一首,下滑回大厅。 |
|
||||
|
||||
## M 组 · 菜单与规则(6 句)
|
||||
|
||||
| id | 文案 |
|
||||
|---|---|
|
||||
| rules | 规则:我敲一小节鼓,你在下一小节照着敲回来。鼓要选对,拍点也要对。 |
|
||||
| settings_hint | 音色、语速、背景音乐,请回大厅修改。 |
|
||||
| menu_main | 菜单。单击切换选项,双击确认。 |
|
||||
| menu_resume | 继续演奏。 |
|
||||
| menu_lobby | 回大厅。 |
|
||||
| skip_hint | 单击可跳过旁白。 |
|
||||
|
||||
## 向导层沿用(9 句,已在库,不重录不重转)
|
||||
|
||||
gd_answer「现在跟着我打。」/ gd_miss「慢了半拍,下一小节跟上我就行。」/
|
||||
gd_miss_early「抢拍了。等声音落下再滑。」/ gd_miss_late「慢了半拍。跟着节拍走。」/
|
||||
gd_miss_wrong「方向不对。跟着音色滑。」/ gd_miss_none「这拍没接。我停下的时候,就轮到你了。」/
|
||||
gd_slow「我放慢一些,跟着试试。」/ gd_count「四拍之后,继续。」
|
||||
(gd_miss_early/late/wrong 的「滑」字文案在 24 号玩法下语义仍通——纠正语
|
||||
不点名手势;如需改口文案按「重教≤2」流程另行裁定,不在本轮。)
|
||||
|
||||
## 键盘变体(key,P1 输入平权路线 a,8 句)
|
||||
|
||||
| id | key 文案 |
|
||||
|---|---|
|
||||
| tut_map | 先认识你的鼓。屏幕横着分三列,左边、中间、右边;竖着分两行,上面清亮,下面低沉。按数字一键到六键,听六面鼓。 |
|
||||
| tut_probe | 按出三个不同的键,我们就开始。 |
|
||||
| tut_z_kick | 数字五,是底鼓,你的家。先听四下数拍,然后跟着我敲。 |
|
||||
| tut_z_sides | 数字四,军鼓。数字六,低嗵。一左一右,跟着打。 |
|
||||
| tut_z_patt | 上面一排更清亮。数字一踩镲,数字二高嗵,数字三吊镲。听这一句,三个音。 |
|
||||
| select_hint | 左右方向键选曲目,按空格开始,按下方向键回大厅。 |
|
||||
| restart | 按空格再来一遍,按右方向键下一首,按下方向键回大厅。 |
|
||||
| menu_main | 菜单。按空格切换选项,按回车确认。 |
|
||||
|
||||
> skip_hint / rules / retry_* / zone_* 无操作词,主资产触屏/键盘通用,不设变体。
|
||||
> key 变体为**补充合成**( `--only-variants` 单独跑),主表同 id 文案照常重录。
|
||||
|
||||
## 录制说明
|
||||
|
||||
- gen_voice_dual.py RHYTHM_LINES 段全量替换为本表(41 句);KEY_LINES rhythm
|
||||
段替换为本表 key 变体(8 句)。
|
||||
- 生成:`.venv-tts/bin/python tools/gen_voice_dual.py --game rhythm --gender both`
|
||||
(flock .gpu.lock);检查 `--check`;转码 `--convert`。
|
||||
- convert 后删除废弃 id 音频:tut_1 / tut_2 / tut_3 / retry_gesture
|
||||
(male/female 及 key 变体共 16 文件)。
|
||||
- web/harness/voice_text.json 的 rhythm 主表与 `__key__` 变体表同步本台词
|
||||
(转写时长估算与 ASR 判定用)。
|
||||
@@ -299,11 +299,19 @@ vibrate([50, 30, 50]); // 自定义震型
|
||||
```js
|
||||
const detach = attachGestures(element, onGesture, config?)
|
||||
// onGesture: (g: 'up'|'down'|'left'|'right'|'tap'|'doubletap'
|
||||
// |'longpress'|'longpressend'|'tapcancel') => void
|
||||
// |'longpress'|'longpressend'|'tapcancel',
|
||||
// info?: { x: number, y: number }) => void
|
||||
// ('tapcancel' 仅 immediateTap 模式补发,见下)
|
||||
// detach(): 解除绑定
|
||||
```
|
||||
|
||||
第二参 `info`(坐标透传,24 号鼓手模式新增,**缺省行为逐字节不变**):
|
||||
`{x, y}` 为视口像素坐标——点按类事件(tap/序曲 tap/双击改判/tapcancel)与
|
||||
长按 = **按下点**;四向滑动 = **滑动起点**(出手瞄准位置);键盘通道 =
|
||||
虚拟指针坐标(元素中心,方向键滑动同样携带)。需要触点位置的游戏(rhythm
|
||||
分区打击的「敲哪个区」判定)使用;既有单参回调零感知、零回归成本
|
||||
(同 opts.pan / immediateTap / tapcancel 先例)。
|
||||
|
||||
判定参数(`DEFAULT_GESTURE_CONFIG`,与 Android `GestureConfig` 对齐):
|
||||
|
||||
| 参数 | 默认 | 含义 |
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# round0 · 阶段零可行性勘察与引擎回归证据
|
||||
|
||||
日期:2026-09-14。依据 docs/design/24-rhythm-drummer.md §0。
|
||||
|
||||
## 可行性决策
|
||||
|
||||
- 引擎手势事件**不携带坐标**(web/engine/gesture.js 勘察结论)。
|
||||
- 选**路线 (a)**:引擎后向兼容扩展——全部 onGesture 调用补第二实参
|
||||
`{x, y}`(tap/长按=按下点,滑动=起点,键盘=虚拟指针坐标)。既有 15 款
|
||||
游戏回调均为单参,多余实参被忽略,判定/震动/时序逐字节不变
|
||||
(同 opts.pan / immediateTap / tapcancel 先例)。
|
||||
- 已同步 docs/web-engine-api.md §engine/gesture.js(onGesture 签名 +
|
||||
info 第二参说明)。
|
||||
|
||||
## 引擎改动清单
|
||||
|
||||
- web/engine/gesture.js:downX/downY 跟踪;13 个 onGesture 调用点补 payload;
|
||||
文件头注释补第二参说明。无 config 新增、无判定阈值/震动改动。
|
||||
|
||||
## 全量回归(铁律义务,全绿)
|
||||
|
||||
| 测试 | 结果 |
|
||||
|---|---|
|
||||
| 15 游戏 playtest(storyline 82 / escape 140 / simon 132 / rhythm 141 / space 172 / rpg 188 / radio 246 / dungeon 1649 / detective 279 / abyss 278 / hunt 211 / cipher 223 / bridge 336 / teahouse 205 / keeper 257 断言) | 全部 0 失败 |
|
||||
| web/harness/guide.test.mjs | 122 断言 0 失败 |
|
||||
| web/harness/engine-voice.test.mjs | 19 断言 0 失败 |
|
||||
| web/harness/engine-input.test.mjs | 72 断言 0 失败 |
|
||||
|
||||
合计 ~4,547 断言全绿。rhythm 旧 playtest(141 断言)在重构前最后一次运行
|
||||
通过,作为重构基线。
|
||||
@@ -0,0 +1,218 @@
|
||||
# 试玩转写:《rhythm》
|
||||
|
||||
> 本文件是「玩家感知日志」:一位新手玩家的整局体验转写。语音列出了玩家听到的每句话全文,
|
||||
> 音效/BGM/震动按发生时间列出。「静默」段 = 玩家什么也听不到。手势是剧本注入的(模拟真人手部动作),
|
||||
> 非最优操作:包含犹豫、误操作与乱试。语音时长按语速估算(±20%),仅供节奏参考。
|
||||
t+ 0.0s (玩家点开游戏,轻触屏幕开始)
|
||||
t+ 0.0s ▶ 语音:「欢迎来到节拍行者。今天你是乐队的鼓手,整面屏幕都是你的鼓。」
|
||||
t+ 0.0s 【状态】开场旁白:我是鼓手,整个屏幕都是鼓。单击跳过 开场旁白在播(认识你的鼓),单击可以跳过(语音播放中,语速1)
|
||||
t+ 0.5s ▶ 语音:「先认识你的鼓。屏幕横着分三列,左边、中间、右边;竖着分两行,上面清亮,下面低沉。随便摸一摸,听到哪面鼓,我就告诉你它在哪。」
|
||||
t+ 2.6s ▶ 语音:「摸到三个不同的地方,我们就开始。」
|
||||
t+ 3.1s ♪ 向导音:explore(探索/安全)
|
||||
t+ 11.1s ♪ 音效 sfx/inst_kick
|
||||
t+ 11.1s ▶ 语音:「下中,底鼓。」
|
||||
t+ 13.2s 【状态】进入摸鼓认区:先四处摸摸,听到哪面鼓就报哪面鼓的名 摸鼓认区:随便摸,摸到 3 个不同的地方就开始(已摸 1 区)(无 BGM,语速1)
|
||||
|
||||
#### 【玩家动作】背景音乐《启程》无鼓伴奏已在轻声循环——拍子网格的底,鼓由我来打
|
||||
|
||||
t+ 13.2s 【状态】六面鼓摸遍了:左上踩镲、上中高嗵、右上吊镲、左下军鼓、下中底鼓、右下低嗵 教学:听领奏,下一小节照样敲(BC)(无 BGM,语速1)
|
||||
t+ 13.2s 【状态】又摸了两下重复的,只响不报名 教学:听领奏,下一小节照样敲(BC)(无 BGM,语速1)
|
||||
t+ 13.2s ♪ 音效 sfx/dm_hat
|
||||
t+ 13.2s ▶ 语音:「左上,踩镲。」
|
||||
t+ 13.2s ♪ 音效 sfx/dm_tomhi
|
||||
t+ 13.2s ▶ 语音:「上中,高嗵。」
|
||||
t+ 13.2s ▶ 语音:「下面正中间,是底鼓,你的家。先听四下数拍,然后跟着我敲。」
|
||||
t+ 13.2s ♪ 音效 sfx/dm_snare
|
||||
t+ 13.2s ♪ 音效 sfx/inst_kick
|
||||
t+ 13.2s ♪ 音效 sfx/dm_tomlo
|
||||
t+ 13.2s ♪ 音效 sfx/dm_hat
|
||||
t+ 13.2s ♪ 音效 sfx/dm_tomlo
|
||||
t+ 13.2s 【状态】摸到三个不同的地方,自动开始教学第一步 教学:听领奏,下一小节照样敲(BC)(无 BGM,语速1)
|
||||
t+ 13.2s 【状态】教学第 1/3 步:听数拍和领奏,下一小节照着敲 教学:听领奏,下一小节照样敲(BC)(无 BGM,语速1)
|
||||
t+ 16.7s 〰 震动:beat(节拍点)
|
||||
t+ 17.3s 〰 震动:beat(节拍点)
|
||||
t+ 18.0s 〰 震动:beat(节拍点)
|
||||
t+ 18.7s 〰 震动:beat(节拍点)
|
||||
t+ 19.3s 〰 震动:beat(节拍点)
|
||||
t+ 22.0s ♪ 音效 sfx/inst_kick
|
||||
t+ 22.0s ♪ 音效 sfx/dm_accent
|
||||
t+ 22.8s ▶ 语音:「左下是军鼓,右下是低嗵。一左一右,跟着打。」
|
||||
t+ 24.9s 【状态】教学第 2/3 步:听数拍和领奏,下一小节照着敲 教学:听领奏,下一小节照样敲(BL→BR)(无 BGM,语速1)
|
||||
t+ 27.3s 〰 震动:beat(节拍点)
|
||||
t+ 28.0s 〰 震动:beat(节拍点)
|
||||
t+ 28.7s 〰 震动:beat(节拍点)
|
||||
t+ 29.3s 〰 震动:beat(节拍点)
|
||||
t+ 30.0s 〰 震动:beat(节拍点)
|
||||
t+ 31.3s 〰 震动:beat(节拍点)
|
||||
t+ 32.7s ♪ 音效 sfx/dm_snare
|
||||
t+ 32.7s ♪ 音效 sfx/dm_accent
|
||||
t+ 34.0s ♪ 音效 sfx/dm_tomlo
|
||||
t+ 34.0s ♪ 音效 sfx/dm_accent
|
||||
t+ 34.8s ▶ 语音:「上面一排更清亮。左上踩镲,上中高嗵,右上吊镲。听这一句,三个音。」
|
||||
t+ 36.9s 【状态】教学第 3/3 步:听数拍和领奏,下一小节照着敲 教学:听领奏,下一小节照样敲(TL→TC→TR)(无 BGM,语速1)
|
||||
t+ 40.7s 〰 震动:beat(节拍点)
|
||||
t+ 41.3s 〰 震动:beat(节拍点)
|
||||
t+ 42.0s 〰 震动:beat(节拍点)
|
||||
t+ 42.7s 〰 震动:beat(节拍点)
|
||||
t+ 43.3s 〰 震动:beat(节拍点)
|
||||
t+ 44.0s 〰 震动:beat(节拍点)
|
||||
t+ 44.7s 〰 震动:beat(节拍点)
|
||||
t+ 46.0s ♪ 音效 sfx/dm_hat
|
||||
t+ 46.0s ♪ 音效 sfx/dm_accent
|
||||
t+ 46.7s ♪ 音效 sfx/dm_tomhi
|
||||
t+ 46.7s ♪ 音效 sfx/dm_accent
|
||||
t+ 47.4s ♪ 音效 sfx/dm_crash
|
||||
t+ 47.4s ♪ 音效 sfx/dm_accent
|
||||
t+ 48.1s ▶ 语音:「很好,演出开始。」
|
||||
t+ 50.2s ♪ 向导音:battle(战斗/对抗)
|
||||
t+ 50.2s 【状态】教学完毕,曲目一《启程》90 拍开始。先听四下底鼓数拍,然后是「现在跟着我打」 演奏中(启程):还剩 32 个应答音。领奏停了、轮到空拍,就该我出手了;有一段加花要连打(无 BGM,语速1)
|
||||
|
||||
#### 【玩家动作】《启程》无鼓伴奏 BGM 起,四下底鼓数拍对齐小节
|
||||
|
||||
t+ 51.2s 〰 震动:beat(节拍点)
|
||||
t+ 51.9s 〰 震动:beat(节拍点)
|
||||
t+ 52.6s 〰 震动:beat(节拍点)
|
||||
t+ 52.8s ♪ 向导音:menu(系统界面)
|
||||
t+ 52.8s ▶ 语音:「菜单。单击切换选项,双击确认。」
|
||||
t+ 52.8s 【状态】曲中暂停,进了菜单 暂停菜单:单击切选项,双击确认,上滑帮助,下滑恢复演奏(语音播放中,语速1)
|
||||
|
||||
#### 【玩家动作】BGM 在断点冻住——谱面、判定、音乐全部暂停
|
||||
|
||||
t+ 53.2s 〰 震动:beat(节拍点)
|
||||
t+ 54.9s ▶ 语音:「继续演奏。」
|
||||
|
||||
#### 【玩家动作】还是想打完这首,下滑回去
|
||||
|
||||
t+ 54.9s ▶ 向导语音:「四拍之后,继续。」
|
||||
t+ 54.9s 【状态】听到「四拍之后,继续」,跟着四下底鼓数拍进来了 演奏中(启程):还剩 32 个应答音。领奏停了、轮到空拍,就该我出手了;有一段加花要连打(语音播放中,语速1)
|
||||
|
||||
#### 【玩家动作】BGM 从断点续播,节拍网格整体后移了一小节
|
||||
|
||||
t+ 54.9s ……… 静默 5s(还在数拍子,第一句没敢出手) ………
|
||||
t+ 57.1s 〰 震动:beat(节拍点)
|
||||
t+ 57.8s 〰 震动:beat(节拍点)
|
||||
t+ 58.4s 〰 震动:beat(节拍点)
|
||||
t+ 59.1s 〰 震动:beat(节拍点)
|
||||
t+ 60.9s ▶ 向导语音:「现在跟着我打。」
|
||||
t+ 60.9s ♪ 向导音:turn(轮到你)
|
||||
t+ 60.9s 〰 震动:beat(节拍点)
|
||||
t+ 62.2s 〰 震动:beat(节拍点)
|
||||
t+ 64.0s 〰 震动:error(做错了:两连短震)
|
||||
t+ 65.4s ▶ 向导语音:「慢了半拍,下一小节跟上我就行。」
|
||||
t+ 65.4s 〰 震动:error(做错了:两连短震)
|
||||
t+ 65.4s 【状态】第一句全漏了,听到「慢了半拍,下一小节跟上我就行」 演奏中(启程):还剩 30 个应答音。领奏停了、轮到空拍,就该我出手了;有一段加花要连打(语音播放中,语速1)
|
||||
t+ 68.9s 〰 震动:beat(节拍点)
|
||||
t+ 70.2s 〰 震动:beat(节拍点)
|
||||
t+ 71.6s ♪ 音效 sfx/dm_snare
|
||||
t+ 71.6s ♪ 音效 sfx/dm_accent
|
||||
t+ 72.9s ♪ 音效 sfx/dm_tomlo
|
||||
t+ 72.9s ♪ 音效 sfx/dm_accent
|
||||
t+ 72.9s 〰 震动:自定义震型 [20,40,20]
|
||||
t+ 76.9s 〰 震动:beat(节拍点)
|
||||
t+ 77.6s 〰 震动:beat(节拍点)
|
||||
t+ 78.2s 〰 震动:beat(节拍点)
|
||||
t+ 79.6s ♪ 音效 sfx/inst_kick
|
||||
t+ 79.6s ♪ 音效 sfx/dm_accent
|
||||
t+ 80.3s ♪ 音效 sfx/inst_kick
|
||||
t+ 80.3s ♪ 音效 sfx/dm_accent
|
||||
t+ 80.9s ♪ 音效 sfx/dm_snare
|
||||
t+ 80.9s ♪ 音效 sfx/dm_accent
|
||||
t+ 80.9s 〰 震动:自定义震型 [20,40,20]
|
||||
t+ 84.9s 〰 震动:beat(节拍点)
|
||||
t+ 85.6s 〰 震动:beat(节拍点)
|
||||
t+ 86.2s 〰 震动:beat(节拍点)
|
||||
t+ 87.6s ♪ 音效 sfx/dm_snare
|
||||
t+ 87.6s ♪ 音效 sfx/dm_accent
|
||||
t+ 88.3s ♪ 音效 sfx/dm_tomlo
|
||||
t+ 88.3s ♪ 音效 sfx/dm_accent
|
||||
t+ 88.9s ♪ 音效 sfx/inst_kick
|
||||
t+ 88.9s ♪ 音效 sfx/dm_accent
|
||||
t+ 88.9s 〰 震动:自定义震型 [20,40,20]
|
||||
t+ 92.9s ▶ 语音:「过半了,保持。」
|
||||
t+ 92.9s 〰 震动:beat(节拍点)
|
||||
t+ 93.6s 〰 震动:beat(节拍点)
|
||||
t+ 94.2s 〰 震动:beat(节拍点)
|
||||
t+ 94.9s 〰 震动:beat(节拍点)
|
||||
t+ 95.6s ♪ 音效 sfx/inst_kick
|
||||
t+ 95.6s ♪ 音效 sfx/dm_accent
|
||||
t+ 96.3s ♪ 音效 sfx/dm_snare
|
||||
t+ 96.3s ♪ 音效 sfx/dm_accent
|
||||
t+ 96.9s ♪ 音效 sfx/inst_kick
|
||||
t+ 96.9s ♪ 音效 sfx/dm_accent
|
||||
t+ 97.6s ♪ 音效 sfx/dm_tomlo
|
||||
t+ 97.6s ♪ 音效 sfx/dm_accent
|
||||
t+ 97.6s 〰 震动:自定义震型 [20,40,20]
|
||||
t+ 98.2s 〰 震动:beat(节拍点)
|
||||
t+ 99.6s 〰 震动:beat(节拍点)
|
||||
t+ 100.2s 〰 震动:beat(节拍点)
|
||||
t+ 100.9s ♪ 音效 sfx/dm_hat
|
||||
t+ 100.9s ♪ 音效 sfx/dm_accent
|
||||
t+ 102.3s ♪ 音效 sfx/dm_snare
|
||||
t+ 102.3s ♪ 音效 sfx/dm_accent
|
||||
t+ 102.9s ♪ 音效 sfx/inst_kick
|
||||
t+ 102.9s ♪ 音效 sfx/dm_accent
|
||||
t+ 102.9s 〰 震动:自定义震型 [20,40,20]
|
||||
t+ 103.6s 〰 震动:beat(节拍点)
|
||||
t+ 104.2s 〰 震动:beat(节拍点)
|
||||
t+ 104.9s 〰 震动:beat(节拍点)
|
||||
t+ 105.6s 〰 震动:beat(节拍点)
|
||||
t+ 106.3s ♪ 音效 sfx/inst_kick
|
||||
t+ 106.3s ♪ 音效 sfx/dm_accent
|
||||
t+ 106.3s 〰 震动:success(成功长震)
|
||||
t+ 106.9s ♪ 音效 sfx/dm_hat
|
||||
t+ 106.9s ♪ 音效 sfx/dm_accent
|
||||
t+ 107.6s ♪ 音效 sfx/inst_kick
|
||||
t+ 107.6s ♪ 音效 sfx/dm_accent
|
||||
t+ 108.3s ♪ 音效 sfx/dm_crash
|
||||
t+ 108.3s ♪ 音效 sfx/dm_accent
|
||||
t+ 108.3s 〰 震动:自定义震型 [20,40,20]
|
||||
t+ 108.9s 〰 震动:beat(节拍点)
|
||||
t+ 109.6s 〰 震动:beat(节拍点)
|
||||
t+ 110.2s 〰 震动:beat(节拍点)
|
||||
t+ 110.9s 〰 震动:beat(节拍点)
|
||||
t+ 111.6s ▶ 语音:「最后有一段加花,跟着我连打。」
|
||||
t+ 111.6s ♪ 音效 sfx/dm_snare
|
||||
t+ 111.6s ♪ 音效 sfx/dm_accent
|
||||
t+ 112.3s ♪ 音效 sfx/dm_tomlo
|
||||
t+ 112.3s ♪ 音效 sfx/dm_accent
|
||||
t+ 112.9s ♪ 音效 sfx/dm_hat
|
||||
t+ 112.9s ♪ 音效 sfx/dm_accent
|
||||
t+ 113.6s ♪ 音效 sfx/inst_kick
|
||||
t+ 113.6s ♪ 音效 sfx/dm_accent
|
||||
t+ 113.6s 〰 震动:自定义震型 [20,40,20]
|
||||
t+ 114.3s ♪ 向导音:turn(轮到你)
|
||||
t+ 114.2s 〰 震动:beat(节拍点)
|
||||
t+ 114.6s 〰 震动:beat(节拍点)
|
||||
t+ 114.9s 〰 震动:beat(节拍点)
|
||||
t+ 115.2s 〰 震动:beat(节拍点)
|
||||
t+ 115.6s 〰 震动:beat(节拍点)
|
||||
t+ 115.9s 〰 震动:beat(节拍点)
|
||||
t+ 116.2s 〰 震动:beat(节拍点)
|
||||
t+ 116.9s ♪ 音效 sfx/inst_kick
|
||||
t+ 116.9s ♪ 音效 sfx/dm_accent
|
||||
t+ 117.3s ♪ 音效 sfx/inst_kick
|
||||
t+ 117.3s ♪ 音效 sfx/dm_accent
|
||||
t+ 117.6s ♪ 音效 sfx/inst_kick
|
||||
t+ 117.6s ♪ 音效 sfx/dm_accent
|
||||
t+ 117.9s ♪ 音效 sfx/dm_snare
|
||||
t+ 117.9s ♪ 音效 sfx/dm_accent
|
||||
t+ 118.3s ♪ 音效 sfx/dm_snare
|
||||
t+ 118.3s ♪ 音效 sfx/dm_accent
|
||||
t+ 118.6s ♪ 音效 sfx/inst_kick
|
||||
t+ 118.6s ♪ 音效 sfx/dm_accent
|
||||
t+ 118.9s ♪ 音效 sfx/dm_crash
|
||||
t+ 118.9s ♪ 音效 sfx/dm_accent
|
||||
t+ 118.9s 〰 震动:自定义震型 [20,40,20]
|
||||
t+ 119.9s ♪ 向导音:settle(结算)
|
||||
t+ 119.9s ▶ 语音:「A 级!准确率超过八成五,非常出色。」
|
||||
t+ 119.9s 〰 震动:success(成功长震)
|
||||
t+ 119.9s 〰 震动:success(成功长震)
|
||||
t+ 119.9s 〰 震动:自定义震型 [20,40,20]
|
||||
t+ 122.0s ▶ 语音:「新连击纪录!」
|
||||
t+ 124.1s ▶ 语音:「新曲目解锁,追风!」
|
||||
t+ 126.2s ▶ 语音:「单击再来一遍,右滑下一首,下滑回大厅。」
|
||||
t+ 128.4s ♫ BGM 切换 → bgm/menu(淡入 800ms)
|
||||
t+ 152.9s 【状态】曲子打完了(加花收尾是一记吊镲),结算播报中 结算播报中:听完单击再来一遍,右滑下一首,下滑回大厅(BGM=bgm/menu,语速1)
|
||||
|
||||
#### 【玩家动作】曲目 BGM 淡出,结算语音链播完会淡入大厅音乐
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
# 《节拍行者》鼓手模式 R1 全拟真试玩报告
|
||||
|
||||
两会话均真机跑完(live harness:真 chromium + SenseVoice ASR 听游戏实况,非 mock;
|
||||
控制端口 8142,游戏服务器 8001)。驱动为事件流跟随器(vibrate 锚定真实发声时刻 +
|
||||
谱序消费),节奏精度经多轮校准后 dt≈0.00s。
|
||||
|
||||
## 局 A(主线 · male 1.0× · guide=full · 教学+曲目一全 Perfect 弧线)
|
||||
|
||||
- 产物:`live/A/`(events.jsonl 40KB / mix.webm 4.7MB / transcript.md / verdicts.json)
|
||||
- ASR 判定:**OK 11 / TRUNCATED 5 / MISMATCH 2**(SFX_BGM_ONLY 间隙探针 7)
|
||||
- 完整弧线实录:摸鼓认区(zone_tl OK)→ T1 降速重演(gd_slow OK sim=1.0)→
|
||||
T2/T3 通过 → tut_done(OK sim=1.0)→ 数拍 → gd_answer(OK sim=1.0)→
|
||||
mid_song(OK sim=0.8)→ tut_fill(OK sim=0.92)→ **grade_a(A 级)→
|
||||
unlock_song2(OK sim=0.93)→ restart(OK)**,全链无人为干预走通
|
||||
- 演奏精度:**33 记 Perfect accent / 4 记 Miss**——跟随线程与游戏判定网格的
|
||||
逐音配对(pop 日志 entry.when ≈ vibrate.ta ±0.02s)证明判定窗(±0.15/±0.35)
|
||||
在真机触摸链路(CDP 合成触摸+HTTP)下准确兑现
|
||||
- 归因(全部非游戏缺陷或已修级):
|
||||
- TRUNCATED welcome/tut_map/tut_probe = 驱动故意三连跳旁白(kill)
|
||||
- MISMATCH zone_tr / new_best_combo = 短句 ASR 同音近失(「右上吊镲」→
|
||||
「有上调查」;「新连击纪录」→「新联机记录」),cipher 批次先例同款
|
||||
- TRUNCATED zone_bl = 探针第三击触发进阶时 stopVoice 切断区名(P2)
|
||||
- TRUNCATED gd_miss = 曲尾连 Miss 的向导句播 1.1s 后被结算评级语音顶掉
|
||||
(半句「慢了半拍。」)——P1(F1)
|
||||
- 曲终 4 记 Miss 系驱动 clearPending 误杀尾单补发(驱动侧 artifact,已修)
|
||||
|
||||
## 局 B(压力线 · female 1.7× · guide=standard · bgm 0.3 · 错区乱打+菜单+长按)
|
||||
|
||||
- 产物:`live/B/`(events.jsonl / mix.webm 3.3MB / transcript.md;verdicts 因驱动
|
||||
超时未及落盘——control 层 artifact,非游戏问题)
|
||||
- 关键机制实录:跳教学(tut_skip)→ 数拍 → **错区乱打全程 guide=standard
|
||||
零向导语音**(gd_* vstart = 0,earcon/震动照发)→ 32 记 error 震 + grade_c
|
||||
→ 曲中菜单(下滑→单击切选项→上滑帮助→下滑恢复,恢复后网格平移续播)→
|
||||
长按死输入(闷镲+error 震,不判定不归属)→ 结算链
|
||||
- 1.7× 语速下语音链无截断无风暴(保险丝零触发)
|
||||
|
||||
## 结论
|
||||
|
||||
- 教学 DDA(gd_slow)、归因真话律(gd_miss_none)、count-in 恢复(gd_count)、
|
||||
模态菜单断点续播、错鼓闷镲反馈、长按死输入定义——全部实况兑现
|
||||
- 判定网格精确性真机直证(33/37 Perfect 级命中,dt 均值 ~0.00s)
|
||||
- 无死锁、无状态错乱、非资产类 console.error = 0
|
||||
- 基础设施教训(沉淀,惠及后续 live 驱动):
|
||||
1. 事件流驱动必须单飞拉取(并发 pump 同 since 窗口 → 事件重复入队错位)
|
||||
2. start 事件带 `when` 字段:when>0=排程领奏 / when=0=即时(玩家击/闷镲),
|
||||
玩家击会回声触发跟随循环,必须双重过滤
|
||||
3. 发声时刻锚定用 vibrate 事件(setTimeout 按 ev.time 触发),不用 start 的
|
||||
t(含 _load 时序噪声)
|
||||
4. BGM 的 source.start(t0) 也是 when>0 的 start 事件,入队前必须按 layer 过滤
|
||||
5. 视口坐标:control 默认 390×844,三区边界 130/260(驱动初版按 300×600
|
||||
导致右列全部敲成中列)
|
||||
@@ -0,0 +1,368 @@
|
||||
{"ev":"probe_ready","t":9.400000005960464,"ta":null}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":1520.9000000059605,"ta":-0.083}
|
||||
{"ev":"recstart","mime":"audio/webm;codecs=opus","t":1603.6000000238419,"ta":0}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_hat.ogg","status":200,"ok":true,"ms":15,"t":1618.5,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_tomhi.ogg","status":200,"ok":true,"ms":14,"t":1618.7000000178814,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_crash.ogg","status":200,"ok":true,"ms":14,"t":1618.800000011921,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_snare.ogg","status":200,"ok":true,"ms":14,"t":1618.800000011921,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/inst_kick.ogg","status":200,"ok":true,"ms":14,"t":1618.800000011921,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_tomlo.ogg","status":200,"ok":true,"ms":14,"t":1618.9000000059605,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_accent.ogg","status":200,"ok":true,"ms":14,"t":1618.9000000059605,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/bgm/menu.ogg","status":200,"ok":true,"ms":14,"t":1619,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_map.ogg","status":200,"ok":true,"ms":14,"t":1619,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/male/welcome.ogg","status":200,"ok":true,"ms":15,"t":1619.1000000238419,"ta":0.016}
|
||||
{"ev":"fetch","url":"audio/voice/male/welcome_back.ogg","status":200,"ok":true,"ms":15,"t":1619.5,"ta":0.016}
|
||||
{"ev":"fetch","url":"audio/voice/male/mid_song.ogg","status":200,"ok":true,"ms":19,"t":1624,"ta":0.02}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_probe.ogg","status":200,"ok":true,"ms":19,"t":1624.300000011921,"ta":0.021}
|
||||
{"ev":"fetch","url":"audio/voice/male/select_hint.ogg","status":200,"ok":true,"ms":20,"t":1624.7000000178814,"ta":0.021}
|
||||
{"ev":"fetch","url":"audio/bgm/track90.ogg","status":200,"ok":true,"ms":20,"t":1625.4000000059605,"ta":0.022}
|
||||
{"ev":"fetch","url":"audio/bgm/track120.ogg","status":200,"ok":true,"ms":20,"t":1625.5,"ta":0.022}
|
||||
{"ev":"fetch","url":"audio/bgm/track105.ogg","status":200,"ok":true,"ms":22,"t":1627.6000000238419,"ta":0.024}
|
||||
{"ev":"vstart","url":"audio/voice/male/welcome.ogg","t":1665.6000000238419,"dur":8.24,"ta":0.062}
|
||||
{"ev":"start","t":1849.6000000238419,"sid":1,"url":"audio/bgm/track90.ogg","layer":"bgm","dur":82.33301587301587,"rate":1,"loop":true,"when":6,"ta":0.246}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":2812.300000011921,"ta":1.209}
|
||||
{"ev":"vibrate","pattern":"[20]","t":2813.9000000059605,"ta":1.21}
|
||||
{"ev":"vend","url":"audio/voice/male/welcome.ogg","t":3314.4000000059605,"reason":"kill","ta":1.711}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_map.ogg","t":3314.600000023842,"dur":18.04,"ta":1.711}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":4181.700000017881,"ta":2.578}
|
||||
{"ev":"vibrate","pattern":"[20]","t":4183.200000017881,"ta":2.58}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_map.ogg","t":4683.4000000059605,"reason":"kill","ta":3.08}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_probe.ogg","t":4683.5,"dur":3.84,"ta":3.08}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":5550.9000000059605,"ta":3.947}
|
||||
{"ev":"vibrate","pattern":"[20]","t":5552.4000000059605,"ta":3.949}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_probe.ogg","t":6052.600000023842,"reason":"kill","ta":4.449}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":6920.300000011921,"ta":5.317}
|
||||
{"ev":"vibrate","pattern":"[20]","t":6921.9000000059605,"ta":5.318}
|
||||
{"ev":"start","t":6922.600000023842,"sid":2,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":5.319}
|
||||
{"ev":"fetch","url":"audio/voice/male/zone_tl.ogg","status":200,"ok":true,"ms":3,"t":6925,"ta":5.321}
|
||||
{"ev":"vstart","url":"audio/voice/male/zone_tl.ogg","t":6928.700000017881,"dur":1.6,"ta":5.325}
|
||||
{"ev":"vend","url":"audio/voice/male/zone_tl.ogg","t":8530,"reason":"kill","ta":6.926}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":210,"t":9590.800000011921,"ta":7.987}
|
||||
{"ev":"vibrate","pattern":"[20]","t":9594,"ta":7.99}
|
||||
{"ev":"start","t":9594.40000000596,"sid":3,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":0,"ta":7.991}
|
||||
{"ev":"fetch","url":"audio/voice/male/zone_tr.ogg","status":200,"ok":true,"ms":2,"t":9596.600000023842,"ta":7.993}
|
||||
{"ev":"vstart","url":"audio/voice/male/zone_tr.ogg","t":9600.100000023842,"dur":1.76,"ta":7.997}
|
||||
{"ev":"vend","url":"audio/voice/male/zone_tr.ogg","t":11478.5,"reason":"kill","ta":9.875}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":12264.100000023842,"ta":10.661}
|
||||
{"ev":"vibrate","pattern":"[20]","t":12265.90000000596,"ta":10.662}
|
||||
{"ev":"start","t":12266.40000000596,"sid":4,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":10.663}
|
||||
{"ev":"fetch","url":"audio/voice/male/zone_bl.ogg","status":200,"ok":true,"ms":3,"t":12269.200000017881,"ta":10.666}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_z_kick.ogg","status":200,"ok":true,"ms":4,"t":12270.5,"ta":10.667}
|
||||
{"ev":"vstart","url":"audio/voice/male/zone_bl.ogg","t":12272,"dur":2,"ta":10.668}
|
||||
{"ev":"vend","url":"audio/voice/male/zone_bl.ogg","t":12278.300000011921,"reason":"kill","ta":10.675}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_z_kick.ogg","t":12278.300000011921,"dur":7.28,"ta":10.675}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_z_kick.ogg","t":19813.90000000596,"reason":"kill","ta":18.21}
|
||||
{"ev":"start","t":23014.600000023842,"sid":5,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":22,"ta":21.411}
|
||||
{"ev":"vibrate","pattern":"[8]","t":23593.70000001788,"ta":21.99}
|
||||
{"ev":"start","t":23694.5,"sid":6,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":22.666666666666668,"ta":22.091}
|
||||
{"ev":"vibrate","pattern":"[8]","t":24266.5,"ta":22.663}
|
||||
{"ev":"start","t":24334.600000023842,"sid":7,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":23.333333333333332,"ta":22.731}
|
||||
{"ev":"vibrate","pattern":"[8]","t":24923.5,"ta":23.32}
|
||||
{"ev":"start","t":25014.5,"sid":8,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":24,"ta":23.411}
|
||||
{"ev":"vibrate","pattern":"[8]","t":25596.5,"ta":23.993}
|
||||
{"ev":"start","t":25694.5,"sid":9,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":24.666666666666668,"ta":24.091}
|
||||
{"ev":"vibrate","pattern":"[8]","t":26269.600000023842,"ta":24.666}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":28894.5,"ta":27.291}
|
||||
{"ev":"vibrate","pattern":"[20]","t":28897.30000001192,"ta":27.294}
|
||||
{"ev":"start","t":28897.600000023842,"sid":10,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":27.294}
|
||||
{"ev":"start","t":28897.70000001788,"sid":11,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":27.294}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_z_sides.ogg","status":200,"ok":true,"ms":3,"t":29697.5,"ta":28.094}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_z_sides.ogg","t":29704.30000001192,"dur":5.2,"ta":28.101}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_z_sides.ogg","t":34928.60000002384,"reason":"kill","ta":33.325}
|
||||
{"ev":"start","t":36369,"sid":12,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":35.33333333333333,"ta":34.765}
|
||||
{"ev":"vibrate","pattern":"[8]","t":36930,"ta":35.326}
|
||||
{"ev":"start","t":37049.10000002384,"sid":13,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":35.99999999999999,"ta":35.446}
|
||||
{"ev":"vibrate","pattern":"[8]","t":37603,"ta":35.999}
|
||||
{"ev":"start","t":37688.90000000596,"sid":14,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":36.666666666666664,"ta":36.085}
|
||||
{"ev":"vibrate","pattern":"[8]","t":38260,"ta":36.656}
|
||||
{"ev":"start","t":38369,"sid":15,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":37.33333333333333,"ta":36.765}
|
||||
{"ev":"vibrate","pattern":"[8]","t":38933,"ta":37.329}
|
||||
{"ev":"start","t":39008.90000000596,"sid":16,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":37.99999999999999,"ta":37.405}
|
||||
{"ev":"vibrate","pattern":"[8]","t":39590.10000002384,"ta":37.987}
|
||||
{"ev":"start","t":40369,"sid":17,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":39.33333333333333,"ta":38.765}
|
||||
{"ev":"vibrate","pattern":"[8]","t":40935.90000000596,"ta":39.332}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":42237.20000001788,"ta":40.634}
|
||||
{"ev":"vibrate","pattern":"[20]","t":42239.40000000596,"ta":40.636}
|
||||
{"ev":"start","t":42239.60000002384,"sid":18,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":40.636}
|
||||
{"ev":"start","t":42239.60000002384,"sid":19,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":40.636}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":630,"t":43567,"ta":41.963}
|
||||
{"ev":"vibrate","pattern":"[20]","t":43568.60000002384,"ta":41.965}
|
||||
{"ev":"start","t":43568.90000000596,"sid":20,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":0,"ta":41.965}
|
||||
{"ev":"start","t":43568.90000000596,"sid":21,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":41.965}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_z_patt.ogg","status":200,"ok":true,"ms":3,"t":44371.70000001788,"ta":42.768}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_z_patt.ogg","t":44381.40000000596,"dur":9.68,"ta":42.778}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_z_patt.ogg","t":54153.30000001192,"reason":"kill","ta":52.55}
|
||||
{"ev":"start","t":55033.70000001788,"sid":22,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":54,"ta":53.43}
|
||||
{"ev":"vibrate","pattern":"[8]","t":55592.70000001788,"ta":53.989}
|
||||
{"ev":"start","t":55673.70000001788,"sid":23,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":54.666666666666664,"ta":54.07}
|
||||
{"ev":"vibrate","pattern":"[8]","t":56272.70000001788,"ta":54.669}
|
||||
{"ev":"start","t":56353.60000002384,"sid":24,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":55.333333333333336,"ta":54.75}
|
||||
{"ev":"vibrate","pattern":"[8]","t":56922.70000001788,"ta":55.319}
|
||||
{"ev":"start","t":57033.60000002384,"sid":25,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":56,"ta":55.43}
|
||||
{"ev":"vibrate","pattern":"[8]","t":57595.70000001788,"ta":55.992}
|
||||
{"ev":"start","t":57713.60000002384,"sid":26,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":56.666666666666664,"ta":56.11}
|
||||
{"ev":"vibrate","pattern":"[8]","t":58268.70000001788,"ta":56.665}
|
||||
{"ev":"start","t":58353.60000002384,"sid":27,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":57.33333333333333,"ta":56.75}
|
||||
{"ev":"vibrate","pattern":"[8]","t":58925.70000001788,"ta":57.322}
|
||||
{"ev":"start","t":59033.60000002384,"sid":28,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":58,"ta":57.43}
|
||||
{"ev":"vibrate","pattern":"[8]","t":59598.70000001788,"ta":57.995}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":60878.30000001192,"ta":59.275}
|
||||
{"ev":"vibrate","pattern":"[20]","t":60883.40000000596,"ta":59.28}
|
||||
{"ev":"start","t":60883.5,"sid":29,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":59.28}
|
||||
{"ev":"start","t":60883.5,"sid":30,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":59.28}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":61541.40000000596,"ta":59.938}
|
||||
{"ev":"vibrate","pattern":"[20]","t":61542.70000001788,"ta":59.939}
|
||||
{"ev":"start","t":61542.90000000596,"sid":31,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":59.939}
|
||||
{"ev":"start","t":61542.90000000596,"sid":32,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":59.939}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":210,"t":62287.5,"ta":60.684}
|
||||
{"ev":"vibrate","pattern":"[20]","t":62288.90000000596,"ta":60.685}
|
||||
{"ev":"start","t":62289.10000002384,"sid":33,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":0,"ta":60.686}
|
||||
{"ev":"start","t":62289.10000002384,"sid":34,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":60.686}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_done.ogg","status":200,"ok":true,"ms":2,"t":63035.60000002384,"ta":61.432}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_done.ogg","t":63039.70000001788,"dur":2.48,"ta":61.436}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_done.ogg","t":65762.40000000596,"reason":"kill","ta":64.159}
|
||||
{"ev":"stop","t":65762.70000001788,"sid":1,"when":0,"ta":64.159}
|
||||
{"ev":"start","t":65763.90000000596,"sid":35,"url":"audio/bgm/track90.ogg","layer":"bgm","dur":82.33301587301587,"rate":1,"loop":true,"when":65.16834467120181,"ta":64.16}
|
||||
{"ev":"start","t":66204.10000002384,"sid":36,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":65.16834467120181,"ta":64.601}
|
||||
{"ev":"vibrate","pattern":"[8]","t":66762.10000002384,"ta":65.159}
|
||||
{"ev":"start","t":66844.10000002384,"sid":37,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":65.83501133786848,"ta":65.241}
|
||||
{"ev":"vibrate","pattern":"[8]","t":67442.10000002384,"ta":65.839}
|
||||
{"ev":"start","t":67524,"sid":38,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":66.50167800453514,"ta":65.92}
|
||||
{"ev":"vibrate","pattern":"[8]","t":68092,"ta":66.488}
|
||||
{"ev":"start","t":68204.10000002384,"sid":39,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":67.16834467120181,"ta":66.601}
|
||||
{"ev":"vibrate","pattern":"[8]","t":68765,"ta":67.161}
|
||||
{"ev":"start","t":68844,"sid":40,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":67.83501133786848,"ta":67.24}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":69411.20000001788,"ta":67.808}
|
||||
{"ev":"vibrate","pattern":"[20]","t":69413.5,"ta":67.81}
|
||||
{"ev":"start","t":69413.60000002384,"sid":41,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":67.81}
|
||||
{"ev":"vibrate","pattern":"[8]","t":69422.10000002384,"ta":67.819}
|
||||
{"ev":"fetch","url":"audio/voice/male/gd_answer.ogg","status":200,"ok":true,"ms":2,"t":69445.80000001192,"ta":67.842}
|
||||
{"ev":"vstart","url":"audio/voice/male/gd_answer.ogg","t":69449.20000001788,"dur":1.52,"ta":67.846}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":70073,"ta":68.469}
|
||||
{"ev":"vibrate","pattern":"[20]","t":70074.90000000596,"ta":68.471}
|
||||
{"ev":"start","t":70075,"sid":42,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":68.471}
|
||||
{"ev":"start","t":70204,"sid":43,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":69.16834467120181,"ta":68.6}
|
||||
{"ev":"vibrate","pattern":"[8]","t":70768,"ta":69.164}
|
||||
{"ev":"vend","url":"audio/voice/male/gd_answer.ogg","t":71055.90000000596,"reason":"kill","ta":69.452}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":72564.10000002384,"ta":70.961}
|
||||
{"ev":"start","t":72564.30000001192,"sid":44,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":70.961}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":73383.90000000596,"ta":71.78}
|
||||
{"ev":"vibrate","pattern":"[20]","t":73385.30000001192,"ta":71.782}
|
||||
{"ev":"start","t":73385.5,"sid":45,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":71.782}
|
||||
{"ev":"start","t":73385.5,"sid":46,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":71.782}
|
||||
{"ev":"start","t":76843.90000000596,"sid":47,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":75.83501133786848,"ta":75.24}
|
||||
{"ev":"vibrate","pattern":"[8]","t":77434,"ta":75.83}
|
||||
{"ev":"start","t":78204.10000002384,"sid":48,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":77.16834467120181,"ta":76.601}
|
||||
{"ev":"vibrate","pattern":"[8]","t":78758.10000002384,"ta":77.155}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":80079.60000002384,"ta":78.476}
|
||||
{"ev":"vibrate","pattern":"[20]","t":80081.90000000596,"ta":78.478}
|
||||
{"ev":"start","t":80081.90000000596,"sid":49,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":78.478}
|
||||
{"ev":"start","t":80082,"sid":50,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":78.478}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":630,"t":81402.20000001788,"ta":79.799}
|
||||
{"ev":"vibrate","pattern":"[20]","t":81403.60000002384,"ta":79.8}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":81403.70000001788,"ta":79.8}
|
||||
{"ev":"start","t":81403.80000001192,"sid":51,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":0,"ta":79.8}
|
||||
{"ev":"start","t":81403.90000000596,"sid":52,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":79.8}
|
||||
{"ev":"start","t":84844,"sid":53,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":83.83501133786848,"ta":83.24}
|
||||
{"ev":"vibrate","pattern":"[8]","t":85423,"ta":83.819}
|
||||
{"ev":"start","t":85524,"sid":54,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":84.50167800453515,"ta":83.92}
|
||||
{"ev":"vibrate","pattern":"[8]","t":86097.10000002384,"ta":84.494}
|
||||
{"ev":"start","t":86164.10000002384,"sid":55,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":85.16834467120181,"ta":84.561}
|
||||
{"ev":"vibrate","pattern":"[8]","t":86753.10000002384,"ta":85.15}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":88090.80000001192,"ta":86.487}
|
||||
{"ev":"vibrate","pattern":"[20]","t":88092.80000001192,"ta":86.489}
|
||||
{"ev":"start","t":88092.90000000596,"sid":56,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":86.489}
|
||||
{"ev":"start","t":88092.90000000596,"sid":57,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":86.489}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":88754.20000001788,"ta":87.151}
|
||||
{"ev":"vibrate","pattern":"[20]","t":88755.70000001788,"ta":87.152}
|
||||
{"ev":"start","t":88755.80000001192,"sid":58,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":87.152}
|
||||
{"ev":"start","t":88755.80000001192,"sid":59,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":87.152}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":89416.70000001788,"ta":87.813}
|
||||
{"ev":"vibrate","pattern":"[20]","t":89418.20000001788,"ta":87.815}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":89418.30000001192,"ta":87.815}
|
||||
{"ev":"start","t":89418.40000000596,"sid":60,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":87.815}
|
||||
{"ev":"start","t":89418.40000000596,"sid":61,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":87.815}
|
||||
{"ev":"start","t":92844.10000002384,"sid":62,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":91.83501133786848,"ta":91.241}
|
||||
{"ev":"vibrate","pattern":"[8]","t":93436.10000002384,"ta":91.833}
|
||||
{"ev":"start","t":93524.10000002384,"sid":63,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":92.50167800453515,"ta":91.921}
|
||||
{"ev":"vibrate","pattern":"[8]","t":94086.10000002384,"ta":92.483}
|
||||
{"ev":"start","t":94204.10000002384,"sid":64,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":93.16834467120181,"ta":92.601}
|
||||
{"ev":"vibrate","pattern":"[8]","t":94759.20000001788,"ta":93.156}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":96113.70000001788,"ta":94.51}
|
||||
{"ev":"vibrate","pattern":"[20]","t":96116.70000001788,"ta":94.513}
|
||||
{"ev":"start","t":96116.80000001192,"sid":65,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":94.513}
|
||||
{"ev":"start","t":96116.80000001192,"sid":66,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":94.513}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":630,"t":96776.70000001788,"ta":95.173}
|
||||
{"ev":"vibrate","pattern":"[20]","t":96778.10000002384,"ta":95.175}
|
||||
{"ev":"start","t":96778.30000001192,"sid":67,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":0,"ta":95.175}
|
||||
{"ev":"start","t":96778.30000001192,"sid":68,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":95.175}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":97438.80000001192,"ta":95.835}
|
||||
{"ev":"vibrate","pattern":"[20]","t":97440.40000000596,"ta":95.837}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":97440.5,"ta":95.837}
|
||||
{"ev":"start","t":97440.5,"sid":69,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":95.837}
|
||||
{"ev":"start","t":97440.60000002384,"sid":70,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":95.837}
|
||||
{"ev":"start","t":100844,"sid":71,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":99.83501133786848,"ta":99.24}
|
||||
{"ev":"vibrate","pattern":"[8]","t":101425.10000002384,"ta":99.822}
|
||||
{"ev":"vstart","url":"audio/voice/male/mid_song.ogg","t":101444.40000000596,"dur":2.32,"ta":99.841}
|
||||
{"ev":"start","t":101524.10000002384,"sid":72,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":100.50167800453515,"ta":99.921}
|
||||
{"ev":"vibrate","pattern":"[8]","t":102098,"ta":100.494}
|
||||
{"ev":"start","t":102164,"sid":73,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":101.16834467120181,"ta":100.56}
|
||||
{"ev":"vibrate","pattern":"[8]","t":102755.10000002384,"ta":101.152}
|
||||
{"ev":"start","t":102844,"sid":74,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":101.83501133786848,"ta":101.24}
|
||||
{"ev":"vibrate","pattern":"[8]","t":103428,"ta":101.824}
|
||||
{"ev":"vend","url":"audio/voice/male/mid_song.ogg","t":103793.40000000596,"reason":"kill","ta":102.19}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":104043.70000001788,"ta":102.44}
|
||||
{"ev":"vibrate","pattern":"[20]","t":104045.20000001788,"ta":102.442}
|
||||
{"ev":"start","t":104045.30000001192,"sid":75,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":102.442}
|
||||
{"ev":"start","t":104045.30000001192,"sid":76,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":102.442}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":104790,"ta":103.186}
|
||||
{"ev":"vibrate","pattern":"[20]","t":104792.10000002384,"ta":103.189}
|
||||
{"ev":"start","t":104792.20000001788,"sid":77,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":103.189}
|
||||
{"ev":"start","t":104792.20000001788,"sid":78,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":103.189}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":105369.20000001788,"ta":103.766}
|
||||
{"ev":"vibrate","pattern":"[20]","t":105370.60000002384,"ta":103.767}
|
||||
{"ev":"start","t":105370.70000001788,"sid":79,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":103.767}
|
||||
{"ev":"start","t":105370.80000001192,"sid":80,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":103.767}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":630,"t":106111.40000000596,"ta":104.508}
|
||||
{"ev":"vibrate","pattern":"[20]","t":106112.70000001788,"ta":104.509}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":106112.80000001192,"ta":104.509}
|
||||
{"ev":"start","t":106112.80000001192,"sid":81,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":0,"ta":104.509}
|
||||
{"ev":"start","t":106112.90000000596,"sid":82,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":104.509}
|
||||
{"ev":"start","t":106164.10000002384,"sid":83,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":105.16834467120181,"ta":104.561}
|
||||
{"ev":"vibrate","pattern":"[8]","t":106761.10000002384,"ta":105.158}
|
||||
{"ev":"start","t":107524.10000002384,"sid":84,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":106.50167800453514,"ta":105.921}
|
||||
{"ev":"vibrate","pattern":"[8]","t":108107.10000002384,"ta":106.504}
|
||||
{"ev":"start","t":108204.10000002384,"sid":85,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":107.16834467120181,"ta":106.601}
|
||||
{"ev":"vibrate","pattern":"[8]","t":108757,"ta":107.153}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":109422.60000002384,"ta":107.819}
|
||||
{"ev":"vibrate","pattern":"[20]","t":109424.10000002384,"ta":107.821}
|
||||
{"ev":"start","t":109424.20000001788,"sid":86,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":107.821}
|
||||
{"ev":"start","t":109424.30000001192,"sid":87,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":107.821}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":110743,"ta":109.139}
|
||||
{"ev":"vibrate","pattern":"[20]","t":110744.5,"ta":109.141}
|
||||
{"ev":"start","t":110744.60000002384,"sid":88,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":109.141}
|
||||
{"ev":"start","t":110744.60000002384,"sid":89,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":109.141}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":111405.40000000596,"ta":109.802}
|
||||
{"ev":"vibrate","pattern":"[20]","t":111407,"ta":109.803}
|
||||
{"ev":"vibrate","pattern":"[100]","t":111407,"ta":109.803}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":111407.10000002384,"ta":109.804}
|
||||
{"ev":"start","t":111407.20000001788,"sid":90,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":109.804}
|
||||
{"ev":"start","t":111407.20000001788,"sid":91,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":109.804}
|
||||
{"ev":"start","t":111524,"sid":92,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":110.50167800453514,"ta":109.92}
|
||||
{"ev":"vibrate","pattern":"[8]","t":112090.10000002384,"ta":110.487}
|
||||
{"ev":"start","t":112204,"sid":93,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":111.16834467120181,"ta":110.6}
|
||||
{"ev":"vibrate","pattern":"[8]","t":112764.10000002384,"ta":111.161}
|
||||
{"ev":"start","t":112844,"sid":94,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":111.83501133786847,"ta":111.24}
|
||||
{"ev":"vibrate","pattern":"[8]","t":113420,"ta":111.816}
|
||||
{"ev":"start","t":113524.20000001788,"sid":95,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":112.50167800453514,"ta":111.921}
|
||||
{"ev":"vibrate","pattern":"[8]","t":114093.20000001788,"ta":112.49}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":114710,"ta":113.106}
|
||||
{"ev":"vibrate","pattern":"[20]","t":114711.5,"ta":113.108}
|
||||
{"ev":"start","t":114711.60000002384,"sid":96,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":113.108}
|
||||
{"ev":"start","t":114711.60000002384,"sid":97,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":113.108}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":115453.10000002384,"ta":113.85}
|
||||
{"ev":"vibrate","pattern":"[20]","t":115454.60000002384,"ta":113.851}
|
||||
{"ev":"start","t":115454.70000001788,"sid":98,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":113.851}
|
||||
{"ev":"start","t":115454.70000001788,"sid":99,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":113.851}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":116032.10000002384,"ta":114.429}
|
||||
{"ev":"vibrate","pattern":"[20]","t":116033.70000001788,"ta":114.43}
|
||||
{"ev":"start","t":116033.90000000596,"sid":100,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":114.43}
|
||||
{"ev":"start","t":116033.90000000596,"sid":101,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":114.43}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":210,"t":116772.70000001788,"ta":115.169}
|
||||
{"ev":"vibrate","pattern":"[20]","t":116774.10000002384,"ta":115.171}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":116774.30000001192,"ta":115.171}
|
||||
{"ev":"start","t":116774.30000001192,"sid":102,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":0,"ta":115.171}
|
||||
{"ev":"start","t":116774.30000001192,"sid":103,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":115.171}
|
||||
{"ev":"start","t":116844,"sid":104,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":115.83501133786848,"ta":115.24}
|
||||
{"ev":"vibrate","pattern":"[8]","t":117426.10000002384,"ta":115.823}
|
||||
{"ev":"start","t":117524.10000002384,"sid":105,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":116.50167800453515,"ta":115.921}
|
||||
{"ev":"vibrate","pattern":"[8]","t":118100.10000002384,"ta":116.497}
|
||||
{"ev":"start","t":118164.10000002384,"sid":106,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":117.16834467120181,"ta":116.561}
|
||||
{"ev":"vibrate","pattern":"[8]","t":118756.10000002384,"ta":117.153}
|
||||
{"ev":"start","t":118844,"sid":107,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":117.83501133786848,"ta":117.24}
|
||||
{"ev":"vibrate","pattern":"[8]","t":119429,"ta":117.825}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":120072.5,"ta":118.469}
|
||||
{"ev":"vibrate","pattern":"[20]","t":120074,"ta":118.47}
|
||||
{"ev":"start","t":120074.10000002384,"sid":108,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":118.471}
|
||||
{"ev":"start","t":120074.20000001788,"sid":109,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":118.471}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_fill.ogg","status":200,"ok":true,"ms":3,"t":120126.80000001192,"ta":118.523}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_fill.ogg","t":120131.80000001192,"dur":3.12,"ta":118.528}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":630,"t":120733.20000001788,"ta":119.13}
|
||||
{"ev":"vibrate","pattern":"[20]","t":120734.80000001192,"ta":119.131}
|
||||
{"ev":"start","t":120734.90000000596,"sid":110,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":0,"ta":119.131}
|
||||
{"ev":"start","t":120735,"sid":111,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":119.131}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":121395.40000000596,"ta":119.792}
|
||||
{"ev":"vibrate","pattern":"[20]","t":121396.80000001192,"ta":119.793}
|
||||
{"ev":"start","t":121397,"sid":112,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":119.793}
|
||||
{"ev":"start","t":121397,"sid":113,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":119.793}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":122055.60000002384,"ta":120.452}
|
||||
{"ev":"vibrate","pattern":"[20]","t":122057.20000001788,"ta":120.454}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":122057.30000001192,"ta":120.454}
|
||||
{"ev":"start","t":122057.40000000596,"sid":114,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":120.454}
|
||||
{"ev":"start","t":122057.5,"sid":115,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":120.454}
|
||||
{"ev":"start","t":122164.10000002384,"sid":116,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":121.16834467120181,"ta":120.561}
|
||||
{"ev":"start","t":122524,"sid":117,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":121.50167800453514,"ta":120.92}
|
||||
{"ev":"vibrate","pattern":"[8]","t":122762.10000002384,"ta":121.159}
|
||||
{"ev":"start","t":122844.10000002384,"sid":118,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":121.83501133786848,"ta":121.241}
|
||||
{"ev":"vibrate","pattern":"[8]","t":123084,"ta":121.48}
|
||||
{"ev":"start","t":123204,"sid":119,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":122.16834467120181,"ta":121.6}
|
||||
{"ev":"vibrate","pattern":"[8]","t":123436.10000002384,"ta":121.833}
|
||||
{"ev":"start","t":123524,"sid":120,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":122.50167800453514,"ta":121.92}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_fill.ogg","t":123598.5,"reason":"kill","ta":121.995}
|
||||
{"ev":"vibrate","pattern":"[8]","t":123757,"ta":122.153}
|
||||
{"ev":"start","t":123844,"sid":121,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":122.83501133786848,"ta":122.24}
|
||||
{"ev":"vibrate","pattern":"[8]","t":124086,"ta":122.482}
|
||||
{"ev":"start","t":124204,"sid":122,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":123.16834467120181,"ta":122.6}
|
||||
{"ev":"vibrate","pattern":"[8]","t":124437,"ta":122.833}
|
||||
{"ev":"vibrate","pattern":"[8]","t":124759.10000002384,"ta":123.156}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":125441.70000001788,"ta":123.838}
|
||||
{"ev":"vibrate","pattern":"[20]","t":125444.30000001192,"ta":123.841}
|
||||
{"ev":"start","t":125444.5,"sid":123,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":123.841}
|
||||
{"ev":"start","t":125444.5,"sid":124,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":123.841}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":125906.60000002384,"ta":124.303}
|
||||
{"ev":"vibrate","pattern":"[20]","t":125908,"ta":124.304}
|
||||
{"ev":"start","t":125908.10000002384,"sid":125,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":124.305}
|
||||
{"ev":"start","t":125908.10000002384,"sid":126,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":124.305}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":126370.30000001192,"ta":124.767}
|
||||
{"ev":"vibrate","pattern":"[20]","t":126371.80000001192,"ta":124.768}
|
||||
{"ev":"start","t":126371.90000000596,"sid":127,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":124.768}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":126835.10000002384,"ta":125.232}
|
||||
{"ev":"vibrate","pattern":"[20]","t":126836.40000000596,"ta":125.233}
|
||||
{"ev":"start","t":126836.60000002384,"sid":128,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":125.233}
|
||||
{"ev":"start","t":126836.60000002384,"sid":129,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":125.233}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":126923.90000000596,"ta":125.32}
|
||||
{"ev":"start","t":126924.10000002384,"sid":130,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":125.321}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":127300.10000002384,"ta":125.697}
|
||||
{"ev":"vibrate","pattern":"[20]","t":127301.5,"ta":125.698}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":127301.70000001788,"ta":125.698}
|
||||
{"ev":"start","t":127302.10000002384,"sid":131,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":125.699}
|
||||
{"ev":"start","t":127302.20000001788,"sid":132,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":125.699}
|
||||
{"ev":"fetch","url":"audio/voice/male/gd_miss.ogg","status":200,"ok":true,"ms":2,"t":127303.60000002384,"ta":125.7}
|
||||
{"ev":"vstart","url":"audio/voice/male/gd_miss.ogg","t":127308.5,"dur":3.2,"ta":125.705}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":127563.90000000596,"ta":125.96}
|
||||
{"ev":"start","t":127564.10000002384,"sid":133,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":125.961}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":127765.10000002384,"ta":126.162}
|
||||
{"ev":"vibrate","pattern":"[20]","t":127766.5,"ta":126.163}
|
||||
{"ev":"start","t":127766.60000002384,"sid":134,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":126.163}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":210,"t":128230,"ta":126.626}
|
||||
{"ev":"vibrate","pattern":"[20]","t":128231.40000000596,"ta":126.628}
|
||||
{"ev":"start","t":128231.60000002384,"sid":135,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":0,"ta":126.628}
|
||||
{"ev":"vibrate","pattern":"[100]","t":128404.80000001192,"ta":126.801}
|
||||
{"ev":"vibrate","pattern":"[100]","t":128404.80000001192,"ta":126.801}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":128404.80000001192,"ta":126.801}
|
||||
{"ev":"vend","url":"audio/voice/male/gd_miss.ogg","t":128405.20000001788,"reason":"kill","ta":126.802}
|
||||
{"ev":"fetch","url":"audio/voice/male/grade_a.ogg","status":200,"ok":true,"ms":2,"t":128407.60000002384,"ta":126.804}
|
||||
{"ev":"vstart","url":"audio/voice/male/grade_a.ogg","t":128412.60000002384,"dur":4.4,"ta":126.809}
|
||||
{"ev":"stop","t":129104.5,"sid":35,"when":0,"ta":127.501}
|
||||
{"ev":"vend","url":"audio/voice/male/grade_a.ogg","t":132978.40000000596,"reason":"kill","ta":131.375}
|
||||
{"ev":"fetch","url":"audio/voice/male/new_best_combo.ogg","status":200,"ok":true,"ms":2,"t":132980.20000001788,"ta":131.377}
|
||||
{"ev":"vstart","url":"audio/voice/male/new_best_combo.ogg","t":132983.40000000596,"dur":1.84,"ta":131.38}
|
||||
{"ev":"vend","url":"audio/voice/male/new_best_combo.ogg","t":134859,"reason":"kill","ta":133.255}
|
||||
{"ev":"fetch","url":"audio/voice/male/unlock_song2.ogg","status":200,"ok":true,"ms":3,"t":134861.90000000596,"ta":133.258}
|
||||
{"ev":"vstart","url":"audio/voice/male/unlock_song2.ogg","t":134865.5,"dur":2.48,"ta":133.262}
|
||||
{"ev":"vend","url":"audio/voice/male/unlock_song2.ogg","t":137575.5,"reason":"kill","ta":135.972}
|
||||
{"ev":"fetch","url":"audio/voice/male/restart.ogg","status":200,"ok":true,"ms":3,"t":137578.20000001788,"ta":135.975}
|
||||
{"ev":"vstart","url":"audio/voice/male/restart.ogg","t":137583.90000000596,"dur":4.08,"ta":135.98}
|
||||
{"ev":"vend","url":"audio/voice/male/restart.ogg","t":141685.30000001192,"reason":"kill","ta":140.082}
|
||||
{"ev":"start","t":141685.60000002384,"sid":136,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":140.082}
|
||||
{"ev":"recstop","t":293700.5,"ta":292.097}
|
||||
Binary file not shown.
@@ -0,0 +1,396 @@
|
||||
# rhythm 实时会话 transcript
|
||||
|
||||
- `[ -0.08s]` **GESTURE** tap @(195,422)
|
||||
- `[ 0.00s]` REC 开始 (audio/webm;codecs=opus)
|
||||
- `[ 0.06s]` VOICE ▶ welcome (dur 8.24s)
|
||||
- `[ 0.25s]` BGM ♪ track90 (loop)
|
||||
- `[ 1.21s]` **GESTURE** tap @(195,422)
|
||||
- `[ 1.21s]` VIBRATE [20]
|
||||
- `[ 1.71s]` VOICE ■ welcome (kill)
|
||||
- `[ 1.71s]` VOICE ▶ tut_map (dur 18.04s)
|
||||
- `[ 1.71s]` VERDICT welcome: **TRUNCATED** sim=0.3226
|
||||
- 期望: 欢迎来到节拍行者。今天你是乐队的鼓手,整面屏幕都是你的鼓。
|
||||
- 听到: 欢迎来到节。
|
||||
- `[ 2.58s]` **GESTURE** tap @(195,422)
|
||||
- `[ 2.58s]` VIBRATE [20]
|
||||
- `[ 3.08s]` VOICE ■ tut_map (kill)
|
||||
- `[ 3.08s]` VOICE ▶ tut_probe (dur 3.84s)
|
||||
- `[ 3.08s]` VERDICT tut_map: **TRUNCATED** sim=0.0741
|
||||
- 期望: 先认识你的鼓。屏幕横着分三列,左边、中间、右边;竖着分两行,上面清亮,下面低沉。随便摸一摸,听到哪面鼓,我就告诉你它在哪。
|
||||
- 听到: 写写认识。
|
||||
- `[ 3.95s]` **GESTURE** tap @(195,422)
|
||||
- `[ 3.95s]` VIBRATE [20]
|
||||
- `[ 4.45s]` VOICE ■ tut_probe (kill)
|
||||
- `[ 4.45s]` VERDICT tut_probe: **TRUNCATED** sim=0.4211
|
||||
- 期望: 摸到三个不同的地方,我们就开始。
|
||||
- 听到: 摸到三个布。
|
||||
- `[ 5.32s]` **GESTURE** tap @(65,210)
|
||||
- `[ 5.32s]` VIBRATE [20]
|
||||
- `[ 5.32s]` SFX ♪ dm_hat
|
||||
- `[ 5.33s]` VOICE ▶ zone_tl (dur 1.6s)
|
||||
- `[ 6.93s]` VOICE ■ zone_tl (kill)
|
||||
- `[ 6.93s]` VERDICT zone_tl: **OK** sim=0.75
|
||||
- 期望: 左上,踩镲。
|
||||
- 听到: 左上踩草。
|
||||
- `[ 7.99s]` **GESTURE** tap @(325,210)
|
||||
- `[ 7.99s]` VIBRATE [20]
|
||||
- `[ 7.99s]` SFX ♪ dm_crash
|
||||
- `[ 8.00s]` VOICE ▶ zone_tr (dur 1.76s)
|
||||
- `[ 9.88s]` VOICE ■ zone_tr (kill)
|
||||
- `[ 9.88s]` VERDICT zone_tr: **MISMATCH** sim=0.25
|
||||
- 期望: 右上,吊镲。
|
||||
- 听到: 有上调查。
|
||||
- `[ 10.66s]` **GESTURE** tap @(65,630)
|
||||
- `[ 10.66s]` VIBRATE [20]
|
||||
- `[ 10.66s]` SFX ♪ dm_snare
|
||||
- `[ 10.67s]` VOICE ▶ zone_bl (dur 2s)
|
||||
- `[ 10.68s]` VOICE ■ zone_bl (kill)
|
||||
- `[ 10.68s]` VOICE ▶ tut_z_kick (dur 7.28s)
|
||||
- `[ 10.68s]` VERDICT zone_bl: **TRUNCATED** sim=0
|
||||
- 期望: 左下,军鼓。
|
||||
- 听到: 嗯。
|
||||
- `[ 18.21s]` VOICE ■ tut_z_kick (kill)
|
||||
- `[ 18.21s]` VERDICT tut_z_kick: **OK** sim=0.9565
|
||||
- 期望: 下面正中间,是底鼓,你的家。先听四下数拍,然后跟着我敲。
|
||||
- 听到: 下面正中间是骶鼓,你的家先听四下数拍,然后跟着我敲。
|
||||
- `[ 21.41s]` SFX ♪ dm_accent
|
||||
- `[ 21.99s]` VIBRATE [8]
|
||||
- `[ 22.09s]` SFX ♪ dm_accent
|
||||
- `[ 22.66s]` VIBRATE [8]
|
||||
- `[ 22.73s]` SFX ♪ dm_accent
|
||||
- `[ 23.32s]` VIBRATE [8]
|
||||
- `[ 23.41s]` SFX ♪ dm_accent
|
||||
- `[ 23.99s]` VIBRATE [8]
|
||||
- `[ 24.09s]` SFX ♪ inst_kick
|
||||
- `[ 24.67s]` VIBRATE [8]
|
||||
- `[ 27.29s]` **GESTURE** tap @(195,630)
|
||||
- `[ 27.29s]` VIBRATE [20]
|
||||
- `[ 27.29s]` SFX ♪ inst_kick
|
||||
- `[ 27.29s]` SFX ♪ dm_accent
|
||||
- `[ 28.10s]` VOICE ▶ tut_z_sides (dur 5.2s)
|
||||
- `[ 28.10s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 33.33s]` VOICE ■ tut_z_sides (kill)
|
||||
- `[ 33.33s]` VERDICT tut_z_sides: **OK** sim=0.8824
|
||||
- 期望: 左下是军鼓,右下是低嗵。一左一右,跟着打。
|
||||
- 听到: 左下是军鼓,右下是敌通,一左一右跟着打。
|
||||
- `[ 34.77s]` SFX ♪ dm_accent
|
||||
- `[ 35.33s]` VIBRATE [8]
|
||||
- `[ 35.45s]` SFX ♪ dm_accent
|
||||
- `[ 36.00s]` VIBRATE [8]
|
||||
- `[ 36.09s]` SFX ♪ dm_accent
|
||||
- `[ 36.66s]` VIBRATE [8]
|
||||
- `[ 36.77s]` SFX ♪ dm_accent
|
||||
- `[ 37.33s]` VIBRATE [8]
|
||||
- `[ 37.41s]` SFX ♪ dm_snare
|
||||
- `[ 37.99s]` VIBRATE [8]
|
||||
- `[ 38.77s]` SFX ♪ dm_tomlo
|
||||
- `[ 39.33s]` VIBRATE [8]
|
||||
- `[ 40.63s]` **GESTURE** tap @(65,630)
|
||||
- `[ 40.64s]` VIBRATE [20]
|
||||
- `[ 40.64s]` SFX ♪ dm_snare
|
||||
- `[ 40.64s]` SFX ♪ dm_accent
|
||||
- `[ 41.96s]` **GESTURE** tap @(325,630)
|
||||
- `[ 41.97s]` VIBRATE [20]
|
||||
- `[ 41.97s]` SFX ♪ dm_tomlo
|
||||
- `[ 41.97s]` SFX ♪ dm_accent
|
||||
- `[ 42.78s]` VOICE ▶ tut_z_patt (dur 9.68s)
|
||||
- `[ 42.78s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 52.55s]` VOICE ■ tut_z_patt (kill)
|
||||
- `[ 52.55s]` VERDICT tut_z_patt: **OK** sim=0.7308
|
||||
- 期望: 上面一排更清亮。左上踩镲,上中高嗵,右上吊镲。听这一句,三个音。
|
||||
- 听到: 上面一白更清亮,左上采茶,上中高通,右上调查,听这一句三个一。
|
||||
- `[ 53.43s]` SFX ♪ dm_accent
|
||||
- `[ 53.99s]` VIBRATE [8]
|
||||
- `[ 54.07s]` SFX ♪ dm_accent
|
||||
- `[ 54.67s]` VIBRATE [8]
|
||||
- `[ 54.75s]` SFX ♪ dm_accent
|
||||
- `[ 55.32s]` VIBRATE [8]
|
||||
- `[ 55.43s]` SFX ♪ dm_accent
|
||||
- `[ 55.99s]` VIBRATE [8]
|
||||
- `[ 56.11s]` SFX ♪ dm_hat
|
||||
- `[ 56.66s]` VIBRATE [8]
|
||||
- `[ 56.75s]` SFX ♪ dm_tomhi
|
||||
- `[ 57.32s]` VIBRATE [8]
|
||||
- `[ 57.43s]` SFX ♪ dm_crash
|
||||
- `[ 57.99s]` VIBRATE [8]
|
||||
- `[ 59.27s]` **GESTURE** tap @(65,210)
|
||||
- `[ 59.28s]` VIBRATE [20]
|
||||
- `[ 59.28s]` SFX ♪ dm_hat
|
||||
- `[ 59.28s]` SFX ♪ dm_accent
|
||||
- `[ 59.94s]` **GESTURE** tap @(195,210)
|
||||
- `[ 59.94s]` VIBRATE [20]
|
||||
- `[ 59.94s]` SFX ♪ dm_tomhi
|
||||
- `[ 59.94s]` SFX ♪ dm_accent
|
||||
- `[ 60.68s]` **GESTURE** tap @(325,210)
|
||||
- `[ 60.69s]` VIBRATE [20]
|
||||
- `[ 60.69s]` SFX ♪ dm_crash
|
||||
- `[ 60.69s]` SFX ♪ dm_accent
|
||||
- `[ 61.44s]` VOICE ▶ tut_done (dur 2.48s)
|
||||
- `[ 61.44s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 64.16s]` VOICE ■ tut_done (kill)
|
||||
- `[ 64.16s]` VERDICT tut_done: **OK** sim=1
|
||||
- 期望: 很好,演出开始。
|
||||
- 听到: 很好,演出开始。
|
||||
- `[ 64.16s]` BGM ♪ track90 (loop)
|
||||
- `[ 64.60s]` SFX ♪ inst_kick
|
||||
- `[ 65.16s]` VIBRATE [8]
|
||||
- `[ 65.24s]` SFX ♪ inst_kick
|
||||
- `[ 65.84s]` VIBRATE [8]
|
||||
- `[ 65.92s]` SFX ♪ inst_kick
|
||||
- `[ 66.49s]` VIBRATE [8]
|
||||
- `[ 66.60s]` SFX ♪ inst_kick
|
||||
- `[ 67.16s]` VIBRATE [8]
|
||||
- `[ 67.24s]` SFX ♪ inst_kick
|
||||
- `[ 67.81s]` **GESTURE** tap @(195,630)
|
||||
- `[ 67.81s]` VIBRATE [20]
|
||||
- `[ 67.81s]` SFX ♪ inst_kick
|
||||
- `[ 67.82s]` VIBRATE [8]
|
||||
- `[ 67.85s]` VOICE ▶ gd_answer (dur 1.52s)
|
||||
- `[ 67.85s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 68.47s]` **GESTURE** tap @(195,630)
|
||||
- `[ 68.47s]` VIBRATE [20]
|
||||
- `[ 68.47s]` SFX ♪ inst_kick
|
||||
- `[ 68.60s]` SFX ♪ inst_kick
|
||||
- `[ 69.16s]` VIBRATE [8]
|
||||
- `[ 69.45s]` VOICE ■ gd_answer (kill)
|
||||
- `[ 69.45s]` VERDICT gd_answer: **OK** sim=1
|
||||
- 期望: 现在跟着我打。
|
||||
- 听到: 现在跟着我打。
|
||||
- `[ 70.96s]` VIBRATE [60,40,60]
|
||||
- `[ 70.96s]` SFX ♪ dm_hat
|
||||
- `[ 71.78s]` **GESTURE** tap @(195,630)
|
||||
- `[ 71.78s]` VIBRATE [20]
|
||||
- `[ 71.78s]` SFX ♪ inst_kick
|
||||
- `[ 71.78s]` SFX ♪ dm_accent
|
||||
- `[ 75.24s]` SFX ♪ dm_snare
|
||||
- `[ 75.83s]` VIBRATE [8]
|
||||
- `[ 76.60s]` SFX ♪ dm_tomlo
|
||||
- `[ 77.16s]` VIBRATE [8]
|
||||
- `[ 78.48s]` **GESTURE** tap @(65,630)
|
||||
- `[ 78.48s]` VIBRATE [20]
|
||||
- `[ 78.48s]` SFX ♪ dm_snare
|
||||
- `[ 78.48s]` SFX ♪ dm_accent
|
||||
- `[ 79.80s]` **GESTURE** tap @(325,630)
|
||||
- `[ 79.80s]` VIBRATE [20]
|
||||
- `[ 79.80s]` VIBRATE [20,40,20]
|
||||
- `[ 79.80s]` SFX ♪ dm_tomlo
|
||||
- `[ 79.80s]` SFX ♪ dm_accent
|
||||
- `[ 83.24s]` SFX ♪ inst_kick
|
||||
- `[ 83.82s]` VIBRATE [8]
|
||||
- `[ 83.92s]` SFX ♪ inst_kick
|
||||
- `[ 84.49s]` VIBRATE [8]
|
||||
- `[ 84.56s]` SFX ♪ dm_snare
|
||||
- `[ 85.15s]` VIBRATE [8]
|
||||
- `[ 86.49s]` **GESTURE** tap @(195,630)
|
||||
- `[ 86.49s]` VIBRATE [20]
|
||||
- `[ 86.49s]` SFX ♪ inst_kick
|
||||
- `[ 86.49s]` SFX ♪ dm_accent
|
||||
- `[ 87.15s]` **GESTURE** tap @(195,630)
|
||||
- `[ 87.15s]` VIBRATE [20]
|
||||
- `[ 87.15s]` SFX ♪ inst_kick
|
||||
- `[ 87.15s]` SFX ♪ dm_accent
|
||||
- `[ 87.81s]` **GESTURE** tap @(65,630)
|
||||
- `[ 87.81s]` VIBRATE [20]
|
||||
- `[ 87.81s]` VIBRATE [20,40,20]
|
||||
- `[ 87.81s]` SFX ♪ dm_snare
|
||||
- `[ 87.81s]` SFX ♪ dm_accent
|
||||
- `[ 91.24s]` SFX ♪ dm_snare
|
||||
- `[ 91.83s]` VIBRATE [8]
|
||||
- `[ 91.92s]` SFX ♪ dm_tomlo
|
||||
- `[ 92.48s]` VIBRATE [8]
|
||||
- `[ 92.60s]` SFX ♪ inst_kick
|
||||
- `[ 93.16s]` VIBRATE [8]
|
||||
- `[ 94.51s]` **GESTURE** tap @(65,630)
|
||||
- `[ 94.51s]` VIBRATE [20]
|
||||
- `[ 94.51s]` SFX ♪ dm_snare
|
||||
- `[ 94.51s]` SFX ♪ dm_accent
|
||||
- `[ 95.17s]` **GESTURE** tap @(325,630)
|
||||
- `[ 95.17s]` VIBRATE [20]
|
||||
- `[ 95.17s]` SFX ♪ dm_tomlo
|
||||
- `[ 95.17s]` SFX ♪ dm_accent
|
||||
- `[ 95.83s]` **GESTURE** tap @(195,630)
|
||||
- `[ 95.84s]` VIBRATE [20]
|
||||
- `[ 95.84s]` VIBRATE [20,40,20]
|
||||
- `[ 95.84s]` SFX ♪ inst_kick
|
||||
- `[ 95.84s]` SFX ♪ dm_accent
|
||||
- `[ 99.24s]` SFX ♪ inst_kick
|
||||
- `[ 99.82s]` VIBRATE [8]
|
||||
- `[ 99.84s]` VOICE ▶ mid_song (dur 2.32s)
|
||||
- `[ 99.84s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 99.92s]` SFX ♪ dm_snare
|
||||
- `[ 100.49s]` VIBRATE [8]
|
||||
- `[ 100.56s]` SFX ♪ inst_kick
|
||||
- `[ 101.15s]` VIBRATE [8]
|
||||
- `[ 101.24s]` SFX ♪ dm_tomlo
|
||||
- `[ 101.82s]` VIBRATE [8]
|
||||
- `[ 102.19s]` VOICE ■ mid_song (kill)
|
||||
- `[ 102.19s]` VERDICT mid_song: **OK** sim=0.8
|
||||
- 期望: 过半了,保持。
|
||||
- 听到: 过磅了,保持。
|
||||
- `[ 102.44s]` **GESTURE** tap @(195,630)
|
||||
- `[ 102.44s]` VIBRATE [20]
|
||||
- `[ 102.44s]` SFX ♪ inst_kick
|
||||
- `[ 102.44s]` SFX ♪ dm_accent
|
||||
- `[ 103.19s]` **GESTURE** tap @(65,630)
|
||||
- `[ 103.19s]` VIBRATE [20]
|
||||
- `[ 103.19s]` SFX ♪ dm_snare
|
||||
- `[ 103.19s]` SFX ♪ dm_accent
|
||||
- `[ 103.77s]` **GESTURE** tap @(195,630)
|
||||
- `[ 103.77s]` VIBRATE [20]
|
||||
- `[ 103.77s]` SFX ♪ inst_kick
|
||||
- `[ 103.77s]` SFX ♪ dm_accent
|
||||
- `[ 104.51s]` **GESTURE** tap @(325,630)
|
||||
- `[ 104.51s]` VIBRATE [20]
|
||||
- `[ 104.51s]` VIBRATE [20,40,20]
|
||||
- `[ 104.51s]` SFX ♪ dm_tomlo
|
||||
- `[ 104.51s]` SFX ♪ dm_accent
|
||||
- `[ 104.56s]` SFX ♪ dm_hat
|
||||
- `[ 105.16s]` VIBRATE [8]
|
||||
- `[ 105.92s]` SFX ♪ dm_snare
|
||||
- `[ 106.50s]` VIBRATE [8]
|
||||
- `[ 106.60s]` SFX ♪ inst_kick
|
||||
- `[ 107.15s]` VIBRATE [8]
|
||||
- `[ 107.82s]` **GESTURE** tap @(65,210)
|
||||
- `[ 107.82s]` VIBRATE [20]
|
||||
- `[ 107.82s]` SFX ♪ dm_hat
|
||||
- `[ 107.82s]` SFX ♪ dm_accent
|
||||
- `[ 109.14s]` **GESTURE** tap @(65,630)
|
||||
- `[ 109.14s]` VIBRATE [20]
|
||||
- `[ 109.14s]` SFX ♪ dm_snare
|
||||
- `[ 109.14s]` SFX ♪ dm_accent
|
||||
- `[ 109.80s]` **GESTURE** tap @(195,630)
|
||||
- `[ 109.80s]` VIBRATE [20]
|
||||
- `[ 109.80s]` VIBRATE [100]
|
||||
- `[ 109.80s]` VIBRATE [20,40,20]
|
||||
- `[ 109.80s]` SFX ♪ inst_kick
|
||||
- `[ 109.80s]` SFX ♪ dm_accent
|
||||
- `[ 109.92s]` SFX ♪ inst_kick
|
||||
- `[ 110.49s]` VIBRATE [8]
|
||||
- `[ 110.60s]` SFX ♪ dm_hat
|
||||
- `[ 111.16s]` VIBRATE [8]
|
||||
- `[ 111.24s]` SFX ♪ inst_kick
|
||||
- `[ 111.82s]` VIBRATE [8]
|
||||
- `[ 111.92s]` SFX ♪ dm_crash
|
||||
- `[ 112.49s]` VIBRATE [8]
|
||||
- `[ 113.11s]` **GESTURE** tap @(195,630)
|
||||
- `[ 113.11s]` VIBRATE [20]
|
||||
- `[ 113.11s]` SFX ♪ inst_kick
|
||||
- `[ 113.11s]` SFX ♪ dm_accent
|
||||
- `[ 113.85s]` **GESTURE** tap @(65,210)
|
||||
- `[ 113.85s]` VIBRATE [20]
|
||||
- `[ 113.85s]` SFX ♪ dm_hat
|
||||
- `[ 113.85s]` SFX ♪ dm_accent
|
||||
- `[ 114.43s]` **GESTURE** tap @(195,630)
|
||||
- `[ 114.43s]` VIBRATE [20]
|
||||
- `[ 114.43s]` SFX ♪ inst_kick
|
||||
- `[ 114.43s]` SFX ♪ dm_accent
|
||||
- `[ 115.17s]` **GESTURE** tap @(325,210)
|
||||
- `[ 115.17s]` VIBRATE [20]
|
||||
- `[ 115.17s]` VIBRATE [20,40,20]
|
||||
- `[ 115.17s]` SFX ♪ dm_crash
|
||||
- `[ 115.17s]` SFX ♪ dm_accent
|
||||
- `[ 115.24s]` SFX ♪ dm_snare
|
||||
- `[ 115.82s]` VIBRATE [8]
|
||||
- `[ 115.92s]` SFX ♪ dm_tomlo
|
||||
- `[ 116.50s]` VIBRATE [8]
|
||||
- `[ 116.56s]` SFX ♪ dm_hat
|
||||
- `[ 117.15s]` VIBRATE [8]
|
||||
- `[ 117.24s]` SFX ♪ inst_kick
|
||||
- `[ 117.83s]` VIBRATE [8]
|
||||
- `[ 118.47s]` **GESTURE** tap @(65,630)
|
||||
- `[ 118.47s]` VIBRATE [20]
|
||||
- `[ 118.47s]` SFX ♪ dm_snare
|
||||
- `[ 118.47s]` SFX ♪ dm_accent
|
||||
- `[ 118.53s]` VOICE ▶ tut_fill (dur 3.12s)
|
||||
- `[ 118.53s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 119.13s]` **GESTURE** tap @(325,630)
|
||||
- `[ 119.13s]` VIBRATE [20]
|
||||
- `[ 119.13s]` SFX ♪ dm_tomlo
|
||||
- `[ 119.13s]` SFX ♪ dm_accent
|
||||
- `[ 119.79s]` **GESTURE** tap @(65,210)
|
||||
- `[ 119.79s]` VIBRATE [20]
|
||||
- `[ 119.79s]` SFX ♪ dm_hat
|
||||
- `[ 119.79s]` SFX ♪ dm_accent
|
||||
- `[ 120.45s]` **GESTURE** tap @(195,630)
|
||||
- `[ 120.45s]` VIBRATE [20]
|
||||
- `[ 120.45s]` VIBRATE [20,40,20]
|
||||
- `[ 120.45s]` SFX ♪ inst_kick
|
||||
- `[ 120.45s]` SFX ♪ dm_accent
|
||||
- `[ 120.56s]` SFX ♪ inst_kick
|
||||
- `[ 120.92s]` SFX ♪ inst_kick
|
||||
- `[ 121.16s]` VIBRATE [8]
|
||||
- `[ 121.24s]` SFX ♪ inst_kick
|
||||
- `[ 121.48s]` VIBRATE [8]
|
||||
- `[ 121.60s]` SFX ♪ dm_snare
|
||||
- `[ 121.83s]` VIBRATE [8]
|
||||
- `[ 121.92s]` SFX ♪ dm_snare
|
||||
- `[ 122.00s]` VOICE ■ tut_fill (kill)
|
||||
- `[ 122.00s]` VERDICT tut_fill: **OK** sim=0.9167
|
||||
- 期望: 最后有一段加花,跟着我连打。
|
||||
- 听到: 最后有一段佳花跟着我连打。
|
||||
- `[ 122.15s]` VIBRATE [8]
|
||||
- `[ 122.24s]` SFX ♪ inst_kick
|
||||
- `[ 122.48s]` VIBRATE [8]
|
||||
- `[ 122.60s]` SFX ♪ dm_crash
|
||||
- `[ 122.83s]` VIBRATE [8]
|
||||
- `[ 123.16s]` VIBRATE [8]
|
||||
- `[ 123.84s]` **GESTURE** tap @(195,630)
|
||||
- `[ 123.84s]` VIBRATE [20]
|
||||
- `[ 123.84s]` SFX ♪ inst_kick
|
||||
- `[ 123.84s]` SFX ♪ dm_accent
|
||||
- `[ 124.30s]` **GESTURE** tap @(195,630)
|
||||
- `[ 124.30s]` VIBRATE [20]
|
||||
- `[ 124.31s]` SFX ♪ inst_kick
|
||||
- `[ 124.31s]` SFX ♪ dm_accent
|
||||
- `[ 124.77s]` **GESTURE** tap @(195,630)
|
||||
- `[ 124.77s]` VIBRATE [20]
|
||||
- `[ 124.77s]` SFX ♪ inst_kick
|
||||
- `[ 125.23s]` **GESTURE** tap @(65,630)
|
||||
- `[ 125.23s]` VIBRATE [20]
|
||||
- `[ 125.23s]` SFX ♪ dm_snare
|
||||
- `[ 125.23s]` SFX ♪ dm_accent
|
||||
- `[ 125.32s]` VIBRATE [60,40,60]
|
||||
- `[ 125.32s]` SFX ♪ dm_hat
|
||||
- `[ 125.70s]` **GESTURE** tap @(65,630)
|
||||
- `[ 125.70s]` VIBRATE [20]
|
||||
- `[ 125.70s]` VIBRATE [60,40,60]
|
||||
- `[ 125.70s]` SFX ♪ dm_snare
|
||||
- `[ 125.70s]` SFX ♪ dm_hat
|
||||
- `[ 125.70s]` VOICE ▶ gd_miss (dur 3.2s)
|
||||
- `[ 125.70s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 125.96s]` VIBRATE [60,40,60]
|
||||
- `[ 125.96s]` SFX ♪ dm_hat
|
||||
- `[ 126.16s]` **GESTURE** tap @(195,630)
|
||||
- `[ 126.16s]` VIBRATE [20]
|
||||
- `[ 126.16s]` SFX ♪ inst_kick
|
||||
- `[ 126.63s]` **GESTURE** tap @(325,210)
|
||||
- `[ 126.63s]` VIBRATE [20]
|
||||
- `[ 126.63s]` SFX ♪ dm_crash
|
||||
- `[ 126.80s]` VIBRATE [100]
|
||||
- `[ 126.80s]` VIBRATE [100]
|
||||
- `[ 126.80s]` VIBRATE [20,40,20]
|
||||
- `[ 126.80s]` VOICE ■ gd_miss (kill)
|
||||
- `[ 126.80s]` VERDICT gd_miss: **TRUNCATED** sim=0.4706
|
||||
- 期望: 慢了半拍,下一小节跟上我就行。
|
||||
- 听到: 慢了半拍。
|
||||
- `[ 126.81s]` VOICE ▶ grade_a (dur 4.4s)
|
||||
- `[ 131.38s]` VOICE ■ grade_a (kill)
|
||||
- `[ 131.38s]` VERDICT grade_a: **OK** sim=0.6207
|
||||
- 期望: A 级!准确率超过八成五,非常出色。
|
||||
- 听到: 第一季准确率超过8乘5,非常出色。
|
||||
- `[ 131.38s]` VOICE ▶ new_best_combo (dur 1.84s)
|
||||
- `[ 133.25s]` VOICE ■ new_best_combo (kill)
|
||||
- `[ 133.25s]` VERDICT new_best_combo: **MISMATCH** sim=0.4
|
||||
- 期望: 新连击纪录!
|
||||
- 听到: 新联机记录。
|
||||
- `[ 133.26s]` VOICE ▶ unlock_song2 (dur 2.48s)
|
||||
- `[ 135.97s]` VOICE ■ unlock_song2 (kill)
|
||||
- `[ 135.97s]` VERDICT unlock_song2: **OK** sim=0.9333
|
||||
- 期望: 新曲目解锁,追风!
|
||||
- 听到: 路新曲目解锁追风。
|
||||
- `[ 135.98s]` VOICE ▶ restart (dur 4.08s)
|
||||
- `[ 140.08s]` VOICE ■ restart (kill)
|
||||
- `[ 140.08s]` BGM ♪ menu (loop)
|
||||
- `[ 140.08s]` VERDICT restart: **OK** sim=0.75
|
||||
- 期望: 单击再来一遍,右滑下一首,下滑回大厅。
|
||||
- 听到: 但气再来一遍,又滑下一手下滑回大厅。
|
||||
@@ -0,0 +1,473 @@
|
||||
{
|
||||
"game": "rhythm",
|
||||
"settings": {
|
||||
"voice": "male",
|
||||
"guide": "full",
|
||||
"speed": 1,
|
||||
"bgm": 1
|
||||
},
|
||||
"outdir": "/home/xsl/AutoVideo/SoundGame/web/harness/live/out/rhythm-20260914095806",
|
||||
"segs": [
|
||||
{
|
||||
"idx": 0,
|
||||
"voiceId": "welcome",
|
||||
"t0": 0.062,
|
||||
"t1": 1.711,
|
||||
"dur": 8.24,
|
||||
"expEnd": 8.302,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": "TRUNCATED",
|
||||
"heard": "欢迎来到节。",
|
||||
"similarity": 0.3226
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"voiceId": "tut_map",
|
||||
"t0": 1.711,
|
||||
"t1": 3.08,
|
||||
"dur": 18.04,
|
||||
"expEnd": 19.751,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": "TRUNCATED",
|
||||
"heard": "写写认识。",
|
||||
"similarity": 0.0741
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"voiceId": "tut_probe",
|
||||
"t0": 3.08,
|
||||
"t1": 4.449,
|
||||
"dur": 3.84,
|
||||
"expEnd": 6.92,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": "TRUNCATED",
|
||||
"heard": "摸到三个布。",
|
||||
"similarity": 0.4211
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"voiceId": "zone_tl",
|
||||
"t0": 5.325,
|
||||
"t1": 6.926,
|
||||
"dur": 1.6,
|
||||
"expEnd": 6.925,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "左上踩草。",
|
||||
"similarity": 0.75
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"voiceId": "zone_tr",
|
||||
"t0": 7.997,
|
||||
"t1": 9.875,
|
||||
"dur": 1.76,
|
||||
"expEnd": 9.757,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "MISMATCH",
|
||||
"heard": "有上调查。",
|
||||
"similarity": 0.25
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"voiceId": "zone_bl",
|
||||
"t0": 10.668,
|
||||
"t1": 10.675,
|
||||
"dur": 2,
|
||||
"expEnd": 12.668,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": "TRUNCATED",
|
||||
"heard": "嗯。",
|
||||
"similarity": 0
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"voiceId": "tut_z_kick",
|
||||
"t0": 10.675,
|
||||
"t1": 18.21,
|
||||
"dur": 7.28,
|
||||
"expEnd": 17.955,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "下面正中间是骶鼓,你的家先听四下数拍,然后跟着我敲。",
|
||||
"similarity": 0.9565
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"voiceId": "tut_z_sides",
|
||||
"t0": 28.101,
|
||||
"t1": 33.325,
|
||||
"dur": 5.2,
|
||||
"expEnd": 33.301,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "左下是军鼓,右下是敌通,一左一右跟着打。",
|
||||
"similarity": 0.8824
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"voiceId": "tut_z_patt",
|
||||
"t0": 42.778,
|
||||
"t1": 52.55,
|
||||
"dur": 9.68,
|
||||
"expEnd": 52.458,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "上面一白更清亮,左上采茶,上中高通,右上调查,听这一句三个一。",
|
||||
"similarity": 0.7308
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"voiceId": "tut_done",
|
||||
"t0": 61.436,
|
||||
"t1": 64.159,
|
||||
"dur": 2.48,
|
||||
"expEnd": 63.916,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "很好,演出开始。",
|
||||
"similarity": 1
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"voiceId": "gd_answer",
|
||||
"t0": 67.846,
|
||||
"t1": 69.452,
|
||||
"dur": 1.52,
|
||||
"expEnd": 69.366,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "现在跟着我打。",
|
||||
"similarity": 1
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"voiceId": "mid_song",
|
||||
"t0": 99.841,
|
||||
"t1": 102.19,
|
||||
"dur": 2.32,
|
||||
"expEnd": 102.161,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "过磅了,保持。",
|
||||
"similarity": 0.8
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"voiceId": "tut_fill",
|
||||
"t0": 118.528,
|
||||
"t1": 121.995,
|
||||
"dur": 3.12,
|
||||
"expEnd": 121.648,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "最后有一段佳花跟着我连打。",
|
||||
"similarity": 0.9167
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"voiceId": "gd_miss",
|
||||
"t0": 125.705,
|
||||
"t1": 126.802,
|
||||
"dur": 3.2,
|
||||
"expEnd": 128.905,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": "TRUNCATED",
|
||||
"heard": "慢了半拍。",
|
||||
"similarity": 0.4706
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"voiceId": "grade_a",
|
||||
"t0": 126.809,
|
||||
"t1": 131.375,
|
||||
"dur": 4.4,
|
||||
"expEnd": 131.209,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "第一季准确率超过8乘5,非常出色。",
|
||||
"similarity": 0.6207
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"voiceId": "new_best_combo",
|
||||
"t0": 131.38,
|
||||
"t1": 133.255,
|
||||
"dur": 1.84,
|
||||
"expEnd": 133.22,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "MISMATCH",
|
||||
"heard": "新联机记录。",
|
||||
"similarity": 0.4
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"voiceId": "unlock_song2",
|
||||
"t0": 133.262,
|
||||
"t1": 135.972,
|
||||
"dur": 2.48,
|
||||
"expEnd": 135.742,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "路新曲目解锁追风。",
|
||||
"similarity": 0.9333
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"voiceId": "restart",
|
||||
"t0": 135.98,
|
||||
"t1": 140.082,
|
||||
"dur": 4.08,
|
||||
"expEnd": 140.06,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "但气再来一遍,又滑下一手下滑回大厅。",
|
||||
"similarity": 0.75
|
||||
}
|
||||
],
|
||||
"rows": [
|
||||
{
|
||||
"t0": 0.062,
|
||||
"t1": 1.711,
|
||||
"voiceId": "welcome",
|
||||
"expected": "欢迎来到节拍行者。今天你是乐队的鼓手,整面屏幕都是你的鼓。",
|
||||
"heard": "欢迎来到节。",
|
||||
"similarity": 0.3226,
|
||||
"verdict": "TRUNCATED"
|
||||
},
|
||||
{
|
||||
"t0": 1.711,
|
||||
"t1": 3.08,
|
||||
"voiceId": "tut_map",
|
||||
"expected": "先认识你的鼓。屏幕横着分三列,左边、中间、右边;竖着分两行,上面清亮,下面低沉。随便摸一摸,听到哪面鼓,我就告诉你它在哪。",
|
||||
"heard": "写写认识。",
|
||||
"similarity": 0.0741,
|
||||
"verdict": "TRUNCATED"
|
||||
},
|
||||
{
|
||||
"t0": 3.08,
|
||||
"t1": 4.449,
|
||||
"voiceId": "tut_probe",
|
||||
"expected": "摸到三个不同的地方,我们就开始。",
|
||||
"heard": "摸到三个布。",
|
||||
"similarity": 0.4211,
|
||||
"verdict": "TRUNCATED"
|
||||
},
|
||||
{
|
||||
"t0": 5.325,
|
||||
"t1": 6.926,
|
||||
"voiceId": "zone_tl",
|
||||
"expected": "左上,踩镲。",
|
||||
"heard": "左上踩草。",
|
||||
"similarity": 0.75,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 7.997,
|
||||
"t1": 9.875,
|
||||
"voiceId": "zone_tr",
|
||||
"expected": "右上,吊镲。",
|
||||
"heard": "有上调查。",
|
||||
"similarity": 0.25,
|
||||
"verdict": "MISMATCH"
|
||||
},
|
||||
{
|
||||
"t0": 10.668,
|
||||
"t1": 10.675,
|
||||
"voiceId": "zone_bl",
|
||||
"expected": "左下,军鼓。",
|
||||
"heard": "嗯。",
|
||||
"similarity": 0,
|
||||
"verdict": "TRUNCATED"
|
||||
},
|
||||
{
|
||||
"t0": 10.675,
|
||||
"t1": 18.21,
|
||||
"voiceId": "tut_z_kick",
|
||||
"expected": "下面正中间,是底鼓,你的家。先听四下数拍,然后跟着我敲。",
|
||||
"heard": "下面正中间是骶鼓,你的家先听四下数拍,然后跟着我敲。",
|
||||
"similarity": 0.9565,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 28.101,
|
||||
"t1": 33.325,
|
||||
"voiceId": "tut_z_sides",
|
||||
"expected": "左下是军鼓,右下是低嗵。一左一右,跟着打。",
|
||||
"heard": "左下是军鼓,右下是敌通,一左一右跟着打。",
|
||||
"similarity": 0.8824,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 42.778,
|
||||
"t1": 52.55,
|
||||
"voiceId": "tut_z_patt",
|
||||
"expected": "上面一排更清亮。左上踩镲,上中高嗵,右上吊镲。听这一句,三个音。",
|
||||
"heard": "上面一白更清亮,左上采茶,上中高通,右上调查,听这一句三个一。",
|
||||
"similarity": 0.7308,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 61.436,
|
||||
"t1": 64.159,
|
||||
"voiceId": "tut_done",
|
||||
"expected": "很好,演出开始。",
|
||||
"heard": "很好,演出开始。",
|
||||
"similarity": 1,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 67.846,
|
||||
"t1": 69.452,
|
||||
"voiceId": "gd_answer",
|
||||
"expected": "现在跟着我打。",
|
||||
"heard": "现在跟着我打。",
|
||||
"similarity": 1,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 99.841,
|
||||
"t1": 102.19,
|
||||
"voiceId": "mid_song",
|
||||
"expected": "过半了,保持。",
|
||||
"heard": "过磅了,保持。",
|
||||
"similarity": 0.8,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 118.528,
|
||||
"t1": 121.995,
|
||||
"voiceId": "tut_fill",
|
||||
"expected": "最后有一段加花,跟着我连打。",
|
||||
"heard": "最后有一段佳花跟着我连打。",
|
||||
"similarity": 0.9167,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 125.705,
|
||||
"t1": 126.802,
|
||||
"voiceId": "gd_miss",
|
||||
"expected": "慢了半拍,下一小节跟上我就行。",
|
||||
"heard": "慢了半拍。",
|
||||
"similarity": 0.4706,
|
||||
"verdict": "TRUNCATED"
|
||||
},
|
||||
{
|
||||
"t0": 126.809,
|
||||
"t1": 131.375,
|
||||
"voiceId": "grade_a",
|
||||
"expected": "A 级!准确率超过八成五,非常出色。",
|
||||
"heard": "第一季准确率超过8乘5,非常出色。",
|
||||
"similarity": 0.6207,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 131.38,
|
||||
"t1": 133.255,
|
||||
"voiceId": "new_best_combo",
|
||||
"expected": "新连击纪录!",
|
||||
"heard": "新联机记录。",
|
||||
"similarity": 0.4,
|
||||
"verdict": "MISMATCH"
|
||||
},
|
||||
{
|
||||
"t0": 133.262,
|
||||
"t1": 135.972,
|
||||
"voiceId": "unlock_song2",
|
||||
"expected": "新曲目解锁,追风!",
|
||||
"heard": "路新曲目解锁追风。",
|
||||
"similarity": 0.9333,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 135.98,
|
||||
"t1": 140.082,
|
||||
"voiceId": "restart",
|
||||
"expected": "单击再来一遍,右滑下一首,下滑回大厅。",
|
||||
"heard": "但气再来一遍,又滑下一手下滑回大厅。",
|
||||
"similarity": 0.75,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 18.21,
|
||||
"t1": 28.101,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
},
|
||||
{
|
||||
"t0": 33.325,
|
||||
"t1": 42.778,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
},
|
||||
{
|
||||
"t0": 52.55,
|
||||
"t1": 61.436,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
},
|
||||
{
|
||||
"t0": 64.159,
|
||||
"t1": 67.846,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
},
|
||||
{
|
||||
"t0": 69.452,
|
||||
"t1": 99.841,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
},
|
||||
{
|
||||
"t0": 102.19,
|
||||
"t1": 118.528,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
},
|
||||
{
|
||||
"t0": 121.995,
|
||||
"t1": 125.705,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,329 @@
|
||||
{"ev":"probe_ready","t":8,"ta":null}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":1521.800000011921,"ta":-0.074}
|
||||
{"ev":"recstart","mime":"audio/webm;codecs=opus","t":1596.2000000178814,"ta":0}
|
||||
{"ev":"fetch","url":"audio/bgm/menu.ogg","status":200,"ok":true,"ms":13,"t":1611,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/bgm/track90.ogg","status":200,"ok":true,"ms":14,"t":1611.300000011921,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/female/welcome.ogg","status":200,"ok":true,"ms":14,"t":1611.4000000059605,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/female/select_hint.ogg","status":200,"ok":true,"ms":14,"t":1611.4000000059605,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/female/tut_probe.ogg","status":200,"ok":true,"ms":14,"t":1611.5,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/female/tut_map.ogg","status":200,"ok":true,"ms":14,"t":1611.5999999940395,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/female/mid_song.ogg","status":200,"ok":true,"ms":14,"t":1611.5999999940395,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/female/welcome_back.ogg","status":200,"ok":true,"ms":15,"t":1611.7000000178814,"ta":0.016}
|
||||
{"ev":"fetch","url":"audio/bgm/track105.ogg","status":200,"ok":true,"ms":14,"t":1611.800000011921,"ta":0.016}
|
||||
{"ev":"fetch","url":"audio/bgm/track120.ogg","status":200,"ok":true,"ms":14,"t":1611.800000011921,"ta":0.016}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_snare.ogg","status":200,"ok":true,"ms":21,"t":1618,"ta":0.022}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_tomlo.ogg","status":200,"ok":true,"ms":21,"t":1618.2000000178814,"ta":0.022}
|
||||
{"ev":"fetch","url":"audio/sfx/inst_kick.ogg","status":200,"ok":true,"ms":22,"t":1619.0999999940395,"ta":0.023}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_hat.ogg","status":200,"ok":true,"ms":23,"t":1619.5,"ta":0.023}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_tomhi.ogg","status":200,"ok":true,"ms":23,"t":1619.5,"ta":0.023}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_crash.ogg","status":200,"ok":true,"ms":24,"t":1620.800000011921,"ta":0.025}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_accent.ogg","status":200,"ok":true,"ms":28,"t":1625.2000000178814,"ta":0.029}
|
||||
{"ev":"vstart","url":"audio/voice/female/welcome.ogg","t":1650.5,"dur":6.24,"ta":0.054}
|
||||
{"ev":"start","t":1844.5999999940395,"sid":1,"url":"audio/bgm/track90.ogg","layer":"bgm","dur":82.33301587301587,"rate":1,"loop":true,"when":6,"ta":0.248}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":2804.7000000178814,"ta":1.209}
|
||||
{"ev":"vibrate","pattern":"[20]","t":2806.300000011921,"ta":1.21}
|
||||
{"ev":"vend","url":"audio/voice/female/welcome.ogg","t":3306.9000000059605,"reason":"kill","ta":1.711}
|
||||
{"ev":"vstart","url":"audio/voice/female/tut_map.ogg","t":3307.0999999940395,"dur":14.28,"ta":1.711}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":4174.200000017881,"ta":2.578}
|
||||
{"ev":"vibrate","pattern":"[20]","t":4175.9000000059605,"ta":2.58}
|
||||
{"ev":"vend","url":"audio/voice/female/tut_map.ogg","t":4676,"reason":"kill","ta":3.08}
|
||||
{"ev":"vstart","url":"audio/voice/female/tut_probe.ogg","t":4676.200000017881,"dur":3.76,"ta":3.08}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":5542.9000000059605,"ta":3.947}
|
||||
{"ev":"vibrate","pattern":"[20]","t":5544.5,"ta":3.948}
|
||||
{"ev":"vend","url":"audio/voice/female/tut_probe.ogg","t":6044.800000011921,"reason":"kill","ta":4.449}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":6913.700000017881,"ta":5.318}
|
||||
{"ev":"vibrate","pattern":"[20]","t":6915.200000017881,"ta":5.319}
|
||||
{"ev":"start","t":6915.800000011921,"sid":2,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":5.32}
|
||||
{"ev":"fetch","url":"audio/voice/female/zone_tl.ogg","status":200,"ok":true,"ms":3,"t":6917.9000000059605,"ta":5.322}
|
||||
{"ev":"vstart","url":"audio/voice/female/zone_tl.ogg","t":6921.5999999940395,"dur":1.68,"ta":5.325}
|
||||
{"ev":"vend","url":"audio/voice/female/zone_tl.ogg","t":8139.700000017881,"reason":"kill","ta":6.544}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":9182.800000011921,"ta":7.587}
|
||||
{"ev":"vibrate","pattern":"[20]","t":9186.300000011921,"ta":7.59}
|
||||
{"ev":"start","t":9186.59999999404,"sid":3,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":7.59}
|
||||
{"ev":"fetch","url":"audio/voice/female/zone_bc.ogg","status":200,"ok":true,"ms":2,"t":9188.59999999404,"ta":7.592}
|
||||
{"ev":"vstart","url":"audio/voice/female/zone_bc.ogg","t":9192.09999999404,"dur":2,"ta":7.596}
|
||||
{"ev":"vend","url":"audio/voice/female/zone_bc.ogg","t":10600.5,"reason":"kill","ta":9.004}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":10853.40000000596,"ta":9.257}
|
||||
{"ev":"vibrate","pattern":"[20]","t":10855.09999999404,"ta":9.259}
|
||||
{"ev":"start","t":10855.300000011921,"sid":4,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":9.259}
|
||||
{"ev":"vibrate","pattern":"[10]","t":11208,"ta":9.612}
|
||||
{"ev":"fetch","url":"audio/voice/female/tut_skip.ogg","status":200,"ok":true,"ms":3,"t":11211,"ta":9.615}
|
||||
{"ev":"vstart","url":"audio/voice/female/tut_skip.ogg","t":11214,"dur":2,"ta":9.618}
|
||||
{"ev":"vend","url":"audio/voice/female/tut_skip.ogg","t":12620.40000000596,"reason":"kill","ta":11.024}
|
||||
{"ev":"stop","t":12620.59999999404,"sid":1,"when":0,"ta":11.024}
|
||||
{"ev":"start","t":12621.700000017881,"sid":5,"url":"audio/bgm/track90.ogg","layer":"bgm","dur":82.33301587301587,"rate":1,"loop":true,"when":12.04108843537415,"ta":11.026}
|
||||
{"ev":"start","t":13062,"sid":6,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":12.04108843537415,"ta":11.466}
|
||||
{"ev":"vibrate","pattern":"[8]","t":13620.09999999404,"ta":12.024}
|
||||
{"ev":"start","t":13701.90000000596,"sid":7,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":12.707755102040815,"ta":12.106}
|
||||
{"ev":"vibrate","pattern":"[8]","t":14299.90000000596,"ta":12.704}
|
||||
{"ev":"start","t":14381.800000011921,"sid":8,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":13.374421768707483,"ta":12.786}
|
||||
{"ev":"vibrate","pattern":"[8]","t":14949.90000000596,"ta":13.354}
|
||||
{"ev":"start","t":15061.90000000596,"sid":9,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":14.04108843537415,"ta":13.466}
|
||||
{"ev":"vibrate","pattern":"[8]","t":15622.800000011921,"ta":14.027}
|
||||
{"ev":"start","t":15701.800000011921,"sid":10,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":14.707755102040815,"ta":14.106}
|
||||
{"ev":"vibrate","pattern":"[8]","t":16279.800000011921,"ta":14.684}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":16300.09999999404,"ta":14.704}
|
||||
{"ev":"vibrate","pattern":"[20]","t":16301.40000000596,"ta":14.705}
|
||||
{"ev":"start","t":16301.700000017881,"sid":11,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":14.706}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":16964.09999999404,"ta":15.368}
|
||||
{"ev":"vibrate","pattern":"[20]","t":16965.40000000596,"ta":15.369}
|
||||
{"ev":"start","t":16965.59999999404,"sid":12,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":15.369}
|
||||
{"ev":"start","t":17061.80000001192,"sid":13,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":16.04108843537415,"ta":15.466}
|
||||
{"ev":"vibrate","pattern":"[8]","t":17625.90000000596,"ta":16.03}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":18292.59999999404,"ta":16.696}
|
||||
{"ev":"vibrate","pattern":"[20]","t":18295.5,"ta":16.699}
|
||||
{"ev":"start","t":18295.59999999404,"sid":14,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":16.699}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":18955.90000000596,"ta":17.36}
|
||||
{"ev":"vibrate","pattern":"[20]","t":18957.40000000596,"ta":17.361}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":18957.5,"ta":17.361}
|
||||
{"ev":"start","t":18957.59999999404,"sid":15,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":17.361}
|
||||
{"ev":"start","t":18957.70000001788,"sid":16,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":17.362}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":20286,"ta":18.69}
|
||||
{"ev":"vibrate","pattern":"[20]","t":20287.40000000596,"ta":18.691}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":20287.5,"ta":18.691}
|
||||
{"ev":"start","t":20287.70000001788,"sid":17,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":18.692}
|
||||
{"ev":"start","t":20287.70000001788,"sid":18,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":18.692}
|
||||
{"ev":"start","t":23701.90000000596,"sid":19,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":22.707755102040814,"ta":22.106}
|
||||
{"ev":"vibrate","pattern":"[8]","t":24291.90000000596,"ta":22.696}
|
||||
{"ev":"start","t":25061.80000001192,"sid":20,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":24.041088435374146,"ta":23.466}
|
||||
{"ev":"vibrate","pattern":"[8]","t":25615.80000001192,"ta":24.02}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":26931,"ta":25.335}
|
||||
{"ev":"vibrate","pattern":"[20]","t":26932.80000001192,"ta":25.337}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":26932.90000000596,"ta":25.337}
|
||||
{"ev":"start","t":26933,"sid":21,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":25.337}
|
||||
{"ev":"start","t":26933,"sid":22,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":25.337}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":28262,"ta":26.666}
|
||||
{"ev":"vibrate","pattern":"[20]","t":28263.5,"ta":26.667}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":28263.59999999404,"ta":26.667}
|
||||
{"ev":"start","t":28263.70000001788,"sid":23,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":26.668}
|
||||
{"ev":"start","t":28263.70000001788,"sid":24,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":26.668}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":28984.30000001192,"ta":27.388}
|
||||
{"ev":"vibrate","pattern":"[20]","t":28985.80000001192,"ta":27.39}
|
||||
{"ev":"start","t":28985.90000000596,"sid":25,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":27.39}
|
||||
{"ev":"vibrate","pattern":"[10]","t":29340,"ta":27.744}
|
||||
{"ev":"stop","t":29340.40000000596,"sid":5,"when":0,"ta":27.744}
|
||||
{"ev":"fetch","url":"audio/voice/female/menu_main.ogg","status":200,"ok":true,"ms":3,"t":29342.90000000596,"ta":27.747}
|
||||
{"ev":"vstart","url":"audio/voice/female/menu_main.ogg","t":29349.30000001192,"dur":5.6,"ta":27.753}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":31245.40000000596,"ta":29.649}
|
||||
{"ev":"vibrate","pattern":"[20]","t":31246.90000000596,"ta":29.651}
|
||||
{"ev":"vend","url":"audio/voice/female/menu_main.ogg","t":31747.30000001192,"reason":"kill","ta":30.151}
|
||||
{"ev":"fetch","url":"audio/voice/female/menu_lobby.ogg","status":200,"ok":true,"ms":3,"t":31749.90000000596,"ta":30.154}
|
||||
{"ev":"vstart","url":"audio/voice/female/menu_lobby.ogg","t":31752.09999999404,"dur":0.6370975056689342,"ta":30.156}
|
||||
{"ev":"vend","url":"audio/voice/female/menu_lobby.ogg","t":32239.59999999404,"reason":"kill","ta":30.643}
|
||||
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":33213.20000001788,"ta":31.617}
|
||||
{"ev":"vibrate","pattern":"[20]","t":33214.5,"ta":31.618}
|
||||
{"ev":"vibrate","pattern":"[10]","t":33573.40000000596,"ta":31.977}
|
||||
{"ev":"fetch","url":"audio/voice/female/rules.ogg","status":200,"ok":true,"ms":2,"t":33575.80000001192,"ta":31.98}
|
||||
{"ev":"vstart","url":"audio/voice/female/rules.ogg","t":33582.5,"dur":7.68,"ta":31.986}
|
||||
{"ev":"vend","url":"audio/voice/female/rules.ogg","t":38253.09999999404,"reason":"kill","ta":36.657}
|
||||
{"ev":"fetch","url":"audio/voice/female/settings_hint.ogg","status":200,"ok":true,"ms":3,"t":38256.09999999404,"ta":36.66}
|
||||
{"ev":"vstart","url":"audio/voice/female/settings_hint.ogg","t":38259.30000001192,"dur":1.36,"ta":36.663}
|
||||
{"ev":"vend","url":"audio/voice/female/settings_hint.ogg","t":39205,"reason":"kill","ta":37.609}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":39978.30000001192,"ta":38.382}
|
||||
{"ev":"vibrate","pattern":"[20]","t":39983.70000001788,"ta":38.388}
|
||||
{"ev":"vibrate","pattern":"[10]","t":40340,"ta":38.744}
|
||||
{"ev":"start","t":40340.30000001192,"sid":26,"url":"audio/bgm/track90.ogg","layer":"bgm","dur":82.33301587301587,"rate":1,"loop":true,"when":41.532380952380954,"ta":38.744}
|
||||
{"ev":"start","t":40380.5,"sid":27,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":38.86571428571429,"ta":38.784}
|
||||
{"ev":"vibrate","pattern":"[8]","t":40456.5,"ta":38.86}
|
||||
{"ev":"start","t":40540.5,"sid":28,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":39.532380952380954,"ta":38.944}
|
||||
{"ev":"vibrate","pattern":"[8]","t":41120.59999999404,"ta":39.524}
|
||||
{"ev":"start","t":41180.40000000596,"sid":29,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":40.199047619047626,"ta":39.584}
|
||||
{"ev":"vibrate","pattern":"[8]","t":41777.5,"ta":40.181}
|
||||
{"ev":"start","t":41860.5,"sid":30,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":40.86571428571429,"ta":40.264}
|
||||
{"ev":"vibrate","pattern":"[8]","t":42450.59999999404,"ta":40.854}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":210,"t":43122.30000001192,"ta":41.526}
|
||||
{"ev":"vibrate","pattern":"[20]","t":43124.30000001192,"ta":41.528}
|
||||
{"ev":"start","t":43124.5,"sid":31,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":0,"ta":41.528}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":44458.20000001788,"ta":42.862}
|
||||
{"ev":"vibrate","pattern":"[20]","t":44459.80000001192,"ta":42.864}
|
||||
{"ev":"start","t":44460,"sid":32,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":42.864}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":45122.80000001192,"ta":43.527}
|
||||
{"ev":"vibrate","pattern":"[20]","t":45124.20000001788,"ta":43.528}
|
||||
{"ev":"start","t":45124.30000001192,"sid":33,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":43.528}
|
||||
{"ev":"start","t":45500.5,"sid":34,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":44.48068027210884,"ta":43.904}
|
||||
{"ev":"vibrate","pattern":"[8]","t":46060.40000000596,"ta":44.464}
|
||||
{"ev":"start","t":46140.5,"sid":35,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":45.14734693877551,"ta":44.544}
|
||||
{"ev":"vibrate","pattern":"[8]","t":46716.5,"ta":45.12}
|
||||
{"ev":"start","t":46820.5,"sid":36,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":45.81401360544218,"ta":45.224}
|
||||
{"ev":"vibrate","pattern":"[8]","t":47389.5,"ta":45.793}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":49220.5,"ta":47.624}
|
||||
{"ev":"start","t":49220.70000001788,"sid":37,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":47.625}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":49370.90000000596,"ta":47.775}
|
||||
{"ev":"vibrate","pattern":"[20]","t":49372.90000000596,"ta":47.777}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":49372.90000000596,"ta":47.777}
|
||||
{"ev":"start","t":49373,"sid":38,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":47.777}
|
||||
{"ev":"start","t":49373,"sid":39,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":47.777}
|
||||
{"ev":"gesture","type":"longpress","x":195,"y":422,"t":49835.5,"ta":48.239}
|
||||
{"ev":"vibrate","pattern":"[20]","t":49836.90000000596,"ta":48.241}
|
||||
{"ev":"start","t":49837,"sid":40,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":48.241}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":50287.30000001192,"ta":48.691}
|
||||
{"ev":"start","t":50287.40000000596,"sid":41,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":48.691}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":50540.40000000596,"ta":48.944}
|
||||
{"ev":"start","t":50540.5,"sid":42,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":48.944}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":50839.40000000596,"ta":49.243}
|
||||
{"ev":"vibrate","pattern":"[20]","t":50841,"ta":49.245}
|
||||
{"ev":"start","t":50841.09999999404,"sid":43,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":49.245}
|
||||
{"ev":"start","t":53460.5,"sid":44,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":52.48068027210884,"ta":51.864}
|
||||
{"ev":"vibrate","pattern":"[8]","t":54055.5,"ta":52.459}
|
||||
{"ev":"start","t":54140.5,"sid":45,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":53.147346938775506,"ta":52.544}
|
||||
{"ev":"vibrate","pattern":"[8]","t":54728.59999999404,"ta":53.132}
|
||||
{"ev":"start","t":54820.5,"sid":46,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":53.81401360544218,"ta":53.224}
|
||||
{"ev":"vibrate","pattern":"[8]","t":55402.5,"ta":53.806}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":57180.40000000596,"ta":55.584}
|
||||
{"ev":"start","t":57180.5,"sid":47,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":55.584}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":57342.90000000596,"ta":55.747}
|
||||
{"ev":"vibrate","pattern":"[20]","t":57344.5,"ta":55.748}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":57344.5,"ta":55.748}
|
||||
{"ev":"start","t":57344.70000001788,"sid":48,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":55.749}
|
||||
{"ev":"start","t":57344.70000001788,"sid":49,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":55.749}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":210,"t":58087,"ta":56.491}
|
||||
{"ev":"vibrate","pattern":"[20]","t":58088.59999999404,"ta":56.492}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":58088.59999999404,"ta":56.492}
|
||||
{"ev":"start","t":58088.70000001788,"sid":50,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":0,"ta":56.493}
|
||||
{"ev":"start","t":58088.80000001192,"sid":51,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":56.493}
|
||||
{"ev":"start","t":61500.5,"sid":52,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":60.48068027210884,"ta":59.904}
|
||||
{"ev":"vibrate","pattern":"[8]","t":62061.5,"ta":60.465}
|
||||
{"ev":"vstart","url":"audio/voice/female/mid_song.ogg","t":62100.59999999404,"dur":1.6,"ta":60.504}
|
||||
{"ev":"start","t":62140.40000000596,"sid":53,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":61.147346938775506,"ta":60.544}
|
||||
{"ev":"vibrate","pattern":"[8]","t":62718.40000000596,"ta":61.122}
|
||||
{"ev":"start","t":62820.5,"sid":54,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":61.81401360544218,"ta":61.224}
|
||||
{"ev":"vend","url":"audio/voice/female/mid_song.ogg","t":63049.90000000596,"reason":"kill","ta":61.454}
|
||||
{"ev":"vibrate","pattern":"[8]","t":63391.5,"ta":61.795}
|
||||
{"ev":"start","t":63500.5,"sid":55,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":62.48068027210884,"ta":61.904}
|
||||
{"ev":"vibrate","pattern":"[8]","t":64064.5,"ta":62.468}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":65180.40000000596,"ta":63.584}
|
||||
{"ev":"start","t":65180.40000000596,"sid":56,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":63.584}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":65376.20000001788,"ta":63.78}
|
||||
{"ev":"vibrate","pattern":"[20]","t":65377.90000000596,"ta":63.782}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":65377.90000000596,"ta":63.782}
|
||||
{"ev":"start","t":65378,"sid":57,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":63.782}
|
||||
{"ev":"start","t":65378,"sid":58,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":63.782}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":66039.5,"ta":64.443}
|
||||
{"ev":"vibrate","pattern":"[20]","t":66041.20000001788,"ta":64.445}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":66041.30000001192,"ta":64.445}
|
||||
{"ev":"start","t":66041.30000001192,"sid":59,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":64.445}
|
||||
{"ev":"start","t":66041.30000001192,"sid":60,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":64.445}
|
||||
{"ev":"start","t":66820.5,"sid":61,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":65.81401360544217,"ta":65.224}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":67180.40000000596,"ta":65.584}
|
||||
{"ev":"start","t":67180.5,"sid":62,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":65.584}
|
||||
{"ev":"vibrate","pattern":"[8]","t":67397.5,"ta":65.801}
|
||||
{"ev":"start","t":68140.5,"sid":63,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":67.14734693877551,"ta":66.544}
|
||||
{"ev":"vibrate","pattern":"[8]","t":68727.5,"ta":67.131}
|
||||
{"ev":"start","t":68820.5,"sid":64,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":67.81401360544217,"ta":67.224}
|
||||
{"ev":"vibrate","pattern":"[8]","t":69400.5,"ta":67.804}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":210,"t":70013.40000000596,"ta":68.417}
|
||||
{"ev":"vibrate","pattern":"[20]","t":70014.80000001192,"ta":68.419}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":70014.80000001192,"ta":68.419}
|
||||
{"ev":"start","t":70014.90000000596,"sid":65,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":0,"ta":68.419}
|
||||
{"ev":"start","t":70014.90000000596,"sid":66,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":68.419}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":71339,"ta":69.743}
|
||||
{"ev":"vibrate","pattern":"[20]","t":71340.59999999404,"ta":69.744}
|
||||
{"ev":"start","t":71340.80000001192,"sid":67,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":69.745}
|
||||
{"ev":"start","t":71340.80000001192,"sid":68,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":69.745}
|
||||
{"ev":"start","t":72140.40000000596,"sid":69,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":71.14734693877551,"ta":70.544}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":72540.40000000596,"ta":70.944}
|
||||
{"ev":"start","t":72540.5,"sid":70,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":70.944}
|
||||
{"ev":"vibrate","pattern":"[8]","t":72733.5,"ta":71.137}
|
||||
{"ev":"start","t":72820.5,"sid":71,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":71.81401360544217,"ta":71.224}
|
||||
{"ev":"vibrate","pattern":"[8]","t":73383.40000000596,"ta":71.787}
|
||||
{"ev":"start","t":73500.59999999404,"sid":72,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":72.48068027210884,"ta":71.904}
|
||||
{"ev":"vibrate","pattern":"[8]","t":74056.5,"ta":72.46}
|
||||
{"ev":"start","t":74140.59999999404,"sid":73,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":73.14734693877551,"ta":72.544}
|
||||
{"ev":"vibrate","pattern":"[8]","t":74736.5,"ta":73.14}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":75394.30000001192,"ta":73.798}
|
||||
{"ev":"vibrate","pattern":"[20]","t":75396.09999999404,"ta":73.8}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":75396.20000001788,"ta":73.8}
|
||||
{"ev":"start","t":75396.30000001192,"sid":74,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":73.8}
|
||||
{"ev":"start","t":75396.30000001192,"sid":75,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":73.8}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":76057.5,"ta":74.461}
|
||||
{"ev":"vibrate","pattern":"[20]","t":76059,"ta":74.463}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":76059.09999999404,"ta":74.463}
|
||||
{"ev":"start","t":76059.09999999404,"sid":76,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":74.463}
|
||||
{"ev":"start","t":76059.20000001788,"sid":77,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":74.463}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":77220.40000000596,"ta":75.624}
|
||||
{"ev":"start","t":77220.40000000596,"sid":78,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":75.624}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":77381.20000001788,"ta":75.785}
|
||||
{"ev":"vibrate","pattern":"[20]","t":77382.5,"ta":75.786}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":77382.59999999404,"ta":75.786}
|
||||
{"ev":"start","t":77382.59999999404,"sid":79,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":75.786}
|
||||
{"ev":"start","t":77382.59999999404,"sid":80,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":75.786}
|
||||
{"ev":"start","t":77500.5,"sid":81,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":76.48068027210884,"ta":75.904}
|
||||
{"ev":"vibrate","pattern":"[8]","t":78063.5,"ta":76.467}
|
||||
{"ev":"start","t":78140.5,"sid":82,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":77.14734693877551,"ta":76.544}
|
||||
{"ev":"vibrate","pattern":"[8]","t":78719.5,"ta":77.123}
|
||||
{"ev":"start","t":78820.59999999404,"sid":83,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":77.81401360544217,"ta":77.224}
|
||||
{"ev":"vibrate","pattern":"[8]","t":79392.5,"ta":77.796}
|
||||
{"ev":"start","t":79460.40000000596,"sid":84,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":78.48068027210883,"ta":77.864}
|
||||
{"ev":"vibrate","pattern":"[8]","t":80049.40000000596,"ta":78.453}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":630,"t":80694.30000001192,"ta":79.098}
|
||||
{"ev":"vibrate","pattern":"[20]","t":80695.90000000596,"ta":79.1}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":80695.90000000596,"ta":79.1}
|
||||
{"ev":"start","t":80696,"sid":85,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":0,"ta":79.1}
|
||||
{"ev":"start","t":80696,"sid":86,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":79.1}
|
||||
{"ev":"fetch","url":"audio/voice/female/tut_fill.ogg","status":200,"ok":true,"ms":3,"t":80743.40000000596,"ta":79.147}
|
||||
{"ev":"vstart","url":"audio/voice/female/tut_fill.ogg","t":80748.80000001192,"dur":3.68,"ta":79.153}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":81860.30000001192,"ta":80.264}
|
||||
{"ev":"start","t":81860.40000000596,"sid":87,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":80.264}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":210,"t":82016.5,"ta":80.42}
|
||||
{"ev":"vibrate","pattern":"[20]","t":82017.90000000596,"ta":80.422}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":82017.90000000596,"ta":80.422}
|
||||
{"ev":"start","t":82017.90000000596,"sid":88,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":0,"ta":80.422}
|
||||
{"ev":"start","t":82018,"sid":89,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":80.422}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":82680.09999999404,"ta":81.084}
|
||||
{"ev":"vibrate","pattern":"[20]","t":82681.5,"ta":81.085}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":82681.5,"ta":81.085}
|
||||
{"ev":"start","t":82681.59999999404,"sid":90,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":81.085}
|
||||
{"ev":"start","t":82681.70000001788,"sid":91,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":81.086}
|
||||
{"ev":"start","t":82820.40000000596,"sid":92,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":81.81401360544217,"ta":81.224}
|
||||
{"ev":"vend","url":"audio/voice/female/tut_fill.ogg","t":82994.20000001788,"reason":"kill","ta":81.398}
|
||||
{"ev":"start","t":83140.40000000596,"sid":93,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":82.14734693877551,"ta":81.544}
|
||||
{"ev":"vibrate","pattern":"[8]","t":83399.5,"ta":81.803}
|
||||
{"ev":"start","t":83460.5,"sid":94,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":82.48068027210886,"ta":81.864}
|
||||
{"ev":"vibrate","pattern":"[8]","t":83727.40000000596,"ta":82.131}
|
||||
{"ev":"start","t":83820.40000000596,"sid":95,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":82.81401360544217,"ta":82.224}
|
||||
{"ev":"vibrate","pattern":"[8]","t":84055.5,"ta":82.459}
|
||||
{"ev":"start","t":84140.5,"sid":96,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":83.14734693877551,"ta":82.544}
|
||||
{"ev":"vibrate","pattern":"[8]","t":84400.5,"ta":82.804}
|
||||
{"ev":"start","t":84460.5,"sid":97,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":83.48068027210886,"ta":82.864}
|
||||
{"ev":"vibrate","pattern":"[8]","t":84728.5,"ta":83.132}
|
||||
{"ev":"start","t":84820.40000000596,"sid":98,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":83.81401360544217,"ta":83.224}
|
||||
{"ev":"vibrate","pattern":"[8]","t":85057.5,"ta":83.461}
|
||||
{"ev":"vibrate","pattern":"[8]","t":85402.40000000596,"ta":83.806}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":86412.70000001788,"ta":84.817}
|
||||
{"ev":"vibrate","pattern":"[20]","t":86415.09999999404,"ta":84.819}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":86415.09999999404,"ta":84.819}
|
||||
{"ev":"start","t":86415.30000001192,"sid":99,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":84.819}
|
||||
{"ev":"start","t":86415.30000001192,"sid":100,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":84.819}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":86540.40000000596,"ta":84.944}
|
||||
{"ev":"start","t":86540.5,"sid":101,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":84.944}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":86877.90000000596,"ta":85.282}
|
||||
{"ev":"vibrate","pattern":"[20]","t":86879.40000000596,"ta":85.283}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":86879.40000000596,"ta":85.283}
|
||||
{"ev":"start","t":86879.40000000596,"sid":102,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":85.283}
|
||||
{"ev":"start","t":86879.5,"sid":103,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":85.283}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":87406.09999999404,"ta":85.81}
|
||||
{"ev":"vibrate","pattern":"[20]","t":87407.5,"ta":85.811}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":87407.59999999404,"ta":85.811}
|
||||
{"ev":"start","t":87407.70000001788,"sid":104,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":85.812}
|
||||
{"ev":"start","t":87407.70000001788,"sid":105,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":85.812}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":87540.40000000596,"ta":85.944}
|
||||
{"ev":"start","t":87540.40000000596,"sid":106,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":85.944}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":87871.20000001788,"ta":86.275}
|
||||
{"ev":"vibrate","pattern":"[20]","t":87872.40000000596,"ta":86.276}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":87872.5,"ta":86.276}
|
||||
{"ev":"start","t":87872.59999999404,"sid":107,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":86.276}
|
||||
{"ev":"start","t":87872.70000001788,"sid":108,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":86.277}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":88540.30000001192,"ta":86.944}
|
||||
{"ev":"start","t":88540.5,"sid":109,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":86.944}
|
||||
{"ev":"fetch","url":"audio/voice/female/grade_c.ogg","status":200,"ok":true,"ms":3,"t":89024.30000001192,"ta":87.428}
|
||||
{"ev":"vstart","url":"audio/voice/female/grade_c.ogg","t":89029.90000000596,"dur":4.16,"ta":87.434}
|
||||
{"ev":"stop","t":89721,"sid":26,"when":0,"ta":88.125}
|
||||
{"ev":"vend","url":"audio/voice/female/grade_c.ogg","t":91561.5,"reason":"kill","ta":89.965}
|
||||
{"ev":"fetch","url":"audio/voice/female/new_best_combo.ogg","status":200,"ok":true,"ms":2,"t":91564,"ta":89.968}
|
||||
{"ev":"vstart","url":"audio/voice/female/new_best_combo.ogg","t":91566.80000001192,"dur":1.44,"ta":89.971}
|
||||
{"ev":"vend","url":"audio/voice/female/new_best_combo.ogg","t":92513.40000000596,"reason":"kill","ta":90.917}
|
||||
{"ev":"fetch","url":"audio/voice/female/restart.ogg","status":200,"ok":true,"ms":3,"t":92516.20000001788,"ta":90.92}
|
||||
{"ev":"vstart","url":"audio/voice/female/restart.ogg","t":92520.30000001192,"dur":3.36,"ta":90.924}
|
||||
{"ev":"vend","url":"audio/voice/female/restart.ogg","t":94579.90000000596,"reason":"kill","ta":92.984}
|
||||
{"ev":"start","t":94580.09999999404,"sid":110,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":92.984}
|
||||
{"ev":"recstop","t":209927.5,"ta":208.331}
|
||||
Binary file not shown.
@@ -0,0 +1,298 @@
|
||||
# rhythm 实时会话 transcript
|
||||
|
||||
- `[ -0.07s]` **GESTURE** tap @(195,422)
|
||||
- `[ 0.00s]` REC 开始 (audio/webm;codecs=opus)
|
||||
- `[ 0.05s]` VOICE ▶ welcome (dur 6.24s)
|
||||
- `[ 0.25s]` BGM ♪ track90 (loop)
|
||||
- `[ 1.21s]` **GESTURE** tap @(195,422)
|
||||
- `[ 1.21s]` VIBRATE [20]
|
||||
- `[ 1.71s]` VOICE ■ welcome (kill)
|
||||
- `[ 1.71s]` VOICE ▶ tut_map (dur 14.28s)
|
||||
- `[ 2.58s]` **GESTURE** tap @(195,422)
|
||||
- `[ 2.58s]` VIBRATE [20]
|
||||
- `[ 3.08s]` VOICE ■ tut_map (kill)
|
||||
- `[ 3.08s]` VOICE ▶ tut_probe (dur 3.76s)
|
||||
- `[ 3.95s]` **GESTURE** tap @(195,422)
|
||||
- `[ 3.95s]` VIBRATE [20]
|
||||
- `[ 4.45s]` VOICE ■ tut_probe (kill)
|
||||
- `[ 5.32s]` **GESTURE** tap @(65,210)
|
||||
- `[ 5.32s]` VIBRATE [20]
|
||||
- `[ 5.32s]` SFX ♪ dm_hat
|
||||
- `[ 5.33s]` VOICE ▶ zone_tl (dur 1.68s)
|
||||
- `[ 6.54s]` VOICE ■ zone_tl (kill)
|
||||
- `[ 7.59s]` **GESTURE** tap @(195,630)
|
||||
- `[ 7.59s]` VIBRATE [20]
|
||||
- `[ 7.59s]` SFX ♪ inst_kick
|
||||
- `[ 7.60s]` VOICE ▶ zone_bc (dur 2s)
|
||||
- `[ 9.00s]` VOICE ■ zone_bc (kill)
|
||||
- `[ 9.26s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 9.26s]` VIBRATE [20]
|
||||
- `[ 9.26s]` SFX ♪ inst_kick
|
||||
- `[ 9.61s]` VIBRATE [10]
|
||||
- `[ 9.62s]` VOICE ▶ tut_skip (dur 2s)
|
||||
- `[ 11.02s]` VOICE ■ tut_skip (kill)
|
||||
- `[ 11.03s]` BGM ♪ track90 (loop)
|
||||
- `[ 11.47s]` SFX ♪ inst_kick
|
||||
- `[ 12.02s]` VIBRATE [8]
|
||||
- `[ 12.11s]` SFX ♪ inst_kick
|
||||
- `[ 12.70s]` VIBRATE [8]
|
||||
- `[ 12.79s]` SFX ♪ inst_kick
|
||||
- `[ 13.35s]` VIBRATE [8]
|
||||
- `[ 13.47s]` SFX ♪ inst_kick
|
||||
- `[ 14.03s]` VIBRATE [8]
|
||||
- `[ 14.11s]` SFX ♪ inst_kick
|
||||
- `[ 14.68s]` VIBRATE [8]
|
||||
- `[ 14.70s]` **GESTURE** tap @(195,210)
|
||||
- `[ 14.71s]` VIBRATE [20]
|
||||
- `[ 14.71s]` SFX ♪ dm_tomhi
|
||||
- `[ 15.37s]` **GESTURE** tap @(195,210)
|
||||
- `[ 15.37s]` VIBRATE [20]
|
||||
- `[ 15.37s]` SFX ♪ dm_tomhi
|
||||
- `[ 15.47s]` SFX ♪ inst_kick
|
||||
- `[ 16.03s]` VIBRATE [8]
|
||||
- `[ 16.70s]` **GESTURE** tap @(195,210)
|
||||
- `[ 16.70s]` VIBRATE [20]
|
||||
- `[ 16.70s]` SFX ♪ dm_tomhi
|
||||
- `[ 17.36s]` **GESTURE** tap @(195,210)
|
||||
- `[ 17.36s]` VIBRATE [20]
|
||||
- `[ 17.36s]` VIBRATE [60,40,60]
|
||||
- `[ 17.36s]` SFX ♪ dm_tomhi
|
||||
- `[ 17.36s]` SFX ♪ dm_hat
|
||||
- `[ 18.69s]` **GESTURE** tap @(195,210)
|
||||
- `[ 18.69s]` VIBRATE [20]
|
||||
- `[ 18.69s]` VIBRATE [60,40,60]
|
||||
- `[ 18.69s]` SFX ♪ dm_tomhi
|
||||
- `[ 18.69s]` SFX ♪ dm_hat
|
||||
- `[ 22.11s]` SFX ♪ dm_snare
|
||||
- `[ 22.70s]` VIBRATE [8]
|
||||
- `[ 23.47s]` SFX ♪ dm_tomlo
|
||||
- `[ 24.02s]` VIBRATE [8]
|
||||
- `[ 25.34s]` **GESTURE** tap @(195,210)
|
||||
- `[ 25.34s]` VIBRATE [20]
|
||||
- `[ 25.34s]` VIBRATE [60,40,60]
|
||||
- `[ 25.34s]` SFX ♪ dm_tomhi
|
||||
- `[ 25.34s]` SFX ♪ dm_hat
|
||||
- `[ 26.67s]` **GESTURE** tap @(65,210)
|
||||
- `[ 26.67s]` VIBRATE [20]
|
||||
- `[ 26.67s]` VIBRATE [60,40,60]
|
||||
- `[ 26.67s]` SFX ♪ dm_hat
|
||||
- `[ 26.67s]` SFX ♪ dm_hat
|
||||
- `[ 27.39s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 27.39s]` VIBRATE [20]
|
||||
- `[ 27.39s]` SFX ♪ inst_kick
|
||||
- `[ 27.74s]` VIBRATE [10]
|
||||
- `[ 27.75s]` VOICE ▶ menu_main (dur 5.6s)
|
||||
- `[ 29.65s]` **GESTURE** tap @(195,422)
|
||||
- `[ 29.65s]` VIBRATE [20]
|
||||
- `[ 30.15s]` VOICE ■ menu_main (kill)
|
||||
- `[ 30.16s]` VOICE ▶ menu_lobby (dur 0.6370975056689342s)
|
||||
- `[ 30.64s]` VOICE ■ menu_lobby (kill)
|
||||
- `[ 31.62s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 31.62s]` VIBRATE [20]
|
||||
- `[ 31.98s]` VIBRATE [10]
|
||||
- `[ 31.99s]` VOICE ▶ rules (dur 7.68s)
|
||||
- `[ 36.66s]` VOICE ■ rules (kill)
|
||||
- `[ 36.66s]` VOICE ▶ settings_hint (dur 1.36s)
|
||||
- `[ 37.61s]` VOICE ■ settings_hint (kill)
|
||||
- `[ 38.38s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 38.39s]` VIBRATE [20]
|
||||
- `[ 38.74s]` VIBRATE [10]
|
||||
- `[ 38.74s]` BGM ♪ track90 (loop)
|
||||
- `[ 38.78s]` SFX ♪ inst_kick
|
||||
- `[ 38.86s]` VIBRATE [8]
|
||||
- `[ 38.94s]` SFX ♪ inst_kick
|
||||
- `[ 39.52s]` VIBRATE [8]
|
||||
- `[ 39.58s]` SFX ♪ inst_kick
|
||||
- `[ 40.18s]` VIBRATE [8]
|
||||
- `[ 40.26s]` SFX ♪ inst_kick
|
||||
- `[ 40.85s]` VIBRATE [8]
|
||||
- `[ 41.53s]` **GESTURE** tap @(325,210)
|
||||
- `[ 41.53s]` VIBRATE [20]
|
||||
- `[ 41.53s]` SFX ♪ dm_crash
|
||||
- `[ 42.86s]` **GESTURE** tap @(195,210)
|
||||
- `[ 42.86s]` VIBRATE [20]
|
||||
- `[ 42.86s]` SFX ♪ dm_tomhi
|
||||
- `[ 43.53s]` **GESTURE** tap @(195,210)
|
||||
- `[ 43.53s]` VIBRATE [20]
|
||||
- `[ 43.53s]` SFX ♪ dm_tomhi
|
||||
- `[ 43.90s]` SFX ♪ inst_kick
|
||||
- `[ 44.46s]` VIBRATE [8]
|
||||
- `[ 44.54s]` SFX ♪ inst_kick
|
||||
- `[ 45.12s]` VIBRATE [8]
|
||||
- `[ 45.22s]` SFX ♪ dm_snare
|
||||
- `[ 45.79s]` VIBRATE [8]
|
||||
- `[ 47.62s]` VIBRATE [60,40,60]
|
||||
- `[ 47.63s]` SFX ♪ dm_hat
|
||||
- `[ 47.77s]` **GESTURE** tap @(195,210)
|
||||
- `[ 47.78s]` VIBRATE [20]
|
||||
- `[ 47.78s]` VIBRATE [60,40,60]
|
||||
- `[ 47.78s]` SFX ♪ dm_tomhi
|
||||
- `[ 47.78s]` SFX ♪ dm_hat
|
||||
- `[ 48.24s]` **GESTURE** longpress @(195,422)
|
||||
- `[ 48.24s]` VIBRATE [20]
|
||||
- `[ 48.24s]` SFX ♪ inst_kick
|
||||
- `[ 48.69s]` VIBRATE [60,40,60]
|
||||
- `[ 48.69s]` SFX ♪ dm_hat
|
||||
- `[ 48.94s]` VIBRATE [60,40,60]
|
||||
- `[ 48.94s]` SFX ♪ dm_hat
|
||||
- `[ 49.24s]` **GESTURE** tap @(195,210)
|
||||
- `[ 49.24s]` VIBRATE [20]
|
||||
- `[ 49.24s]` SFX ♪ dm_tomhi
|
||||
- `[ 51.86s]` SFX ♪ dm_snare
|
||||
- `[ 52.46s]` VIBRATE [8]
|
||||
- `[ 52.54s]` SFX ♪ dm_tomlo
|
||||
- `[ 53.13s]` VIBRATE [8]
|
||||
- `[ 53.22s]` SFX ♪ inst_kick
|
||||
- `[ 53.81s]` VIBRATE [8]
|
||||
- `[ 55.58s]` VIBRATE [60,40,60]
|
||||
- `[ 55.58s]` SFX ♪ dm_hat
|
||||
- `[ 55.75s]` **GESTURE** tap @(65,210)
|
||||
- `[ 55.75s]` VIBRATE [20]
|
||||
- `[ 55.75s]` VIBRATE [60,40,60]
|
||||
- `[ 55.75s]` SFX ♪ dm_hat
|
||||
- `[ 55.75s]` SFX ♪ dm_hat
|
||||
- `[ 56.49s]` **GESTURE** tap @(325,210)
|
||||
- `[ 56.49s]` VIBRATE [20]
|
||||
- `[ 56.49s]` VIBRATE [60,40,60]
|
||||
- `[ 56.49s]` SFX ♪ dm_crash
|
||||
- `[ 56.49s]` SFX ♪ dm_hat
|
||||
- `[ 59.90s]` SFX ♪ inst_kick
|
||||
- `[ 60.47s]` VIBRATE [8]
|
||||
- `[ 60.50s]` VOICE ▶ mid_song (dur 1.6s)
|
||||
- `[ 60.54s]` SFX ♪ dm_snare
|
||||
- `[ 61.12s]` VIBRATE [8]
|
||||
- `[ 61.22s]` SFX ♪ inst_kick
|
||||
- `[ 61.45s]` VOICE ■ mid_song (kill)
|
||||
- `[ 61.80s]` VIBRATE [8]
|
||||
- `[ 61.90s]` SFX ♪ dm_tomlo
|
||||
- `[ 62.47s]` VIBRATE [8]
|
||||
- `[ 63.58s]` VIBRATE [60,40,60]
|
||||
- `[ 63.58s]` SFX ♪ dm_hat
|
||||
- `[ 63.78s]` **GESTURE** tap @(195,210)
|
||||
- `[ 63.78s]` VIBRATE [20]
|
||||
- `[ 63.78s]` VIBRATE [60,40,60]
|
||||
- `[ 63.78s]` SFX ♪ dm_tomhi
|
||||
- `[ 63.78s]` SFX ♪ dm_hat
|
||||
- `[ 64.44s]` **GESTURE** tap @(65,210)
|
||||
- `[ 64.44s]` VIBRATE [20]
|
||||
- `[ 64.44s]` VIBRATE [60,40,60]
|
||||
- `[ 64.44s]` SFX ♪ dm_hat
|
||||
- `[ 64.44s]` SFX ♪ dm_hat
|
||||
- `[ 65.22s]` SFX ♪ dm_hat
|
||||
- `[ 65.58s]` VIBRATE [60,40,60]
|
||||
- `[ 65.58s]` SFX ♪ dm_hat
|
||||
- `[ 65.80s]` VIBRATE [8]
|
||||
- `[ 66.54s]` SFX ♪ dm_snare
|
||||
- `[ 67.13s]` VIBRATE [8]
|
||||
- `[ 67.22s]` SFX ♪ inst_kick
|
||||
- `[ 67.80s]` VIBRATE [8]
|
||||
- `[ 68.42s]` **GESTURE** tap @(325,210)
|
||||
- `[ 68.42s]` VIBRATE [20]
|
||||
- `[ 68.42s]` VIBRATE [60,40,60]
|
||||
- `[ 68.42s]` SFX ♪ dm_crash
|
||||
- `[ 68.42s]` SFX ♪ dm_hat
|
||||
- `[ 69.74s]` **GESTURE** tap @(65,630)
|
||||
- `[ 69.74s]` VIBRATE [20]
|
||||
- `[ 69.75s]` SFX ♪ dm_snare
|
||||
- `[ 69.75s]` SFX ♪ dm_accent
|
||||
- `[ 70.54s]` SFX ♪ inst_kick
|
||||
- `[ 70.94s]` VIBRATE [60,40,60]
|
||||
- `[ 70.94s]` SFX ♪ dm_hat
|
||||
- `[ 71.14s]` VIBRATE [8]
|
||||
- `[ 71.22s]` SFX ♪ dm_hat
|
||||
- `[ 71.79s]` VIBRATE [8]
|
||||
- `[ 71.90s]` SFX ♪ inst_kick
|
||||
- `[ 72.46s]` VIBRATE [8]
|
||||
- `[ 72.54s]` SFX ♪ dm_crash
|
||||
- `[ 73.14s]` VIBRATE [8]
|
||||
- `[ 73.80s]` **GESTURE** tap @(195,210)
|
||||
- `[ 73.80s]` VIBRATE [20]
|
||||
- `[ 73.80s]` VIBRATE [60,40,60]
|
||||
- `[ 73.80s]` SFX ♪ dm_tomhi
|
||||
- `[ 73.80s]` SFX ♪ dm_hat
|
||||
- `[ 74.46s]` **GESTURE** tap @(195,210)
|
||||
- `[ 74.46s]` VIBRATE [20]
|
||||
- `[ 74.46s]` VIBRATE [60,40,60]
|
||||
- `[ 74.46s]` SFX ♪ dm_tomhi
|
||||
- `[ 74.46s]` SFX ♪ dm_hat
|
||||
- `[ 75.62s]` VIBRATE [60,40,60]
|
||||
- `[ 75.62s]` SFX ♪ dm_hat
|
||||
- `[ 75.78s]` **GESTURE** tap @(195,210)
|
||||
- `[ 75.79s]` VIBRATE [20]
|
||||
- `[ 75.79s]` VIBRATE [60,40,60]
|
||||
- `[ 75.79s]` SFX ♪ dm_tomhi
|
||||
- `[ 75.79s]` SFX ♪ dm_hat
|
||||
- `[ 75.90s]` SFX ♪ dm_snare
|
||||
- `[ 76.47s]` VIBRATE [8]
|
||||
- `[ 76.54s]` SFX ♪ dm_tomlo
|
||||
- `[ 77.12s]` VIBRATE [8]
|
||||
- `[ 77.22s]` SFX ♪ dm_hat
|
||||
- `[ 77.80s]` VIBRATE [8]
|
||||
- `[ 77.86s]` SFX ♪ inst_kick
|
||||
- `[ 78.45s]` VIBRATE [8]
|
||||
- `[ 79.10s]` **GESTURE** tap @(325,630)
|
||||
- `[ 79.10s]` VIBRATE [20]
|
||||
- `[ 79.10s]` VIBRATE [60,40,60]
|
||||
- `[ 79.10s]` SFX ♪ dm_tomlo
|
||||
- `[ 79.10s]` SFX ♪ dm_hat
|
||||
- `[ 79.15s]` VOICE ▶ tut_fill (dur 3.68s)
|
||||
- `[ 80.26s]` VIBRATE [60,40,60]
|
||||
- `[ 80.26s]` SFX ♪ dm_hat
|
||||
- `[ 80.42s]` **GESTURE** tap @(325,210)
|
||||
- `[ 80.42s]` VIBRATE [20]
|
||||
- `[ 80.42s]` VIBRATE [60,40,60]
|
||||
- `[ 80.42s]` SFX ♪ dm_crash
|
||||
- `[ 80.42s]` SFX ♪ dm_hat
|
||||
- `[ 81.08s]` **GESTURE** tap @(65,630)
|
||||
- `[ 81.08s]` VIBRATE [20]
|
||||
- `[ 81.08s]` VIBRATE [60,40,60]
|
||||
- `[ 81.08s]` SFX ♪ dm_snare
|
||||
- `[ 81.09s]` SFX ♪ dm_hat
|
||||
- `[ 81.22s]` SFX ♪ inst_kick
|
||||
- `[ 81.40s]` VOICE ■ tut_fill (kill)
|
||||
- `[ 81.54s]` SFX ♪ inst_kick
|
||||
- `[ 81.80s]` VIBRATE [8]
|
||||
- `[ 81.86s]` SFX ♪ inst_kick
|
||||
- `[ 82.13s]` VIBRATE [8]
|
||||
- `[ 82.22s]` SFX ♪ dm_snare
|
||||
- `[ 82.46s]` VIBRATE [8]
|
||||
- `[ 82.54s]` SFX ♪ dm_snare
|
||||
- `[ 82.80s]` VIBRATE [8]
|
||||
- `[ 82.86s]` SFX ♪ inst_kick
|
||||
- `[ 83.13s]` VIBRATE [8]
|
||||
- `[ 83.22s]` SFX ♪ dm_crash
|
||||
- `[ 83.46s]` VIBRATE [8]
|
||||
- `[ 83.81s]` VIBRATE [8]
|
||||
- `[ 84.82s]` **GESTURE** tap @(195,210)
|
||||
- `[ 84.82s]` VIBRATE [20]
|
||||
- `[ 84.82s]` VIBRATE [60,40,60]
|
||||
- `[ 84.82s]` SFX ♪ dm_tomhi
|
||||
- `[ 84.82s]` SFX ♪ dm_hat
|
||||
- `[ 84.94s]` VIBRATE [60,40,60]
|
||||
- `[ 84.94s]` SFX ♪ dm_hat
|
||||
- `[ 85.28s]` **GESTURE** tap @(195,210)
|
||||
- `[ 85.28s]` VIBRATE [20]
|
||||
- `[ 85.28s]` VIBRATE [60,40,60]
|
||||
- `[ 85.28s]` SFX ♪ dm_tomhi
|
||||
- `[ 85.28s]` SFX ♪ dm_hat
|
||||
- `[ 85.81s]` **GESTURE** tap @(65,210)
|
||||
- `[ 85.81s]` VIBRATE [20]
|
||||
- `[ 85.81s]` VIBRATE [60,40,60]
|
||||
- `[ 85.81s]` SFX ♪ dm_hat
|
||||
- `[ 85.81s]` SFX ♪ dm_hat
|
||||
- `[ 85.94s]` VIBRATE [60,40,60]
|
||||
- `[ 85.94s]` SFX ♪ dm_hat
|
||||
- `[ 86.28s]` **GESTURE** tap @(65,210)
|
||||
- `[ 86.28s]` VIBRATE [20]
|
||||
- `[ 86.28s]` VIBRATE [60,40,60]
|
||||
- `[ 86.28s]` SFX ♪ dm_hat
|
||||
- `[ 86.28s]` SFX ♪ dm_hat
|
||||
- `[ 86.94s]` VIBRATE [60,40,60]
|
||||
- `[ 86.94s]` SFX ♪ dm_hat
|
||||
- `[ 87.43s]` VOICE ▶ grade_c (dur 4.16s)
|
||||
- `[ 89.97s]` VOICE ■ grade_c (kill)
|
||||
- `[ 89.97s]` VOICE ▶ new_best_combo (dur 1.44s)
|
||||
- `[ 90.92s]` VOICE ■ new_best_combo (kill)
|
||||
- `[ 90.92s]` VOICE ▶ restart (dur 3.36s)
|
||||
- `[ 92.98s]` VOICE ■ restart (kill)
|
||||
- `[ 92.98s]` BGM ♪ menu (loop)
|
||||
@@ -0,0 +1,208 @@
|
||||
{
|
||||
"game": "rhythm",
|
||||
"settings": {
|
||||
"voice": "female",
|
||||
"guide": "standard",
|
||||
"speed": 1.7,
|
||||
"bgm": 0.3
|
||||
},
|
||||
"outdir": "/home/xsl/AutoVideo/SoundGame/web/harness/live/out/rhythm-20260914100502",
|
||||
"segs": [
|
||||
{
|
||||
"idx": 0,
|
||||
"voiceId": "welcome",
|
||||
"t0": 0.054,
|
||||
"t1": 1.711,
|
||||
"dur": 6.24,
|
||||
"expEnd": 3.725,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"voiceId": "tut_map",
|
||||
"t0": 1.711,
|
||||
"t1": 3.08,
|
||||
"dur": 14.28,
|
||||
"expEnd": 10.111,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"voiceId": "tut_probe",
|
||||
"t0": 3.08,
|
||||
"t1": 4.449,
|
||||
"dur": 3.76,
|
||||
"expEnd": 5.292,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"voiceId": "zone_tl",
|
||||
"t0": 5.325,
|
||||
"t1": 6.544,
|
||||
"dur": 1.68,
|
||||
"expEnd": 6.313,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"voiceId": "zone_bc",
|
||||
"t0": 7.596,
|
||||
"t1": 9.004,
|
||||
"dur": 2,
|
||||
"expEnd": 8.772,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"voiceId": "tut_skip",
|
||||
"t0": 9.618,
|
||||
"t1": 11.024,
|
||||
"dur": 2,
|
||||
"expEnd": 10.794,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"voiceId": "menu_main",
|
||||
"t0": 27.753,
|
||||
"t1": 30.151,
|
||||
"dur": 5.6,
|
||||
"expEnd": 31.047,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"voiceId": "menu_lobby",
|
||||
"t0": 30.156,
|
||||
"t1": 30.643,
|
||||
"dur": 0.6370975056689342,
|
||||
"expEnd": 30.531,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"voiceId": "rules",
|
||||
"t0": 31.986,
|
||||
"t1": 36.657,
|
||||
"dur": 7.68,
|
||||
"expEnd": 36.504,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"voiceId": "settings_hint",
|
||||
"t0": 36.663,
|
||||
"t1": 37.609,
|
||||
"dur": 1.36,
|
||||
"expEnd": 37.463,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"voiceId": "mid_song",
|
||||
"t0": 60.504,
|
||||
"t1": 61.454,
|
||||
"dur": 1.6,
|
||||
"expEnd": 61.445,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"voiceId": "tut_fill",
|
||||
"t0": 79.153,
|
||||
"t1": 81.398,
|
||||
"dur": 3.68,
|
||||
"expEnd": 81.318,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"voiceId": "grade_c",
|
||||
"t0": 87.434,
|
||||
"t1": 89.965,
|
||||
"dur": 4.16,
|
||||
"expEnd": 89.881,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"voiceId": "new_best_combo",
|
||||
"t0": 89.971,
|
||||
"t1": 90.917,
|
||||
"dur": 1.44,
|
||||
"expEnd": 90.818,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"voiceId": "restart",
|
||||
"t0": 90.924,
|
||||
"t1": 92.984,
|
||||
"dur": 3.36,
|
||||
"expEnd": 92.9,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
}
|
||||
],
|
||||
"rows": []
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
# 《节拍行者》鼓手模式 R1 人设评审(基于 round0 转写 + live A/B 实录)
|
||||
|
||||
## P1 视障资深玩家(专业评委)
|
||||
|
||||
### 节拍行者(鼓手模式)
|
||||
- 状态感知:4/5 —— 绝大多数时刻清楚自己在哪:摸鼓阶段每摸一区报区名(「左上,踩镲。」),教学每步有明确指令句,演奏中领奏停了=轮到我这个契约从转写 t+60.9s 的 gd_answer+turn 开始就非常清楚。扣分项:①连摸三下快进时第三下的区名被掐断(zone_bl TRUNCATED,live A 实录)——报一半就没了;②曲尾半句「慢了半拍。」被评级语音顶掉,最后听到的引导是半句话。
|
||||
- 下一步明确性:4/5 —— 应答窗内零语音的纪律执行得好(live A 正片应答段无一句插话);结算屏三选项播报齐全。扣一分:摸鼓进阶条件「摸到三个不同的地方」在蒙眼+快摸时只能靠数数,没有「还差一个」的进度提示。
|
||||
- 愿意继续玩:**是** —— 这是少见的「先给你乐器随便玩,再教你曲子」的节奏游戏,探索阶段零惩罚,双轴(列=声像/行=音高)的心智模型三句话就立住了,比我玩过的大多数盲 accessible 节奏游戏的「背手势表」高一个档次。
|
||||
- P0 问题:无(无「不知道自己在哪/该做什么」的时刻)。
|
||||
- 建议:①区名被掐断修掉(第三下摸完让它报完再进教学);②曲尾 3 秒内别再插向导句,直接结算;③摸鼓进度播报(「还差一个」)。
|
||||
|
||||
## P2 时间充裕的大学生
|
||||
|
||||
### 节拍行者(鼓手模式)
|
||||
- 状态感知:4/5 —— 头 10 秒就在敲真鼓(摸鼓认区),比「听 30 秒旁白」强太多。演奏中每句「领奏 1 小节→空 1 小节给我」结构清晰,加花前还有预告(「最后有一段加花,跟着我连打」)。扣分:教学连错时「再听一遍,跟着来」连着播两遍(retry_listen×2,live A 28.1s/30.4s),像复读机。
|
||||
- 下一步明确性:5/5 —— 任何时候都知道该干嘛:摸鼓时随便摸、教学时听数拍跟打、漏打了有「慢了半拍,下一小节跟上我就行」兜底。没有一帧是无提示的。
|
||||
- 愿意继续玩:**是** —— 90 秒一局、A 级解锁下一首的钩子很标准但有效;加花(一串快鼓+吊镲收尾)是真实的爽点,转写里 t+118.5s 那句预告一出来我就精神了。打完立刻想开《追风》。
|
||||
- P0 问题:无。
|
||||
- 建议:①纠正链「再听一遍」二连播合并成一句;②解锁播报可以更燃一点(现在的「新曲目解锁,追风!」偏平淡)。
|
||||
|
||||
## P3 时间紧张的白领
|
||||
|
||||
### 节拍行者(鼓手模式)
|
||||
- 状态感知:4/5 —— 单手竖握,下排三个区拇指全覆盖,上排手掌下移就够——单手盲操成立。被打断(下滑菜单)后「四拍之后,继续」+四下底鼓数拍回来,25 分钟地铁里能完整打一局(65-80 秒)。扣分:曲中 half 的「过半了,保持」在嘈杂环境 ducking 后偏小(live B bgm=0.3 下清晰,但真地铁满音量 BGM 时待验证)。
|
||||
- 下一步明确性:4/5 —— 通勤场景最需要的「随时可暂停、一句话接上」做到了。扣一分:选曲界面左右滑的反馈只有曲名语音,如果正好在隧道里没听清是哪首,没有重听快捷键提示(要靠自己记得上滑是规则)。
|
||||
- 愿意继续玩:**是** —— 单局短、可暂停、无倒计时惩罚,错鼓就是一声闷镲不骂街,地铁站立可玩。
|
||||
- P0 问题:无。
|
||||
- 建议:①选曲播报加序号(「第一首/第二首」其实已有,保留);②menu 帮助里补一句「选曲时上滑听规则」。
|
||||
|
||||
## P4 疲惫的工人
|
||||
|
||||
### 节拍行者(鼓手模式)
|
||||
- 状态感知:5/5 —— 规则一遍就懂:「我敲一小节鼓,你在下一小节照着敲回来」。做错了听到的是「没关系,我们先走下一句」「我放慢一些,跟着试试」——没有一句数落。全程没有血条、没有倒计时、没有「失败」两个字。
|
||||
- 下一步明确性:5/5 —— 教学三步一步一步带,数拍是四下底鼓,跟着敲就行;放慢重演的安排对我这种反应慢的人就是雪中送炭(live A 实录 gd_slow 后慢速领奏再教一遍)。
|
||||
- 愿意继续玩:**是** —— 不累。打错了歌照唱,评级 C 级也说「别灰心,再来一遍」。晚上外放小音量,底鼓军鼓分得清,低音不轰头。
|
||||
- P0 问题:无。
|
||||
- 建议:①教学完了进第一首之间衔接很顺,保持;②希望开场白再短一点(「今天你是乐队的鼓手」这句喜欢,保留)。
|
||||
|
||||
---
|
||||
|
||||
### 评审专门问题汇总
|
||||
|
||||
**分区心智模型是否建立(蒙眼能否说清自己敲的是哪个区)?**
|
||||
P1:能。双轴模型(列=左右耳、行=亮/沉)+六件乐器音色各异,三重冗余。live A 实录里驱动按谱面敲 36 音仅 4 音失手(且系驱动 artifact),反过来证明「听着领奏音色+声像找区」的映射可被快速掌握。
|
||||
P2/P3/P4:摸鼓阶段的「报名」机制是关键——蒙眼摸到哪听到哪 + 名字,建模型靠手不靠背。
|
||||
|
||||
**合拍感?**
|
||||
live A:33/37 音 Perfect 级(dt≈0.00s 真机直证),Perfect 有亮音叠加、16 连击有震动,合奏感(领奏=同音色)是旧作好评基因的延续。
|
||||
|
||||
**旧作保留的亮点是否还在?**
|
||||
跟随领奏核心 ✓、S~C 评级与解锁 ✓(live A A 级解锁《追风》实录)、BPM 精确(谱面锚定 bpm_precise 实测网格)✓、不中断不掉血 ✓、旁白可跳/长按快进 ✓、菜单断点续播 ✓。
|
||||
|
||||
**裁决:4/4 愿意继续玩,P0 = 0 —— R1 达标。**
|
||||
@@ -0,0 +1,51 @@
|
||||
# 《节拍行者》鼓手模式 R1 synthesis(产品裁定)
|
||||
|
||||
## 输入
|
||||
|
||||
- 转写:`round0/transcript-main.md`(mock 新手全弧线,201 行)+ live A/B 实录
|
||||
(`live-player.md`:A 局 ASR OK 11/TRUNCATED 5/MISMATCH 2,A 级通关+解锁;
|
||||
B 局 standard 档零向导语音、错区乱打 grade_c、菜单/长按全路径)
|
||||
- 人设:4/4 愿意继续玩(P1 4/4·4/5、P2 4/5·5/5、P3 4/5·4/5、P4 5/5·5/5),P0 = 0
|
||||
|
||||
## 裁定:4/4 愿意继续玩,P0 = 0 —— **R1 达标**(≥3/4 且无 P0 级状态混淆)
|
||||
|
||||
## P0 清单
|
||||
|
||||
无。三通道(mock 转写/live 实录/四人设)均未出现「不知道自己在哪/该做什么/
|
||||
为何失败」的状态混淆;教学失败、菜单中断、错鼓、长按、结算每条路径都有
|
||||
听觉兜底且实测可达。
|
||||
|
||||
## P1 清单(R2 修复,含尽量修的 P2)
|
||||
|
||||
1. **F1 曲尾向导句被结算顶断**:连 2 Miss 的 gd_miss 在曲尾 miss 后插播,
|
||||
1.1s 即被结算评级语音顶掉(live A 实录「慢了半拍。」半句)。修:guide.error
|
||||
调度加「距 _phaseEnd < 3s 静默跳过」守卫(与 gd_miss 同曲一次的配额共用,
|
||||
宁可不说不说半句)。
|
||||
2. **F2 探针第三击区名被掐断**:摸满 3 区进阶时 stopVoice 切断正在播的区名
|
||||
(zone_bl TRUNCATED,live A 实录;P1 评委点名)。修:探针 advance 不再
|
||||
stopVoice,教学步语音改 queue:true 排在区名后播(链式 onComplete 推进,
|
||||
_tutLead 的 ≥1.2s 缓冲天然吸收排队延迟)。
|
||||
3. **F3 教学纠正链复读机**:retry_listen 在纠正链尾与默认纠正句二连播
|
||||
(live A 28.1s/30.4s;P2 评委点名)。修:纠正链去重——wrong/early/late
|
||||
归因句已含「再听」语义时不再追加 retry_listen。
|
||||
4. **F4(P2)unlock 播报燃度**:维持现状(文案经 TTS 双性别验证,不改)。
|
||||
5. **F5(P2,不修)** zone_tr/zone_tc/new_best_combo 的 ASR MISMATCH =
|
||||
短句同音近失(cipher 先例归因),人耳可辨。
|
||||
|
||||
## F 类修复复核结论(R2 验收口径)
|
||||
|
||||
- F1 断言:曲尾 3s 内连 2 Miss → 无 gd_miss 语音调度(事件钩子可证),
|
||||
结算链完整不截断。
|
||||
- F2 断言:快速连摸 3 区 → 区名全部自然播完 → 教学句紧随其后 → T1 数拍
|
||||
不误拍(时间轴:区名链 ≤6s + 教学句 + 1.2s 缓冲对齐下一小节)。
|
||||
- F3 断言:教学失败时纠正语音链至多 2 句且不含相邻重复 id。
|
||||
- 既有绿全部不回退:playtest 129 / guide.test 122 / check_all_assets。
|
||||
|
||||
## 其他记录
|
||||
|
||||
- live 基础设施教训 5 条(单飞拉取/when 字段/vibrate 锚/layer 过滤/视口
|
||||
坐标)已沉淀在 `live-player.md` 末尾,惠及全部泳道。
|
||||
- 驱动 artifact(曲尾 clearPending 误杀尾单、B 局 verdicts 未及落盘)非游戏
|
||||
缺陷,R2 驱动已修/规避。
|
||||
- 资产零新增(修复全部代码层);语音/BGM/合成资产经 check_all_assets 与
|
||||
live 双通道验证无缺失。
|
||||
@@ -0,0 +1,28 @@
|
||||
# 《节拍行者》鼓手模式 R2 全拟真试玩报告
|
||||
|
||||
复跑主线局(live A 同款驱动,端口 8142,产物 `live/A/` = rhythm-20260914102057)。
|
||||
R1 synthesis 的三项 P1 修复(F1 曲尾 gd_miss 守卫 / F2 探针区名防掐断 /
|
||||
F3 纠正链去重)全部带断言落地(playtest A23-A25),本局为修复后的真机验收。
|
||||
|
||||
## 验收结果
|
||||
|
||||
- ASR 判定:**OK 12 / TRUNCATED 3 / MISMATCH 2**(R1 为 11/5/2)
|
||||
- **F2 直证**:三连摸区名链 zone_tl 5.32→6.92 / zone_tr 7.99→9.87 /
|
||||
zone_bl 10.66→**13.00(播完)** → tut_z_kick 13.01 接续——区名不再被掐断,
|
||||
教学句乖乖排队(150ms 延迟起步 + queue 链,根因是引擎入队判定在 await
|
||||
加载之前,同步连发会误判通道空闲)
|
||||
- **F1 直证**:曲尾 4 记 Miss 全程无 gd_miss 语音调度(R1 同位置半句截断
|
||||
消失),结算链 grade_a → unlock_song2 → restart 零截断
|
||||
- **F3 直证**(mock 断言 A23):没出手失败的纠正链 retry_listen 只播一次;
|
||||
live 教学段语音序列无相邻复读
|
||||
- 演奏精度保持:**33 记 Perfect accent / 4 记 Miss**(dt≈0.00s),
|
||||
tut_done 61.4s → grade_a 126.8s → unlock_song2 133.2s 全弧线
|
||||
- 剩余 TRUNCATED×3 = 驱动故意跳旁白(welcome/tut_map/tut_probe);
|
||||
MISMATCH×2 = 短句 ASR 同音近失(zone_tr「有上调查」/ new_best_combo
|
||||
「新联机记录」,cipher 先例归因,人耳可辨)
|
||||
|
||||
## 结论
|
||||
|
||||
修复零回退(playtest 129→134 含新增 3 断言 / guide.test 122 /
|
||||
check_all_assets 全绿 / 15 游戏+3 引擎测试全量回归绿),live 直证 F1-F3
|
||||
全部兑现。R2 达标。
|
||||
@@ -0,0 +1,365 @@
|
||||
{"ev":"probe_ready","t":8.900000005960464,"ta":null}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":1522.2000000178814,"ta":-0.087}
|
||||
{"ev":"recstart","mime":"audio/webm;codecs=opus","t":1608.9000000059605,"ta":0}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_hat.ogg","status":200,"ok":true,"ms":14,"t":1623.2000000178814,"ta":0.014}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_tomhi.ogg","status":200,"ok":true,"ms":14,"t":1623.5,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_crash.ogg","status":200,"ok":true,"ms":14,"t":1623.5,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_snare.ogg","status":200,"ok":true,"ms":14,"t":1623.5,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/inst_kick.ogg","status":200,"ok":true,"ms":14,"t":1623.6000000238419,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_tomlo.ogg","status":200,"ok":true,"ms":14,"t":1623.6000000238419,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/dm_accent.ogg","status":200,"ok":true,"ms":14,"t":1623.7000000178814,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/male/welcome.ogg","status":200,"ok":true,"ms":14,"t":1623.7000000178814,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/male/welcome_back.ogg","status":200,"ok":true,"ms":14,"t":1623.7000000178814,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_map.ogg","status":200,"ok":true,"ms":14,"t":1623.800000011921,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_probe.ogg","status":200,"ok":true,"ms":14,"t":1623.800000011921,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/male/select_hint.ogg","status":200,"ok":true,"ms":14,"t":1623.800000011921,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/voice/male/mid_song.ogg","status":200,"ok":true,"ms":14,"t":1623.9000000059605,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/bgm/menu.ogg","status":200,"ok":true,"ms":14,"t":1624.4000000059605,"ta":0.016}
|
||||
{"ev":"fetch","url":"audio/bgm/track90.ogg","status":200,"ok":true,"ms":15,"t":1625.5,"ta":0.017}
|
||||
{"ev":"fetch","url":"audio/bgm/track105.ogg","status":200,"ok":true,"ms":16,"t":1626.300000011921,"ta":0.017}
|
||||
{"ev":"fetch","url":"audio/bgm/track120.ogg","status":200,"ok":true,"ms":17,"t":1627.6000000238419,"ta":0.019}
|
||||
{"ev":"vstart","url":"audio/voice/male/welcome.ogg","t":1675.2000000178814,"dur":8.24,"ta":0.066}
|
||||
{"ev":"start","t":1924.2000000178814,"sid":1,"url":"audio/bgm/track90.ogg","layer":"bgm","dur":82.33301587301587,"rate":1,"loop":true,"when":6,"ta":0.315}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":2816.5,"ta":1.208}
|
||||
{"ev":"vibrate","pattern":"[20]","t":2818,"ta":1.209}
|
||||
{"ev":"vend","url":"audio/voice/male/welcome.ogg","t":3318.600000023842,"reason":"kill","ta":1.71}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_map.ogg","t":3318.800000011921,"dur":18.04,"ta":1.71}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":4185,"ta":2.576}
|
||||
{"ev":"vibrate","pattern":"[20]","t":4186.4000000059605,"ta":2.578}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_map.ogg","t":4686.5,"reason":"kill","ta":3.078}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_probe.ogg","t":4686.700000017881,"dur":3.84,"ta":3.078}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":5553.100000023842,"ta":3.944}
|
||||
{"ev":"vibrate","pattern":"[20]","t":5554.4000000059605,"ta":3.946}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_probe.ogg","t":6054.600000023842,"reason":"kill","ta":4.446}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":6921.100000023842,"ta":5.312}
|
||||
{"ev":"vibrate","pattern":"[20]","t":6922.5,"ta":5.314}
|
||||
{"ev":"start","t":6923.100000023842,"sid":2,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":5.314}
|
||||
{"ev":"fetch","url":"audio/voice/male/zone_tl.ogg","status":200,"ok":true,"ms":2,"t":6924.5,"ta":5.316}
|
||||
{"ev":"vstart","url":"audio/voice/male/zone_tl.ogg","t":6928,"dur":1.6,"ta":5.319}
|
||||
{"ev":"vend","url":"audio/voice/male/zone_tl.ogg","t":8527.700000017881,"reason":"kill","ta":6.919}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":210,"t":9591.5,"ta":7.983}
|
||||
{"ev":"vibrate","pattern":"[20]","t":9594.700000017881,"ta":7.986}
|
||||
{"ev":"start","t":9594.90000000596,"sid":3,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":0,"ta":7.986}
|
||||
{"ev":"fetch","url":"audio/voice/male/zone_tr.ogg","status":200,"ok":true,"ms":2,"t":9596.800000011921,"ta":7.988}
|
||||
{"ev":"vstart","url":"audio/voice/male/zone_tr.ogg","t":9600.600000023842,"dur":1.76,"ta":7.992}
|
||||
{"ev":"vend","url":"audio/voice/male/zone_tr.ogg","t":11476.200000017881,"reason":"kill","ta":9.867}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":12262.90000000596,"ta":10.654}
|
||||
{"ev":"vibrate","pattern":"[20]","t":12264.600000023842,"ta":10.656}
|
||||
{"ev":"start","t":12264.90000000596,"sid":4,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":10.656}
|
||||
{"ev":"fetch","url":"audio/voice/male/zone_bl.ogg","status":200,"ok":true,"ms":1,"t":12266.100000023842,"ta":10.657}
|
||||
{"ev":"vstart","url":"audio/voice/male/zone_bl.ogg","t":12269.300000011921,"dur":2,"ta":10.66}
|
||||
{"ev":"vend","url":"audio/voice/male/zone_bl.ogg","t":14610.700000017881,"reason":"kill","ta":13.002}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_z_kick.ogg","status":200,"ok":true,"ms":2,"t":14612.700000017881,"ta":13.004}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_z_kick.ogg","t":14619.600000023842,"dur":7.28,"ta":13.011}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_z_kick.ogg","t":22156.5,"reason":"kill","ta":20.548}
|
||||
{"ev":"start","t":23037.100000023842,"sid":5,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":22,"ta":21.428}
|
||||
{"ev":"vibrate","pattern":"[8]","t":23593.20000001788,"ta":21.984}
|
||||
{"ev":"start","t":23677,"sid":6,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":22.666666666666668,"ta":22.068}
|
||||
{"ev":"vibrate","pattern":"[8]","t":24273,"ta":22.664}
|
||||
{"ev":"start","t":24357,"sid":7,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":23.333333333333332,"ta":22.748}
|
||||
{"ev":"vibrate","pattern":"[8]","t":24923.100000023842,"ta":23.314}
|
||||
{"ev":"start","t":25037.100000023842,"sid":8,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":24,"ta":23.428}
|
||||
{"ev":"vibrate","pattern":"[8]","t":25596.100000023842,"ta":23.987}
|
||||
{"ev":"start","t":25677.100000023842,"sid":9,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":24.666666666666668,"ta":24.068}
|
||||
{"ev":"vibrate","pattern":"[8]","t":26276,"ta":24.667}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":28908.600000023842,"ta":27.3}
|
||||
{"ev":"vibrate","pattern":"[20]","t":28910.90000000596,"ta":27.302}
|
||||
{"ev":"start","t":28911.40000000596,"sid":10,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":27.303}
|
||||
{"ev":"start","t":28911.40000000596,"sid":11,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":27.303}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_z_sides.ogg","status":200,"ok":true,"ms":2,"t":29679.100000023842,"ta":28.07}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_z_sides.ogg","t":29685.70000001788,"dur":5.2,"ta":28.077}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_z_sides.ogg","t":34903.20000001788,"reason":"kill","ta":33.294}
|
||||
{"ev":"start","t":36343.5,"sid":12,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":35.33333333333333,"ta":34.735}
|
||||
{"ev":"vibrate","pattern":"[8]","t":36927.60000002384,"ta":35.319}
|
||||
{"ev":"start","t":37023.5,"sid":13,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":35.99999999999999,"ta":35.415}
|
||||
{"ev":"vibrate","pattern":"[8]","t":37600.60000002384,"ta":35.992}
|
||||
{"ev":"start","t":37663.5,"sid":14,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":36.666666666666664,"ta":36.055}
|
||||
{"ev":"vibrate","pattern":"[8]","t":38257.60000002384,"ta":36.649}
|
||||
{"ev":"start","t":38343.5,"sid":15,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":37.33333333333333,"ta":36.735}
|
||||
{"ev":"vibrate","pattern":"[8]","t":38930.5,"ta":37.322}
|
||||
{"ev":"start","t":39023.5,"sid":16,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":37.99999999999999,"ta":37.415}
|
||||
{"ev":"vibrate","pattern":"[8]","t":39604.60000002384,"ta":37.996}
|
||||
{"ev":"start","t":40343.5,"sid":17,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":39.33333333333333,"ta":38.735}
|
||||
{"ev":"vibrate","pattern":"[8]","t":40933.60000002384,"ta":39.325}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":42248.30000001192,"ta":40.639}
|
||||
{"ev":"vibrate","pattern":"[20]","t":42250.60000002384,"ta":40.642}
|
||||
{"ev":"start","t":42250.70000001788,"sid":18,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":40.642}
|
||||
{"ev":"start","t":42250.80000001192,"sid":19,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":40.642}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":630,"t":43571.5,"ta":41.963}
|
||||
{"ev":"vibrate","pattern":"[20]","t":43573,"ta":41.964}
|
||||
{"ev":"start","t":43573.20000001788,"sid":20,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":0,"ta":41.964}
|
||||
{"ev":"start","t":43573.20000001788,"sid":21,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":41.964}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_z_patt.ogg","status":200,"ok":true,"ms":2,"t":44385.20000001788,"ta":42.776}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_z_patt.ogg","t":44395.30000001192,"dur":9.68,"ta":42.786}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_z_patt.ogg","t":54174.30000001192,"reason":"kill","ta":52.565}
|
||||
{"ev":"start","t":55014.60000002384,"sid":22,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":54,"ta":53.406}
|
||||
{"ev":"vibrate","pattern":"[8]","t":55596.70000001788,"ta":53.988}
|
||||
{"ev":"start","t":55654.60000002384,"sid":23,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":54.666666666666664,"ta":54.046}
|
||||
{"ev":"vibrate","pattern":"[8]","t":56253.70000001788,"ta":54.645}
|
||||
{"ev":"start","t":56334.60000002384,"sid":24,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":55.333333333333336,"ta":54.726}
|
||||
{"ev":"vibrate","pattern":"[8]","t":56926.70000001788,"ta":55.318}
|
||||
{"ev":"start","t":57014.70000001788,"sid":25,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":56,"ta":55.406}
|
||||
{"ev":"vibrate","pattern":"[8]","t":57599.80000001192,"ta":55.991}
|
||||
{"ev":"start","t":57694.70000001788,"sid":26,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":56.666666666666664,"ta":56.086}
|
||||
{"ev":"vibrate","pattern":"[8]","t":58272.70000001788,"ta":56.664}
|
||||
{"ev":"start","t":58334.60000002384,"sid":27,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":57.33333333333333,"ta":56.726}
|
||||
{"ev":"vibrate","pattern":"[8]","t":58929.80000001192,"ta":57.321}
|
||||
{"ev":"start","t":59014.70000001788,"sid":28,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":58,"ta":57.406}
|
||||
{"ev":"vibrate","pattern":"[8]","t":59602.70000001788,"ta":57.994}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":60885.10000002384,"ta":59.276}
|
||||
{"ev":"vibrate","pattern":"[20]","t":60886.5,"ta":59.278}
|
||||
{"ev":"start","t":60886.80000001192,"sid":29,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":59.278}
|
||||
{"ev":"start","t":60886.80000001192,"sid":30,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":59.278}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":210,"t":61545.80000001192,"ta":59.937}
|
||||
{"ev":"vibrate","pattern":"[20]","t":61547.10000002384,"ta":59.938}
|
||||
{"ev":"start","t":61547.30000001192,"sid":31,"url":"audio/sfx/dm_tomhi.ogg","layer":"sfx","dur":0.29750566893424035,"rate":1,"loop":false,"when":0,"ta":59.938}
|
||||
{"ev":"start","t":61547.30000001192,"sid":32,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":59.938}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":210,"t":62291.10000002384,"ta":60.682}
|
||||
{"ev":"vibrate","pattern":"[20]","t":62292.60000002384,"ta":60.684}
|
||||
{"ev":"start","t":62292.80000001192,"sid":33,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":0,"ta":60.684}
|
||||
{"ev":"start","t":62292.90000000596,"sid":34,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":60.684}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_done.ogg","status":200,"ok":true,"ms":2,"t":63016.40000000596,"ta":61.408}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_done.ogg","t":63020.5,"dur":2.48,"ta":61.412}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_done.ogg","t":65736.60000002384,"reason":"kill","ta":64.128}
|
||||
{"ev":"stop","t":65737,"sid":1,"when":0,"ta":64.128}
|
||||
{"ev":"start","t":65738.10000002384,"sid":35,"url":"audio/bgm/track90.ogg","layer":"bgm","dur":82.33301587301587,"rate":1,"loop":true,"when":65.14512471655328,"ta":64.129}
|
||||
{"ev":"start","t":66178.30000001192,"sid":36,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":65.14512471655328,"ta":64.569}
|
||||
{"ev":"vibrate","pattern":"[8]","t":66736.30000001192,"ta":65.127}
|
||||
{"ev":"start","t":66818.20000001788,"sid":37,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":65.81179138321995,"ta":65.209}
|
||||
{"ev":"vibrate","pattern":"[8]","t":67416.20000001788,"ta":65.807}
|
||||
{"ev":"start","t":67498.40000000596,"sid":38,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":66.47845804988661,"ta":65.89}
|
||||
{"ev":"vibrate","pattern":"[8]","t":68066.40000000596,"ta":66.458}
|
||||
{"ev":"start","t":68178.20000001788,"sid":39,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":67.14512471655328,"ta":66.569}
|
||||
{"ev":"vibrate","pattern":"[8]","t":68739.20000001788,"ta":67.13}
|
||||
{"ev":"start","t":68818.30000001192,"sid":40,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":67.81179138321995,"ta":67.209}
|
||||
{"ev":"vibrate","pattern":"[8]","t":69396.30000001192,"ta":67.787}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":69411,"ta":67.802}
|
||||
{"ev":"vibrate","pattern":"[20]","t":69413.20000001788,"ta":67.804}
|
||||
{"ev":"start","t":69413.40000000596,"sid":41,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":67.805}
|
||||
{"ev":"fetch","url":"audio/voice/male/gd_answer.ogg","status":200,"ok":true,"ms":2,"t":69419.80000001192,"ta":67.811}
|
||||
{"ev":"vstart","url":"audio/voice/male/gd_answer.ogg","t":69423.30000001192,"dur":1.52,"ta":67.814}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":70074.90000000596,"ta":68.466}
|
||||
{"ev":"vibrate","pattern":"[20]","t":70076.30000001192,"ta":68.467}
|
||||
{"ev":"start","t":70076.40000000596,"sid":42,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":68.468}
|
||||
{"ev":"start","t":70178.30000001192,"sid":43,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":69.14512471655328,"ta":68.569}
|
||||
{"ev":"vibrate","pattern":"[8]","t":70742.20000001788,"ta":69.133}
|
||||
{"ev":"vend","url":"audio/voice/male/gd_answer.ogg","t":71030.5,"reason":"kill","ta":69.422}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":72538.30000001192,"ta":70.929}
|
||||
{"ev":"start","t":72538.5,"sid":44,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":70.93}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":73386.30000001192,"ta":71.777}
|
||||
{"ev":"vibrate","pattern":"[20]","t":73387.80000001192,"ta":71.779}
|
||||
{"ev":"start","t":73388,"sid":45,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":71.779}
|
||||
{"ev":"start","t":73388,"sid":46,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":71.779}
|
||||
{"ev":"start","t":76818.30000001192,"sid":47,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":75.81179138321995,"ta":75.209}
|
||||
{"ev":"vibrate","pattern":"[8]","t":77408.30000001192,"ta":75.799}
|
||||
{"ev":"start","t":78178.30000001192,"sid":48,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":77.14512471655328,"ta":76.569}
|
||||
{"ev":"vibrate","pattern":"[8]","t":78732.30000001192,"ta":77.123}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":80080.5,"ta":78.472}
|
||||
{"ev":"vibrate","pattern":"[20]","t":80082.90000000596,"ta":78.474}
|
||||
{"ev":"start","t":80083,"sid":49,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":78.474}
|
||||
{"ev":"start","t":80083.10000002384,"sid":50,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":78.474}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":630,"t":81403.5,"ta":79.795}
|
||||
{"ev":"vibrate","pattern":"[20]","t":81405,"ta":79.796}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":81405,"ta":79.796}
|
||||
{"ev":"start","t":81405.20000001788,"sid":51,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":0,"ta":79.796}
|
||||
{"ev":"start","t":81405.20000001788,"sid":52,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":79.796}
|
||||
{"ev":"start","t":84818.20000001788,"sid":53,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":83.81179138321994,"ta":83.209}
|
||||
{"ev":"vibrate","pattern":"[8]","t":85397.30000001192,"ta":83.788}
|
||||
{"ev":"start","t":85498.30000001192,"sid":54,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":84.47845804988661,"ta":83.889}
|
||||
{"ev":"vibrate","pattern":"[8]","t":86071.20000001788,"ta":84.462}
|
||||
{"ev":"start","t":86138.30000001192,"sid":55,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":85.14512471655327,"ta":84.529}
|
||||
{"ev":"vibrate","pattern":"[8]","t":86736.30000001192,"ta":85.127}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":88024.10000002384,"ta":86.415}
|
||||
{"ev":"vibrate","pattern":"[20]","t":88025.60000002384,"ta":86.417}
|
||||
{"ev":"start","t":88025.70000001788,"sid":56,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":86.417}
|
||||
{"ev":"start","t":88025.80000001192,"sid":57,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":86.417}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":88684.10000002384,"ta":87.075}
|
||||
{"ev":"vibrate","pattern":"[20]","t":88685.70000001788,"ta":87.077}
|
||||
{"ev":"start","t":88685.80000001192,"sid":58,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":87.077}
|
||||
{"ev":"start","t":88685.80000001192,"sid":59,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":87.077}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":89344.90000000596,"ta":87.736}
|
||||
{"ev":"vibrate","pattern":"[20]","t":89346.40000000596,"ta":87.738}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":89346.5,"ta":87.738}
|
||||
{"ev":"start","t":89346.60000002384,"sid":60,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":87.738}
|
||||
{"ev":"start","t":89346.70000001788,"sid":61,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":87.738}
|
||||
{"ev":"start","t":92818.20000001788,"sid":62,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":91.81179138321994,"ta":91.209}
|
||||
{"ev":"vibrate","pattern":"[8]","t":93410.20000001788,"ta":91.801}
|
||||
{"ev":"start","t":93498.30000001192,"sid":63,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":92.47845804988661,"ta":91.889}
|
||||
{"ev":"vibrate","pattern":"[8]","t":94071.30000001192,"ta":92.462}
|
||||
{"ev":"start","t":94178.30000001192,"sid":64,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":93.14512471655327,"ta":92.569}
|
||||
{"ev":"vibrate","pattern":"[8]","t":94733.30000001192,"ta":93.124}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":96048.20000001788,"ta":94.439}
|
||||
{"ev":"vibrate","pattern":"[20]","t":96049.60000002384,"ta":94.441}
|
||||
{"ev":"start","t":96049.70000001788,"sid":65,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":94.441}
|
||||
{"ev":"start","t":96049.80000001192,"sid":66,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":94.441}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":630,"t":96708.70000001788,"ta":95.1}
|
||||
{"ev":"vibrate","pattern":"[20]","t":96710.10000002384,"ta":95.101}
|
||||
{"ev":"start","t":96710.30000001192,"sid":67,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":0,"ta":95.101}
|
||||
{"ev":"start","t":96710.30000001192,"sid":68,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":95.101}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":97368.10000002384,"ta":95.759}
|
||||
{"ev":"vibrate","pattern":"[20]","t":97369.5,"ta":95.761}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":97369.5,"ta":95.761}
|
||||
{"ev":"start","t":97369.60000002384,"sid":69,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":95.761}
|
||||
{"ev":"start","t":97369.70000001788,"sid":70,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":95.761}
|
||||
{"ev":"start","t":100818.20000001788,"sid":71,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":99.81179138321994,"ta":99.209}
|
||||
{"ev":"vibrate","pattern":"[8]","t":101399.30000001192,"ta":99.79}
|
||||
{"ev":"vstart","url":"audio/voice/male/mid_song.ogg","t":101418.5,"dur":2.32,"ta":99.81}
|
||||
{"ev":"start","t":101498.20000001788,"sid":72,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":100.47845804988661,"ta":99.889}
|
||||
{"ev":"vibrate","pattern":"[8]","t":102072.30000001192,"ta":100.463}
|
||||
{"ev":"start","t":102138.20000001788,"sid":73,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":101.14512471655327,"ta":100.529}
|
||||
{"ev":"vibrate","pattern":"[8]","t":102729.40000000596,"ta":101.121}
|
||||
{"ev":"start","t":102818.30000001192,"sid":74,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":101.81179138321994,"ta":101.209}
|
||||
{"ev":"vibrate","pattern":"[8]","t":103402.30000001192,"ta":101.793}
|
||||
{"ev":"vend","url":"audio/voice/male/mid_song.ogg","t":103767.90000000596,"reason":"kill","ta":102.159}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":104068.40000000596,"ta":102.46}
|
||||
{"ev":"vibrate","pattern":"[20]","t":104069.80000001192,"ta":102.461}
|
||||
{"ev":"start","t":104070,"sid":75,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":102.461}
|
||||
{"ev":"start","t":104070,"sid":76,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":102.461}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":104729.80000001192,"ta":103.121}
|
||||
{"ev":"vibrate","pattern":"[20]","t":104731.20000001788,"ta":103.122}
|
||||
{"ev":"start","t":104731.30000001192,"sid":77,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":103.122}
|
||||
{"ev":"start","t":104731.30000001192,"sid":78,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":103.122}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":105391.10000002384,"ta":103.782}
|
||||
{"ev":"vibrate","pattern":"[20]","t":105392.60000002384,"ta":103.784}
|
||||
{"ev":"start","t":105392.70000001788,"sid":79,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":103.784}
|
||||
{"ev":"start","t":105392.80000001192,"sid":80,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":103.784}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":630,"t":106053.20000001788,"ta":104.444}
|
||||
{"ev":"vibrate","pattern":"[20]","t":106054.70000001788,"ta":104.446}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":106054.70000001788,"ta":104.446}
|
||||
{"ev":"start","t":106054.80000001192,"sid":81,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":0,"ta":104.446}
|
||||
{"ev":"start","t":106054.80000001192,"sid":82,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":104.446}
|
||||
{"ev":"start","t":106138.30000001192,"sid":83,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":105.14512471655328,"ta":104.529}
|
||||
{"ev":"vibrate","pattern":"[8]","t":106735.30000001192,"ta":105.126}
|
||||
{"ev":"start","t":107498.40000000596,"sid":84,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":106.47845804988661,"ta":105.89}
|
||||
{"ev":"vibrate","pattern":"[8]","t":108081.40000000596,"ta":106.473}
|
||||
{"ev":"start","t":108178.20000001788,"sid":85,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":107.14512471655328,"ta":106.569}
|
||||
{"ev":"vibrate","pattern":"[8]","t":108731.30000001192,"ta":107.122}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":109367.5,"ta":107.759}
|
||||
{"ev":"vibrate","pattern":"[20]","t":109368.80000001192,"ta":107.76}
|
||||
{"ev":"start","t":109369,"sid":86,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":107.76}
|
||||
{"ev":"start","t":109369,"sid":87,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":107.76}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":110691.90000000596,"ta":109.083}
|
||||
{"ev":"vibrate","pattern":"[20]","t":110693.5,"ta":109.085}
|
||||
{"ev":"start","t":110693.70000001788,"sid":88,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":109.085}
|
||||
{"ev":"start","t":110693.70000001788,"sid":89,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":109.085}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":111352.90000000596,"ta":109.744}
|
||||
{"ev":"vibrate","pattern":"[20]","t":111354.5,"ta":109.746}
|
||||
{"ev":"vibrate","pattern":"[100]","t":111354.5,"ta":109.746}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":111354.60000002384,"ta":109.746}
|
||||
{"ev":"start","t":111354.60000002384,"sid":90,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":109.746}
|
||||
{"ev":"start","t":111354.60000002384,"sid":91,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":109.746}
|
||||
{"ev":"start","t":111498.30000001192,"sid":92,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":110.47845804988661,"ta":109.889}
|
||||
{"ev":"vibrate","pattern":"[8]","t":112064.30000001192,"ta":110.455}
|
||||
{"ev":"start","t":112178.40000000596,"sid":93,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":111.14512471655328,"ta":110.57}
|
||||
{"ev":"vibrate","pattern":"[8]","t":112738.30000001192,"ta":111.129}
|
||||
{"ev":"start","t":112818.30000001192,"sid":94,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":111.81179138321994,"ta":111.209}
|
||||
{"ev":"vibrate","pattern":"[8]","t":113394.30000001192,"ta":111.785}
|
||||
{"ev":"start","t":113498.30000001192,"sid":95,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":112.47845804988661,"ta":111.889}
|
||||
{"ev":"vibrate","pattern":"[8]","t":114067.30000001192,"ta":112.458}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":114749,"ta":113.14}
|
||||
{"ev":"vibrate","pattern":"[20]","t":114750.70000001788,"ta":113.142}
|
||||
{"ev":"start","t":114750.80000001192,"sid":96,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":113.142}
|
||||
{"ev":"start","t":114750.80000001192,"sid":97,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":113.142}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":115414,"ta":113.805}
|
||||
{"ev":"vibrate","pattern":"[20]","t":115415.30000001192,"ta":113.806}
|
||||
{"ev":"start","t":115415.5,"sid":98,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":113.807}
|
||||
{"ev":"start","t":115415.5,"sid":99,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":113.807}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":116078.90000000596,"ta":114.47}
|
||||
{"ev":"vibrate","pattern":"[20]","t":116080.30000001192,"ta":114.471}
|
||||
{"ev":"start","t":116080.40000000596,"sid":100,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":114.472}
|
||||
{"ev":"start","t":116080.40000000596,"sid":101,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":114.472}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":210,"t":116738.90000000596,"ta":115.13}
|
||||
{"ev":"vibrate","pattern":"[20]","t":116740.5,"ta":115.132}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":116740.5,"ta":115.132}
|
||||
{"ev":"start","t":116740.60000002384,"sid":102,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":0,"ta":115.132}
|
||||
{"ev":"start","t":116740.70000001788,"sid":103,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":115.132}
|
||||
{"ev":"start","t":116818.20000001788,"sid":104,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":115.81179138321994,"ta":115.209}
|
||||
{"ev":"vibrate","pattern":"[8]","t":117400.20000001788,"ta":115.791}
|
||||
{"ev":"start","t":117498.30000001192,"sid":105,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":116.47845804988661,"ta":115.889}
|
||||
{"ev":"vibrate","pattern":"[8]","t":118074.20000001788,"ta":116.465}
|
||||
{"ev":"start","t":118138.30000001192,"sid":106,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":117.14512471655327,"ta":116.529}
|
||||
{"ev":"vibrate","pattern":"[8]","t":118730.30000001192,"ta":117.121}
|
||||
{"ev":"start","t":118818.20000001788,"sid":107,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":117.81179138321994,"ta":117.209}
|
||||
{"ev":"vibrate","pattern":"[8]","t":119403.30000001192,"ta":117.794}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":120055.20000001788,"ta":118.446}
|
||||
{"ev":"vibrate","pattern":"[20]","t":120056.80000001192,"ta":118.448}
|
||||
{"ev":"start","t":120056.90000000596,"sid":108,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":118.448}
|
||||
{"ev":"start","t":120056.90000000596,"sid":109,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":118.448}
|
||||
{"ev":"fetch","url":"audio/voice/male/tut_fill.ogg","status":200,"ok":true,"ms":2,"t":120100.10000002384,"ta":118.491}
|
||||
{"ev":"vstart","url":"audio/voice/male/tut_fill.ogg","t":120104.90000000596,"dur":3.12,"ta":118.496}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":630,"t":120714.90000000596,"ta":119.106}
|
||||
{"ev":"vibrate","pattern":"[20]","t":120716.5,"ta":119.108}
|
||||
{"ev":"start","t":120716.60000002384,"sid":110,"url":"audio/sfx/dm_tomlo.ogg","layer":"sfx","dur":0.3470748299319728,"rate":1,"loop":false,"when":0,"ta":119.108}
|
||||
{"ev":"start","t":120716.60000002384,"sid":111,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":119.108}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":210,"t":121377.30000001192,"ta":119.768}
|
||||
{"ev":"vibrate","pattern":"[20]","t":121378.80000001192,"ta":119.77}
|
||||
{"ev":"start","t":121379,"sid":112,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":1,"loop":false,"when":0,"ta":119.77}
|
||||
{"ev":"start","t":121379.10000002384,"sid":113,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":119.77}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":122038.40000000596,"ta":120.43}
|
||||
{"ev":"vibrate","pattern":"[20]","t":122040.10000002384,"ta":120.431}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":122040.10000002384,"ta":120.431}
|
||||
{"ev":"start","t":122040.20000001788,"sid":114,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":120.431}
|
||||
{"ev":"start","t":122040.20000001788,"sid":115,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":120.431}
|
||||
{"ev":"start","t":122138.20000001788,"sid":116,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":121.14512471655328,"ta":120.529}
|
||||
{"ev":"start","t":122498.20000001788,"sid":117,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":121.47845804988661,"ta":120.889}
|
||||
{"ev":"vibrate","pattern":"[8]","t":122736.20000001788,"ta":121.127}
|
||||
{"ev":"start","t":122818.20000001788,"sid":118,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":121.81179138321995,"ta":121.209}
|
||||
{"ev":"vibrate","pattern":"[8]","t":123058.30000001192,"ta":121.449}
|
||||
{"ev":"start","t":123178.20000001788,"sid":119,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":122.14512471655328,"ta":121.569}
|
||||
{"ev":"vibrate","pattern":"[8]","t":123410.30000001192,"ta":121.801}
|
||||
{"ev":"start","t":123498.20000001788,"sid":120,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":122.47845804988661,"ta":121.889}
|
||||
{"ev":"vend","url":"audio/voice/male/tut_fill.ogg","t":123549.70000001788,"reason":"kill","ta":121.941}
|
||||
{"ev":"vibrate","pattern":"[8]","t":123731.20000001788,"ta":122.122}
|
||||
{"ev":"start","t":123818.30000001192,"sid":121,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":122.81179138321995,"ta":122.209}
|
||||
{"ev":"vibrate","pattern":"[8]","t":124060.30000001192,"ta":122.451}
|
||||
{"ev":"start","t":124178.30000001192,"sid":122,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":123.14512471655328,"ta":122.569}
|
||||
{"ev":"vibrate","pattern":"[8]","t":124411.20000001788,"ta":122.802}
|
||||
{"ev":"vibrate","pattern":"[8]","t":124733.30000001192,"ta":123.124}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":125355,"ta":123.746}
|
||||
{"ev":"vibrate","pattern":"[20]","t":125357.40000000596,"ta":123.749}
|
||||
{"ev":"start","t":125357.5,"sid":123,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":123.749}
|
||||
{"ev":"start","t":125357.60000002384,"sid":124,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":123.749}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":125819.20000001788,"ta":124.21}
|
||||
{"ev":"vibrate","pattern":"[20]","t":125820.5,"ta":124.212}
|
||||
{"ev":"start","t":125820.70000001788,"sid":125,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":124.212}
|
||||
{"ev":"start","t":125820.70000001788,"sid":126,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":124.212}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":126283.30000001192,"ta":124.674}
|
||||
{"ev":"vibrate","pattern":"[20]","t":126284.60000002384,"ta":124.676}
|
||||
{"ev":"start","t":126284.70000001788,"sid":127,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":124.676}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":126746.30000001192,"ta":125.137}
|
||||
{"ev":"vibrate","pattern":"[20]","t":126747.80000001192,"ta":125.139}
|
||||
{"ev":"start","t":126747.80000001192,"sid":128,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":125.139}
|
||||
{"ev":"start","t":126747.90000000596,"sid":129,"url":"audio/sfx/dm_accent.ogg","layer":"sfx","dur":0.1726984126984127,"rate":1,"loop":false,"when":0,"ta":125.139}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":126898.20000001788,"ta":125.289}
|
||||
{"ev":"start","t":126898.30000001192,"sid":130,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":125.289}
|
||||
{"ev":"gesture","type":"tap","x":65,"y":630,"t":127211.5,"ta":125.603}
|
||||
{"ev":"vibrate","pattern":"[20]","t":127212.90000000596,"ta":125.604}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":127212.90000000596,"ta":125.604}
|
||||
{"ev":"start","t":127213,"sid":131,"url":"audio/sfx/dm_snare.ogg","layer":"sfx","dur":0.21709750566893424,"rate":1,"loop":false,"when":0,"ta":125.604}
|
||||
{"ev":"start","t":127213,"sid":132,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":125.604}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":630,"t":127676.90000000596,"ta":126.068}
|
||||
{"ev":"vibrate","pattern":"[20]","t":127678.30000001192,"ta":126.069}
|
||||
{"ev":"start","t":127678.40000000596,"sid":133,"url":"audio/sfx/inst_kick.ogg","layer":"sfx","dur":0.27709750566893426,"rate":1,"loop":false,"when":0,"ta":126.07}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":127898.20000001788,"ta":126.289}
|
||||
{"ev":"start","t":127898.40000000596,"sid":134,"url":"audio/sfx/dm_hat.ogg","layer":"sfx","dur":0.06709750566893424,"rate":0.5,"loop":false,"when":0,"ta":126.29}
|
||||
{"ev":"gesture","type":"tap","x":325,"y":210,"t":128141.60000002384,"ta":126.533}
|
||||
{"ev":"vibrate","pattern":"[20]","t":128143,"ta":126.534}
|
||||
{"ev":"start","t":128143.10000002384,"sid":135,"url":"audio/sfx/dm_crash.ogg","layer":"sfx","dur":1.3,"rate":1,"loop":false,"when":0,"ta":126.534}
|
||||
{"ev":"vibrate","pattern":"[100]","t":128378.80000001192,"ta":126.77}
|
||||
{"ev":"vibrate","pattern":"[100]","t":128378.80000001192,"ta":126.77}
|
||||
{"ev":"vibrate","pattern":"[20,40,20]","t":128378.90000000596,"ta":126.77}
|
||||
{"ev":"fetch","url":"audio/voice/male/grade_a.ogg","status":200,"ok":true,"ms":2,"t":128380.90000000596,"ta":126.772}
|
||||
{"ev":"vstart","url":"audio/voice/male/grade_a.ogg","t":128386.70000001788,"dur":4.4,"ta":126.778}
|
||||
{"ev":"stop","t":129078.70000001788,"sid":35,"when":0,"ta":127.47}
|
||||
{"ev":"vend","url":"audio/voice/male/grade_a.ogg","t":132952.90000000596,"reason":"kill","ta":131.344}
|
||||
{"ev":"fetch","url":"audio/voice/male/new_best_combo.ogg","status":200,"ok":true,"ms":2,"t":132954.80000001192,"ta":131.346}
|
||||
{"ev":"vstart","url":"audio/voice/male/new_best_combo.ogg","t":132958.10000002384,"dur":1.84,"ta":131.349}
|
||||
{"ev":"vend","url":"audio/voice/male/new_best_combo.ogg","t":134833.20000001788,"reason":"kill","ta":133.224}
|
||||
{"ev":"fetch","url":"audio/voice/male/unlock_song2.ogg","status":200,"ok":true,"ms":1,"t":134834.90000000596,"ta":133.226}
|
||||
{"ev":"vstart","url":"audio/voice/male/unlock_song2.ogg","t":134838.60000002384,"dur":2.48,"ta":133.23}
|
||||
{"ev":"vend","url":"audio/voice/male/unlock_song2.ogg","t":137549.90000000596,"reason":"kill","ta":135.941}
|
||||
{"ev":"fetch","url":"audio/voice/male/restart.ogg","status":200,"ok":true,"ms":2,"t":137551.60000002384,"ta":135.943}
|
||||
{"ev":"vstart","url":"audio/voice/male/restart.ogg","t":137556.40000000596,"dur":4.08,"ta":135.948}
|
||||
{"ev":"vend","url":"audio/voice/male/restart.ogg","t":141659.30000001192,"reason":"kill","ta":140.05}
|
||||
{"ev":"start","t":141659.60000002384,"sid":136,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":140.051}
|
||||
{"ev":"recstop","t":293522.90000000596,"ta":291.914}
|
||||
Binary file not shown.
@@ -0,0 +1,391 @@
|
||||
# rhythm 实时会话 transcript
|
||||
|
||||
- `[ -0.09s]` **GESTURE** tap @(195,422)
|
||||
- `[ 0.00s]` REC 开始 (audio/webm;codecs=opus)
|
||||
- `[ 0.07s]` VOICE ▶ welcome (dur 8.24s)
|
||||
- `[ 0.32s]` BGM ♪ track90 (loop)
|
||||
- `[ 1.21s]` **GESTURE** tap @(195,422)
|
||||
- `[ 1.21s]` VIBRATE [20]
|
||||
- `[ 1.71s]` VOICE ■ welcome (kill)
|
||||
- `[ 1.71s]` VOICE ▶ tut_map (dur 18.04s)
|
||||
- `[ 1.71s]` VERDICT welcome: **TRUNCATED** sim=0.2667
|
||||
- 期望: 欢迎来到节拍行者。今天你是乐队的鼓手,整面屏幕都是你的鼓。
|
||||
- 听到: 欢迎来到。
|
||||
- `[ 2.58s]` **GESTURE** tap @(195,422)
|
||||
- `[ 2.58s]` VIBRATE [20]
|
||||
- `[ 3.08s]` VOICE ■ tut_map (kill)
|
||||
- `[ 3.08s]` VOICE ▶ tut_probe (dur 3.84s)
|
||||
- `[ 3.08s]` VERDICT tut_map: **TRUNCATED** sim=0.0377
|
||||
- 期望: 先认识你的鼓。屏幕横着分三列,左边、中间、右边;竖着分两行,上面清亮,下面低沉。随便摸一摸,听到哪面鼓,我就告诉你它在哪。
|
||||
- 听到: 写写认。
|
||||
- `[ 3.94s]` **GESTURE** tap @(195,422)
|
||||
- `[ 3.95s]` VIBRATE [20]
|
||||
- `[ 4.45s]` VOICE ■ tut_probe (kill)
|
||||
- `[ 4.45s]` VERDICT tut_probe: **TRUNCATED** sim=0.4
|
||||
- 期望: 摸到三个不同的地方,我们就开始。
|
||||
- 听到: 嗯,摸到三个布。
|
||||
- `[ 5.31s]` **GESTURE** tap @(65,210)
|
||||
- `[ 5.31s]` VIBRATE [20]
|
||||
- `[ 5.31s]` SFX ♪ dm_hat
|
||||
- `[ 5.32s]` VOICE ▶ zone_tl (dur 1.6s)
|
||||
- `[ 6.92s]` VOICE ■ zone_tl (kill)
|
||||
- `[ 6.92s]` VERDICT zone_tl: **OK** sim=0.75
|
||||
- 期望: 左上,踩镲。
|
||||
- 听到: 左上踩草。
|
||||
- `[ 7.98s]` **GESTURE** tap @(325,210)
|
||||
- `[ 7.99s]` VIBRATE [20]
|
||||
- `[ 7.99s]` SFX ♪ dm_crash
|
||||
- `[ 7.99s]` VOICE ▶ zone_tr (dur 1.76s)
|
||||
- `[ 9.87s]` VOICE ■ zone_tr (kill)
|
||||
- `[ 9.87s]` VERDICT zone_tr: **MISMATCH** sim=0.25
|
||||
- 期望: 右上,吊镲。
|
||||
- 听到: 有上调查。
|
||||
- `[ 10.65s]` **GESTURE** tap @(65,630)
|
||||
- `[ 10.66s]` VIBRATE [20]
|
||||
- `[ 10.66s]` SFX ♪ dm_snare
|
||||
- `[ 10.66s]` VOICE ▶ zone_bl (dur 2s)
|
||||
- `[ 13.00s]` VOICE ■ zone_bl (kill)
|
||||
- `[ 13.00s]` VERDICT zone_bl: **OK** sim=1
|
||||
- 期望: 左下,军鼓。
|
||||
- 听到: 左下军鼓。
|
||||
- `[ 13.01s]` VOICE ▶ tut_z_kick (dur 7.28s)
|
||||
- `[ 20.55s]` VOICE ■ tut_z_kick (kill)
|
||||
- `[ 20.55s]` VERDICT tut_z_kick: **OK** sim=0.9565
|
||||
- 期望: 下面正中间,是底鼓,你的家。先听四下数拍,然后跟着我敲。
|
||||
- 听到: 下面正中间是题鼓,你的家先听四下数拍,然后跟着我敲。
|
||||
- `[ 21.43s]` SFX ♪ dm_accent
|
||||
- `[ 21.98s]` VIBRATE [8]
|
||||
- `[ 22.07s]` SFX ♪ dm_accent
|
||||
- `[ 22.66s]` VIBRATE [8]
|
||||
- `[ 22.75s]` SFX ♪ dm_accent
|
||||
- `[ 23.31s]` VIBRATE [8]
|
||||
- `[ 23.43s]` SFX ♪ dm_accent
|
||||
- `[ 23.99s]` VIBRATE [8]
|
||||
- `[ 24.07s]` SFX ♪ inst_kick
|
||||
- `[ 24.67s]` VIBRATE [8]
|
||||
- `[ 27.30s]` **GESTURE** tap @(195,630)
|
||||
- `[ 27.30s]` VIBRATE [20]
|
||||
- `[ 27.30s]` SFX ♪ inst_kick
|
||||
- `[ 27.30s]` SFX ♪ dm_accent
|
||||
- `[ 28.08s]` VOICE ▶ tut_z_sides (dur 5.2s)
|
||||
- `[ 28.08s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 33.29s]` VOICE ■ tut_z_sides (kill)
|
||||
- `[ 33.29s]` VERDICT tut_z_sides: **OK** sim=0.8824
|
||||
- 期望: 左下是军鼓,右下是低嗵。一左一右,跟着打。
|
||||
- 听到: 左下是军鼓,右下是敌通,一左一右跟着打。
|
||||
- `[ 34.73s]` SFX ♪ dm_accent
|
||||
- `[ 35.32s]` VIBRATE [8]
|
||||
- `[ 35.41s]` SFX ♪ dm_accent
|
||||
- `[ 35.99s]` VIBRATE [8]
|
||||
- `[ 36.05s]` SFX ♪ dm_accent
|
||||
- `[ 36.65s]` VIBRATE [8]
|
||||
- `[ 36.73s]` SFX ♪ dm_accent
|
||||
- `[ 37.32s]` VIBRATE [8]
|
||||
- `[ 37.41s]` SFX ♪ dm_snare
|
||||
- `[ 38.00s]` VIBRATE [8]
|
||||
- `[ 38.73s]` SFX ♪ dm_tomlo
|
||||
- `[ 39.33s]` VIBRATE [8]
|
||||
- `[ 40.64s]` **GESTURE** tap @(65,630)
|
||||
- `[ 40.64s]` VIBRATE [20]
|
||||
- `[ 40.64s]` SFX ♪ dm_snare
|
||||
- `[ 40.64s]` SFX ♪ dm_accent
|
||||
- `[ 41.96s]` **GESTURE** tap @(325,630)
|
||||
- `[ 41.96s]` VIBRATE [20]
|
||||
- `[ 41.96s]` SFX ♪ dm_tomlo
|
||||
- `[ 41.96s]` SFX ♪ dm_accent
|
||||
- `[ 42.79s]` VOICE ▶ tut_z_patt (dur 9.68s)
|
||||
- `[ 42.79s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 52.56s]` VOICE ■ tut_z_patt (kill)
|
||||
- `[ 52.56s]` VERDICT tut_z_patt: **OK** sim=0.7692
|
||||
- 期望: 上面一排更清亮。左上踩镲,上中高嗵,右上吊镲。听这一句,三个音。
|
||||
- 听到: 上面一白更清亮,左上采茶,上中高通,右上调查,听这一句三个音。
|
||||
- `[ 53.41s]` SFX ♪ dm_accent
|
||||
- `[ 53.99s]` VIBRATE [8]
|
||||
- `[ 54.05s]` SFX ♪ dm_accent
|
||||
- `[ 54.65s]` VIBRATE [8]
|
||||
- `[ 54.73s]` SFX ♪ dm_accent
|
||||
- `[ 55.32s]` VIBRATE [8]
|
||||
- `[ 55.41s]` SFX ♪ dm_accent
|
||||
- `[ 55.99s]` VIBRATE [8]
|
||||
- `[ 56.09s]` SFX ♪ dm_hat
|
||||
- `[ 56.66s]` VIBRATE [8]
|
||||
- `[ 56.73s]` SFX ♪ dm_tomhi
|
||||
- `[ 57.32s]` VIBRATE [8]
|
||||
- `[ 57.41s]` SFX ♪ dm_crash
|
||||
- `[ 57.99s]` VIBRATE [8]
|
||||
- `[ 59.28s]` **GESTURE** tap @(65,210)
|
||||
- `[ 59.28s]` VIBRATE [20]
|
||||
- `[ 59.28s]` SFX ♪ dm_hat
|
||||
- `[ 59.28s]` SFX ♪ dm_accent
|
||||
- `[ 59.94s]` **GESTURE** tap @(195,210)
|
||||
- `[ 59.94s]` VIBRATE [20]
|
||||
- `[ 59.94s]` SFX ♪ dm_tomhi
|
||||
- `[ 59.94s]` SFX ♪ dm_accent
|
||||
- `[ 60.68s]` **GESTURE** tap @(325,210)
|
||||
- `[ 60.68s]` VIBRATE [20]
|
||||
- `[ 60.68s]` SFX ♪ dm_crash
|
||||
- `[ 60.68s]` SFX ♪ dm_accent
|
||||
- `[ 61.41s]` VOICE ▶ tut_done (dur 2.48s)
|
||||
- `[ 61.41s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 64.13s]` VOICE ■ tut_done (kill)
|
||||
- `[ 64.13s]` VERDICT tut_done: **OK** sim=1
|
||||
- 期望: 很好,演出开始。
|
||||
- 听到: 很好,演出开始。
|
||||
- `[ 64.13s]` BGM ♪ track90 (loop)
|
||||
- `[ 64.57s]` SFX ♪ inst_kick
|
||||
- `[ 65.13s]` VIBRATE [8]
|
||||
- `[ 65.21s]` SFX ♪ inst_kick
|
||||
- `[ 65.81s]` VIBRATE [8]
|
||||
- `[ 65.89s]` SFX ♪ inst_kick
|
||||
- `[ 66.46s]` VIBRATE [8]
|
||||
- `[ 66.57s]` SFX ♪ inst_kick
|
||||
- `[ 67.13s]` VIBRATE [8]
|
||||
- `[ 67.21s]` SFX ♪ inst_kick
|
||||
- `[ 67.79s]` VIBRATE [8]
|
||||
- `[ 67.80s]` **GESTURE** tap @(195,630)
|
||||
- `[ 67.80s]` VIBRATE [20]
|
||||
- `[ 67.81s]` SFX ♪ inst_kick
|
||||
- `[ 67.81s]` VOICE ▶ gd_answer (dur 1.52s)
|
||||
- `[ 67.81s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 68.47s]` **GESTURE** tap @(195,630)
|
||||
- `[ 68.47s]` VIBRATE [20]
|
||||
- `[ 68.47s]` SFX ♪ inst_kick
|
||||
- `[ 68.57s]` SFX ♪ inst_kick
|
||||
- `[ 69.13s]` VIBRATE [8]
|
||||
- `[ 69.42s]` VOICE ■ gd_answer (kill)
|
||||
- `[ 69.42s]` VERDICT gd_answer: **OK** sim=1
|
||||
- 期望: 现在跟着我打。
|
||||
- 听到: 现在跟着我打。
|
||||
- `[ 70.93s]` VIBRATE [60,40,60]
|
||||
- `[ 70.93s]` SFX ♪ dm_hat
|
||||
- `[ 71.78s]` **GESTURE** tap @(195,630)
|
||||
- `[ 71.78s]` VIBRATE [20]
|
||||
- `[ 71.78s]` SFX ♪ inst_kick
|
||||
- `[ 71.78s]` SFX ♪ dm_accent
|
||||
- `[ 75.21s]` SFX ♪ dm_snare
|
||||
- `[ 75.80s]` VIBRATE [8]
|
||||
- `[ 76.57s]` SFX ♪ dm_tomlo
|
||||
- `[ 77.12s]` VIBRATE [8]
|
||||
- `[ 78.47s]` **GESTURE** tap @(65,630)
|
||||
- `[ 78.47s]` VIBRATE [20]
|
||||
- `[ 78.47s]` SFX ♪ dm_snare
|
||||
- `[ 78.47s]` SFX ♪ dm_accent
|
||||
- `[ 79.80s]` **GESTURE** tap @(325,630)
|
||||
- `[ 79.80s]` VIBRATE [20]
|
||||
- `[ 79.80s]` VIBRATE [20,40,20]
|
||||
- `[ 79.80s]` SFX ♪ dm_tomlo
|
||||
- `[ 79.80s]` SFX ♪ dm_accent
|
||||
- `[ 83.21s]` SFX ♪ inst_kick
|
||||
- `[ 83.79s]` VIBRATE [8]
|
||||
- `[ 83.89s]` SFX ♪ inst_kick
|
||||
- `[ 84.46s]` VIBRATE [8]
|
||||
- `[ 84.53s]` SFX ♪ dm_snare
|
||||
- `[ 85.13s]` VIBRATE [8]
|
||||
- `[ 86.42s]` **GESTURE** tap @(195,630)
|
||||
- `[ 86.42s]` VIBRATE [20]
|
||||
- `[ 86.42s]` SFX ♪ inst_kick
|
||||
- `[ 86.42s]` SFX ♪ dm_accent
|
||||
- `[ 87.08s]` **GESTURE** tap @(195,630)
|
||||
- `[ 87.08s]` VIBRATE [20]
|
||||
- `[ 87.08s]` SFX ♪ inst_kick
|
||||
- `[ 87.08s]` SFX ♪ dm_accent
|
||||
- `[ 87.74s]` **GESTURE** tap @(65,630)
|
||||
- `[ 87.74s]` VIBRATE [20]
|
||||
- `[ 87.74s]` VIBRATE [20,40,20]
|
||||
- `[ 87.74s]` SFX ♪ dm_snare
|
||||
- `[ 87.74s]` SFX ♪ dm_accent
|
||||
- `[ 91.21s]` SFX ♪ dm_snare
|
||||
- `[ 91.80s]` VIBRATE [8]
|
||||
- `[ 91.89s]` SFX ♪ dm_tomlo
|
||||
- `[ 92.46s]` VIBRATE [8]
|
||||
- `[ 92.57s]` SFX ♪ inst_kick
|
||||
- `[ 93.12s]` VIBRATE [8]
|
||||
- `[ 94.44s]` **GESTURE** tap @(65,630)
|
||||
- `[ 94.44s]` VIBRATE [20]
|
||||
- `[ 94.44s]` SFX ♪ dm_snare
|
||||
- `[ 94.44s]` SFX ♪ dm_accent
|
||||
- `[ 95.10s]` **GESTURE** tap @(325,630)
|
||||
- `[ 95.10s]` VIBRATE [20]
|
||||
- `[ 95.10s]` SFX ♪ dm_tomlo
|
||||
- `[ 95.10s]` SFX ♪ dm_accent
|
||||
- `[ 95.76s]` **GESTURE** tap @(195,630)
|
||||
- `[ 95.76s]` VIBRATE [20]
|
||||
- `[ 95.76s]` VIBRATE [20,40,20]
|
||||
- `[ 95.76s]` SFX ♪ inst_kick
|
||||
- `[ 95.76s]` SFX ♪ dm_accent
|
||||
- `[ 99.21s]` SFX ♪ inst_kick
|
||||
- `[ 99.79s]` VIBRATE [8]
|
||||
- `[ 99.81s]` VOICE ▶ mid_song (dur 2.32s)
|
||||
- `[ 99.81s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 99.89s]` SFX ♪ dm_snare
|
||||
- `[ 100.46s]` VIBRATE [8]
|
||||
- `[ 100.53s]` SFX ♪ inst_kick
|
||||
- `[ 101.12s]` VIBRATE [8]
|
||||
- `[ 101.21s]` SFX ♪ dm_tomlo
|
||||
- `[ 101.79s]` VIBRATE [8]
|
||||
- `[ 102.16s]` VOICE ■ mid_song (kill)
|
||||
- `[ 102.16s]` VERDICT mid_song: **OK** sim=0.8
|
||||
- 期望: 过半了,保持。
|
||||
- 听到: 过磅了,保持。
|
||||
- `[ 102.46s]` **GESTURE** tap @(195,630)
|
||||
- `[ 102.46s]` VIBRATE [20]
|
||||
- `[ 102.46s]` SFX ♪ inst_kick
|
||||
- `[ 102.46s]` SFX ♪ dm_accent
|
||||
- `[ 103.12s]` **GESTURE** tap @(65,630)
|
||||
- `[ 103.12s]` VIBRATE [20]
|
||||
- `[ 103.12s]` SFX ♪ dm_snare
|
||||
- `[ 103.12s]` SFX ♪ dm_accent
|
||||
- `[ 103.78s]` **GESTURE** tap @(195,630)
|
||||
- `[ 103.78s]` VIBRATE [20]
|
||||
- `[ 103.78s]` SFX ♪ inst_kick
|
||||
- `[ 103.78s]` SFX ♪ dm_accent
|
||||
- `[ 104.44s]` **GESTURE** tap @(325,630)
|
||||
- `[ 104.45s]` VIBRATE [20]
|
||||
- `[ 104.45s]` VIBRATE [20,40,20]
|
||||
- `[ 104.45s]` SFX ♪ dm_tomlo
|
||||
- `[ 104.45s]` SFX ♪ dm_accent
|
||||
- `[ 104.53s]` SFX ♪ dm_hat
|
||||
- `[ 105.13s]` VIBRATE [8]
|
||||
- `[ 105.89s]` SFX ♪ dm_snare
|
||||
- `[ 106.47s]` VIBRATE [8]
|
||||
- `[ 106.57s]` SFX ♪ inst_kick
|
||||
- `[ 107.12s]` VIBRATE [8]
|
||||
- `[ 107.76s]` **GESTURE** tap @(65,210)
|
||||
- `[ 107.76s]` VIBRATE [20]
|
||||
- `[ 107.76s]` SFX ♪ dm_hat
|
||||
- `[ 107.76s]` SFX ♪ dm_accent
|
||||
- `[ 109.08s]` **GESTURE** tap @(65,630)
|
||||
- `[ 109.08s]` VIBRATE [20]
|
||||
- `[ 109.08s]` SFX ♪ dm_snare
|
||||
- `[ 109.08s]` SFX ♪ dm_accent
|
||||
- `[ 109.74s]` **GESTURE** tap @(195,630)
|
||||
- `[ 109.75s]` VIBRATE [20]
|
||||
- `[ 109.75s]` VIBRATE [100]
|
||||
- `[ 109.75s]` VIBRATE [20,40,20]
|
||||
- `[ 109.75s]` SFX ♪ inst_kick
|
||||
- `[ 109.75s]` SFX ♪ dm_accent
|
||||
- `[ 109.89s]` SFX ♪ inst_kick
|
||||
- `[ 110.45s]` VIBRATE [8]
|
||||
- `[ 110.57s]` SFX ♪ dm_hat
|
||||
- `[ 111.13s]` VIBRATE [8]
|
||||
- `[ 111.21s]` SFX ♪ inst_kick
|
||||
- `[ 111.78s]` VIBRATE [8]
|
||||
- `[ 111.89s]` SFX ♪ dm_crash
|
||||
- `[ 112.46s]` VIBRATE [8]
|
||||
- `[ 113.14s]` **GESTURE** tap @(195,630)
|
||||
- `[ 113.14s]` VIBRATE [20]
|
||||
- `[ 113.14s]` SFX ♪ inst_kick
|
||||
- `[ 113.14s]` SFX ♪ dm_accent
|
||||
- `[ 113.81s]` **GESTURE** tap @(65,210)
|
||||
- `[ 113.81s]` VIBRATE [20]
|
||||
- `[ 113.81s]` SFX ♪ dm_hat
|
||||
- `[ 113.81s]` SFX ♪ dm_accent
|
||||
- `[ 114.47s]` **GESTURE** tap @(195,630)
|
||||
- `[ 114.47s]` VIBRATE [20]
|
||||
- `[ 114.47s]` SFX ♪ inst_kick
|
||||
- `[ 114.47s]` SFX ♪ dm_accent
|
||||
- `[ 115.13s]` **GESTURE** tap @(325,210)
|
||||
- `[ 115.13s]` VIBRATE [20]
|
||||
- `[ 115.13s]` VIBRATE [20,40,20]
|
||||
- `[ 115.13s]` SFX ♪ dm_crash
|
||||
- `[ 115.13s]` SFX ♪ dm_accent
|
||||
- `[ 115.21s]` SFX ♪ dm_snare
|
||||
- `[ 115.79s]` VIBRATE [8]
|
||||
- `[ 115.89s]` SFX ♪ dm_tomlo
|
||||
- `[ 116.47s]` VIBRATE [8]
|
||||
- `[ 116.53s]` SFX ♪ dm_hat
|
||||
- `[ 117.12s]` VIBRATE [8]
|
||||
- `[ 117.21s]` SFX ♪ inst_kick
|
||||
- `[ 117.79s]` VIBRATE [8]
|
||||
- `[ 118.45s]` **GESTURE** tap @(65,630)
|
||||
- `[ 118.45s]` VIBRATE [20]
|
||||
- `[ 118.45s]` SFX ♪ dm_snare
|
||||
- `[ 118.45s]` SFX ♪ dm_accent
|
||||
- `[ 118.50s]` VOICE ▶ tut_fill (dur 3.12s)
|
||||
- `[ 118.50s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 119.11s]` **GESTURE** tap @(325,630)
|
||||
- `[ 119.11s]` VIBRATE [20]
|
||||
- `[ 119.11s]` SFX ♪ dm_tomlo
|
||||
- `[ 119.11s]` SFX ♪ dm_accent
|
||||
- `[ 119.77s]` **GESTURE** tap @(65,210)
|
||||
- `[ 119.77s]` VIBRATE [20]
|
||||
- `[ 119.77s]` SFX ♪ dm_hat
|
||||
- `[ 119.77s]` SFX ♪ dm_accent
|
||||
- `[ 120.43s]` **GESTURE** tap @(195,630)
|
||||
- `[ 120.43s]` VIBRATE [20]
|
||||
- `[ 120.43s]` VIBRATE [20,40,20]
|
||||
- `[ 120.43s]` SFX ♪ inst_kick
|
||||
- `[ 120.43s]` SFX ♪ dm_accent
|
||||
- `[ 120.53s]` SFX ♪ inst_kick
|
||||
- `[ 120.89s]` SFX ♪ inst_kick
|
||||
- `[ 121.13s]` VIBRATE [8]
|
||||
- `[ 121.21s]` SFX ♪ inst_kick
|
||||
- `[ 121.45s]` VIBRATE [8]
|
||||
- `[ 121.57s]` SFX ♪ dm_snare
|
||||
- `[ 121.80s]` VIBRATE [8]
|
||||
- `[ 121.89s]` SFX ♪ dm_snare
|
||||
- `[ 121.94s]` VOICE ■ tut_fill (kill)
|
||||
- `[ 121.94s]` VERDICT tut_fill: **OK** sim=0.9167
|
||||
- 期望: 最后有一段加花,跟着我连打。
|
||||
- 听到: 最后有一段佳花跟着我连打。
|
||||
- `[ 122.12s]` VIBRATE [8]
|
||||
- `[ 122.21s]` SFX ♪ inst_kick
|
||||
- `[ 122.45s]` VIBRATE [8]
|
||||
- `[ 122.57s]` SFX ♪ dm_crash
|
||||
- `[ 122.80s]` VIBRATE [8]
|
||||
- `[ 123.12s]` VIBRATE [8]
|
||||
- `[ 123.75s]` **GESTURE** tap @(195,630)
|
||||
- `[ 123.75s]` VIBRATE [20]
|
||||
- `[ 123.75s]` SFX ♪ inst_kick
|
||||
- `[ 123.75s]` SFX ♪ dm_accent
|
||||
- `[ 124.21s]` **GESTURE** tap @(195,630)
|
||||
- `[ 124.21s]` VIBRATE [20]
|
||||
- `[ 124.21s]` SFX ♪ inst_kick
|
||||
- `[ 124.21s]` SFX ♪ dm_accent
|
||||
- `[ 124.67s]` **GESTURE** tap @(195,630)
|
||||
- `[ 124.68s]` VIBRATE [20]
|
||||
- `[ 124.68s]` SFX ♪ inst_kick
|
||||
- `[ 125.14s]` **GESTURE** tap @(65,630)
|
||||
- `[ 125.14s]` VIBRATE [20]
|
||||
- `[ 125.14s]` SFX ♪ dm_snare
|
||||
- `[ 125.14s]` SFX ♪ dm_accent
|
||||
- `[ 125.29s]` VIBRATE [60,40,60]
|
||||
- `[ 125.29s]` SFX ♪ dm_hat
|
||||
- `[ 125.60s]` **GESTURE** tap @(65,630)
|
||||
- `[ 125.60s]` VIBRATE [20]
|
||||
- `[ 125.60s]` VIBRATE [60,40,60]
|
||||
- `[ 125.60s]` SFX ♪ dm_snare
|
||||
- `[ 125.60s]` SFX ♪ dm_hat
|
||||
- `[ 126.07s]` **GESTURE** tap @(195,630)
|
||||
- `[ 126.07s]` VIBRATE [20]
|
||||
- `[ 126.07s]` SFX ♪ inst_kick
|
||||
- `[ 126.29s]` VIBRATE [60,40,60]
|
||||
- `[ 126.29s]` SFX ♪ dm_hat
|
||||
- `[ 126.53s]` **GESTURE** tap @(325,210)
|
||||
- `[ 126.53s]` VIBRATE [20]
|
||||
- `[ 126.53s]` SFX ♪ dm_crash
|
||||
- `[ 126.77s]` VIBRATE [100]
|
||||
- `[ 126.77s]` VIBRATE [100]
|
||||
- `[ 126.77s]` VIBRATE [20,40,20]
|
||||
- `[ 126.78s]` VOICE ▶ grade_a (dur 4.4s)
|
||||
- `[ 126.78s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 131.34s]` VOICE ■ grade_a (kill)
|
||||
- `[ 131.34s]` VERDICT grade_a: **OK** sim=0.6429
|
||||
- 期望: A 级!准确率超过八成五,非常出色。
|
||||
- 听到: 第G准确率超过8乘5,非常出色。
|
||||
- `[ 131.35s]` VOICE ▶ new_best_combo (dur 1.84s)
|
||||
- `[ 133.22s]` VOICE ■ new_best_combo (kill)
|
||||
- `[ 133.22s]` VERDICT new_best_combo: **MISMATCH** sim=0.4
|
||||
- 期望: 新连击纪录!
|
||||
- 听到: 新联机记录。
|
||||
- `[ 133.23s]` VOICE ▶ unlock_song2 (dur 2.48s)
|
||||
- `[ 135.94s]` VOICE ■ unlock_song2 (kill)
|
||||
- `[ 135.94s]` VERDICT unlock_song2: **OK** sim=0.9333
|
||||
- 期望: 新曲目解锁,追风!
|
||||
- 听到: 录新曲目解锁追风。
|
||||
- `[ 135.95s]` VOICE ▶ restart (dur 4.08s)
|
||||
- `[ 140.05s]` VOICE ■ restart (kill)
|
||||
- `[ 140.05s]` VERDICT restart: **OK** sim=0.75
|
||||
- 期望: 单击再来一遍,右滑下一首,下滑回大厅。
|
||||
- 听到: 但气再来一遍,又滑下一手下滑回大厅。
|
||||
- `[ 140.05s]` BGM ♪ menu (loop)
|
||||
@@ -0,0 +1,451 @@
|
||||
{
|
||||
"game": "rhythm",
|
||||
"settings": {
|
||||
"voice": "male",
|
||||
"guide": "full",
|
||||
"speed": 1,
|
||||
"bgm": 1
|
||||
},
|
||||
"outdir": "/home/xsl/AutoVideo/SoundGame/web/harness/live/out/rhythm-20260914102057",
|
||||
"segs": [
|
||||
{
|
||||
"idx": 0,
|
||||
"voiceId": "welcome",
|
||||
"t0": 0.066,
|
||||
"t1": 1.71,
|
||||
"dur": 8.24,
|
||||
"expEnd": 8.306,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": "TRUNCATED",
|
||||
"heard": "欢迎来到。",
|
||||
"similarity": 0.2667
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"voiceId": "tut_map",
|
||||
"t0": 1.71,
|
||||
"t1": 3.078,
|
||||
"dur": 18.04,
|
||||
"expEnd": 19.75,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": "TRUNCATED",
|
||||
"heard": "写写认。",
|
||||
"similarity": 0.0377
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"voiceId": "tut_probe",
|
||||
"t0": 3.078,
|
||||
"t1": 4.446,
|
||||
"dur": 3.84,
|
||||
"expEnd": 6.918,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": "TRUNCATED",
|
||||
"heard": "嗯,摸到三个布。",
|
||||
"similarity": 0.4
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"voiceId": "zone_tl",
|
||||
"t0": 5.319,
|
||||
"t1": 6.919,
|
||||
"dur": 1.6,
|
||||
"expEnd": 6.919,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "左上踩草。",
|
||||
"similarity": 0.75
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"voiceId": "zone_tr",
|
||||
"t0": 7.992,
|
||||
"t1": 9.867,
|
||||
"dur": 1.76,
|
||||
"expEnd": 9.752,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "MISMATCH",
|
||||
"heard": "有上调查。",
|
||||
"similarity": 0.25
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"voiceId": "zone_bl",
|
||||
"t0": 10.66,
|
||||
"t1": 13.002,
|
||||
"dur": 2,
|
||||
"expEnd": 12.66,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "左下军鼓。",
|
||||
"similarity": 1
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"voiceId": "tut_z_kick",
|
||||
"t0": 13.011,
|
||||
"t1": 20.548,
|
||||
"dur": 7.28,
|
||||
"expEnd": 20.291,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "下面正中间是题鼓,你的家先听四下数拍,然后跟着我敲。",
|
||||
"similarity": 0.9565
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"voiceId": "tut_z_sides",
|
||||
"t0": 28.077,
|
||||
"t1": 33.294,
|
||||
"dur": 5.2,
|
||||
"expEnd": 33.277,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "左下是军鼓,右下是敌通,一左一右跟着打。",
|
||||
"similarity": 0.8824
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"voiceId": "tut_z_patt",
|
||||
"t0": 42.786,
|
||||
"t1": 52.565,
|
||||
"dur": 9.68,
|
||||
"expEnd": 52.466,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "上面一白更清亮,左上采茶,上中高通,右上调查,听这一句三个音。",
|
||||
"similarity": 0.7692
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"voiceId": "tut_done",
|
||||
"t0": 61.412,
|
||||
"t1": 64.128,
|
||||
"dur": 2.48,
|
||||
"expEnd": 63.892,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "很好,演出开始。",
|
||||
"similarity": 1
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"voiceId": "gd_answer",
|
||||
"t0": 67.814,
|
||||
"t1": 69.422,
|
||||
"dur": 1.52,
|
||||
"expEnd": 69.334,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "现在跟着我打。",
|
||||
"similarity": 1
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"voiceId": "mid_song",
|
||||
"t0": 99.81,
|
||||
"t1": 102.159,
|
||||
"dur": 2.32,
|
||||
"expEnd": 102.13,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "过磅了,保持。",
|
||||
"similarity": 0.8
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"voiceId": "tut_fill",
|
||||
"t0": 118.496,
|
||||
"t1": 121.941,
|
||||
"dur": 3.12,
|
||||
"expEnd": 121.616,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "最后有一段佳花跟着我连打。",
|
||||
"similarity": 0.9167
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"voiceId": "grade_a",
|
||||
"t0": 126.778,
|
||||
"t1": 131.344,
|
||||
"dur": 4.4,
|
||||
"expEnd": 131.178,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "第G准确率超过8乘5,非常出色。",
|
||||
"similarity": 0.6429
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"voiceId": "new_best_combo",
|
||||
"t0": 131.349,
|
||||
"t1": 133.224,
|
||||
"dur": 1.84,
|
||||
"expEnd": 133.189,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "MISMATCH",
|
||||
"heard": "新联机记录。",
|
||||
"similarity": 0.4
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"voiceId": "unlock_song2",
|
||||
"t0": 133.23,
|
||||
"t1": 135.941,
|
||||
"dur": 2.48,
|
||||
"expEnd": 135.71,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "录新曲目解锁追风。",
|
||||
"similarity": 0.9333
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"voiceId": "restart",
|
||||
"t0": 135.948,
|
||||
"t1": 140.05,
|
||||
"dur": 4.08,
|
||||
"expEnd": 140.028,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": "OK",
|
||||
"heard": "但气再来一遍,又滑下一手下滑回大厅。",
|
||||
"similarity": 0.75
|
||||
}
|
||||
],
|
||||
"rows": [
|
||||
{
|
||||
"t0": 0.066,
|
||||
"t1": 1.71,
|
||||
"voiceId": "welcome",
|
||||
"expected": "欢迎来到节拍行者。今天你是乐队的鼓手,整面屏幕都是你的鼓。",
|
||||
"heard": "欢迎来到。",
|
||||
"similarity": 0.2667,
|
||||
"verdict": "TRUNCATED"
|
||||
},
|
||||
{
|
||||
"t0": 1.71,
|
||||
"t1": 3.078,
|
||||
"voiceId": "tut_map",
|
||||
"expected": "先认识你的鼓。屏幕横着分三列,左边、中间、右边;竖着分两行,上面清亮,下面低沉。随便摸一摸,听到哪面鼓,我就告诉你它在哪。",
|
||||
"heard": "写写认。",
|
||||
"similarity": 0.0377,
|
||||
"verdict": "TRUNCATED"
|
||||
},
|
||||
{
|
||||
"t0": 3.078,
|
||||
"t1": 4.446,
|
||||
"voiceId": "tut_probe",
|
||||
"expected": "摸到三个不同的地方,我们就开始。",
|
||||
"heard": "嗯,摸到三个布。",
|
||||
"similarity": 0.4,
|
||||
"verdict": "TRUNCATED"
|
||||
},
|
||||
{
|
||||
"t0": 5.319,
|
||||
"t1": 6.919,
|
||||
"voiceId": "zone_tl",
|
||||
"expected": "左上,踩镲。",
|
||||
"heard": "左上踩草。",
|
||||
"similarity": 0.75,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 7.992,
|
||||
"t1": 9.867,
|
||||
"voiceId": "zone_tr",
|
||||
"expected": "右上,吊镲。",
|
||||
"heard": "有上调查。",
|
||||
"similarity": 0.25,
|
||||
"verdict": "MISMATCH"
|
||||
},
|
||||
{
|
||||
"t0": 10.66,
|
||||
"t1": 13.002,
|
||||
"voiceId": "zone_bl",
|
||||
"expected": "左下,军鼓。",
|
||||
"heard": "左下军鼓。",
|
||||
"similarity": 1,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 13.011,
|
||||
"t1": 20.548,
|
||||
"voiceId": "tut_z_kick",
|
||||
"expected": "下面正中间,是底鼓,你的家。先听四下数拍,然后跟着我敲。",
|
||||
"heard": "下面正中间是题鼓,你的家先听四下数拍,然后跟着我敲。",
|
||||
"similarity": 0.9565,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 28.077,
|
||||
"t1": 33.294,
|
||||
"voiceId": "tut_z_sides",
|
||||
"expected": "左下是军鼓,右下是低嗵。一左一右,跟着打。",
|
||||
"heard": "左下是军鼓,右下是敌通,一左一右跟着打。",
|
||||
"similarity": 0.8824,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 42.786,
|
||||
"t1": 52.565,
|
||||
"voiceId": "tut_z_patt",
|
||||
"expected": "上面一排更清亮。左上踩镲,上中高嗵,右上吊镲。听这一句,三个音。",
|
||||
"heard": "上面一白更清亮,左上采茶,上中高通,右上调查,听这一句三个音。",
|
||||
"similarity": 0.7692,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 61.412,
|
||||
"t1": 64.128,
|
||||
"voiceId": "tut_done",
|
||||
"expected": "很好,演出开始。",
|
||||
"heard": "很好,演出开始。",
|
||||
"similarity": 1,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 67.814,
|
||||
"t1": 69.422,
|
||||
"voiceId": "gd_answer",
|
||||
"expected": "现在跟着我打。",
|
||||
"heard": "现在跟着我打。",
|
||||
"similarity": 1,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 99.81,
|
||||
"t1": 102.159,
|
||||
"voiceId": "mid_song",
|
||||
"expected": "过半了,保持。",
|
||||
"heard": "过磅了,保持。",
|
||||
"similarity": 0.8,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 118.496,
|
||||
"t1": 121.941,
|
||||
"voiceId": "tut_fill",
|
||||
"expected": "最后有一段加花,跟着我连打。",
|
||||
"heard": "最后有一段佳花跟着我连打。",
|
||||
"similarity": 0.9167,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 126.778,
|
||||
"t1": 131.344,
|
||||
"voiceId": "grade_a",
|
||||
"expected": "A 级!准确率超过八成五,非常出色。",
|
||||
"heard": "第G准确率超过8乘5,非常出色。",
|
||||
"similarity": 0.6429,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 131.349,
|
||||
"t1": 133.224,
|
||||
"voiceId": "new_best_combo",
|
||||
"expected": "新连击纪录!",
|
||||
"heard": "新联机记录。",
|
||||
"similarity": 0.4,
|
||||
"verdict": "MISMATCH"
|
||||
},
|
||||
{
|
||||
"t0": 133.23,
|
||||
"t1": 135.941,
|
||||
"voiceId": "unlock_song2",
|
||||
"expected": "新曲目解锁,追风!",
|
||||
"heard": "录新曲目解锁追风。",
|
||||
"similarity": 0.9333,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 135.948,
|
||||
"t1": 140.05,
|
||||
"voiceId": "restart",
|
||||
"expected": "单击再来一遍,右滑下一首,下滑回大厅。",
|
||||
"heard": "但气再来一遍,又滑下一手下滑回大厅。",
|
||||
"similarity": 0.75,
|
||||
"verdict": "OK"
|
||||
},
|
||||
{
|
||||
"t0": 20.548,
|
||||
"t1": 28.077,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
},
|
||||
{
|
||||
"t0": 33.294,
|
||||
"t1": 42.786,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
},
|
||||
{
|
||||
"t0": 52.565,
|
||||
"t1": 61.412,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
},
|
||||
{
|
||||
"t0": 64.128,
|
||||
"t1": 67.814,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
},
|
||||
{
|
||||
"t0": 69.422,
|
||||
"t1": 99.81,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
},
|
||||
{
|
||||
"t0": 102.159,
|
||||
"t1": 118.496,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
},
|
||||
{
|
||||
"t0": 121.941,
|
||||
"t1": 126.778,
|
||||
"voiceId": null,
|
||||
"expected": null,
|
||||
"heard": "",
|
||||
"similarity": null,
|
||||
"verdict": "SFX_BGM_ONLY"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
# 《节拍行者》鼓手模式 R2 人设评审(复评,基于 R2 live 实录 + 修复说明)
|
||||
|
||||
## P1 视障资深玩家(专业评委)
|
||||
|
||||
### 节拍行者(鼓手模式)
|
||||
- 状态感知:5/5 —— R1 提的两个扣分项都修实了:连摸区名完整播完(live 实录 zone_bl 播足 2.34s 自然收束),曲尾不再飘半句向导话,结算干净利落。「还差一个」的进度提示未加,但教学句「摸到三个不同的地方,我们就开始」本身可数,可接受。
|
||||
- 下一步明确性:5/5 —— 应答零语音、结算三选项、摸鼓可数,无迷失时刻。
|
||||
- 愿意继续玩:**是** —— 修复后的信息流称得上「干净」:该说的说完整,不该说的不抢拍。
|
||||
- P0 问题:无。
|
||||
- 建议:无新增(R1 三条建议全部落地或裁定不改)。
|
||||
|
||||
## P2 时间充裕的大学生
|
||||
|
||||
### 节拍行者(鼓手模式)
|
||||
- 状态感知:5/5 —— 教学失败不再「再听一遍」二连播(F3),纠正一句话说完就重新领奏,节奏感好多了。
|
||||
- 下一步明确性:5/5 —— 同 R1。
|
||||
- 愿意继续玩:**是** —— A 级解锁《追风》的钩子已验证有效(两连真机都是 A 级弧线)。
|
||||
- P0 问题:无。
|
||||
- 建议:维持 R1 裁定(unlock 文案不改)。
|
||||
|
||||
## P3 时间紧张的白领
|
||||
|
||||
### 节拍行者(鼓手模式)
|
||||
- 状态感知:5/5 —— 菜单中断恢复、单手盲操、单局 65-80s,R2 无变化无回退。
|
||||
- 下一步明确性:5/5 —— 同 R1。
|
||||
- 愿意继续玩:**是**。
|
||||
- P0 问题:无。
|
||||
- 建议:无新增。
|
||||
|
||||
## P4 疲惫的工人
|
||||
|
||||
### 节拍行者(鼓手模式)
|
||||
- 状态感知:5/5 —— 降速重演、零数落文案、放慢再教,R2 保持。
|
||||
- 下一步明确性:5/5 —— 同 R1。
|
||||
- 愿意继续玩:**是**。
|
||||
- P0 问题:无。
|
||||
- 建议:无新增。
|
||||
|
||||
---
|
||||
|
||||
### 专门问题复答
|
||||
|
||||
**分区心智模型**:R2 live 直证——区名播报机制完整可用(F2 修复后三连摸
|
||||
全报名),真机 33/37 Perfect 说明「听音色+声像找区」的映射稳定可掌握。
|
||||
|
||||
**合拍感**:dt≈0.00s 真机复现(R2 与 R1 演奏精度一致),Perfect 亮音叠加
|
||||
与 16 连击震动保持。
|
||||
|
||||
**旧作亮点保留**:全部在(跟随领奏/评级解锁/BPM 精确网格/不中断/旁白跳过/
|
||||
菜单断点续播),无一项回退。
|
||||
|
||||
**裁决:4/4 愿意继续玩,P0 = 0 —— R2 达标(连续第 2 轮,终止条件达成)。**
|
||||
@@ -0,0 +1,40 @@
|
||||
# 《节拍行者》鼓手模式 R2 synthesis(产品裁定)
|
||||
|
||||
## 输入
|
||||
|
||||
- R2 live 复跑(`live-player.md`:OK 12/TRUNCATED 3/MISMATCH 2;F1-F3 全部
|
||||
真机直证;33 Perfect / 4 Miss;A 级+解锁全弧线)
|
||||
- 人设复评:4/4 愿意继续玩,五项感知指标全部 5/5(P1 由 4/5 升 5/5),P0 = 0
|
||||
|
||||
## 裁定:4/4 愿意继续玩,P0 = 0 —— **R2 达标,连续第 2 轮达标,终止条件达成(≤R3 上限内)**
|
||||
|
||||
## P0 清单
|
||||
|
||||
无(连续第 2 轮为零)。
|
||||
|
||||
## P1 清单
|
||||
|
||||
无新增。R1 三项修复验收:
|
||||
|
||||
1. **F1 曲尾 gd_miss 守卫** ✅ mock 断言 A24 + live 直证(曲尾 4 Miss 零
|
||||
向导语音调度,结算链无截断)。
|
||||
2. **F2 探针区名防掐断** ✅ mock 断言 A25 + live 直证(zone_bl 播足 2.34s
|
||||
自然收束,教学句 queue 接续)。实现要点:进阶延迟 150ms 起步——引擎
|
||||
_playVoice 的入队判定在 await 加载完成之前,同步连发会让教学句误判
|
||||
「通道空闲」顶掉区名。
|
||||
3. **F3 纠正链去重** ✅ mock 断言 A23 + live 教学段语音序列无相邻复读。
|
||||
|
||||
## F 类修复复核结论
|
||||
|
||||
- playtest 129 → **134**(新增 A23/A24/A25 三条回归断言,既有零回改)
|
||||
- guide.test 122 / check_all_assets 全绿 / 15 游戏 playtest + engine-voice +
|
||||
engine-input 全量回归绿
|
||||
- 资产零新增(修复全部代码层)
|
||||
|
||||
## 交付结论
|
||||
|
||||
《节拍行者》鼓手模式重构**可交付**:屏幕分区(3列×2行六件打击乐)心智模型
|
||||
经教学与真机验证可建立;跟随领奏核心、S~C 评级、曲目解锁、BPM 精确性等
|
||||
旧作好评基因全部保留;两轮玩家迭代(4 人设 ×2 + live 两会话 ×2)零 P0、
|
||||
连续达标。遗留观察项(非阻塞):短句 ASR 同音误识属转写基础设施固有噪声;
|
||||
unlock 播报燃度按 R1 裁定维持。
|
||||
@@ -0,0 +1,205 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""《节拍行者》鼓手模式程序合成打击乐(24-rhythm-drummer.md §9.1,7 件 SYN)。
|
||||
|
||||
六区鼓组 + Perfect accent:kick/snare/hat/tomhi/crash/tomlo/accent。
|
||||
落盘:staging wav → tools/gen_rhythm_syn_wav/<id>.wav(44.1kHz 立体声);
|
||||
成品 → web/rhythm/audio/sfx/<id>.{ogg,m4a}(tools/bin/ffmpeg 双格式)。
|
||||
|
||||
QC(gen_cipher_syn.py 同款):去直流 + 首尾 8ms cos² 淡化 + 编码后解码回读
|
||||
真峰值 ≤ -3dBFS(MDCT 过冲坑:ebur128 peak=true 实测,超限自动降档重编)。
|
||||
打击乐起音必须硬(盲玩靠起音对拍);包络用 (1-exp(-t*k)) 快起沿。
|
||||
|
||||
用法:.venv-tts/bin/python tools/gen_rhythm_syn.py
|
||||
"""
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
import numpy as np
|
||||
import soundfile as sf
|
||||
|
||||
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
FFMPEG = os.path.join(ROOT, "tools", "bin", "ffmpeg")
|
||||
OUT = os.path.join(ROOT, "tools", "gen_rhythm_syn_wav")
|
||||
DST = os.path.join(ROOT, "web", "rhythm", "audio", "sfx")
|
||||
os.makedirs(OUT, exist_ok=True)
|
||||
os.makedirs(DST, exist_ok=True)
|
||||
|
||||
sr = 44100
|
||||
ONE_SHOT_TP_CEIL = -3.0 # dBFS
|
||||
SAMPLE_PEAK = 0.66 # ≈ -3.6dBFS,给 MDCT 过冲留余量
|
||||
FADE_N = int(sr * 0.008)
|
||||
|
||||
_rng = np.random.default_rng(20260914)
|
||||
|
||||
|
||||
def dc(y):
|
||||
return y - np.mean(y)
|
||||
|
||||
|
||||
def fade(y):
|
||||
w = np.sin(np.linspace(0, np.pi / 2, FADE_N)) ** 2
|
||||
y = y.copy()
|
||||
y[:FADE_N] *= w
|
||||
y[-FADE_N:] *= w[::-1]
|
||||
return y
|
||||
|
||||
|
||||
def norm(y, peak=SAMPLE_PEAK):
|
||||
m = np.max(np.abs(y))
|
||||
return (y / m * peak) if m > 0 else y
|
||||
|
||||
|
||||
def stereo(y):
|
||||
return np.stack([y, y], axis=1).astype(np.float32)
|
||||
|
||||
|
||||
def bp_noise(n, lo, hi):
|
||||
x = _rng.standard_normal(n)
|
||||
X = np.fft.rfft(x)
|
||||
freqs = np.fft.rfftfreq(n, 1 / sr)
|
||||
mask = ((freqs >= lo) & (freqs <= hi)).astype(float)
|
||||
y = np.fft.irfft(X * mask, n)
|
||||
return y / (np.max(np.abs(y)) + 1e-9)
|
||||
|
||||
|
||||
def sweep(n, f0, f1, dec):
|
||||
"""指数扫频正弦(鼓皮),dec = 幅度衰减系数(1/s)。"""
|
||||
t = np.arange(n) / sr
|
||||
k = np.log(f1 / f0) / (n / sr)
|
||||
ph = 2 * np.pi * f0 * (np.exp(k * t) - 1) / k
|
||||
return np.sin(ph) * np.exp(-t * dec)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- 鼓件渲染
|
||||
def r_kick(): # 底鼓 BC:130→45Hz 扫频 + 触击瞬态(起沿 <3ms);id 沿用 inst_kick
|
||||
n = int(sr * 0.28)
|
||||
t = np.arange(n) / sr
|
||||
y = sweep(n, 130, 45, 16) * 1.0
|
||||
click = bp_noise(n, 1500, 6000) * np.exp(-t * 220) * 0.5 # 槌击瞬态
|
||||
th = np.sin(2 * np.pi * 60 * t) * np.exp(-t * 22) * 0.35 # 低频胸口感
|
||||
return dc((y + click + th) * (1 - np.exp(-t * 900)))
|
||||
|
||||
|
||||
def r_snare(): # 军鼓 BL:200Hz 皮 + 1-4kHz 带通沙噪 + 钢丝噪
|
||||
n = int(sr * 0.22)
|
||||
t = np.arange(n) / sr
|
||||
head = np.sin(2 * np.pi * 196 * t) * np.exp(-t * 38) * 0.8
|
||||
wires = bp_noise(n, 3000, 7000) * np.exp(-t * 55) * 0.55
|
||||
body = bp_noise(n, 800, 3000) * np.exp(-t * 30) * 0.7
|
||||
return dc((head + wires + body) * (1 - np.exp(-t * 1200)))
|
||||
|
||||
|
||||
def r_hat(): # 闭合踩镲 TL:6-10kHz 高通金属噪,60ms 急收
|
||||
n = int(sr * 0.07)
|
||||
t = np.arange(n) / sr
|
||||
y = bp_noise(n, 6000, 12000) * np.exp(-t * 90)
|
||||
y += bp_noise(n, 9000, 14000) * np.exp(-t * 140) * 0.6
|
||||
metallic = (np.sin(2 * np.pi * 11200 * t) * 0.25
|
||||
+ np.sin(2 * np.pi * 8350 * t) * 0.18) * np.exp(-t * 110)
|
||||
return dc((y + metallic) * (1 - np.exp(-t * 2500)))
|
||||
|
||||
|
||||
def r_tomhi(): # 高音嗵 TC:200→140Hz 皮,短促圆头
|
||||
n = int(sr * 0.30)
|
||||
t = np.arange(n) / sr
|
||||
y = sweep(n, 205, 140, 14) * 0.95
|
||||
skin = bp_noise(n, 300, 1400) * np.exp(-t * 40) * 0.3
|
||||
return dc((y + skin) * (1 - np.exp(-t * 700)))
|
||||
|
||||
|
||||
def r_crash(): # 吊镲 TR:4-12kHz 噪 + 非谐波泛音列,1.2s 长尾
|
||||
n = int(sr * 1.30)
|
||||
t = np.arange(n) / sr
|
||||
y = bp_noise(n, 4000, 13000) * np.exp(-t * 5.5) * 0.8
|
||||
for f, g in [(6120, 0.30), (8130, 0.22), (10460, 0.15), (4620, 0.20)]:
|
||||
y += np.sin(2 * np.pi * f * t) * np.exp(-t * 4.2) * g
|
||||
y += bp_noise(n, 2000, 5000) * np.exp(-t * 9) * 0.35
|
||||
return dc(y * (1 - np.exp(-t * 1800)))
|
||||
|
||||
|
||||
def r_tomlo(): # 低音嗵 BR:120→75Hz 皮,共鸣更久
|
||||
n = int(sr * 0.35)
|
||||
t = np.arange(n) / sr
|
||||
y = sweep(n, 122, 75, 10) * 0.95
|
||||
skin = bp_noise(n, 200, 900) * np.exp(-t * 30) * 0.3
|
||||
return dc((y + skin) * (1 - np.exp(-t * 550)))
|
||||
|
||||
|
||||
def r_accent(): # Perfect 叠加亮音:木鱼 1.5kHz + 2.2kHz 短双音
|
||||
a = np.sin(2 * np.pi * 1500 * np.arange(int(sr * 0.05)) / sr) \
|
||||
* np.exp(-np.arange(int(sr * 0.05)) / sr * 90)
|
||||
b = np.sin(2 * np.pi * 2200 * np.arange(int(sr * 0.08)) / sr) \
|
||||
* np.exp(-np.arange(int(sr * 0.08)) / sr * 60) * 0.7
|
||||
return dc(np.concatenate([a, np.zeros(int(sr * 0.015)), b, np.zeros(int(sr * 0.03))]))
|
||||
|
||||
|
||||
ONE_SHOTS = {
|
||||
"inst_kick": r_kick,
|
||||
"dm_snare": r_snare,
|
||||
"dm_hat": r_hat,
|
||||
"dm_tomhi": r_tomhi,
|
||||
"dm_crash": r_crash,
|
||||
"dm_tomlo": r_tomlo,
|
||||
"dm_accent": r_accent,
|
||||
}
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- 编码 + 真峰值校验
|
||||
def encode(wav_path, base):
|
||||
for args, ext in [(["-c:a", "libvorbis", "-q:a", "3"], ".ogg"),
|
||||
(["-c:a", "aac", "-b:a", "128k"], ".m4a")]:
|
||||
subprocess.run([FFMPEG, "-y", "-v", "error", "-i", wav_path,
|
||||
"-ar", "44100", *args, base + ext], check=True)
|
||||
|
||||
|
||||
def true_peak_db(path):
|
||||
r = subprocess.run([FFMPEG, "-i", path, "-af", "ebur128=peak=true", "-f", "null", "-"],
|
||||
capture_output=True, text=True)
|
||||
peaks = [float(line.split("Peak:")[1].strip().split()[0])
|
||||
for line in r.stderr.splitlines() if "Peak:" in line and "dBFS" in line]
|
||||
return max(peaks) if peaks else float("nan")
|
||||
|
||||
|
||||
def check_tp(base):
|
||||
return max(true_peak_db(base + ".ogg"), true_peak_db(base + ".m4a"))
|
||||
|
||||
|
||||
def main():
|
||||
report = []
|
||||
problems = []
|
||||
|
||||
for fid, fn in ONE_SHOTS.items():
|
||||
wav_path = os.path.join(OUT, fid + ".wav")
|
||||
base = os.path.join(DST, fid)
|
||||
y = fade(norm(dc(fn())))
|
||||
sf.write(wav_path, stereo(y), sr)
|
||||
encode(wav_path, base)
|
||||
tp = check_tp(base)
|
||||
if tp > ONE_SHOT_TP_CEIL: # MDCT 过冲超限:按超出量降档重编一次再验
|
||||
gain = 10 ** ((ONE_SHOT_TP_CEIL - tp) / 20) * 0.98
|
||||
sf.write(wav_path, stereo(y * gain), sr)
|
||||
encode(wav_path, base)
|
||||
tp2 = check_tp(base)
|
||||
report.append((fid, len(y) / sr, tp, f"降 {20 * np.log10(gain):.1f}dB 重编 -> {tp2:.2f}"))
|
||||
tp = tp2
|
||||
else:
|
||||
report.append((fid, len(y) / sr, tp, ""))
|
||||
if tp > ONE_SHOT_TP_CEIL:
|
||||
problems.append(f"{fid}: 真峰值 {tp:.2f} dBFS 仍超 {ONE_SHOT_TP_CEIL}")
|
||||
|
||||
print(f"{'id':12s} {'dur(s)':>7s} {'TP(dBFS)':>9s} note")
|
||||
for fid, dur, tp, note in report:
|
||||
print(f"{fid:12s} {dur:7.2f} {tp:9.2f} {note}")
|
||||
if problems:
|
||||
print("PROBLEMS:")
|
||||
for p in problems:
|
||||
print(" ", p)
|
||||
return 1
|
||||
print(f"ALL OK: {len(ONE_SHOTS)} one-shot -> {DST}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
@@ -273,3 +273,33 @@ flac 原件 tools/mureka_out/teahouse-{menu,serve,brew}/。
|
||||
acrossfade 无缝循环 → loudnorm I=-20/TP=-2/LRA=11(20-teahouse.md §8.1 三首 -20 LUFS;
|
||||
CLOSE 结算 0.5 音量由游戏层控制)→ ogg q3 + m4a 128k,成品均 90.00s。无节拍网格玩法,
|
||||
未跑 bpm_precise。menu 曲首攻 429 限流一次,60s 退避重试成功;三条任务此后一次成功。
|
||||
|
||||
## 2026-09-14(批次 5:rhythm《节拍行者》鼓手模式无鼓伴奏)
|
||||
|
||||
预算线:本轮 $0.18(3 任务 ×1 候选,无重提);总预算 $2.00。24 号文档 §9.2:
|
||||
玩家即鼓手,BGM 必须无鼓(prompt 显式 no drums no percussion)。
|
||||
|
||||
| # | task id | 用途 | prompt 特征 | 状态 | 花费 |
|
||||
|---|---|---|---|---|---|
|
||||
| 43 | 160832071925761 | track90 无鼓(2 候选) | bright pop rock backing, bass+acoustic+light synth, steady 90 bpm, A minor, no drums | succeeded | $0.03 |
|
||||
| 44 | 160832268861441 | track105 无鼓(2 候选) | driving energetic pop backing, punchy bass+muted guitar chops+synth, steady 105 bpm, A minor, no drums | succeeded | $0.03 |
|
||||
| 45 | 160832453541890 | track120 无鼓(2 候选) | high energy synth rock backing, aggressive bass+arp synth+power chords, steady 120 bpm, A minor, no drums | succeeded | $0.03 |
|
||||
|
||||
**本轮花费:$0.09。累计:$1.35。**
|
||||
|
||||
选用与 BPM 实测(bpm_precise 梳状扫描,无鼓曲目 onset 弱、分数偏低属正常):
|
||||
|
||||
- track90:候选 1 实测 **90.00 精确**(score 5.14 vs 候选 0 的 3.87),
|
||||
无需拉伸;成品实测 **89.99 BPM**(循环 85.33s = 32 小节)。
|
||||
- track105:候选 0 = 106.26 / 候选 1 = 105.55;选候选 1 以 atempo=0.99479
|
||||
拉伸至 105(R3 track90 先例),成品实测 **105.00 BPM**(循环 73.14s = 32 小节)。
|
||||
- track120:候选 0 = 126.0 / 候选 1 实测 **120.00 精确**;选候选 1,
|
||||
成品实测 **120.01 BPM**(循环 72.00s = 36 小节)。
|
||||
|
||||
后处理(R3 rhythm 工艺,整数小节铁律——循环长度必须为 4 拍整数倍,否则
|
||||
BGM 小节边界与节拍网格漂移):atempo(仅 track105)→ 首个强 onset 起点
|
||||
(silenceremove -35dB)→ 整数小节裁剪 → 末 3s 与开头 acrossfade(tri) 无缝
|
||||
循环 → loudnorm I=-20/TP=-2/LRA=11 → 44.1kHz → ogg q3 + m4a 128k。
|
||||
旧含鼓 track90/105/120 直接覆盖(web/rhythm/audio/bgm/)。
|
||||
flac 原件存 tools/mureka_out/rhythm-drummer-track*/。首发并行提交遇 429
|
||||
一次(cipher 批次 3 同款限流),60s 退避串行后 3/3 成功无重试计费。
|
||||
|
||||
+18
-10
@@ -32,9 +32,14 @@
|
||||
*
|
||||
* 用法:
|
||||
* import { attachGestures } from '../engine/gesture.js';
|
||||
* const detach = attachGestures(element, (g) => game.onGesture(g));
|
||||
* const detach = attachGestures(element, (g, info) => game.onGesture(g, info));
|
||||
* // detach() 可解除绑定
|
||||
*
|
||||
* 第二参 info(24-rhythm 坐标透传,缺省行为逐字节不变):
|
||||
* { x, y } 视口像素坐标——tap 类/长按 = 按下点,滑动 = 滑动起点(出手瞄准
|
||||
* 位置),键盘通道 = 虚拟指针坐标(元素中心)。需要触点位置的游戏(如 rhythm
|
||||
* 分区打击)使用;单参回调完全不受影响。
|
||||
*
|
||||
* 基础震动反馈(haptics.js,不支持的平台自动 no-op):
|
||||
* 滑动识别成功→swipe,tap→confirm,doubletap→confirm。
|
||||
* 游戏逻辑层的语义反馈(error/success/warning 等)由游戏自行调用 vibrate()。
|
||||
@@ -161,6 +166,7 @@ export function attachGestures(element, onGesture, config = {}) {
|
||||
// 单指/单指针跟踪状态
|
||||
let tracking = false;
|
||||
let startX = 0, startY = 0, startTime = 0;
|
||||
let downX = 0, downY = 0; // 本次按下的坐标(onGesture 第二参 info 透传用)
|
||||
let moved = false; // 位移是否已超 tapSlop(超过则本次不可能是点按)
|
||||
|
||||
// 长按状态
|
||||
@@ -194,14 +200,14 @@ export function attachGestures(element, onGesture, config = {}) {
|
||||
if (!longPressActive) return;
|
||||
longPressActive = false;
|
||||
_dispatchLongpress('longpressend');
|
||||
onGesture('longpressend');
|
||||
onGesture('longpressend', { x: downX, y: downY });
|
||||
}
|
||||
|
||||
/** immediateTap:本次按下的序曲 tap 确定作废(转滑动/长按/触摸取消)时补发 tapcancel。 */
|
||||
function cancelImmediateTap() {
|
||||
if (!tapPending) return;
|
||||
tapPending = false;
|
||||
onGesture('tapcancel');
|
||||
onGesture('tapcancel', { x: downX, y: downY });
|
||||
}
|
||||
|
||||
function handleDown(x, y) {
|
||||
@@ -209,6 +215,8 @@ export function attachGestures(element, onGesture, config = {}) {
|
||||
moved = false;
|
||||
startX = x;
|
||||
startY = y;
|
||||
downX = x;
|
||||
downY = y;
|
||||
startTime = performance.now();
|
||||
if (cfg.immediateTap) {
|
||||
// 即时模式:按下立即回调 tap,不等双击窗口关闭。
|
||||
@@ -216,7 +224,7 @@ export function attachGestures(element, onGesture, config = {}) {
|
||||
// 这声 tap 已发出不可撤回,但引擎会补 tapcancel 让游戏层撤销判定。
|
||||
tapPending = true;
|
||||
vibrate('confirm');
|
||||
onGesture('tap');
|
||||
onGesture('tap', { x: downX, y: downY });
|
||||
}
|
||||
cancelLongPress();
|
||||
longPressTimer = setTimeout(() => {
|
||||
@@ -227,7 +235,7 @@ export function attachGestures(element, onGesture, config = {}) {
|
||||
cancelImmediateTap();
|
||||
longPressActive = true;
|
||||
_dispatchLongpress('longpress');
|
||||
onGesture('longpress');
|
||||
onGesture('longpress', { x: downX, y: downY });
|
||||
}, cfg.longpressMs);
|
||||
}
|
||||
|
||||
@@ -267,7 +275,7 @@ export function attachGestures(element, onGesture, config = {}) {
|
||||
if (Math.abs(dx) > Math.abs(dy)) g = dx > 0 ? 'right' : 'left';
|
||||
else g = dy > 0 ? 'down' : 'up';
|
||||
vibrate('swipe'); // 滑动识别成功
|
||||
onGesture(g);
|
||||
onGesture(g, { x: startX, y: startY });
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -281,7 +289,7 @@ export function attachGestures(element, onGesture, config = {}) {
|
||||
cancelPendingTap();
|
||||
lastTapTime = 0;
|
||||
vibrate('confirm'); // 双击
|
||||
onGesture('doubletap');
|
||||
onGesture('doubletap', { x: downX, y: downY });
|
||||
} else if (cfg.immediateTap) {
|
||||
lastTapTime = now; // tap 已在 handleDown 发出,这里只记双击窗起点
|
||||
} else {
|
||||
@@ -292,7 +300,7 @@ export function attachGestures(element, onGesture, config = {}) {
|
||||
pendingTapTimer = null;
|
||||
lastTapTime = 0;
|
||||
vibrate('confirm'); // 单击
|
||||
onGesture('tap');
|
||||
onGesture('tap', { x: downX, y: downY });
|
||||
}, cfg.doubleTapWindow);
|
||||
}
|
||||
return;
|
||||
@@ -395,7 +403,7 @@ export function attachGestures(element, onGesture, config = {}) {
|
||||
cancelPendingTap(); // 与触屏滑动一致:滑动作废等待中的单击
|
||||
lastTapTime = 0;
|
||||
vibrate('swipe');
|
||||
onGesture(dir); // 即时,无位移/速度判定(零延迟)
|
||||
onGesture(dir, keyCenter()); // 即时,无位移/速度判定(零延迟)
|
||||
return;
|
||||
}
|
||||
if (tracking) return;
|
||||
@@ -405,7 +413,7 @@ export function attachGestures(element, onGesture, config = {}) {
|
||||
cancelPendingTap();
|
||||
lastTapTime = 0;
|
||||
vibrate('confirm');
|
||||
onGesture('doubletap');
|
||||
onGesture('doubletap', keyCenter());
|
||||
return;
|
||||
}
|
||||
// 空格:虚拟指针按下,进同一状态机(起 450ms 长按定时器;immediateTap
|
||||
|
||||
@@ -1,22 +1,30 @@
|
||||
/**
|
||||
* 《节拍行者》新手会话剧本:首局完整走教学 T1-T3(第 2 句先整拍不出手——
|
||||
* round4 H5 归因真话律:听到的是「这拍没接」而不是「慢了半拍」;再连错一遍
|
||||
* 触发 round3 G2 的「降速 25% 重演 + gd_slow」,跟着慢速领奏做对后恢复正常)
|
||||
* → 曲目一(90 BPM);曲中下滑呼出菜单逛一圈再恢复(round3 G3:恢复先听
|
||||
* gd_count「四拍之后,继续」,再跟 4 拍底鼓 count-in 进场;首个应答窗口前
|
||||
* 整整 1 小节有 gd_answer+turn 交接标记);正片第一乐句故意整句漏掉(连 2 Miss
|
||||
* 触发向导 gd_miss「慢了半拍」——正片规则不变),之后跟着领奏把一曲打完到结算。
|
||||
* 《节拍行者》鼓手模式新手会话剧本:首局完整走「摸鼓认区 → 教学 T1-T3 →
|
||||
* 曲目一(90 BPM)」全弧线——探索阶段把六区摸遍(区名每区只播一次)、曲中
|
||||
* 下滑逛菜单再恢复(gd_count + 4 拍底鼓 count-in 进场)、正片第一乐句故意
|
||||
* 整句漏掉(连 2 Miss → 向导 gd_miss)、之后逐音跟打(含终曲加花)到结算。
|
||||
* 分区敲击带坐标注入(引擎坐标透传契约,24 号文档 §0.3)。
|
||||
*/
|
||||
const ZC = {
|
||||
TL: { x: 50, y: 100 }, TC: { x: 150, y: 100 }, TR: { x: 250, y: 100 },
|
||||
BL: { x: 50, y: 500 }, BC: { x: 150, y: 500 }, BR: { x: 250, y: 500 },
|
||||
};
|
||||
|
||||
export function describe(game) {
|
||||
switch (game.phase) {
|
||||
case 'intro': return '开场旁白在播,单击可以跳过';
|
||||
case 'tut': return game._cues.length
|
||||
? `教学:听领奏,下一小节照样打(${game._cues.map((c) => c.gesture).join('→')})${game._tutRate < 1 ? '(领奏已放慢 25%)' : ''}`
|
||||
: '教学准备中,听鼓点';
|
||||
case 'intro': return '开场旁白在播(认识你的鼓),单击可以跳过';
|
||||
case 'tut':
|
||||
if (game._tutStage === 'probe') {
|
||||
return `摸鼓认区:随便摸,摸到 3 个不同的地方就开始(已摸 ${game._probeHeard.size} 区)`;
|
||||
}
|
||||
return game._cues.length
|
||||
? `教学:听领奏,下一小节照样敲(${game._cues.map((c) => c.zone).join('→')})${game._tutRate < 1 ? '(领奏已放慢 25%)' : ''}`
|
||||
: '教学准备中,听数拍';
|
||||
case 'select': return '选曲:左右滑换曲,单击开始,下滑回大厅';
|
||||
case 'main': {
|
||||
const left = game._cues.filter((c) => !c.judged).length;
|
||||
return `演奏中(${game._song?.title ?? ''}):还剩 ${left} 个应答音。领奏停了、轮到空拍,就该我出手了`;
|
||||
const fillNext = game._timed.some((e) => e.fn && game._song?.units?.some((u) => u.fill));
|
||||
return `演奏中(${game._song?.title ?? ''}):还剩 ${left} 个应答音。领奏停了、轮到空拍,就该我出手了${fillNext ? ';有一段加花要连打' : ''}`;
|
||||
}
|
||||
case 'menu': return '暂停菜单:单击切选项,双击确认,上滑帮助,下滑恢复演奏';
|
||||
case 'end': return '结算播报中:听完单击再来一遍,右滑下一首,下滑回大厅';
|
||||
@@ -27,60 +35,61 @@ export function describe(game) {
|
||||
export async function session(ctx, mock) {
|
||||
const { game, audio } = ctx;
|
||||
const t = () => audio.ctx.currentTime;
|
||||
// transcribe 的 root 是 {}:补上布局让分区坐标生效(引擎坐标契约的游戏层语义)
|
||||
game.root = { getBoundingClientRect: () => ({ left: 0, top: 0, width: 300, height: 600 }) };
|
||||
const hit = async (zone) => {
|
||||
game.onGesture('tap', ZC[zone]);
|
||||
await mock.flush();
|
||||
};
|
||||
|
||||
// 开场:welcome 听完进教学
|
||||
await ctx.waitCond(() => game.phase === 'tut');
|
||||
ctx.status('教学开始了,先听领奏');
|
||||
// 开场:welcome → tut_map → tut_probe 三连旁白,逐句跳过
|
||||
await ctx.waitCond(() => game.phase === 'intro' && ctx.voiceBusy());
|
||||
ctx.status('开场旁白:我是鼓手,整个屏幕都是鼓。单击跳过');
|
||||
for (let i = 0; i < 3; i++) { await ctx.gesture('tap'); await ctx.waitVirtual(600); }
|
||||
await ctx.waitCond(() => game.phase === 'tut' && game._tutStage === 'probe');
|
||||
ctx.status('进入摸鼓认区:先四处摸摸,听到哪面鼓就报哪面鼓的名');
|
||||
ctx.note('背景音乐《启程》无鼓伴奏已在轻声循环——拍子网格的底,鼓由我来打');
|
||||
|
||||
// 教学 3 步:等领奏排程好,在应答窗口内跟打
|
||||
// T0 探索:六区全摸一遍(区名每区一次;重复摸只出声),再摸到 3 区进阶
|
||||
for (const zone of ['TL', 'TC', 'TR', 'BL', 'BC', 'BR']) await hit(zone);
|
||||
ctx.status('六面鼓摸遍了:左上踩镲、上中高嗵、右上吊镲、左下军鼓、下中底鼓、右下低嗵');
|
||||
await hit('TL'); // 重复摸:只出声不报名
|
||||
await hit('BR');
|
||||
ctx.status('又摸了两下重复的,只响不报名');
|
||||
await ctx.waitCond(() => game._tutStage === 'step' && game._cues.length > 0);
|
||||
ctx.status('摸到三个不同的地方,自动开始教学第一步');
|
||||
|
||||
// 教学 3 步:等领奏排程好,在应答窗口内跟敲
|
||||
//(注意:调度泵 interval 常驻,虚拟时钟永不"空闲"——禁止裸 waitIdle)
|
||||
for (let step = 0; step < 3; step++) {
|
||||
await ctx.waitCond(() => game.phase === 'tut' && game._cues.length > 0 && game._tutAttempts.length === 0);
|
||||
ctx.status(`教学第 ${step + 1}/3 句`);
|
||||
if (step === 1) {
|
||||
// round4 H5 剧本:这一句先整拍不出手——归因必须是「这拍没接」(gd_miss_none),
|
||||
// 不是「慢了半拍」;再连错一遍(整句不出手)听它放慢一些再带着打(G2)。
|
||||
// 注意 _tutEvaluate 判定即把 _phaseEnd 置 Infinity 防重入——等待一律挂
|
||||
// 「持久里程碑」条件(_tutFails/_tutSlowUsed),别挂阶段末时刻。
|
||||
await ctx.waitCond(() => game._tutFails === 1); // 失败①:没出手
|
||||
ctx.status('第一遍整拍没出手——听到的是「这拍没接。我停下的时候,就轮到你了」,不是「慢了半拍」');
|
||||
await ctx.waitCond(() => game._phaseEnd < 1e8 && t() < game._phaseEnd - 1); // 纠正链播完、重新领奏
|
||||
ctx.status('又重新领奏了一遍,还是没敢出手');
|
||||
await ctx.waitCond(() => game._tutSlowUsed === true); // 失败② → 触发降速重演
|
||||
await ctx.waitCond(() => game._phaseEnd < 1e8 && t() < game._phaseEnd - 1); // gd_slow 播完、慢速领奏已排
|
||||
ctx.status('听到「我放慢一些,跟着试试」——领奏降速 25% 重演,这回跟着慢拍打');
|
||||
await ctx.waitCond(() => game._tutIdx === step && game.phase === 'tut'
|
||||
&& game._cues.length > 0 && game._tutAttempts.length === 0);
|
||||
ctx.status(`教学第 ${step + 1}/3 步:听数拍和领奏,下一小节照着敲`);
|
||||
for (const cue of game._cues) {
|
||||
const at = cue.expected - (cue.gesture === 'tap' ? -0.28 : 0.04);
|
||||
await ctx.waitCond(() => t() >= at || cue.judged);
|
||||
await ctx.waitCond(() => t() >= cue.expected || cue.judged);
|
||||
if (cue.judged) continue;
|
||||
await ctx.gesture(cue.gesture);
|
||||
}
|
||||
await ctx.waitCond(() => game._tutIdx > step || game.phase !== 'tut');
|
||||
continue;
|
||||
}
|
||||
for (const cue of game._cues) {
|
||||
const at = cue.expected - (cue.gesture === 'tap' ? -0.28 : 0.04); // tap 补偿引擎 ~300ms 延迟
|
||||
await ctx.waitCond(() => t() >= at || cue.judged);
|
||||
if (cue.judged) continue;
|
||||
await ctx.gesture(cue.gesture);
|
||||
await hit(cue.zone);
|
||||
}
|
||||
await ctx.waitCond(() => game._tutIdx > step || game.phase !== 'tut');
|
||||
}
|
||||
await ctx.waitCond(() => game.phase === 'main');
|
||||
ctx.status('教学完毕,曲目一《启程》90 拍开始。领奏响之前先听到「现在跟着我打」');
|
||||
ctx.status('教学完毕,曲目一《启程》90 拍开始。先听四下底鼓数拍,然后是「现在跟着我打」');
|
||||
ctx.note('《启程》无鼓伴奏 BGM 起,四下底鼓数拍对齐小节');
|
||||
|
||||
// 曲中逛菜单:下滑呼出(模态暂停)→ 听选项 → 下滑恢复
|
||||
//(round3 G3:恢复先播「四拍之后,继续」,再跟 4 拍底鼓 count-in 进场)
|
||||
//(gd_count「四拍之后,继续」+ 4 拍底鼓 count-in 进场)
|
||||
await ctx.waitCond(() => t() >= game._bgmT0 + 1.5);
|
||||
await ctx.gesture('down');
|
||||
await ctx.waitCond(() => game.phase === 'menu');
|
||||
ctx.status('曲中暂停,进了菜单');
|
||||
ctx.note('BGM 在断点冻住——谱面、判定、音乐全部暂停');
|
||||
await ctx.waitVirtual(1100); // 菜单 1s 去抖独占期
|
||||
await ctx.gesture('tap'); // 切换选项(听到「回大厅」)
|
||||
await ctx.waitIdle();
|
||||
ctx.note('还是想打完这首,下滑回去');
|
||||
await ctx.gesture('down'); // 恢复
|
||||
await ctx.waitCond(() => game.phase === 'main');
|
||||
ctx.status('听到「四拍之后,继续」,跟着四下底鼓数拍进来了');
|
||||
ctx.note('BGM 从断点续播,节拍网格整体后移了一小节');
|
||||
|
||||
// 第一乐句故意整句不打:连 2 次 Miss → 向导 gd_miss
|
||||
const firstPhrase = game._cues.filter((c) => c.phrase === 0);
|
||||
@@ -88,16 +97,16 @@ export async function session(ctx, mock) {
|
||||
await ctx.waitCond(() => firstPhrase.every((c) => c.judged));
|
||||
ctx.status('第一句全漏了,听到「慢了半拍,下一小节跟上我就行」');
|
||||
|
||||
// 之后逐音跟打(tap 注入留出引擎 ~300ms 回调延迟)
|
||||
// 之后逐音跟打(含终曲加花)
|
||||
for (const cue of game._cues) {
|
||||
if (cue.judged) continue;
|
||||
const at = cue.expected - (cue.gesture === 'tap' ? -0.28 : 0.04);
|
||||
await ctx.waitCond(() => t() >= at || cue.judged);
|
||||
await ctx.waitCond(() => t() >= cue.expected || cue.judged);
|
||||
if (cue.judged) continue;
|
||||
await ctx.gesture(cue.gesture);
|
||||
await hit(cue.zone);
|
||||
}
|
||||
|
||||
await ctx.waitCond(() => game.phase === 'end');
|
||||
await ctx.waitIdle();
|
||||
ctx.status('曲子打完了,结算播报中');
|
||||
ctx.status('曲子打完了(加花收尾是一记吊镲),结算播报中');
|
||||
ctx.note('曲目 BGM 淡出,结算语音链播完会淡入大厅音乐');
|
||||
}
|
||||
|
||||
+36
-33
@@ -1,41 +1,45 @@
|
||||
# 节拍行者(RHYTHM)
|
||||
# 节拍行者(RHYTHM)· 鼓手模式
|
||||
|
||||
跟随领奏的节奏游戏,纯音频。系统奏一句,你在下一小节原样跟打——
|
||||
音要对,拍点也要对。建议戴耳机(有线优先,蓝牙延迟由 Good 窗口吸收)。
|
||||
屏幕分区打击乐节奏游戏,纯音频。整面屏幕是一面鼓:你在无鼓伴奏的乐队里
|
||||
当鼓手,系统(领奏)敲一小节,你在下一小节照着敲回来——鼓要选对,拍点也要对。
|
||||
建议戴耳机(有线优先,蓝牙延迟由 Good 窗口吸收)。
|
||||
|
||||
## 玩法
|
||||
|
||||
- 每个乐句 = **领奏 1 小节 + 应答 1 小节**:先听系统用打击乐器演奏
|
||||
2-4 个音的节奏型,然后在下一小节的相同拍点用相同手势跟打。
|
||||
- 判定:**Perfect ±150ms**(乐器音 + 亮音 accent)/ **Good ±350ms**(只播乐器音)/
|
||||
**Miss**(手势错或错过拍点:该音符不出声 + 一声闷镲 + 震动提醒)。
|
||||
判定时刻按真实触摸时刻算(引擎 immediateTap 按下即发 tap;滑动/双击按
|
||||
识别延迟补偿回触摸时刻)。Miss 不中断不掉血,歌照唱完。
|
||||
- 每个乐句 = **领奏 1 小节 + 应答 1 小节**:先听系统用打击乐演奏 2-4 音的
|
||||
节奏型(曲三 4-6 音),然后在下一小节的相同拍点敲相同的鼓。曲子开头有
|
||||
1 小节底鼓数拍。
|
||||
- **加花**:曲中/曲尾有八分音符密集加花(领奏一串快鼓),跟着连打,最后
|
||||
一记吊镲收束。
|
||||
- 判定:**Perfect ±150ms**(鼓音 + 亮音 accent)/ **Good ±350ms**(只播鼓音)/
|
||||
**Miss**(敲错鼓或错过拍点:闷镲 + 震动提醒)。点按按下即判(零识别延迟),
|
||||
Miss 不中断不掉血,歌照唱完。
|
||||
- 计分:Perfect=2 / Good=1 / Miss=0,评级 **S≥95% / A≥85% / B≥70% / C**。
|
||||
- 连击每 16 次有震动鼓励;乐句全 Perfect 有额外震动。
|
||||
- **3 首曲目解锁制**:《启程》90 BPM → 《追风》105 BPM(反拍)→ 《星爆》120 BPM
|
||||
(切分密集)。曲目 n 拿到 B 级以上解锁 n+1,解锁状态本地保存并同步大厅。
|
||||
|
||||
## 手势 → 乐器音
|
||||
## 屏幕分区 → 鼓组(3 列 × 2 行)
|
||||
|
||||
| 手势 | 乐器音 | 声像 |
|
||||
|---|---|---|
|
||||
| 单击 | 底鼓 kick | 中央低频 |
|
||||
| 双击 | 军鼓 snare | 中央偏上 |
|
||||
| 左滑 | 闭合镲 hat | 极左 |
|
||||
| 右滑 | 开放镲 hat | 极右 |
|
||||
| 上滑 | 高通 tom | 升调感 |
|
||||
| 下滑 | 低通 tom | 降调感 |
|
||||
| 长按 | —(非演奏手势) | Miss 反馈音 + 震动提醒 |
|
||||
| 区 | 位置 | 乐器 | 声像 |
|
||||
|---|---|---|---|
|
||||
| 踩镲 | 左上 | 闭合踩镲 | 左 |
|
||||
| 高嗵 | 上中 | 高音嗵 | 中 |
|
||||
| 吊镲 | 右上 | 吊镲(长尾) | 右 |
|
||||
| 军鼓 | 左下 | 军鼓 | 左 |
|
||||
| 底鼓 | 下中 | 底鼓(你的「家」) | 中 |
|
||||
| 低嗵 | 右下 | 低音嗵 | 右 |
|
||||
|
||||
你的每次出手都会实时奏响对应乐器音——跟对了,就能听到自己在演奏。
|
||||
**横着三列 = 左中右声像;竖着两行 = 上清亮下沉闷。** 六件乐器音色各异,
|
||||
声像 + 音高 + 音色三重线索,蒙眼可辨。键盘:数字 1-6 = 六区(1-3 上排,
|
||||
4-6 下排),空格 = 下中底鼓。
|
||||
|
||||
## 流程
|
||||
|
||||
- **首次进入**:一句欢迎后进入 5 步交互教学(单击 → 左右滑 → 上滑 → 下滑 →
|
||||
三音带双击),做错有纠正语音(早了/晚了/不是这个手势),同一步失败 2 次
|
||||
自动跳过;全程零通过时收尾播中性句(不夸"很好");教学中**下滑 = 跳过
|
||||
教学**(教到下滑步、临近下滑音符时除外——那时它是演奏)。
|
||||
- **首次进入**:欢迎 → 摸鼓认区(随便摸,听到哪面鼓就告诉你它在哪,摸到
|
||||
3 个不同的地方开始)→ 3 步跟打教学(底鼓家区 → 左右军鼓低嗵 → 上排
|
||||
踩镲高嗵吊镲),做错有纠正语音(早了/晚了/敲错鼓),同一步失败 2 次会
|
||||
放慢再教一遍,全程零惩罚;教学中**下滑 = 跳过教学**。
|
||||
- **选曲**(二周目起):左右滑切曲目(播曲目名/未解锁提示),单击开始,
|
||||
上滑听规则,下滑回大厅。
|
||||
- **结算**:播报评级(含准确率档位)与连击纪录;**单击 = 再来一遍(同曲),
|
||||
@@ -43,18 +47,17 @@
|
||||
|
||||
## 菜单
|
||||
|
||||
演奏中**下滑呼出**(模态暂停:谱面、判定、BGM 全部冻结,BGM 断点续播)→
|
||||
**单击循环选项**(继续演奏/回大厅)→ **双击确认** → **上滑 = 帮助**(规则 +
|
||||
设置引导)。菜单打开后 **1 秒去抖独占期**:期内不收任何手势(防演奏途中被
|
||||
弹菜单时,已在路上的手势直接穿透菜单误确认)。
|
||||
注意:下滑同时是"低通 tom"的演奏手势——**自下滑音符的领奏响起到判定
|
||||
死线之间**,下滑永远是演奏;音符刚被判定死线拖死的短窗内(识别延迟、手势
|
||||
还在路上)同样按演奏处理,绝不弹菜单;仅当没有悬置、临近或刚拖死的下滑
|
||||
音符时才呼出菜单。
|
||||
演奏中**下滑呼出**(模态暂停:谱面、判定、BGM 全部冻结,BGM 断点续播,
|
||||
恢复前先听 4 拍数拍)→ **单击循环选项**(继续演奏/回大厅)→ **双击确认**
|
||||
→ **上滑 = 帮助**(规则 + 设置引导)。菜单打开后 **1 秒去抖独占期**:期内
|
||||
不收任何手势(防已在路上的手势穿透菜单误确认)。
|
||||
|
||||
## 运行
|
||||
|
||||
```bash
|
||||
python3 -m http.server 8105 --directory /home/ubuntu/SoundGame/web
|
||||
python3 -m http.server 8105 --directory /home/xsl/AutoVideo/SoundGame/web
|
||||
# 浏览器打开 http://localhost:8105/rhythm/ ,建议戴耳机
|
||||
```
|
||||
|
||||
无头试玩:`tools/node/bin/node web/rhythm/test/playtest.mjs`
|
||||
(断言清单 docs/design/24-rhythm-drummer.md §11)。
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user