FrequencyTrack
频率轨道铺设工具 —— ADOFAI 编辑器 Mod。按频率(音高)在轨道上自动铺设砖块,支持固定频率段、滑音(频率渐变)与噪音段三种生成方式,并自动变速使音高与 BPM 精确匹配(0 误差)。
所属:
adofaiex/ADOFAIMods仓库中的 EditorExtensions 模组(Unity Mod Manager 格式)。FreqTrack 由 StArray 与 AI 助手共同研发。
安装与启用
- 将编译好的
EditorExtensionsMod 放入 ADOFAI 的Mods目录 - 游戏内打开 Mod 设置(Unity Mod Manager 窗口)
- 勾选 启用频率轨道铺设工具(Enable FreqTrack)
- 可选:切换 英文 / 中文 语言;勾选 启用频率轨道日志 输出详细调试日志(默认关闭)
TIP
切换语言后面板文字会实时刷新(含字体切换:英文 SourceSans3 / 中文思源黑体)。
打开面板
在 ADOFAI 编辑器中,切换角度输入模式(ToggleAngleInputMode,编辑器左下角的「角度」按钮)时,FreqTrack 面板会自动显示 / 隐藏。
面板需要配合选中一个起始砖块使用 —— 生成的砖块会从当前选中砖块之后插入。
面板界面
| 控件 | 说明 |
|---|---|
折叠按钮 ▼ / ▶ | 展开 / 收起面板内容 |
| 外圈 | 开启后按外圈(大圈)角度公式生成,频率更高时圈更大 |
| 拍数 | 开启后数量输入框按拍数计算;关闭时按块数计算 |
| 起始音调 | 十二平均律音调下拉(C0~B8,A4=440Hz),选中自动填入频率 |
| 频率 | 起始频率(Hz),可手动输入 |
| 终点音调 | 滑音终点音调下拉 |
| 终点频率 | 滑音终点频率(Hz) |
| 数量 | 关闭拍数开关 = 目标块数;开启拍数开关 = 目标拍数 |
| 插入拍间隔 | 每隔 N 拍插入一个「跳变标记对」(0 = 不插入),节奏不变 |
| 滑音缓速 | 滑音时频率变化用的缓速函数(30 种) |
| 应用音调 | 按当前频率生成一段固定频率砖块 |
| 滑音 | 从起始频率渐变到终点频率生成砖块 |
| 生成噪音 | 以当前频率为基准,每块随机偏移生成噪音段 |
核心概念
频率、BPM 与砖块
- 频率(Hz)= 每秒砖块数 = 显示 BPM ÷ 60。例:120 BPM → 2 块/秒 → 频率 2Hz
- 每块拍数
TileBeats(entry, exit)由进出角度差决定:((180-(exit-entry)) mod 360 + 360) mod 360 / 180
自动变速
无论当前 BPM 是多少,Mod 都会在段首写入一个 SetSpeed 变速事件:
newBpm = hz × 60 × TileBeats(0, segAngle)这样游戏中听到的音高精确等于输入频率(0 误差)。外圈时每块拍数天然是 2 倍,显示 BPM 内外圈一致。
角度公式
- 内圈:
segAngle = 180 - 180 × (hzFormBPM × bpmFactor) / hz - 外圈:
segAngle = 180 - 360 × (hzFormBPM × bpmFactor) / hz hzFormBPM= 当前 BPM ÷ 60;bpmFactor= 以 2 为底的折叠倍率(保证角度落在合理范围)
音调选择器
基于十二平均律,参考 A4 = 440Hz,范围 C0(16.352Hz)~ B8(7902.133Hz)。选音调会自动把对应频率填入输入框,也可手动微调。
功能详解
应用音调 —— 固定频率段
- 选中起始砖块
- 选择起始音调或直接输入频率
- 设置 数量(块数或拍数)
- 可选:设置 插入拍间隔(需 ≥1 的整数)
- 可选:开启 外圈
- 点 应用音调
结果:在选中砖块后生成一段频率恒定的砖块段,自动变速,音高精确等于输入频率。
WARNING
频率 ≤ 0、输入为空时不会执行,仅弹出提示(避免产生 NaN 砖块)。
滑音 —— 频率渐变段
- 选中起始砖块
- 设置起始频率与终点频率(终点音调 / 终点频率输入框)
- 设置 数量(目标块数或拍数)
- 选择 滑音缓速 函数(默认 Linear)
- 可选:插入拍间隔、外圈
- 点 滑音
结果:砖块角度按缓速曲线从起始频率连续渐变到终点频率,形成平滑滑音效果。
- 按拍数:生成到目标拍数为止
- 按块数:生成到目标块数为止
- 变速系数按两端较低频率折叠,保证整段音高匹配
生成噪音
- 选中起始砖块
- 设置起始频率和 数量(块数或拍数)
- 可选:外圈
- 点 生成噪音
结果:以当前频率的基准角度为中心,每块随机偏移 ±25°,生成一段听觉上接近噪音的段落(节奏 / 频率基准仍与输入一致)。
插入拍间隔标记
每隔指定拍数插入一个「跳变标记对」:先跳到特殊角 target,再落回旋转 180° 的位置。
- 标记对合计时长精确等于一块正常砖(节奏完全不变)
- 常用于在持续音 / 滑音中制造「打击感」或记号点
- 0 表示不插入;输入小于 1 自动按 1 处理,非整数自动取整
滑音缓速函数(30 种)
| 类型 | 缓速函数 |
|---|---|
| 线性 | Linear |
| 正弦 | InSine / OutSine / InOutSine |
| 二次 | InQuad / OutQuad / InOutQuad |
| 三次 | InCubic / OutCubic / InOutCubic |
| 四次 | InQuart / OutQuart / InOutQuart |
| 五次 | InQuint / OutQuint / InOutQuint |
| 指数 | InExpo / OutExpo / InOutExpo |
| 圆 | InCirc / OutCirc / InOutCirc |
| 回弹 | InBack / OutBack / InOutBack |
| 弹性 | InElastic / OutElastic / InOutElastic |
| 弹跳 | InBounce / OutBounce |
- In:慢→快;Out:快→慢;InOut:两头慢中间快
- 缓速作用于频率(Hz)的线性插值:
freq(t) = startHz + (endHz - startHz) × Ease(t) - 选择弹性 / 弹跳时频率会短暂超过终点值再回弹,适合夸张的滑音效果
语言与设置
| 设置项 | 说明 |
|---|---|
| 英文 / 中文 | 切换面板语言(实时刷新,含字体) |
| 启用频率轨道铺设工具 | 总开关,关闭后面板不显示、功能不生效 |
| 启用快捷打开 / 解除输入限制 | 同 Mod 的其它功能开关 |
| 启用频率轨道日志 | 输出应用/滑音/噪音详细日志、标记时间戳、面板布局(默认关闭,排查用) |
使用技巧与常见问题
- 音高不准? 确认频率输入正确,Mod 会自动变速(SetSpeed),游戏内显示 BPM = 频率 × 60。开启日志可看到
变速: newBpm=..., 频率≈...Hz核对 - 只生成极少块? 数量为 0 或为空时:应用/噪音按 1 块、滑音按 32 块处理
- 想制造鼓点/记号? 用 插入拍间隔,节奏完全不变
- 外圈 vs 内圈? 外圈每块拍数翻倍,同一频率下外圈圈数更少、视觉更大;音高一致
- 滑音不滑? 确认终点频率与起始不同;选择非线性缓速(如弹性/弹跳)可强化渐变感
- 面板不出现? 在编辑器里切换「角度输入模式」开关一次,或确认 Mod 总开关已启用
- 日志不输出? 在 Mod 设置里勾选「启用频率轨道日志」
相关
- 仓库:adofaiex/ADOFAIMods(EditorExtensions + InformationDisplay)
- 其余编辑器增强(CustomRotateAngle / DisableLimit / QuickOpen)也在此仓库,随 EditorExtensions 一起安装