fix(simon): 音序回响状态透明打磨(玩家代理取证迭代,玩法零改动)

- S2:新增input_open双音柔铃标记「能答了」边界(playback/input边界此前吞手势无标记)
- S1/S3/S4:input阶段长按=状态查询(13句status_*分档整句:长度4档×进度4档×账目5档,两本账口径一致,不耗账不闭窗)
- S5:announce/roundend非单击手势补error震(00 §5.4三秒反馈律)
- S6 P0:gameover下滑进菜单→结算链死锁8.4s修复(结算看守+挂起补播)
- S7:your_turn每局一次(原每轮重念)
- 取证:live两会话+4人设评审,S清单见research/simon-polish/round1/findings.md
- 验证:playtest 156/156 + guide 122 + 终检绿 + 14游戏回归零回退 + live复跑核对局14/14压力局8/8;状态感知2/5→4/5(四席同升),愿意玩改口为是
- 02号文档追加§9修订记录;新增input_open+13句status_*走完整TTS管线(flock串行QC无离群)
This commit is contained in:
xsl
2026-09-14 20:17:28 +08:00
parent ae850a4ce0
commit 258ffd5ba3
89 changed files with 7455 additions and 21 deletions
+1
View File
@@ -62,3 +62,4 @@ __pycache__/
web/teahouse/gen/staging/
tools/gen_rhythm_syn_wav/
tools/gen_space_syn_wav/
tools/gen_simon_syn_wav/
+35
View File
@@ -121,3 +121,38 @@ interval(round) = max(420, 700 - (round - 1) * 25) // 第 12 轮才到 420ms
- 新录:§3.2 全部(约 45 句 × 2 音色 = 90 条 × 2 格式)。
- 保留:6 个 tone、sfx/gameover。
- 更新 `web/simon/README.md` 玩法描述与 `gen/gen_voice.py` 的 `LINES` 表(文本表驱动,female/male 两跑)。
---
## 9. 修订记录(追加;旧文不动)
### round5(2026-09-14,research/simon-polish/round1 取证 → round2 修复;S1-S7)
用户真机反馈"玩法保留,但不清楚自己当前的状态"。round1 取证(剧本转写 + live 两会话:
认真新手局 13 轮 + 急性子乱按局)落成 S1-S8(research/simon-polish/round1/findings.md),
本轮修复 S1-S7,**玩法零改动,只加状态透明层**:
1. **S2 · input 开放标记音 `sfx/input_open`**:`_toInput` 播放(游戏层资产,三档
guide / iOS 无震动全可闻)。confirm 震只标记"播放完毕",占用预告/your_turn 语音
链播完才真开放——取证中该窗口内作答被静默吞(live-A 行 108-115)。无语音链的
轮次不再叠向导 turn earcon,input_open 独立作边界标记(二选一不叠响)。
2. **S1/S3/S4 · input 阶段长按=状态查询**(`_statusQuery`,13 句 `status_*` 分档
整句,见 02b 追加节):长度 4 档 × 进度 4 档 × 重听账目 5 档(下一次重听消耗哪个
桶,与 §6.3 两账口径一致)。长按是六手势全被玩法占用下唯一的空闲键位(键盘=
按住空格,00 §5.5 通道自动获得);玩家主动查询,三档 guide 全可用,不耗账、
不判错、不清进度、不闭作答窗口。查询只绑定 input 阶段——playback 维持纯聆听
豁免(§4.1),查询语音会污染记忆任务。
3. **S5 · announce/roundend 误触给 error 震**:非单击手势在播报/表扬链期间不再
静默吞(00 §5.4 三秒反馈律);playback 维持 §4.1 静默豁免不动。
4. **S6 · 结算语音链阶段看守**:链只在结算屏交付——gameover 瞬间下滑进菜单则挂起,
回结算屏补播(`_deliverSettle`/`_backToSettle`)。承诺「单击屏幕,再来一局」
永远与所处相位一致(取证:链在菜单内播完 → 承诺在菜单内是假的 → 关菜单后结算
屏死寂 8.4s,live-B 行 140-174)。重开/回大厅作废挂起链。
5. **S7 · `your_turn` 每局一次**:第 1 轮复活/重听的重播不再重念(取证一局三遍,
live-B 行 67/96-98)。
验证:playtest 156 断言全绿(新增 S2-S7 断言 + 场景三专项);guide.test 122 断言
全绿;check_all_assets 15 游戏全绿;其余 14 款游戏 playtest 回归全绿。修后 live
两会话复跑(research/simon-polish/round2/):核对局 V 14/14、压力局 P 8/8 断言通过,
ASR 非 OK 行全部归因玩家自裁(跳旁白截断/短句同音近失/补播抢占),无游戏自残;
四人设复审闭环(round2/p*.md,状态感知 2/5→4/5 across 四席,P0 清零)。
+36
View File
@@ -50,3 +50,39 @@ web/engine/gesture.js inputMode())时,引擎 voice 候选链前置加载
| `gd_occ_up` | 这一轮,按上方向键是作答。 |
| `gd_occ_dt` | 这一轮,按回车是作答。 |
| `gd_occ_both` | 这一轮,按上方向键和回车都是作答。 |
---
## 状态查询整句(status_*,round5,simon-polish round1 取证 S1/S3/S4 追加,13 句)
> input 阶段**长按=问状态**(触屏长按 / 键盘按住空格)——六手势全是答题输入下唯一空闲
> 键位。三句链:本轮长度档 → 已答进度档 → 重听账目档(下一次重听消耗哪个桶,与
> `_relisten` 两账口径一致)。玩家主动查询,**三档 guide 全可用**(游戏层资产,不
> 走向导插播通道);不耗账、不判错、不清进度、不闭作答窗口。全部数字分档整句,
> 禁运行时拼接(00 §3.2)。不含操作词,无需键盘变体。
> 资产:×2 性别 = 13×2 条、×2 格式 = 13×4 文件;管线 `gen_voice_dual.py --only …`
> 生成 → `--convert` 落盘,终检 `tools/check_all_assets.py`。
| id | 台词全文 | 分档 |
|---|---|---|
| `status_len_short` | 这一轮很短。 | 序列 2-4 音(第 1-3 轮) |
| `status_len_mid` | 这一轮不长不短。 | 序列 5-8 音(第 4-7 轮) |
| `status_len_long` | 这一轮挺长。 | 序列 9-12 音(第 8-11 轮) |
| `status_len_xlong` | 这一轮很长,稳住。 | 序列 13+ 音(第 12 轮起) |
| `status_prog_start` | 刚开头,一个还没对。 | 已答 0 |
| `status_prog_early` | 刚答了个开头。 | 已答 ≤ 1/3 |
| `status_prog_half` | 答了一半左右。 | 已答 ≤ 2/3 |
| `status_prog_late` | 就剩最后几个了。 | 已答 > 2/3 |
| `status_free2` | 免费重听还有两次。 | 免费余 2(下一次重听免费) |
| `status_free1` | 免费重听还有一次。 | 免费余 1(下一次重听免费) |
| `status_chance2` | 免费用完,机会还剩两次。 | 免费 0、真机会 2 |
| `status_chance1` | 免费用完,机会还剩一次。 | 免费 0、真机会 1 |
| `status_out` | 免费和机会都用完了,答错就结束。 | 两账皆空 |
## 程序合成音效(sfx/input_open,round5 S2)
> 「答题窗口开放」标记音:confirm 震只标记"播放完毕",占用预告/your_turn 语音链
> 播完才真开放(此前作答被静默吞)。游戏层资产、不走向导层——guide=off / iOS
> 无震动(00 §2.5)下仍有听觉边界;无语音链的轮次不叠向导 turn earcon,二选一。
> 双音上行柔铃 B5→D6(0.38s,TP -3.6dBFS),与 6 手势音色及 turn earcon 错开。
> 管线 `tools/gen_simon_syn.py`(去直流 + 8ms cos² + 真峰值 ≤-3dBFS + 编码回读校验)。
+280
View File
@@ -0,0 +1,280 @@
/**
* simon live 玩家驱动(round1 取证)。
* 两种人设策略:
* node driver.mjs A —— 认真新手:听完整教学、听轮次播报、凭"听觉"复现(以事件流
* 重构的序列充当完美记忆),测试免费重听经济句,打到高轮次。
* node driver.mjs B —— 急性子乱按:连点跳旁白、播放期乱滑、乱答、长按、结算乱按。
* 决策只看事件流(vstart/vend/sfx start/vibrate),等价"听到什么做什么"。
*/
const BASE = 'http://localhost:8143';
const MODE = process.argv[2] || 'A';
async function post(p, body) {
const r = await fetch(BASE + p, {
method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(body || {}),
});
const j = await r.json();
if (!r.ok || j.ok === false) throw new Error(`${p}: ${JSON.stringify(j)}`);
return j;
}
async function evq(since) {
const r = await fetch(`${BASE}/events?since=${since}`);
return r.json();
}
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
const G2E = { up: 'swipeup', down: 'swipedown', left: 'swipeleft', right: 'swiperight', tap: 'tap', doubletap: 'doubletap' };
const TONE2G = {
tone_up: 'up', tone_down: 'down', tone_left: 'left', tone_right: 'right',
tone_tap: 'tap', tone_doubletap: 'doubletap',
};
const vid = (url) => String(url || '').split('/').pop().replace(/\.\w+$/, '');
const isTone = (id) => id.startsWith('tone_');
const w = { since: 0, all: [] };
async function poll() {
const { events: evs, next } = await evq(w.since);
w.since = next;
for (const e of evs) w.all.push(e);
return evs;
}
async function until(cond, { timeout = 60000, step = 120 } = {}) {
const t0 = Date.now();
for (;;) {
const evs = await poll();
const hit = evs.filter(cond);
if (hit.length) return hit;
if (Date.now() - t0 > timeout) throw new Error(`until 超时(${Date.now() - t0}ms)`);
await sleep(step);
}
}
async function gesture(name, note) {
if (note) console.log(` [我] ${note} → ${name}`);
else console.log(` [我] ${name}`);
await post('/gesture', { type: name });
}
const voiceBusy = () => {
for (let i = w.all.length - 1; i >= 0; i--) {
const e = w.all[i];
if (e.ev === 'vend') return false;
if (e.ev === 'vstart') return true;
}
return false;
};
async function waitQuiet(extra = 300) {
for (;;) {
await poll();
if (!voiceBusy()) break;
await sleep(150);
}
await sleep(extra);
}
/**
* 收集一轮 playback:从调用时刻起,tone+紧随 beat 震 = 序列音;confirm 震 = 边界。
* 返回 { seq, confirmIdx }(confirmIdx = w.all 中边界震的下标)。
*/
async function collectPlayback() {
const mark = w.all.length;
await until((e) => e.ev === 'vibrate' && e.pattern === '[20]', { timeout: 40000 });
let confirmIdx = w.all.length - 1;
// 音/震次序不保证(play 异步时 beat 可能先 push):窗口内 tone 数 == beat 数即可,
// 按 tone 出现顺序取序列(input 回声在 confirm 之后,落不进窗口)。
const seq = [];
let beats = 0;
for (let i = mark; i <= confirmIdx; i++) {
const e = w.all[i];
if (e.ev === 'vibrate' && e.pattern === '[8]') beats++;
else if (e.ev === 'start' && e.layer !== 'voice' && isTone(vid(e.url))) seq.push(TONE2G[vid(e.url)]);
}
if (beats !== seq.length) console.log(` [!] 窗口内 beat=${beats} 与音数=${seq.length} 不齐`);
return { seq, confirmIdx };
}
/** 答一个音:回声 tone 必须在 1.5s 内出现,否则重发(吞手势检测,仅驱动自用)。 */
async function answerOne(g) {
for (let tries = 0; tries < 3; tries++) {
const mark = w.all.length;
await post('/gesture', { type: G2E[g] });
const t0 = Date.now();
for (;;) {
const evs = await poll();
if (evs.some((e) => e.ev === 'start' && isTone(vid(e.url)))) return;
if (Date.now() - t0 > 1500) break;
await sleep(120);
}
console.log(` [!] ${g} 被吞(无回声),重发`);
}
throw new Error(`手势 ${g} 连续被吞`);
}
async function answerAll(seq) {
for (const g of seq) await answerOne(g);
}
// ---------------------------------------------------------------- 局 A:认真新手
async function runA() {
console.log('== 局 A(认真新手,female/normal/guide full)');
await post('/session', { game: 'simon', settings: { voice: 'female', speed: 'normal', bgm: 'normal', guide: 'full' } });
await until((e) => e.ev === 'probe_ready', { timeout: 30000 });
await sleep(800);
await gesture('tap', '解锁启动遮罩');
const teach = ['up', 'down', 'left', 'right', 'tap', 'doubletap'];
let ti = 0;
while (ti < teach.length) {
const idWant = `t${ti + 1}_${teach[ti] === 'doubletap' ? 'double' : teach[ti]}`;
const hit = await until((e) => e.ev === 'vstart' && vid(e.url) === idWant, { timeout: 40000 });
console.log(` [听] 教学语音:${vid(hit[0].url)}`);
await until((e) => e.ev === 'vstart' && vid(e.url) === 't_try', { timeout: 20000 });
await waitQuiet(200);
if (ti === 2) {
await gesture('swiperight', '故意把左滑做成右滑');
await until((e) => e.ev === 'vstart' && vid(e.url) === 't_wrong_left', { timeout: 10000 });
console.log(' [听] 纠错:t_wrong_left');
await waitQuiet(200);
}
await gesture(G2E[teach[ti]], `照做「${teach[ti]}」`);
ti++;
}
await until((e) => e.ev === 'vstart' && vid(e.url).startsWith('round_'), { timeout: 30000 });
console.log(' [听] 教学收尾完毕,进第 1 轮');
let round = 1; // 第 1 轮播报已在教学收尾 until 听到
let announceId = 'round_01';
let relistens = 0;
const planRelisten = { 5: true, 7: true };
for (;;) {
const { seq: heard } = await collectPlayback();
console.log(`-- 第 ${round} 轮(${announceId}):序列 ${heard.length} 个音:${heard.join(' ')}`);
if (heard.length !== round + 1) console.log(` [!] 序列长度 ${heard.length} ≠ round+1=${round + 1}`);
let seq = heard;
if (planRelisten[round]) {
// 先把前缀的 up 答掉(期望恰为 up 时上滑=作答,不会触发重听)
while (seq.length && seq[0] === 'up') { await answerOne('up'); seq.shift(); }
}
if (planRelisten[round] && seq.length) {
relistens++;
await gesture('swipeup', `想不起来了,主动重听(第 ${relistens} 次)`);
await until((e) => e.ev === 'vstart' && vid(e.url) === 'relisten', { timeout: 10000 });
console.log(' [听] relisten + 余量句链播');
const rep = await collectPlayback(); // 重播同一序列(进度清零)
seq = rep.seq;
console.log(` [听] 重播 ${seq.length} 个音:${seq.join(' ')}`);
}
await waitQuiet(300); // 占用预告/轮到你了语音播完(第 1 轮 your_turn)
if (round >= 13) {
// 高轮后故意三连错耗尽复活 → 走完整结算(retry_use/chances_out/score_band/new_record)
for (let k = 0; k < 3; k++) {
const wrong = ['down', 'left', 'right', 'tap'].find((x) => x !== seq[0]);
await gesture(G2E[wrong], `故意答错(第 ${k + 1} 次)`);
if (k < 2) {
await until((e) => e.ev === 'vstart' && vid(e.url) === 'retry_use', { timeout: 10000 });
console.log(' [听] retry_use(自动消耗机会,重播同一序列)');
const rep = await collectPlayback();
seq = rep.seq;
await waitQuiet(300);
}
}
} else {
await answerAll(seq);
}
// 追终局或下一轮
const tail = await until(
(e) => e.ev === 'vstart' && (vid(e.url) === 'gameover' || vid(e.url).startsWith('score_band') || vid(e.url).startsWith('round_')),
{ timeout: 25000 },
);
const tid = vid(tail[0].url);
if (tid === 'gameover' || tid.startsWith('score_band')) {
console.log(` [听] 结算开播:${tid}`);
await waitQuiet(600);
await gesture('tap', '结算播报完,单击再来一局');
await until((e) => e.ev === 'vstart' && vid(e.url) === 'round_01', { timeout: 15000 });
console.log(' [听] 新局开始');
break;
}
round++;
announceId = tid;
}
// 新局打两轮,然后下滑进菜单体验菜单导航
for (let r = 1; r <= 2; r++) {
const { seq } = await collectPlayback();
console.log(`-- 新局第 ${r} 轮:${seq.join(' ')}`);
await waitQuiet(300);
await answerAll(seq);
await until((e) => e.ev === 'vstart' && vid(e.url).startsWith('round_'), { timeout: 20000 }).catch(() => {});
}
await gesture('swipedown', '下滑开菜单');
await until((e) => e.ev === 'vstart' && vid(e.url) === 'menu_open', { timeout: 8000 });
await gesture('tap', '菜单里单击切到下一项');
await gesture('tap', '再单击一项');
await gesture('swipeup', '上滑听规则');
await waitQuiet(300);
await gesture('doubletap', '双击确认当前项');
await sleep(600);
console.log('== 局 A 结束');
}
// ---------------------------------------------------------------- 局 B:急性子乱按
async function runB() {
console.log('== 局 B(急性子乱按,male/1.7/guide full)');
await post('/session', { game: 'simon', settings: { voice: 'male', speed: '1.7', bgm: 'normal', guide: 'full' } });
await until((e) => e.ev === 'probe_ready', { timeout: 30000 });
await sleep(800);
await gesture('tap', '解锁');
for (let i = 0; i < 3; i++) await gesture('tap', '连点跳开场旁白');
await gesture('swipeleft', '教学里乱滑');
await gesture('tap', '教学里连点');
await gesture('swipedown', '下滑,跳教学');
await until((e) => e.ev === 'vstart' && vid(e.url).startsWith('round_'), { timeout: 15000 });
console.log(' [听] 进第 1 轮(教学被跳)');
const rnd = () => ['up', 'down', 'left', 'right', 'tap', 'doubletap'][Math.floor(Math.random() * 6)];
let gameoverSeen = false;
for (let guard = 0; guard < 140 && !gameoverSeen; guard++) {
const evs = await poll();
for (const e of evs) {
if (e.ev === 'vstart' && vid(e.url) === 'gameover') { gameoverSeen = true; console.log(' [听] gameover'); }
}
if (gameoverSeen) break;
// 播放/重播中(最近事件有 beat 震):一半概率乱按
if (evs.some((e) => e.ev === 'vibrate' && e.pattern === '[8]') && Math.random() < 0.5) {
await gesture(G2E[rnd()], '播放中乱按一气');
continue;
}
// 轮次播报一响就跳
if (evs.some((e) => e.ev === 'vstart' && vid(e.url).startsWith('round_'))) {
await gesture('tap', '跳轮次播报');
}
await gesture(G2E[rnd()], '凭感觉乱答');
await sleep(200);
}
await waitQuiet(400);
await gesture('swipeup', '结算后上滑听规则');
await waitQuiet(200);
await gesture('tap', '结算里连点');
await gesture('tap', '再点');
await gesture('longpress', '长按试试');
await gesture('swipedown', '下滑开菜单');
await until((e) => e.ev === 'vstart' && vid(e.url) === 'menu_open', { timeout: 8000 }).catch(() => {});
await gesture('tap', '菜单乱点');
await gesture('swipeleft', '菜单乱滑');
await gesture('doubletap', '菜单双击');
await sleep(600);
console.log('== 局 B 结束');
}
const runner = MODE === 'B' ? runB : runA;
runner()
.then(async () => {
const stop = await post('/stop');
console.log('落盘:', stop.outdir, stop.files?.length, '件,', stop.segs, '语音段,', stop.rows, '判定行');
process.exit(0);
})
.catch(async (e) => {
console.error('驱动出错:', e);
try { await post('/stop'); } catch (_) { /* 忽略 */ }
process.exit(1);
});
+87
View File
@@ -0,0 +1,87 @@
# 音序回响 round1 取证结论:状态盲区编号清单(S1..S8)
> 证据来源:
> - **转写** = research/simon-polish/round1/transcript.md(剧本 transcribe.mjs 产物,行号)
> - **A** = research/simon-polish/round1/live-A-transcript.md(认真新手局,female/normal/guide full,
> 打到第 13 轮后故意三连错走完整结算;行号)
> - **B** = research/simon-polish/round1/live-B-transcript.md(急性子乱按局,male/1.7/guide full;
> 行号)
> - 驱动决策日志 live-A-driver.log / live-B-driver.log(含驱动侧"被吞重发"标记)
> 严重级:P0=核心循环断裂级 / P1=明显困惑 / P2=瑕疵。
---
## S1(P1)轮次 / 序列长度信息在跳过播报后永久丢失
- 证据:B 行 4-18(连点把 t0_welcome/skip_hint/t0_goal/t1_up 全部跳过,每下只得到
一记 [20] 震与语音截断,没有"你跳到哪儿了"的确认);B 行 28-37(round_01 播报被
跳,6.1-8.6s 连按四轮手势全被吞,随后直接就是播放音——**玩家不知现在是第几轮、
这轮该听几个音**);对照 A 行 659-662(round_13 播报正常播完时信息是完整的)。
- 影响:跳播报是 12 号文档给的合法加速手段,但跳完即失明;转写行 64「已对上 0/2」
这类进度信息只存在于 harness 旁白,**玩家侧没有任何等价物**。
## S2(P1)playback→input 边界在占用预告 / your_turn 语音链期间吞手势,"轮到你了"与"现在能答"之间无标记
- 证据:A 行 108-115(t=75.44 confirm 震 → 75.45 gd_occ_dt 开播 → 75.75 驱动答
「right」**只有 [10] 识别震、无回声,被吞** → 78.12 重发才被收;驱动日志
live-A-driver.log 行 20「right 被吞(无回声),重发」);B 行 42-46(gd_occ_up
4 秒语音窗口内乱按全吞);B 行 47-49(your_turn 同样把 input 开放时间延后到语音
结束之后)。
- 影响:真实玩家没有"回声缺失检测器"——按了没声,分不清是"手势没识别""还没轮到
我"还是"游戏卡了"。confirm 震标记的是"播放完毕",不是"可以作答";iOS / guide=off
下连 confirm 外的向导标记都没有(00 §2.5)。
## S3(P1)复现进度(对了几 / 剩几)全程不可感知
- 证据:转写行 90-95(R2 三音连答,中途只有回声,无任何进度信号);A 行 659-690
一带(第 13 轮 14 个音,复现中途断片只能靠心算计数);转写行 64/90/107/127/152
的「已对上 k/N」全部是 harness describe() 剧本旁白,非玩家可闻。
- 影响:长轮次复现断片 = 不知道接着答还是重来(规则"重听清零整轮重输"也未在教学
讲明,见 S-list 外观察);对记忆类游戏是纯增压。
## S4(P1)两本账(免费重听 + 真机会)余额不可主动查询
- 证据:账目只在消耗/获得瞬间播报——A 行 185-186(chance_plus)、205-208
(gd_chances_left1)、306-309(gd_chances_left0)、732-736(chances_out);
input 阶段六手势全是答题输入,**无 status key**(space-polish round1 P1 同款诉求
在 simon 复发;上滑被重听占用、双击被第 6 音色占用,豁免表内唯一没留查询锚的
游戏之一)。
- 影响:脑负荷最高的游戏里,"我还能重听几次"全凭几分钟前的记忆;遗忘的代价是
不敢重听(难度虚增)或误判余额(猝死)。
## S5(P1)非输入阶段(announce / roundend)手势静默吞,违反 00 §5.4"3 秒内必须有反馈"
- 证据:A 行 824-830(roundend 表扬链播时驱动下滑开菜单,**菜单没开成也没有任何
反馈**,随后 until 超时 8s——真实玩家此时只会反复滑);B 行 19-21(教学讲解期
乱滑仅 [10]);B 行 29-35(t_skip/round_01 播报期手势全吞)。
- 影响:02 §4.1 只豁免了 playback 的静默;announce/roundend 不在豁免内却没反馈。
急性子玩家的所有"提前操作"都掉进无声洞,进一步强化"不知道自己在哪"。
## S6(P0)gameover 瞬间下滑进菜单 → 结算语音链在菜单里播完 → 结算承诺与所处阶段脱节,关闭菜单后结算屏静默
- 证据:B 行 140-154(t=37.4 判死 → 37.65 乱按的下滑 → menu_open 38.02 → **结算链
gameover/score_band1/replay/rules_prompt 全部在菜单内播完** 38.45-52.84);B 行
161-168(链尾 rules_prompt 承诺「单击屏幕,再来一局」,但 75.22/75.69 两次单击的
真实语义是 menu_home/menu_back 切项——**承诺在菜单内是假的**);B 行 170-174
(77.17 下滑关菜单 → 结算屏 **77.5-85.9s 零语音 8.4 秒**,链已播完,玩家回到结算
页却什么都听不到,直到误打误撞再单击才重开)。
- 影响:round1 live P0「言行一致」的同族漏洞——当时修的是"结算屏单击必须重开",
但结算链**播放在哪个阶段没人看守**。压力线(真实玩家最常见的手型)必然踩中:
死的那一刻手还在屏幕上。核心循环(死→听懂成绩→一键再来)断裂。
## S7(P2)第 1 轮每次重播都重复 your_turn
- 证据:B 行 67(27.48 your_turn)、B 行 96-98(35.29 your_turn)——round 1 两次
复活/重听重播各再播一遍「轮到你了。」;B 局 round 1 内共三遍。
- 影响:不误导但啰嗦,与 14 号文档"提示永不逐字重复"精神相忤;每遍还占 input 开放
前的语音链时长(加重 S2 的吞手势窗口)。
## S8(P2)教学 → 对局过渡与菜单规则语音的叠话
- 证据:B 行 155-160(菜单内上滑 rules 15.8s + rules_prompt,期间 menu 语音与规则
链叠播,菜单项状态被盖住)。
- 影响:P2 瑕疵,不独立修(S6 的红elivery会自然改变该窗口的语音秩序),记录在案。
---
## S-list 外观察(非盲区,记录备查)
- 教学「重听=整轮清零重输」规则未在任何台词讲明(t7_retry 只讲"随时重听");
与 S3 叠加,建议查询句的进度语义顺带锚定"从头答"口径。
- 结算五句链整体完整(A 行 773-784:gameover→score_band5→new_record→replay→
rules_prompt 全兑现,score_band 与真实完成轮数一致),new_record 判定正确。
- 答错复活链账目真实(A 行 694-696 / 732-736:retry_use 2→1、1→0+chances_out,
与 chances=2 的账本一致)。
- 单击重开言行一致在结算屏本身成立(A:结算播报完后单击 → round_01 立即开播)。
- 菜单内单击切项+逐项播报在局 B 实测正常(B 行 161-168)。
@@ -0,0 +1,52 @@
== 局 A(认真新手,female/normal/guide full)
[我] 解锁启动遮罩 → tap
[听] 教学语音:t1_up
[我] 照做「up」 → swipeup
[听] 教学语音:t2_down
[我] 照做「down」 → swipedown
[听] 教学语音:t3_left
[我] 故意把左滑做成右滑 → swiperight
[听] 纠错:t_wrong_left
[我] 照做「left」 → swipeleft
[听] 教学语音:t4_right
[我] 照做「right」 → swiperight
[听] 教学语音:t5_tap
[我] 照做「tap」 → tap
[听] 教学语音:t6_double
[我] 照做「doubletap」 → doubletap
[听] 教学收尾完毕,进第 1 轮
-- 第 1 轮(round_01):序列 2 个音:right down
-- 第 2 轮(round_02):序列 3 个音:right down doubletap
[!] right 被吞(无回声),重发
-- 第 3 轮(round_03):序列 4 个音:right down doubletap down
-- 第 4 轮(round_04):序列 5 个音:right down doubletap down up
-- 第 5 轮(round_05):序列 6 个音:right down doubletap down up tap
[我] 想不起来了,主动重听(第 1 次) → swipeup
[听] relisten + 余量句链播
[听] 重播 6 个音:right down doubletap down up tap
-- 第 6 轮(round_06):序列 7 个音:right down doubletap down up tap right
-- 第 7 轮(round_07):序列 8 个音:right down doubletap down up tap right up
[我] 想不起来了,主动重听(第 2 次) → swipeup
[听] relisten + 余量句链播
[听] 重播 8 个音:right down doubletap down up tap right up
-- 第 8 轮(round_08):序列 9 个音:right down doubletap down up tap right up down
-- 第 9 轮(round_09):序列 10 个音:right down doubletap down up tap right up down down
-- 第 10 轮(round_10):序列 11 个音:right down doubletap down up tap right up down down right
-- 第 11 轮(round_11):序列 12 个音:right down doubletap down up tap right up down down right left
-- 第 12 轮(round_12):序列 13 个音:right down doubletap down up tap right up down down right left up
-- 第 13 轮(round_13):序列 14 个音:right down doubletap down up tap right up down down right left up tap
[我] 故意答错(第 1 次) → swipedown
[听] retry_use(自动消耗机会,重播同一序列)
[我] 故意答错(第 2 次) → swipedown
[听] retry_use(自动消耗机会,重播同一序列)
[我] 故意答错(第 3 次) → swipedown
[听] 结算开播:gameover
[我] 结算播报完,单击再来一局 → tap
[听] 新局开始
-- 新局第 1 轮:tap doubletap
-- 新局第 2 轮:tap doubletap doubletap
[我] 下滑开菜单 → swipedown
驱动出错: Error: until 超时(8115ms)
at until (file:///home/xsl/AutoVideo/SoundGame/research/simon-polish/round1/driver.mjs:47:42)
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async runA (file:///home/xsl/AutoVideo/SoundGame/research/simon-polish/round1/driver.mjs:210:3)
@@ -0,0 +1,894 @@
{"ev":"probe_ready","t":8.200000017881393,"ta":null}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":823.7000000178814,"ta":-0.074}
{"ev":"recstart","mime":"audio/webm;codecs=opus","t":897.5,"ta":0}
{"ev":"fetch","url":"audio/sfx/tone_up.ogg","status":200,"ok":true,"ms":14,"t":912,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_down.ogg","status":200,"ok":true,"ms":14,"t":912.5,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_left.ogg","status":200,"ok":true,"ms":15,"t":912.6000000238419,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_right.ogg","status":200,"ok":true,"ms":15,"t":912.7000000178814,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_tap.ogg","status":200,"ok":true,"ms":15,"t":912.8000000119209,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_doubletap.ogg","status":200,"ok":true,"ms":15,"t":912.9000000059605,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/gameover.ogg","status":200,"ok":true,"ms":15,"t":912.9000000059605,"ta":0.015}
{"ev":"fetch","url":"audio/voice/female/t0_welcome.ogg","status":200,"ok":true,"ms":15,"t":913,"ta":0.016}
{"ev":"fetch","url":"audio/voice/female/t0_goal.ogg","status":200,"ok":true,"ms":15,"t":913,"ta":0.016}
{"ev":"fetch","url":"audio/voice/female/skip_hint.ogg","status":200,"ok":true,"ms":14,"t":913,"ta":0.016}
{"ev":"fetch","url":"audio/voice/female/t_try.ogg","status":200,"ok":true,"ms":15,"t":913.1000000238419,"ta":0.016}
{"ev":"fetch","url":"audio/voice/female/round_01.ogg","status":200,"ok":true,"ms":14,"t":913.1000000238419,"ta":0.016}
{"ev":"vstart","url":"audio/voice/female/t0_welcome.ogg","t":1399.6000000238419,"dur":4.24,"ta":0.502}
{"ev":"vend","url":"audio/voice/female/t0_welcome.ogg","t":5961.5,"reason":"kill","ta":5.064}
{"ev":"vstart","url":"audio/voice/female/skip_hint.ogg","t":5961.800000011921,"dur":1.6,"ta":5.064}
{"ev":"vend","url":"audio/voice/female/skip_hint.ogg","t":7563,"reason":"kill","ta":6.666}
{"ev":"vstart","url":"audio/voice/female/t0_goal.ogg","t":7563.200000017881,"dur":6.08,"ta":6.666}
{"ev":"vend","url":"audio/voice/female/t0_goal.ogg","t":13994.40000000596,"reason":"kill","ta":13.097}
{"ev":"fetch","url":"audio/voice/female/t1_up.ogg","status":200,"ok":true,"ms":3,"t":13997.200000017881,"ta":13.1}
{"ev":"vstart","url":"audio/voice/female/t1_up.ogg","t":14003.300000011921,"dur":4.64,"ta":13.106}
{"ev":"vend","url":"audio/voice/female/t1_up.ogg","t":18939.90000000596,"reason":"kill","ta":18.042}
{"ev":"start","t":18940.20000001788,"sid":1,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":18.043}
{"ev":"vstart","url":"audio/voice/female/t_try.ogg","t":19840.5,"dur":0.7970975056689342,"ta":18.943}
{"ev":"vend","url":"audio/voice/female/t_try.ogg","t":20611.600000023842,"reason":"kill","ta":19.714}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":20881.80000001192,"ta":19.984}
{"ev":"vibrate","pattern":"[10]","t":21242.30000001192,"ta":20.345}
{"ev":"start","t":21242.80000001192,"sid":2,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":20.345}
{"ev":"fetch","url":"audio/voice/female/t_ok.ogg","status":200,"ok":true,"ms":2,"t":21245,"ta":20.348}
{"ev":"vstart","url":"audio/voice/female/t_ok.ogg","t":21247.70000001788,"dur":0.4770975056689342,"ta":20.35}
{"ev":"vend","url":"audio/voice/female/t_ok.ogg","t":21726,"reason":"kill","ta":20.829}
{"ev":"fetch","url":"audio/voice/female/t2_down.ogg","status":200,"ok":true,"ms":3,"t":21728.70000001788,"ta":20.831}
{"ev":"vstart","url":"audio/voice/female/t2_down.ogg","t":21731.90000000596,"dur":2.24,"ta":20.834}
{"ev":"vend","url":"audio/voice/female/t2_down.ogg","t":24070.90000000596,"reason":"kill","ta":23.173}
{"ev":"start","t":24071.100000023842,"sid":3,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":23.174}
{"ev":"vstart","url":"audio/voice/female/t_try.ogg","t":24971.20000001788,"dur":0.7970975056689342,"ta":24.074}
{"ev":"vend","url":"audio/voice/female/t_try.ogg","t":25742.70000001788,"reason":"kill","ta":24.845}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":25947,"ta":25.05}
{"ev":"vibrate","pattern":"[10]","t":26308.100000023842,"ta":25.411}
{"ev":"start","t":26308.100000023842,"sid":4,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":25.411}
{"ev":"vstart","url":"audio/voice/female/t_ok.ogg","t":26308.30000001192,"dur":0.4770975056689342,"ta":25.411}
{"ev":"vend","url":"audio/voice/female/t_ok.ogg","t":26787.5,"reason":"kill","ta":25.89}
{"ev":"fetch","url":"audio/voice/female/t3_left.ogg","status":200,"ok":true,"ms":2,"t":26789.90000000596,"ta":25.892}
{"ev":"vstart","url":"audio/voice/female/t3_left.ogg","t":26793.5,"dur":2.64,"ta":25.896}
{"ev":"vend","url":"audio/voice/female/t3_left.ogg","t":29504.20000001788,"reason":"kill","ta":28.607}
{"ev":"start","t":29504.30000001192,"sid":5,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":28.607}
{"ev":"vstart","url":"audio/voice/female/t_try.ogg","t":30404.5,"dur":0.7970975056689342,"ta":29.507}
{"ev":"vend","url":"audio/voice/female/t_try.ogg","t":31175.5,"reason":"kill","ta":30.278}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":31382.90000000596,"ta":30.485}
{"ev":"vibrate","pattern":"[10]","t":31741.5,"ta":30.844}
{"ev":"vibrate","pattern":"[60,40,60]","t":31741.5,"ta":30.844}
{"ev":"fetch","url":"audio/voice/female/t_wrong_left.ogg","status":200,"ok":true,"ms":2,"t":31744,"ta":30.847}
{"ev":"vstart","url":"audio/voice/female/t_wrong_left.ogg","t":31748.100000023842,"dur":2.48,"ta":30.851}
{"ev":"vend","url":"audio/voice/female/t_wrong_left.ogg","t":34449.30000001192,"reason":"kill","ta":33.552}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":34803.60000002384,"ta":33.906}
{"ev":"vibrate","pattern":"[10]","t":35157.90000000596,"ta":34.26}
{"ev":"start","t":35158,"sid":6,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":34.261}
{"ev":"vstart","url":"audio/voice/female/t_ok.ogg","t":35158.10000002384,"dur":0.4770975056689342,"ta":34.261}
{"ev":"vend","url":"audio/voice/female/t_ok.ogg","t":35633.60000002384,"reason":"kill","ta":34.736}
{"ev":"fetch","url":"audio/voice/female/t4_right.ogg","status":200,"ok":true,"ms":2,"t":35636,"ta":34.739}
{"ev":"vstart","url":"audio/voice/female/t4_right.ogg","t":35638.70000001788,"dur":1.44,"ta":34.741}
{"ev":"vend","url":"audio/voice/female/t4_right.ogg","t":37235.60000002384,"reason":"kill","ta":36.338}
{"ev":"start","t":37235.60000002384,"sid":7,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":36.338}
{"ev":"vstart","url":"audio/voice/female/t_try.ogg","t":38135.90000000596,"dur":0.7970975056689342,"ta":37.238}
{"ev":"vend","url":"audio/voice/female/t_try.ogg","t":38907.10000002384,"reason":"kill","ta":38.01}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":39124.20000001788,"ta":38.227}
{"ev":"vibrate","pattern":"[10]","t":39474.5,"ta":38.577}
{"ev":"start","t":39474.60000002384,"sid":8,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":38.577}
{"ev":"vstart","url":"audio/voice/female/t_ok.ogg","t":39474.70000001788,"dur":0.4770975056689342,"ta":38.577}
{"ev":"vend","url":"audio/voice/female/t_ok.ogg","t":39952.10000002384,"reason":"kill","ta":39.055}
{"ev":"fetch","url":"audio/voice/female/t5_tap.ogg","status":200,"ok":true,"ms":2,"t":39954.5,"ta":39.057}
{"ev":"vstart","url":"audio/voice/female/t5_tap.ogg","t":39957.70000001788,"dur":1.6,"ta":39.06}
{"ev":"vend","url":"audio/voice/female/t5_tap.ogg","t":41554,"reason":"kill","ta":40.657}
{"ev":"start","t":41554.10000002384,"sid":9,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":40.657}
{"ev":"vstart","url":"audio/voice/female/t_try.ogg","t":42454.30000001192,"dur":0.7970975056689342,"ta":41.557}
{"ev":"vend","url":"audio/voice/female/t_try.ogg","t":43225.70000001788,"reason":"kill","ta":42.328}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":43437.80000001192,"ta":42.54}
{"ev":"vibrate","pattern":"[20]","t":43801.30000001192,"ta":42.904}
{"ev":"start","t":43801.5,"sid":10,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":42.904}
{"ev":"vstart","url":"audio/voice/female/t_ok.ogg","t":43801.60000002384,"dur":0.4770975056689342,"ta":42.904}
{"ev":"vend","url":"audio/voice/female/t_ok.ogg","t":44293.80000001192,"reason":"kill","ta":43.396}
{"ev":"fetch","url":"audio/voice/female/t6_double.ogg","status":200,"ok":true,"ms":3,"t":44296.40000000596,"ta":43.399}
{"ev":"vstart","url":"audio/voice/female/t6_double.ogg","t":44299.20000001788,"dur":2.16,"ta":43.402}
{"ev":"vend","url":"audio/voice/female/t6_double.ogg","t":46639,"reason":"kill","ta":45.742}
{"ev":"start","t":46639.10000002384,"sid":11,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":45.742}
{"ev":"vstart","url":"audio/voice/female/t_try.ogg","t":47539.30000001192,"dur":0.7970975056689342,"ta":46.642}
{"ev":"vend","url":"audio/voice/female/t_try.ogg","t":48310.5,"reason":"kill","ta":47.413}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":48579.80000001192,"ta":47.682}
{"ev":"vibrate","pattern":"[20]","t":48827.70000001788,"ta":47.93}
{"ev":"start","t":48827.90000000596,"sid":12,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":47.93}
{"ev":"vstart","url":"audio/voice/female/t_ok.ogg","t":48827.90000000596,"dur":0.4770975056689342,"ta":47.93}
{"ev":"vend","url":"audio/voice/female/t_ok.ogg","t":49308.90000000596,"reason":"kill","ta":48.411}
{"ev":"fetch","url":"audio/voice/female/t7_ready.ogg","status":200,"ok":true,"ms":3,"t":49311.40000000596,"ta":48.414}
{"ev":"vstart","url":"audio/voice/female/t7_ready.ogg","t":49316.10000002384,"dur":3.44,"ta":48.419}
{"ev":"vend","url":"audio/voice/female/t7_ready.ogg","t":52768.5,"reason":"kill","ta":51.871}
{"ev":"fetch","url":"audio/voice/female/t7_retry.ogg","status":200,"ok":true,"ms":3,"t":52771.30000001192,"ta":51.874}
{"ev":"vstart","url":"audio/voice/female/t7_retry.ogg","t":52778.20000001788,"dur":5.76,"ta":51.881}
{"ev":"vend","url":"audio/voice/female/t7_retry.ogg","t":58735.5,"reason":"kill","ta":57.838}
{"ev":"fetch","url":"audio/voice/female/gd_economy.ogg","status":200,"ok":true,"ms":3,"t":58738.20000001788,"ta":57.841}
{"ev":"vstart","url":"audio/voice/female/gd_economy.ogg","t":58744.80000001192,"dur":6.72,"ta":57.847}
{"ev":"vend","url":"audio/voice/female/gd_economy.ogg","t":65538.20000001788,"reason":"kill","ta":64.641}
{"ev":"vstart","url":"audio/voice/female/round_01.ogg","t":65538.70000001788,"dur":1.52,"ta":64.641}
{"ev":"vend","url":"audio/voice/female/round_01.ogg","t":67140.20000001788,"reason":"kill","ta":66.243}
{"ev":"vibrate","pattern":"[8]","t":67140.40000000596,"ta":66.243}
{"ev":"start","t":67140.5,"sid":13,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":66.243}
{"ev":"vibrate","pattern":"[8]","t":67840.70000001788,"ta":66.943}
{"ev":"start","t":67840.80000001192,"sid":14,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":66.943}
{"ev":"vibrate","pattern":"[20]","t":68941,"ta":68.044}
{"ev":"fetch","url":"audio/voice/female/your_turn.ogg","status":200,"ok":true,"ms":3,"t":68944.60000002384,"ta":68.047}
{"ev":"vstart","url":"audio/voice/female/your_turn.ogg","t":68947.30000001192,"dur":0.7970975056689342,"ta":68.05}
{"ev":"vend","url":"audio/voice/female/your_turn.ogg","t":69717.5,"reason":"kill","ta":68.82}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":70135.10000002384,"ta":69.238}
{"ev":"vibrate","pattern":"[10]","t":70490.10000002384,"ta":69.593}
{"ev":"start","t":70490.20000001788,"sid":15,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":69.593}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":70897.70000001788,"ta":70}
{"ev":"vibrate","pattern":"[10]","t":71256.5,"ta":70.359}
{"ev":"vibrate","pattern":"[100]","t":71256.70000001788,"ta":70.359}
{"ev":"start","t":71256.90000000596,"sid":16,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":70.359}
{"ev":"fetch","url":"audio/voice/female/correct.ogg","status":200,"ok":true,"ms":3,"t":71259.20000001788,"ta":70.362}
{"ev":"vstart","url":"audio/voice/female/correct.ogg","t":71261.90000000596,"dur":0.6370975056689342,"ta":70.364}
{"ev":"vend","url":"audio/voice/female/correct.ogg","t":72016.10000002384,"reason":"kill","ta":71.119}
{"ev":"fetch","url":"audio/voice/female/round_02.ogg","status":200,"ok":true,"ms":3,"t":72319.20000001788,"ta":71.422}
{"ev":"vstart","url":"audio/voice/female/round_02.ogg","t":72322.5,"dur":1.44,"ta":71.425}
{"ev":"vend","url":"audio/voice/female/round_02.ogg","t":73920.20000001788,"reason":"kill","ta":73.023}
{"ev":"vibrate","pattern":"[8]","t":73920.20000001788,"ta":73.023}
{"ev":"start","t":73920.30000001192,"sid":17,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":73.023}
{"ev":"vibrate","pattern":"[8]","t":74594.40000000596,"ta":73.697}
{"ev":"start","t":74594.5,"sid":18,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":73.697}
{"ev":"vibrate","pattern":"[8]","t":75268.60000002384,"ta":74.371}
{"ev":"start","t":75268.70000001788,"sid":19,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":74.371}
{"ev":"vibrate","pattern":"[20]","t":76342.90000000596,"ta":75.445}
{"ev":"fetch","url":"audio/voice/female/gd_occ_dt.ogg","status":200,"ok":true,"ms":3,"t":76345.80000001192,"ta":75.448}
{"ev":"vstart","url":"audio/voice/female/gd_occ_dt.ogg","t":76349.10000002384,"dur":1.68,"ta":75.452}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":76648.5,"ta":75.751}
{"ev":"vibrate","pattern":"[10]","t":77006.5,"ta":76.109}
{"ev":"vend","url":"audio/voice/female/gd_occ_dt.ogg","t":78215.30000001192,"reason":"kill","ta":77.318}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":79015.60000002384,"ta":78.118}
{"ev":"vibrate","pattern":"[10]","t":79372.80000001192,"ta":78.475}
{"ev":"start","t":79372.90000000596,"sid":20,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":78.475}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":79779.80000001192,"ta":78.882}
{"ev":"vibrate","pattern":"[10]","t":80139.20000001788,"ta":79.242}
{"ev":"start","t":80139.30000001192,"sid":21,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":79.242}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":80545.60000002384,"ta":79.648}
{"ev":"vibrate","pattern":"[20]","t":80792.60000002384,"ta":79.895}
{"ev":"vibrate","pattern":"[100]","t":80792.70000001788,"ta":79.895}
{"ev":"start","t":80793,"sid":22,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":79.896}
{"ev":"fetch","url":"audio/voice/female/gd_clear.ogg","status":200,"ok":true,"ms":3,"t":80795.20000001788,"ta":79.898}
{"ev":"vstart","url":"audio/voice/female/gd_clear.ogg","t":80798.80000001192,"dur":1.84,"ta":79.901}
{"ev":"vend","url":"audio/voice/female/gd_clear.ogg","t":82673.20000001788,"reason":"kill","ta":81.776}
{"ev":"fetch","url":"audio/voice/female/round_03.ogg","status":200,"ok":true,"ms":3,"t":82975.90000000596,"ta":82.078}
{"ev":"vstart","url":"audio/voice/female/round_03.ogg","t":82979,"dur":1.68,"ta":82.082}
{"ev":"vend","url":"audio/voice/female/round_03.ogg","t":84855.60000002384,"reason":"kill","ta":83.958}
{"ev":"vibrate","pattern":"[8]","t":84855.70000001788,"ta":83.958}
{"ev":"start","t":84855.90000000596,"sid":23,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":83.958}
{"ev":"vibrate","pattern":"[8]","t":85503.90000000596,"ta":84.606}
{"ev":"start","t":85504.10000002384,"sid":24,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":84.607}
{"ev":"vibrate","pattern":"[8]","t":86152,"ta":85.255}
{"ev":"start","t":86152.20000001788,"sid":25,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":85.255}
{"ev":"vibrate","pattern":"[8]","t":86800.30000001192,"ta":85.903}
{"ev":"start","t":86800.40000000596,"sid":26,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":85.903}
{"ev":"vibrate","pattern":"[20]","t":87848.60000002384,"ta":86.951}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":88276.40000000596,"ta":87.379}
{"ev":"vibrate","pattern":"[10]","t":88639.10000002384,"ta":87.742}
{"ev":"start","t":88639.20000001788,"sid":27,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":87.742}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":89045.40000000596,"ta":88.148}
{"ev":"vibrate","pattern":"[10]","t":89405.70000001788,"ta":88.508}
{"ev":"start","t":89405.80000001192,"sid":28,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":88.508}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":89812.5,"ta":88.915}
{"ev":"vibrate","pattern":"[20]","t":90059.20000001788,"ta":89.162}
{"ev":"start","t":90059.30000001192,"sid":29,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":89.162}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":90466.80000001192,"ta":89.569}
{"ev":"vibrate","pattern":"[10]","t":90822.5,"ta":89.925}
{"ev":"vibrate","pattern":"[100]","t":90822.60000002384,"ta":89.925}
{"ev":"start","t":90822.70000001788,"sid":30,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":89.925}
{"ev":"vstart","url":"audio/voice/female/correct.ogg","t":90822.80000001192,"dur":0.6370975056689342,"ta":89.925}
{"ev":"vend","url":"audio/voice/female/correct.ogg","t":91589,"reason":"kill","ta":90.692}
{"ev":"fetch","url":"audio/voice/female/round_04.ogg","status":200,"ok":true,"ms":3,"t":91892.20000001788,"ta":90.995}
{"ev":"vstart","url":"audio/voice/female/round_04.ogg","t":91895.80000001192,"dur":1.84,"ta":90.998}
{"ev":"vend","url":"audio/voice/female/round_04.ogg","t":93771.5,"reason":"kill","ta":92.874}
{"ev":"vibrate","pattern":"[8]","t":93771.5,"ta":92.874}
{"ev":"start","t":93771.60000002384,"sid":31,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":92.874}
{"ev":"vibrate","pattern":"[8]","t":94393.70000001788,"ta":93.496}
{"ev":"start","t":94393.70000001788,"sid":32,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":93.496}
{"ev":"vibrate","pattern":"[8]","t":95015.80000001192,"ta":94.118}
{"ev":"start","t":95015.90000000596,"sid":33,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":94.118}
{"ev":"vibrate","pattern":"[8]","t":95638,"ta":94.741}
{"ev":"start","t":95638.10000002384,"sid":34,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":94.741}
{"ev":"vibrate","pattern":"[8]","t":96260.20000001788,"ta":95.363}
{"ev":"start","t":96260.30000001192,"sid":35,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":95.363}
{"ev":"vibrate","pattern":"[20]","t":97282.5,"ta":96.385}
{"ev":"fetch","url":"audio/voice/female/gd_occ_both.ogg","status":200,"ok":true,"ms":3,"t":97285.20000001788,"ta":96.388}
{"ev":"vstart","url":"audio/voice/female/gd_occ_both.ogg","t":97289.90000000596,"dur":2.72,"ta":96.392}
{"ev":"vend","url":"audio/voice/female/gd_occ_both.ogg","t":99993.80000001192,"reason":"kill","ta":99.096}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":100445.20000001788,"ta":99.548}
{"ev":"vibrate","pattern":"[10]","t":100805.20000001788,"ta":99.908}
{"ev":"start","t":100805.30000001192,"sid":36,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":99.908}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":101210,"ta":100.313}
{"ev":"vibrate","pattern":"[10]","t":101571.70000001788,"ta":100.674}
{"ev":"start","t":101571.90000000596,"sid":37,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":100.674}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":101979,"ta":101.082}
{"ev":"vibrate","pattern":"[20]","t":102225.30000001192,"ta":101.328}
{"ev":"start","t":102225.30000001192,"sid":38,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":101.328}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":102632.5,"ta":101.735}
{"ev":"vibrate","pattern":"[10]","t":102988.20000001788,"ta":102.091}
{"ev":"start","t":102988.30000001192,"sid":39,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":102.091}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":103393.60000002384,"ta":102.496}
{"ev":"vibrate","pattern":"[10]","t":103755.10000002384,"ta":102.858}
{"ev":"vibrate","pattern":"[100]","t":103755.10000002384,"ta":102.858}
{"ev":"vibrate","pattern":"[15]","t":103755.20000001788,"ta":102.858}
{"ev":"start","t":103755.30000001192,"sid":40,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":102.858}
{"ev":"vstart","url":"audio/voice/female/gd_clear.ogg","t":103755.30000001192,"dur":1.84,"ta":102.858}
{"ev":"vend","url":"audio/voice/female/gd_clear.ogg","t":105635.70000001788,"reason":"kill","ta":104.738}
{"ev":"fetch","url":"audio/voice/female/chance_plus.ogg","status":200,"ok":true,"ms":3,"t":105638.40000000596,"ta":104.741}
{"ev":"vstart","url":"audio/voice/female/chance_plus.ogg","t":105641.90000000596,"dur":1.44,"ta":104.744}
{"ev":"vend","url":"audio/voice/female/chance_plus.ogg","t":107237.90000000596,"reason":"kill","ta":106.34}
{"ev":"fetch","url":"audio/voice/female/round_05.ogg","status":200,"ok":true,"ms":3,"t":107540.70000001788,"ta":106.643}
{"ev":"vstart","url":"audio/voice/female/round_05.ogg","t":107545.10000002384,"dur":2.96,"ta":106.648}
{"ev":"vibrate","pattern":"[8]","t":110038.5,"ta":109.141}
{"ev":"start","t":110038.60000002384,"sid":41,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":109.141}
{"ev":"vend","url":"audio/voice/female/round_05.ogg","t":110534.90000000596,"reason":"kill","ta":109.637}
{"ev":"vibrate","pattern":"[8]","t":110634.70000001788,"ta":109.737}
{"ev":"start","t":110634.80000001192,"sid":42,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":109.737}
{"ev":"vibrate","pattern":"[8]","t":111230.80000001192,"ta":110.333}
{"ev":"start","t":111230.90000000596,"sid":43,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":110.333}
{"ev":"vibrate","pattern":"[8]","t":111827,"ta":110.93}
{"ev":"start","t":111827.10000002384,"sid":44,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":110.93}
{"ev":"vibrate","pattern":"[8]","t":112423.20000001788,"ta":111.526}
{"ev":"start","t":112423.20000001788,"sid":45,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":111.526}
{"ev":"vibrate","pattern":"[8]","t":113019.30000001192,"ta":112.122}
{"ev":"start","t":113019.40000000596,"sid":46,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":112.122}
{"ev":"vibrate","pattern":"[20]","t":114015.60000002384,"ta":113.118}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":114139.80000001192,"ta":113.242}
{"ev":"vibrate","pattern":"[10]","t":114505,"ta":113.608}
{"ev":"vibrate","pattern":"[15]","t":114505.20000001788,"ta":113.608}
{"ev":"fetch","url":"audio/voice/female/relisten.ogg","status":200,"ok":true,"ms":3,"t":114508,"ta":113.611}
{"ev":"vstart","url":"audio/voice/female/relisten.ogg","t":114510.90000000596,"dur":0.7996371882086167,"ta":113.613}
{"ev":"vend","url":"audio/voice/female/relisten.ogg","t":115271.20000001788,"reason":"kill","ta":114.374}
{"ev":"fetch","url":"audio/voice/female/gd_chances_left1.ogg","status":200,"ok":true,"ms":3,"t":115273.70000001788,"ta":114.376}
{"ev":"vstart","url":"audio/voice/female/gd_chances_left1.ogg","t":115277.30000001192,"dur":1.52,"ta":114.38}
{"ev":"vend","url":"audio/voice/female/gd_chances_left1.ogg","t":116873.40000000596,"reason":"kill","ta":115.976}
{"ev":"vibrate","pattern":"[8]","t":116873.5,"ta":115.976}
{"ev":"start","t":116873.5,"sid":47,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":115.976}
{"ev":"vibrate","pattern":"[8]","t":117469.70000001788,"ta":116.572}
{"ev":"start","t":117469.80000001192,"sid":48,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":116.572}
{"ev":"vibrate","pattern":"[8]","t":118065.90000000596,"ta":117.168}
{"ev":"start","t":118066,"sid":49,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":117.169}
{"ev":"vibrate","pattern":"[8]","t":118662,"ta":117.765}
{"ev":"start","t":118662.10000002384,"sid":50,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":117.765}
{"ev":"vibrate","pattern":"[8]","t":119258.30000001192,"ta":118.361}
{"ev":"start","t":119258.30000001192,"sid":51,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":118.361}
{"ev":"vibrate","pattern":"[8]","t":119854.5,"ta":118.957}
{"ev":"start","t":119854.5,"sid":52,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":118.957}
{"ev":"vibrate","pattern":"[20]","t":120850.70000001788,"ta":119.953}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":121243,"ta":120.346}
{"ev":"vibrate","pattern":"[10]","t":121604.60000002384,"ta":120.707}
{"ev":"start","t":121604.70000001788,"sid":53,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":120.707}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":122011.40000000596,"ta":121.114}
{"ev":"vibrate","pattern":"[10]","t":122371.20000001788,"ta":121.474}
{"ev":"start","t":122371.30000001192,"sid":54,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":121.474}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":122777.40000000596,"ta":121.88}
{"ev":"vibrate","pattern":"[20]","t":123024.30000001192,"ta":122.127}
{"ev":"start","t":123024.40000000596,"sid":55,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":122.127}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":123431.70000001788,"ta":122.534}
{"ev":"vibrate","pattern":"[10]","t":123788.10000002384,"ta":122.891}
{"ev":"start","t":123788.20000001788,"sid":56,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":122.891}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":124195.70000001788,"ta":123.298}
{"ev":"vibrate","pattern":"[10]","t":124554.10000002384,"ta":123.657}
{"ev":"start","t":124554.20000001788,"sid":57,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":123.657}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":124960.5,"ta":124.063}
{"ev":"vibrate","pattern":"[20]","t":125323.60000002384,"ta":124.426}
{"ev":"vibrate","pattern":"[100]","t":125323.70000001788,"ta":124.426}
{"ev":"start","t":125323.80000001192,"sid":58,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":124.426}
{"ev":"vstart","url":"audio/voice/female/correct.ogg","t":125324,"dur":0.6370975056689342,"ta":124.427}
{"ev":"vend","url":"audio/voice/female/correct.ogg","t":126090.90000000596,"reason":"kill","ta":125.193}
{"ev":"fetch","url":"audio/voice/female/round_06.ogg","status":200,"ok":true,"ms":3,"t":126394,"ta":125.497}
{"ev":"vstart","url":"audio/voice/female/round_06.ogg","t":126397.80000001192,"dur":1.68,"ta":125.5}
{"ev":"vend","url":"audio/voice/female/round_06.ogg","t":128273.30000001192,"reason":"kill","ta":127.376}
{"ev":"vibrate","pattern":"[8]","t":128273.40000000596,"ta":127.376}
{"ev":"start","t":128273.5,"sid":59,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":127.376}
{"ev":"vibrate","pattern":"[8]","t":128843.70000001788,"ta":127.946}
{"ev":"start","t":128843.70000001788,"sid":60,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":127.946}
{"ev":"vibrate","pattern":"[8]","t":129413.80000001192,"ta":128.516}
{"ev":"start","t":129414,"sid":61,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":128.517}
{"ev":"vibrate","pattern":"[8]","t":129983.90000000596,"ta":129.086}
{"ev":"start","t":129984.10000002384,"sid":62,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":129.087}
{"ev":"vibrate","pattern":"[8]","t":130554.20000001788,"ta":129.657}
{"ev":"start","t":130554.30000001192,"sid":63,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":129.657}
{"ev":"vibrate","pattern":"[8]","t":131124.30000001192,"ta":130.227}
{"ev":"start","t":131124.5,"sid":64,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":130.227}
{"ev":"vibrate","pattern":"[8]","t":131694.60000002384,"ta":130.797}
{"ev":"start","t":131694.70000001788,"sid":65,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":130.797}
{"ev":"vibrate","pattern":"[20]","t":132664.80000001192,"ta":131.767}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":132996.30000001192,"ta":132.099}
{"ev":"vibrate","pattern":"[10]","t":133354.10000002384,"ta":132.457}
{"ev":"start","t":133354.30000001192,"sid":66,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":132.457}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":133760.30000001192,"ta":132.863}
{"ev":"vibrate","pattern":"[10]","t":134120.40000000596,"ta":133.223}
{"ev":"start","t":134120.5,"sid":67,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":133.223}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":134527.60000002384,"ta":133.63}
{"ev":"vibrate","pattern":"[20]","t":134774.20000001788,"ta":133.877}
{"ev":"start","t":134774.20000001788,"sid":68,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":133.877}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":135180.60000002384,"ta":134.283}
{"ev":"vibrate","pattern":"[10]","t":135537.10000002384,"ta":134.64}
{"ev":"start","t":135537.20000001788,"sid":69,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":134.64}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":135943.40000000596,"ta":135.046}
{"ev":"vibrate","pattern":"[10]","t":136304,"ta":135.407}
{"ev":"start","t":136304.10000002384,"sid":70,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":135.407}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":136710.60000002384,"ta":135.813}
{"ev":"vibrate","pattern":"[20]","t":137073.90000000596,"ta":136.176}
{"ev":"start","t":137074.10000002384,"sid":71,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":136.177}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":137179.60000002384,"ta":136.282}
{"ev":"vibrate","pattern":"[10]","t":137537.10000002384,"ta":136.64}
{"ev":"vibrate","pattern":"[100]","t":137537.10000002384,"ta":136.64}
{"ev":"start","t":137537.20000001788,"sid":72,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":136.64}
{"ev":"vstart","url":"audio/voice/female/gd_clear.ogg","t":137537.20000001788,"dur":1.84,"ta":136.64}
{"ev":"vend","url":"audio/voice/female/gd_clear.ogg","t":139417.90000000596,"reason":"kill","ta":138.52}
{"ev":"fetch","url":"audio/voice/female/round_07.ogg","status":200,"ok":true,"ms":3,"t":139721.20000001788,"ta":138.824}
{"ev":"vstart","url":"audio/voice/female/round_07.ogg","t":139725.60000002384,"dur":2.96,"ta":138.828}
{"ev":"vibrate","pattern":"[8]","t":142218.40000000596,"ta":141.321}
{"ev":"start","t":142218.60000002384,"sid":73,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":141.321}
{"ev":"vend","url":"audio/voice/female/round_07.ogg","t":142714.90000000596,"reason":"kill","ta":141.817}
{"ev":"vibrate","pattern":"[8]","t":142762.70000001788,"ta":141.865}
{"ev":"start","t":142762.70000001788,"sid":74,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":141.865}
{"ev":"vibrate","pattern":"[8]","t":143306.80000001192,"ta":142.409}
{"ev":"start","t":143306.90000000596,"sid":75,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":142.409}
{"ev":"vibrate","pattern":"[8]","t":143851,"ta":142.954}
{"ev":"start","t":143851.10000002384,"sid":76,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":142.954}
{"ev":"vibrate","pattern":"[8]","t":144395.20000001788,"ta":143.498}
{"ev":"start","t":144395.40000000596,"sid":77,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":143.498}
{"ev":"vibrate","pattern":"[8]","t":144939.30000001192,"ta":144.042}
{"ev":"start","t":144939.5,"sid":78,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":144.042}
{"ev":"vibrate","pattern":"[8]","t":145483.5,"ta":144.586}
{"ev":"start","t":145483.60000002384,"sid":79,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":144.586}
{"ev":"vibrate","pattern":"[8]","t":146027.80000001192,"ta":145.13}
{"ev":"start","t":146027.90000000596,"sid":80,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":145.13}
{"ev":"vibrate","pattern":"[20]","t":146972.10000002384,"ta":146.075}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":147057.40000000596,"ta":146.16}
{"ev":"vibrate","pattern":"[10]","t":147419.90000000596,"ta":146.522}
{"ev":"vibrate","pattern":"[15]","t":147419.90000000596,"ta":146.522}
{"ev":"vstart","url":"audio/voice/female/relisten.ogg","t":147420,"dur":0.7996371882086167,"ta":146.523}
{"ev":"vend","url":"audio/voice/female/relisten.ogg","t":148171.10000002384,"reason":"kill","ta":147.274}
{"ev":"fetch","url":"audio/voice/female/gd_chances_left0.ogg","status":200,"ok":true,"ms":3,"t":148173.80000001192,"ta":147.276}
{"ev":"vstart","url":"audio/voice/female/gd_chances_left0.ogg","t":148180.30000001192,"dur":5.44,"ta":147.283}
{"ev":"vend","url":"audio/voice/female/gd_chances_left0.ogg","t":153859.60000002384,"reason":"kill","ta":152.962}
{"ev":"vibrate","pattern":"[8]","t":153859.70000001788,"ta":152.962}
{"ev":"start","t":153859.70000001788,"sid":81,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":152.962}
{"ev":"vibrate","pattern":"[8]","t":154403.80000001192,"ta":153.506}
{"ev":"start","t":154404,"sid":82,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":153.507}
{"ev":"vibrate","pattern":"[8]","t":154948,"ta":154.051}
{"ev":"start","t":154948.20000001788,"sid":83,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":154.051}
{"ev":"vibrate","pattern":"[8]","t":155492.20000001788,"ta":154.595}
{"ev":"start","t":155492.30000001192,"sid":84,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":154.595}
{"ev":"vibrate","pattern":"[8]","t":156036.40000000596,"ta":155.139}
{"ev":"start","t":156036.5,"sid":85,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":155.139}
{"ev":"vibrate","pattern":"[8]","t":156580.5,"ta":155.683}
{"ev":"start","t":156580.70000001788,"sid":86,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":155.683}
{"ev":"vibrate","pattern":"[8]","t":157124.80000001192,"ta":156.227}
{"ev":"start","t":157124.90000000596,"sid":87,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":156.227}
{"ev":"vibrate","pattern":"[8]","t":157668.90000000596,"ta":156.771}
{"ev":"start","t":157669,"sid":88,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":156.772}
{"ev":"vibrate","pattern":"[20]","t":158613.10000002384,"ta":157.716}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":158957.60000002384,"ta":158.06}
{"ev":"vibrate","pattern":"[10]","t":159319.40000000596,"ta":158.422}
{"ev":"start","t":159319.5,"sid":89,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":158.422}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":159725.60000002384,"ta":158.828}
{"ev":"vibrate","pattern":"[10]","t":160085.90000000596,"ta":159.188}
{"ev":"start","t":160085.90000000596,"sid":90,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":159.188}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":160492.5,"ta":159.595}
{"ev":"vibrate","pattern":"[20]","t":160738.70000001788,"ta":159.841}
{"ev":"start","t":160738.80000001192,"sid":91,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":159.841}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":161145.30000001192,"ta":160.248}
{"ev":"vibrate","pattern":"[10]","t":161503.10000002384,"ta":160.606}
{"ev":"start","t":161503.20000001788,"sid":92,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":160.606}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":161909.80000001192,"ta":161.012}
{"ev":"vibrate","pattern":"[10]","t":162269.40000000596,"ta":161.372}
{"ev":"start","t":162269.5,"sid":93,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":161.372}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":162675,"ta":161.778}
{"ev":"vibrate","pattern":"[20]","t":163038.20000001788,"ta":162.141}
{"ev":"start","t":163038.40000000596,"sid":94,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":162.141}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":163144.60000002384,"ta":162.247}
{"ev":"vibrate","pattern":"[10]","t":163503.10000002384,"ta":162.606}
{"ev":"start","t":163503.10000002384,"sid":95,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":162.606}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":163909.80000001192,"ta":163.012}
{"ev":"vibrate","pattern":"[10]","t":164269.70000001788,"ta":163.372}
{"ev":"vibrate","pattern":"[100]","t":164269.80000001192,"ta":163.372}
{"ev":"start","t":164269.80000001192,"sid":96,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":163.372}
{"ev":"vstart","url":"audio/voice/female/correct.ogg","t":164269.90000000596,"dur":0.6370975056689342,"ta":163.372}
{"ev":"vend","url":"audio/voice/female/correct.ogg","t":165027.40000000596,"reason":"kill","ta":164.13}
{"ev":"fetch","url":"audio/voice/female/round_08.ogg","status":200,"ok":true,"ms":3,"t":165330.60000002384,"ta":164.433}
{"ev":"vstart","url":"audio/voice/female/round_08.ogg","t":165334.70000001788,"dur":2.08,"ta":164.437}
{"ev":"vend","url":"audio/voice/female/round_08.ogg","t":167674.40000000596,"reason":"kill","ta":166.777}
{"ev":"vibrate","pattern":"[8]","t":167674.5,"ta":166.777}
{"ev":"start","t":167674.60000002384,"sid":97,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":166.777}
{"ev":"vibrate","pattern":"[8]","t":168192.70000001788,"ta":167.295}
{"ev":"start","t":168192.80000001192,"sid":98,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":167.295}
{"ev":"vibrate","pattern":"[8]","t":168710.80000001192,"ta":167.813}
{"ev":"start","t":168711,"sid":99,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":167.814}
{"ev":"vibrate","pattern":"[8]","t":169229.10000002384,"ta":168.332}
{"ev":"start","t":169229.10000002384,"sid":100,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":168.332}
{"ev":"vibrate","pattern":"[8]","t":169747.20000001788,"ta":168.85}
{"ev":"start","t":169747.30000001192,"sid":101,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":168.85}
{"ev":"vibrate","pattern":"[8]","t":170265.40000000596,"ta":169.368}
{"ev":"start","t":170265.40000000596,"sid":102,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":169.368}
{"ev":"vibrate","pattern":"[8]","t":170783.60000002384,"ta":169.886}
{"ev":"start","t":170783.70000001788,"sid":103,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":169.886}
{"ev":"vibrate","pattern":"[8]","t":171301.80000001192,"ta":170.404}
{"ev":"start","t":171301.90000000596,"sid":104,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":170.404}
{"ev":"vibrate","pattern":"[8]","t":171820,"ta":170.923}
{"ev":"start","t":171820.10000002384,"sid":105,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":170.923}
{"ev":"vibrate","pattern":"[20]","t":172738.30000001192,"ta":171.841}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":173112.80000001192,"ta":172.215}
{"ev":"vibrate","pattern":"[10]","t":173469.20000001788,"ta":172.572}
{"ev":"start","t":173469.30000001192,"sid":106,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":172.572}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":173875.80000001192,"ta":172.978}
{"ev":"vibrate","pattern":"[10]","t":174236,"ta":173.339}
{"ev":"start","t":174236,"sid":107,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":173.339}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":174643,"ta":173.746}
{"ev":"vibrate","pattern":"[20]","t":174889.60000002384,"ta":173.992}
{"ev":"start","t":174889.60000002384,"sid":108,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":173.992}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":175296.60000002384,"ta":174.399}
{"ev":"vibrate","pattern":"[10]","t":175652.10000002384,"ta":174.755}
{"ev":"start","t":175652.20000001788,"sid":109,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":174.755}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":176058.70000001788,"ta":175.161}
{"ev":"vibrate","pattern":"[10]","t":176418.60000002384,"ta":175.521}
{"ev":"start","t":176418.60000002384,"sid":110,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":175.521}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":176825.70000001788,"ta":175.928}
{"ev":"vibrate","pattern":"[20]","t":177188.60000002384,"ta":176.291}
{"ev":"start","t":177188.80000001192,"sid":111,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":176.291}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":177293.90000000596,"ta":176.396}
{"ev":"vibrate","pattern":"[10]","t":177651.90000000596,"ta":176.754}
{"ev":"start","t":177652,"sid":112,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":176.755}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":178058.90000000596,"ta":177.161}
{"ev":"vibrate","pattern":"[10]","t":178418.90000000596,"ta":177.521}
{"ev":"start","t":178419,"sid":113,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":177.522}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":178827.10000002384,"ta":177.93}
{"ev":"vibrate","pattern":"[10]","t":179185.5,"ta":178.288}
{"ev":"vibrate","pattern":"[100]","t":179185.5,"ta":178.288}
{"ev":"start","t":179185.60000002384,"sid":114,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":178.288}
{"ev":"vstart","url":"audio/voice/female/gd_clear.ogg","t":179185.70000001788,"dur":1.84,"ta":178.288}
{"ev":"vend","url":"audio/voice/female/gd_clear.ogg","t":181070.90000000596,"reason":"kill","ta":180.173}
{"ev":"fetch","url":"audio/voice/female/round_09.ogg","status":200,"ok":true,"ms":3,"t":181374.20000001788,"ta":180.477}
{"ev":"vstart","url":"audio/voice/female/round_09.ogg","t":181378.30000001192,"dur":2.08,"ta":180.481}
{"ev":"vend","url":"audio/voice/female/round_09.ogg","t":183717.90000000596,"reason":"kill","ta":182.82}
{"ev":"vibrate","pattern":"[8]","t":183717.90000000596,"ta":182.82}
{"ev":"start","t":183718.10000002384,"sid":115,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":182.821}
{"ev":"vibrate","pattern":"[8]","t":184210.10000002384,"ta":183.313}
{"ev":"start","t":184210.30000001192,"sid":116,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":183.313}
{"ev":"vibrate","pattern":"[8]","t":184702.30000001192,"ta":183.805}
{"ev":"start","t":184702.5,"sid":117,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":183.805}
{"ev":"vibrate","pattern":"[8]","t":185194.60000002384,"ta":184.297}
{"ev":"start","t":185194.70000001788,"sid":118,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":184.297}
{"ev":"vibrate","pattern":"[8]","t":185686.80000001192,"ta":184.789}
{"ev":"start","t":185686.90000000596,"sid":119,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":184.789}
{"ev":"vibrate","pattern":"[8]","t":186179,"ta":185.282}
{"ev":"start","t":186179,"sid":120,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":185.282}
{"ev":"vibrate","pattern":"[8]","t":186671.10000002384,"ta":185.774}
{"ev":"start","t":186671.20000001788,"sid":121,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":185.774}
{"ev":"vibrate","pattern":"[8]","t":187163.30000001192,"ta":186.266}
{"ev":"start","t":187163.40000000596,"sid":122,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":186.266}
{"ev":"vibrate","pattern":"[8]","t":187655.5,"ta":186.758}
{"ev":"start","t":187655.60000002384,"sid":123,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":186.758}
{"ev":"vibrate","pattern":"[8]","t":188147.70000001788,"ta":187.25}
{"ev":"start","t":188147.80000001192,"sid":124,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":187.25}
{"ev":"vibrate","pattern":"[20]","t":189039.90000000596,"ta":188.142}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":189380.10000002384,"ta":188.483}
{"ev":"vibrate","pattern":"[10]","t":189734.90000000596,"ta":188.837}
{"ev":"start","t":189735,"sid":125,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":188.838}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":190141.30000001192,"ta":189.244}
{"ev":"vibrate","pattern":"[10]","t":190501.90000000596,"ta":189.604}
{"ev":"start","t":190502,"sid":126,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":189.605}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":190908.60000002384,"ta":190.011}
{"ev":"vibrate","pattern":"[20]","t":191155.10000002384,"ta":190.258}
{"ev":"start","t":191155.20000001788,"sid":127,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":190.258}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":191561.5,"ta":190.664}
{"ev":"vibrate","pattern":"[10]","t":191918.60000002384,"ta":191.021}
{"ev":"start","t":191918.60000002384,"sid":128,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":191.021}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":192324.20000001788,"ta":191.427}
{"ev":"vibrate","pattern":"[10]","t":192684.70000001788,"ta":191.787}
{"ev":"start","t":192684.70000001788,"sid":129,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":191.787}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":193089,"ta":192.192}
{"ev":"vibrate","pattern":"[20]","t":193452,"ta":192.555}
{"ev":"start","t":193452.10000002384,"sid":130,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":192.555}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":193557.70000001788,"ta":192.66}
{"ev":"vibrate","pattern":"[10]","t":193918.40000000596,"ta":193.021}
{"ev":"start","t":193918.40000000596,"sid":131,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":193.021}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":194323.70000001788,"ta":193.426}
{"ev":"vibrate","pattern":"[10]","t":194684.80000001192,"ta":193.787}
{"ev":"start","t":194684.90000000596,"sid":132,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":193.787}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":195091.10000002384,"ta":194.194}
{"ev":"vibrate","pattern":"[10]","t":195451.40000000596,"ta":194.554}
{"ev":"start","t":195451.5,"sid":133,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":194.554}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":195858.10000002384,"ta":194.961}
{"ev":"vibrate","pattern":"[10]","t":196218.30000001192,"ta":195.321}
{"ev":"vibrate","pattern":"[100]","t":196218.30000001192,"ta":195.321}
{"ev":"start","t":196218.40000000596,"sid":134,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":195.321}
{"ev":"vstart","url":"audio/voice/female/correct.ogg","t":196218.5,"dur":0.6370975056689342,"ta":195.321}
{"ev":"vend","url":"audio/voice/female/correct.ogg","t":196975.60000002384,"reason":"kill","ta":196.078}
{"ev":"fetch","url":"audio/voice/female/round_10.ogg","status":200,"ok":true,"ms":3,"t":197278.60000002384,"ta":196.381}
{"ev":"vstart","url":"audio/voice/female/round_10.ogg","t":197282.5,"dur":1.6,"ta":196.385}
{"ev":"vend","url":"audio/voice/female/round_10.ogg","t":198879.20000001788,"reason":"kill","ta":197.982}
{"ev":"vibrate","pattern":"[8]","t":198879.30000001192,"ta":197.982}
{"ev":"start","t":198879.40000000596,"sid":135,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":197.982}
{"ev":"vibrate","pattern":"[8]","t":199345.5,"ta":198.448}
{"ev":"start","t":199345.5,"sid":136,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":198.448}
{"ev":"vibrate","pattern":"[8]","t":199811.5,"ta":198.914}
{"ev":"start","t":199811.60000002384,"sid":137,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":198.914}
{"ev":"vibrate","pattern":"[8]","t":200277.70000001788,"ta":199.38}
{"ev":"start","t":200277.80000001192,"sid":138,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":199.38}
{"ev":"vibrate","pattern":"[8]","t":200743.90000000596,"ta":199.846}
{"ev":"start","t":200744,"sid":139,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":199.847}
{"ev":"vibrate","pattern":"[8]","t":201210,"ta":200.313}
{"ev":"start","t":201210.10000002384,"sid":140,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":200.313}
{"ev":"vibrate","pattern":"[8]","t":201676.10000002384,"ta":200.779}
{"ev":"start","t":201676.30000001192,"sid":141,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":200.779}
{"ev":"vibrate","pattern":"[8]","t":202142.40000000596,"ta":201.245}
{"ev":"start","t":202142.5,"sid":142,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":201.245}
{"ev":"vibrate","pattern":"[8]","t":202608.5,"ta":201.711}
{"ev":"start","t":202608.60000002384,"sid":143,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":201.711}
{"ev":"vibrate","pattern":"[8]","t":203074.70000001788,"ta":202.177}
{"ev":"start","t":203074.80000001192,"sid":144,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":202.177}
{"ev":"vibrate","pattern":"[8]","t":203540.90000000596,"ta":202.643}
{"ev":"start","t":203540.90000000596,"sid":145,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":202.643}
{"ev":"vibrate","pattern":"[20]","t":204407.10000002384,"ta":203.51}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":204807.10000002384,"ta":203.91}
{"ev":"vibrate","pattern":"[10]","t":205168,"ta":204.271}
{"ev":"start","t":205168.10000002384,"sid":146,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":204.271}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":205573.80000001192,"ta":204.676}
{"ev":"vibrate","pattern":"[10]","t":205934.40000000596,"ta":205.037}
{"ev":"start","t":205934.5,"sid":147,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":205.037}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":206341.20000001788,"ta":205.444}
{"ev":"vibrate","pattern":"[20]","t":206587.80000001192,"ta":205.69}
{"ev":"start","t":206587.90000000596,"sid":148,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":205.69}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":206994.10000002384,"ta":206.097}
{"ev":"vibrate","pattern":"[10]","t":207351.20000001788,"ta":206.454}
{"ev":"start","t":207351.30000001192,"sid":149,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":206.454}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":207757.5,"ta":206.86}
{"ev":"vibrate","pattern":"[10]","t":208117.60000002384,"ta":207.22}
{"ev":"start","t":208117.70000001788,"sid":150,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":207.22}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":208525,"ta":207.628}
{"ev":"vibrate","pattern":"[20]","t":208888.10000002384,"ta":207.991}
{"ev":"start","t":208888.20000001788,"sid":151,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":207.991}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":208993.90000000596,"ta":208.096}
{"ev":"vibrate","pattern":"[10]","t":209350.90000000596,"ta":208.453}
{"ev":"start","t":209351.10000002384,"sid":152,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":208.454}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":209757.30000001192,"ta":208.86}
{"ev":"vibrate","pattern":"[10]","t":210117.5,"ta":209.22}
{"ev":"start","t":210117.60000002384,"sid":153,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":209.22}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":210524.90000000596,"ta":209.627}
{"ev":"vibrate","pattern":"[10]","t":210884.30000001192,"ta":209.987}
{"ev":"start","t":210884.40000000596,"sid":154,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":209.987}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":211290.40000000596,"ta":210.393}
{"ev":"vibrate","pattern":"[10]","t":211650.90000000596,"ta":210.753}
{"ev":"start","t":211651,"sid":155,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":210.754}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":212057.5,"ta":211.16}
{"ev":"vibrate","pattern":"[10]","t":212417.5,"ta":211.52}
{"ev":"vibrate","pattern":"[100]","t":212417.60000002384,"ta":211.52}
{"ev":"start","t":212417.80000001192,"sid":156,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":211.52}
{"ev":"vstart","url":"audio/voice/female/gd_clear.ogg","t":212417.80000001192,"dur":1.84,"ta":211.52}
{"ev":"vend","url":"audio/voice/female/gd_clear.ogg","t":214296.10000002384,"reason":"kill","ta":213.399}
{"ev":"fetch","url":"audio/voice/female/round_11.ogg","status":200,"ok":true,"ms":3,"t":214599,"ta":213.702}
{"ev":"vstart","url":"audio/voice/female/round_11.ogg","t":214602.5,"dur":1.44,"ta":213.705}
{"ev":"vend","url":"audio/voice/female/round_11.ogg","t":216200,"reason":"kill","ta":215.303}
{"ev":"vibrate","pattern":"[8]","t":216200,"ta":215.303}
{"ev":"start","t":216200.10000002384,"sid":157,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":215.303}
{"ev":"vibrate","pattern":"[8]","t":216640.10000002384,"ta":215.743}
{"ev":"start","t":216640.20000001788,"sid":158,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":215.743}
{"ev":"vibrate","pattern":"[8]","t":217080.30000001192,"ta":216.183}
{"ev":"start","t":217080.40000000596,"sid":159,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":216.183}
{"ev":"vibrate","pattern":"[8]","t":217520.5,"ta":216.623}
{"ev":"start","t":217520.60000002384,"sid":160,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":216.623}
{"ev":"vibrate","pattern":"[8]","t":217960.60000002384,"ta":217.063}
{"ev":"start","t":217960.70000001788,"sid":161,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":217.063}
{"ev":"vibrate","pattern":"[8]","t":218400.80000001192,"ta":217.503}
{"ev":"start","t":218400.90000000596,"sid":162,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":217.503}
{"ev":"vibrate","pattern":"[8]","t":218840.90000000596,"ta":217.943}
{"ev":"start","t":218841.10000002384,"sid":163,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":217.944}
{"ev":"vibrate","pattern":"[8]","t":219281.20000001788,"ta":218.384}
{"ev":"start","t":219281.30000001192,"sid":164,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":218.384}
{"ev":"vibrate","pattern":"[8]","t":219721.30000001192,"ta":218.824}
{"ev":"start","t":219721.5,"sid":165,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":218.824}
{"ev":"vibrate","pattern":"[8]","t":220161.5,"ta":219.264}
{"ev":"start","t":220161.70000001788,"sid":166,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":219.264}
{"ev":"vibrate","pattern":"[8]","t":220601.70000001788,"ta":219.704}
{"ev":"start","t":220601.80000001192,"sid":167,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":219.704}
{"ev":"vibrate","pattern":"[8]","t":221041.90000000596,"ta":220.144}
{"ev":"start","t":221042,"sid":168,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":220.145}
{"ev":"vibrate","pattern":"[20]","t":221882.20000001788,"ta":220.985}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":222237.60000002384,"ta":221.34}
{"ev":"vibrate","pattern":"[10]","t":222600.80000001192,"ta":221.703}
{"ev":"start","t":222600.90000000596,"sid":169,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":221.703}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":223007.90000000596,"ta":222.11}
{"ev":"vibrate","pattern":"[10]","t":223367,"ta":222.47}
{"ev":"start","t":223367.10000002384,"sid":170,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":222.47}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":223773.10000002384,"ta":222.876}
{"ev":"vibrate","pattern":"[20]","t":224019.5,"ta":223.122}
{"ev":"start","t":224019.5,"sid":171,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":223.122}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":224426.60000002384,"ta":223.529}
{"ev":"vibrate","pattern":"[10]","t":224783.90000000596,"ta":223.886}
{"ev":"start","t":224784.10000002384,"sid":172,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":223.887}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":225190.90000000596,"ta":224.293}
{"ev":"vibrate","pattern":"[10]","t":225550.5,"ta":224.653}
{"ev":"start","t":225550.70000001788,"sid":173,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":224.653}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":225957.10000002384,"ta":225.06}
{"ev":"vibrate","pattern":"[20]","t":226320,"ta":225.423}
{"ev":"start","t":226320.10000002384,"sid":174,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":225.423}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":226425.70000001788,"ta":225.528}
{"ev":"vibrate","pattern":"[10]","t":226783.5,"ta":225.886}
{"ev":"start","t":226783.60000002384,"sid":175,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":225.886}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":227190.90000000596,"ta":226.293}
{"ev":"vibrate","pattern":"[10]","t":227550.5,"ta":226.653}
{"ev":"start","t":227550.60000002384,"sid":176,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":226.653}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":227957,"ta":227.06}
{"ev":"vibrate","pattern":"[10]","t":228316.80000001192,"ta":227.419}
{"ev":"start","t":228317,"sid":177,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":227.42}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":228723.40000000596,"ta":227.826}
{"ev":"vibrate","pattern":"[10]","t":229083.5,"ta":228.186}
{"ev":"start","t":229083.60000002384,"sid":178,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":228.186}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":229490.40000000596,"ta":228.593}
{"ev":"vibrate","pattern":"[10]","t":229850.30000001192,"ta":228.953}
{"ev":"start","t":229850.5,"sid":179,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":228.953}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":230256.80000001192,"ta":229.359}
{"ev":"vibrate","pattern":"[10]","t":230617.10000002384,"ta":229.72}
{"ev":"vibrate","pattern":"[100]","t":230617.10000002384,"ta":229.72}
{"ev":"start","t":230617.20000001788,"sid":180,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":229.72}
{"ev":"vstart","url":"audio/voice/female/correct.ogg","t":230617.30000001192,"dur":0.6370975056689342,"ta":229.72}
{"ev":"vend","url":"audio/voice/female/correct.ogg","t":231384.40000000596,"reason":"kill","ta":230.487}
{"ev":"fetch","url":"audio/voice/female/round_12.ogg","status":200,"ok":true,"ms":3,"t":231687.5,"ta":230.79}
{"ev":"vstart","url":"audio/voice/female/round_12.ogg","t":231691.10000002384,"dur":1.68,"ta":230.794}
{"ev":"vend","url":"audio/voice/female/round_12.ogg","t":233567,"reason":"kill","ta":232.67}
{"ev":"vibrate","pattern":"[8]","t":233567,"ta":232.67}
{"ev":"start","t":233567.10000002384,"sid":181,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":232.67}
{"ev":"vibrate","pattern":"[8]","t":233987.20000001788,"ta":233.09}
{"ev":"start","t":233987.30000001192,"sid":182,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":233.09}
{"ev":"vibrate","pattern":"[8]","t":234407.40000000596,"ta":233.51}
{"ev":"start","t":234407.5,"sid":183,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":233.51}
{"ev":"vibrate","pattern":"[8]","t":234827.60000002384,"ta":233.93}
{"ev":"start","t":234827.60000002384,"sid":184,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":233.93}
{"ev":"vibrate","pattern":"[8]","t":235247.70000001788,"ta":234.35}
{"ev":"start","t":235247.80000001192,"sid":185,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":234.35}
{"ev":"vibrate","pattern":"[8]","t":235667.90000000596,"ta":234.77}
{"ev":"start","t":235668,"sid":186,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":234.771}
{"ev":"vibrate","pattern":"[8]","t":236088.10000002384,"ta":235.191}
{"ev":"start","t":236088.20000001788,"sid":187,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":235.191}
{"ev":"vibrate","pattern":"[8]","t":236508.30000001192,"ta":235.611}
{"ev":"start","t":236508.40000000596,"sid":188,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":235.611}
{"ev":"vibrate","pattern":"[8]","t":236928.5,"ta":236.031}
{"ev":"start","t":236928.60000002384,"sid":189,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":236.031}
{"ev":"vibrate","pattern":"[8]","t":237348.60000002384,"ta":236.451}
{"ev":"start","t":237348.70000001788,"sid":190,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":236.451}
{"ev":"vibrate","pattern":"[8]","t":237768.80000001192,"ta":236.871}
{"ev":"start","t":237769,"sid":191,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":236.872}
{"ev":"vibrate","pattern":"[8]","t":238189,"ta":237.292}
{"ev":"start","t":238189.10000002384,"sid":192,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":237.292}
{"ev":"vibrate","pattern":"[8]","t":238609.10000002384,"ta":237.712}
{"ev":"start","t":238609.20000001788,"sid":193,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":237.712}
{"ev":"vibrate","pattern":"[20]","t":239429.40000000596,"ta":238.532}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":239821.5,"ta":238.924}
{"ev":"vibrate","pattern":"[10]","t":240183.30000001192,"ta":239.286}
{"ev":"start","t":240183.40000000596,"sid":194,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":239.286}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":240588.40000000596,"ta":239.691}
{"ev":"vibrate","pattern":"[10]","t":240949.5,"ta":240.052}
{"ev":"start","t":240949.60000002384,"sid":195,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":240.052}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":241356.20000001788,"ta":240.459}
{"ev":"vibrate","pattern":"[20]","t":241603.10000002384,"ta":240.706}
{"ev":"start","t":241603.20000001788,"sid":196,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":240.706}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":242009.40000000596,"ta":241.112}
{"ev":"vibrate","pattern":"[10]","t":242366.10000002384,"ta":241.469}
{"ev":"start","t":242366.20000001788,"sid":197,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":241.469}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":242772.5,"ta":241.875}
{"ev":"vibrate","pattern":"[10]","t":243132.70000001788,"ta":242.235}
{"ev":"start","t":243132.80000001192,"sid":198,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":242.235}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":243539.30000001192,"ta":242.642}
{"ev":"vibrate","pattern":"[20]","t":243902.80000001192,"ta":243.005}
{"ev":"start","t":243902.90000000596,"sid":199,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":243.005}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":244008.90000000596,"ta":243.111}
{"ev":"vibrate","pattern":"[10]","t":244366,"ta":243.469}
{"ev":"start","t":244366,"sid":200,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":243.469}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":244770.80000001192,"ta":243.873}
{"ev":"vibrate","pattern":"[10]","t":245133,"ta":244.236}
{"ev":"start","t":245133.10000002384,"sid":201,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":244.236}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":245540.70000001788,"ta":244.643}
{"ev":"vibrate","pattern":"[10]","t":245899.40000000596,"ta":245.002}
{"ev":"start","t":245899.5,"sid":202,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":245.002}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":246305.70000001788,"ta":245.408}
{"ev":"vibrate","pattern":"[10]","t":246666,"ta":245.769}
{"ev":"start","t":246666.10000002384,"sid":203,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":245.769}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":247072.70000001788,"ta":246.175}
{"ev":"vibrate","pattern":"[10]","t":247432.5,"ta":246.535}
{"ev":"start","t":247432.60000002384,"sid":204,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":246.535}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":247838.90000000596,"ta":246.941}
{"ev":"vibrate","pattern":"[10]","t":248198.40000000596,"ta":247.301}
{"ev":"start","t":248198.60000002384,"sid":205,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":247.301}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":248602.90000000596,"ta":247.705}
{"ev":"vibrate","pattern":"[10]","t":248966.10000002384,"ta":248.069}
{"ev":"vibrate","pattern":"[100]","t":248966.10000002384,"ta":248.069}
{"ev":"start","t":248966.20000001788,"sid":206,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":248.069}
{"ev":"vstart","url":"audio/voice/female/gd_clear.ogg","t":248966.30000001192,"dur":1.84,"ta":248.069}
{"ev":"vend","url":"audio/voice/female/gd_clear.ogg","t":250841.10000002384,"reason":"kill","ta":249.944}
{"ev":"fetch","url":"audio/voice/female/round_13.ogg","status":200,"ok":true,"ms":3,"t":251143.90000000596,"ta":250.246}
{"ev":"vstart","url":"audio/voice/female/round_13.ogg","t":251148,"dur":2.48,"ta":250.251}
{"ev":"vibrate","pattern":"[8]","t":253641.70000001788,"ta":252.744}
{"ev":"start","t":253641.90000000596,"sid":207,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":252.744}
{"ev":"vend","url":"audio/voice/female/round_13.ogg","t":253859.70000001788,"reason":"kill","ta":252.962}
{"ev":"vibrate","pattern":"[8]","t":254061.90000000596,"ta":253.164}
{"ev":"start","t":254062.10000002384,"sid":208,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":253.165}
{"ev":"vibrate","pattern":"[8]","t":254482.10000002384,"ta":253.585}
{"ev":"start","t":254482.20000001788,"sid":209,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":253.585}
{"ev":"vibrate","pattern":"[8]","t":254902.40000000596,"ta":254.005}
{"ev":"start","t":254902.5,"sid":210,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":254.005}
{"ev":"vibrate","pattern":"[8]","t":255322.5,"ta":254.425}
{"ev":"start","t":255322.70000001788,"sid":211,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":254.425}
{"ev":"vibrate","pattern":"[8]","t":255742.80000001192,"ta":254.845}
{"ev":"start","t":255742.80000001192,"sid":212,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":254.845}
{"ev":"vibrate","pattern":"[8]","t":256162.90000000596,"ta":255.265}
{"ev":"start","t":256163,"sid":213,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":255.266}
{"ev":"vibrate","pattern":"[8]","t":256583.10000002384,"ta":255.686}
{"ev":"start","t":256583.20000001788,"sid":214,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":255.686}
{"ev":"vibrate","pattern":"[8]","t":257003.20000001788,"ta":256.106}
{"ev":"start","t":257003.40000000596,"sid":215,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":256.106}
{"ev":"vibrate","pattern":"[8]","t":257423.40000000596,"ta":256.526}
{"ev":"start","t":257423.5,"sid":216,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":256.526}
{"ev":"vibrate","pattern":"[8]","t":257843.60000002384,"ta":256.946}
{"ev":"start","t":257843.70000001788,"sid":217,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":256.946}
{"ev":"vibrate","pattern":"[8]","t":258263.80000001192,"ta":257.366}
{"ev":"start","t":258263.90000000596,"sid":218,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":257.366}
{"ev":"vibrate","pattern":"[8]","t":258683.90000000596,"ta":257.786}
{"ev":"start","t":258684,"sid":219,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":257.787}
{"ev":"vibrate","pattern":"[8]","t":259104.10000002384,"ta":258.207}
{"ev":"start","t":259104.20000001788,"sid":220,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":258.207}
{"ev":"vibrate","pattern":"[20]","t":259924.40000000596,"ta":259.027}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":260254.90000000596,"ta":259.357}
{"ev":"vibrate","pattern":"[10]","t":260615.5,"ta":259.718}
{"ev":"vibrate","pattern":"[60,40,60]","t":260615.70000001788,"ta":259.718}
{"ev":"start","t":260616,"sid":221,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":259.719}
{"ev":"fetch","url":"audio/voice/female/retry_use.ogg","status":200,"ok":true,"ms":2,"t":260618,"ta":259.721}
{"ev":"vstart","url":"audio/voice/female/retry_use.ogg","t":260622.30000001192,"dur":2.64,"ta":259.725}
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":260915.90000000596,"ta":260.018}
{"ev":"vend","url":"audio/voice/female/retry_use.ogg","t":263332.40000000596,"reason":"kill","ta":262.435}
{"ev":"vstart","url":"audio/voice/female/gd_occ_both.ogg","t":263332.5,"dur":2.72,"ta":262.435}
{"ev":"vend","url":"audio/voice/female/gd_occ_both.ogg","t":266049.10000002384,"reason":"kill","ta":265.152}
{"ev":"vibrate","pattern":"[8]","t":266049.3000000119,"ta":265.152}
{"ev":"start","t":266049.40000000596,"sid":222,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":265.152}
{"ev":"vibrate","pattern":"[8]","t":266469.5,"ta":265.572}
{"ev":"start","t":266469.60000002384,"sid":223,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":265.572}
{"ev":"vibrate","pattern":"[8]","t":266889.7000000179,"ta":265.992}
{"ev":"start","t":266889.8000000119,"sid":224,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":265.992}
{"ev":"vibrate","pattern":"[8]","t":267309.8000000119,"ta":266.412}
{"ev":"start","t":267310,"sid":225,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":266.413}
{"ev":"vibrate","pattern":"[8]","t":267730,"ta":266.833}
{"ev":"start","t":267730.2000000179,"sid":226,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":266.833}
{"ev":"vibrate","pattern":"[8]","t":268150.2000000179,"ta":267.253}
{"ev":"start","t":268150.3000000119,"sid":227,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":267.253}
{"ev":"vibrate","pattern":"[8]","t":268570.40000000596,"ta":267.673}
{"ev":"start","t":268570.60000002384,"sid":228,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":267.673}
{"ev":"vibrate","pattern":"[8]","t":268990.60000002384,"ta":268.093}
{"ev":"start","t":268990.8000000119,"sid":229,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":268.093}
{"ev":"vibrate","pattern":"[8]","t":269410.8000000119,"ta":268.513}
{"ev":"start","t":269410.90000000596,"sid":230,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":268.513}
{"ev":"vibrate","pattern":"[8]","t":269831,"ta":268.934}
{"ev":"start","t":269831.10000002384,"sid":231,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":268.934}
{"ev":"vibrate","pattern":"[8]","t":270251.2000000179,"ta":269.354}
{"ev":"start","t":270251.2000000179,"sid":232,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":269.354}
{"ev":"vibrate","pattern":"[8]","t":270671.3000000119,"ta":269.774}
{"ev":"start","t":270671.40000000596,"sid":233,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":269.774}
{"ev":"vibrate","pattern":"[8]","t":271091.40000000596,"ta":270.194}
{"ev":"start","t":271091.60000002384,"sid":234,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":270.194}
{"ev":"vibrate","pattern":"[8]","t":271511.7000000179,"ta":270.614}
{"ev":"start","t":271511.8000000119,"sid":235,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":270.614}
{"ev":"vibrate","pattern":"[20]","t":272332,"ta":271.435}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":272639.5,"ta":271.742}
{"ev":"vibrate","pattern":"[10]","t":272998.40000000596,"ta":272.101}
{"ev":"vibrate","pattern":"[60,40,60]","t":272998.40000000596,"ta":272.101}
{"ev":"start","t":272998.60000002384,"sid":236,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":272.101}
{"ev":"vstart","url":"audio/voice/female/retry_use.ogg","t":272998.60000002384,"dur":2.64,"ta":272.101}
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":273298.7000000179,"ta":272.401}
{"ev":"vend","url":"audio/voice/female/retry_use.ogg","t":275707.7000000179,"reason":"kill","ta":274.81}
{"ev":"fetch","url":"audio/voice/female/chances_out.ogg","status":200,"ok":true,"ms":3,"t":275710.5,"ta":274.813}
{"ev":"vstart","url":"audio/voice/female/chances_out.ogg","t":275714.3000000119,"dur":1.76,"ta":274.817}
{"ev":"vend","url":"audio/voice/female/chances_out.ogg","t":277588.3000000119,"reason":"kill","ta":276.691}
{"ev":"vstart","url":"audio/voice/female/gd_occ_both.ogg","t":277588.3000000119,"dur":2.72,"ta":276.691}
{"ev":"vend","url":"audio/voice/female/gd_occ_both.ogg","t":280304.8000000119,"reason":"kill","ta":279.407}
{"ev":"vibrate","pattern":"[8]","t":280304.90000000596,"ta":279.407}
{"ev":"start","t":280305,"sid":237,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":279.408}
{"ev":"vibrate","pattern":"[8]","t":280725.10000002384,"ta":279.828}
{"ev":"start","t":280725.2000000179,"sid":238,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":279.828}
{"ev":"vibrate","pattern":"[8]","t":281145.3000000119,"ta":280.248}
{"ev":"start","t":281145.3000000119,"sid":239,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":280.248}
{"ev":"vibrate","pattern":"[8]","t":281565.5,"ta":280.668}
{"ev":"start","t":281565.5,"sid":240,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":280.668}
{"ev":"vibrate","pattern":"[8]","t":281985.60000002384,"ta":281.088}
{"ev":"start","t":281985.7000000179,"sid":241,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":281.088}
{"ev":"vibrate","pattern":"[8]","t":282405.7000000179,"ta":281.508}
{"ev":"start","t":282405.90000000596,"sid":242,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":281.508}
{"ev":"vibrate","pattern":"[8]","t":282825.90000000596,"ta":281.928}
{"ev":"start","t":282826.10000002384,"sid":243,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":281.929}
{"ev":"vibrate","pattern":"[8]","t":283246.10000002384,"ta":282.349}
{"ev":"start","t":283246.2000000179,"sid":244,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":282.349}
{"ev":"vibrate","pattern":"[8]","t":283666.3000000119,"ta":282.769}
{"ev":"start","t":283666.40000000596,"sid":245,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":282.769}
{"ev":"vibrate","pattern":"[8]","t":284086.40000000596,"ta":283.189}
{"ev":"start","t":284086.5,"sid":246,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":283.189}
{"ev":"vibrate","pattern":"[8]","t":284506.60000002384,"ta":283.609}
{"ev":"start","t":284506.7000000179,"sid":247,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":283.609}
{"ev":"vibrate","pattern":"[8]","t":284926.8000000119,"ta":284.029}
{"ev":"start","t":284926.90000000596,"sid":248,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":284.029}
{"ev":"vibrate","pattern":"[8]","t":285346.90000000596,"ta":284.449}
{"ev":"start","t":285347,"sid":249,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":284.45}
{"ev":"vibrate","pattern":"[8]","t":285767.2000000179,"ta":284.87}
{"ev":"start","t":285767.2000000179,"sid":250,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":284.87}
{"ev":"vibrate","pattern":"[20]","t":286587.40000000596,"ta":285.69}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":286994.10000002384,"ta":286.097}
{"ev":"vibrate","pattern":"[10]","t":287348.10000002384,"ta":286.451}
{"ev":"vibrate","pattern":"[60,40,60]","t":287348.5,"ta":286.451}
{"ev":"start","t":287348.60000002384,"sid":251,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":286.451}
{"ev":"vibrate","pattern":"[80]","t":287648.7000000179,"ta":286.751}
{"ev":"start","t":288048.7000000179,"sid":252,"url":"audio/sfx/gameover.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":287.151}
{"ev":"fetch","url":"audio/voice/female/gameover.ogg","status":200,"ok":true,"ms":3,"t":288751.3000000119,"ta":287.854}
{"ev":"vstart","url":"audio/voice/female/gameover.ogg","t":288754.60000002384,"dur":0.9570975056689343,"ta":287.857}
{"ev":"vend","url":"audio/voice/female/gameover.ogg","t":289893.90000000596,"reason":"kill","ta":288.996}
{"ev":"fetch","url":"audio/voice/female/score_band5.ogg","status":200,"ok":true,"ms":3,"t":289896.7000000179,"ta":288.999}
{"ev":"vstart","url":"audio/voice/female/score_band5.ogg","t":289900.3000000119,"dur":2.32,"ta":289.003}
{"ev":"fetch","url":"audio/bgm/menu.ogg","status":200,"ok":true,"ms":3,"t":290001.90000000596,"ta":289.104}
{"ev":"start","t":290139.60000002384,"sid":253,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":289.242}
{"ev":"vend","url":"audio/voice/female/score_band5.ogg","t":292238.7000000179,"reason":"kill","ta":291.341}
{"ev":"fetch","url":"audio/voice/female/new_record.ogg","status":200,"ok":true,"ms":3,"t":292241.5,"ta":291.344}
{"ev":"vstart","url":"audio/voice/female/new_record.ogg","t":292244.90000000596,"dur":1.28,"ta":291.347}
{"ev":"vend","url":"audio/voice/female/new_record.ogg","t":293840.90000000596,"reason":"kill","ta":292.943}
{"ev":"fetch","url":"audio/voice/female/replay.ogg","status":200,"ok":true,"ms":2,"t":293843.3000000119,"ta":292.946}
{"ev":"vstart","url":"audio/voice/female/replay.ogg","t":293847.7000000179,"dur":2.24,"ta":292.95}
{"ev":"vend","url":"audio/voice/female/replay.ogg","t":296185.90000000596,"reason":"kill","ta":295.288}
{"ev":"fetch","url":"audio/voice/female/rules_prompt.ogg","status":200,"ok":true,"ms":3,"t":296188.8000000119,"ta":295.291}
{"ev":"vstart","url":"audio/voice/female/rules_prompt.ogg","t":296194.90000000596,"dur":5.36,"ta":295.297}
{"ev":"vend","url":"audio/voice/female/rules_prompt.ogg","t":301874.40000000596,"reason":"kill","ta":300.977}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":302480.2000000179,"ta":301.583}
{"ev":"vibrate","pattern":"[20]","t":302845.10000002384,"ta":301.948}
{"ev":"start","t":302845.5,"sid":254,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":301.948}
{"ev":"vstart","url":"audio/voice/female/round_01.ogg","t":302845.7000000179,"dur":1.52,"ta":301.948}
{"ev":"stop","t":303205.60000002384,"sid":253,"when":0,"ta":302.308}
{"ev":"vend","url":"audio/voice/female/round_01.ogg","t":304451.7000000179,"reason":"kill","ta":303.554}
{"ev":"vibrate","pattern":"[8]","t":304451.8000000119,"ta":303.554}
{"ev":"start","t":304451.90000000596,"sid":255,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":303.554}
{"ev":"vibrate","pattern":"[8]","t":305152,"ta":304.255}
{"ev":"start","t":305152.10000002384,"sid":256,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":304.255}
{"ev":"vibrate","pattern":"[20]","t":306252.2000000179,"ta":305.355}
{"ev":"vstart","url":"audio/voice/female/gd_occ_dt.ogg","t":306252.5,"dur":1.68,"ta":305.355}
{"ev":"vend","url":"audio/voice/female/gd_occ_dt.ogg","t":308120,"reason":"kill","ta":307.223}
{"ev":"vstart","url":"audio/voice/female/your_turn.ogg","t":308120.10000002384,"dur":0.7970975056689342,"ta":307.223}
{"ev":"vend","url":"audio/voice/female/your_turn.ogg","t":308886.2000000179,"reason":"kill","ta":307.989}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":309331.5,"ta":308.434}
{"ev":"vibrate","pattern":"[20]","t":309694.5,"ta":308.797}
{"ev":"start","t":309694.7000000179,"sid":257,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":308.797}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":309800,"ta":308.903}
{"ev":"vibrate","pattern":"[20]","t":310046.5,"ta":309.149}
{"ev":"vibrate","pattern":"[100]","t":310046.60000002384,"ta":309.149}
{"ev":"start","t":310046.60000002384,"sid":258,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":309.149}
{"ev":"vstart","url":"audio/voice/female/correct.ogg","t":310046.7000000179,"dur":0.6370975056689342,"ta":309.149}
{"ev":"vend","url":"audio/voice/female/correct.ogg","t":310813.3000000119,"reason":"kill","ta":309.916}
{"ev":"vstart","url":"audio/voice/female/round_02.ogg","t":311113.60000002384,"dur":1.44,"ta":310.216}
{"ev":"vend","url":"audio/voice/female/round_02.ogg","t":312717.2000000179,"reason":"kill","ta":311.82}
{"ev":"vibrate","pattern":"[8]","t":312717.2000000179,"ta":311.82}
{"ev":"start","t":312717.3000000119,"sid":259,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":311.82}
{"ev":"vibrate","pattern":"[8]","t":313391.40000000596,"ta":312.494}
{"ev":"start","t":313391.60000002384,"sid":260,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":312.494}
{"ev":"vibrate","pattern":"[8]","t":314065.60000002384,"ta":313.168}
{"ev":"start","t":314065.7000000179,"sid":261,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":313.168}
{"ev":"vibrate","pattern":"[20]","t":315139.90000000596,"ta":314.242}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":315551.3000000119,"ta":314.654}
{"ev":"vibrate","pattern":"[20]","t":315915,"ta":315.018}
{"ev":"start","t":315915.10000002384,"sid":262,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":315.018}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":316021,"ta":315.124}
{"ev":"vibrate","pattern":"[20]","t":316267.5,"ta":315.37}
{"ev":"start","t":316267.7000000179,"sid":263,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":315.37}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":316672.5,"ta":315.775}
{"ev":"vibrate","pattern":"[20]","t":316919.10000002384,"ta":316.022}
{"ev":"vibrate","pattern":"[100]","t":316919.10000002384,"ta":316.022}
{"ev":"start","t":316919.3000000119,"sid":264,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":316.022}
{"ev":"vstart","url":"audio/voice/female/gd_clear.ogg","t":316919.3000000119,"dur":1.84,"ta":316.022}
{"ev":"vend","url":"audio/voice/female/gd_clear.ogg","t":318800.2000000179,"reason":"kill","ta":317.903}
{"ev":"vstart","url":"audio/voice/female/round_03.ogg","t":319100.5,"dur":1.68,"ta":318.203}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":319173.5,"ta":318.276}
{"ev":"vibrate","pattern":"[10]","t":319529.60000002384,"ta":318.632}
{"ev":"vend","url":"audio/voice/female/round_03.ogg","t":320982.7000000179,"reason":"kill","ta":320.085}
{"ev":"vibrate","pattern":"[8]","t":320982.8000000119,"ta":320.085}
{"ev":"start","t":320982.8000000119,"sid":265,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":320.085}
{"ev":"vibrate","pattern":"[8]","t":321631,"ta":320.734}
{"ev":"start","t":321631.10000002384,"sid":266,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":320.734}
{"ev":"vibrate","pattern":"[8]","t":322279.10000002384,"ta":321.382}
{"ev":"start","t":322279.2000000179,"sid":267,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":321.382}
{"ev":"vibrate","pattern":"[8]","t":322927.3000000119,"ta":322.03}
{"ev":"start","t":322927.3000000119,"sid":268,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":322.03}
{"ev":"vibrate","pattern":"[20]","t":323975.5,"ta":323.078}
{"ev":"recstop","t":328049.10000002384,"ta":327.152}
@@ -0,0 +1,841 @@
# simon 实时会话 transcript
- `[ -0.07s]` **GESTURE** tap @(195,422)
- `[ 0.00s]` REC 开始 (audio/webm;codecs=opus)
- `[ 0.50s]` VOICE ▶ t0_welcome (dur 4.24s)
- `[ 5.06s]` VOICE ■ t0_welcome (kill)
- `[ 5.06s]` VOICE ▶ skip_hint (dur 1.6s)
- `[ 6.67s]` VOICE ■ skip_hint (kill)
- `[ 6.67s]` VOICE ▶ t0_goal (dur 6.08s)
- `[ 13.10s]` VOICE ■ t0_goal (kill)
- `[ 13.11s]` VOICE ▶ t1_up (dur 4.64s)
- `[ 18.04s]` VOICE ■ t1_up (kill)
- `[ 18.04s]` SFX ♪ tone_up
- `[ 18.94s]` VOICE ▶ t_try (dur 0.7970975056689342s)
- `[ 19.71s]` VOICE ■ t_try (kill)
- `[ 19.98s]` **GESTURE** swipeup @(195,422)
- `[ 20.34s]` VIBRATE [10]
- `[ 20.34s]` SFX ♪ tone_up
- `[ 20.35s]` VOICE ▶ t_ok (dur 0.4770975056689342s)
- `[ 20.83s]` VOICE ■ t_ok (kill)
- `[ 20.83s]` VOICE ▶ t2_down (dur 2.24s)
- `[ 23.17s]` VOICE ■ t2_down (kill)
- `[ 23.17s]` SFX ♪ tone_down
- `[ 24.07s]` VOICE ▶ t_try (dur 0.7970975056689342s)
- `[ 24.84s]` VOICE ■ t_try (kill)
- `[ 25.05s]` **GESTURE** swipedown @(195,422)
- `[ 25.41s]` VIBRATE [10]
- `[ 25.41s]` SFX ♪ tone_down
- `[ 25.41s]` VOICE ▶ t_ok (dur 0.4770975056689342s)
- `[ 25.89s]` VOICE ■ t_ok (kill)
- `[ 25.90s]` VOICE ▶ t3_left (dur 2.64s)
- `[ 28.61s]` VOICE ■ t3_left (kill)
- `[ 28.61s]` SFX ♪ tone_left
- `[ 29.51s]` VOICE ▶ t_try (dur 0.7970975056689342s)
- `[ 30.28s]` VOICE ■ t_try (kill)
- `[ 30.48s]` **GESTURE** swiperight @(195,422)
- `[ 30.84s]` VIBRATE [10]
- `[ 30.84s]` VIBRATE [60,40,60]
- `[ 30.85s]` VOICE ▶ t_wrong_left (dur 2.48s)
- `[ 33.55s]` VOICE ■ t_wrong_left (kill)
- `[ 33.91s]` **GESTURE** swipeleft @(195,422)
- `[ 34.26s]` VIBRATE [10]
- `[ 34.26s]` SFX ♪ tone_left
- `[ 34.26s]` VOICE ▶ t_ok (dur 0.4770975056689342s)
- `[ 34.74s]` VOICE ■ t_ok (kill)
- `[ 34.74s]` VOICE ▶ t4_right (dur 1.44s)
- `[ 36.34s]` VOICE ■ t4_right (kill)
- `[ 36.34s]` SFX ♪ tone_right
- `[ 37.24s]` VOICE ▶ t_try (dur 0.7970975056689342s)
- `[ 38.01s]` VOICE ■ t_try (kill)
- `[ 38.23s]` **GESTURE** swiperight @(195,422)
- `[ 38.58s]` VIBRATE [10]
- `[ 38.58s]` SFX ♪ tone_right
- `[ 38.58s]` VOICE ▶ t_ok (dur 0.4770975056689342s)
- `[ 39.05s]` VOICE ■ t_ok (kill)
- `[ 39.06s]` VOICE ▶ t5_tap (dur 1.6s)
- `[ 40.66s]` VOICE ■ t5_tap (kill)
- `[ 40.66s]` SFX ♪ tone_tap
- `[ 41.56s]` VOICE ▶ t_try (dur 0.7970975056689342s)
- `[ 42.33s]` VOICE ■ t_try (kill)
- `[ 42.54s]` **GESTURE** tap @(195,422)
- `[ 42.90s]` VIBRATE [20]
- `[ 42.90s]` SFX ♪ tone_tap
- `[ 42.90s]` VOICE ▶ t_ok (dur 0.4770975056689342s)
- `[ 43.40s]` VOICE ■ t_ok (kill)
- `[ 43.40s]` VOICE ▶ t6_double (dur 2.16s)
- `[ 45.74s]` VOICE ■ t6_double (kill)
- `[ 45.74s]` SFX ♪ tone_doubletap
- `[ 46.64s]` VOICE ▶ t_try (dur 0.7970975056689342s)
- `[ 47.41s]` VOICE ■ t_try (kill)
- `[ 47.68s]` **GESTURE** doubletap @(195,422)
- `[ 47.93s]` VIBRATE [20]
- `[ 47.93s]` SFX ♪ tone_doubletap
- `[ 47.93s]` VOICE ▶ t_ok (dur 0.4770975056689342s)
- `[ 48.41s]` VOICE ■ t_ok (kill)
- `[ 48.42s]` VOICE ▶ t7_ready (dur 3.44s)
- `[ 51.87s]` VOICE ■ t7_ready (kill)
- `[ 51.88s]` VOICE ▶ t7_retry (dur 5.76s)
- `[ 57.84s]` VOICE ■ t7_retry (kill)
- `[ 57.85s]` VOICE ▶ gd_economy (dur 6.72s)
- `[ 64.64s]` VOICE ■ gd_economy (kill)
- `[ 64.64s]` VOICE ▶ round_01 (dur 1.52s)
- `[ 66.24s]` VOICE ■ round_01 (kill)
- `[ 66.24s]` VIBRATE [8]
- `[ 66.24s]` SFX ♪ tone_right
- `[ 66.94s]` VIBRATE [8]
- `[ 66.94s]` SFX ♪ tone_down
- `[ 68.04s]` VIBRATE [20]
- `[ 68.05s]` VOICE ▶ your_turn (dur 0.7970975056689342s)
- `[ 68.82s]` VOICE ■ your_turn (kill)
- `[ 69.24s]` **GESTURE** swiperight @(195,422)
- `[ 69.59s]` VIBRATE [10]
- `[ 69.59s]` SFX ♪ tone_right
- `[ 70.00s]` **GESTURE** swipedown @(195,422)
- `[ 70.36s]` VIBRATE [10]
- `[ 70.36s]` VIBRATE [100]
- `[ 70.36s]` SFX ♪ tone_down
- `[ 70.36s]` VOICE ▶ correct (dur 0.6370975056689342s)
- `[ 71.12s]` VOICE ■ correct (kill)
- `[ 71.42s]` VOICE ▶ round_02 (dur 1.44s)
- `[ 73.02s]` VOICE ■ round_02 (kill)
- `[ 73.02s]` VIBRATE [8]
- `[ 73.02s]` SFX ♪ tone_right
- `[ 73.70s]` VIBRATE [8]
- `[ 73.70s]` SFX ♪ tone_down
- `[ 74.37s]` VIBRATE [8]
- `[ 74.37s]` SFX ♪ tone_doubletap
- `[ 75.44s]` VIBRATE [20]
- `[ 75.45s]` VOICE ▶ gd_occ_dt (dur 1.68s)
- `[ 75.75s]` **GESTURE** swiperight @(195,422)
- `[ 76.11s]` VIBRATE [10]
- `[ 77.32s]` VOICE ■ gd_occ_dt (kill)
- `[ 78.12s]` **GESTURE** swiperight @(195,422)
- `[ 78.47s]` VIBRATE [10]
- `[ 78.47s]` SFX ♪ tone_right
- `[ 78.88s]` **GESTURE** swipedown @(195,422)
- `[ 79.24s]` VIBRATE [10]
- `[ 79.24s]` SFX ♪ tone_down
- `[ 79.65s]` **GESTURE** doubletap @(195,422)
- `[ 79.89s]` VIBRATE [20]
- `[ 79.89s]` VIBRATE [100]
- `[ 79.90s]` SFX ♪ tone_doubletap
- `[ 79.90s]` VOICE ▶ gd_clear (dur 1.84s)
- `[ 81.78s]` VOICE ■ gd_clear (kill)
- `[ 82.08s]` VOICE ▶ round_03 (dur 1.68s)
- `[ 83.96s]` VOICE ■ round_03 (kill)
- `[ 83.96s]` VIBRATE [8]
- `[ 83.96s]` SFX ♪ tone_right
- `[ 84.61s]` VIBRATE [8]
- `[ 84.61s]` SFX ♪ tone_down
- `[ 85.25s]` VIBRATE [8]
- `[ 85.25s]` SFX ♪ tone_doubletap
- `[ 85.90s]` VIBRATE [8]
- `[ 85.90s]` SFX ♪ tone_down
- `[ 86.95s]` VIBRATE [20]
- `[ 87.38s]` **GESTURE** swiperight @(195,422)
- `[ 87.74s]` VIBRATE [10]
- `[ 87.74s]` SFX ♪ tone_right
- `[ 88.15s]` **GESTURE** swipedown @(195,422)
- `[ 88.51s]` VIBRATE [10]
- `[ 88.51s]` SFX ♪ tone_down
- `[ 88.92s]` **GESTURE** doubletap @(195,422)
- `[ 89.16s]` VIBRATE [20]
- `[ 89.16s]` SFX ♪ tone_doubletap
- `[ 89.57s]` **GESTURE** swipedown @(195,422)
- `[ 89.92s]` VIBRATE [10]
- `[ 89.92s]` VIBRATE [100]
- `[ 89.92s]` SFX ♪ tone_down
- `[ 89.92s]` VOICE ▶ correct (dur 0.6370975056689342s)
- `[ 90.69s]` VOICE ■ correct (kill)
- `[ 91.00s]` VOICE ▶ round_04 (dur 1.84s)
- `[ 92.87s]` VOICE ■ round_04 (kill)
- `[ 92.87s]` VIBRATE [8]
- `[ 92.87s]` SFX ♪ tone_right
- `[ 93.50s]` VIBRATE [8]
- `[ 93.50s]` SFX ♪ tone_down
- `[ 94.12s]` VIBRATE [8]
- `[ 94.12s]` SFX ♪ tone_doubletap
- `[ 94.74s]` VIBRATE [8]
- `[ 94.74s]` SFX ♪ tone_down
- `[ 95.36s]` VIBRATE [8]
- `[ 95.36s]` SFX ♪ tone_up
- `[ 96.39s]` VIBRATE [20]
- `[ 96.39s]` VOICE ▶ gd_occ_both (dur 2.72s)
- `[ 99.10s]` VOICE ■ gd_occ_both (kill)
- `[ 99.55s]` **GESTURE** swiperight @(195,422)
- `[ 99.91s]` VIBRATE [10]
- `[ 99.91s]` SFX ♪ tone_right
- `[ 100.31s]` **GESTURE** swipedown @(195,422)
- `[ 100.67s]` VIBRATE [10]
- `[ 100.67s]` SFX ♪ tone_down
- `[ 101.08s]` **GESTURE** doubletap @(195,422)
- `[ 101.33s]` VIBRATE [20]
- `[ 101.33s]` SFX ♪ tone_doubletap
- `[ 101.73s]` **GESTURE** swipedown @(195,422)
- `[ 102.09s]` VIBRATE [10]
- `[ 102.09s]` SFX ♪ tone_down
- `[ 102.50s]` **GESTURE** swipeup @(195,422)
- `[ 102.86s]` VIBRATE [10]
- `[ 102.86s]` VIBRATE [100]
- `[ 102.86s]` VIBRATE [15]
- `[ 102.86s]` SFX ♪ tone_up
- `[ 102.86s]` VOICE ▶ gd_clear (dur 1.84s)
- `[ 104.74s]` VOICE ■ gd_clear (kill)
- `[ 104.74s]` VOICE ▶ chance_plus (dur 1.44s)
- `[ 106.34s]` VOICE ■ chance_plus (kill)
- `[ 106.65s]` VOICE ▶ round_05 (dur 2.96s)
- `[ 109.14s]` VIBRATE [8]
- `[ 109.14s]` SFX ♪ tone_right
- `[ 109.64s]` VOICE ■ round_05 (kill)
- `[ 109.74s]` VIBRATE [8]
- `[ 109.74s]` SFX ♪ tone_down
- `[ 110.33s]` VIBRATE [8]
- `[ 110.33s]` SFX ♪ tone_doubletap
- `[ 110.93s]` VIBRATE [8]
- `[ 110.93s]` SFX ♪ tone_down
- `[ 111.53s]` VIBRATE [8]
- `[ 111.53s]` SFX ♪ tone_up
- `[ 112.12s]` VIBRATE [8]
- `[ 112.12s]` SFX ♪ tone_tap
- `[ 113.12s]` VIBRATE [20]
- `[ 113.24s]` **GESTURE** swipeup @(195,422)
- `[ 113.61s]` VIBRATE [10]
- `[ 113.61s]` VIBRATE [15]
- `[ 113.61s]` VOICE ▶ relisten (dur 0.7996371882086167s)
- `[ 114.37s]` VOICE ■ relisten (kill)
- `[ 114.38s]` VOICE ▶ gd_chances_left1 (dur 1.52s)
- `[ 115.98s]` VOICE ■ gd_chances_left1 (kill)
- `[ 115.98s]` VIBRATE [8]
- `[ 115.98s]` SFX ♪ tone_right
- `[ 116.57s]` VIBRATE [8]
- `[ 116.57s]` SFX ♪ tone_down
- `[ 117.17s]` VIBRATE [8]
- `[ 117.17s]` SFX ♪ tone_doubletap
- `[ 117.77s]` VIBRATE [8]
- `[ 117.77s]` SFX ♪ tone_down
- `[ 118.36s]` VIBRATE [8]
- `[ 118.36s]` SFX ♪ tone_up
- `[ 118.96s]` VIBRATE [8]
- `[ 118.96s]` SFX ♪ tone_tap
- `[ 119.95s]` VIBRATE [20]
- `[ 120.35s]` **GESTURE** swiperight @(195,422)
- `[ 120.71s]` VIBRATE [10]
- `[ 120.71s]` SFX ♪ tone_right
- `[ 121.11s]` **GESTURE** swipedown @(195,422)
- `[ 121.47s]` VIBRATE [10]
- `[ 121.47s]` SFX ♪ tone_down
- `[ 121.88s]` **GESTURE** doubletap @(195,422)
- `[ 122.13s]` VIBRATE [20]
- `[ 122.13s]` SFX ♪ tone_doubletap
- `[ 122.53s]` **GESTURE** swipedown @(195,422)
- `[ 122.89s]` VIBRATE [10]
- `[ 122.89s]` SFX ♪ tone_down
- `[ 123.30s]` **GESTURE** swipeup @(195,422)
- `[ 123.66s]` VIBRATE [10]
- `[ 123.66s]` SFX ♪ tone_up
- `[ 124.06s]` **GESTURE** tap @(195,422)
- `[ 124.43s]` VIBRATE [20]
- `[ 124.43s]` VIBRATE [100]
- `[ 124.43s]` SFX ♪ tone_tap
- `[ 124.43s]` VOICE ▶ correct (dur 0.6370975056689342s)
- `[ 125.19s]` VOICE ■ correct (kill)
- `[ 125.50s]` VOICE ▶ round_06 (dur 1.68s)
- `[ 127.38s]` VOICE ■ round_06 (kill)
- `[ 127.38s]` VIBRATE [8]
- `[ 127.38s]` SFX ♪ tone_right
- `[ 127.95s]` VIBRATE [8]
- `[ 127.95s]` SFX ♪ tone_down
- `[ 128.52s]` VIBRATE [8]
- `[ 128.52s]` SFX ♪ tone_doubletap
- `[ 129.09s]` VIBRATE [8]
- `[ 129.09s]` SFX ♪ tone_down
- `[ 129.66s]` VIBRATE [8]
- `[ 129.66s]` SFX ♪ tone_up
- `[ 130.23s]` VIBRATE [8]
- `[ 130.23s]` SFX ♪ tone_tap
- `[ 130.80s]` VIBRATE [8]
- `[ 130.80s]` SFX ♪ tone_right
- `[ 131.77s]` VIBRATE [20]
- `[ 132.10s]` **GESTURE** swiperight @(195,422)
- `[ 132.46s]` VIBRATE [10]
- `[ 132.46s]` SFX ♪ tone_right
- `[ 132.86s]` **GESTURE** swipedown @(195,422)
- `[ 133.22s]` VIBRATE [10]
- `[ 133.22s]` SFX ♪ tone_down
- `[ 133.63s]` **GESTURE** doubletap @(195,422)
- `[ 133.88s]` VIBRATE [20]
- `[ 133.88s]` SFX ♪ tone_doubletap
- `[ 134.28s]` **GESTURE** swipedown @(195,422)
- `[ 134.64s]` VIBRATE [10]
- `[ 134.64s]` SFX ♪ tone_down
- `[ 135.05s]` **GESTURE** swipeup @(195,422)
- `[ 135.41s]` VIBRATE [10]
- `[ 135.41s]` SFX ♪ tone_up
- `[ 135.81s]` **GESTURE** tap @(195,422)
- `[ 136.18s]` VIBRATE [20]
- `[ 136.18s]` SFX ♪ tone_tap
- `[ 136.28s]` **GESTURE** swiperight @(195,422)
- `[ 136.64s]` VIBRATE [10]
- `[ 136.64s]` VIBRATE [100]
- `[ 136.64s]` SFX ♪ tone_right
- `[ 136.64s]` VOICE ▶ gd_clear (dur 1.84s)
- `[ 138.52s]` VOICE ■ gd_clear (kill)
- `[ 138.83s]` VOICE ▶ round_07 (dur 2.96s)
- `[ 141.32s]` VIBRATE [8]
- `[ 141.32s]` SFX ♪ tone_right
- `[ 141.82s]` VOICE ■ round_07 (kill)
- `[ 141.87s]` VIBRATE [8]
- `[ 141.87s]` SFX ♪ tone_down
- `[ 142.41s]` VIBRATE [8]
- `[ 142.41s]` SFX ♪ tone_doubletap
- `[ 142.95s]` VIBRATE [8]
- `[ 142.95s]` SFX ♪ tone_down
- `[ 143.50s]` VIBRATE [8]
- `[ 143.50s]` SFX ♪ tone_up
- `[ 144.04s]` VIBRATE [8]
- `[ 144.04s]` SFX ♪ tone_tap
- `[ 144.59s]` VIBRATE [8]
- `[ 144.59s]` SFX ♪ tone_right
- `[ 145.13s]` VIBRATE [8]
- `[ 145.13s]` SFX ♪ tone_up
- `[ 146.07s]` VIBRATE [20]
- `[ 146.16s]` **GESTURE** swipeup @(195,422)
- `[ 146.52s]` VIBRATE [10]
- `[ 146.52s]` VIBRATE [15]
- `[ 146.52s]` VOICE ▶ relisten (dur 0.7996371882086167s)
- `[ 147.27s]` VOICE ■ relisten (kill)
- `[ 147.28s]` VOICE ▶ gd_chances_left0 (dur 5.44s)
- `[ 152.96s]` VOICE ■ gd_chances_left0 (kill)
- `[ 152.96s]` VIBRATE [8]
- `[ 152.96s]` SFX ♪ tone_right
- `[ 153.51s]` VIBRATE [8]
- `[ 153.51s]` SFX ♪ tone_down
- `[ 154.05s]` VIBRATE [8]
- `[ 154.05s]` SFX ♪ tone_doubletap
- `[ 154.59s]` VIBRATE [8]
- `[ 154.59s]` SFX ♪ tone_down
- `[ 155.14s]` VIBRATE [8]
- `[ 155.14s]` SFX ♪ tone_up
- `[ 155.68s]` VIBRATE [8]
- `[ 155.68s]` SFX ♪ tone_tap
- `[ 156.23s]` VIBRATE [8]
- `[ 156.23s]` SFX ♪ tone_right
- `[ 156.77s]` VIBRATE [8]
- `[ 156.77s]` SFX ♪ tone_up
- `[ 157.72s]` VIBRATE [20]
- `[ 158.06s]` **GESTURE** swiperight @(195,422)
- `[ 158.42s]` VIBRATE [10]
- `[ 158.42s]` SFX ♪ tone_right
- `[ 158.83s]` **GESTURE** swipedown @(195,422)
- `[ 159.19s]` VIBRATE [10]
- `[ 159.19s]` SFX ♪ tone_down
- `[ 159.59s]` **GESTURE** doubletap @(195,422)
- `[ 159.84s]` VIBRATE [20]
- `[ 159.84s]` SFX ♪ tone_doubletap
- `[ 160.25s]` **GESTURE** swipedown @(195,422)
- `[ 160.61s]` VIBRATE [10]
- `[ 160.61s]` SFX ♪ tone_down
- `[ 161.01s]` **GESTURE** swipeup @(195,422)
- `[ 161.37s]` VIBRATE [10]
- `[ 161.37s]` SFX ♪ tone_up
- `[ 161.78s]` **GESTURE** tap @(195,422)
- `[ 162.14s]` VIBRATE [20]
- `[ 162.14s]` SFX ♪ tone_tap
- `[ 162.25s]` **GESTURE** swiperight @(195,422)
- `[ 162.61s]` VIBRATE [10]
- `[ 162.61s]` SFX ♪ tone_right
- `[ 163.01s]` **GESTURE** swipeup @(195,422)
- `[ 163.37s]` VIBRATE [10]
- `[ 163.37s]` VIBRATE [100]
- `[ 163.37s]` SFX ♪ tone_up
- `[ 163.37s]` VOICE ▶ correct (dur 0.6370975056689342s)
- `[ 164.13s]` VOICE ■ correct (kill)
- `[ 164.44s]` VOICE ▶ round_08 (dur 2.08s)
- `[ 166.78s]` VOICE ■ round_08 (kill)
- `[ 166.78s]` VIBRATE [8]
- `[ 166.78s]` SFX ♪ tone_right
- `[ 167.29s]` VIBRATE [8]
- `[ 167.29s]` SFX ♪ tone_down
- `[ 167.81s]` VIBRATE [8]
- `[ 167.81s]` SFX ♪ tone_doubletap
- `[ 168.33s]` VIBRATE [8]
- `[ 168.33s]` SFX ♪ tone_down
- `[ 168.85s]` VIBRATE [8]
- `[ 168.85s]` SFX ♪ tone_up
- `[ 169.37s]` VIBRATE [8]
- `[ 169.37s]` SFX ♪ tone_tap
- `[ 169.89s]` VIBRATE [8]
- `[ 169.89s]` SFX ♪ tone_right
- `[ 170.40s]` VIBRATE [8]
- `[ 170.40s]` SFX ♪ tone_up
- `[ 170.92s]` VIBRATE [8]
- `[ 170.92s]` SFX ♪ tone_down
- `[ 171.84s]` VIBRATE [20]
- `[ 172.22s]` **GESTURE** swiperight @(195,422)
- `[ 172.57s]` VIBRATE [10]
- `[ 172.57s]` SFX ♪ tone_right
- `[ 172.98s]` **GESTURE** swipedown @(195,422)
- `[ 173.34s]` VIBRATE [10]
- `[ 173.34s]` SFX ♪ tone_down
- `[ 173.75s]` **GESTURE** doubletap @(195,422)
- `[ 173.99s]` VIBRATE [20]
- `[ 173.99s]` SFX ♪ tone_doubletap
- `[ 174.40s]` **GESTURE** swipedown @(195,422)
- `[ 174.75s]` VIBRATE [10]
- `[ 174.75s]` SFX ♪ tone_down
- `[ 175.16s]` **GESTURE** swipeup @(195,422)
- `[ 175.52s]` VIBRATE [10]
- `[ 175.52s]` SFX ♪ tone_up
- `[ 175.93s]` **GESTURE** tap @(195,422)
- `[ 176.29s]` VIBRATE [20]
- `[ 176.29s]` SFX ♪ tone_tap
- `[ 176.40s]` **GESTURE** swiperight @(195,422)
- `[ 176.75s]` VIBRATE [10]
- `[ 176.75s]` SFX ♪ tone_right
- `[ 177.16s]` **GESTURE** swipeup @(195,422)
- `[ 177.52s]` VIBRATE [10]
- `[ 177.52s]` SFX ♪ tone_up
- `[ 177.93s]` **GESTURE** swipedown @(195,422)
- `[ 178.29s]` VIBRATE [10]
- `[ 178.29s]` VIBRATE [100]
- `[ 178.29s]` SFX ♪ tone_down
- `[ 178.29s]` VOICE ▶ gd_clear (dur 1.84s)
- `[ 180.17s]` VOICE ■ gd_clear (kill)
- `[ 180.48s]` VOICE ▶ round_09 (dur 2.08s)
- `[ 182.82s]` VOICE ■ round_09 (kill)
- `[ 182.82s]` VIBRATE [8]
- `[ 182.82s]` SFX ♪ tone_right
- `[ 183.31s]` VIBRATE [8]
- `[ 183.31s]` SFX ♪ tone_down
- `[ 183.81s]` VIBRATE [8]
- `[ 183.81s]` SFX ♪ tone_doubletap
- `[ 184.30s]` VIBRATE [8]
- `[ 184.30s]` SFX ♪ tone_down
- `[ 184.79s]` VIBRATE [8]
- `[ 184.79s]` SFX ♪ tone_up
- `[ 185.28s]` VIBRATE [8]
- `[ 185.28s]` SFX ♪ tone_tap
- `[ 185.77s]` VIBRATE [8]
- `[ 185.77s]` SFX ♪ tone_right
- `[ 186.27s]` VIBRATE [8]
- `[ 186.27s]` SFX ♪ tone_up
- `[ 186.76s]` VIBRATE [8]
- `[ 186.76s]` SFX ♪ tone_down
- `[ 187.25s]` VIBRATE [8]
- `[ 187.25s]` SFX ♪ tone_down
- `[ 188.14s]` VIBRATE [20]
- `[ 188.48s]` **GESTURE** swiperight @(195,422)
- `[ 188.84s]` VIBRATE [10]
- `[ 188.84s]` SFX ♪ tone_right
- `[ 189.24s]` **GESTURE** swipedown @(195,422)
- `[ 189.60s]` VIBRATE [10]
- `[ 189.60s]` SFX ♪ tone_down
- `[ 190.01s]` **GESTURE** doubletap @(195,422)
- `[ 190.26s]` VIBRATE [20]
- `[ 190.26s]` SFX ♪ tone_doubletap
- `[ 190.66s]` **GESTURE** swipedown @(195,422)
- `[ 191.02s]` VIBRATE [10]
- `[ 191.02s]` SFX ♪ tone_down
- `[ 191.43s]` **GESTURE** swipeup @(195,422)
- `[ 191.79s]` VIBRATE [10]
- `[ 191.79s]` SFX ♪ tone_up
- `[ 192.19s]` **GESTURE** tap @(195,422)
- `[ 192.56s]` VIBRATE [20]
- `[ 192.56s]` SFX ♪ tone_tap
- `[ 192.66s]` **GESTURE** swiperight @(195,422)
- `[ 193.02s]` VIBRATE [10]
- `[ 193.02s]` SFX ♪ tone_right
- `[ 193.43s]` **GESTURE** swipeup @(195,422)
- `[ 193.79s]` VIBRATE [10]
- `[ 193.79s]` SFX ♪ tone_up
- `[ 194.19s]` **GESTURE** swipedown @(195,422)
- `[ 194.55s]` VIBRATE [10]
- `[ 194.55s]` SFX ♪ tone_down
- `[ 194.96s]` **GESTURE** swipedown @(195,422)
- `[ 195.32s]` VIBRATE [10]
- `[ 195.32s]` VIBRATE [100]
- `[ 195.32s]` SFX ♪ tone_down
- `[ 195.32s]` VOICE ▶ correct (dur 0.6370975056689342s)
- `[ 196.08s]` VOICE ■ correct (kill)
- `[ 196.38s]` VOICE ▶ round_10 (dur 1.6s)
- `[ 197.98s]` VOICE ■ round_10 (kill)
- `[ 197.98s]` VIBRATE [8]
- `[ 197.98s]` SFX ♪ tone_right
- `[ 198.45s]` VIBRATE [8]
- `[ 198.45s]` SFX ♪ tone_down
- `[ 198.91s]` VIBRATE [8]
- `[ 198.91s]` SFX ♪ tone_doubletap
- `[ 199.38s]` VIBRATE [8]
- `[ 199.38s]` SFX ♪ tone_down
- `[ 199.85s]` VIBRATE [8]
- `[ 199.85s]` SFX ♪ tone_up
- `[ 200.31s]` VIBRATE [8]
- `[ 200.31s]` SFX ♪ tone_tap
- `[ 200.78s]` VIBRATE [8]
- `[ 200.78s]` SFX ♪ tone_right
- `[ 201.25s]` VIBRATE [8]
- `[ 201.25s]` SFX ♪ tone_up
- `[ 201.71s]` VIBRATE [8]
- `[ 201.71s]` SFX ♪ tone_down
- `[ 202.18s]` VIBRATE [8]
- `[ 202.18s]` SFX ♪ tone_down
- `[ 202.64s]` VIBRATE [8]
- `[ 202.64s]` SFX ♪ tone_right
- `[ 203.51s]` VIBRATE [20]
- `[ 203.91s]` **GESTURE** swiperight @(195,422)
- `[ 204.27s]` VIBRATE [10]
- `[ 204.27s]` SFX ♪ tone_right
- `[ 204.68s]` **GESTURE** swipedown @(195,422)
- `[ 205.04s]` VIBRATE [10]
- `[ 205.04s]` SFX ♪ tone_down
- `[ 205.44s]` **GESTURE** doubletap @(195,422)
- `[ 205.69s]` VIBRATE [20]
- `[ 205.69s]` SFX ♪ tone_doubletap
- `[ 206.10s]` **GESTURE** swipedown @(195,422)
- `[ 206.45s]` VIBRATE [10]
- `[ 206.45s]` SFX ♪ tone_down
- `[ 206.86s]` **GESTURE** swipeup @(195,422)
- `[ 207.22s]` VIBRATE [10]
- `[ 207.22s]` SFX ♪ tone_up
- `[ 207.63s]` **GESTURE** tap @(195,422)
- `[ 207.99s]` VIBRATE [20]
- `[ 207.99s]` SFX ♪ tone_tap
- `[ 208.10s]` **GESTURE** swiperight @(195,422)
- `[ 208.45s]` VIBRATE [10]
- `[ 208.45s]` SFX ♪ tone_right
- `[ 208.86s]` **GESTURE** swipeup @(195,422)
- `[ 209.22s]` VIBRATE [10]
- `[ 209.22s]` SFX ♪ tone_up
- `[ 209.63s]` **GESTURE** swipedown @(195,422)
- `[ 209.99s]` VIBRATE [10]
- `[ 209.99s]` SFX ♪ tone_down
- `[ 210.39s]` **GESTURE** swipedown @(195,422)
- `[ 210.75s]` VIBRATE [10]
- `[ 210.75s]` SFX ♪ tone_down
- `[ 211.16s]` **GESTURE** swiperight @(195,422)
- `[ 211.52s]` VIBRATE [10]
- `[ 211.52s]` VIBRATE [100]
- `[ 211.52s]` SFX ♪ tone_right
- `[ 211.52s]` VOICE ▶ gd_clear (dur 1.84s)
- `[ 213.40s]` VOICE ■ gd_clear (kill)
- `[ 213.71s]` VOICE ▶ round_11 (dur 1.44s)
- `[ 215.30s]` VOICE ■ round_11 (kill)
- `[ 215.30s]` VIBRATE [8]
- `[ 215.30s]` SFX ♪ tone_right
- `[ 215.74s]` VIBRATE [8]
- `[ 215.74s]` SFX ♪ tone_down
- `[ 216.18s]` VIBRATE [8]
- `[ 216.18s]` SFX ♪ tone_doubletap
- `[ 216.62s]` VIBRATE [8]
- `[ 216.62s]` SFX ♪ tone_down
- `[ 217.06s]` VIBRATE [8]
- `[ 217.06s]` SFX ♪ tone_up
- `[ 217.50s]` VIBRATE [8]
- `[ 217.50s]` SFX ♪ tone_tap
- `[ 217.94s]` VIBRATE [8]
- `[ 217.94s]` SFX ♪ tone_right
- `[ 218.38s]` VIBRATE [8]
- `[ 218.38s]` SFX ♪ tone_up
- `[ 218.82s]` VIBRATE [8]
- `[ 218.82s]` SFX ♪ tone_down
- `[ 219.26s]` VIBRATE [8]
- `[ 219.26s]` SFX ♪ tone_down
- `[ 219.70s]` VIBRATE [8]
- `[ 219.70s]` SFX ♪ tone_right
- `[ 220.14s]` VIBRATE [8]
- `[ 220.15s]` SFX ♪ tone_left
- `[ 220.99s]` VIBRATE [20]
- `[ 221.34s]` **GESTURE** swiperight @(195,422)
- `[ 221.70s]` VIBRATE [10]
- `[ 221.70s]` SFX ♪ tone_right
- `[ 222.11s]` **GESTURE** swipedown @(195,422)
- `[ 222.47s]` VIBRATE [10]
- `[ 222.47s]` SFX ♪ tone_down
- `[ 222.88s]` **GESTURE** doubletap @(195,422)
- `[ 223.12s]` VIBRATE [20]
- `[ 223.12s]` SFX ♪ tone_doubletap
- `[ 223.53s]` **GESTURE** swipedown @(195,422)
- `[ 223.89s]` VIBRATE [10]
- `[ 223.89s]` SFX ♪ tone_down
- `[ 224.29s]` **GESTURE** swipeup @(195,422)
- `[ 224.65s]` VIBRATE [10]
- `[ 224.65s]` SFX ♪ tone_up
- `[ 225.06s]` **GESTURE** tap @(195,422)
- `[ 225.42s]` VIBRATE [20]
- `[ 225.42s]` SFX ♪ tone_tap
- `[ 225.53s]` **GESTURE** swiperight @(195,422)
- `[ 225.89s]` VIBRATE [10]
- `[ 225.89s]` SFX ♪ tone_right
- `[ 226.29s]` **GESTURE** swipeup @(195,422)
- `[ 226.65s]` VIBRATE [10]
- `[ 226.65s]` SFX ♪ tone_up
- `[ 227.06s]` **GESTURE** swipedown @(195,422)
- `[ 227.42s]` VIBRATE [10]
- `[ 227.42s]` SFX ♪ tone_down
- `[ 227.83s]` **GESTURE** swipedown @(195,422)
- `[ 228.19s]` VIBRATE [10]
- `[ 228.19s]` SFX ♪ tone_down
- `[ 228.59s]` **GESTURE** swiperight @(195,422)
- `[ 228.95s]` VIBRATE [10]
- `[ 228.95s]` SFX ♪ tone_right
- `[ 229.36s]` **GESTURE** swipeleft @(195,422)
- `[ 229.72s]` VIBRATE [10]
- `[ 229.72s]` VIBRATE [100]
- `[ 229.72s]` SFX ♪ tone_left
- `[ 229.72s]` VOICE ▶ correct (dur 0.6370975056689342s)
- `[ 230.49s]` VOICE ■ correct (kill)
- `[ 230.79s]` VOICE ▶ round_12 (dur 1.68s)
- `[ 232.67s]` VOICE ■ round_12 (kill)
- `[ 232.67s]` VIBRATE [8]
- `[ 232.67s]` SFX ♪ tone_right
- `[ 233.09s]` VIBRATE [8]
- `[ 233.09s]` SFX ♪ tone_down
- `[ 233.51s]` VIBRATE [8]
- `[ 233.51s]` SFX ♪ tone_doubletap
- `[ 233.93s]` VIBRATE [8]
- `[ 233.93s]` SFX ♪ tone_down
- `[ 234.35s]` VIBRATE [8]
- `[ 234.35s]` SFX ♪ tone_up
- `[ 234.77s]` VIBRATE [8]
- `[ 234.77s]` SFX ♪ tone_tap
- `[ 235.19s]` VIBRATE [8]
- `[ 235.19s]` SFX ♪ tone_right
- `[ 235.61s]` VIBRATE [8]
- `[ 235.61s]` SFX ♪ tone_up
- `[ 236.03s]` VIBRATE [8]
- `[ 236.03s]` SFX ♪ tone_down
- `[ 236.45s]` VIBRATE [8]
- `[ 236.45s]` SFX ♪ tone_down
- `[ 236.87s]` VIBRATE [8]
- `[ 236.87s]` SFX ♪ tone_right
- `[ 237.29s]` VIBRATE [8]
- `[ 237.29s]` SFX ♪ tone_left
- `[ 237.71s]` VIBRATE [8]
- `[ 237.71s]` SFX ♪ tone_up
- `[ 238.53s]` VIBRATE [20]
- `[ 238.92s]` **GESTURE** swiperight @(195,422)
- `[ 239.29s]` VIBRATE [10]
- `[ 239.29s]` SFX ♪ tone_right
- `[ 239.69s]` **GESTURE** swipedown @(195,422)
- `[ 240.05s]` VIBRATE [10]
- `[ 240.05s]` SFX ♪ tone_down
- `[ 240.46s]` **GESTURE** doubletap @(195,422)
- `[ 240.71s]` VIBRATE [20]
- `[ 240.71s]` SFX ♪ tone_doubletap
- `[ 241.11s]` **GESTURE** swipedown @(195,422)
- `[ 241.47s]` VIBRATE [10]
- `[ 241.47s]` SFX ♪ tone_down
- `[ 241.88s]` **GESTURE** swipeup @(195,422)
- `[ 242.24s]` VIBRATE [10]
- `[ 242.24s]` SFX ♪ tone_up
- `[ 242.64s]` **GESTURE** tap @(195,422)
- `[ 243.00s]` VIBRATE [20]
- `[ 243.00s]` SFX ♪ tone_tap
- `[ 243.11s]` **GESTURE** swiperight @(195,422)
- `[ 243.47s]` VIBRATE [10]
- `[ 243.47s]` SFX ♪ tone_right
- `[ 243.87s]` **GESTURE** swipeup @(195,422)
- `[ 244.24s]` VIBRATE [10]
- `[ 244.24s]` SFX ♪ tone_up
- `[ 244.64s]` **GESTURE** swipedown @(195,422)
- `[ 245.00s]` VIBRATE [10]
- `[ 245.00s]` SFX ♪ tone_down
- `[ 245.41s]` **GESTURE** swipedown @(195,422)
- `[ 245.77s]` VIBRATE [10]
- `[ 245.77s]` SFX ♪ tone_down
- `[ 246.18s]` **GESTURE** swiperight @(195,422)
- `[ 246.53s]` VIBRATE [10]
- `[ 246.53s]` SFX ♪ tone_right
- `[ 246.94s]` **GESTURE** swipeleft @(195,422)
- `[ 247.30s]` VIBRATE [10]
- `[ 247.30s]` SFX ♪ tone_left
- `[ 247.71s]` **GESTURE** swipeup @(195,422)
- `[ 248.07s]` VIBRATE [10]
- `[ 248.07s]` VIBRATE [100]
- `[ 248.07s]` SFX ♪ tone_up
- `[ 248.07s]` VOICE ▶ gd_clear (dur 1.84s)
- `[ 249.94s]` VOICE ■ gd_clear (kill)
- `[ 250.25s]` VOICE ▶ round_13 (dur 2.48s)
- `[ 252.74s]` VIBRATE [8]
- `[ 252.74s]` SFX ♪ tone_right
- `[ 252.96s]` VOICE ■ round_13 (kill)
- `[ 253.16s]` VIBRATE [8]
- `[ 253.16s]` SFX ♪ tone_down
- `[ 253.59s]` VIBRATE [8]
- `[ 253.59s]` SFX ♪ tone_doubletap
- `[ 254.00s]` VIBRATE [8]
- `[ 254.00s]` SFX ♪ tone_down
- `[ 254.43s]` VIBRATE [8]
- `[ 254.43s]` SFX ♪ tone_up
- `[ 254.84s]` VIBRATE [8]
- `[ 254.84s]` SFX ♪ tone_tap
- `[ 255.26s]` VIBRATE [8]
- `[ 255.27s]` SFX ♪ tone_right
- `[ 255.69s]` VIBRATE [8]
- `[ 255.69s]` SFX ♪ tone_up
- `[ 256.11s]` VIBRATE [8]
- `[ 256.11s]` SFX ♪ tone_down
- `[ 256.53s]` VIBRATE [8]
- `[ 256.53s]` SFX ♪ tone_down
- `[ 256.95s]` VIBRATE [8]
- `[ 256.95s]` SFX ♪ tone_right
- `[ 257.37s]` VIBRATE [8]
- `[ 257.37s]` SFX ♪ tone_left
- `[ 257.79s]` VIBRATE [8]
- `[ 257.79s]` SFX ♪ tone_up
- `[ 258.21s]` VIBRATE [8]
- `[ 258.21s]` SFX ♪ tone_tap
- `[ 259.03s]` VIBRATE [20]
- `[ 259.36s]` **GESTURE** swipedown @(195,422)
- `[ 259.72s]` VIBRATE [10]
- `[ 259.72s]` VIBRATE [60,40,60]
- `[ 259.72s]` SFX ♪ tone_down
- `[ 259.73s]` VOICE ▶ retry_use (dur 2.64s)
- `[ 260.02s]` VIBRATE [30,50,30,50,30]
- `[ 262.44s]` VOICE ■ retry_use (kill)
- `[ 262.44s]` VOICE ▶ gd_occ_both (dur 2.72s)
- `[ 265.15s]` VOICE ■ gd_occ_both (kill)
- `[ 265.15s]` VIBRATE [8]
- `[ 265.15s]` SFX ♪ tone_right
- `[ 265.57s]` VIBRATE [8]
- `[ 265.57s]` SFX ♪ tone_down
- `[ 265.99s]` VIBRATE [8]
- `[ 265.99s]` SFX ♪ tone_doubletap
- `[ 266.41s]` VIBRATE [8]
- `[ 266.41s]` SFX ♪ tone_down
- `[ 266.83s]` VIBRATE [8]
- `[ 266.83s]` SFX ♪ tone_up
- `[ 267.25s]` VIBRATE [8]
- `[ 267.25s]` SFX ♪ tone_tap
- `[ 267.67s]` VIBRATE [8]
- `[ 267.67s]` SFX ♪ tone_right
- `[ 268.09s]` VIBRATE [8]
- `[ 268.09s]` SFX ♪ tone_up
- `[ 268.51s]` VIBRATE [8]
- `[ 268.51s]` SFX ♪ tone_down
- `[ 268.93s]` VIBRATE [8]
- `[ 268.93s]` SFX ♪ tone_down
- `[ 269.35s]` VIBRATE [8]
- `[ 269.35s]` SFX ♪ tone_right
- `[ 269.77s]` VIBRATE [8]
- `[ 269.77s]` SFX ♪ tone_left
- `[ 270.19s]` VIBRATE [8]
- `[ 270.19s]` SFX ♪ tone_up
- `[ 270.61s]` VIBRATE [8]
- `[ 270.61s]` SFX ♪ tone_tap
- `[ 271.44s]` VIBRATE [20]
- `[ 271.74s]` **GESTURE** swipedown @(195,422)
- `[ 272.10s]` VIBRATE [10]
- `[ 272.10s]` VIBRATE [60,40,60]
- `[ 272.10s]` SFX ♪ tone_down
- `[ 272.10s]` VOICE ▶ retry_use (dur 2.64s)
- `[ 272.40s]` VIBRATE [30,50,30,50,30]
- `[ 274.81s]` VOICE ■ retry_use (kill)
- `[ 274.82s]` VOICE ▶ chances_out (dur 1.76s)
- `[ 276.69s]` VOICE ■ chances_out (kill)
- `[ 276.69s]` VOICE ▶ gd_occ_both (dur 2.72s)
- `[ 279.41s]` VOICE ■ gd_occ_both (kill)
- `[ 279.41s]` VIBRATE [8]
- `[ 279.41s]` SFX ♪ tone_right
- `[ 279.83s]` VIBRATE [8]
- `[ 279.83s]` SFX ♪ tone_down
- `[ 280.25s]` VIBRATE [8]
- `[ 280.25s]` SFX ♪ tone_doubletap
- `[ 280.67s]` VIBRATE [8]
- `[ 280.67s]` SFX ♪ tone_down
- `[ 281.09s]` VIBRATE [8]
- `[ 281.09s]` SFX ♪ tone_up
- `[ 281.51s]` VIBRATE [8]
- `[ 281.51s]` SFX ♪ tone_tap
- `[ 281.93s]` VIBRATE [8]
- `[ 281.93s]` SFX ♪ tone_right
- `[ 282.35s]` VIBRATE [8]
- `[ 282.35s]` SFX ♪ tone_up
- `[ 282.77s]` VIBRATE [8]
- `[ 282.77s]` SFX ♪ tone_down
- `[ 283.19s]` VIBRATE [8]
- `[ 283.19s]` SFX ♪ tone_down
- `[ 283.61s]` VIBRATE [8]
- `[ 283.61s]` SFX ♪ tone_right
- `[ 284.03s]` VIBRATE [8]
- `[ 284.03s]` SFX ♪ tone_left
- `[ 284.45s]` VIBRATE [8]
- `[ 284.45s]` SFX ♪ tone_up
- `[ 284.87s]` VIBRATE [8]
- `[ 284.87s]` SFX ♪ tone_tap
- `[ 285.69s]` VIBRATE [20]
- `[ 286.10s]` **GESTURE** swipedown @(195,422)
- `[ 286.45s]` VIBRATE [10]
- `[ 286.45s]` VIBRATE [60,40,60]
- `[ 286.45s]` SFX ♪ tone_down
- `[ 286.75s]` VIBRATE [80]
- `[ 287.15s]` SFX ♪ gameover
- `[ 287.86s]` VOICE ▶ gameover (dur 0.9570975056689343s)
- `[ 289.00s]` VOICE ■ gameover (kill)
- `[ 289.00s]` VOICE ▶ score_band5 (dur 2.32s)
- `[ 289.24s]` BGM ♪ menu (loop)
- `[ 291.34s]` VOICE ■ score_band5 (kill)
- `[ 291.35s]` VOICE ▶ new_record (dur 1.28s)
- `[ 292.94s]` VOICE ■ new_record (kill)
- `[ 292.95s]` VOICE ▶ replay (dur 2.24s)
- `[ 295.29s]` VOICE ■ replay (kill)
- `[ 295.30s]` VOICE ▶ rules_prompt (dur 5.36s)
- `[ 300.98s]` VOICE ■ rules_prompt (kill)
- `[ 301.58s]` **GESTURE** tap @(195,422)
- `[ 301.95s]` VIBRATE [20]
- `[ 301.95s]` SFX ♪ tone_tap
- `[ 301.95s]` VOICE ▶ round_01 (dur 1.52s)
- `[ 303.55s]` VOICE ■ round_01 (kill)
- `[ 303.55s]` VIBRATE [8]
- `[ 303.55s]` SFX ♪ tone_tap
- `[ 304.25s]` VIBRATE [8]
- `[ 304.25s]` SFX ♪ tone_doubletap
- `[ 305.36s]` VIBRATE [20]
- `[ 305.36s]` VOICE ▶ gd_occ_dt (dur 1.68s)
- `[ 307.22s]` VOICE ■ gd_occ_dt (kill)
- `[ 307.22s]` VOICE ▶ your_turn (dur 0.7970975056689342s)
- `[ 307.99s]` VOICE ■ your_turn (kill)
- `[ 308.43s]` **GESTURE** tap @(195,422)
- `[ 308.80s]` VIBRATE [20]
- `[ 308.80s]` SFX ♪ tone_tap
- `[ 308.90s]` **GESTURE** doubletap @(195,422)
- `[ 309.15s]` VIBRATE [20]
- `[ 309.15s]` VIBRATE [100]
- `[ 309.15s]` SFX ♪ tone_doubletap
- `[ 309.15s]` VOICE ▶ correct (dur 0.6370975056689342s)
- `[ 309.92s]` VOICE ■ correct (kill)
- `[ 310.22s]` VOICE ▶ round_02 (dur 1.44s)
- `[ 311.82s]` VOICE ■ round_02 (kill)
- `[ 311.82s]` VIBRATE [8]
- `[ 311.82s]` SFX ♪ tone_tap
- `[ 312.49s]` VIBRATE [8]
- `[ 312.49s]` SFX ♪ tone_doubletap
- `[ 313.17s]` VIBRATE [8]
- `[ 313.17s]` SFX ♪ tone_doubletap
- `[ 314.24s]` VIBRATE [20]
- `[ 314.65s]` **GESTURE** tap @(195,422)
- `[ 315.02s]` VIBRATE [20]
- `[ 315.02s]` SFX ♪ tone_tap
- `[ 315.12s]` **GESTURE** doubletap @(195,422)
- `[ 315.37s]` VIBRATE [20]
- `[ 315.37s]` SFX ♪ tone_doubletap
- `[ 315.77s]` **GESTURE** doubletap @(195,422)
- `[ 316.02s]` VIBRATE [20]
- `[ 316.02s]` VIBRATE [100]
- `[ 316.02s]` SFX ♪ tone_doubletap
- `[ 316.02s]` VOICE ▶ gd_clear (dur 1.84s)
- `[ 317.90s]` VOICE ■ gd_clear (kill)
- `[ 318.20s]` VOICE ▶ round_03 (dur 1.68s)
- `[ 318.28s]` **GESTURE** swipedown @(195,422)
- `[ 318.63s]` VIBRATE [10]
- `[ 320.08s]` VOICE ■ round_03 (kill)
- `[ 320.08s]` VIBRATE [8]
- `[ 320.08s]` SFX ♪ tone_tap
- `[ 320.73s]` VIBRATE [8]
- `[ 320.73s]` SFX ♪ tone_doubletap
- `[ 321.38s]` VIBRATE [8]
- `[ 321.38s]` SFX ♪ tone_doubletap
- `[ 322.03s]` VIBRATE [8]
- `[ 322.03s]` SFX ♪ tone_left
- `[ 323.08s]` VIBRATE [20]
@@ -0,0 +1,988 @@
{
"game": "simon",
"settings": {
"voice": "female",
"guide": "full",
"speed": 1,
"bgm": 1
},
"outdir": "/home/xsl/AutoVideo/SoundGame/web/harness/live/out/simon-20260914104429",
"segs": [
{
"idx": 0,
"voiceId": "t0_welcome",
"t0": 0.502,
"t1": 5.064,
"dur": 4.24,
"expEnd": 4.742,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 1,
"voiceId": "skip_hint",
"t0": 5.064,
"t1": 6.666,
"dur": 1.6,
"expEnd": 6.664,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 2,
"voiceId": "t0_goal",
"t0": 6.666,
"t1": 13.097,
"dur": 6.08,
"expEnd": 12.746,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 3,
"voiceId": "t1_up",
"t0": 13.106,
"t1": 18.042,
"dur": 4.64,
"expEnd": 17.746,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 4,
"voiceId": "t_try",
"t0": 18.943,
"t1": 19.714,
"dur": 0.7970975056689342,
"expEnd": 19.74,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 5,
"voiceId": "t_ok",
"t0": 20.35,
"t1": 20.829,
"dur": 0.4770975056689342,
"expEnd": 20.827,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 6,
"voiceId": "t2_down",
"t0": 20.834,
"t1": 23.173,
"dur": 2.24,
"expEnd": 23.074,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 7,
"voiceId": "t_try",
"t0": 24.074,
"t1": 24.845,
"dur": 0.7970975056689342,
"expEnd": 24.871,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 8,
"voiceId": "t_ok",
"t0": 25.411,
"t1": 25.89,
"dur": 0.4770975056689342,
"expEnd": 25.888,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 9,
"voiceId": "t3_left",
"t0": 25.896,
"t1": 28.607,
"dur": 2.64,
"expEnd": 28.536,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 10,
"voiceId": "t_try",
"t0": 29.507,
"t1": 30.278,
"dur": 0.7970975056689342,
"expEnd": 30.304,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 11,
"voiceId": "t_wrong_left",
"t0": 30.851,
"t1": 33.552,
"dur": 2.48,
"expEnd": 33.331,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 12,
"voiceId": "t_ok",
"t0": 34.261,
"t1": 34.736,
"dur": 0.4770975056689342,
"expEnd": 34.738,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 13,
"voiceId": "t4_right",
"t0": 34.741,
"t1": 36.338,
"dur": 1.44,
"expEnd": 36.181,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 14,
"voiceId": "t_try",
"t0": 37.238,
"t1": 38.01,
"dur": 0.7970975056689342,
"expEnd": 38.035,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 15,
"voiceId": "t_ok",
"t0": 38.577,
"t1": 39.055,
"dur": 0.4770975056689342,
"expEnd": 39.054,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 16,
"voiceId": "t5_tap",
"t0": 39.06,
"t1": 40.657,
"dur": 1.6,
"expEnd": 40.66,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 17,
"voiceId": "t_try",
"t0": 41.557,
"t1": 42.328,
"dur": 0.7970975056689342,
"expEnd": 42.354,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 18,
"voiceId": "t_ok",
"t0": 42.904,
"t1": 43.396,
"dur": 0.4770975056689342,
"expEnd": 43.381,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 19,
"voiceId": "t6_double",
"t0": 43.402,
"t1": 45.742,
"dur": 2.16,
"expEnd": 45.562,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 20,
"voiceId": "t_try",
"t0": 46.642,
"t1": 47.413,
"dur": 0.7970975056689342,
"expEnd": 47.439,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 21,
"voiceId": "t_ok",
"t0": 47.93,
"t1": 48.411,
"dur": 0.4770975056689342,
"expEnd": 48.407,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 22,
"voiceId": "t7_ready",
"t0": 48.419,
"t1": 51.871,
"dur": 3.44,
"expEnd": 51.859,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 23,
"voiceId": "t7_retry",
"t0": 51.881,
"t1": 57.838,
"dur": 5.76,
"expEnd": 57.641,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 24,
"voiceId": "gd_economy",
"t0": 57.847,
"t1": 64.641,
"dur": 6.72,
"expEnd": 64.567,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 25,
"voiceId": "round_01",
"t0": 64.641,
"t1": 66.243,
"dur": 1.52,
"expEnd": 66.161,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 26,
"voiceId": "your_turn",
"t0": 68.05,
"t1": 68.82,
"dur": 0.7970975056689342,
"expEnd": 68.847,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 27,
"voiceId": "correct",
"t0": 70.364,
"t1": 71.119,
"dur": 0.6370975056689342,
"expEnd": 71.001,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 28,
"voiceId": "round_02",
"t0": 71.425,
"t1": 73.023,
"dur": 1.44,
"expEnd": 72.865,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 29,
"voiceId": "gd_occ_dt",
"t0": 75.452,
"t1": 77.318,
"dur": 1.68,
"expEnd": 77.132,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 30,
"voiceId": "gd_clear",
"t0": 79.901,
"t1": 81.776,
"dur": 1.84,
"expEnd": 81.741,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 31,
"voiceId": "round_03",
"t0": 82.082,
"t1": 83.958,
"dur": 1.68,
"expEnd": 83.762,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 32,
"voiceId": "correct",
"t0": 89.925,
"t1": 90.692,
"dur": 0.6370975056689342,
"expEnd": 90.562,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 33,
"voiceId": "round_04",
"t0": 90.998,
"t1": 92.874,
"dur": 1.84,
"expEnd": 92.838,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 34,
"voiceId": "gd_occ_both",
"t0": 96.392,
"t1": 99.096,
"dur": 2.72,
"expEnd": 99.112,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 35,
"voiceId": "gd_clear",
"t0": 102.858,
"t1": 104.738,
"dur": 1.84,
"expEnd": 104.698,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 36,
"voiceId": "chance_plus",
"t0": 104.744,
"t1": 106.34,
"dur": 1.44,
"expEnd": 106.184,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 37,
"voiceId": "round_05",
"t0": 106.648,
"t1": 109.637,
"dur": 2.96,
"expEnd": 109.608,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 38,
"voiceId": "relisten",
"t0": 113.613,
"t1": 114.374,
"dur": 0.7996371882086167,
"expEnd": 114.413,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 39,
"voiceId": "gd_chances_left1",
"t0": 114.38,
"t1": 115.976,
"dur": 1.52,
"expEnd": 115.9,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 40,
"voiceId": "correct",
"t0": 124.427,
"t1": 125.193,
"dur": 0.6370975056689342,
"expEnd": 125.064,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 41,
"voiceId": "round_06",
"t0": 125.5,
"t1": 127.376,
"dur": 1.68,
"expEnd": 127.18,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 42,
"voiceId": "gd_clear",
"t0": 136.64,
"t1": 138.52,
"dur": 1.84,
"expEnd": 138.48,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 43,
"voiceId": "round_07",
"t0": 138.828,
"t1": 141.817,
"dur": 2.96,
"expEnd": 141.788,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 44,
"voiceId": "relisten",
"t0": 146.523,
"t1": 147.274,
"dur": 0.7996371882086167,
"expEnd": 147.323,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 45,
"voiceId": "gd_chances_left0",
"t0": 147.283,
"t1": 152.962,
"dur": 5.44,
"expEnd": 152.723,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 46,
"voiceId": "correct",
"t0": 163.372,
"t1": 164.13,
"dur": 0.6370975056689342,
"expEnd": 164.009,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 47,
"voiceId": "round_08",
"t0": 164.437,
"t1": 166.777,
"dur": 2.08,
"expEnd": 166.517,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 48,
"voiceId": "gd_clear",
"t0": 178.288,
"t1": 180.173,
"dur": 1.84,
"expEnd": 180.128,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 49,
"voiceId": "round_09",
"t0": 180.481,
"t1": 182.82,
"dur": 2.08,
"expEnd": 182.561,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 50,
"voiceId": "correct",
"t0": 195.321,
"t1": 196.078,
"dur": 0.6370975056689342,
"expEnd": 195.958,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 51,
"voiceId": "round_10",
"t0": 196.385,
"t1": 197.982,
"dur": 1.6,
"expEnd": 197.985,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 52,
"voiceId": "gd_clear",
"t0": 211.52,
"t1": 213.399,
"dur": 1.84,
"expEnd": 213.36,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 53,
"voiceId": "round_11",
"t0": 213.705,
"t1": 215.303,
"dur": 1.44,
"expEnd": 215.145,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 54,
"voiceId": "correct",
"t0": 229.72,
"t1": 230.487,
"dur": 0.6370975056689342,
"expEnd": 230.357,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 55,
"voiceId": "round_12",
"t0": 230.794,
"t1": 232.67,
"dur": 1.68,
"expEnd": 232.474,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 56,
"voiceId": "gd_clear",
"t0": 248.069,
"t1": 249.944,
"dur": 1.84,
"expEnd": 249.909,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 57,
"voiceId": "round_13",
"t0": 250.251,
"t1": 252.962,
"dur": 2.48,
"expEnd": 252.731,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 58,
"voiceId": "retry_use",
"t0": 259.725,
"t1": 262.435,
"dur": 2.64,
"expEnd": 262.365,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 59,
"voiceId": "gd_occ_both",
"t0": 262.435,
"t1": 265.152,
"dur": 2.72,
"expEnd": 265.155,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 60,
"voiceId": "retry_use",
"t0": 272.101,
"t1": 274.81,
"dur": 2.64,
"expEnd": 274.741,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 61,
"voiceId": "chances_out",
"t0": 274.817,
"t1": 276.691,
"dur": 1.76,
"expEnd": 276.577,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 62,
"voiceId": "gd_occ_both",
"t0": 276.691,
"t1": 279.407,
"dur": 2.72,
"expEnd": 279.411,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 63,
"voiceId": "gameover",
"t0": 287.857,
"t1": 288.996,
"dur": 0.9570975056689343,
"expEnd": 288.814,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 64,
"voiceId": "score_band5",
"t0": 289.003,
"t1": 291.341,
"dur": 2.32,
"expEnd": 291.323,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 65,
"voiceId": "new_record",
"t0": 291.347,
"t1": 292.943,
"dur": 1.28,
"expEnd": 292.627,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 66,
"voiceId": "replay",
"t0": 292.95,
"t1": 295.288,
"dur": 2.24,
"expEnd": 295.19,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 67,
"voiceId": "rules_prompt",
"t0": 295.297,
"t1": 300.977,
"dur": 5.36,
"expEnd": 300.657,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 68,
"voiceId": "round_01",
"t0": 301.948,
"t1": 303.554,
"dur": 1.52,
"expEnd": 303.468,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 69,
"voiceId": "gd_occ_dt",
"t0": 305.355,
"t1": 307.223,
"dur": 1.68,
"expEnd": 307.035,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 70,
"voiceId": "your_turn",
"t0": 307.223,
"t1": 307.989,
"dur": 0.7970975056689342,
"expEnd": 308.02,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 71,
"voiceId": "correct",
"t0": 309.149,
"t1": 309.916,
"dur": 0.6370975056689342,
"expEnd": 309.786,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 72,
"voiceId": "round_02",
"t0": 310.216,
"t1": 311.82,
"dur": 1.44,
"expEnd": 311.656,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 73,
"voiceId": "gd_clear",
"t0": 316.022,
"t1": 317.903,
"dur": 1.84,
"expEnd": 317.862,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
},
{
"idx": 74,
"voiceId": "round_03",
"t0": 318.203,
"t1": 320.085,
"dur": 1.68,
"expEnd": 319.883,
"truncated": false,
"reason": "kill",
"verdict": null,
"heard": null,
"similarity": null
}
],
"rows": []
}
@@ -0,0 +1,56 @@
== 局 B(急性子乱按,male/1.7/guide full)
[我] 解锁 → tap
[我] 连点跳开场旁白 → tap
[我] 连点跳开场旁白 → tap
[我] 连点跳开场旁白 → tap
[我] 教学里乱滑 → swipeleft
[我] 教学里连点 → tap
[我] 下滑,跳教学 → swipedown
[听] 进第 1 轮(教学被跳)
[我] 凭感觉乱答 → swiperight
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → swipeleft
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → tap
[我] 凭感觉乱答 → swipeleft
[我] 凭感觉乱答 → swipeup
[我] 凭感觉乱答 → tap
[我] 凭感觉乱答 → swipedown
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → swipeleft
[我] 凭感觉乱答 → tap
[我] 凭感觉乱答 → swipeleft
[我] 凭感觉乱答 → swiperight
[我] 凭感觉乱答 → swipeleft
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → swipeup
[我] 凭感觉乱答 → tap
[我] 凭感觉乱答 → swiperight
[我] 凭感觉乱答 → swipedown
[我] 凭感觉乱答 → swipeleft
[我] 凭感觉乱答 → swipeup
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → swiperight
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → swipeup
[我] 凭感觉乱答 → swipeup
[我] 凭感觉乱答 → swiperight
[我] 凭感觉乱答 → swipedown
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → tap
[我] 凭感觉乱答 → swipedown
[我] 凭感觉乱答 → swiperight
[我] 凭感觉乱答 → swipeleft
[我] 凭感觉乱答 → swipeleft
[我] 凭感觉乱答 → swipedown
[听] gameover
[我] 结算后上滑听规则 → swipeup
[我] 结算里连点 → tap
[我] 再点 → tap
[我] 长按试试 → longpress
[我] 下滑开菜单 → swipedown
[我] 菜单乱点 → tap
[我] 菜单乱滑 → swipeleft
[我] 菜单双击 → doubletap
== 局 B 结束
落盘: /home/xsl/AutoVideo/SoundGame/web/harness/live/out/simon-20260914105055 4 件, 25 语音段, 0 判定行
@@ -0,0 +1,211 @@
{"ev":"probe_ready","t":8.400000005960464,"ta":null}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":820.8000000119209,"ta":-0.073}
{"ev":"recstart","mime":"audio/webm;codecs=opus","t":893.8000000119209,"ta":0}
{"ev":"fetch","url":"audio/sfx/tone_up.ogg","status":200,"ok":true,"ms":15,"t":908.5,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_down.ogg","status":200,"ok":true,"ms":14,"t":908.6999999880791,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_left.ogg","status":200,"ok":true,"ms":14,"t":908.8000000119209,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_right.ogg","status":200,"ok":true,"ms":14,"t":908.8000000119209,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_tap.ogg","status":200,"ok":true,"ms":15,"t":908.9000000059605,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_doubletap.ogg","status":200,"ok":true,"ms":15,"t":908.9000000059605,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/gameover.ogg","status":200,"ok":true,"ms":14,"t":909,"ta":0.015}
{"ev":"fetch","url":"audio/voice/male/t0_welcome.ogg","status":200,"ok":true,"ms":15,"t":909.0999999940395,"ta":0.015}
{"ev":"fetch","url":"audio/voice/male/skip_hint.ogg","status":200,"ok":true,"ms":14,"t":909.0999999940395,"ta":0.015}
{"ev":"fetch","url":"audio/voice/male/t_try.ogg","status":200,"ok":true,"ms":14,"t":909.1999999880791,"ta":0.016}
{"ev":"fetch","url":"audio/voice/male/t0_goal.ogg","status":200,"ok":true,"ms":15,"t":909.1999999880791,"ta":0.016}
{"ev":"fetch","url":"audio/voice/male/round_01.ogg","status":200,"ok":true,"ms":14,"t":909.1999999880791,"ta":0.016}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":1300.800000011921,"ta":0.407}
{"ev":"vstart","url":"audio/voice/male/t0_welcome.ogg","t":1395.800000011921,"dur":5.04,"ta":0.502}
{"ev":"vibrate","pattern":"[20]","t":1664.699999988079,"ta":0.771}
{"ev":"vend","url":"audio/voice/male/t0_welcome.ogg","t":1664.9000000059605,"reason":"kill","ta":0.771}
{"ev":"vstart","url":"audio/voice/male/skip_hint.ogg","t":1665.0999999940395,"dur":2.32,"ta":0.771}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":1769.9000000059605,"ta":0.876}
{"ev":"vibrate","pattern":"[20]","t":2133.0999999940395,"ta":1.239}
{"ev":"vend","url":"audio/voice/male/skip_hint.ogg","t":2133.0999999940395,"reason":"kill","ta":1.239}
{"ev":"vstart","url":"audio/voice/male/t0_goal.ogg","t":2133.300000011921,"dur":5.84,"ta":1.24}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":2237.5999999940395,"ta":1.344}
{"ev":"vibrate","pattern":"[20]","t":2600.800000011921,"ta":1.707}
{"ev":"vend","url":"audio/voice/male/t0_goal.ogg","t":2600.800000011921,"reason":"kill","ta":1.707}
{"ev":"fetch","url":"audio/voice/male/t1_up.ogg","status":200,"ok":true,"ms":3,"t":2603.5999999940395,"ta":1.71}
{"ev":"vstart","url":"audio/voice/male/t1_up.ogg","t":2607.800000011921,"dur":3.12,"ta":1.714}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":2704.9000000059605,"ta":1.811}
{"ev":"vibrate","pattern":"[10]","t":3055.699999988079,"ta":2.162}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":3460.699999988079,"ta":2.567}
{"ev":"vibrate","pattern":"[20]","t":3823.5999999940395,"ta":2.93}
{"ev":"vend","url":"audio/voice/male/t1_up.ogg","t":3823.5999999940395,"reason":"kill","ta":2.93}
{"ev":"start","t":3823.9000000059605,"sid":1,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":2.93}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":3928.800000011921,"ta":3.035}
{"ev":"vibrate","pattern":"[10]","t":4289.0999999940395,"ta":3.395}
{"ev":"fetch","url":"audio/voice/male/t_skip.ogg","status":200,"ok":true,"ms":2,"t":4291.5,"ta":3.398}
{"ev":"vstart","url":"audio/voice/male/t_skip.ogg","t":4295.300000011921,"dur":2.48,"ta":3.402}
{"ev":"vend","url":"audio/voice/male/t_skip.ogg","t":7000.0999999940395,"reason":"kill","ta":6.106}
{"ev":"vstart","url":"audio/voice/male/round_01.ogg","t":7000.4000000059605,"dur":2.64,"ta":6.107}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":7038.699999988079,"ta":6.145}
{"ev":"vibrate","pattern":"[10]","t":7388.800000011921,"ta":6.495}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":7996,"ta":7.102}
{"ev":"vibrate","pattern":"[20]","t":8244.5,"ta":7.351}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":8852.699999988079,"ta":7.959}
{"ev":"vibrate","pattern":"[10]","t":9205.300000011921,"ta":8.312}
{"ev":"vibrate","pattern":"[8]","t":9500.59999999404,"ta":8.607}
{"ev":"start","t":9500.699999988079,"sid":2,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":8.607}
{"ev":"vend","url":"audio/voice/male/round_01.ogg","t":9716,"reason":"kill","ta":8.822}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":9813.09999999404,"ta":8.919}
{"ev":"vibrate","pattern":"[20]","t":10059.59999999404,"ta":9.166}
{"ev":"vibrate","pattern":"[8]","t":10200.699999988079,"ta":9.307}
{"ev":"start","t":10200.90000000596,"sid":3,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":9.307}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":10667.40000000596,"ta":9.774}
{"ev":"vibrate","pattern":"[20]","t":11030.90000000596,"ta":10.137}
{"ev":"vibrate","pattern":"[20]","t":11301.199999988079,"ta":10.408}
{"ev":"fetch","url":"audio/voice/male/gd_occ_up.ogg","status":200,"ok":true,"ms":3,"t":11305.199999988079,"ta":10.412}
{"ev":"vstart","url":"audio/voice/male/gd_occ_up.ogg","t":11310.199999988079,"dur":4,"ta":10.417}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":11338,"ta":10.444}
{"ev":"vibrate","pattern":"[10]","t":11688.800000011921,"ta":10.795}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":12296.300000011921,"ta":11.403}
{"ev":"vibrate","pattern":"[10]","t":12655.199999988079,"ta":11.762}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":13264.90000000596,"ta":12.371}
{"ev":"vibrate","pattern":"[20]","t":13628,"ta":12.734}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":13935,"ta":13.041}
{"ev":"vibrate","pattern":"[10]","t":14288.90000000596,"ta":13.395}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":14895.5,"ta":14.002}
{"ev":"vibrate","pattern":"[20]","t":15141.90000000596,"ta":14.248}
{"ev":"vend","url":"audio/voice/male/gd_occ_up.ogg","t":15404.300000011921,"reason":"kill","ta":14.511}
{"ev":"fetch","url":"audio/voice/male/your_turn.ogg","status":200,"ok":true,"ms":3,"t":15407,"ta":14.513}
{"ev":"vstart","url":"audio/voice/male/your_turn.ogg","t":15409.59999999404,"dur":1.36,"ta":14.516}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":15748.699999988079,"ta":14.855}
{"ev":"vibrate","pattern":"[10]","t":16105.5,"ta":15.212}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":16713.40000000596,"ta":15.82}
{"ev":"vend","url":"audio/voice/male/your_turn.ogg","t":17006.59999999404,"reason":"kill","ta":16.113}
{"ev":"vibrate","pattern":"[20]","t":17076.69999998808,"ta":16.183}
{"ev":"start","t":17076.80000001192,"sid":4,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":16.183}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":17386,"ta":16.492}
{"ev":"vibrate","pattern":"[10]","t":17738.59999999404,"ta":16.845}
{"ev":"vibrate","pattern":"[60,40,60]","t":17738.80000001192,"ta":16.845}
{"ev":"start","t":17739.09999999404,"sid":5,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":16.845}
{"ev":"fetch","url":"audio/voice/male/retry_use.ogg","status":200,"ok":true,"ms":2,"t":17741.09999999404,"ta":16.847}
{"ev":"vstart","url":"audio/voice/male/retry_use.ogg","t":17745.80000001192,"dur":3.52,"ta":16.852}
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":18039,"ta":17.145}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":18346.80000001192,"ta":17.453}
{"ev":"vibrate","pattern":"[10]","t":18705.19999998808,"ta":17.812}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":19311.90000000596,"ta":18.418}
{"ev":"vibrate","pattern":"[10]","t":19671.5,"ta":18.778}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":20279.09999999404,"ta":19.385}
{"ev":"vibrate","pattern":"[20]","t":20525.19999998808,"ta":19.632}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":21133,"ta":20.239}
{"ev":"vibrate","pattern":"[10]","t":21488.5,"ta":20.595}
{"ev":"vend","url":"audio/voice/male/retry_use.ogg","t":21580.40000000596,"reason":"kill","ta":20.687}
{"ev":"fetch","url":"audio/voice/male/chances_out.ogg","status":200,"ok":true,"ms":3,"t":21583.19999998808,"ta":20.69}
{"ev":"vstart","url":"audio/voice/male/chances_out.ogg","t":21587.09999999404,"dur":2.24,"ta":20.693}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":22096.30000001192,"ta":21.203}
{"ev":"vibrate","pattern":"[20]","t":22459.40000000596,"ta":21.566}
{"ev":"vend","url":"audio/voice/male/chances_out.ogg","t":22459.5,"reason":"kill","ta":21.566}
{"ev":"vstart","url":"audio/voice/male/gd_occ_up.ogg","t":22459.59999999404,"dur":4,"ta":21.566}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":22766.90000000596,"ta":21.873}
{"ev":"vibrate","pattern":"[10]","t":23121.59999999404,"ta":22.228}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":23727.69999998808,"ta":22.834}
{"ev":"vibrate","pattern":"[10]","t":24087.80000001192,"ta":23.194}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":24696.80000001192,"ta":23.803}
{"ev":"vibrate","pattern":"[10]","t":25054.5,"ta":24.161}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":25663.59999999404,"ta":24.77}
{"ev":"vibrate","pattern":"[10]","t":26021.30000001192,"ta":25.128}
{"ev":"vend","url":"audio/voice/male/gd_occ_up.ogg","t":26572.30000001192,"reason":"kill","ta":25.679}
{"ev":"vibrate","pattern":"[8]","t":26572.30000001192,"ta":25.679}
{"ev":"start","t":26572.5,"sid":6,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":25.679}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":26629.90000000596,"ta":25.736}
{"ev":"vibrate","pattern":"[20]","t":26876.30000001192,"ta":25.983}
{"ev":"vibrate","pattern":"[8]","t":27272.5,"ta":26.379}
{"ev":"start","t":27272.59999999404,"sid":7,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":26.379}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":27484.09999999404,"ta":26.59}
{"ev":"vibrate","pattern":"[10]","t":27838.40000000596,"ta":26.945}
{"ev":"vibrate","pattern":"[20]","t":28372.80000001192,"ta":27.479}
{"ev":"vstart","url":"audio/voice/male/your_turn.ogg","t":28373,"dur":1.36,"ta":27.479}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":28445.69999998808,"ta":27.552}
{"ev":"vibrate","pattern":"[20]","t":28693.40000000596,"ta":27.8}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":29300.19999998808,"ta":28.407}
{"ev":"vibrate","pattern":"[10]","t":29654.5,"ta":28.761}
{"ev":"vend","url":"audio/voice/male/your_turn.ogg","t":29962.30000001192,"reason":"kill","ta":29.069}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":30261.90000000596,"ta":29.368}
{"ev":"vibrate","pattern":"[10]","t":30621.09999999404,"ta":29.727}
{"ev":"vibrate","pattern":"[15]","t":30621.19999998808,"ta":29.728}
{"ev":"fetch","url":"audio/voice/male/relisten.ogg","status":200,"ok":true,"ms":3,"t":30623.90000000596,"ta":29.73}
{"ev":"vstart","url":"audio/voice/male/relisten.ogg","t":30626.80000001192,"dur":1.2,"ta":29.733}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":31228.30000001192,"ta":30.335}
{"ev":"vibrate","pattern":"[10]","t":31587.59999999404,"ta":30.694}
{"ev":"vend","url":"audio/voice/male/relisten.ogg","t":31750.09999999404,"reason":"kill","ta":30.856}
{"ev":"fetch","url":"audio/voice/male/gd_chances_left1.ogg","status":200,"ok":true,"ms":2,"t":31752.5,"ta":30.859}
{"ev":"vstart","url":"audio/voice/male/gd_chances_left1.ogg","t":31755.80000001192,"dur":2.56,"ta":30.862}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":32196,"ta":31.302}
{"ev":"vibrate","pattern":"[10]","t":32554.30000001192,"ta":31.661}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":33162,"ta":32.268}
{"ev":"vibrate","pattern":"[20]","t":33408.30000001192,"ta":32.515}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":34016.09999999404,"ta":33.122}
{"ev":"vibrate","pattern":"[20]","t":34379.90000000596,"ta":33.486}
{"ev":"vend","url":"audio/voice/male/gd_chances_left1.ogg","t":34379.90000000596,"reason":"kill","ta":33.486}
{"ev":"vibrate","pattern":"[8]","t":34380.09999999404,"ta":33.486}
{"ev":"start","t":34380.19999998808,"sid":8,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":33.487}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":34687.80000001192,"ta":33.794}
{"ev":"vibrate","pattern":"[10]","t":35037.59999999404,"ta":34.144}
{"ev":"vibrate","pattern":"[8]","t":35080.19999998808,"ta":34.187}
{"ev":"start","t":35080.30000001192,"sid":9,"url":"audio/sfx/tone_up.ogg","layer":"sfx","dur":0.7198185941043084,"rate":1,"loop":false,"when":0,"ta":34.187}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":35645.30000001192,"ta":34.752}
{"ev":"vibrate","pattern":"[10]","t":36004.59999999404,"ta":35.111}
{"ev":"vibrate","pattern":"[20]","t":36180.59999999404,"ta":35.287}
{"ev":"vstart","url":"audio/voice/male/your_turn.ogg","t":36180.80000001192,"dur":1.36,"ta":35.287}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":36612.09999999404,"ta":35.718}
{"ev":"vibrate","pattern":"[10]","t":36971,"ta":36.077}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":37576.69999998808,"ta":36.683}
{"ev":"vend","url":"audio/voice/male/your_turn.ogg","t":37786.69999998808,"reason":"kill","ta":36.893}
{"ev":"vibrate","pattern":"[10]","t":37937.69999998808,"ta":37.044}
{"ev":"vibrate","pattern":"[60,40,60]","t":37938.09999999404,"ta":37.044}
{"ev":"start","t":37938.19999998808,"sid":10,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":37.045}
{"ev":"vibrate","pattern":"[80]","t":38238.30000001192,"ta":37.345}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":38545.09999999404,"ta":37.651}
{"ev":"start","t":38638.40000000596,"sid":11,"url":"audio/sfx/gameover.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":37.745}
{"ev":"vibrate","pattern":"[10]","t":38903.80000001192,"ta":38.01}
{"ev":"fetch","url":"audio/bgm/menu.ogg","status":200,"ok":true,"ms":3,"t":38907.09999999404,"ta":38.013}
{"ev":"fetch","url":"audio/voice/male/menu_open.ogg","status":200,"ok":true,"ms":4,"t":38907.80000001192,"ta":38.014}
{"ev":"vstart","url":"audio/voice/male/menu_open.ogg","t":38912.19999998808,"dur":0.7970975056689342,"ta":38.019}
{"ev":"start","t":39056.59999999404,"sid":12,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":38.163}
{"ev":"vend","url":"audio/voice/male/menu_open.ogg","t":39338.30000001192,"reason":"kill","ta":38.445}
{"ev":"fetch","url":"audio/voice/male/gameover.ogg","status":200,"ok":true,"ms":2,"t":39340.69999998808,"ta":38.447}
{"ev":"vstart","url":"audio/voice/male/gameover.ogg","t":39343.90000000596,"dur":1.12,"ta":38.45}
{"ev":"vend","url":"audio/voice/male/gameover.ogg","t":40480,"reason":"kill","ta":39.586}
{"ev":"fetch","url":"audio/voice/male/score_band1.ogg","status":200,"ok":true,"ms":3,"t":40483,"ta":39.589}
{"ev":"vstart","url":"audio/voice/male/score_band1.ogg","t":40487.30000001192,"dur":3.12,"ta":39.594}
{"ev":"vend","url":"audio/voice/male/score_band1.ogg","t":43939.5,"reason":"kill","ta":43.046}
{"ev":"fetch","url":"audio/voice/male/replay.ogg","status":200,"ok":true,"ms":3,"t":43942.19999998808,"ta":43.049}
{"ev":"vstart","url":"audio/voice/male/replay.ogg","t":43947.09999999404,"dur":4.24,"ta":43.053}
{"ev":"vend","url":"audio/voice/male/replay.ogg","t":48513.19999998808,"reason":"kill","ta":47.62}
{"ev":"fetch","url":"audio/voice/male/rules_prompt.ogg","status":200,"ok":true,"ms":2,"t":48515.69999998808,"ta":47.622}
{"ev":"vstart","url":"audio/voice/male/rules_prompt.ogg","t":48521.80000001192,"dur":5.12,"ta":47.628}
{"ev":"vend","url":"audio/voice/male/rules_prompt.ogg","t":53737.30000001192,"reason":"kill","ta":52.844}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":54157.69999998808,"ta":53.264}
{"ev":"vibrate","pattern":"[10]","t":54520.40000000596,"ta":53.627}
{"ev":"fetch","url":"audio/voice/male/rules.ogg","status":200,"ok":true,"ms":3,"t":54523.59999999404,"ta":53.63}
{"ev":"vstart","url":"audio/voice/male/rules.ogg","t":54537.30000001192,"dur":15.8,"ta":53.644}
{"ev":"vend","url":"audio/voice/male/rules.ogg","t":70617,"reason":"kill","ta":69.723}
{"ev":"vstart","url":"audio/voice/male/rules_prompt.ogg","t":70617.19999998808,"dur":5.12,"ta":69.724}
{"ev":"vend","url":"audio/voice/male/rules_prompt.ogg","t":75840.90000000596,"reason":"kill","ta":74.947}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":76117.5,"ta":75.224}
{"ev":"vibrate","pattern":"[20]","t":76482.40000000596,"ta":75.589}
{"ev":"fetch","url":"audio/voice/male/menu_home.ogg","status":200,"ok":true,"ms":3,"t":76485.69999998808,"ta":75.592}
{"ev":"vstart","url":"audio/voice/male/menu_home.ogg","t":76489.19999998808,"dur":0.9570975056689343,"ta":75.596}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":76586,"ta":75.692}
{"ev":"vibrate","pattern":"[20]","t":76949,"ta":76.055}
{"ev":"vend","url":"audio/voice/male/menu_home.ogg","t":76949.09999999404,"reason":"kill","ta":76.055}
{"ev":"fetch","url":"audio/voice/male/menu_back.ogg","status":200,"ok":true,"ms":2,"t":76951.40000000596,"ta":76.058}
{"ev":"vstart","url":"audio/voice/male/menu_back.ogg","t":76954.30000001192,"dur":1.12,"ta":76.061}
{"ev":"gesture","type":"longpress","x":195,"y":422,"t":77052.40000000596,"ta":76.159}
{"ev":"boost","on":true,"t":77504.09999999404,"ta":76.61}
{"ev":"boost","on":false,"t":77655.19999998808,"ta":76.762}
{"ev":"vend","url":"audio/voice/male/menu_back.ogg","t":78000.30000001192,"reason":"kill","ta":77.107}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":78059.80000001192,"ta":77.166}
{"ev":"vibrate","pattern":"[10]","t":78419.59999999404,"ta":77.526}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":86827.5,"ta":85.934}
{"ev":"vibrate","pattern":"[20]","t":87191.59999999404,"ta":86.298}
{"ev":"start","t":87191.69999998808,"sid":13,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":86.298}
{"ev":"vstart","url":"audio/voice/male/round_01.ogg","t":87191.80000001192,"dur":2.64,"ta":86.298}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":87297,"ta":86.403}
{"ev":"stop","t":87551.80000001192,"sid":12,"when":0,"ta":86.658}
{"ev":"vibrate","pattern":"[10]","t":87652.30000001192,"ta":86.759}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":88056.90000000596,"ta":87.163}
{"ev":"vibrate","pattern":"[20]","t":88303.59999999404,"ta":87.41}
{"ev":"recstop","t":89308.80000001192,"ta":88.415}
@@ -0,0 +1,179 @@
# simon 实时会话 transcript
- `[ -0.07s]` **GESTURE** tap @(195,422)
- `[ 0.00s]` REC 开始 (audio/webm;codecs=opus)
- `[ 0.41s]` **GESTURE** tap @(195,422)
- `[ 0.50s]` VOICE ▶ t0_welcome (dur 5.04s)
- `[ 0.77s]` VIBRATE [20]
- `[ 0.77s]` VOICE ■ t0_welcome (kill)
- `[ 0.77s]` VOICE ▶ skip_hint (dur 2.32s)
- `[ 0.88s]` **GESTURE** tap @(195,422)
- `[ 1.24s]` VIBRATE [20]
- `[ 1.24s]` VOICE ■ skip_hint (kill)
- `[ 1.24s]` VOICE ▶ t0_goal (dur 5.84s)
- `[ 1.34s]` **GESTURE** tap @(195,422)
- `[ 1.71s]` VIBRATE [20]
- `[ 1.71s]` VOICE ■ t0_goal (kill)
- `[ 1.71s]` VOICE ▶ t1_up (dur 3.12s)
- `[ 1.81s]` **GESTURE** swipeleft @(195,422)
- `[ 2.16s]` VIBRATE [10]
- `[ 2.57s]` **GESTURE** tap @(195,422)
- `[ 2.93s]` VIBRATE [20]
- `[ 2.93s]` VOICE ■ t1_up (kill)
- `[ 2.93s]` SFX ♪ tone_up
- `[ 3.04s]` **GESTURE** swipedown @(195,422)
- `[ 3.40s]` VIBRATE [10]
- `[ 3.40s]` VOICE ▶ t_skip (dur 2.48s)
- `[ 6.11s]` VOICE ■ t_skip (kill)
- `[ 6.11s]` VOICE ▶ round_01 (dur 2.64s)
- `[ 6.14s]` **GESTURE** swiperight @(195,422)
- `[ 6.50s]` VIBRATE [10]
- `[ 7.10s]` **GESTURE** doubletap @(195,422)
- `[ 7.35s]` VIBRATE [20]
- `[ 7.96s]` **GESTURE** swipeleft @(195,422)
- `[ 8.31s]` VIBRATE [10]
- `[ 8.61s]` VIBRATE [8]
- `[ 8.61s]` SFX ♪ tone_tap
- `[ 8.82s]` VOICE ■ round_01 (kill)
- `[ 8.92s]` **GESTURE** doubletap @(195,422)
- `[ 9.17s]` VIBRATE [20]
- `[ 9.31s]` VIBRATE [8]
- `[ 9.31s]` SFX ♪ tone_up
- `[ 9.77s]` **GESTURE** tap @(195,422)
- `[ 10.14s]` VIBRATE [20]
- `[ 10.41s]` VIBRATE [20]
- `[ 10.42s]` VOICE ▶ gd_occ_up (dur 4s)
- `[ 10.44s]` **GESTURE** swipeleft @(195,422)
- `[ 10.79s]` VIBRATE [10]
- `[ 11.40s]` **GESTURE** swipeup @(195,422)
- `[ 11.76s]` VIBRATE [10]
- `[ 12.37s]` **GESTURE** tap @(195,422)
- `[ 12.73s]` VIBRATE [20]
- `[ 13.04s]` **GESTURE** swipedown @(195,422)
- `[ 13.39s]` VIBRATE [10]
- `[ 14.00s]` **GESTURE** doubletap @(195,422)
- `[ 14.25s]` VIBRATE [20]
- `[ 14.51s]` VOICE ■ gd_occ_up (kill)
- `[ 14.52s]` VOICE ▶ your_turn (dur 1.36s)
- `[ 14.86s]` **GESTURE** swipeleft @(195,422)
- `[ 15.21s]` VIBRATE [10]
- `[ 15.82s]` **GESTURE** tap @(195,422)
- `[ 16.11s]` VOICE ■ your_turn (kill)
- `[ 16.18s]` VIBRATE [20]
- `[ 16.18s]` SFX ♪ tone_tap
- `[ 16.49s]` **GESTURE** swipeleft @(195,422)
- `[ 16.84s]` VIBRATE [10]
- `[ 16.84s]` VIBRATE [60,40,60]
- `[ 16.84s]` SFX ♪ tone_left
- `[ 16.85s]` VOICE ▶ retry_use (dur 3.52s)
- `[ 17.14s]` VIBRATE [30,50,30,50,30]
- `[ 17.45s]` **GESTURE** swiperight @(195,422)
- `[ 17.81s]` VIBRATE [10]
- `[ 18.42s]` **GESTURE** swipeleft @(195,422)
- `[ 18.78s]` VIBRATE [10]
- `[ 19.39s]` **GESTURE** doubletap @(195,422)
- `[ 19.63s]` VIBRATE [20]
- `[ 20.24s]` **GESTURE** swipeup @(195,422)
- `[ 20.59s]` VIBRATE [10]
- `[ 20.69s]` VOICE ■ retry_use (kill)
- `[ 20.69s]` VOICE ▶ chances_out (dur 2.24s)
- `[ 21.20s]` **GESTURE** tap @(195,422)
- `[ 21.57s]` VIBRATE [20]
- `[ 21.57s]` VOICE ■ chances_out (kill)
- `[ 21.57s]` VOICE ▶ gd_occ_up (dur 4s)
- `[ 21.87s]` **GESTURE** swiperight @(195,422)
- `[ 22.23s]` VIBRATE [10]
- `[ 22.83s]` **GESTURE** swipedown @(195,422)
- `[ 23.19s]` VIBRATE [10]
- `[ 23.80s]` **GESTURE** swipeleft @(195,422)
- `[ 24.16s]` VIBRATE [10]
- `[ 24.77s]` **GESTURE** swipeup @(195,422)
- `[ 25.13s]` VIBRATE [10]
- `[ 25.68s]` VOICE ■ gd_occ_up (kill)
- `[ 25.68s]` VIBRATE [8]
- `[ 25.68s]` SFX ♪ tone_tap
- `[ 25.74s]` **GESTURE** doubletap @(195,422)
- `[ 25.98s]` VIBRATE [20]
- `[ 26.38s]` VIBRATE [8]
- `[ 26.38s]` SFX ♪ tone_up
- `[ 26.59s]` **GESTURE** swiperight @(195,422)
- `[ 26.95s]` VIBRATE [10]
- `[ 27.48s]` VIBRATE [20]
- `[ 27.48s]` VOICE ▶ your_turn (dur 1.36s)
- `[ 27.55s]` **GESTURE** doubletap @(195,422)
- `[ 27.80s]` VIBRATE [20]
- `[ 28.41s]` **GESTURE** swipeup @(195,422)
- `[ 28.76s]` VIBRATE [10]
- `[ 29.07s]` VOICE ■ your_turn (kill)
- `[ 29.37s]` **GESTURE** swipeup @(195,422)
- `[ 29.73s]` VIBRATE [10]
- `[ 29.73s]` VIBRATE [15]
- `[ 29.73s]` VOICE ▶ relisten (dur 1.2s)
- `[ 30.34s]` **GESTURE** swiperight @(195,422)
- `[ 30.69s]` VIBRATE [10]
- `[ 30.86s]` VOICE ■ relisten (kill)
- `[ 30.86s]` VOICE ▶ gd_chances_left1 (dur 2.56s)
- `[ 31.30s]` **GESTURE** swipedown @(195,422)
- `[ 31.66s]` VIBRATE [10]
- `[ 32.27s]` **GESTURE** doubletap @(195,422)
- `[ 32.52s]` VIBRATE [20]
- `[ 33.12s]` **GESTURE** tap @(195,422)
- `[ 33.49s]` VIBRATE [20]
- `[ 33.49s]` VOICE ■ gd_chances_left1 (kill)
- `[ 33.49s]` VIBRATE [8]
- `[ 33.49s]` SFX ♪ tone_tap
- `[ 33.79s]` **GESTURE** swipedown @(195,422)
- `[ 34.14s]` VIBRATE [10]
- `[ 34.19s]` VIBRATE [8]
- `[ 34.19s]` SFX ♪ tone_up
- `[ 34.75s]` **GESTURE** swiperight @(195,422)
- `[ 35.11s]` VIBRATE [10]
- `[ 35.29s]` VIBRATE [20]
- `[ 35.29s]` VOICE ▶ your_turn (dur 1.36s)
- `[ 35.72s]` **GESTURE** swipeleft @(195,422)
- `[ 36.08s]` VIBRATE [10]
- `[ 36.68s]` **GESTURE** swipeleft @(195,422)
- `[ 36.89s]` VOICE ■ your_turn (kill)
- `[ 37.04s]` VIBRATE [10]
- `[ 37.04s]` VIBRATE [60,40,60]
- `[ 37.05s]` SFX ♪ tone_left
- `[ 37.34s]` VIBRATE [80]
- `[ 37.65s]` **GESTURE** swipedown @(195,422)
- `[ 37.74s]` SFX ♪ gameover
- `[ 38.01s]` VIBRATE [10]
- `[ 38.02s]` VOICE ▶ menu_open (dur 0.7970975056689342s)
- `[ 38.16s]` BGM ♪ menu (loop)
- `[ 38.45s]` VOICE ■ menu_open (kill)
- `[ 38.45s]` VOICE ▶ gameover (dur 1.12s)
- `[ 39.59s]` VOICE ■ gameover (kill)
- `[ 39.59s]` VOICE ▶ score_band1 (dur 3.12s)
- `[ 43.05s]` VOICE ■ score_band1 (kill)
- `[ 43.05s]` VOICE ▶ replay (dur 4.24s)
- `[ 47.62s]` VOICE ■ replay (kill)
- `[ 47.63s]` VOICE ▶ rules_prompt (dur 5.12s)
- `[ 52.84s]` VOICE ■ rules_prompt (kill)
- `[ 53.26s]` **GESTURE** swipeup @(195,422)
- `[ 53.63s]` VIBRATE [10]
- `[ 53.64s]` VOICE ▶ rules (dur 15.8s)
- `[ 69.72s]` VOICE ■ rules (kill)
- `[ 69.72s]` VOICE ▶ rules_prompt (dur 5.12s)
- `[ 74.95s]` VOICE ■ rules_prompt (kill)
- `[ 75.22s]` **GESTURE** tap @(195,422)
- `[ 75.59s]` VIBRATE [20]
- `[ 75.60s]` VOICE ▶ menu_home (dur 0.9570975056689343s)
- `[ 75.69s]` **GESTURE** tap @(195,422)
- `[ 76.06s]` VIBRATE [20]
- `[ 76.06s]` VOICE ■ menu_home (kill)
- `[ 76.06s]` VOICE ▶ menu_back (dur 1.12s)
- `[ 76.16s]` **GESTURE** longpress @(195,422)
- `[ 77.11s]` VOICE ■ menu_back (kill)
- `[ 77.17s]` **GESTURE** swipedown @(195,422)
- `[ 77.53s]` VIBRATE [10]
- `[ 85.93s]` **GESTURE** tap @(195,422)
- `[ 86.30s]` VIBRATE [20]
- `[ 86.30s]` SFX ♪ tone_tap
- `[ 86.30s]` VOICE ▶ round_01 (dur 2.64s)
- `[ 86.40s]` **GESTURE** swipeleft @(195,422)
- `[ 86.76s]` VIBRATE [10]
- `[ 87.16s]` **GESTURE** doubletap @(195,422)
- `[ 87.41s]` VIBRATE [20]
+50
View File
@@ -0,0 +1,50 @@
# P1 视障资深玩家评审:《音序回响》(simon polish 取证轮 R1)
> 评审依据:research/simon-polish/round1/transcript.md(剧本转写)+ live-A-transcript.md
> (认真新手局,female/normal/guide full,第 13 轮走完结算)+ live-B-transcript.md
> (急性子乱按局,male/1.7)。我按"如果我在真机听到这些"代入;行号引用见各条。
### 音序回响
- 状态感知:2/5 —— 两段我完全失聪。**①输入开放窗口**(A 行 108-115):confirm 震
之后 gd_occ_dt 还在播,我这时作答(75.75 swiperight)只有 10ms 识别震、没有回声,
音被吞了——我分不清是"没识别""没轮到我"还是"卡死",只能靠"再来一遍听有没有回声"
试错。对全听觉玩家,回声缺失就是唯一线索,而它 ambiguous。**②账目**:免费重听和
机会只在消耗瞬间报(A 行 205-208、306-309、732-736),中途想查余额没有任何
status key——六手势全是答题输入,连查一下"还剩几次"的锚都没有(A 局第 8-13 轮
我全靠驱动日志记账,真机玩家记不住的)。**③轮次**:跳过快报后(B 行 28-37)我
连第几轮、这轮几个音都不知道。
- 下一步明确性:3/5 —— 教学教一个练一个干净(A 行 6-50),看门狗 5 秒提醒及时
(转写行 153-156);但 roundend 播报期我下滑想开菜单**零反馈**(A 行 824-830),
按了像没按,我只能再滑。
- 愿意继续玩:是 —— 记忆挑战本身是我要的纯听觉玩法,但我要求"查状态"和"作答被
确认"这两件基本的事有听觉落点。
- P0 问题:**结算承诺在菜单内是假的**(B 行 140-174):我在死亡瞬间(37.4s)的
下滑被吃进菜单,结算链 38.45-52.84s 在菜单里播完了——「单击屏幕,再来一局」
(B 行 151-154)承诺期间我的单击真实语义是切菜单项(B 行 161-168 menu_home/
menu_back);等我 77.17s 关掉菜单回到结算页,链已播完,**8.4 秒死寂**
(B 行 170-174)。死→听懂成绩→再来一局的循环对全听觉玩家是命脉,这条链断了
就是流失。
- 建议(按对"我愿意玩下去"的影响排序):
1. P0 结算链阶段看守:结算链只在结算屏播;在菜单则挂起、回结算屏再交付。
2. input 开放给一个非向导层的听觉标记(语音链结束后),作答回声带"被收进答案"
的确认含义要可分辨(现在吞手势与未识别不可区分)。
3. 给一个 status key(长按查询):轮次长度分档 + 已答进度分档 + 重听两账余额
——全部走整句预生成,不要运行时拼数字。
#### 听觉惯例符合度(逐条核对我的特别检查项)
- 语音可打断/重听:过。单击跳句干净(B 行 4-18 连点即时截断);规则句可重听
(B 行 155-160 菜单上滑 rules)。
- 等待有无声:半过。input 看门狗 5s 有 nudge/语音(转写行 66-67、154-155);但
结算屏关菜单后 8.4s 死寂(B 行 170-174)是"被遗忘的等待"。
- 失败可归因:半过。答错有 retry_use「错了。用一次机会,再听一遍。」(A 行 694)
归因清楚;但**被吞手势无归因**(A 行 108-115),我以为自己没做对,其实是系统
没开输入。
- 菜单列表导航规整:半过。三项循环+逐项播报规整(B 行 161-168);但结算链在
菜单内播导致"我在哪一层"混乱(B 行 144-154)。
- 提示永不逐字重复:不过。round 1 每次重播都重念 your_turn(B 行 67、96-98,
一局三遍)。
- 账目真实:半过。消耗/获得时播报与真实账目一致(A 行 732-736 复核通过);但
余额不可查询,中途是糊涂账。
- 语速上限/长按快进:过(1.7 档男声整句完整,B 行 53-74 rules 15.8s 长句不断气)。
- status key:**缺席**(本作我最需要的锚没有)。
- 双击确认(菜单约定):过。菜单内双击确认实测(B 行末尾菜单双击)。
@@ -0,0 +1,37 @@
# P2 时间充裕的大学生评审:《音序回响》(simon polish 取证轮 R1)
> 评审依据:transcript.md(剧本转写)+ live-A-transcript.md(认真新手局)+
> live-B-transcript.md(急性子乱按局)。我按宿舍躺床代入:节奏感、上头曲线、
> "再玩一局"冲动是硬指标。
### 音序回响
- 状态感知:2/5 —— 我这种连点跳旁白的人(B 行 4-18、28-37 就是我)**跳完直接
失明**:第几轮、这轮几个音、播没播完、能不能答,全靠猜。最离谱的一局(B 局)我
在第 1 轮卡了 37 秒(B 行 28-140):听了一堆 retry_use/chances_out/占用预告循环
播,但我根本不知道自己在第 1 轮、序列只有 2 个音——但凡有一句"这轮 2 个音"我
早出去了。认真局(A)里第 12-13 轮 13-14 个音复现到一半断片,"我答到第几个了"
无答案,只能推倒重来(A 行 659-690 一带),挫败感直接拉满。
- 下一步明确性:3/5 —— 听播报时不连点的话节奏是顺的(A 行 659-662);可一旦
想抢跑,announce/roundend 期间手势全被静默吞(A 行 824-830、B 行 29-35),
抢跑没有任何信号告诉我"还没开"。
- 愿意继续玩:**否(当前版本)** —— 认真打的那局其实挺上头(13 轮的长度爬升
曲线对,A 行 82-108 的逐轮加音有成长感),但"死的一瞬间手还在屏幕上"这个
场景把我卖了:我死在 37.4s,习惯性下滑在 37.65s 进了菜单,结算语音在菜单里
播完(B 行 140-154),「单击再来一局」期间我单击其实在切菜单项(B 行 161-168),
关了菜单面对 8.4 秒沉默(B 行 170-174)——设计感?零。这一刻我觉得游戏不认我
这个玩家。
- P0 问题:结算承诺与阶段脱节(B 行 140-174,同 P1 评审):死亡瞬间的误操作
把我送进一个"承诺说谎"的菜单,回结算页后死寂。这是"单局结束想不想开下一局"
的直接杀手。
- 建议(按对"我愿意玩下去"的影响排序):
1. P0 修结算链阶段看守(死亡瞬间误触不该被罚 8 秒死寂)。
2. 给个 status key:跳播报是我的合法玩法,但跳完至少让我长按查一下"第几轮
几个音、答到哪儿、还能重听几次"——分档整句即可,别念经。
3. 第 1 轮别每次重播都念"轮到你了"(B 行 67、96-98),本来复活就烦,还复读。
#### 我的特别检查项核对
- 开头多少秒能动手:过。教学教一个练一个,11 秒左右首次出手(A 行 13-15)。
- 保送首胜:半过。第 1 轮只有 2 音 + 1 次免费复活,算保送;但连点跳教学的人
不知道有复活(B 局 16.85s 第一次 retry_use 才听说"机会")。
- 结算是否想让人再来一局:不过(见 P0,死寂 8.4 秒把冲动磨没了)。
- 单局长度/节奏:过。700→420ms 爬升合理(A 局 12 轮仍可控)。
+35
View File
@@ -0,0 +1,35 @@
# P3 时间紧张的白领评审:《音序回响》(simon polish 取证轮 R1)
> 评审依据:transcript.md + live-A-transcript.md + live-B-transcript.md。我按地铁
> 单手持机代入:嘈杂、随时被打断、被打断后要一句话接上。
### 音序回响
- 状态感知:2/5 —— 这游戏被中断一次就完蛋:地铁进站我停手 20 秒,回来后**没人
告诉我刚才进行到哪**——第几轮不知道(播报早播完了)、序列忘了、答到第几个不
知道(A 局第 12 轮一带,13 个音复现中断即全损,A 行 659-690)、还剩几次重听也
不知道(账目在消耗瞬间报,A 行 205-208)。 Noise 环境下我连"现在是不是轮到我"
都判断不了:confirm 震那么轻,占用预告句(gd_occ_*)和 your_turn 还在能答之前
挡路(A 行 108-115),我提前按的音被无声吞掉。
- 下一步明确性:3/5 —— 安静听完播报+序列再答是清晰的;但"听不清怎么办"没有
出口:重听键(上滑)在含上滑音的轮次被占用(gd_occ_up 只说"是作答",不告诉我
这轮**怎么**重听,A 行 109),我被占用轮卡住时连补救手势都没有。
- 愿意继续玩:否 —— 25 分钟地铁里它给不了我"3 分钟一次完整乐趣":一局要么
短到刚热身(B 局 37 秒死在第 1 轮还全程迷茫),要么长到装不下我的通勤碎片
(A 局 13 轮 5 分钟+),而且中断不可恢复。
- P0 问题:结算脱节(B 行 140-174)在通勤场景是双杀:死的时候手机单手握不稳,
误触下滑进菜单 → 结算在菜单里播完 → 关菜单死寂 8.4 秒(B 行 170-174)——我
到站了,游戏还没告诉我成绩。
- 建议(按对"我愿意玩下去"的影响排序):
1. P0 结算链阶段看守 + 回结算屏补播。
2. status key 是我这种碎片玩家的刚需:回来长按一下,"这轮 N 个音、答到一半、
免费重听还有两次",一句话接上。
3. 被吞手势给一点点触觉反馈(error 震即可),别让我在全息无声里连按。
#### 我的特别检查项核对
- 关键信息听不清怎么办:半过。免费重听机制在(A 行 205-208),但占用轮重听键
被占后没有替代;余额不可查。
- 中断恢复:**不过**(见状态感知,无任何"从哪接上"的锚)。
- 单局长度:半过。轮次自定节奏好;但结算混乱拉长了"死到下一局"的间隔。
- 有无沉默尴尬期:不过。关菜单后 8.4 秒死寂(B 行 170-174);挂机时 guide=off
永久静默(设计自选,可接受)。
- 单手盲操:过。六手势单手覆盖;菜单单击循环可盲(B 行 161-168)。
+35
View File
@@ -0,0 +1,35 @@
# P4 疲惫的工人评审:《音序回响》(simon polish 取证轮 R1)
> 评审依据:transcript.md + live-A-transcript.md + live-B-transcript.md。我按下班
> 后外放小音量、反应慢代入:规则要一遍懂,错了别骂我,反馈要即时温暖。
### 音序回响
- 状态感知:2/5 —— 我不懂那些花哨的,就说最实在的:**我按了没声音的时候,我
不知道是我手笨还是机器没理我**。B 局那 37 秒里我按了十几下(B 行 28-46),大多
数时候就手指头麻一下([10]/[20] 轻震),没声。后来好不容易听到"错了。用一次
机会,再听一遍。"(B 行 69)我才知道刚才算数了。还有"我还能重听几次"——开局
讲过一次"免费机会有两次"(A 行 58 教学收尾),可我打到后面早忘了,也没人再
告诉我(A 行 205-208 只在用掉那一刻说)。
- 下一步明确性:3/5 —— 教学一句一句带着做,我跟得上(A 行 6-50,做错还有
"不是这个,向左滑试试",A 行 27-29,不骂我);但播报的时候我不小心滑了一下,
什么都没发生(B 行 29-35),我以为游戏坏了。
- 愿意继续玩:是 —— 规则我一遍听懂了(记住声音顺序照做,跟工地上记号子一样),
答对每轮都有夸奖(A 行 78"答对了!"),挺暖心。但死的时候那个菜单把我弄糊涂了
(见 P0),差点以为游戏没了。
- P0 问题:死的那一下我手还在屏幕上,习惯性一滑就进了什么"菜单"(B 行 140-144),
然后里面有人说话说什么"单击再来一局",我单击了,它却念"回大厅""返回游戏"
(B 行 161-168)——**它让我单击,我单击了,可它不是那个意思**。后来我又滑一下
退出来,啥声音也没有,呆了八九秒(B 行 170-174),以为死机了,再点一下才开新局。
- 建议(按对"我愿意玩下去"的影响排序):
1. P0 它让我单击我就该能重开——要么菜单里别播"单击再来一局",要么回结算页
重新告诉我该怎么办。
2. 我要个"问一句"的办法:按住屏幕它告诉我"这轮还有几个音要答、还能重听几次",
话别长,一两句。
3. 我按了没反应的时候,震我一下告诉我"现在不用按"(B 行 29-35、A 行 824-830)。
#### 我的特别检查项核对
- 教学语速与句长:过。教一个练一个,每句都短(A 行 6-50)。
- 容错:半过。免费重听+机会制对新手友好;但余额忘光后就不知深浅了(S4)。
- 反馈即时温暖:半过。答对夸我(A 行 78/94);但"被吞"零反馈让我自我怀疑。
- 有无 pressure:过。没有倒计时,看门狗 5 秒才轻轻提醒一次(转写行 153-156),
不催我。
@@ -0,0 +1,101 @@
# 音序回响 round1 取证 · 状态维度候选清单(通读 game.js + 02 号文档)
> 阶段一第 1 步产物:把"玩家可能不知道自己在哪"拆成状态维度,逐维度对照 game.js
> 现有信号(语音/earcon/震动/静默)找盲区。最终 S 编号清单见 findings.md(带 live 证据)。
## 维度 1:当前轮次 / 本序列长度
- 现有信号:announce 阶段播 `round_NN`/`round_more` 整句(game.js `_nextRound`)。
- 盲区:
- 轮次播报**可单击跳过**(`_tapSkipsVoice` announce=true,12 号文档)——急性子玩家
从此失去轮次信息;序列长度 = round+1,**长度信息也随之丢失**(playback 期间不知
该听几个音)。
- 播报被跳/缺失兜底路径(2.5s 看门狗)同样没有轮次信息落点。
- 第 20 轮后只有"新的一轮"兜底,长度仍在涨,玩家对"还要记多少"完全无感。
- 风险级候选:P1(不致命但全程迷失)。
## 维度 2:播放阶段 vs 答题阶段边界
- 现有信号:序列播完 400ms 后 `CONFIRM` 震(game.js:348)+ 向导层 `turn` earcon
(guide=full/standard 才有);第 1 轮另有 `your_turn` 语音。
- 盲区:
- **guide=off 时 turn earcon 静默**(Guide no-op),非第 1 轮只剩一次 confirm 震;
- **iOS 无震动**(00 §2.5 静默降级)→ 第 2 轮起边界**零信号**;
- 占用预告句(gd_occ_*)插在 confirm 之后、input 之前:语音播完才 `_toInput`,
玩家听到"这一轮,向上滑是作答"时**还不能答**(phase 仍是 playback,手势被吞),
句尾与可输入时刻之间无任何标记。
- 风险级候选:P1(边界误答被吞 → 维度 6)。
## 维度 3:自己刚输入的音符是否被收进答案(逐音进度)
- 现有信号:input 阶段每手势即时回声放对应音色(game.js:421)+ 引擎内置识别震
(swipe/confirm)。
- 盲区:
- 回声 = "系统收到了",但**"对了几个 / 还剩几个"无任何信号**(无 X-of-N 进度
earcon/震动分档)。长序列(第 10 轮起 ≥11 音)复现中途断片时,玩家不知道自己
答到第几个音,只能从头再来或赌。
- 回声音色与答错音色的关系:答错的瞬间即触发 retry/gameover(有反馈),但
"当前已确认正确的进度"在复活重听后重置,玩家必须记住自己之前答到哪——
实际上重听要求**整轮重输**(inputIdx=0),"我上次答对了几个"成为无效信息但
玩家并不知道规则是"清零重输"还是"接着答"(教学未讲)。
- 风险级候选:P1。
## 维度 4:答对 / 答错即时反馈
- 现有信号:整轮对 → success 震 + 表扬句(每轮);错 → error+warning 震 +
retry_use(有机会)或 gameover 链(无机会)。
- 盲区:
- 对错反馈**以整轮为单位**,中途无逐音对错确认(设计使然,simon 经典规则);
可接受,但与维度 3 叠加放大迷失。
- iOS 无震:答错后 retry_use 语音前有最长 300ms 静默+无震,"刚才那下算数吗"
要靠语音第一句"错了。"兜底——可过。
- 风险级候选:P2。
## 维度 5:复活机会 / 免费重听余额(两本账)
- 现有信号:消耗时如实报(gd_chances_left1/left0/chances_out/chance_plus/retry_use)。
- 盲区:
- **余额不可主动查询**:input 阶段六手势全是答题输入,**没有 status key**
(space-polish P1 同款诉求)。账目只在"用掉那一刻"播报;记忆游戏脑负荷高,
隔几轮后"我还有几次免费/几条命"必然遗忘,而遗忘的代价是猝死或不敢重听。
- 答错自动消耗路径(retry_use)与主动重听路径分账,两账合计余额(免费+真机会)
从未作为整体报过。
- 风险级候选:P1。
## 维度 6:手势被吞(非输入阶段做手势)
- 现有信号:无。playback/announce/roundend 阶段手势**静默忽略**(game.js:154
default 分支;02 §4.1 裁定"播放期误触静默忽略,不给 ERROR 震")。
- 盲区:00 宪法 §5.4"做了手势 3 秒内必须有反馈"在此被设计豁免;急性子玩家在
播报/重听语音链期间作答**零反馈**(连吞数下都无声无震),既不知"被吞"也不知
"现在能答了没有"。round1 live 已有 P1 前科(答题阶段长按 9 秒零反馈→已修为
error 震兜底),但**播放期/播报期**仍是零反馈区。
- 风险级候选:P1(压力线必现)。
## 维度 7:连击 / 最佳纪录
- 现有信号:破纪录时 `gd_record`(局中,每局限 1 次)+ 结算 `new_record`;best
存 localStorage/服务器,局内不报具体数值。
- 盲区:第 2 局起玩家不知道自己 best 是几轮;"离纪录还差几轮"无信号。
(simon 无连击概念,维度弱。)
- 风险级候选:P2。
## 维度 8:菜单 / 教学 / 结算阶段边界
- 现有信号:菜单逐项播报(menu_open/restart/home/back);教学逐音教-练;
结算五句链(gameover/score_band/new_record/replay/rules_prompt)。
- 盲区:
- 教学→对局过渡:t7 链播完**静默**直进 round_01,中间无标记("教学结束"信号
靠 round_01 本身承担,可过)。
- 菜单"返回游戏"回结算页后,rules 语音链可能仍在播(_speak 无守卫),此时
单击=重开(言行一致 P0 已修);但**菜单内上滑听规则**后双击确认项,选中项
与规则语音同时播,语义叠话(P2 瑕疵)。
- 风险级候选:P2。
## 维度 9:input 阶段静默(不知"系统在等")
- 现有信号:5s 看门狗 nudge + gd_relisten(占用轮只 nudge);25s turn+confirm。
- 盲区:guide=off 无看门狗(不挂定时器),挂机=永久静默(设计承认:"挂机永久
静默")。该维度在 guide 档内已覆盖,off 档是玩家自选,不另列。
- 风险级候选:不修(既定裁定)。
## 交叉观察(转写 transcript.md 预读)
- 行 64-75 / 90-95 / 105-113:复现全程只有回声 tone + 结尾 success 震;"已对上
k/N"只存在于 harness describe()(行 64「已对上 0/2」是**剧本旁白,玩家听不到**)——
维度 3 的直接证据形态。
- 行 65-71:R1 静默 5s 只有 nudge earcon(占用轮无建议语音);非占用轮行 153-156
5s 即有 gd_relisten 语音——看门狗覆盖尚可。
- 行 136 / 162 / 190-191 / 251:机会/免费重听账目只在消耗/获得时播报(维度 5)。
- transcript 未覆盖 gameover/菜单/复活耗尽(剧本收工于第 7 轮边界)——由 live
局 A(打到高轮次+结算+菜单)与局 B(乱按压力线)补证。
+280
View File
@@ -0,0 +1,280 @@
# 试玩转写:《simon》
> 本文件是「玩家感知日志」:一位新手玩家的整局体验转写。语音列出了玩家听到的每句话全文,
> 音效/BGM/震动按发生时间列出。「静默」段 = 玩家什么也听不到。手势是剧本注入的(模拟真人手部动作),
> 非最优操作:包含犹豫、误操作与乱试。语音时长按语速估算(±20%),仅供节奏参考。
t+ 0.0s (玩家点开游戏,轻触屏幕开始)
t+ 0.5s ▶ 语音:「欢迎来到音序回响。先认识六种声音。」
t+ 2.6s ▶ 语音:「单击可跳过旁白。」
t+ 4.7s ▶ 语音:「我会演奏一串声音,请你记住顺序,原样复现。」
t+ 6.9s ▶ 语音:「向上滑,是这个声音。」
t+ 9.0s ♪ 音效 sfx/tone_up
t+ 9.9s ▶ 语音:「你试试。」
t+ 11.4s 【状态】教学第 1/6 个音色 教学:该做「上滑」了(语音播放中,语速1)
t+ 11.4s ♪ 音效 sfx/tone_up
t+ 11.4s ▶ 语音:「对了。」
t+ 13.5s ▶ 语音:「向下滑,是这个声音。」
t+ 15.6s ♪ 音效 sfx/tone_down
t+ 16.5s ▶ 语音:「你试试。」
t+ 18.6s 【状态】教学第 2/6 个音色 教学:该做「下滑」了(无 BGM,语速1)
t+ 18.6s ♪ 音效 sfx/tone_down
t+ 18.6s ▶ 语音:「对了。」
t+ 20.8s ▶ 语音:「向左滑,是这个声音。」
t+ 22.9s ♪ 音效 sfx/tone_left
t+ 23.8s ▶ 语音:「你试试。」
t+ 25.9s 【状态】教学第 3/6 个音色 教学:该做「左滑」了(无 BGM,语速1)
#### 【玩家动作】把「左滑」记混了,先来了个右滑
t+ 25.9s ▶ 语音:「不是这个,向左滑试试。」
t+ 25.9s 〰 震动:error(做错了:两连短震)
t+ 25.9s ♪ 音效 sfx/tone_left
t+ 25.9s ▶ 语音:「对了。」
t+ 28.0s ▶ 语音:「向右滑,是这个声音。」
t+ 30.1s ♪ 音效 sfx/tone_right
t+ 31.0s ▶ 语音:「你试试。」
t+ 33.2s 【状态】教学第 4/6 个音色 教学:该做「右滑」了(无 BGM,语速1)
t+ 33.2s ♪ 音效 sfx/tone_right
t+ 33.2s ▶ 语音:「对了。」
t+ 35.3s ▶ 语音:「单击,是这个声音。」
t+ 37.4s ♪ 音效 sfx/tone_tap
t+ 38.3s ▶ 语音:「你试试。」
t+ 40.4s 【状态】教学第 5/6 个音色 教学:该做「单击」了(无 BGM,语速1)
t+ 40.4s ♪ 音效 sfx/tone_tap
t+ 40.4s ▶ 语音:「对了。」
t+ 42.5s ▶ 语音:「双击,是这个声音。」
t+ 44.7s ♪ 音效 sfx/tone_doubletap
t+ 45.6s ▶ 语音:「你试试。」
t+ 47.7s 【状态】教学第 6/6 个音色 教学:该做「双击」了(无 BGM,语速1)
t+ 47.7s ♪ 音效 sfx/tone_doubletap
t+ 47.7s ▶ 语音:「对了。」
t+ 49.8s ▶ 语音:「六种声音都记住了。后面的序列,会越来越长。」
t+ 51.9s ▶ 语音:「答错可以消耗机会重听。向上滑,可以随时重听。」
t+ 54.0s ▶ 向导语音:「记不住就向上滑,重新听一遍。免费机会有两次,用完要扣一次机会。」
t+ 56.2s ▶ 语音:「第一轮,听好了。」
t+ 56.2s 【状态】教学讲完了:免费重听两次、用完扣机会,想重听就向上滑 第 1 轮报数呢,听好了(语音播放中,语速1)
t+ 58.3s ♪ 音效 sfx/tone_up
t+ 58.3s 〰 震动:beat(节拍点)
t+ 59.0s ♪ 音效 sfx/tone_tap
t+ 59.0s 〰 震动:beat(节拍点)
t+ 60.1s ♪ 向导音:turn(轮到你)
t+ 60.1s ▶ 向导语音:「这一轮,向上滑是作答。」
t+ 60.1s 〰 震动:confirm(轻点确认)
t+ 62.2s ▶ 语音:「轮到你了。」
t+ 64.3s 【状态】序列一播完就听到「这一轮,向上滑是作答」——重听键这轮被占了 第 1 轮轮到你了:已对上 0/2,照原顺序做手势(这轮上滑是作答,占用了)(要重听就向上滑)(无 BGM,语速1)
t+ 64.3s ……… 静默 5s(第一轮先不动手,看看它催不催) ………
t+ 69.3s ♪ 向导音:nudge(看门狗轻提醒)
t+ 69.3s ♪ 向导音:watchdog(看门狗升级)
t+ 89.3s ♪ 向导音:nudge(看门狗轻提醒)
t+ 89.3s ♪ 向导音:watchdog(看门狗升级)
t+ 89.3s ♪ 向导音:turn(轮到你)
t+ 89.3s 〰 震动:confirm(轻点确认)
#### 【玩家动作】5 秒一声轻提醒、25 秒又一声加确认震——两级提醒都没建议「向上滑重听」,它知道这轮上滑是作答
t+ 89.3s 【状态】先来一发上滑——期望恰为 up 时上滑就是作答 第 1 轮轮到你了:已对上 0/2,照原顺序做手势(这轮上滑是作答,占用了)(要重听就向上滑)(无 BGM,语速1)
t+ 89.3s ♪ 音效 sfx/tone_up
t+ 89.3s ♪ 音效 sfx/tone_tap
t+ 89.3s ▶ 语音:「答对了!」
t+ 89.3s 〰 震动:success(成功长震)
t+ 91.7s ▶ 语音:「第二轮,听好了。」
t+ 93.9s ♪ 音效 sfx/tone_down
t+ 93.9s 〰 震动:beat(节拍点)
t+ 94.5s ♪ 音效 sfx/tone_doubletap
t+ 94.5s 〰 震动:beat(节拍点)
t+ 95.2s ♪ 音效 sfx/tone_left
t+ 95.2s 〰 震动:beat(节拍点)
t+ 96.3s ♪ 向导音:turn(轮到你)
t+ 96.3s ▶ 向导语音:「这一轮,双击是作答。」
t+ 96.3s 〰 震动:confirm(轻点确认)
t+ 98.4s 【状态】这轮预告的是「双击是作答」 第 2 轮轮到你了:已对上 0/3,照原顺序做手势(这轮双击是作答,占用了)(要重听就向上滑)(无 BGM,语速1)
t+ 98.4s ♪ 音效 sfx/tone_down
t+ 98.4s ♪ 音效 sfx/tone_doubletap
t+ 98.4s ♪ 音效 sfx/tone_left
t+ 98.4s ▶ 向导语音:「漂亮,过了。」
t+ 98.4s 〰 震动:success(成功长震)
t+ 100.8s ▶ 语音:「第三轮,听好了。」
t+ 102.9s ♪ 音效 sfx/tone_down
t+ 102.9s 〰 震动:beat(节拍点)
t+ 103.6s ♪ 音效 sfx/tone_right
t+ 103.6s 〰 震动:beat(节拍点)
t+ 104.2s ♪ 音效 sfx/tone_tap
t+ 104.9s ♪ 音效 sfx/tone_left
t+ 104.2s 〰 震动:beat(节拍点)
t+ 104.9s 〰 震动:beat(节拍点)
t+ 105.9s ♪ 向导音:turn(轮到你)
t+ 105.9s 〰 震动:confirm(轻点确认)
t+ 105.9s 【状态】这轮开场没有占用预告——上滑还能当重听键用 第 3 轮轮到你了:已对上 0/4,照原顺序做手势(要重听就向上滑)(无 BGM,语速1)
t+ 105.9s ♪ 音效 sfx/tone_down
t+ 105.9s ♪ 音效 sfx/tone_right
t+ 105.9s ♪ 音效 sfx/tone_tap
t+ 105.9s ♪ 音效 sfx/tone_left
t+ 105.9s ▶ 语音:「答对了!」
t+ 105.9s 〰 震动:success(成功长震)
t+ 108.4s ▶ 语音:「第四轮,听好了。」
t+ 110.5s ♪ 音效 sfx/tone_down
t+ 110.5s 〰 震动:beat(节拍点)
t+ 111.1s ♪ 音效 sfx/tone_right
t+ 111.7s ♪ 音效 sfx/tone_tap
t+ 111.1s 〰 震动:beat(节拍点)
t+ 111.7s 〰 震动:beat(节拍点)
t+ 112.3s ♪ 音效 sfx/tone_left
t+ 112.3s 〰 震动:beat(节拍点)
t+ 113.0s ♪ 音效 sfx/tone_down
t+ 113.0s 〰 震动:beat(节拍点)
t+ 114.0s ♪ 向导音:turn(轮到你)
t+ 114.0s 〰 震动:confirm(轻点确认)
t+ 114.0s 【状态】机会加一之后,免费重听真的有两次了 第 4 轮轮到你了:已对上 0/5,照原顺序做手势(要重听就向上滑)(无 BGM,语速1)
t+ 114.0s ♪ 音效 sfx/tone_down
t+ 114.0s ♪ 音效 sfx/tone_right
t+ 114.0s ♪ 音效 sfx/tone_tap
t+ 114.0s ♪ 音效 sfx/tone_left
t+ 114.0s ♪ 音效 sfx/tone_down
t+ 114.0s ▶ 向导语音:「漂亮,过了。」
t+ 114.0s 〰 震动:success(成功长震)
t+ 114.0s 〰 震动:pickup(获得)
t+ 116.1s ▶ 语音:「机会加一。」
t+ 118.5s ▶ 语音:「第五轮,听好了。」
t+ 120.6s ♪ 音效 sfx/tone_down
t+ 120.6s 〰 震动:beat(节拍点)
t+ 121.2s ♪ 音效 sfx/tone_right
t+ 121.8s ♪ 音效 sfx/tone_tap
t+ 121.2s 〰 震动:beat(节拍点)
t+ 121.8s 〰 震动:beat(节拍点)
t+ 122.4s ♪ 音效 sfx/tone_left
t+ 122.4s 〰 震动:beat(节拍点)
t+ 123.0s ♪ 音效 sfx/tone_down
t+ 123.6s ♪ 音效 sfx/tone_right
t+ 123.0s 〰 震动:beat(节拍点)
t+ 123.6s 〰 震动:beat(节拍点)
t+ 124.6s ♪ 向导音:turn(轮到你)
t+ 124.6s 〰 震动:confirm(轻点确认)
t+ 124.6s 【状态】第 5 轮序列有点长,先不动手 第 5 轮轮到你了:已对上 0/6,照原顺序做手势(要重听就向上滑)(无 BGM,语速1)
t+ 124.6s ……… 静默 5s(想不起来序列了) ………
t+ 129.6s ♪ 向导音:nudge(看门狗轻提醒)
t+ 129.6s ▶ 向导语音:「需要的话,向上滑可以重新听一遍序列。」
t+ 129.6s 【状态】5 秒就来了提示:需要的话,向上滑可以重新听一遍序列 第 5 轮轮到你了:已对上 0/6,照原顺序做手势(要重听就向上滑)(语音播放中,语速1)
#### 【玩家动作】照提示向上滑——第 1 次免费重听用掉,跟着听到「免费重听还剩一次」
t+ 129.6s ▶ 语音:「再听一遍。」
t+ 129.6s 〰 震动:pickup(获得)
t+ 131.7s ▶ 向导语音:「免费重听还剩一次。」
t+ 133.9s ♪ 音效 sfx/tone_down
t+ 133.9s 〰 震动:beat(节拍点)
t+ 134.5s ♪ 音效 sfx/tone_right
t+ 134.5s 〰 震动:beat(节拍点)
t+ 135.1s ♪ 音效 sfx/tone_tap
t+ 135.6s ♪ 音效 sfx/tone_left
t+ 135.1s 〰 震动:beat(节拍点)
t+ 135.6s 〰 震动:beat(节拍点)
t+ 136.2s ♪ 音效 sfx/tone_down
t+ 136.8s ♪ 音效 sfx/tone_right
t+ 136.2s 〰 震动:beat(节拍点)
t+ 136.8s 〰 震动:beat(节拍点)
t+ 137.8s ♪ 向导音:turn(轮到你)
t+ 137.8s 〰 震动:confirm(轻点确认)
t+ 137.8s ♪ 音效 sfx/tone_down
t+ 137.8s ♪ 音效 sfx/tone_right
t+ 137.8s ♪ 音效 sfx/tone_tap
t+ 137.8s ♪ 音效 sfx/tone_left
t+ 137.8s ♪ 音效 sfx/tone_down
t+ 137.8s ♪ 音效 sfx/tone_right
t+ 137.8s ▶ 语音:「答对了!」
t+ 137.8s 〰 震动:success(成功长震)
t+ 140.3s ▶ 语音:「第六轮,听好了。」
t+ 142.4s ♪ 音效 sfx/tone_up
t+ 142.9s ♪ 音效 sfx/tone_doubletap
t+ 142.4s 〰 震动:beat(节拍点)
t+ 142.9s 〰 震动:beat(节拍点)
t+ 143.5s ♪ 音效 sfx/tone_tap
t+ 143.5s 〰 震动:beat(节拍点)
t+ 144.1s ♪ 音效 sfx/tone_left
t+ 144.7s ♪ 音效 sfx/tone_down
t+ 144.1s 〰 震动:beat(节拍点)
t+ 144.7s 〰 震动:beat(节拍点)
t+ 145.2s ♪ 音效 sfx/tone_right
t+ 145.8s ♪ 音效 sfx/tone_tap
t+ 145.2s 〰 震动:beat(节拍点)
t+ 145.8s 〰 震动:beat(节拍点)
t+ 146.8s ♪ 向导音:turn(轮到你)
t+ 146.8s ▶ 向导语音:「这一轮,向上滑和双击都是作答。」
t+ 146.8s 〰 震动:confirm(轻点确认)
t+ 148.9s 【状态】这轮说「向上滑和双击都是作答」——两个键都被占用了 第 6 轮轮到你了:已对上 0/7,照原顺序做手势(这轮上滑和双击是作答,占用了)(要重听就向上滑)(无 BGM,语速1)
t+ 148.9s ……… 静默 5s(轮到我了,先心里过一遍序列) ………
t+ 153.9s ♪ 向导音:nudge(看门狗轻提醒)
t+ 153.9s ♪ 向导音:watchdog(看门狗升级)
t+ 173.9s ♪ 向导音:nudge(看门狗轻提醒)
t+ 173.9s ♪ 向导音:watchdog(看门狗升级)
t+ 173.9s ♪ 向导音:turn(轮到你)
t+ 173.9s 〰 震动:confirm(轻点确认)
#### 【玩家动作】又是两级提醒都没有重听建议——占用轮里那句建议自动闭嘴
t+ 173.9s ♪ 音效 sfx/tone_up
t+ 173.9s ♪ 音效 sfx/tone_doubletap
t+ 173.9s ♪ 音效 sfx/tone_tap
t+ 173.9s ♪ 音效 sfx/tone_left
t+ 173.9s ♪ 音效 sfx/tone_down
t+ 173.9s ♪ 音效 sfx/tone_right
t+ 173.9s ♪ 音效 sfx/tone_tap
t+ 173.9s ▶ 向导语音:「漂亮,过了。」
t+ 173.9s 〰 震动:success(成功长震)
t+ 176.3s ▶ 语音:「第七轮,听好了。」
t+ 178.4s ♪ 音效 sfx/tone_down
t+ 178.4s 〰 震动:beat(节拍点)
t+ 179.0s ♪ 音效 sfx/tone_right
t+ 179.5s ♪ 音效 sfx/tone_tap
t+ 179.0s 〰 震动:beat(节拍点)
t+ 179.5s 〰 震动:beat(节拍点)
t+ 180.1s ♪ 音效 sfx/tone_left
t+ 180.6s ♪ 音效 sfx/tone_down
t+ 180.1s 〰 震动:beat(节拍点)
t+ 180.6s 〰 震动:beat(节拍点)
t+ 181.1s ♪ 音效 sfx/tone_right
t+ 181.7s ♪ 音效 sfx/tone_tap
t+ 181.1s 〰 震动:beat(节拍点)
t+ 181.7s 〰 震动:beat(节拍点)
t+ 182.2s ♪ 音效 sfx/tone_left
t+ 182.2s 〰 震动:beat(节拍点)
t+ 183.2s ♪ 向导音:turn(轮到你)
t+ 183.2s 〰 震动:confirm(轻点确认)
t+ 183.2s ……… 静默 5s(长序列,又想不起来了) ………
t+ 188.2s ♪ 向导音:nudge(看门狗轻提醒)
t+ 188.2s ▶ 向导语音:「需要的话,向上滑可以重新听一遍序列。」
t+ 188.2s 【状态】又是那句提示:向上滑可以重新听一遍序列 第 7 轮轮到你了:已对上 0/8,照原顺序做手势(要重听就向上滑)(语音播放中,语速1)
#### 【玩家动作】向上滑——第 2 次免费重听用掉,这回听到「免费重听用完了。之后重听会花一次机会」
t+ 188.2s ▶ 语音:「再听一遍。」
t+ 188.2s 〰 震动:pickup(获得)
t+ 190.3s ▶ 向导语音:「免费重听用完了。之后重听会花一次机会,别怕,慢慢来。」
t+ 192.4s ♪ 音效 sfx/tone_down
t+ 192.4s 〰 震动:beat(节拍点)
t+ 193.0s ♪ 音效 sfx/tone_right
t+ 193.5s ♪ 音效 sfx/tone_tap
t+ 193.0s 〰 震动:beat(节拍点)
t+ 193.5s 〰 震动:beat(节拍点)
t+ 194.1s ♪ 音效 sfx/tone_left
t+ 194.6s ♪ 音效 sfx/tone_down
t+ 194.1s 〰 震动:beat(节拍点)
t+ 194.6s 〰 震动:beat(节拍点)
t+ 195.1s ♪ 音效 sfx/tone_right
t+ 195.7s ♪ 音效 sfx/tone_tap
t+ 195.1s 〰 震动:beat(节拍点)
t+ 195.7s 〰 震动:beat(节拍点)
t+ 196.2s ♪ 音效 sfx/tone_left
t+ 196.2s 〰 震动:beat(节拍点)
t+ 197.2s ♪ 向导音:turn(轮到你)
t+ 197.2s 〰 震动:confirm(轻点确认)
t+ 197.2s ♪ 音效 sfx/tone_down
t+ 197.2s ♪ 音效 sfx/tone_right
t+ 197.2s ♪ 音效 sfx/tone_tap
t+ 197.2s ♪ 音效 sfx/tone_left
t+ 197.2s ♪ 音效 sfx/tone_down
t+ 197.2s ♪ 音效 sfx/tone_right
t+ 197.2s ♪ 音效 sfx/tone_tap
t+ 197.2s ♪ 音效 sfx/tone_left
t+ 197.2s ▶ 语音:「答对了!」
t+ 197.2s 〰 震动:success(成功长震)
t+ 197.2s 【状态】收工:打完 7 轮在轮边界停手(免费重听剩 2 次,账目和播的对上了) 刚答完一轮,播报中(语音播放中,语速1)
+354
View File
@@ -0,0 +1,354 @@
/**
* simon live 修后验证驱动(round2)。
* node driver2.mjs V —— 核对局:S2 input_open 后才作答 / S1·S3·S4 长按查询 /
* S7 your_turn 一次 / S6 结算链阶段看守+补播 / S5 误触 error 震
* node driver2.mjs P —— 压力局:乱按路径复跑,核对 S5/S6/S2 有落点
* 断言全在事件流上(等价玩家听+摸得到的反馈);末尾 /listen 取 ASR 判定行。
*/
const BASE = 'http://localhost:8143';
const MODE = process.argv[2] || 'V';
const fs = await import('node:fs');
async function post(p, body) {
const r = await fetch(BASE + p, {
method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(body || {}),
});
const j = await r.json();
if (!r.ok || j.ok === false) throw new Error(`${p}: ${JSON.stringify(j)}`);
return j;
}
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
const G2E = { up: 'swipeup', down: 'swipedown', left: 'swipeleft', right: 'swiperight', tap: 'tap', doubletap: 'doubletap' };
const TONE2G = {
tone_up: 'up', tone_down: 'down', tone_left: 'left', tone_right: 'right',
tone_tap: 'tap', tone_doubletap: 'doubletap',
};
const vid = (url) => String(url || '').split('/').pop().replace(/\.\w+$/, '');
const isTone = (id) => id.startsWith('tone_');
const w = { since: 0, all: [] };
async function poll() {
const r = await fetch(`${BASE}/events?since=${w.since}`);
const { events: evs, next } = await r.json();
w.since = next;
for (const e of evs) w.all.push(e);
return evs;
}
async function until(cond, { timeout = 60000, step = 120, tag = '' } = {}) {
const t0 = Date.now();
for (;;) {
const evs = await poll();
const hit = evs.filter(cond);
if (hit.length) return hit;
if (Date.now() - t0 > timeout) {
const tail = w.all.slice(-6).map((e) => `${e.ev}:${vid(e.url) || e.pattern || ''}`).join(' | ');
throw new Error(`until 超时(${Date.now() - t0}ms)${tag}:since=${w.since} all=${w.all.length} tail=${tail}`);
}
await sleep(step);
}
}
let PASS = 0, FAIL = 0;
function check(cond, msg) {
if (cond) { PASS++; console.log(` ✓ ${msg}`); }
else { FAIL++; console.log(` ✗ ${msg}`); }
}
async function gesture(name, note) {
if (note) console.log(` [我] ${note} → ${name}`);
await post('/gesture', { type: name });
}
const mark = () => w.all.length;
const since = (m) => w.all.slice(m);
const evVibrate = (m, pat) => since(m).filter((e) => e.ev === 'vibrate' && e.pattern === pat);
const evVstart = (m, id) => since(m).filter((e) => e.ev === 'vstart' && vid(e.url) === id);
/**
* 听 playback 直到 input_open 标记(_toInput,答题窗口真开放),从该标记倒取
* expectedLen 个 tone-start 为序列。input_open 唯一且不可与 tap 确认震混淆
* (跳过播报的 tap 也发 [20],曾让 confirm 边界误匹配、序列倒穿进上一轮历史)。
*/
async function collectPlayback(expectedLen) {
await until((e) => e.ev === 'start' && vid(e.url) === 'input_open', { timeout: 40000, tag: 'input_open' });
let idx = -1;
for (let i = w.all.length - 1; i >= 0; i--) {
if (w.all[i].ev === 'start' && vid(w.all[i].url) === 'input_open') { idx = i; break; }
}
const seq = [];
for (let i = idx - 1; i >= 0 && seq.length < expectedLen; i--) {
const e = w.all[i];
if (e.ev === 'start' && e.layer !== 'voice' && isTone(vid(e.url))) seq.push(TONE2G[vid(e.url)]);
}
seq.reverse();
if (seq.length !== expectedLen) console.log(` [!] 序列 ${seq.length} 音 ≠ 期望 ${expectedLen}`);
console.log(` [debug-collect] input_open ta=${w.all[idx]?.ta} seq=${seq.join(' ')}`);
return seq;
}
// input_open 游标:跨批次的"下一个未消费标记"(drain 批可能把 confirm 与
// input_open 同窗送达,按 mark 快照等新事件会漏看——游标扫全量历史,源驱动免疫)。
let ioCursor = 0;
async function waitInputOpen(timeout = 15000) {
const t0 = Date.now();
for (;;) {
for (; ioCursor < w.all.length; ioCursor++) {
const e = w.all[ioCursor];
if (e.ev === 'start' && vid(e.url) === 'input_open') { ioCursor++; return true; }
}
if (Date.now() - t0 > timeout) return false;
await poll();
}
}
/** 答完整序列(调用方负责先 waitInputOpen)。 */
async function answerAll(seq) {
for (const g of seq) {
await post('/gesture', { type: G2E[g] });
await sleep(250);
}
}
async function listenAll() {
const rows = [];
let cur = null;
for (let i = 0; i < 40; i++) {
const r = await fetch(`${BASE}/listen`);
const j = await r.json();
rows.push(...j.rows);
if (j.rows.length === 0) break;
cur = j;
await sleep(1500);
}
return rows;
}
// ---------------------------------------------------------------- 局 V:核对局
async function runV() {
console.log('== 局 V(修后核对局,female/normal/guide full)');
await post('/session', { game: 'simon', settings: { voice: 'female', speed: 'normal', bgm: 'normal', guide: 'full' } });
await until((e) => e.ev === 'probe_ready', { timeout: 30000 });
await sleep(800);
await gesture('tap', '解锁');
// 教学讲解期维持静默忽略(设计裁定:S5 只管 announce/roundend,教学不动)——锁定负例
const m0 = mark();
await gesture('swipeleft', '教学讲解期乱滑');
await sleep(300);
check(evVibrate(m0, '[60,40,60]').length === 0, '教学讲解期维持静默忽略(S5 不扩面,负例锁定)');
await gesture('swipedown', '跳教学');
await until((e) => e.ev === 'vstart' && vid(e.url).startsWith('round_'), { timeout: 15000 });
// 第 1 轮:S7——首边界 your_turn 一遍;答错触发复活重播,验证不重念
let seq = await collectPlayback(2);
console.log(`-- 第 1 轮:${seq.join(' ')}`);
{
check(await waitInputOpen(), 'S2:第 1 轮边界 input_open 到达');
await sleep(700); await poll();
const ytBase = w.all.filter((e) => e.ev === 'vstart' && vid(e.url) === 'your_turn').length;
check(ytBase === 1, 'S7:首次开放 your_turn 一遍');
await post('/gesture', { type: G2E[seq[0]] }); // 答首音
await sleep(300);
const wrong = ['down', 'left', 'right', 'tap'].find((x) => x !== seq[1]);
await post('/gesture', { type: G2E[wrong] }); // 答错 → 复活
await until((e) => e.ev === 'vstart' && vid(e.url) === 'retry_use', { timeout: 8000 });
seq = await collectPlayback(2); // 复活重播
check(await waitInputOpen(), 'S2:复活重播回 input 有 input_open 标记');
await sleep(700); await poll();
const ytNow = w.all.filter((e) => e.ev === 'vstart' && vid(e.url) === 'your_turn').length;
check(ytNow === ytBase, 'S7:复活重播不重念 your_turn');
await answerAll(seq);
}
await until((e) => e.ev === 'vstart' && vid(e.url).startsWith('round_'), { timeout: 20000, tag: 'round' });
// 第 2 轮:S2——input_open 与占用预告的次序(本轮占用多半已被第 1 轮封顶抑制,双路径都验)
const mB = mark();
seq = await collectPlayback(3);
console.log(`-- 第 2 轮:${seq.join(' ')}`);
{
const hasOcc = since(mB).some((e) => e.ev === 'vstart' && vid(e.url).startsWith('gd_occ'));
check(await waitInputOpen(), `S2:input_open 标记到达(${hasOcc ? '占用预告链尾' : '无链轮(占用被第 1 轮封顶抑制)'})`);
if (hasOcc) {
const occVends = w.all.map((e, i) => (e.ev === 'vend' && vid(e.url).startsWith('gd_occ') ? i : -1)).filter((i) => i >= 0 && i >= mB);
const openIdx = w.all.findIndex((e, i) => i >= mB && e.ev === 'start' && vid(e.url) === 'input_open');
check(openIdx > occVends[occVends.length - 1], 'S2:input_open 在占用预告结束之后');
}
await answerAll(seq);
}
await until((e) => e.ev === 'vstart' && vid(e.url).startsWith('round_'), { timeout: 20000, tag: 'round' });
// 第 3 轮:S5——announce 播报期乱滑给 error 震(round_03 播报已由上行 until 消费)
{
const mA = mark();
await gesture('swipeleft', '轮次播报期乱滑');
await gesture('swiperight', '再滑一下');
// 断言等对 drain 宽容:轮询至 error 震出现(或 2s 上限——drain 批延迟可达 1s+)
let s5ok = false;
for (let i = 0; i < 17; i++) {
await poll();
if (evVibrate(mA, '[60,40,60]').length >= 1) { s5ok = true; break; }
await sleep(120);
}
check(s5ok, 'S5:announce 播报期误触有 error 震');
await gesture('tap', '跳播报');
seq = await collectPlayback(4);
console.log(`-- 第 3 轮:${seq.join(' ')}`);
await waitInputOpen();
await answerAll(seq);
}
await until((e) => e.ev === 'vstart' && vid(e.url).startsWith('round_'), { timeout: 20000, tag: 'round' });
// 第 4 轮:S1/S3/S4——input 阶段长按查询
seq = await collectPlayback(5);
console.log(`-- 第 4 轮(${seq.length} 音):${seq.join(' ')}`);
{
await waitInputOpen();
const mQ = mark();
await gesture('longpress', '长按问状态');
// 等到三档 vstart 全部开播再断言(真实语音每句 1-2s,链式开播)
for (let i = 0; i < 50; i++) {
await poll();
if (since(mQ).filter((e) => e.ev === 'vstart' && vid(e.url).startsWith('status_')).length >= 3) break;
await sleep(200);
}
const heard = since(mQ).filter((e) => e.ev === 'vstart').map((e) => vid(e.url));
check(heard.filter((x) => x.startsWith('status_len')).length === 1
&& heard.filter((x) => x.startsWith('status_prog')).length === 1
&& heard.filter((x) => x.startsWith('status_free') || x.startsWith('status_chance') || x === 'status_out').length === 1,
`S1/S3/S4:查询三档整句(${heard.filter((x) => x.startsWith('status_')).join(', ')})`);
const lenId = seq.length <= 4 ? 'status_len_short' : seq.length <= 8 ? 'status_len_mid' : 'status_len_long';
check(heard.includes(lenId), `S1:长度档与真实长度一致(${lenId})`);
check(heard.includes('status_prog_start'), 'S3:进度档 start(尚未作答)');
check(heard.includes('status_free2'), 'S4:账目档 free2(免费两次未用)');
await answerAll(seq);
}
await until((e) => e.ev === 'vstart' && vid(e.url).startsWith('round_'), { timeout: 20000, tag: 'round' });
// 第 5 轮:S6——input 开放后故意三连错(机会 = 初始 1 + 第 4 轮完成 +1 = 2)→ gameover
seq = await collectPlayback(5);
console.log(`-- 第 5 轮(${seq.length} 音):${seq.join(' ')}`);
await waitInputOpen();
{
// 机会账:初始 1 - 第 1 轮故意答错 1 + 第 4 轮完成 +1 = 1 → 两连错耗尽
for (let k = 0; k < 2; k++) {
const wrong = ['down', 'left', 'right', 'tap'].find((x) => x !== seq[0]);
await gesture(G2E[wrong], `故意答错(第 ${k + 1} 次)`);
if (k < 1) {
await until((e) => e.ev === 'vstart' && vid(e.url) === 'retry_use', { timeout: 8000 });
seq = await collectPlayback(5);
await waitInputOpen();
}
}
}
// S6:结算链 +1400ms 点火之前下滑进菜单(死亡瞬间手型,live-B 行 141)
await sleep(600); // 判死本身即时(error/hit 震 + sfx/gameover +700ms)
{
const mG = mark();
await gesture('swipedown', '死亡瞬间下滑进菜单');
await until((e) => e.ev === 'vstart' && vid(e.url) === 'menu_open', { timeout: 8000 });
check(since(mG).filter((e) => e.ev === 'vstart' && /^(gameover|score_band)/.test(vid(e.url))).length === 0,
'S6 前提:进菜单前结算链未开播');
const mM = mark();
await sleep(2500); // 越过原 +1400ms 点火点
const leaked = since(mM).filter((e) => e.ev === 'vstart' && /^(gameover|score_band)/.test(vid(e.url)));
check(leaked.length === 0, 'S6:菜单内不交付结算链');
await gesture('swipedown', '关菜单回结算页');
let redelivered = [];
for (let i = 0; i < 42; i++) {
await poll();
redelivered = since(mM).filter((e) => e.ev === 'vstart' && /^(gameover|score_band)/.test(vid(e.url)));
if (redelivered.length >= 2) break;
await sleep(150);
}
check(redelivered.length >= 2, `S6:回结算页补播结算链(${redelivered.map((e) => vid(e.url)).join(', ')})`);
}
console.log('== 局 V 结束');
}
// ---------------------------------------------------------------- 局 P:压力局
async function runP() {
console.log('== 局 P(修后压力局,male/1.7/guide full)');
await post('/session', { game: 'simon', settings: { voice: 'male', speed: '1.7', bgm: 'normal', guide: 'full' } });
await until((e) => e.ev === 'probe_ready', { timeout: 30000 });
await sleep(800);
await gesture('tap', '解锁');
for (let i = 0; i < 3; i++) await gesture('tap', '连点跳旁白');
await gesture('swipedown', '跳教学');
await until((e) => e.ev === 'vstart' && vid(e.url).startsWith('round_'), { timeout: 15000 });
const mA = mark();
await gesture('swipeleft', '播报期乱滑');
let s5ok = false;
for (let i = 0; i < 17; i++) {
await poll();
if (evVibrate(mA, '[60,40,60]').length >= 1) { s5ok = true; break; }
await sleep(120);
}
check(s5ok, 'S5:跳播报路径上误触有 error 震');
const rnd = () => ['up', 'down', 'left', 'right', 'tap', 'doubletap'][Math.floor(Math.random() * 6)];
let dead = false;
for (let guard = 0; guard < 140 && !dead; guard++) {
const evs = await poll();
for (const e of evs) {
// 判死检测用 hit 震(+300ms,gameover 专属震型)——赶在结算链 +1400ms 点火前
// 完成下滑,给 S6 留确定性的操作窗
if (e.ev === 'vibrate' && e.pattern === '[80]') { dead = true; }
}
if (dead) break;
if (evs.some((e) => e.ev === 'vibrate' && e.pattern === '[8]') && Math.random() < 0.5) {
const mPl = mark();
await gesture(G2E[rnd()], '播放中乱按');
let errSeen = false;
for (let i = 0; i < 13; i++) {
await poll();
if (evVibrate(mPl, '[60,40,60]').length > 0) { errSeen = true; break; }
await sleep(120);
}
check(!errSeen, 'S5 负例:playback 维持静默豁免');
continue;
}
if (evs.some((e) => e.ev === 'vstart' && vid(e.url).startsWith('round_'))) {
await gesture('tap', '跳轮次播报');
}
await gesture(G2E[rnd()], '凭感觉乱答');
await sleep(200);
}
check(dead, '压力局到达 gameover');
// S6 压力路径:死亡瞬间下滑 → 菜单 → 回结算页补播
const mG = mark();
await gesture('swipedown', '死亡瞬间下滑进菜单');
await until((e) => e.ev === 'vstart' && vid(e.url) === 'menu_open', { timeout: 8000 }).catch(() => []);
const mM = mark();
await sleep(2500);
const leaked = since(mM).filter((e) => e.ev === 'vstart' && /^(gameover|score_band)/.test(vid(e.url)));
check(leaked.length === 0, 'S6:菜单内不交付结算链(压力路径)');
await gesture('swipedown', '关菜单');
let redelivered = [];
for (let i = 0; i < 42; i++) {
await poll();
redelivered = since(mM).filter((e) => e.ev === 'vstart' && /^(gameover|score_band)/.test(vid(e.url)));
if (redelivered.length >= 2) break;
await sleep(150);
}
check(redelivered.length >= 2, `S6:回结算页补播(${redelivered.map((e) => vid(e.url)).join(', ')})`);
const ioCount = w.all.filter((e) => e.ev === 'start' && vid(e.url) === 'input_open').length;
const roundEnters = w.all.filter((e) => e.ev === 'vstart' && vid(e.url).startsWith('round_')).length;
check(ioCount >= 2 && ioCount >= roundEnters, `S2:input_open 每轮边界到达(${ioCount} 次 ≥ 进入轮次 ${roundEnters};压力局死在第 1 轮亦不少于初始+复活边界)`);
console.log('== 局 P 结束');
}
const runner = MODE === 'P' ? runP : runV;
runner()
.then(async () => {
const rows = await listenAll();
const bad = rows.filter((r) => r.verdict !== 'OK');
console.log(`ASR 判定行 ${rows.length},非 OK ${bad.length}`);
for (const r of bad.slice(0, 10)) console.log(` [${r.verdict}] ${r.voiceId} sim=${r.similarity} heard=${r.heard}`);
const stop = await post('/stop');
console.log(`落盘: ${stop.outdir}(${stop.segs} 语音段 / ${stop.rows} 判定行)`);
console.log(`\n验证断言:通过 ${PASS},失败 ${FAIL}`);
process.exit(FAIL > 0 ? 1 : 0);
})
.catch(async (e) => {
console.error('驱动出错:', e);
try { await post('/stop'); } catch (_) { /* 忽略 */ }
process.exit(1);
});
@@ -0,0 +1,57 @@
== 局 P(修后压力局,male/1.7/guide full)
[我] 解锁 → tap
[我] 连点跳旁白 → tap
[我] 连点跳旁白 → tap
[我] 连点跳旁白 → tap
[我] 跳教学 → swipedown
[我] 播报期乱滑 → swipeleft
✓ S5:跳播报路径上误触有 error 震
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → swipedown
[我] 播放中乱按 → swipeup
✓ S5 负例:playback 维持静默豁免
[我] 凭感觉乱答 → swipedown
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → tap
[我] 凭感觉乱答 → swipeleft
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → swipedown
[我] 凭感觉乱答 → swipeleft
[我] 凭感觉乱答 → swipeup
[我] 凭感觉乱答 → swipeleft
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → tap
[我] 播放中乱按 → swiperight
✓ S5 负例:playback 维持静默豁免
[我] 凭感觉乱答 → swipeup
[我] 凭感觉乱答 → swiperight
[我] 凭感觉乱答 → swiperight
[我] 凭感觉乱答 → doubletap
[我] 凭感觉乱答 → doubletap
[我] 播放中乱按 → swipeleft
✓ S5 负例:playback 维持静默豁免
[我] 凭感觉乱答 → swipeleft
[我] 凭感觉乱答 → swiperight
✓ 压力局到达 gameover
[我] 死亡瞬间下滑进菜单 → swipedown
✓ S6:菜单内不交付结算链(压力路径)
[我] 关菜单 → swipedown
✓ S6:回结算页补播(gameover, score_band1)
✓ S2:input_open 每轮边界到达(3 次 ≥ 进入轮次 1;压力局死在第 1 轮亦不少于初始+复活边界)
== 局 P 结束
ASR 判定行 20,非 OK 10
[TRUNCATED] t0_welcome sim=0 heard=对。
[TRUNCATED] skip_hint sim=0.25 heard=单。
[TRUNCATED] t0_goal sim=0.1 heard=嗯我。
[TRUNCATED] t1_up sim=0 heard=我想。
[TRUNCATED] gd_occ_dt sim=0.6667 heard=这一轮是。
[TRUNCATED] menu_open sim=0 heard=操。
[SFX_BGM_ONLY] null sim=null heard=
[SFX_BGM_ONLY] null sim=null heard=
[SFX_BGM_ONLY] null sim=null heard=
[SFX_BGM_ONLY] null sim=null heard=
落盘: /home/xsl/AutoVideo/SoundGame/web/harness/live/out/simon-20260914120934(17 语音段 / 20 判定行)
验证断言:通过 8,失败 0
@@ -0,0 +1,169 @@
{"ev":"probe_ready","t":8.100000023841858,"ta":null}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":821.2000000178814,"ta":-0.074}
{"ev":"recstart","mime":"audio/webm;codecs=opus","t":895.4000000059605,"ta":0}
{"ev":"fetch","url":"audio/sfx/tone_up.ogg","status":200,"ok":true,"ms":15,"t":910.3000000119209,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_down.ogg","status":200,"ok":true,"ms":15,"t":910.6000000238419,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_left.ogg","status":200,"ok":true,"ms":15,"t":910.6000000238419,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_right.ogg","status":200,"ok":true,"ms":15,"t":910.7000000178814,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_tap.ogg","status":200,"ok":true,"ms":15,"t":910.7000000178814,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_doubletap.ogg","status":200,"ok":true,"ms":15,"t":910.7000000178814,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/gameover.ogg","status":200,"ok":true,"ms":15,"t":910.8000000119209,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/input_open.ogg","status":200,"ok":true,"ms":15,"t":910.9000000059605,"ta":0.016}
{"ev":"fetch","url":"audio/voice/male/t0_welcome.ogg","status":200,"ok":true,"ms":15,"t":910.9000000059605,"ta":0.016}
{"ev":"fetch","url":"audio/voice/male/t0_goal.ogg","status":200,"ok":true,"ms":15,"t":911.1000000238419,"ta":0.016}
{"ev":"fetch","url":"audio/voice/male/skip_hint.ogg","status":200,"ok":true,"ms":15,"t":911.1000000238419,"ta":0.016}
{"ev":"fetch","url":"audio/voice/male/t_try.ogg","status":200,"ok":true,"ms":15,"t":911.1000000238419,"ta":0.016}
{"ev":"fetch","url":"audio/voice/male/round_01.ogg","status":200,"ok":true,"ms":15,"t":911.6000000238419,"ta":0.016}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":1302.6000000238419,"ta":0.407}
{"ev":"vstart","url":"audio/voice/male/t0_welcome.ogg","t":1397.4000000059605,"dur":5.04,"ta":0.502}
{"ev":"vibrate","pattern":"[20]","t":1666.6000000238419,"ta":0.771}
{"ev":"vend","url":"audio/voice/male/t0_welcome.ogg","t":1666.9000000059605,"reason":"kill","ta":0.772}
{"ev":"vstart","url":"audio/voice/male/skip_hint.ogg","t":1667.1000000238419,"dur":2.32,"ta":0.772}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":1770.6000000238419,"ta":0.875}
{"ev":"vibrate","pattern":"[20]","t":2133.7000000178814,"ta":1.238}
{"ev":"vend","url":"audio/voice/male/skip_hint.ogg","t":2133.7000000178814,"reason":"kill","ta":1.238}
{"ev":"vstart","url":"audio/voice/male/t0_goal.ogg","t":2133.9000000059605,"dur":5.84,"ta":1.239}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":2239,"ta":1.344}
{"ev":"vibrate","pattern":"[20]","t":2602.4000000059605,"ta":1.707}
{"ev":"vend","url":"audio/voice/male/t0_goal.ogg","t":2602.4000000059605,"reason":"kill","ta":1.707}
{"ev":"fetch","url":"audio/voice/male/t1_up.ogg","status":200,"ok":true,"ms":3,"t":2605.100000023842,"ta":1.71}
{"ev":"vstart","url":"audio/voice/male/t1_up.ogg","t":2609.600000023842,"dur":3.12,"ta":1.714}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":2706.5,"ta":1.811}
{"ev":"vibrate","pattern":"[10]","t":3057.800000011921,"ta":2.162}
{"ev":"vend","url":"audio/voice/male/t1_up.ogg","t":3058,"reason":"kill","ta":2.163}
{"ev":"fetch","url":"audio/voice/male/t_skip.ogg","status":200,"ok":true,"ms":2,"t":3060.4000000059605,"ta":2.165}
{"ev":"vstart","url":"audio/voice/male/t_skip.ogg","t":3063.7000000178814,"dur":2.48,"ta":2.168}
{"ev":"vend","url":"audio/voice/male/t_skip.ogg","t":5771.200000017881,"reason":"kill","ta":4.876}
{"ev":"vstart","url":"audio/voice/male/round_01.ogg","t":5771.5,"dur":2.64,"ta":4.876}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":5809.9000000059605,"ta":4.915}
{"ev":"vibrate","pattern":"[10]","t":6174.200000017881,"ta":5.279}
{"ev":"vibrate","pattern":"[60,40,60]","t":6174.200000017881,"ta":5.279}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":6582.100000023842,"ta":5.687}
{"ev":"vibrate","pattern":"[20]","t":6829,"ta":5.934}
{"ev":"vibrate","pattern":"[60,40,60]","t":6829,"ta":5.934}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":7438.100000023842,"ta":6.543}
{"ev":"vibrate","pattern":"[10]","t":7790.800000011921,"ta":6.895}
{"ev":"vibrate","pattern":"[60,40,60]","t":7790.800000011921,"ta":6.895}
{"ev":"vibrate","pattern":"[8]","t":8271.700000017881,"ta":7.376}
{"ev":"start","t":8271.90000000596,"sid":1,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":7.377}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":8399.800000011921,"ta":7.504}
{"ev":"vend","url":"audio/voice/male/round_01.ogg","t":8487.40000000596,"reason":"kill","ta":7.592}
{"ev":"vibrate","pattern":"[10]","t":8757.600000023842,"ta":7.862}
{"ev":"vibrate","pattern":"[8]","t":8971.90000000596,"ta":8.076}
{"ev":"start","t":8972,"sid":2,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":8.077}
{"ev":"vibrate","pattern":"[20]","t":10072.300000011921,"ta":9.177}
{"ev":"fetch","url":"audio/voice/male/gd_occ_dt.ogg","status":200,"ok":true,"ms":3,"t":10076.300000011921,"ta":9.181}
{"ev":"vstart","url":"audio/voice/male/gd_occ_dt.ogg","t":10079.800000011921,"dur":2.08,"ta":9.184}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":10765.5,"ta":9.87}
{"ev":"vibrate","pattern":"[10]","t":11123.90000000596,"ta":10.229}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":11730,"ta":10.835}
{"ev":"vibrate","pattern":"[20]","t":11976.300000011921,"ta":11.081}
{"ev":"vend","url":"audio/voice/male/gd_occ_dt.ogg","t":12411.200000017881,"reason":"kill","ta":11.516}
{"ev":"fetch","url":"audio/voice/male/your_turn.ogg","status":200,"ok":true,"ms":3,"t":12414,"ta":11.519}
{"ev":"vstart","url":"audio/voice/male/your_turn.ogg","t":12416.300000011921,"dur":1.36,"ta":11.521}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":12583.100000023842,"ta":11.688}
{"ev":"vibrate","pattern":"[20]","t":12946,"ta":12.051}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":13253.600000023842,"ta":12.358}
{"ev":"vibrate","pattern":"[10]","t":13606.90000000596,"ta":12.712}
{"ev":"vend","url":"audio/voice/male/your_turn.ogg","t":14013.200000017881,"reason":"kill","ta":13.118}
{"ev":"start","t":14013.5,"sid":3,"url":"audio/sfx/input_open.ogg","layer":"sfx","dur":0.37709750566893424,"rate":1,"loop":false,"when":0,"ta":13.118}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":14214.100000023842,"ta":13.319}
{"ev":"vibrate","pattern":"[20]","t":14460.90000000596,"ta":13.566}
{"ev":"vibrate","pattern":"[60,40,60]","t":14461.100000023842,"ta":13.566}
{"ev":"start","t":14461.5,"sid":4,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":13.566}
{"ev":"fetch","url":"audio/voice/male/retry_use.ogg","status":200,"ok":true,"ms":2,"t":14463.40000000596,"ta":13.568}
{"ev":"vstart","url":"audio/voice/male/retry_use.ogg","t":14467.40000000596,"dur":3.52,"ta":13.572}
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":14761.40000000596,"ta":13.866}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":15069.200000017881,"ta":14.174}
{"ev":"vibrate","pattern":"[20]","t":15315.90000000596,"ta":14.421}
{"ev":"vibrate","pattern":"[60,40,60]","t":15315.90000000596,"ta":14.421}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":15922.700000017881,"ta":15.027}
{"ev":"vibrate","pattern":"[20]","t":16169.5,"ta":15.274}
{"ev":"vibrate","pattern":"[60,40,60]","t":16169.5,"ta":15.274}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":16776.20000001788,"ta":15.881}
{"ev":"vibrate","pattern":"[10]","t":17140.20000001788,"ta":16.245}
{"ev":"vibrate","pattern":"[60,40,60]","t":17140.30000001192,"ta":16.245}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":17746.40000000596,"ta":16.851}
{"ev":"vibrate","pattern":"[10]","t":18106.600000023842,"ta":17.211}
{"ev":"vibrate","pattern":"[60,40,60]","t":18106.600000023842,"ta":17.211}
{"ev":"vend","url":"audio/voice/male/retry_use.ogg","t":18285.5,"reason":"kill","ta":17.39}
{"ev":"fetch","url":"audio/voice/male/chances_out.ogg","status":200,"ok":true,"ms":3,"t":18288.20000001788,"ta":17.393}
{"ev":"vstart","url":"audio/voice/male/chances_out.ogg","t":18291.90000000596,"dur":2.24,"ta":17.397}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":18715.20000001788,"ta":17.82}
{"ev":"vibrate","pattern":"[10]","t":19073.5,"ta":18.178}
{"ev":"vibrate","pattern":"[60,40,60]","t":19073.5,"ta":18.178}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":19682.30000001192,"ta":18.787}
{"ev":"vibrate","pattern":"[10]","t":20040,"ta":19.145}
{"ev":"vibrate","pattern":"[60,40,60]","t":20040,"ta":19.145}
{"ev":"vend","url":"audio/voice/male/chances_out.ogg","t":20630.40000000596,"reason":"kill","ta":19.735}
{"ev":"vstart","url":"audio/voice/male/gd_occ_dt.ogg","t":20630.600000023842,"dur":2.08,"ta":19.735}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":20649.100000023842,"ta":19.754}
{"ev":"vibrate","pattern":"[20]","t":20896,"ta":20.001}
{"ev":"vibrate","pattern":"[60,40,60]","t":20896,"ta":20.001}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":21504.5,"ta":20.609}
{"ev":"vibrate","pattern":"[20]","t":21867.40000000596,"ta":20.972}
{"ev":"vend","url":"audio/voice/male/gd_occ_dt.ogg","t":21867.5,"reason":"kill","ta":20.972}
{"ev":"vibrate","pattern":"[8]","t":21867.600000023842,"ta":20.972}
{"ev":"start","t":21867.80000001192,"sid":5,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":20.972}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":22174.70000001788,"ta":21.279}
{"ev":"vibrate","pattern":"[10]","t":22540.70000001788,"ta":21.645}
{"ev":"vibrate","pattern":"[8]","t":22567.80000001192,"ta":21.672}
{"ev":"start","t":22568,"sid":6,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":21.673}
{"ev":"vibrate","pattern":"[20]","t":23668.20000001788,"ta":22.773}
{"ev":"start","t":23668.40000000596,"sid":7,"url":"audio/sfx/input_open.ogg","layer":"sfx","dur":0.37709750566893424,"rate":1,"loop":false,"when":0,"ta":22.773}
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":24545.80000001192,"ta":23.65}
{"ev":"vibrate","pattern":"[10]","t":24906.70000001788,"ta":24.011}
{"ev":"vibrate","pattern":"[15]","t":24906.90000000596,"ta":24.012}
{"ev":"fetch","url":"audio/voice/male/relisten.ogg","status":200,"ok":true,"ms":2,"t":24909.30000001192,"ta":24.014}
{"ev":"vstart","url":"audio/voice/male/relisten.ogg","t":24912.30000001192,"dur":1.2,"ta":24.017}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":25514.20000001788,"ta":24.619}
{"ev":"vibrate","pattern":"[10]","t":25873.20000001788,"ta":24.978}
{"ev":"vibrate","pattern":"[60,40,60]","t":25873.30000001192,"ta":24.978}
{"ev":"vend","url":"audio/voice/male/relisten.ogg","t":26040.100000023842,"reason":"kill","ta":25.145}
{"ev":"fetch","url":"audio/voice/male/gd_chances_left1.ogg","status":200,"ok":true,"ms":2,"t":26042.5,"ta":25.147}
{"ev":"vstart","url":"audio/voice/male/gd_chances_left1.ogg","t":26046.20000001788,"dur":2.56,"ta":25.151}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":26480.70000001788,"ta":25.585}
{"ev":"vibrate","pattern":"[10]","t":26840.100000023842,"ta":25.945}
{"ev":"vibrate","pattern":"[60,40,60]","t":26840.100000023842,"ta":25.945}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":27446.20000001788,"ta":26.551}
{"ev":"vibrate","pattern":"[20]","t":27693,"ta":26.798}
{"ev":"vibrate","pattern":"[60,40,60]","t":27693,"ta":26.798}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":28300,"ta":27.405}
{"ev":"vibrate","pattern":"[20]","t":28547,"ta":27.652}
{"ev":"vibrate","pattern":"[60,40,60]","t":28547,"ta":27.652}
{"ev":"vend","url":"audio/voice/male/gd_chances_left1.ogg","t":28756.70000001788,"reason":"kill","ta":27.861}
{"ev":"vibrate","pattern":"[8]","t":28756.80000001192,"ta":27.861}
{"ev":"start","t":28756.90000000596,"sid":8,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":27.862}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":29154.70000001788,"ta":28.259}
{"ev":"vibrate","pattern":"[8]","t":29457,"ta":28.562}
{"ev":"start","t":29457.20000001788,"sid":9,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":28.562}
{"ev":"vibrate","pattern":"[10]","t":29506.30000001192,"ta":28.611}
{"ev":"vibrate","pattern":"[20]","t":30557.30000001192,"ta":29.662}
{"ev":"start","t":30557.40000000596,"sid":10,"url":"audio/sfx/input_open.ogg","layer":"sfx","dur":0.37709750566893424,"rate":1,"loop":false,"when":0,"ta":29.662}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":31513.20000001788,"ta":30.618}
{"ev":"vibrate","pattern":"[10]","t":31873,"ta":30.978}
{"ev":"start","t":31873.100000023842,"sid":11,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":30.978}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":32479.80000001192,"ta":31.584}
{"ev":"vibrate","pattern":"[10]","t":32839.60000002384,"ta":31.944}
{"ev":"vibrate","pattern":"[60,40,60]","t":32839.90000000596,"ta":31.945}
{"ev":"start","t":32840,"sid":12,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":31.945}
{"ev":"vibrate","pattern":"[80]","t":33140.10000002384,"ta":32.245}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":33446.90000000596,"ta":32.551}
{"ev":"start","t":33540.20000001788,"sid":13,"url":"audio/sfx/gameover.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":32.645}
{"ev":"vibrate","pattern":"[10]","t":33806.20000001788,"ta":32.911}
{"ev":"fetch","url":"audio/bgm/menu.ogg","status":200,"ok":true,"ms":3,"t":33809.5,"ta":32.914}
{"ev":"fetch","url":"audio/voice/male/menu_open.ogg","status":200,"ok":true,"ms":4,"t":33810.40000000596,"ta":32.915}
{"ev":"vstart","url":"audio/voice/male/menu_open.ogg","t":33815.10000002384,"dur":0.7970975056689342,"ta":32.92}
{"ev":"start","t":33942,"sid":14,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":33.047}
{"ev":"vend","url":"audio/voice/male/menu_open.ogg","t":34240.10000002384,"reason":"kill","ta":33.345}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":36714.90000000596,"ta":35.82}
{"ev":"vibrate","pattern":"[10]","t":37073.20000001788,"ta":36.178}
{"ev":"fetch","url":"audio/voice/male/gameover.ogg","status":200,"ok":true,"ms":3,"t":37075.90000000596,"ta":36.181}
{"ev":"vstart","url":"audio/voice/male/gameover.ogg","t":37078.90000000596,"dur":1.12,"ta":36.184}
{"ev":"vend","url":"audio/voice/male/gameover.ogg","t":38206.40000000596,"reason":"kill","ta":37.311}
{"ev":"fetch","url":"audio/voice/male/score_band1.ogg","status":200,"ok":true,"ms":3,"t":38209,"ta":37.314}
{"ev":"vstart","url":"audio/voice/male/score_band1.ogg","t":38213.40000000596,"dur":3.12,"ta":37.318}
{"ev":"vend","url":"audio/voice/male/score_band1.ogg","t":41666,"reason":"kill","ta":40.771}
{"ev":"fetch","url":"audio/voice/male/replay.ogg","status":200,"ok":true,"ms":3,"t":41668.60000002384,"ta":40.773}
{"ev":"vstart","url":"audio/voice/male/replay.ogg","t":41673.70000001788,"dur":4.24,"ta":40.778}
{"ev":"recstop","t":44055,"ta":43.16}
@@ -0,0 +1,195 @@
# simon 实时会话 transcript
- `[ -0.07s]` **GESTURE** tap @(195,422)
- `[ 0.00s]` REC 开始 (audio/webm;codecs=opus)
- `[ 0.41s]` **GESTURE** tap @(195,422)
- `[ 0.50s]` VOICE ▶ t0_welcome (dur 5.04s)
- `[ 0.77s]` VIBRATE [20]
- `[ 0.77s]` VOICE ■ t0_welcome (kill)
- `[ 0.77s]` VOICE ▶ skip_hint (dur 2.32s)
- `[ 0.77s]` VERDICT t0_welcome: **TRUNCATED** sim=0
- 期望: 欢迎来到音序回响。先认识六种声音。
- 听到: 对。
- `[ 0.88s]` **GESTURE** tap @(195,422)
- `[ 1.24s]` VIBRATE [20]
- `[ 1.24s]` VOICE ■ skip_hint (kill)
- `[ 1.24s]` VERDICT skip_hint: **TRUNCATED** sim=0.25
- 期望: 单击可跳过旁白。
- 听到: 单。
- `[ 1.24s]` VOICE ▶ t0_goal (dur 5.84s)
- `[ 1.34s]` **GESTURE** tap @(195,422)
- `[ 1.71s]` VIBRATE [20]
- `[ 1.71s]` VOICE ■ t0_goal (kill)
- `[ 1.71s]` VERDICT t0_goal: **TRUNCATED** sim=0.1
- 期望: 我会演奏一串声音,请你记住顺序,原样复现。
- 听到: 嗯我。
- `[ 1.71s]` VOICE ▶ t1_up (dur 3.12s)
- `[ 1.81s]` **GESTURE** swipedown @(195,422)
- `[ 2.16s]` VIBRATE [10]
- `[ 2.16s]` VOICE ■ t1_up (kill)
- `[ 2.16s]` VERDICT t1_up: **TRUNCATED** sim=0
- 期望: 向上滑,是这个声音。
- 听到: 我想。
- `[ 2.17s]` VOICE ▶ t_skip (dur 2.48s)
- `[ 4.88s]` VOICE ■ t_skip (kill)
- `[ 4.88s]` VOICE ▶ round_01 (dur 2.64s)
- `[ 4.88s]` VERDICT t_skip: **OK** sim=0.9412
- 期望: 跳过教学,直接开始。
- 听到: 下跳过教学直接开始。
- `[ 4.92s]` **GESTURE** swipeleft @(195,422)
- `[ 5.28s]` VIBRATE [10]
- `[ 5.28s]` VIBRATE [60,40,60]
- `[ 5.69s]` **GESTURE** doubletap @(195,422)
- `[ 5.93s]` VIBRATE [20]
- `[ 5.93s]` VIBRATE [60,40,60]
- `[ 6.54s]` **GESTURE** swipedown @(195,422)
- `[ 6.89s]` VIBRATE [10]
- `[ 6.89s]` VIBRATE [60,40,60]
- `[ 7.38s]` VIBRATE [8]
- `[ 7.38s]` SFX ♪ tone_left
- `[ 7.50s]` **GESTURE** swipeup @(195,422)
- `[ 7.59s]` VOICE ■ round_01 (kill)
- `[ 7.59s]` VERDICT round_01: **OK** sim=1
- 期望: 第一轮,听好了。
- 听到: 第一轮听好了。
- `[ 7.86s]` VIBRATE [10]
- `[ 8.08s]` VIBRATE [8]
- `[ 8.08s]` SFX ♪ tone_doubletap
- `[ 9.18s]` VIBRATE [20]
- `[ 9.18s]` VOICE ▶ gd_occ_dt (dur 2.08s)
- `[ 9.18s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 9.87s]` **GESTURE** swipedown @(195,422)
- `[ 10.23s]` VIBRATE [10]
- `[ 10.84s]` **GESTURE** doubletap @(195,422)
- `[ 11.08s]` VIBRATE [20]
- `[ 11.52s]` VOICE ■ gd_occ_dt (kill)
- `[ 11.52s]` VERDICT gd_occ_dt: **OK** sim=1
- 期望: 这一轮,双击是作答。
- 听到: 这一轮双击是作答。
- `[ 11.52s]` VOICE ▶ your_turn (dur 1.36s)
- `[ 11.69s]` **GESTURE** tap @(195,422)
- `[ 12.05s]` VIBRATE [20]
- `[ 12.36s]` **GESTURE** swipeleft @(195,422)
- `[ 12.71s]` VIBRATE [10]
- `[ 13.12s]` VOICE ■ your_turn (kill)
- `[ 13.12s]` SFX ♪ input_open
- `[ 13.12s]` VERDICT your_turn: **OK** sim=1
- 期望: 轮到你了。
- 听到: 轮到你了。
- `[ 13.32s]` **GESTURE** doubletap @(195,422)
- `[ 13.57s]` VIBRATE [20]
- `[ 13.57s]` VIBRATE [60,40,60]
- `[ 13.57s]` SFX ♪ tone_doubletap
- `[ 13.57s]` VOICE ▶ retry_use (dur 3.52s)
- `[ 13.87s]` VIBRATE [30,50,30,50,30]
- `[ 14.17s]` **GESTURE** doubletap @(195,422)
- `[ 14.42s]` VIBRATE [20]
- `[ 14.42s]` VIBRATE [60,40,60]
- `[ 15.03s]` **GESTURE** doubletap @(195,422)
- `[ 15.27s]` VIBRATE [20]
- `[ 15.27s]` VIBRATE [60,40,60]
- `[ 15.88s]` **GESTURE** swipedown @(195,422)
- `[ 16.25s]` VIBRATE [10]
- `[ 16.25s]` VIBRATE [60,40,60]
- `[ 16.85s]` **GESTURE** swipeleft @(195,422)
- `[ 17.21s]` VIBRATE [10]
- `[ 17.21s]` VIBRATE [60,40,60]
- `[ 17.39s]` VOICE ■ retry_use (kill)
- `[ 17.39s]` VERDICT retry_use: **OK** sim=1
- 期望: 错了。用一次机会,再听一遍。
- 听到: 错了,用一次机会再听一遍。
- `[ 17.40s]` VOICE ▶ chances_out (dur 2.24s)
- `[ 17.82s]` **GESTURE** swipeup @(195,422)
- `[ 18.18s]` VIBRATE [10]
- `[ 18.18s]` VIBRATE [60,40,60]
- `[ 18.79s]` **GESTURE** swipeleft @(195,422)
- `[ 19.14s]` VIBRATE [10]
- `[ 19.14s]` VIBRATE [60,40,60]
- `[ 19.73s]` VOICE ■ chances_out (kill)
- `[ 19.73s]` VOICE ▶ gd_occ_dt (dur 2.08s)
- `[ 19.73s]` VERDICT chances_out: **OK** sim=1
- 期望: 重听机会用完了,小心。
- 听到: 重听机会用完了,小心。
- `[ 19.75s]` **GESTURE** doubletap @(195,422)
- `[ 20.00s]` VIBRATE [20]
- `[ 20.00s]` VIBRATE [60,40,60]
- `[ 20.61s]` **GESTURE** tap @(195,422)
- `[ 20.97s]` VIBRATE [20]
- `[ 20.97s]` VOICE ■ gd_occ_dt (kill)
- `[ 20.97s]` VIBRATE [8]
- `[ 20.97s]` SFX ♪ tone_left
- `[ 20.97s]` VERDICT gd_occ_dt: **TRUNCATED** sim=0.6667
- 期望: 这一轮,双击是作答。
- 听到: 这一轮是。
- `[ 21.28s]` **GESTURE** swiperight @(195,422)
- `[ 21.64s]` VIBRATE [10]
- `[ 21.67s]` VIBRATE [8]
- `[ 21.67s]` SFX ♪ tone_doubletap
- `[ 22.77s]` VIBRATE [20]
- `[ 22.77s]` SFX ♪ input_open
- `[ 23.65s]` **GESTURE** swipeup @(195,422)
- `[ 24.01s]` VIBRATE [10]
- `[ 24.01s]` VIBRATE [15]
- `[ 24.02s]` VOICE ▶ relisten (dur 1.2s)
- `[ 24.02s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 24.62s]` **GESTURE** swiperight @(195,422)
- `[ 24.98s]` VIBRATE [10]
- `[ 24.98s]` VIBRATE [60,40,60]
- `[ 25.14s]` VOICE ■ relisten (kill)
- `[ 25.14s]` VERDICT relisten: **OK** sim=1
- 期望: 再听一遍。
- 听到: 再听一遍。
- `[ 25.15s]` VOICE ▶ gd_chances_left1 (dur 2.56s)
- `[ 25.59s]` **GESTURE** swiperight @(195,422)
- `[ 25.95s]` VIBRATE [10]
- `[ 25.95s]` VIBRATE [60,40,60]
- `[ 26.55s]` **GESTURE** doubletap @(195,422)
- `[ 26.80s]` VIBRATE [20]
- `[ 26.80s]` VIBRATE [60,40,60]
- `[ 27.41s]` **GESTURE** doubletap @(195,422)
- `[ 27.65s]` VIBRATE [20]
- `[ 27.65s]` VIBRATE [60,40,60]
- `[ 27.86s]` VOICE ■ gd_chances_left1 (kill)
- `[ 27.86s]` VIBRATE [8]
- `[ 27.86s]` VERDICT gd_chances_left1: **OK** sim=0.8889
- 期望: 免费重听还剩一次。
- 听到: 一边免费重听还剩一次。
- `[ 27.86s]` SFX ♪ tone_left
- `[ 28.26s]` **GESTURE** swipeleft @(195,422)
- `[ 28.56s]` VIBRATE [8]
- `[ 28.56s]` SFX ♪ tone_doubletap
- `[ 28.61s]` VIBRATE [10]
- `[ 29.66s]` VIBRATE [20]
- `[ 29.66s]` SFX ♪ input_open
- `[ 30.62s]` **GESTURE** swipeleft @(195,422)
- `[ 30.98s]` VIBRATE [10]
- `[ 30.98s]` SFX ♪ tone_left
- `[ 31.58s]` **GESTURE** swiperight @(195,422)
- `[ 31.94s]` VIBRATE [10]
- `[ 31.95s]` VIBRATE [60,40,60]
- `[ 31.95s]` SFX ♪ tone_right
- `[ 32.24s]` VIBRATE [80]
- `[ 32.55s]` **GESTURE** swipedown @(195,422)
- `[ 32.65s]` SFX ♪ gameover
- `[ 32.91s]` VIBRATE [10]
- `[ 32.92s]` VOICE ▶ menu_open (dur 0.7970975056689342s)
- `[ 32.92s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 33.05s]` BGM ♪ menu (loop)
- `[ 33.34s]` VOICE ■ menu_open (kill)
- `[ 33.34s]` VERDICT menu_open: **TRUNCATED** sim=0
- 期望: 菜单。
- 听到: 操。
- `[ 35.82s]` **GESTURE** swipedown @(195,422)
- `[ 36.18s]` VIBRATE [10]
- `[ 36.18s]` VOICE ▶ gameover (dur 1.12s)
- `[ 36.18s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 37.31s]` VOICE ■ gameover (kill)
- `[ 37.31s]` VERDICT gameover: **OK** sim=0.6667
- 期望: 游戏结束。
- 听到: 游戏。
- `[ 37.32s]` VOICE ▶ score_band1 (dur 3.12s)
- `[ 40.77s]` VOICE ■ score_band1 (kill)
- `[ 40.77s]` VERDICT score_band1: **OK** sim=1
- 期望: 一轮都没坚持下来。别灰心。
- 听到: 一轮都没坚持下来,别灰心。
- `[ 40.78s]` VOICE ▶ replay (dur 4.24s)
@@ -0,0 +1,415 @@
{
"game": "simon",
"settings": {
"voice": "male",
"guide": "full",
"speed": 1,
"bgm": 1
},
"outdir": "/home/xsl/AutoVideo/SoundGame/web/harness/live/out/simon-20260914120934",
"segs": [
{
"idx": 0,
"voiceId": "t0_welcome",
"t0": 0.502,
"t1": 0.772,
"dur": 5.04,
"expEnd": 5.542,
"truncated": true,
"reason": "kill",
"verdict": "TRUNCATED",
"heard": "对。",
"similarity": 0
},
{
"idx": 1,
"voiceId": "skip_hint",
"t0": 0.772,
"t1": 1.238,
"dur": 2.32,
"expEnd": 3.092,
"truncated": true,
"reason": "kill",
"verdict": "TRUNCATED",
"heard": "单。",
"similarity": 0.25
},
{
"idx": 2,
"voiceId": "t0_goal",
"t0": 1.239,
"t1": 1.707,
"dur": 5.84,
"expEnd": 7.079,
"truncated": true,
"reason": "kill",
"verdict": "TRUNCATED",
"heard": "嗯我。",
"similarity": 0.1
},
{
"idx": 3,
"voiceId": "t1_up",
"t0": 1.714,
"t1": 2.163,
"dur": 3.12,
"expEnd": 4.834,
"truncated": true,
"reason": "kill",
"verdict": "TRUNCATED",
"heard": "我想。",
"similarity": 0
},
{
"idx": 4,
"voiceId": "t_skip",
"t0": 2.168,
"t1": 4.876,
"dur": 2.48,
"expEnd": 4.648,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "下跳过教学直接开始。",
"similarity": 0.9412
},
{
"idx": 5,
"voiceId": "round_01",
"t0": 4.876,
"t1": 7.592,
"dur": 2.64,
"expEnd": 7.516,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "第一轮听好了。",
"similarity": 1
},
{
"idx": 6,
"voiceId": "gd_occ_dt",
"t0": 9.184,
"t1": 11.516,
"dur": 2.08,
"expEnd": 11.264,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "这一轮双击是作答。",
"similarity": 1
},
{
"idx": 7,
"voiceId": "your_turn",
"t0": 11.521,
"t1": 13.118,
"dur": 1.36,
"expEnd": 12.881,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "轮到你了。",
"similarity": 1
},
{
"idx": 8,
"voiceId": "retry_use",
"t0": 13.572,
"t1": 17.39,
"dur": 3.52,
"expEnd": 17.092,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "错了,用一次机会再听一遍。",
"similarity": 1
},
{
"idx": 9,
"voiceId": "chances_out",
"t0": 17.397,
"t1": 19.735,
"dur": 2.24,
"expEnd": 19.637,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "重听机会用完了,小心。",
"similarity": 1
},
{
"idx": 10,
"voiceId": "gd_occ_dt",
"t0": 19.735,
"t1": 20.972,
"dur": 2.08,
"expEnd": 21.815,
"truncated": true,
"reason": "kill",
"verdict": "TRUNCATED",
"heard": "这一轮是。",
"similarity": 0.6667
},
{
"idx": 11,
"voiceId": "relisten",
"t0": 24.017,
"t1": 25.145,
"dur": 1.2,
"expEnd": 25.217,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "再听一遍。",
"similarity": 1
},
{
"idx": 12,
"voiceId": "gd_chances_left1",
"t0": 25.151,
"t1": 27.861,
"dur": 2.56,
"expEnd": 27.711,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "一边免费重听还剩一次。",
"similarity": 0.8889
},
{
"idx": 13,
"voiceId": "menu_open",
"t0": 32.92,
"t1": 33.345,
"dur": 0.7970975056689342,
"expEnd": 33.717,
"truncated": true,
"reason": "kill",
"verdict": "TRUNCATED",
"heard": "操。",
"similarity": 0
},
{
"idx": 14,
"voiceId": "gameover",
"t0": 36.184,
"t1": 37.311,
"dur": 1.12,
"expEnd": 37.304,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "游戏。",
"similarity": 0.6667
},
{
"idx": 15,
"voiceId": "score_band1",
"t0": 37.318,
"t1": 40.771,
"dur": 3.12,
"expEnd": 40.438,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "一轮都没坚持下来,别灰心。",
"similarity": 1
},
{
"idx": 16,
"voiceId": "replay",
"t0": 40.778,
"t1": 41.041,
"dur": 4.24,
"expEnd": 45.018,
"truncated": true,
"reason": "session-end",
"verdict": null,
"heard": null,
"similarity": null
}
],
"rows": [
{
"t0": 0.502,
"t1": 0.772,
"voiceId": "t0_welcome",
"expected": "欢迎来到音序回响。先认识六种声音。",
"heard": "对。",
"similarity": 0,
"verdict": "TRUNCATED"
},
{
"t0": 0.772,
"t1": 1.238,
"voiceId": "skip_hint",
"expected": "单击可跳过旁白。",
"heard": "单。",
"similarity": 0.25,
"verdict": "TRUNCATED"
},
{
"t0": 1.239,
"t1": 1.707,
"voiceId": "t0_goal",
"expected": "我会演奏一串声音,请你记住顺序,原样复现。",
"heard": "嗯我。",
"similarity": 0.1,
"verdict": "TRUNCATED"
},
{
"t0": 1.714,
"t1": 2.163,
"voiceId": "t1_up",
"expected": "向上滑,是这个声音。",
"heard": "我想。",
"similarity": 0,
"verdict": "TRUNCATED"
},
{
"t0": 2.168,
"t1": 4.876,
"voiceId": "t_skip",
"expected": "跳过教学,直接开始。",
"heard": "下跳过教学直接开始。",
"similarity": 0.9412,
"verdict": "OK"
},
{
"t0": 4.876,
"t1": 7.592,
"voiceId": "round_01",
"expected": "第一轮,听好了。",
"heard": "第一轮听好了。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 9.184,
"t1": 11.516,
"voiceId": "gd_occ_dt",
"expected": "这一轮,双击是作答。",
"heard": "这一轮双击是作答。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 11.521,
"t1": 13.118,
"voiceId": "your_turn",
"expected": "轮到你了。",
"heard": "轮到你了。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 13.572,
"t1": 17.39,
"voiceId": "retry_use",
"expected": "错了。用一次机会,再听一遍。",
"heard": "错了,用一次机会再听一遍。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 17.397,
"t1": 19.735,
"voiceId": "chances_out",
"expected": "重听机会用完了,小心。",
"heard": "重听机会用完了,小心。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 19.735,
"t1": 20.972,
"voiceId": "gd_occ_dt",
"expected": "这一轮,双击是作答。",
"heard": "这一轮是。",
"similarity": 0.6667,
"verdict": "TRUNCATED"
},
{
"t0": 24.017,
"t1": 25.145,
"voiceId": "relisten",
"expected": "再听一遍。",
"heard": "再听一遍。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 25.151,
"t1": 27.861,
"voiceId": "gd_chances_left1",
"expected": "免费重听还剩一次。",
"heard": "一边免费重听还剩一次。",
"similarity": 0.8889,
"verdict": "OK"
},
{
"t0": 32.92,
"t1": 33.345,
"voiceId": "menu_open",
"expected": "菜单。",
"heard": "操。",
"similarity": 0,
"verdict": "TRUNCATED"
},
{
"t0": 36.184,
"t1": 37.311,
"voiceId": "gameover",
"expected": "游戏结束。",
"heard": "游戏。",
"similarity": 0.6667,
"verdict": "OK"
},
{
"t0": 7.592,
"t1": 9.184,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 20.972,
"t1": 24.017,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 27.861,
"t1": 32.92,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 33.345,
"t1": 36.184,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 37.318,
"t1": 40.771,
"voiceId": "score_band1",
"expected": "一轮都没坚持下来。别灰心。",
"heard": "一轮都没坚持下来,别灰心。",
"similarity": 1,
"verdict": "OK"
}
]
}
@@ -0,0 +1,53 @@
== 局 V(修后核对局,female/normal/guide full)
[我] 解锁 → tap
[我] 教学讲解期乱滑 → swipeleft
✓ 教学讲解期维持静默忽略(S5 不扩面,负例锁定)
[我] 跳教学 → swipedown
[debug-collect] input_open ta=10.243 seq=right doubletap
-- 第 1 轮:right doubletap
✓ S2:第 1 轮边界 input_open 到达
✓ S7:首次开放 your_turn 一遍
[debug-collect] input_open ta=20.657 seq=right doubletap
✓ S2:复活重播回 input 有 input_open 标记
✓ S7:复活重播不重念 your_turn
[debug-collect] input_open ta=27.734 seq=right doubletap right
-- 第 2 轮:right doubletap right
✓ S2:input_open 标记到达(无链轮(占用被第 1 轮封顶抑制))
[我] 轮次播报期乱滑 → swipeleft
[我] 再滑一下 → swiperight
✓ S5:announce 播报期误触有 error 震
[我] 跳播报 → tap
[debug-collect] input_open ta=37.173 seq=right doubletap right right
-- 第 3 轮:right doubletap right right
[debug-collect] input_open ta=46.955 seq=right doubletap right right tap
-- 第 4 轮(5 音):right doubletap right right tap
[我] 长按问状态 → longpress
✓ S1/S3/S4:查询三档整句(status_len_mid, status_prog_start, status_free2)
✓ S1:长度档与真实长度一致(status_len_mid)
✓ S3:进度档 start(尚未作答)
✓ S4:账目档 free2(免费两次未用)
[debug-collect] input_open ta=65.685 seq=doubletap right right tap left
-- 第 5 轮(5 音):doubletap right right tap left
[我] 故意答错(第 1 次) → swipedown
[debug-collect] input_open ta=76.56 seq=doubletap right right tap left
[我] 故意答错(第 2 次) → swipedown
[我] 死亡瞬间下滑进菜单 → swipedown
✓ S6 前提:进菜单前结算链未开播
✓ S6:菜单内不交付结算链
[我] 关菜单回结算页 → swipedown
✓ S6:回结算页补播结算链(gameover, score_band3)
== 局 V 结束
ASR 判定行 37,非 OK 13
[TRUNCATED] t0_welcome sim=0.5 heard=欢迎来到音。
[TRUNCATED] menu_open sim=0 heard=嗯。
[MISMATCH] gameover sim=0.3333 heard=有戏。
[SFX_BGM_ONLY] null sim=null heard=
[SFX_BGM_ONLY] null sim=null heard=
[SFX_BGM_ONLY] null sim=null heard=
[SFX_BGM_ONLY] null sim=null heard=
[SFX_BGM_ONLY] null sim=null heard=
[SFX_BGM_ONLY] null sim=null heard=
[SFX_BGM_ONLY] null sim=null heard=
落盘: /home/xsl/AutoVideo/SoundGame/web/harness/live/out/simon-20260914120121(28 语音段 / 37 判定行)
验证断言:通过 14,失败 0
@@ -0,0 +1,250 @@
{"ev":"probe_ready","t":9,"ta":null}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":822.4000000059605,"ta":-0.086}
{"ev":"recstart","mime":"audio/webm;codecs=opus","t":908.1999999880791,"ta":0}
{"ev":"fetch","url":"audio/sfx/tone_up.ogg","status":200,"ok":true,"ms":15,"t":923.0999999940395,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_down.ogg","status":200,"ok":true,"ms":14,"t":923.3000000119209,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_left.ogg","status":200,"ok":true,"ms":14,"t":923.3000000119209,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_right.ogg","status":200,"ok":true,"ms":14,"t":923.3000000119209,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_tap.ogg","status":200,"ok":true,"ms":15,"t":923.4000000059605,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/tone_doubletap.ogg","status":200,"ok":true,"ms":15,"t":923.5,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/gameover.ogg","status":200,"ok":true,"ms":15,"t":923.5999999940395,"ta":0.015}
{"ev":"fetch","url":"audio/sfx/input_open.ogg","status":200,"ok":true,"ms":15,"t":923.5999999940395,"ta":0.015}
{"ev":"fetch","url":"audio/voice/female/t0_welcome.ogg","status":200,"ok":true,"ms":15,"t":923.6999999880791,"ta":0.016}
{"ev":"fetch","url":"audio/voice/female/t0_goal.ogg","status":200,"ok":true,"ms":15,"t":923.6999999880791,"ta":0.016}
{"ev":"fetch","url":"audio/voice/female/skip_hint.ogg","status":200,"ok":true,"ms":14,"t":923.6999999880791,"ta":0.016}
{"ev":"fetch","url":"audio/voice/female/t_try.ogg","status":200,"ok":true,"ms":14,"t":923.6999999880791,"ta":0.016}
{"ev":"fetch","url":"audio/voice/female/round_01.ogg","status":200,"ok":true,"ms":18,"t":927.6999999880791,"ta":0.02}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":1314.5999999940395,"ta":0.406}
{"ev":"vstart","url":"audio/voice/female/t0_welcome.ogg","t":1410.4000000059605,"dur":4.24,"ta":0.502}
{"ev":"vibrate","pattern":"[10]","t":1670.800000011921,"ta":0.763}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":2376.0999999940395,"ta":1.468}
{"ev":"vibrate","pattern":"[10]","t":2737,"ta":1.829}
{"ev":"vend","url":"audio/voice/female/t0_welcome.ogg","t":2737.199999988079,"reason":"kill","ta":1.829}
{"ev":"fetch","url":"audio/voice/female/t_skip.ogg","status":200,"ok":true,"ms":2,"t":2739.5999999940395,"ta":1.831}
{"ev":"vstart","url":"audio/voice/female/t_skip.ogg","t":2743.5999999940395,"dur":2.24,"ta":1.835}
{"ev":"vend","url":"audio/voice/female/t_skip.ogg","t":5091,"reason":"kill","ta":4.183}
{"ev":"vstart","url":"audio/voice/female/round_01.ogg","t":5091.300000011921,"dur":1.52,"ta":4.183}
{"ev":"vend","url":"audio/voice/female/round_01.ogg","t":6692.9000000059605,"reason":"kill","ta":5.785}
{"ev":"vibrate","pattern":"[8]","t":6693.199999988079,"ta":5.785}
{"ev":"start","t":6693.300000011921,"sid":1,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":5.785}
{"ev":"vibrate","pattern":"[8]","t":7393.300000011921,"ta":6.485}
{"ev":"start","t":7393.5,"sid":2,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":6.485}
{"ev":"vibrate","pattern":"[20]","t":8493.800000011921,"ta":7.586}
{"ev":"fetch","url":"audio/voice/female/gd_occ_dt.ogg","status":200,"ok":true,"ms":3,"t":8497.90000000596,"ta":7.59}
{"ev":"vstart","url":"audio/voice/female/gd_occ_dt.ogg","t":8501.199999988079,"dur":1.68,"ta":7.593}
{"ev":"vend","url":"audio/voice/female/gd_occ_dt.ogg","t":10384.40000000596,"reason":"kill","ta":9.476}
{"ev":"fetch","url":"audio/voice/female/your_turn.ogg","status":200,"ok":true,"ms":3,"t":10386.90000000596,"ta":9.479}
{"ev":"vstart","url":"audio/voice/female/your_turn.ogg","t":10389,"dur":0.7970975056689342,"ta":9.481}
{"ev":"vend","url":"audio/voice/female/your_turn.ogg","t":11150.40000000596,"reason":"kill","ta":10.242}
{"ev":"start","t":11150.800000011921,"sid":3,"url":"audio/sfx/input_open.ogg","layer":"sfx","dur":0.37709750566893424,"rate":1,"loop":false,"when":0,"ta":10.243}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":11859.09999999404,"ta":10.951}
{"ev":"vibrate","pattern":"[10]","t":12220.09999999404,"ta":11.312}
{"ev":"start","t":12220.300000011921,"sid":4,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":11.312}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":12925.40000000596,"ta":12.017}
{"ev":"vibrate","pattern":"[10]","t":13286.59999999404,"ta":12.378}
{"ev":"vibrate","pattern":"[60,40,60]","t":13286.699999988079,"ta":12.379}
{"ev":"start","t":13287.09999999404,"sid":5,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":12.379}
{"ev":"fetch","url":"audio/voice/female/retry_use.ogg","status":200,"ok":true,"ms":2,"t":13289.199999988079,"ta":12.381}
{"ev":"vstart","url":"audio/voice/female/retry_use.ogg","t":13293.09999999404,"dur":2.64,"ta":12.385}
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":13586.90000000596,"ta":12.679}
{"ev":"vend","url":"audio/voice/female/retry_use.ogg","t":16003,"reason":"kill","ta":15.095}
{"ev":"fetch","url":"audio/voice/female/chances_out.ogg","status":200,"ok":true,"ms":3,"t":16005.800000011921,"ta":15.098}
{"ev":"vstart","url":"audio/voice/female/chances_out.ogg","t":16008.699999988079,"dur":1.76,"ta":15.101}
{"ev":"vend","url":"audio/voice/female/chances_out.ogg","t":17883.80000001192,"reason":"kill","ta":16.976}
{"ev":"vstart","url":"audio/voice/female/gd_occ_dt.ogg","t":17883.90000000596,"dur":1.68,"ta":16.976}
{"ev":"vend","url":"audio/voice/female/gd_occ_dt.ogg","t":19764.5,"reason":"kill","ta":18.856}
{"ev":"vibrate","pattern":"[8]","t":19764.5,"ta":18.856}
{"ev":"start","t":19764.69999998808,"sid":6,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":18.857}
{"ev":"vibrate","pattern":"[8]","t":20464.69999998808,"ta":19.557}
{"ev":"start","t":20464.80000001192,"sid":7,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":19.557}
{"ev":"vibrate","pattern":"[20]","t":21565,"ta":20.657}
{"ev":"start","t":21565.19999998808,"sid":8,"url":"audio/sfx/input_open.ogg","layer":"sfx","dur":0.37709750566893424,"rate":1,"loop":false,"when":0,"ta":20.657}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":22279.69999998808,"ta":21.372}
{"ev":"vibrate","pattern":"[10]","t":22635.80000001192,"ta":21.728}
{"ev":"start","t":22636,"sid":9,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":21.728}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":23290.5,"ta":22.382}
{"ev":"vibrate","pattern":"[20]","t":23537,"ta":22.629}
{"ev":"vibrate","pattern":"[100]","t":23537.09999999404,"ta":22.629}
{"ev":"start","t":23537.5,"sid":10,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":22.629}
{"ev":"fetch","url":"audio/voice/female/correct.ogg","status":200,"ok":true,"ms":3,"t":23540.09999999404,"ta":22.632}
{"ev":"vstart","url":"audio/voice/female/correct.ogg","t":23543,"dur":0.6370975056689342,"ta":22.635}
{"ev":"vend","url":"audio/voice/female/correct.ogg","t":24315.19999998808,"reason":"kill","ta":23.407}
{"ev":"fetch","url":"audio/voice/female/round_02.ogg","status":200,"ok":true,"ms":3,"t":24618,"ta":23.71}
{"ev":"vstart","url":"audio/voice/female/round_02.ogg","t":24620.40000000596,"dur":1.44,"ta":23.712}
{"ev":"vend","url":"audio/voice/female/round_02.ogg","t":26219.09999999404,"reason":"kill","ta":25.311}
{"ev":"vibrate","pattern":"[8]","t":26219.19999998808,"ta":25.311}
{"ev":"start","t":26219.19999998808,"sid":11,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":25.311}
{"ev":"vibrate","pattern":"[8]","t":26893.30000001192,"ta":25.985}
{"ev":"start","t":26893.5,"sid":12,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":25.985}
{"ev":"vibrate","pattern":"[8]","t":27567.5,"ta":26.659}
{"ev":"start","t":27567.69999998808,"sid":13,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":26.66}
{"ev":"vibrate","pattern":"[20]","t":28641.80000001192,"ta":27.734}
{"ev":"start","t":28642,"sid":14,"url":"audio/sfx/input_open.ogg","layer":"sfx","dur":0.37709750566893424,"rate":1,"loop":false,"when":0,"ta":27.734}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":28752.69999998808,"ta":27.845}
{"ev":"vibrate","pattern":"[10]","t":29102.09999999404,"ta":28.194}
{"ev":"start","t":29102.30000001192,"sid":15,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":28.194}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":29757.90000000596,"ta":28.85}
{"ev":"vibrate","pattern":"[20]","t":30004.09999999404,"ta":29.096}
{"ev":"start","t":30004.09999999404,"sid":16,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":29.096}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":30659.90000000596,"ta":29.752}
{"ev":"vibrate","pattern":"[10]","t":31018.69999998808,"ta":30.111}
{"ev":"vibrate","pattern":"[100]","t":31018.80000001192,"ta":30.111}
{"ev":"start","t":31019,"sid":17,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":30.111}
{"ev":"fetch","url":"audio/voice/female/gd_clear.ogg","status":200,"ok":true,"ms":2,"t":31021,"ta":30.113}
{"ev":"vstart","url":"audio/voice/female/gd_clear.ogg","t":31024.30000001192,"dur":1.84,"ta":30.116}
{"ev":"vend","url":"audio/voice/female/gd_clear.ogg","t":32905.80000001192,"reason":"kill","ta":31.998}
{"ev":"fetch","url":"audio/voice/female/round_03.ogg","status":200,"ok":true,"ms":2,"t":33208.30000001192,"ta":32.3}
{"ev":"vstart","url":"audio/voice/female/round_03.ogg","t":33210.80000001192,"dur":1.68,"ta":32.303}
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":33278.59999999404,"ta":32.37}
{"ev":"vibrate","pattern":"[10]","t":33635.59999999404,"ta":32.727}
{"ev":"vibrate","pattern":"[60,40,60]","t":33635.59999999404,"ta":32.727}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":34039.19999998808,"ta":33.131}
{"ev":"vibrate","pattern":"[10]","t":34402.30000001192,"ta":33.494}
{"ev":"vibrate","pattern":"[60,40,60]","t":34402.40000000596,"ta":33.494}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":34810,"ta":33.902}
{"ev":"vend","url":"audio/voice/female/round_03.ogg","t":35088.09999999404,"reason":"kill","ta":34.18}
{"ev":"vibrate","pattern":"[8]","t":35088.19999998808,"ta":34.18}
{"ev":"start","t":35088.30000001192,"sid":18,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":34.18}
{"ev":"vibrate","pattern":"[20]","t":35173.30000001192,"ta":34.265}
{"ev":"vibrate","pattern":"[8]","t":35736.40000000596,"ta":34.828}
{"ev":"start","t":35736.59999999404,"sid":19,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":34.828}
{"ev":"vibrate","pattern":"[8]","t":36384.5,"ta":35.476}
{"ev":"start","t":36384.69999998808,"sid":20,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":35.477}
{"ev":"vibrate","pattern":"[8]","t":37032.69999998808,"ta":36.125}
{"ev":"start","t":37032.80000001192,"sid":21,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":36.125}
{"ev":"vibrate","pattern":"[20]","t":38081.09999999404,"ta":37.173}
{"ev":"start","t":38081.19999998808,"sid":22,"url":"audio/sfx/input_open.ogg","layer":"sfx","dur":0.37709750566893424,"rate":1,"loop":false,"when":0,"ta":37.173}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":38110.09999999404,"ta":37.202}
{"ev":"vibrate","pattern":"[10]","t":38469.09999999404,"ta":37.561}
{"ev":"start","t":38469.30000001192,"sid":23,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":37.561}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":39124.59999999404,"ta":38.216}
{"ev":"vibrate","pattern":"[20]","t":39373.19999998808,"ta":38.465}
{"ev":"start","t":39373.30000001192,"sid":24,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":38.465}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":40028.30000001192,"ta":39.12}
{"ev":"vibrate","pattern":"[10]","t":40385.5,"ta":39.477}
{"ev":"start","t":40385.59999999404,"sid":25,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":39.477}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":41040.80000001192,"ta":40.133}
{"ev":"vibrate","pattern":"[10]","t":41402.09999999404,"ta":40.494}
{"ev":"vibrate","pattern":"[100]","t":41402.19999998808,"ta":40.494}
{"ev":"start","t":41402.30000001192,"sid":26,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":40.494}
{"ev":"vstart","url":"audio/voice/female/correct.ogg","t":41402.30000001192,"dur":0.6370975056689342,"ta":40.494}
{"ev":"vend","url":"audio/voice/female/correct.ogg","t":42169.80000001192,"reason":"kill","ta":41.262}
{"ev":"fetch","url":"audio/voice/female/round_04.ogg","status":200,"ok":true,"ms":3,"t":42472.90000000596,"ta":41.565}
{"ev":"vstart","url":"audio/voice/female/round_04.ogg","t":42476.69999998808,"dur":1.84,"ta":41.569}
{"ev":"vend","url":"audio/voice/female/round_04.ogg","t":44352.19999998808,"reason":"kill","ta":43.444}
{"ev":"vibrate","pattern":"[8]","t":44352.19999998808,"ta":43.444}
{"ev":"start","t":44352.30000001192,"sid":27,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":43.444}
{"ev":"vibrate","pattern":"[8]","t":44974.30000001192,"ta":44.066}
{"ev":"start","t":44974.40000000596,"sid":28,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":44.066}
{"ev":"vibrate","pattern":"[8]","t":45596.69999998808,"ta":44.689}
{"ev":"start","t":45596.80000001192,"sid":29,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":44.689}
{"ev":"vibrate","pattern":"[8]","t":46218.90000000596,"ta":45.311}
{"ev":"start","t":46218.90000000596,"sid":30,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":45.311}
{"ev":"vibrate","pattern":"[8]","t":46841,"ta":45.933}
{"ev":"start","t":46841.09999999404,"sid":31,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":45.933}
{"ev":"vibrate","pattern":"[20]","t":47863.30000001192,"ta":46.955}
{"ev":"start","t":47863.40000000596,"sid":32,"url":"audio/sfx/input_open.ogg","layer":"sfx","dur":0.37709750566893424,"rate":1,"loop":false,"when":0,"ta":46.955}
{"ev":"gesture","type":"longpress","x":195,"y":422,"t":47972.5,"ta":47.064}
{"ev":"boost","on":true,"t":48425.19999998808,"ta":47.517}
{"ev":"vibrate","pattern":"[20]","t":48425.19999998808,"ta":47.517}
{"ev":"fetch","url":"audio/voice/female/status_len_mid.ogg","status":200,"ok":true,"ms":3,"t":48427.90000000596,"ta":47.52}
{"ev":"vstart","url":"audio/voice/female/status_len_mid.ogg","t":48431.59999999404,"dur":1.68,"ta":47.523}
{"ev":"boost","on":false,"t":48576.09999999404,"ta":47.668}
{"ev":"vend","url":"audio/voice/female/status_len_mid.ogg","t":50319.5,"reason":"kill","ta":49.411}
{"ev":"fetch","url":"audio/voice/female/status_prog_start.ogg","status":200,"ok":true,"ms":3,"t":50322.90000000596,"ta":49.415}
{"ev":"vstart","url":"audio/voice/female/status_prog_start.ogg","t":50327.30000001192,"dur":1.6,"ta":49.419}
{"ev":"vend","url":"audio/voice/female/status_prog_start.ogg","t":51921.19999998808,"reason":"kill","ta":51.013}
{"ev":"fetch","url":"audio/voice/female/status_free2.ogg","status":200,"ok":true,"ms":2,"t":51923.69999998808,"ta":51.016}
{"ev":"vstart","url":"audio/voice/female/status_free2.ogg","t":51926.69999998808,"dur":1.6,"ta":51.019}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":52031.80000001192,"ta":51.124}
{"ev":"vibrate","pattern":"[10]","t":52385.40000000596,"ta":51.477}
{"ev":"start","t":52385.5,"sid":33,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":51.477}
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":53039.90000000596,"ta":52.132}
{"ev":"vibrate","pattern":"[20]","t":53286.5,"ta":52.378}
{"ev":"start","t":53286.59999999404,"sid":34,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":52.378}
{"ev":"vend","url":"audio/voice/female/status_free2.ogg","t":53523.30000001192,"reason":"kill","ta":52.615}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":53940.09999999404,"ta":53.032}
{"ev":"vibrate","pattern":"[10]","t":54301.40000000596,"ta":53.393}
{"ev":"start","t":54301.59999999404,"sid":35,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":53.393}
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":54956.80000001192,"ta":54.049}
{"ev":"vibrate","pattern":"[10]","t":55318.09999999404,"ta":54.41}
{"ev":"start","t":55318.19999998808,"sid":36,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":54.41}
{"ev":"gesture","type":"tap","x":195,"y":422,"t":55973.09999999404,"ta":55.065}
{"ev":"vibrate","pattern":"[20]","t":56336.19999998808,"ta":55.428}
{"ev":"vibrate","pattern":"[100]","t":56336.19999998808,"ta":55.428}
{"ev":"vibrate","pattern":"[15]","t":56336.19999998808,"ta":55.428}
{"ev":"start","t":56336.30000001192,"sid":37,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":55.428}
{"ev":"vstart","url":"audio/voice/female/gd_clear.ogg","t":56336.5,"dur":1.84,"ta":55.428}
{"ev":"vend","url":"audio/voice/female/gd_clear.ogg","t":58213.30000001192,"reason":"kill","ta":57.305}
{"ev":"fetch","url":"audio/voice/female/chance_plus.ogg","status":200,"ok":true,"ms":3,"t":58216.09999999404,"ta":57.308}
{"ev":"vstart","url":"audio/voice/female/chance_plus.ogg","t":58218.90000000596,"dur":1.44,"ta":57.311}
{"ev":"vend","url":"audio/voice/female/chance_plus.ogg","t":59815.40000000596,"reason":"kill","ta":58.907}
{"ev":"fetch","url":"audio/voice/female/round_05.ogg","status":200,"ok":true,"ms":2,"t":60118,"ta":59.21}
{"ev":"vstart","url":"audio/voice/female/round_05.ogg","t":60122.19999998808,"dur":2.96,"ta":59.214}
{"ev":"vibrate","pattern":"[8]","t":62616,"ta":61.708}
{"ev":"start","t":62616.09999999404,"sid":38,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":61.708}
{"ev":"vend","url":"audio/voice/female/round_05.ogg","t":63112.5,"reason":"kill","ta":62.204}
{"ev":"vibrate","pattern":"[8]","t":63212.19999998808,"ta":62.304}
{"ev":"start","t":63212.30000001192,"sid":39,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":62.304}
{"ev":"vibrate","pattern":"[8]","t":63808.30000001192,"ta":62.9}
{"ev":"start","t":63808.5,"sid":40,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":62.9}
{"ev":"vibrate","pattern":"[8]","t":64404.59999999404,"ta":63.496}
{"ev":"start","t":64404.69999998808,"sid":41,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":63.497}
{"ev":"vibrate","pattern":"[8]","t":65000.69999998808,"ta":64.093}
{"ev":"start","t":65000.90000000596,"sid":42,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":64.093}
{"ev":"vibrate","pattern":"[8]","t":65596.90000000596,"ta":64.689}
{"ev":"start","t":65597,"sid":43,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":64.689}
{"ev":"vibrate","pattern":"[20]","t":66593.19999998808,"ta":65.685}
{"ev":"start","t":66593.40000000596,"sid":44,"url":"audio/sfx/input_open.ogg","layer":"sfx","dur":0.37709750566893424,"rate":1,"loop":false,"when":0,"ta":65.685}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":66664.59999999404,"ta":65.756}
{"ev":"vibrate","pattern":"[10]","t":67017.80000001192,"ta":66.11}
{"ev":"vibrate","pattern":"[60,40,60]","t":67017.90000000596,"ta":66.11}
{"ev":"start","t":67018.09999999404,"sid":45,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":66.11}
{"ev":"vstart","url":"audio/voice/female/retry_use.ogg","t":67018.09999999404,"dur":2.64,"ta":66.11}
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":67318,"ta":66.41}
{"ev":"vend","url":"audio/voice/female/retry_use.ogg","t":69729.5,"reason":"kill","ta":68.821}
{"ev":"vstart","url":"audio/voice/female/chances_out.ogg","t":69729.59999999404,"dur":1.76,"ta":68.821}
{"ev":"vend","url":"audio/voice/female/chances_out.ogg","t":71610.19999998808,"reason":"kill","ta":70.702}
{"ev":"vstart","url":"audio/voice/female/gd_occ_dt.ogg","t":71610.19999998808,"dur":1.68,"ta":70.702}
{"ev":"vend","url":"audio/voice/female/gd_occ_dt.ogg","t":73490.80000001192,"reason":"kill","ta":72.583}
{"ev":"vibrate","pattern":"[8]","t":73490.90000000596,"ta":72.583}
{"ev":"start","t":73491,"sid":46,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":72.583}
{"ev":"vibrate","pattern":"[8]","t":74087,"ta":73.179}
{"ev":"start","t":74087.09999999404,"sid":47,"url":"audio/sfx/tone_doubletap.ogg","layer":"sfx","dur":0.34829931972789113,"rate":1,"loop":false,"when":0,"ta":73.179}
{"ev":"vibrate","pattern":"[8]","t":74683.19999998808,"ta":73.775}
{"ev":"start","t":74683.40000000596,"sid":48,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":73.775}
{"ev":"vibrate","pattern":"[8]","t":75279.40000000596,"ta":74.371}
{"ev":"start","t":75279.5,"sid":49,"url":"audio/sfx/tone_right.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":74.371}
{"ev":"vibrate","pattern":"[8]","t":75875.59999999404,"ta":74.967}
{"ev":"start","t":75875.69999998808,"sid":50,"url":"audio/sfx/tone_tap.ogg","layer":"sfx","dur":0.17709750566893423,"rate":1,"loop":false,"when":0,"ta":74.968}
{"ev":"vibrate","pattern":"[8]","t":76471.80000001192,"ta":75.564}
{"ev":"start","t":76471.90000000596,"sid":51,"url":"audio/sfx/tone_left.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":75.564}
{"ev":"vibrate","pattern":"[20]","t":77468.19999998808,"ta":76.56}
{"ev":"start","t":77468.40000000596,"sid":52,"url":"audio/sfx/input_open.ogg","layer":"sfx","dur":0.37709750566893424,"rate":1,"loop":false,"when":0,"ta":76.56}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":77518.09999999404,"ta":76.61}
{"ev":"vibrate","pattern":"[10]","t":77883.90000000596,"ta":76.976}
{"ev":"vibrate","pattern":"[60,40,60]","t":77884.19999998808,"ta":76.976}
{"ev":"start","t":77884.30000001192,"sid":53,"url":"audio/sfx/tone_down.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":76.976}
{"ev":"vibrate","pattern":"[80]","t":78184.40000000596,"ta":77.276}
{"ev":"start","t":78584.5,"sid":54,"url":"audio/sfx/gameover.ogg","layer":"sfx","dur":0.9370975056689342,"rate":1,"loop":false,"when":0,"ta":77.676}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":78889.90000000596,"ta":77.982}
{"ev":"vibrate","pattern":"[10]","t":79249.69999998808,"ta":78.342}
{"ev":"fetch","url":"audio/bgm/menu.ogg","status":200,"ok":true,"ms":3,"t":79252.90000000596,"ta":78.345}
{"ev":"fetch","url":"audio/voice/female/menu_open.ogg","status":200,"ok":true,"ms":3,"t":79253.59999999404,"ta":78.345}
{"ev":"vstart","url":"audio/voice/female/menu_open.ogg","t":79258.09999999404,"dur":0.7170975056689343,"ta":78.35}
{"ev":"vend","url":"audio/voice/female/menu_open.ogg","t":79284.40000000596,"reason":"kill","ta":78.376}
{"ev":"start","t":79395.90000000596,"sid":55,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":78.488}
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":82159,"ta":81.251}
{"ev":"vibrate","pattern":"[10]","t":82517.09999999404,"ta":81.609}
{"ev":"fetch","url":"audio/voice/female/gameover.ogg","status":200,"ok":true,"ms":2,"t":82519.5,"ta":81.611}
{"ev":"vstart","url":"audio/voice/female/gameover.ogg","t":82522.19999998808,"dur":0.9570975056689343,"ta":81.614}
{"ev":"vend","url":"audio/voice/female/gameover.ogg","t":83660.19999998808,"reason":"kill","ta":82.752}
{"ev":"fetch","url":"audio/voice/female/score_band3.ogg","status":200,"ok":true,"ms":3,"t":83662.80000001192,"ta":82.755}
{"ev":"vstart","url":"audio/voice/female/score_band3.ogg","t":83665.80000001192,"dur":1.68,"ta":82.758}
{"ev":"vend","url":"audio/voice/female/score_band3.ogg","t":85541.19999998808,"reason":"kill","ta":84.633}
{"ev":"fetch","url":"audio/voice/female/replay.ogg","status":200,"ok":true,"ms":3,"t":85544.19999998808,"ta":84.636}
{"ev":"vstart","url":"audio/voice/female/replay.ogg","t":85548.19999998808,"dur":2.24,"ta":84.64}
{"ev":"vend","url":"audio/voice/female/replay.ogg","t":87886.09999999404,"reason":"kill","ta":86.978}
{"ev":"fetch","url":"audio/voice/female/rules_prompt.ogg","status":200,"ok":true,"ms":3,"t":87889.30000001192,"ta":86.981}
{"ev":"vstart","url":"audio/voice/female/rules_prompt.ogg","t":87896.5,"dur":5.36,"ta":86.988}
{"ev":"recstop","t":91727,"ta":90.819}
@@ -0,0 +1,305 @@
# simon 实时会话 transcript
- `[ -0.09s]` **GESTURE** tap @(195,422)
- `[ 0.00s]` REC 开始 (audio/webm;codecs=opus)
- `[ 0.41s]` **GESTURE** swipeleft @(195,422)
- `[ 0.50s]` VOICE ▶ t0_welcome (dur 4.24s)
- `[ 0.76s]` VIBRATE [10]
- `[ 1.47s]` **GESTURE** swipedown @(195,422)
- `[ 1.83s]` VIBRATE [10]
- `[ 1.83s]` VOICE ■ t0_welcome (kill)
- `[ 1.83s]` VERDICT t0_welcome: **TRUNCATED** sim=0.5
- 期望: 欢迎来到音序回响。先认识六种声音。
- 听到: 欢迎来到音。
- `[ 1.83s]` VOICE ▶ t_skip (dur 2.24s)
- `[ 4.18s]` VOICE ■ t_skip (kill)
- `[ 4.18s]` VOICE ▶ round_01 (dur 1.52s)
- `[ 4.18s]` VERDICT t_skip: **OK** sim=0.9412
- 期望: 跳过教学,直接开始。
- 听到: 一、跳过教学直接开始。
- `[ 5.79s]` VOICE ■ round_01 (kill)
- `[ 5.79s]` VIBRATE [8]
- `[ 5.79s]` SFX ♪ tone_right
- `[ 5.79s]` VERDICT round_01: **OK** sim=1
- 期望: 第一轮,听好了。
- 听到: 第一轮听好了。
- `[ 6.49s]` VIBRATE [8]
- `[ 6.49s]` SFX ♪ tone_doubletap
- `[ 7.59s]` VIBRATE [20]
- `[ 7.59s]` VOICE ▶ gd_occ_dt (dur 1.68s)
- `[ 7.59s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 9.48s]` VOICE ■ gd_occ_dt (kill)
- `[ 9.48s]` VERDICT gd_occ_dt: **OK** sim=1
- 期望: 这一轮,双击是作答。
- 听到: 这一轮双击是作答。
- `[ 9.48s]` VOICE ▶ your_turn (dur 0.7970975056689342s)
- `[ 10.24s]` VOICE ■ your_turn (kill)
- `[ 10.24s]` VERDICT your_turn: **OK** sim=0.8889
- 期望: 轮到你了。
- 听到: 啊,轮到你了。
- `[ 10.24s]` SFX ♪ input_open
- `[ 10.95s]` **GESTURE** swiperight @(195,422)
- `[ 11.31s]` VIBRATE [10]
- `[ 11.31s]` SFX ♪ tone_right
- `[ 12.02s]` **GESTURE** swipedown @(195,422)
- `[ 12.38s]` VIBRATE [10]
- `[ 12.38s]` VIBRATE [60,40,60]
- `[ 12.38s]` SFX ♪ tone_down
- `[ 12.38s]` VOICE ▶ retry_use (dur 2.64s)
- `[ 12.38s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 12.68s]` VIBRATE [30,50,30,50,30]
- `[ 15.10s]` VOICE ■ retry_use (kill)
- `[ 15.10s]` VERDICT retry_use: **OK** sim=1
- 期望: 错了。用一次机会,再听一遍。
- 听到: 错了,用一次机会再听一遍。
- `[ 15.10s]` VOICE ▶ chances_out (dur 1.76s)
- `[ 16.98s]` VOICE ■ chances_out (kill)
- `[ 16.98s]` VOICE ▶ gd_occ_dt (dur 1.68s)
- `[ 16.98s]` VERDICT chances_out: **OK** sim=1
- 期望: 重听机会用完了,小心。
- 听到: 重听机会用完了,小心。
- `[ 18.86s]` VOICE ■ gd_occ_dt (kill)
- `[ 18.86s]` VIBRATE [8]
- `[ 18.86s]` VERDICT gd_occ_dt: **OK** sim=1
- 期望: 这一轮,双击是作答。
- 听到: 这一轮双击是作答。
- `[ 18.86s]` SFX ♪ tone_right
- `[ 19.56s]` VIBRATE [8]
- `[ 19.56s]` SFX ♪ tone_doubletap
- `[ 20.66s]` VIBRATE [20]
- `[ 20.66s]` SFX ♪ input_open
- `[ 21.37s]` **GESTURE** swiperight @(195,422)
- `[ 21.73s]` VIBRATE [10]
- `[ 21.73s]` SFX ♪ tone_right
- `[ 22.38s]` **GESTURE** doubletap @(195,422)
- `[ 22.63s]` VIBRATE [20]
- `[ 22.63s]` VIBRATE [100]
- `[ 22.63s]` SFX ♪ tone_doubletap
- `[ 22.64s]` VOICE ▶ correct (dur 0.6370975056689342s)
- `[ 22.64s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 23.41s]` VOICE ■ correct (kill)
- `[ 23.41s]` VERDICT correct: **OK** sim=1
- 期望: 答对了!
- 听到: 答对了。
- `[ 23.71s]` VOICE ▶ round_02 (dur 1.44s)
- `[ 25.31s]` VOICE ■ round_02 (kill)
- `[ 25.31s]` VIBRATE [8]
- `[ 25.31s]` SFX ♪ tone_right
- `[ 25.31s]` VERDICT round_02: **OK** sim=1
- 期望: 第二轮,听好了。
- 听到: 第二轮听好了。
- `[ 25.98s]` VIBRATE [8]
- `[ 25.98s]` SFX ♪ tone_doubletap
- `[ 26.66s]` VIBRATE [8]
- `[ 26.66s]` SFX ♪ tone_right
- `[ 27.73s]` VIBRATE [20]
- `[ 27.73s]` SFX ♪ input_open
- `[ 27.84s]` **GESTURE** swiperight @(195,422)
- `[ 28.19s]` VIBRATE [10]
- `[ 28.19s]` SFX ♪ tone_right
- `[ 28.85s]` **GESTURE** doubletap @(195,422)
- `[ 29.10s]` VIBRATE [20]
- `[ 29.10s]` SFX ♪ tone_doubletap
- `[ 29.75s]` **GESTURE** swiperight @(195,422)
- `[ 30.11s]` VIBRATE [10]
- `[ 30.11s]` VIBRATE [100]
- `[ 30.11s]` SFX ♪ tone_right
- `[ 30.12s]` VOICE ▶ gd_clear (dur 1.84s)
- `[ 30.12s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 32.00s]` VOICE ■ gd_clear (kill)
- `[ 32.00s]` VERDICT gd_clear: **OK** sim=0.75
- 期望: 漂亮,过了。
- 听到: 漂亮过来。
- `[ 32.30s]` VOICE ▶ round_03 (dur 1.68s)
- `[ 32.37s]` **GESTURE** swipeleft @(195,422)
- `[ 32.73s]` VIBRATE [10]
- `[ 32.73s]` VIBRATE [60,40,60]
- `[ 33.13s]` **GESTURE** swiperight @(195,422)
- `[ 33.49s]` VIBRATE [10]
- `[ 33.49s]` VIBRATE [60,40,60]
- `[ 33.90s]` **GESTURE** tap @(195,422)
- `[ 34.18s]` VOICE ■ round_03 (kill)
- `[ 34.18s]` VIBRATE [8]
- `[ 34.18s]` SFX ♪ tone_right
- `[ 34.18s]` VERDICT round_03: **OK** sim=0.8333
- 期望: 第三轮,听好了。
- 听到: 第三轮停好了。
- `[ 34.27s]` VIBRATE [20]
- `[ 34.83s]` VIBRATE [8]
- `[ 34.83s]` SFX ♪ tone_doubletap
- `[ 35.48s]` VIBRATE [8]
- `[ 35.48s]` SFX ♪ tone_right
- `[ 36.13s]` VIBRATE [8]
- `[ 36.13s]` SFX ♪ tone_right
- `[ 37.17s]` VIBRATE [20]
- `[ 37.17s]` SFX ♪ input_open
- `[ 37.20s]` **GESTURE** swiperight @(195,422)
- `[ 37.56s]` VIBRATE [10]
- `[ 37.56s]` SFX ♪ tone_right
- `[ 38.22s]` **GESTURE** doubletap @(195,422)
- `[ 38.47s]` VIBRATE [20]
- `[ 38.47s]` SFX ♪ tone_doubletap
- `[ 39.12s]` **GESTURE** swiperight @(195,422)
- `[ 39.48s]` VIBRATE [10]
- `[ 39.48s]` SFX ♪ tone_right
- `[ 40.13s]` **GESTURE** swiperight @(195,422)
- `[ 40.49s]` VIBRATE [10]
- `[ 40.49s]` VIBRATE [100]
- `[ 40.49s]` SFX ♪ tone_right
- `[ 40.49s]` VOICE ▶ correct (dur 0.6370975056689342s)
- `[ 40.49s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 41.26s]` VOICE ■ correct (kill)
- `[ 41.26s]` VERDICT correct: **OK** sim=1
- 期望: 答对了!
- 听到: 答对了。
- `[ 41.57s]` VOICE ▶ round_04 (dur 1.84s)
- `[ 43.44s]` VOICE ■ round_04 (kill)
- `[ 43.44s]` VIBRATE [8]
- `[ 43.44s]` SFX ♪ tone_right
- `[ 43.44s]` VERDICT round_04: **OK** sim=1
- 期望: 第四轮,听好了。
- 听到: 第四轮听好了。
- `[ 44.07s]` VIBRATE [8]
- `[ 44.07s]` SFX ♪ tone_doubletap
- `[ 44.69s]` VIBRATE [8]
- `[ 44.69s]` SFX ♪ tone_right
- `[ 45.31s]` VIBRATE [8]
- `[ 45.31s]` SFX ♪ tone_right
- `[ 45.93s]` VIBRATE [8]
- `[ 45.93s]` SFX ♪ tone_tap
- `[ 46.95s]` VIBRATE [20]
- `[ 46.95s]` SFX ♪ input_open
- `[ 47.06s]` **GESTURE** longpress @(195,422)
- `[ 47.52s]` VIBRATE [20]
- `[ 47.52s]` VOICE ▶ status_len_mid (dur 1.68s)
- `[ 47.52s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 49.41s]` VOICE ■ status_len_mid (kill)
- `[ 49.41s]` VERDICT status_len_mid: **OK** sim=null
- 期望: null
- 听到: 这一轮不长不短。
- `[ 49.42s]` VOICE ▶ status_prog_start (dur 1.6s)
- `[ 51.01s]` VOICE ■ status_prog_start (kill)
- `[ 51.01s]` VERDICT status_prog_start: **OK** sim=null
- 期望: null
- 听到: 刚开头一个还没对。
- `[ 51.02s]` VOICE ▶ status_free2 (dur 1.6s)
- `[ 51.12s]` **GESTURE** swiperight @(195,422)
- `[ 51.48s]` VIBRATE [10]
- `[ 51.48s]` SFX ♪ tone_right
- `[ 52.13s]` **GESTURE** doubletap @(195,422)
- `[ 52.38s]` VIBRATE [20]
- `[ 52.38s]` SFX ♪ tone_doubletap
- `[ 52.62s]` VOICE ■ status_free2 (kill)
- `[ 52.62s]` VERDICT status_free2: **OK** sim=null
- 期望: null
- 听到: 免费重听,还有两次。
- `[ 53.03s]` **GESTURE** swiperight @(195,422)
- `[ 53.39s]` VIBRATE [10]
- `[ 53.39s]` SFX ♪ tone_right
- `[ 54.05s]` **GESTURE** swiperight @(195,422)
- `[ 54.41s]` VIBRATE [10]
- `[ 54.41s]` SFX ♪ tone_right
- `[ 55.06s]` **GESTURE** tap @(195,422)
- `[ 55.43s]` VIBRATE [20]
- `[ 55.43s]` VIBRATE [100]
- `[ 55.43s]` VIBRATE [15]
- `[ 55.43s]` SFX ♪ tone_tap
- `[ 55.43s]` VOICE ▶ gd_clear (dur 1.84s)
- `[ 55.43s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 57.30s]` VOICE ■ gd_clear (kill)
- `[ 57.30s]` VERDICT gd_clear: **OK** sim=0.75
- 期望: 漂亮,过了。
- 听到: 漂亮过来。
- `[ 57.31s]` VOICE ▶ chance_plus (dur 1.44s)
- `[ 58.91s]` VOICE ■ chance_plus (kill)
- `[ 58.91s]` VERDICT chance_plus: **OK** sim=0.8
- 期望: 机会加一。
- 听到: 错了机会加一。
- `[ 59.21s]` VOICE ▶ round_05 (dur 2.96s)
- `[ 61.71s]` VIBRATE [8]
- `[ 61.71s]` SFX ♪ tone_right
- `[ 62.20s]` VOICE ■ round_05 (kill)
- `[ 62.20s]` VERDICT round_05: **OK** sim=1
- 期望: 第五轮,听好了。
- 听到: 第五轮听好了。
- `[ 62.30s]` VIBRATE [8]
- `[ 62.30s]` SFX ♪ tone_doubletap
- `[ 62.90s]` VIBRATE [8]
- `[ 62.90s]` SFX ♪ tone_right
- `[ 63.50s]` VIBRATE [8]
- `[ 63.50s]` SFX ♪ tone_right
- `[ 64.09s]` VIBRATE [8]
- `[ 64.09s]` SFX ♪ tone_tap
- `[ 64.69s]` VIBRATE [8]
- `[ 64.69s]` SFX ♪ tone_left
- `[ 65.69s]` VIBRATE [20]
- `[ 65.69s]` SFX ♪ input_open
- `[ 65.76s]` **GESTURE** swipedown @(195,422)
- `[ 66.11s]` VIBRATE [10]
- `[ 66.11s]` VIBRATE [60,40,60]
- `[ 66.11s]` SFX ♪ tone_down
- `[ 66.11s]` VOICE ▶ retry_use (dur 2.64s)
- `[ 66.11s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 66.41s]` VIBRATE [30,50,30,50,30]
- `[ 68.82s]` VOICE ■ retry_use (kill)
- `[ 68.82s]` VOICE ▶ chances_out (dur 1.76s)
- `[ 68.82s]` VERDICT retry_use: **OK** sim=1
- 期望: 错了。用一次机会,再听一遍。
- 听到: 错了,用一次机会再听一遍。
- `[ 70.70s]` VOICE ■ chances_out (kill)
- `[ 70.70s]` VOICE ▶ gd_occ_dt (dur 1.68s)
- `[ 70.70s]` VERDICT chances_out: **OK** sim=1
- 期望: 重听机会用完了,小心。
- 听到: 重听机会用完了,小心。
- `[ 72.58s]` VOICE ■ gd_occ_dt (kill)
- `[ 72.58s]` VIBRATE [8]
- `[ 72.58s]` SFX ♪ tone_right
- `[ 72.58s]` VERDICT gd_occ_dt: **OK** sim=1
- 期望: 这一轮,双击是作答。
- 听到: 这一轮双击是作答。
- `[ 73.18s]` VIBRATE [8]
- `[ 73.18s]` SFX ♪ tone_doubletap
- `[ 73.78s]` VIBRATE [8]
- `[ 73.78s]` SFX ♪ tone_right
- `[ 74.37s]` VIBRATE [8]
- `[ 74.37s]` SFX ♪ tone_right
- `[ 74.97s]` VIBRATE [8]
- `[ 74.97s]` SFX ♪ tone_tap
- `[ 75.56s]` VIBRATE [8]
- `[ 75.56s]` SFX ♪ tone_left
- `[ 76.56s]` VIBRATE [20]
- `[ 76.56s]` SFX ♪ input_open
- `[ 76.61s]` **GESTURE** swipedown @(195,422)
- `[ 76.98s]` VIBRATE [10]
- `[ 76.98s]` VIBRATE [60,40,60]
- `[ 76.98s]` SFX ♪ tone_down
- `[ 77.28s]` VIBRATE [80]
- `[ 77.68s]` SFX ♪ gameover
- `[ 77.98s]` **GESTURE** swipedown @(195,422)
- `[ 78.34s]` VIBRATE [10]
- `[ 78.35s]` VOICE ▶ menu_open (dur 0.7170975056689343s)
- `[ 78.35s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 78.38s]` VOICE ■ menu_open (kill)
- `[ 78.38s]` VERDICT menu_open: **TRUNCATED** sim=0
- 期望: 菜单。
- 听到: 嗯。
- `[ 78.49s]` BGM ♪ menu (loop)
- `[ 81.25s]` **GESTURE** swipedown @(195,422)
- `[ 81.61s]` VIBRATE [10]
- `[ 81.61s]` VOICE ▶ gameover (dur 0.9570975056689343s)
- `[ 81.61s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
- `[ 82.75s]` VOICE ■ gameover (kill)
- `[ 82.75s]` VERDICT gameover: **MISMATCH** sim=0.3333
- 期望: 游戏结束。
- 听到: 有戏。
- `[ 82.76s]` VOICE ▶ score_band3 (dur 1.68s)
- `[ 84.63s]` VOICE ■ score_band3 (kill)
- `[ 84.63s]` VERDICT score_band3: **OK** sim=0.75
- 期望: 你坚持了五轮左右。
- 听到: 也坚持了5轮左右。
- `[ 84.64s]` VOICE ▶ replay (dur 2.24s)
- `[ 86.98s]` VOICE ■ replay (kill)
- `[ 86.98s]` VERDICT replay: **OK** sim=1
- 期望: 单击屏幕,再来一局。
- 听到: 单击屏幕再来一局。
- `[ 86.99s]` VOICE ▶ rules_prompt (dur 5.36s)
@@ -0,0 +1,711 @@
{
"game": "simon",
"settings": {
"voice": "female",
"guide": "full",
"speed": 1,
"bgm": 1
},
"outdir": "/home/xsl/AutoVideo/SoundGame/web/harness/live/out/simon-20260914120121",
"segs": [
{
"idx": 0,
"voiceId": "t0_welcome",
"t0": 0.502,
"t1": 1.829,
"dur": 4.24,
"expEnd": 4.742,
"truncated": true,
"reason": "kill",
"verdict": "TRUNCATED",
"heard": "欢迎来到音。",
"similarity": 0.5
},
{
"idx": 1,
"voiceId": "t_skip",
"t0": 1.835,
"t1": 4.183,
"dur": 2.24,
"expEnd": 4.075,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "一、跳过教学直接开始。",
"similarity": 0.9412
},
{
"idx": 2,
"voiceId": "round_01",
"t0": 4.183,
"t1": 5.785,
"dur": 1.52,
"expEnd": 5.703,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "第一轮听好了。",
"similarity": 1
},
{
"idx": 3,
"voiceId": "gd_occ_dt",
"t0": 7.593,
"t1": 9.476,
"dur": 1.68,
"expEnd": 9.273,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "这一轮双击是作答。",
"similarity": 1
},
{
"idx": 4,
"voiceId": "your_turn",
"t0": 9.481,
"t1": 10.242,
"dur": 0.7970975056689342,
"expEnd": 10.278,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "啊,轮到你了。",
"similarity": 0.8889
},
{
"idx": 5,
"voiceId": "retry_use",
"t0": 12.385,
"t1": 15.095,
"dur": 2.64,
"expEnd": 15.025,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "错了,用一次机会再听一遍。",
"similarity": 1
},
{
"idx": 6,
"voiceId": "chances_out",
"t0": 15.101,
"t1": 16.976,
"dur": 1.76,
"expEnd": 16.861,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "重听机会用完了,小心。",
"similarity": 1
},
{
"idx": 7,
"voiceId": "gd_occ_dt",
"t0": 16.976,
"t1": 18.856,
"dur": 1.68,
"expEnd": 18.656,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "这一轮双击是作答。",
"similarity": 1
},
{
"idx": 8,
"voiceId": "correct",
"t0": 22.635,
"t1": 23.407,
"dur": 0.6370975056689342,
"expEnd": 23.272,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "答对了。",
"similarity": 1
},
{
"idx": 9,
"voiceId": "round_02",
"t0": 23.712,
"t1": 25.311,
"dur": 1.44,
"expEnd": 25.152,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "第二轮听好了。",
"similarity": 1
},
{
"idx": 10,
"voiceId": "gd_clear",
"t0": 30.116,
"t1": 31.998,
"dur": 1.84,
"expEnd": 31.956,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "漂亮过来。",
"similarity": 0.75
},
{
"idx": 11,
"voiceId": "round_03",
"t0": 32.303,
"t1": 34.18,
"dur": 1.68,
"expEnd": 33.983,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "第三轮停好了。",
"similarity": 0.8333
},
{
"idx": 12,
"voiceId": "correct",
"t0": 40.494,
"t1": 41.262,
"dur": 0.6370975056689342,
"expEnd": 41.131,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "答对了。",
"similarity": 1
},
{
"idx": 13,
"voiceId": "round_04",
"t0": 41.569,
"t1": 43.444,
"dur": 1.84,
"expEnd": 43.409,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "第四轮听好了。",
"similarity": 1
},
{
"idx": 14,
"voiceId": "status_len_mid",
"t0": 47.523,
"t1": 49.411,
"dur": 1.68,
"expEnd": 49.102,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "这一轮不长不短。",
"similarity": null
},
{
"idx": 15,
"voiceId": "status_prog_start",
"t0": 49.419,
"t1": 51.013,
"dur": 1.6,
"expEnd": 51.019,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "刚开头一个还没对。",
"similarity": null
},
{
"idx": 16,
"voiceId": "status_free2",
"t0": 51.019,
"t1": 52.615,
"dur": 1.6,
"expEnd": 52.619,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "免费重听,还有两次。",
"similarity": null
},
{
"idx": 17,
"voiceId": "gd_clear",
"t0": 55.428,
"t1": 57.305,
"dur": 1.84,
"expEnd": 57.268,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "漂亮过来。",
"similarity": 0.75
},
{
"idx": 18,
"voiceId": "chance_plus",
"t0": 57.311,
"t1": 58.907,
"dur": 1.44,
"expEnd": 58.751,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "错了机会加一。",
"similarity": 0.8
},
{
"idx": 19,
"voiceId": "round_05",
"t0": 59.214,
"t1": 62.204,
"dur": 2.96,
"expEnd": 62.174,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "第五轮听好了。",
"similarity": 1
},
{
"idx": 20,
"voiceId": "retry_use",
"t0": 66.11,
"t1": 68.821,
"dur": 2.64,
"expEnd": 68.75,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "错了,用一次机会再听一遍。",
"similarity": 1
},
{
"idx": 21,
"voiceId": "chances_out",
"t0": 68.821,
"t1": 70.702,
"dur": 1.76,
"expEnd": 70.581,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "重听机会用完了,小心。",
"similarity": 1
},
{
"idx": 22,
"voiceId": "gd_occ_dt",
"t0": 70.702,
"t1": 72.583,
"dur": 1.68,
"expEnd": 72.382,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "这一轮双击是作答。",
"similarity": 1
},
{
"idx": 23,
"voiceId": "menu_open",
"t0": 78.35,
"t1": 78.376,
"dur": 0.7170975056689343,
"expEnd": 79.067,
"truncated": true,
"reason": "kill",
"verdict": "TRUNCATED",
"heard": "嗯。",
"similarity": 0
},
{
"idx": 24,
"voiceId": "gameover",
"t0": 81.614,
"t1": 82.752,
"dur": 0.9570975056689343,
"expEnd": 82.571,
"truncated": false,
"reason": "kill",
"verdict": "MISMATCH",
"heard": "有戏。",
"similarity": 0.3333
},
{
"idx": 25,
"voiceId": "score_band3",
"t0": 82.758,
"t1": 84.633,
"dur": 1.68,
"expEnd": 84.438,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "也坚持了5轮左右。",
"similarity": 0.75
},
{
"idx": 26,
"voiceId": "replay",
"t0": 84.64,
"t1": 86.978,
"dur": 2.24,
"expEnd": 86.88,
"truncated": false,
"reason": "kill",
"verdict": "OK",
"heard": "单击屏幕再来一局。",
"similarity": 1
},
{
"idx": 27,
"voiceId": "rules_prompt",
"t0": 86.988,
"t1": 88.261,
"dur": 5.36,
"expEnd": 92.348,
"truncated": true,
"reason": "session-end",
"verdict": null,
"heard": null,
"similarity": null
}
],
"rows": [
{
"t0": 0.502,
"t1": 1.829,
"voiceId": "t0_welcome",
"expected": "欢迎来到音序回响。先认识六种声音。",
"heard": "欢迎来到音。",
"similarity": 0.5,
"verdict": "TRUNCATED"
},
{
"t0": 1.835,
"t1": 4.183,
"voiceId": "t_skip",
"expected": "跳过教学,直接开始。",
"heard": "一、跳过教学直接开始。",
"similarity": 0.9412,
"verdict": "OK"
},
{
"t0": 4.183,
"t1": 5.785,
"voiceId": "round_01",
"expected": "第一轮,听好了。",
"heard": "第一轮听好了。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 7.593,
"t1": 9.476,
"voiceId": "gd_occ_dt",
"expected": "这一轮,双击是作答。",
"heard": "这一轮双击是作答。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 9.481,
"t1": 10.242,
"voiceId": "your_turn",
"expected": "轮到你了。",
"heard": "啊,轮到你了。",
"similarity": 0.8889,
"verdict": "OK"
},
{
"t0": 12.385,
"t1": 15.095,
"voiceId": "retry_use",
"expected": "错了。用一次机会,再听一遍。",
"heard": "错了,用一次机会再听一遍。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 15.101,
"t1": 16.976,
"voiceId": "chances_out",
"expected": "重听机会用完了,小心。",
"heard": "重听机会用完了,小心。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 16.976,
"t1": 18.856,
"voiceId": "gd_occ_dt",
"expected": "这一轮,双击是作答。",
"heard": "这一轮双击是作答。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 22.635,
"t1": 23.407,
"voiceId": "correct",
"expected": "答对了!",
"heard": "答对了。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 23.712,
"t1": 25.311,
"voiceId": "round_02",
"expected": "第二轮,听好了。",
"heard": "第二轮听好了。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 30.116,
"t1": 31.998,
"voiceId": "gd_clear",
"expected": "漂亮,过了。",
"heard": "漂亮过来。",
"similarity": 0.75,
"verdict": "OK"
},
{
"t0": 32.303,
"t1": 34.18,
"voiceId": "round_03",
"expected": "第三轮,听好了。",
"heard": "第三轮停好了。",
"similarity": 0.8333,
"verdict": "OK"
},
{
"t0": 40.494,
"t1": 41.262,
"voiceId": "correct",
"expected": "答对了!",
"heard": "答对了。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 41.569,
"t1": 43.444,
"voiceId": "round_04",
"expected": "第四轮,听好了。",
"heard": "第四轮听好了。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 47.523,
"t1": 49.411,
"voiceId": "status_len_mid",
"expected": null,
"heard": "这一轮不长不短。",
"similarity": null,
"verdict": "OK"
},
{
"t0": 49.419,
"t1": 51.013,
"voiceId": "status_prog_start",
"expected": null,
"heard": "刚开头一个还没对。",
"similarity": null,
"verdict": "OK"
},
{
"t0": 51.019,
"t1": 52.615,
"voiceId": "status_free2",
"expected": null,
"heard": "免费重听,还有两次。",
"similarity": null,
"verdict": "OK"
},
{
"t0": 55.428,
"t1": 57.305,
"voiceId": "gd_clear",
"expected": "漂亮,过了。",
"heard": "漂亮过来。",
"similarity": 0.75,
"verdict": "OK"
},
{
"t0": 57.311,
"t1": 58.907,
"voiceId": "chance_plus",
"expected": "机会加一。",
"heard": "错了机会加一。",
"similarity": 0.8,
"verdict": "OK"
},
{
"t0": 59.214,
"t1": 62.204,
"voiceId": "round_05",
"expected": "第五轮,听好了。",
"heard": "第五轮听好了。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 66.11,
"t1": 68.821,
"voiceId": "retry_use",
"expected": "错了。用一次机会,再听一遍。",
"heard": "错了,用一次机会再听一遍。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 68.821,
"t1": 70.702,
"voiceId": "chances_out",
"expected": "重听机会用完了,小心。",
"heard": "重听机会用完了,小心。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 70.702,
"t1": 72.583,
"voiceId": "gd_occ_dt",
"expected": "这一轮,双击是作答。",
"heard": "这一轮双击是作答。",
"similarity": 1,
"verdict": "OK"
},
{
"t0": 78.35,
"t1": 78.376,
"voiceId": "menu_open",
"expected": "菜单。",
"heard": "嗯。",
"similarity": 0,
"verdict": "TRUNCATED"
},
{
"t0": 81.614,
"t1": 82.752,
"voiceId": "gameover",
"expected": "游戏结束。",
"heard": "有戏。",
"similarity": 0.3333,
"verdict": "MISMATCH"
},
{
"t0": 5.785,
"t1": 7.593,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 10.242,
"t1": 12.385,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 18.856,
"t1": 22.635,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 25.311,
"t1": 30.116,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 34.18,
"t1": 40.494,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 43.444,
"t1": 47.523,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 52.615,
"t1": 55.428,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 62.204,
"t1": 66.11,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 72.583,
"t1": 78.35,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 78.376,
"t1": 81.614,
"voiceId": null,
"expected": null,
"heard": "",
"similarity": null,
"verdict": "SFX_BGM_ONLY"
},
{
"t0": 82.758,
"t1": 84.633,
"voiceId": "score_band3",
"expected": "你坚持了五轮左右。",
"heard": "也坚持了5轮左右。",
"similarity": 0.75,
"verdict": "OK"
},
{
"t0": 84.64,
"t1": 86.978,
"voiceId": "replay",
"expected": "单击屏幕,再来一局。",
"heard": "单击屏幕再来一局。",
"similarity": 1,
"verdict": "OK"
}
]
}
+41
View File
@@ -0,0 +1,41 @@
# P1 视障资深玩家复审:《音序回响》(simon polish 修复验证轮 R2)
> 复审依据:research/simon-polish/round2/live-V-transcript.md(核对局,14/14 断言)+
> live-P-transcript.md(压力局,8/8 断言)。对照 round1 评审(../round1/p1-blind.md)
> 的失聪点逐条复听。ASR 非 OK 行全部归因玩家自裁(跳旁白截断/短句同音近失),无游戏自残。
### 音序回响
- 状态感知:4/5 —— round1 的两个失聪区都补上了。**①输入开放窗口**:input_open
柔铃现在在 every 边界准点响(V 行 40/70/96/135/171/236/271,含复活重播 70),
而且实测它严格落在占用预告语音结束之后——第 1 轮 your_turn 念完(V 行 36)才有
开放铃(V 行 40),我再不会被吞手势了。**②账目**:长按查询三句链实测兑现
(V 行 174-193:status_len_mid「这一轮不长不短」→ status_prog_start →
status_free2,VERDICT 全 OK),长度档与真实序列长度一致、进度档与 inputIdx
一致、账目档与免费余量一致——归因真话过关。扣 1 分:查询键无教学提示,发现式
辅助对新手仍是隐藏功能(可接受,旁白只承诺"记不住就向上滑")。
- 下一步明确性:5/5 —— 播报期误触现在有 error 震(V 行 116/119、P 行 41-47),
"现在不用按"有了触觉落点;playback 维持静默豁免的负例也实测锁定(P 播放中乱按
零 error 震)。结算链阶段看守兑现(V 行 277-298:78.35s 进菜单 → 菜单内 3 秒
只有 BGM 没有结算句 → 81.25s 关菜单 → 81.61s 结算链从头补播,承诺「单击屏幕,
再来一局」(V 行 86.99)这次是在结算屏上播的)。
- 愿意继续玩:是 —— 现在每一步都有听觉落点,记忆挑战的纯度没被破坏(每轮只多
一声 0.38s 的铃)。
- P0 问题:无(round1 的 S6 已闭环,压力路径复测通过:P 行 173-195)。
- 建议(≤3 条,按影响排序):
1. 查询键值得一句教学提示或开局 hint——发现式对全听觉玩家意味着"可能永远发现
不了"(P2 瑕疵,不阻塞)。
2. status_out「答错就结束」语气可再温和一档(P4 已表示可接受,记录备查)。
3. 无。
#### 听觉惯例符合度(逐条核对)
- 语音可打断/重听:过。跳句机制未变;S6 的 stopVoice 抢占是结算链内部替换,
不产生半句残片(V 行 78.35-81.61 菜单窗口无半截语音)。
- 等待有无声:过。结算屏死寂 8.4s 已消除(菜单内只有 BGM,回结算屏即补播)。
- 失败可归因:过。被吞手势有双保险:input_open 边界铃 + announce/roundend
error 震。
- 菜单列表导航规整:过。菜单只播菜单语义,结算链不再越界(V 行 277-298)。
- 提示永不逐字重复:过。your_turn 每局一遍实测(V 行 35-37,复活重播未重念)。
- 账目真实:过。查询三档与内部状态逐项核对一致(V 行 174-193)。
- 语速上限/长按快进:过(P 局 1.7 档整句无截断,gd_occ_dt 截断归因乱按)。
- status key:**从缺席到过**(长按=查询,键盘按住空格同享 00 §5.5 通道)。
- 双击确认(菜单约定):过(P 局菜单双击未变)。
@@ -0,0 +1,29 @@
# P2 时间充裕的大学生复审:《音序回响》(simon polish 修复验证轮 R2)
> 复审依据:live-V-transcript.md + live-P-transcript.md,对照 round1 评审逐条复核。
### 音序回响
- 状态感知:4/5 —— 跳播报依然是我的合法操作,但现在**跳完不再失明**:每轮答题
窗口有 input_open 铃(V 行 40/135/171),听铃即知"能答了";忘了自己答到哪就
长按一下,「这一轮不长不短。刚开头,一个还没对。免费重听还有两次。」(V 行
174-193)三秒解决。扣 1 分:轮次数字本身在跳播报后仍不可查(查询给的是长度档
不是"第 N 轮")——对记忆力是合理代偿,对"打到第几轮了"的成就感略打折。
- 下一步明确性:5/5 —— 播报期抢跑有 error 震(V 行 116/119);死亡瞬间下滑进
菜单这条 round1 的 P0 链路实测闭环(V 行 277-298:进菜单只有 BGM → 关菜单
结算链从头播 → 「单击屏幕,再来一局」在正确的相位上说)。
- 愿意继续玩:**是(改口)** —— 上版本"死的一瞬间手还在屏幕上"把我卖了,现在
同一手型(P 局 32.65s 死亡 → 32.92s 下滑进菜单 → 36.18s 关菜单后结算链补播,
P 行 173-195)得到的是完整结算体验,8.4 秒死寂没了。单局结束再来一局的冲动
保住了。
- P0 问题:无。
- 建议(≤3 条,按影响排序):
1. 查询里加一轮次档("第十轮左右"式分档),把成就感补全。
2. input_open 与 turn earcon 的音色家族可以再拉开一点(现在一个铃一个风铃,
full 档连续听感略近)——吹毛求疵级。
3. 无。
#### 我的特别检查项核对
- 开头多少秒能动手:过(教学未动,11s 首出手节奏不变)。
- 保送首胜:过(第 1 轮 2 音 + 复活 + 免费重听两层账,查询可查证)。
- 结算是否想让人再来一局:过(S6 闭环 + 补播链完整,V 行 277-298)。
- 单局长度/节奏:过(速度曲线未动,700→420ms 逐轮收紧的紧张感原样)。
+27
View File
@@ -0,0 +1,27 @@
# P3 时间紧张的白领复审:《音序回响》(simon polish 修复验证轮 R2)
> 复审依据:live-V-transcript.md + live-P-transcript.md,对照 round1 评审逐条复核。
### 音序回响
- 状态感知:4/5 —— 中断恢复这件 round1 的死症现在有解:地铁到站停手 20 秒回来,
长按一下即知"这一轮多长、答到哪、还能重听几次"(V 行 174-193 实测三档全对)。
轮次边界铃(input_open)让我不用盯着 confirm 震猜相位。扣 1 分:占用轮里
"这轮怎么重听"依旧无解(上滑被占时不给替代键,这是 H2 既有裁定的代价,查询
也不报"这轮上滑是答案"——实际上听到序列里有上行音自己就该知道,可接受)。
- 下一步明确性:5/5 —— 播报期误触有 error 震(V 行 116/119),抢跑不再掉进
无声洞;死亡瞬间误触菜单的 P0 链路闭环(V 行 277-298,P 行 173-195 双路径实测)。
- 愿意继续玩:是(改口)—— 25 分钟地铁现在装得下了:查询句三秒接上中断,结算
死寂消除,单局长度自控。
- P0 问题:无。
- 建议(≤3 条,按影响排序):
1. 无(round1 三条建议全部落地)。
2. (备查)查询句在 1.7 语速档下的用时实测可接受(P 局未触发查询,V 局正常档
三句约 3.2s)。
3. 无。
#### 我的特别检查项核对
- 关键信息听不清怎么办:过。免费重听两层账 + 查询可查证余额(V 行 185-193)。
- 中断恢复:**从不过到过**(长按查询 = 一句话接上)。
- 单局长度:过(结算到下一局的间隔不再被菜单死寂拉长)。
- 有无沉默尴尬期:过(round1 的 8.4s 死寂消除,菜单内 BGM 填充、回结算屏即补播)。
- 单手盲操:过(长按查询单手自然)。
+29
View File
@@ -0,0 +1,29 @@
# P4 疲惫的工人复审:《音序回响》(simon polish 修复验证轮 R2)
> 复审依据:live-V-transcript.md + live-P-transcript.md,对照 round1 评审逐条复核。
### 音序回响
- 状态感知:4/5 —— "按了没反应"这个老毛病有两层兜底了:播报期乱按会震我一下
告诉我"现在不用按"(V 行 116/119、P 行 41-47 实测),答题窗口开了有铃(V 行
40/135)。按住屏幕能问"这一轮还有几个音、还能重听几次"(V 行 174-193),话
不长,一两句,正合我的意。扣 1 分:查询要长按 450ms,我这种手慢的有时按成了
连点——连点是跳旁白,答题阶段没旁白可跳就等于没反应( teaching 里学过"单击
可跳过旁白",我不会怪游戏,但第一次没查成会愣一下)。
- 下一步明确性:5/5 —— 死的时候习惯性一滑进菜单,这次它没在菜单里骗我:
菜单里安安静静(V 行 278-281),滑回去它才从头讲"游戏结束…你坚持了五轮左右…
单击屏幕,再来一局"(V 行 281-298),我单击就真的开了新局。它让我单击我就
能单击——这话现在算数了。
- 愿意继续玩:是 —— 答对还是每句都夸我,错了也不骂我,现在连"我按了算不算数"
都清楚了。
- P0 问题:无。
- 建议(≤3 条,按影响排序):
1. 无(round1 三条建议全部落地)。
2. (备查)教学 gd_economy 里可加半句"按住屏幕问状态"—— discovery 对我不太
友好,但菜单上滑能听规则,规则句以后可以提一嘴(P2 瑕疵,不阻塞)。
3. 无。
#### 我的特别检查项核对
- 教学语速与句长:过(教学未动,逐句教-练保留)。
- 容错:过(两层账 + 查询可查证 + 复活链完整,P 局 retry_use VERDICT OK sim=1)。
- 反馈即时温暖:过(表扬句未动;被吞手势的 error 震不凶,两短震刚好)。
- 有无 pressure:过(查询不耗账、无倒计时,看门狗 5 秒才轻提醒一次)。
+283
View File
@@ -0,0 +1,283 @@
# 试玩转写:《simon》
> 本文件是「玩家感知日志」:一位新手玩家的整局体验转写。语音列出了玩家听到的每句话全文,
> 音效/BGM/震动按发生时间列出。「静默」段 = 玩家什么也听不到。手势是剧本注入的(模拟真人手部动作),
> 非最优操作:包含犹豫、误操作与乱试。语音时长按语速估算(±20%),仅供节奏参考。
t+ 0.0s (玩家点开游戏,轻触屏幕开始)
t+ 0.5s ▶ 语音:「欢迎来到音序回响。先认识六种声音。」
t+ 2.6s ▶ 语音:「单击可跳过旁白。」
t+ 4.7s ▶ 语音:「我会演奏一串声音,请你记住顺序,原样复现。」
t+ 6.9s ▶ 语音:「向上滑,是这个声音。」
t+ 9.0s ♪ 音效 sfx/tone_up
t+ 9.9s ▶ 语音:「你试试。」
t+ 11.4s 【状态】教学第 1/6 个音色 教学:该做「上滑」了(语音播放中,语速1)
t+ 11.4s ♪ 音效 sfx/tone_up
t+ 11.4s ▶ 语音:「对了。」
t+ 13.5s ▶ 语音:「向下滑,是这个声音。」
t+ 15.6s ♪ 音效 sfx/tone_down
t+ 16.5s ▶ 语音:「你试试。」
t+ 18.6s 【状态】教学第 2/6 个音色 教学:该做「下滑」了(无 BGM,语速1)
t+ 18.6s ♪ 音效 sfx/tone_down
t+ 18.6s ▶ 语音:「对了。」
t+ 20.8s ▶ 语音:「向左滑,是这个声音。」
t+ 22.9s ♪ 音效 sfx/tone_left
t+ 23.8s ▶ 语音:「你试试。」
t+ 25.9s 【状态】教学第 3/6 个音色 教学:该做「左滑」了(无 BGM,语速1)
#### 【玩家动作】把「左滑」记混了,先来了个右滑
t+ 25.9s ▶ 语音:「不是这个,向左滑试试。」
t+ 25.9s 〰 震动:error(做错了:两连短震)
t+ 25.9s ♪ 音效 sfx/tone_left
t+ 25.9s ▶ 语音:「对了。」
t+ 28.0s ▶ 语音:「向右滑,是这个声音。」
t+ 30.1s ♪ 音效 sfx/tone_right
t+ 31.0s ▶ 语音:「你试试。」
t+ 33.2s 【状态】教学第 4/6 个音色 教学:该做「右滑」了(无 BGM,语速1)
t+ 33.2s ♪ 音效 sfx/tone_right
t+ 33.2s ▶ 语音:「对了。」
t+ 35.3s ▶ 语音:「单击,是这个声音。」
t+ 37.4s ♪ 音效 sfx/tone_tap
t+ 38.3s ▶ 语音:「你试试。」
t+ 40.4s 【状态】教学第 5/6 个音色 教学:该做「单击」了(无 BGM,语速1)
t+ 40.4s ♪ 音效 sfx/tone_tap
t+ 40.4s ▶ 语音:「对了。」
t+ 42.5s ▶ 语音:「双击,是这个声音。」
t+ 44.7s ♪ 音效 sfx/tone_doubletap
t+ 45.6s ▶ 语音:「你试试。」
t+ 47.7s 【状态】教学第 6/6 个音色 教学:该做「双击」了(无 BGM,语速1)
t+ 47.7s ♪ 音效 sfx/tone_doubletap
t+ 47.7s ▶ 语音:「对了。」
t+ 49.8s ▶ 语音:「六种声音都记住了。后面的序列,会越来越长。」
t+ 51.9s ▶ 语音:「答错可以消耗机会重听。向上滑,可以随时重听。」
t+ 54.0s ▶ 向导语音:「记不住就向上滑,重新听一遍。免费机会有两次,用完要扣一次机会。」
t+ 56.2s ▶ 语音:「第一轮,听好了。」
t+ 56.2s 【状态】教学讲完了:免费重听两次、用完扣机会,想重听就向上滑 第 1 轮报数呢,听好了(语音播放中,语速1)
t+ 58.3s ♪ 音效 sfx/tone_up
t+ 58.3s 〰 震动:beat(节拍点)
t+ 59.0s ♪ 音效 sfx/tone_tap
t+ 59.0s 〰 震动:beat(节拍点)
t+ 60.1s ♪ 向导音:turn(轮到你)
t+ 60.1s ▶ 向导语音:「这一轮,向上滑是作答。」
t+ 60.1s 〰 震动:confirm(轻点确认)
t+ 62.2s ▶ 语音:「轮到你了。」
t+ 64.3s ♪ 音效 sfx/input_open
t+ 64.3s 【状态】序列一播完就听到「这一轮,向上滑是作答」——重听键这轮被占了 第 1 轮轮到你了:已对上 0/2,照原顺序做手势(这轮上滑是作答,占用了)(要重听就向上滑)(无 BGM,语速1)
t+ 64.3s ……… 静默 5s(第一轮先不动手,看看它催不催) ………
t+ 69.3s ♪ 向导音:nudge(看门狗轻提醒)
t+ 69.3s ♪ 向导音:watchdog(看门狗升级)
t+ 89.3s ♪ 向导音:nudge(看门狗轻提醒)
t+ 89.3s ♪ 向导音:watchdog(看门狗升级)
t+ 89.3s ♪ 向导音:turn(轮到你)
t+ 89.3s 〰 震动:confirm(轻点确认)
#### 【玩家动作】5 秒一声轻提醒、25 秒又一声加确认震——两级提醒都没建议「向上滑重听」,它知道这轮上滑是作答
t+ 89.3s 【状态】先来一发上滑——期望恰为 up 时上滑就是作答 第 1 轮轮到你了:已对上 0/2,照原顺序做手势(这轮上滑是作答,占用了)(要重听就向上滑)(无 BGM,语速1)
t+ 89.3s ♪ 音效 sfx/tone_up
t+ 89.3s ♪ 音效 sfx/tone_tap
t+ 89.3s ▶ 语音:「答对了!」
t+ 89.3s 〰 震动:success(成功长震)
t+ 91.7s ▶ 语音:「第二轮,听好了。」
t+ 93.9s ♪ 音效 sfx/tone_down
t+ 93.9s 〰 震动:beat(节拍点)
t+ 94.5s ♪ 音效 sfx/tone_doubletap
t+ 94.5s 〰 震动:beat(节拍点)
t+ 95.2s ♪ 音效 sfx/tone_left
t+ 95.2s 〰 震动:beat(节拍点)
t+ 96.3s ♪ 向导音:turn(轮到你)
t+ 96.3s ▶ 向导语音:「这一轮,双击是作答。」
t+ 96.3s 〰 震动:confirm(轻点确认)
t+ 98.4s ♪ 音效 sfx/input_open
t+ 98.4s 【状态】这轮预告的是「双击是作答」 第 2 轮轮到你了:已对上 0/3,照原顺序做手势(这轮双击是作答,占用了)(要重听就向上滑)(无 BGM,语速1)
t+ 98.4s ♪ 音效 sfx/tone_down
t+ 98.4s ♪ 音效 sfx/tone_doubletap
t+ 98.4s ♪ 音效 sfx/tone_left
t+ 98.4s ▶ 向导语音:「漂亮,过了。」
t+ 98.4s 〰 震动:success(成功长震)
t+ 100.8s ▶ 语音:「第三轮,听好了。」
t+ 102.9s ♪ 音效 sfx/tone_down
t+ 102.9s 〰 震动:beat(节拍点)
t+ 103.6s ♪ 音效 sfx/tone_right
t+ 103.6s 〰 震动:beat(节拍点)
t+ 104.2s ♪ 音效 sfx/tone_tap
t+ 104.9s ♪ 音效 sfx/tone_left
t+ 104.2s 〰 震动:beat(节拍点)
t+ 104.9s 〰 震动:beat(节拍点)
t+ 105.9s ♪ 音效 sfx/input_open
t+ 105.9s 〰 震动:confirm(轻点确认)
t+ 105.9s 【状态】这轮开场没有占用预告——上滑还能当重听键用 第 3 轮轮到你了:已对上 0/4,照原顺序做手势(要重听就向上滑)(无 BGM,语速1)
t+ 105.9s ♪ 音效 sfx/tone_down
t+ 105.9s ♪ 音效 sfx/tone_right
t+ 105.9s ♪ 音效 sfx/tone_tap
t+ 105.9s ♪ 音效 sfx/tone_left
t+ 105.9s ▶ 语音:「答对了!」
t+ 105.9s 〰 震动:success(成功长震)
t+ 108.4s ▶ 语音:「第四轮,听好了。」
t+ 110.5s ♪ 音效 sfx/tone_down
t+ 110.5s 〰 震动:beat(节拍点)
t+ 111.1s ♪ 音效 sfx/tone_right
t+ 111.7s ♪ 音效 sfx/tone_tap
t+ 111.1s 〰 震动:beat(节拍点)
t+ 111.7s 〰 震动:beat(节拍点)
t+ 112.3s ♪ 音效 sfx/tone_left
t+ 112.3s 〰 震动:beat(节拍点)
t+ 113.0s ♪ 音效 sfx/tone_down
t+ 113.0s 〰 震动:beat(节拍点)
t+ 114.0s ♪ 音效 sfx/input_open
t+ 114.0s 〰 震动:confirm(轻点确认)
t+ 114.0s 【状态】机会加一之后,免费重听真的有两次了 第 4 轮轮到你了:已对上 0/5,照原顺序做手势(要重听就向上滑)(无 BGM,语速1)
t+ 114.0s ♪ 音效 sfx/tone_down
t+ 114.0s ♪ 音效 sfx/tone_right
t+ 114.0s ♪ 音效 sfx/tone_tap
t+ 114.0s ♪ 音效 sfx/tone_left
t+ 114.0s ♪ 音效 sfx/tone_down
t+ 114.0s ▶ 向导语音:「漂亮,过了。」
t+ 114.0s 〰 震动:success(成功长震)
t+ 114.0s 〰 震动:pickup(获得)
t+ 116.1s ▶ 语音:「机会加一。」
t+ 118.5s ▶ 语音:「第五轮,听好了。」
t+ 120.6s ♪ 音效 sfx/tone_down
t+ 120.6s 〰 震动:beat(节拍点)
t+ 121.2s ♪ 音效 sfx/tone_right
t+ 121.8s ♪ 音效 sfx/tone_tap
t+ 121.2s 〰 震动:beat(节拍点)
t+ 121.8s 〰 震动:beat(节拍点)
t+ 122.4s ♪ 音效 sfx/tone_left
t+ 122.4s 〰 震动:beat(节拍点)
t+ 123.0s ♪ 音效 sfx/tone_down
t+ 123.6s ♪ 音效 sfx/tone_right
t+ 123.0s 〰 震动:beat(节拍点)
t+ 123.6s 〰 震动:beat(节拍点)
t+ 124.6s ♪ 音效 sfx/input_open
t+ 124.6s 〰 震动:confirm(轻点确认)
t+ 124.6s 【状态】第 5 轮序列有点长,先不动手 第 5 轮轮到你了:已对上 0/6,照原顺序做手势(要重听就向上滑)(无 BGM,语速1)
t+ 124.6s ……… 静默 5s(想不起来序列了) ………
t+ 129.6s ♪ 向导音:nudge(看门狗轻提醒)
t+ 129.6s ▶ 向导语音:「需要的话,向上滑可以重新听一遍序列。」
t+ 129.6s 【状态】5 秒就来了提示:需要的话,向上滑可以重新听一遍序列 第 5 轮轮到你了:已对上 0/6,照原顺序做手势(要重听就向上滑)(语音播放中,语速1)
#### 【玩家动作】照提示向上滑——第 1 次免费重听用掉,跟着听到「免费重听还剩一次」
t+ 129.6s ▶ 语音:「再听一遍。」
t+ 129.6s 〰 震动:pickup(获得)
t+ 131.7s ▶ 向导语音:「免费重听还剩一次。」
t+ 133.9s ♪ 音效 sfx/tone_down
t+ 133.9s 〰 震动:beat(节拍点)
t+ 134.5s ♪ 音效 sfx/tone_right
t+ 134.5s 〰 震动:beat(节拍点)
t+ 135.1s ♪ 音效 sfx/tone_tap
t+ 135.6s ♪ 音效 sfx/tone_left
t+ 135.1s 〰 震动:beat(节拍点)
t+ 135.6s 〰 震动:beat(节拍点)
t+ 136.2s ♪ 音效 sfx/tone_down
t+ 136.8s ♪ 音效 sfx/tone_right
t+ 136.2s 〰 震动:beat(节拍点)
t+ 136.8s 〰 震动:beat(节拍点)
t+ 137.8s ♪ 音效 sfx/input_open
t+ 137.8s 〰 震动:confirm(轻点确认)
t+ 137.8s ♪ 音效 sfx/tone_down
t+ 137.8s ♪ 音效 sfx/tone_right
t+ 137.8s ♪ 音效 sfx/tone_tap
t+ 137.8s ♪ 音效 sfx/tone_left
t+ 137.8s ♪ 音效 sfx/tone_down
t+ 137.8s ♪ 音效 sfx/tone_right
t+ 137.8s ▶ 语音:「答对了!」
t+ 137.8s 〰 震动:success(成功长震)
t+ 140.3s ▶ 语音:「第六轮,听好了。」
t+ 142.4s ♪ 音效 sfx/tone_up
t+ 142.9s ♪ 音效 sfx/tone_doubletap
t+ 142.4s 〰 震动:beat(节拍点)
t+ 142.9s 〰 震动:beat(节拍点)
t+ 143.5s ♪ 音效 sfx/tone_tap
t+ 143.5s 〰 震动:beat(节拍点)
t+ 144.1s ♪ 音效 sfx/tone_left
t+ 144.7s ♪ 音效 sfx/tone_down
t+ 144.1s 〰 震动:beat(节拍点)
t+ 144.7s 〰 震动:beat(节拍点)
t+ 145.2s ♪ 音效 sfx/tone_right
t+ 145.8s ♪ 音效 sfx/tone_tap
t+ 145.2s 〰 震动:beat(节拍点)
t+ 145.8s 〰 震动:beat(节拍点)
t+ 146.8s ♪ 向导音:turn(轮到你)
t+ 146.8s ▶ 向导语音:「这一轮,向上滑和双击都是作答。」
t+ 146.8s 〰 震动:confirm(轻点确认)
t+ 148.9s ♪ 音效 sfx/input_open
t+ 148.9s 【状态】这轮说「向上滑和双击都是作答」——两个键都被占用了 第 6 轮轮到你了:已对上 0/7,照原顺序做手势(这轮上滑和双击是作答,占用了)(要重听就向上滑)(无 BGM,语速1)
t+ 148.9s ……… 静默 5s(轮到我了,先心里过一遍序列) ………
t+ 153.9s ♪ 向导音:nudge(看门狗轻提醒)
t+ 153.9s ♪ 向导音:watchdog(看门狗升级)
t+ 173.9s ♪ 向导音:nudge(看门狗轻提醒)
t+ 173.9s ♪ 向导音:watchdog(看门狗升级)
t+ 173.9s ♪ 向导音:turn(轮到你)
t+ 173.9s 〰 震动:confirm(轻点确认)
#### 【玩家动作】又是两级提醒都没有重听建议——占用轮里那句建议自动闭嘴
t+ 173.9s ♪ 音效 sfx/tone_up
t+ 173.9s ♪ 音效 sfx/tone_doubletap
t+ 173.9s ♪ 音效 sfx/tone_tap
t+ 173.9s ♪ 音效 sfx/tone_left
t+ 173.9s ♪ 音效 sfx/tone_down
t+ 173.9s ♪ 音效 sfx/tone_right
t+ 173.9s ♪ 音效 sfx/tone_tap
t+ 173.9s ▶ 向导语音:「漂亮,过了。」
t+ 173.9s 〰 震动:success(成功长震)
t+ 176.3s ▶ 语音:「第七轮,听好了。」
t+ 178.4s ♪ 音效 sfx/tone_down
t+ 178.4s 〰 震动:beat(节拍点)
t+ 179.0s ♪ 音效 sfx/tone_right
t+ 179.5s ♪ 音效 sfx/tone_tap
t+ 179.0s 〰 震动:beat(节拍点)
t+ 179.5s 〰 震动:beat(节拍点)
t+ 180.1s ♪ 音效 sfx/tone_left
t+ 180.6s ♪ 音效 sfx/tone_down
t+ 180.1s 〰 震动:beat(节拍点)
t+ 180.6s 〰 震动:beat(节拍点)
t+ 181.1s ♪ 音效 sfx/tone_right
t+ 181.7s ♪ 音效 sfx/tone_tap
t+ 181.1s 〰 震动:beat(节拍点)
t+ 181.7s 〰 震动:beat(节拍点)
t+ 182.2s ♪ 音效 sfx/tone_left
t+ 182.2s 〰 震动:beat(节拍点)
t+ 183.2s ♪ 音效 sfx/input_open
t+ 183.2s 〰 震动:confirm(轻点确认)
t+ 183.2s ……… 静默 5s(长序列,又想不起来了) ………
t+ 188.2s ♪ 向导音:nudge(看门狗轻提醒)
t+ 188.2s ▶ 向导语音:「需要的话,向上滑可以重新听一遍序列。」
t+ 188.2s 【状态】又是那句提示:向上滑可以重新听一遍序列 第 7 轮轮到你了:已对上 0/8,照原顺序做手势(要重听就向上滑)(语音播放中,语速1)
#### 【玩家动作】向上滑——第 2 次免费重听用掉,这回听到「免费重听用完了。之后重听会花一次机会」
t+ 188.2s ▶ 语音:「再听一遍。」
t+ 188.2s 〰 震动:pickup(获得)
t+ 190.3s ▶ 向导语音:「免费重听用完了。之后重听会花一次机会,别怕,慢慢来。」
t+ 192.4s ♪ 音效 sfx/tone_down
t+ 192.4s 〰 震动:beat(节拍点)
t+ 193.0s ♪ 音效 sfx/tone_right
t+ 193.5s ♪ 音效 sfx/tone_tap
t+ 193.0s 〰 震动:beat(节拍点)
t+ 193.5s 〰 震动:beat(节拍点)
t+ 194.1s ♪ 音效 sfx/tone_left
t+ 194.6s ♪ 音效 sfx/tone_down
t+ 194.1s 〰 震动:beat(节拍点)
t+ 194.6s 〰 震动:beat(节拍点)
t+ 195.1s ♪ 音效 sfx/tone_right
t+ 195.7s ♪ 音效 sfx/tone_tap
t+ 195.1s 〰 震动:beat(节拍点)
t+ 195.7s 〰 震动:beat(节拍点)
t+ 196.2s ♪ 音效 sfx/tone_left
t+ 196.2s 〰 震动:beat(节拍点)
t+ 197.2s ♪ 音效 sfx/input_open
t+ 197.2s 〰 震动:confirm(轻点确认)
t+ 197.2s ♪ 音效 sfx/tone_down
t+ 197.2s ♪ 音效 sfx/tone_right
t+ 197.2s ♪ 音效 sfx/tone_tap
t+ 197.2s ♪ 音效 sfx/tone_left
t+ 197.2s ♪ 音效 sfx/tone_down
t+ 197.2s ♪ 音效 sfx/tone_right
t+ 197.2s ♪ 音效 sfx/tone_tap
t+ 197.2s ♪ 音效 sfx/tone_left
t+ 197.2s ▶ 语音:「答对了!」
t+ 197.2s 〰 震动:success(成功长震)
t+ 197.2s 【状态】收工:打完 7 轮在轮边界停手(免费重听剩 2 次,账目和播的对上了) 刚答完一轮,播报中(语音播放中,语速1)
+155
View File
@@ -0,0 +1,155 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""《音序回响》程序合成音效(simon polish round2,research/simon-polish/round1 取证 S2)。
新增 1 件(落 web/simon/audio/sfx/):
input_open 「答题窗口开放」标记音:sfx/input_open。confirm 震只标记"播放完毕",
占用预告/your_turn 语音链之后才真开放(_toInput);此前玩家作答被静默
吞(live-A 行 108-115)。该音为游戏层资产、不走向导层——guide=off /
iOS(无震动,00 §2.5)下仍有听觉边界。与 6 个手势音色(弹拨/琶音/底鼓/
木琴双响)及向导 turn earcon(1318.5Hz 单音)错开:双音上行柔铃。
one-shot QC(同 gen_space_syn.py 标准):去直流 + 首尾 8ms cos² + 真峰值 ≤-3dBFS
(编码后 ebur128 实测,超限自动降档重编)+ 编码后解码回读频谱。
用法:.venv-tts/bin/python tools/gen_simon_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_simon_syn_wav")
DST = os.path.join(ROOT, "web", "simon", "audio", "sfx")
os.makedirs(OUT, exist_ok=True)
os.makedirs(DST, exist_ok=True)
sr = 44100
ONE_SHOT_TP_CEIL = -3.0
SAMPLE_PEAK = 0.66
FADE_N = int(sr * 0.008)
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 bell(freq, dur, gain=1.0, shimmer=0.18):
"""柔铃单音:基频 + 弱二次泛音,快起双段缓释(同向导 earcon 包络思路)。"""
n = int(dur * sr)
t = np.arange(n) / sr
y = np.sin(2 * np.pi * freq * t) + shimmer * np.sin(2 * np.pi * freq * 2 * t)
env = np.minimum(1.0, t / 0.008)
env *= np.where(t < dur * 0.4,
np.exp(-t * 3.0),
np.exp(-dur * 0.4 * 3.0) * np.exp(-(t - dur * 0.4) * 9.0))
return y * env * gain
def input_open():
"""双音上行柔铃 B5→D6(0.35s):「开放作答」。不与 tone_doubletap(同音双响)
或 turn earcon(1318.5Hz 单音)同质。"""
y = np.zeros(int(sr * 0.38))
for at, f in [(0.0, 987.77), (0.14, 1174.66)]:
seg = bell(f, 0.3, gain=0.9)
n = min(len(seg), len(y) - int(at * sr))
y[int(at * sr):int(at * sr) + n] += seg[:n]
return dc(y)
ONE_SHOTS = {
"input_open": input_open,
}
# ---------------------------------------------------------------- 编码 + 真峰值校验
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 spectral_report(base):
"""编码后解码回读:≥3kHz/≥5kHz 能量占比(同 space polish 复测口径)。"""
r = subprocess.run([FFMPEG, "-v", "error", "-i", base + ".ogg", "-f", "f32le", "-ac", "1", "-ar", "44100", "-"],
capture_output=True)
y = np.frombuffer(r.stdout, dtype=np.float32)
Y = np.abs(np.fft.rfft(y * np.hanning(len(y))))
fr = np.fft.rfftfreq(len(y), 1 / sr)
e = Y ** 2
tot = e.sum() + 1e-12
return e[fr >= 3000].sum() / tot * 100, e[fr >= 5000].sum() / tot * 100, fr[np.argmax(Y)] / 1000
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:
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':14s} {'dur(s)':>7s} {'TP(dBFS)':>9s} {'%>3k':>7s} {'%>5k':>7s} {'peakkHz':>8s} note")
for fid, dur, tp, note in report:
e3, e5, pk = spectral_report(os.path.join(DST, fid))
print(f"{fid:14s} {dur:7.2f} {tp:9.2f} {e3:7.1f} {e5:7.1f} {pk:8.2f} {note}")
if e5 > 15.0:
problems.append(f"{fid}: 5kHz+ 能量 {e5:.1f}% 仍偏高")
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())
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.
+105 -12
View File
@@ -40,6 +40,19 @@
* 1→0 播 gd_chances_left0,替换该路径旧「用完了」绝对句,全档位)。
* - H4 input 看门狗首级 10s→5s(升级级 25s 与次数不变;非 input 阶段不动)。
*
* round5(research/simon-polish/round1 取证 S1-S7 → round2 修复,状态透明层;玩法零改动):
* - S2:input 开放标记音 sfx/input_open——confirm 震只标记"播放完毕",占用预告/
* your_turn 语音链之后才真开放(此前作答被静默吞,live-A 行 108-115);input_open
* 在 _toInput 播、游戏层资产不走向导层(guide=off/iOS 无震动也有听觉边界)。
* 无语音链的轮次不再叠向导 turn earcon(input_open 独立作边界标记,二选一不叠响)。
* - S1/S3/S4:input 阶段长按=状态查询(_statusQuery)——长度 4 档+进度 4 档+重听
* 两账 5 档,13 句 status_* 整句预生成(禁运行时拼接);玩家主动查询,三档 guide 全可用。
* - S5:announce/roundend 阶段非单击手势给 error 震(playback 维持静默豁免,02 §4.1)。
* - S6:结算语音链阶段看守——gameover 瞬间进菜单则挂起,回结算屏补播(_deliverSettle);
* 承诺「单击屏幕,再来一局」永远只在结算屏上播(live-B 行 140-174:链在菜单里
* 播完 → 承诺是假的 + 关菜单后结算屏死寂 8.4s)。
* - S7:your_turn 每局只播一次(第 1 轮每次重播都重念,live-B 行 67/96-98)。
*
* 手势 → 音色映射:
* up 上行琶音 / down 下行低音 / left 左声道弹拨 / right 右声道弹拨 /
* tap 底鼓 / doubletap 双连响
@@ -77,6 +90,14 @@ const TEACH_BLUNT = {
right: 'voice/t_blunt_right', tap: 'voice/t_blunt_tap', doubletap: 'voice/t_blunt_double',
};
// 状态查询分档整句(round5 S1/S3/S4;游戏层资产三档 guide 全可用,全句预生成禁拼接)
const STATUS_LEN = ['voice/status_len_short', 'voice/status_len_mid',
'voice/status_len_long', 'voice/status_len_xlong']; // 2-4 / 5-8 / 9-12 / 13+ 音
const STATUS_PROG = ['voice/status_prog_start', 'voice/status_prog_early',
'voice/status_prog_half', 'voice/status_prog_late']; // 0 / ≤⅓ / ≤⅓-⅔ / 收尾
const STATUS_ECO = ['voice/status_free2', 'voice/status_free1', 'voice/status_chance2',
'voice/status_chance1', 'voice/status_out']; // 下一次重听消耗哪个桶(两账口径)
const BEST_KEY = 'soundgame.simon.best';
const AUTH_KEY = 'soundgame.auth'; // 大厅登录写入(见 web/index.html)
@@ -115,13 +136,17 @@ export class SimonGame extends Game {
this._recordSaid = false;
// P2(round1 live):占用组合预告每局每种只播首次(答错时重播,见 _wrongAnswer)
this._occAnnounced = new Set();
// round5 S7:your_turn 每局只播一次(第 1 轮复活/重听重播不再重念)
this._turnHintSaid = false;
// round5 S6:待交付结算链(gameover 瞬间进菜单时挂起,回结算屏补播)
this._settleChain = null;
}
start() {
// 预解码全部短音效与开场语音,消除首次播放延迟
this.audio.prewarm([
...GESTURES.map((g) => TONE[g]),
'sfx/gameover',
'sfx/gameover', 'sfx/input_open',
'voice/t0_welcome', 'voice/t0_goal', 'voice/skip_hint', 'voice/t_try', 'voice/round_01',
]);
this._timer(() => this._runTutorial(), 500); // 开场静默 0.5s 后进教学(无 BGM)
@@ -151,7 +176,11 @@ export class SimonGame extends Game {
this._onMenuGesture(g);
break;
default:
// playback/announce/roundend:纯聆听阶段手势静默忽略(02 §4.1)
// playback/announce/roundend:纯聆听/播报阶段手势静默忽略(02 §4.1);
// round5 S5:announce/roundend(非 playback)的误触给 error 震——00 §5.4
// "做了手势 3 秒内必须有反馈",播报期被静默吞是"不知道自己在哪"的重灾区
// (live-A 行 824-830:roundend 下滑开菜单零反馈;playback 维持静默豁免)。
if (this.phase === 'announce' || this.phase === 'roundend') vibrate('error');
break;
}
}
@@ -268,6 +297,8 @@ export class SimonGame extends Game {
this.freeRelistens = 2; // 免费重听每局重置(round2 live P1)
this._recordSaid = false;
this._occAnnounced.clear(); // P2:新一局重新封顶(每种组合首次再播)
this._turnHintSaid = false; // round5 S7
this._settleChain = null; // round5 S6:上一局挂起的结算链随新局作废
this._nextRound();
}
@@ -345,8 +376,7 @@ export class SimonGame extends Game {
} else {
this._timer(() => {
if (s !== this._session || this.phase !== 'playback') return;
vibrate('confirm'); // "轮到你了"
this.guide.turn({}); // turn earcon 每轮泛化(第 1 轮另有 your_turn 语音,下行)
vibrate('confirm'); // "播放完毕"("现在能答"由 _toInput 的 input_open 标记)
// H2(round4)→ round1 live P2 改口:占用预告每种组合每局只播首次
//(_occAnnounced 记录;之后仅答错重听时随 retry_use 重播,见 _wrongAnswer)。
// 重听键与答案音共用词表的结构性冲突,换手势无解,改为轮次开场讲清判据。
@@ -355,12 +385,19 @@ export class SimonGame extends Game {
if (this._occAnnounced.has(ids[0])) ids = [];
else this._occAnnounced.add(ids[0]);
}
if (this.round === 1) ids.push('voice/your_turn');
// round5 S7:your_turn 每局只播一次(第 1 轮复活/重听重播不再重念)
if (this.round === 1 && !this._turnHintSaid) {
ids.push('voice/your_turn');
this._turnHintSaid = true;
}
if (ids.length) {
// 有语音链:向导 turn earcon 打头,链尾由 _toInput 的 input_open 收尾
this.guide.turn({});
this._speakGuarded(ids, () => {
if (s === this._session && this.phase === 'playback') this._toInput();
}, 2500 * ids.length); // 语音缺失兜底:每句 2.5s
} else {
// round5 S2:无语音链时不叠 turn earcon——input_open 独立作"能答了"标记
this._toInput();
}
}, 400); // 最后一个音播完 400ms 后
@@ -385,6 +422,9 @@ export class SimonGame extends Game {
_toInput() {
this.phase = 'input';
this.inputIdx = 0;
// round5 S2:input 开放标记音(游戏层资产,三档 guide/iOS 全可闻)——语音链
// (占用预告/your_turn)播完才进这里,此前作答被静默吞(live-A 行 108-115)。
this.audio.play('sfx/input_open');
// 向导层静默看门狗(round2 F1.2 礼仪重构 + round4 H4/H2):input 阶段无 BGM
// 无超时,挂机永久静默。5s → nudge + gd_relisten 提示(H4:首级 10s→5s,
// P4「10 秒干等」;升级级 25s 与级数不变);25s 升级**取消免扣机会自动重播
@@ -409,10 +449,17 @@ export class SimonGame extends Game {
this._relisten();
return;
}
// 未支持手势兜底(round1 live P1:答题阶段长按 9 秒零反馈,玩家以为卡死)——
// 即时 error 震,不判错、不耗机会、不进重听。此前 TONE['longpress'] 为
// undefined,audio.play(undefined) 直接抛 TypeError(事件回调内静默崩溃,
// 表象正是"手势被吞")。longpressend 是同一动作的收尾,静默不重复反馈。
// round5 S1/S3/S4:input 阶段长按=状态查询(长度/进度/重听两账,分档整句)——
// 长按是六手势之外的唯一空闲键位(键盘=按住空格),玩家主动查询不耗账不判错;
// longpressend 是同一动作收尾,静默不重复反馈。
if (g === 'longpress') {
this._statusQuery();
return;
}
// 其余未支持手势兜底(round1 live P1:无效手势零反馈,玩家以为卡死)——
// 即时 error 震,不判错、不耗机会、不进重听(此前 audio.play(undefined) 直接
// 抛 TypeError,事件回调内静默崩溃,表象正是"手势被吞")。longpressend 是
// 长按的收尾事件,静默不重复反馈(长按本体已在上面走了查询路径)。
if (!TONE[g]) {
if (g !== 'longpressend') vibrate('error');
return;
@@ -462,6 +509,27 @@ export class SimonGame extends Game {
this._speakGuarded(ids, () => { if (s === this._session) this._playSequence(); });
}
/**
* round5 S1/S3/S4:input 阶段长按=问状态(status_* 13 句整句预生成,数字分档,
* 禁运行时拼接——00 §3.2)。三句链:本轮长度档(2-4/5-8/9-12/13+ 音)→ 已答
* 进度档(0/≤⅓/≤⅔/收尾)→ 重听账目档(下一次重听消耗哪个桶:免费 2/免费 1/
* 机会 2/机会 1/两账空)。不耗账、不判错、不清进度;答错消耗路径与主动重听
* 路径的分账口径与 _relisten 一致(归因真话)。教学不讲这句——查询是发现式
* 辅助(旁白只承诺"记不住就向上滑重听"),主动查询的玩家三档 guide 都能用
* (属玩家发起,不走向导插播通道)。
*/
_statusQuery() {
const len = this.sequence.length;
const idx = this.inputIdx;
vibrate('confirm'); // 收到查询:轻确认震(longpress 无引擎内置震动)
const lenIdx = len <= 4 ? 0 : len <= 8 ? 1 : len <= 12 ? 2 : 3;
const progIdx = idx === 0 ? 0 : idx * 3 <= len ? 1 : idx * 3 <= len * 2 ? 2 : 3;
const ecoIdx = this.freeRelistens >= 2 ? 0 : this.freeRelistens === 1 ? 1
: this.chances >= 2 ? 2 : this.chances === 1 ? 3 : 4;
// 相位保持 input:查询语音不闭作答窗口(玩家可以边听边继续答)。
this._speakGuarded([STATUS_LEN[lenIdx], STATUS_PROG[progIdx], STATUS_ECO[ecoIdx]], null, 7500);
}
_roundClear() {
this.phase = 'roundend';
const s = this._session;
@@ -527,8 +595,15 @@ export class SimonGame extends Game {
const ids = ['voice/gameover', this._scoreBandVoice(score)];
if (isRecord) ids.push('voice/new_record');
ids.push('voice/replay', 'voice/rules_prompt');
// round5 S6 阶段看守:结算链只在结算屏交付——gameover 瞬间下滑进菜单时
// 链挂起(_deliverSettle 见相位不对不播),回结算屏补播;承诺「单击屏幕,
// 再来一局」永远与所处阶段一致(live-B 行 140-174:链在菜单里播完 → 承诺
// 在菜单内是假的 → 关菜单后结算屏死寂 8.4s)。重开(_beginGame)作废挂起链。
this._settleChain = ids;
this._timer(() => {
if (s === this._session) this._speak(ids, null); // 链播完停在 gameover,等手势
if (s !== this._session) return;
this.audio.stopVoice(); // 抢占点火:整链替换重播,listen/ASR 窗口不碎
this._deliverSettle();
}, 1400);
// 状态 BGM(10 号文档 simon 表):sfx/gameover(约 0.95s,+700ms 起播)
@@ -550,6 +625,24 @@ export class SimonGame extends Game {
return 'voice/score_band6';
}
/**
* round5 S6:交付结算语音链。只在结算屏(phase==='gameover')播;在菜单则
* 挂起(_settleChain 保留),回结算屏(_backToSettle)再补播——链内承诺
* (单击重开/上滑规则/下滑菜单)只对听得见它们的相位负责。
*/
_deliverSettle() {
if (this.phase !== 'gameover' || !this._settleChain) return;
const ids = this._settleChain;
this._settleChain = null;
this._speak(ids, null);
}
/** 菜单返回结算页:补挂起的结算链(S6),并落相位。 */
_backToSettle() {
this.phase = 'gameover';
this._deliverSettle();
}
_speakRules() {
this._speak(['voice/rules', 'voice/rules_prompt'], null);
}
@@ -578,12 +671,12 @@ export class SimonGame extends Game {
} else if (g === 'up') {
this._speakRules();
} else if (g === 'down') {
this.phase = 'gameover'; // 下滑=关闭菜单回结算页(13 号文档 §7.5 菜单约定)
this._backToSettle(); // 下滑=关闭菜单回结算页(13 号文档 §7.5 菜单约定;S6 补播结算链)
} else if (g === 'doubletap') {
const sel = this._menuIdx;
if (sel === 0) this._restart();
else if (sel === 1) { this.stop(); window.location.href = '../'; }
else this.phase = 'gameover'; // 返回:回到结算页
else this._backToSettle(); // 返回:回到结算页(S6 补播结算链)
}
}
+79 -9
View File
@@ -328,6 +328,12 @@ function checkSeqConstraints() {
/** announce →(单击跳过轮次播报)→ playback(手势静默忽略)→ input。 */
async function toInputViaSkip(round) {
await advanceUntil(() => game.phase === 'announce' && !!audio._voice, { desc: `第 ${round} 轮播报` });
// round5 S5:announce 阶段非单击手势给 error 震(00 §5.4 三秒反馈律;旧行为静默吞)
const v0 = vibLog.length;
await gesture('left');
assert(game.phase === 'announce', `S5:第 ${round} 轮 announce 误触不推进相位`);
assert(vibLog.slice(v0).some((p) => Array.isArray(p) && p[0] === 60),
`S5:第 ${round} 轮 announce 误触给 error 震(不再静默吞)`);
const skips = skipLog.length;
await gesture('tap');
assert(skipLog.length === skips + 1, `第 ${round} 轮 round_* 播报单击可跳`);
@@ -406,6 +412,15 @@ section('第 1-3 轮(含单击跳播报、playback 忽略、看门狗)');
assert(game._interval() === 700, '第 1 轮播放间隔 700ms');
await toInputViaSkip(1);
await answerAll();
assert(game.phase === 'roundend', '第 1 轮答完进 roundend 表扬链');
{
// round5 S5:roundend 播报期手势同样不静默吞(error 震 + 相位不推进)
const v0 = vibLog.length;
await gesture('left');
assert(game.phase === 'roundend', 'S5:roundend 播报期误触不推进相位');
assert(vibLog.slice(v0).some((p) => Array.isArray(p) && p[0] === 60), 'S5:roundend 误触给 error 震');
}
assert(played('sfx/input_open'), 'S2:input 开放标记音 input_open 已播(第 1 轮 your_turn 链尾)');
await advanceUntil(() => game.phase === 'announce' && game.round === 2, { desc: '进第 2 轮' });
assert(played('voice/correct'), 'P1:每轮答对都播表扬(第 1 轮 correct,池轮播)');
@@ -454,18 +469,30 @@ assert(playCount('voice/gd_clear') === 2, 'P1:每轮答对都播表扬(第 4
section('第 5 轮:主动重听(上滑)两层账 / 重听拒绝 / 双击=作答(round3 G5 §8 + round2 live P1 §15)');
await toInputViaSkip(5);
{
// 未支持手势兜底(round1 live P1:答题阶段长按 9 秒零反馈,玩家以为卡死)
// round5 S1/S3/S4:input 阶段长按=状态查询(长度/进度/重听两账,分档整句)。
// 第 5 轮:len=6 → status_len_mid;idx=0 → status_prog_start;免费 2 次 → status_free2。
const idx = game.inputIdx;
const ch = game.chances;
const vib0 = vibLog.length;
const v0 = vibLog.length;
await gesture('longpress');
assert(game.phase === 'input' && game.inputIdx === idx && game.chances === ch,
'P1:input 阶段长按不判错、不耗机会、不进重听');
assert(vibLog.slice(vib0).some((p) => Array.isArray(p) && p[0] === 60),
'P1:input 阶段长按发 error 震动兜底(不再零反馈,也不再抛 TypeError)');
const vib1 = vibLog.length;
await gesture('longpressend');
assert(vibLog.length === vib1 && game.inputIdx === idx, 'P1:longpressend(同一动作收尾)静默不重复反馈');
assert(game.phase === 'input' && game.inputIdx === idx && game.chances === ch && game.freeRelistens === 2,
'S4:长按查询不判错、不耗账、不清进度');
assert(!vibLog.slice(v0).some((p) => Array.isArray(p) && p[0] === 60),
'S4:查询不再走 error 震兜底(长按已升为查询键)');
await advance(3400); // 查询三句链播完(mock 语音 1s/句,onComplete 串行)
assert(playCount('voice/status_len_mid') === 1 && playCount('voice/status_prog_start') === 1
&& playCount('voice/status_free2') === 1, 'S1/S3/S4:查询三档整句(长度 mid/进度 start/账目 free2)');
await gesture('longpressend'); // 收尾静默,不重复查询
assert(playCount('voice/status_len_mid') === 1, 'S4:longpressend 静默不重复查询');
// 答两音再查 → 进度档 early(idx=2、len=6:2*3 ≤ 6)
await answerPastDoubletaps();
await answerPastUps();
await gesture(game.sequence[game.inputIdx]);
await gesture(game.sequence[game.inputIdx]);
assert(game.inputIdx === 2, 'S3:查询后作答窗口原样可用(已答 2 音)');
await gesture('longpress');
await advance(3400);
assert(playCount('voice/status_prog_early') === 1, 'S3:进度档随 inputIdx 分档(early)');
}
{
// round3 G5:input 阶段双击永远=作答,主动重听改绑上滑(期望恰为 up 时上滑=作答)
@@ -474,11 +501,13 @@ await toInputViaSkip(5);
await answerPastDoubletaps();
await answerPastUps(); // 先把期望恰为 up 的音答掉
const relistenCount = playCount('voice/relisten');
const ioBefore = playCount('sfx/input_open');
assert(game.freeRelistens === 2 && game.chances === 1, 'P1:第 5 轮账目起点 = 免费 2 次 + 真机会 1 次');
await gesture('up'); // 期望非 up → 第 1 次主动重听(免费)
assert(game.freeRelistens === 1 && game.chances === 1, 'P1:第 1 次重听用免费额度(2→1),真机会不动');
assert(playCount('voice/relisten') === relistenCount + 1 && game.phase === 'roundend', '播 relisten 并重播');
await advanceUntil(() => game.phase === 'input', { desc: '重听重播后回输入' });
assert(playCount('sfx/input_open') === ioBefore + 1, 'S2:重听重播后回 input 再发 input_open 标记');
assert(played('voice/gd_chances_left1'), 'P1:第 1 次后如实报余量(gd_chances_left1「还剩一次」,链尾句)');
assert(game.inputIdx === 0, '重听后输入进度清零');
}
@@ -676,6 +705,47 @@ await advance(500);
await advance(500);
}
// ---------------------------------------------------------------- 场景三:round5 S6/S7
// S6 结算链阶段看守:gameover 瞬间进菜单 → 链挂起不播 → 回结算页补播(承诺与相位一致)。
// S7 your_turn 每局一次:第 1 轮复活重播不再重念。
section('场景三:结算链阶段看守(S6)与 your_turn 每局一次(S7)');
{
const game3 = new SimonGame(audio, fakeEl());
gameRef = game3;
const ytBase = playCount('voice/your_turn'); // 主局第 1 轮已播过,用增量断言
game3.start();
await advanceUntil(() => game3.phase === 'tutorial' && game3.teachAwait, { desc: '场景三教学' });
await gesture('down'); // 跳教学
await advanceUntil(() => game3.phase === 'input', { desc: '场景三第 1 轮输入' });
assert(playCount('voice/your_turn') === ytBase + 1, 'S7:第 1 轮首次开放播一次 your_turn');
// 答错一次(chances=1)→ 复活重播 → your_turn 不重念
const wrong = GESTURES.find((g) => g !== game3.sequence[0] && g !== 'doubletap' && g !== 'up');
await gesture(wrong);
assert(game3.phase === 'roundend' && game3.chances === 0, '场景三:答错消耗唯一复活');
await advanceUntil(() => game3.phase === 'input', { desc: '场景三复活重播后回输入' });
assert(playCount('voice/your_turn') === ytBase + 1, 'S7:复活重播不重念 your_turn(每局一次)');
// 再答错 → gameover;死亡瞬间下滑进菜单(压力线手型,live-B 行 141)
const wrong2 = GESTURES.find((g) => g !== game3.sequence[0] && g !== 'doubletap' && g !== 'up');
await gesture(wrong2);
assert(game3.phase === 'gameover', '场景三:复活耗尽再答错 → gameover');
const go0 = playCount('voice/gameover');
const sb0 = playCount('voice/score_band1');
await gesture('down');
assert(game3.phase === 'menu', 'S6:死亡瞬间下滑进菜单(压力线可复现路径)');
await advance(2000); // 越过结算链原定 +1400ms 点火点
assert(playCount('voice/gameover') === go0 && playCount('voice/score_band1') === sb0,
'S6:菜单内不交付结算链(「单击再来一局」不在错误的相位播)');
assert(game3._settleChain && game3._settleChain.length === 4,
'S6:结算链挂起待补播(gameover+score_band+replay+rules_prompt)');
await gesture('down'); // 关菜单回结算页
assert(game3.phase === 'gameover', 'S6:关菜单回结算页');
await advanceUntil(() => playCount('voice/gameover') === go0 + 1, { desc: 'S6:回结算页补播结算链', max: 4000 });
await advanceUntil(() => playCount('voice/score_band1') === sb0 + 1, { desc: 'S6:补播链续播 score_band1', max: 4000 });
game3.stop();
gameRef = game;
await advance(500);
}
// ---------------------------------------------------------------- 资产引用校验
section('资产引用校验(ogg+m4a 双格式,voice 双性别)');
{