一款面向 Android、iOS、Windows 和 macOS 的离线音程听辨训练应用。它不仅记录答题对错,还会分析“实际音程被误认为哪个音程”,建立个人混淆矩阵,并优先强化最容易混淆的组合。
- 支持一个八度内除纯一度外的 12 种音程:小二度至纯八度。
- 可明确选择两个音“轮流播放”或“同时播放”,默认轮流播放。
- 轮流播放支持上行、下行或随机方向;随机方向不会混入和声题。
- 默认只考上行,可在设置中切换为只考下行或上行下行都考。
- 答案按钮默认仅显示
m2、M3等简称,可在设置中改为中文名称或同时显示。 - 支持固定根音、有限随机根音和 C3–C6 范围内的完全随机根音。
- 提供“合成键盘”和“合成拨弦”两种离线音色。
- 支持普通多选识别和大按钮二选一混淆训练。
- 记录不确定回答、重播次数、响应时间及首次播放正确率。
- 错题后可重听本题、试听误选音程、交替播放正确/错误音程及立即强化。
- 今日闯关包含 4 关,每关 5 题:基础辨认、音区变化、全音程挑战和薄弱冲刺。
- 关卡通过增加答案范围、根音随机程度和音色变化逐步提升难度。
- 每关需要连续答对 5 题;答错或选择“不确定”会重置当前关进度,但不会退回上一关。
- 报告包含总体指标、各音程掌握度、分类表现及混淆矩阵。
- 全部数据保存在本地,不需要网络、账号或麦克风权限。
- 设置页可开启隐秘模式:使用中性界面文案、简写反馈,并可按
H一键切换到工作清单遮罩;公共环境仍需佩戴耳机。
| 按键 | 操作 |
|---|---|
Space |
重播当前题目 |
1–9 |
选择第 1–9 个答案 |
0 |
选择第 10 个答案 |
U |
记录为“不确定” |
Enter |
进入下一题 |
Esc |
关闭当前反馈并继续 |
Windows 和 macOS 共用这组快捷键,并与鼠标/触摸按钮共用同一业务逻辑。输入焦点位于文本输入控件时,Flutter 焦点系统会优先处理输入事件。
应用运行时生成 44.1 kHz、16-bit、单声道 WAV:
- 合成键盘使用多谐波叠加和指数衰减包络。
- 合成拨弦使用更丰富的谐波与快速衰减包络。
- 音符带有短攻击和释放,减少爆音。
- 和声音程由两个音直接混合。
- 音频结果使用有限缓存;新播放会取消旧播放,避免重叠。
频率遵循十二平均律:
frequency = 440 × 2 ^ ((midiNote - 69) / 12)
训练数据保存在 Flutter getApplicationSupportDirectory() 返回的应用支持目录中:
interval_training_data.json
数据包含:
schemaVersion
settings
attempts
sessions
写入时先生成临时文件再替换正式文件。文件整体损坏时恢复默认数据;单条训练记录异常时仅跳过该记录。设置页面支持清空数据和导出 JSON。iOS 导出文件保存到应用 Documents 目录,可在“文件”App 的“我的 iPhone/iPad”中访问。
lib/
app/ # 应用组合、主题、字符串
features/
home/presentation/ # 首页
training/
domain/ # 音程、题目、会话、仓储和音频契约
data/ # JSON 仓储与 WAV 合成播放实现
presentation/ # 自由配置和训练页面
report/
domain/ # 混淆矩阵、权重和掌握度算法
presentation/ # 训练报告
settings/presentation/ # 设置、清空和导出
领域算法使用纯 Dart 实现,音频和本地存储均通过接口注入,UI 不直接操作文件。
- Flutter 3.22 或兼容版本
- Dart 3.4 或兼容版本
- Android SDK(构建 Android)
- Visual Studio C++ Desktop Development 工具链(构建 Windows)
- macOS 10.14 或更高版本与 Xcode(构建 macOS)
- iOS 12.0 或更高版本、macOS、Xcode 与 CocoaPods(构建 iOS)
安装依赖并验证:
flutter pub get
flutter analyze
flutter test构建:
flutter build apk --debug
flutter build windows
flutter build macos
# 在 macOS 上构建并生成带 versionCode 后缀的 IPA
bash tool/build_ios_versioned.sh构建产物会读取 pubspec.yaml 中 version: x.y.z+X 的 X,并在文件名末尾附加 -vX。例如当前 versionCode 为 4:
EarTraining-debug-v4.apk
EarTraining-release-v4.apk
EarTraining-v4.exe
EarTraining-v4.app
EarTraining-v4.ipa
当前测试覆盖:
- MIDI 频率和半音计算。
- 上行、下行、和声及根音音域边界。
- 二选一出题平衡。
- 自适应权重、混淆矩阵和掌握度。
- 首听正确率、重播统计。
- JSON 往返序列化及损坏数据恢复。
- 重播、正确/错误/不确定反馈、下一题和桌面端快捷键 Widget 行为。
audioplayers:跨平台播放内存 WAV。path_provider:获取应用支持目录,并在 iOS 的 Documents 目录中保存导出文件。file_selector:Windows 和 macOS 原生文件导出位置选择。
第三方组件分别遵循其自身许可证。
Copyright © 2026 zero1151. All rights reserved.
本项目未授予开源许可。除适用法律或第三方组件许可证明确允许的范围外,未经版权所有者书面许可,不得复制、修改、分发、再许可或将本项目及其源代码用于商业用途。完整声明见 LICENSE。