Pianote
围绕真实钢琴练习场景开展的主线项目,结合 MIR、MIDI 谱面处理、实时输入与产品设计,持续完善从选曲、校准、演奏到反馈的完整体验。
- 研究方向
- MIR / 实时音频
- 我的工作
- 产品设计与核心开发
- 开发框架
- Godot 4.6 / C#
- Godot
- C#
- .NET 8
- MIR
- MIDI
- Audio Capture
01 / PROJECT IDEA
让真实演奏,
获得即时回应。
Pianote 将标准 MIDI 文件转换为可用于演奏交互的音符时间线,并接收真实钢琴或音频转 MIDI 模块的输入。项目以低干扰的练习流程为目标,让乐谱、演奏与反馈在同一套体验中衔接起来。
02 / CORE EXPERIENCE
核心体验
围绕“选择曲目—准备输入—跟随演奏—查看反馈”组织一条清晰的练习路径。
曲目与谱面
从曲目列表选择演奏内容,加载 MIDI 谱面,并将音符转换为适合钢琴交互呈现的时间线数据。
真实钢琴输入
预留真实钢琴或音频转 MIDI 模块的接入链路,同时提供键盘调试输入,便于持续验证演奏逻辑。
即时演奏判定
根据演奏时机给出 Perfect、Great、Good 与 Miss 判定,并同步记录连击与得分。
输入与声音校准
通过麦克风采样环境声与钢琴音,辅助调整音频输入;设置中也可配置音量、分辨率、语言和谱面偏移。
03 / IMPLEMENTATION
技术实现
将谱面数据处理拆成独立模块,再由 Godot 负责运行时交互与视觉呈现。
MIDI 谱面转换
使用独立的 .NET 8 模块解析标准 MIDI 文件,生成包含音高、起止时间、力度、轨道与左右手信息的音符对象。
上下文左右手分配
把 45ms 内的音符视为和弦,并通过束搜索动态规划综合手部跨度、移动与交叉情况推断左右手。
可见窗口动态生成
谱面载入后保存在内存中,运行时只生成前方可见时间窗口内的音符条,控制长曲目的场景开销。