feat(mtc): .mt 脚本编译器落地 + pybot 扬声器静音语义
mtc 新模块:命令式动作脚本(Python DSL)→ .mt 矩阵编译器,非阻塞时间轴 IR(重叠截断/rest 静止值)+ 10ms 栅格化,产物可由 pybot/bot4cj 直接执行;34 测试全绿(含 pybot parser e2e)。 pybot speaker.py:frequency<=0 改为静音节拍(仅 sleep 保时序,不再钳到 min_f 低鸣),对齐仓颉版 sleep 占位语义;mtc Beep 通道 rest=0,段前/段间/段后回落静音,两侧语义闭环。 修复 test_actpred_compatibility 过时断言(99c1bc1 首行分解为重复微步 19→20 帧时漏改,14→15)。 文档三处同步:根 README 回填 memdb/pybot/actpred 并新增 mtc(模块表+端口一览+章节),MODULES/ARCHITECTURE 同步 mtc,新建 mtc/README.md。
This commit is contained in:
1 parent
205a60f039
commit
01126a5786
18 files changed
+1125
-7
No files matched your search
@@ -7,7 +7,8 @@
|
||||
dry_run 模式下仅记日志立即返回(不 sleep、不出声)。
|
||||
|
||||
时序约定:play() 阻塞总耗时对齐 delay_ms(与仓颉版 sleep(delay) 节拍一致),
|
||||
播放提前结束则补足剩余时间。
|
||||
播放提前结束则补足剩余时间。frequency <= 0 为静音节拍(不出声仅保节拍,
|
||||
对齐仓颉版 sleep 占位语义),正频率仍按 [min_f, max_f] 钳制。
|
||||
"""
|
||||
|
||||
import logging
|
||||
@@ -44,7 +45,18 @@ class Speaker:
|
||||
log.warning("aplay not found, speaker degrades to silent sleep")
|
||||
|
||||
def play(self, frequency, delay_ms):
|
||||
"""播放 frequency Hz 正弦波 delay_ms 毫秒(阻塞)"""
|
||||
"""播放 frequency Hz 正弦波 delay_ms 毫秒(阻塞)
|
||||
|
||||
frequency <= 0 为静音节拍:不出声、仅保持 delay 时序(对齐
|
||||
仓颉版 sleep 占位语义)。此前 0Hz 会被钳制到 min_f 发出低鸣,
|
||||
破坏了 .mt 首行 freq=0(jump.mt/std.mt)的静默意图。
|
||||
"""
|
||||
if frequency <= 0: # 静音节拍
|
||||
if self.dry_run:
|
||||
log.info("speaker(dry-run): silence %dms", delay_ms)
|
||||
return
|
||||
time.sleep(delay_ms / 1000.0)
|
||||
return
|
||||
# 频率钳制(与仓颉版一致)
|
||||
if frequency > self.max_f:
|
||||
frequency = self.max_f
|
||||
|
||||
Reference in new issue
Block a user