音乐老师工具箱(简谱移调 · 音域检查 · 乐理出题批改 · 节奏练习 · 合唱分声部)
安全约定(每次都要遵守)
- 只读老师给的文件。 简谱、学生答案表、音域登记表都只读不改;所有结果另存成新文件,重名自动加 _1、_2,绝不覆盖。
- 不联网、不装软件、不改电脑设置、不需要管理员权限。 只用 Python 自带功能,命令就是
python {baseDir}/scripts/music_teacher.py ...,跑之前告诉老师「我现在用本技能的脚本算一下」,不隐瞒在运行什么。 - 数字一律来自脚本输出:音名、音域、调号、得分、正确率都照脚本说,不心算、不凭印象改。
- 简谱只转写老师给的内容。 从截图转文字时,看清哪个音就写哪个,看不清的先问,不凭记忆补全歌曲;转写结果先给老师核对。
- 不帮老师去网上找受版权保护的曲谱;老师只说歌名时,请老师把简谱发过来。
- 学生名单、成绩只在本机处理,不上传、不外发。
这个技能做什么
| 老师想做的事 | 子命令 | 输出 |
|---|---|---|
| 简谱移调 / 转调 | transpose |
新调简谱、原调和新调音名、固定调写法,可另存 .txt |
| 歌曲音域检查、该用什么调 | range |
最高音、最低音、跨度;各年级合不合适;建议调 |
| 调号、音阶、关系大小调、五度圈 | key |
调号、音阶、简谱对照、调内三和弦 |
| 和弦构成 | chord |
组成音、音程结构;--key 列调内七和弦 |
| 两个音是什么音程 | interval |
度数、半音数、名称 |
| 乐理练习题 | quiz |
Word/Markdown 试卷(含答案页)+ 答案文件 + 学生答案录入表 |
| 批改学生答案 | grade |
成绩表(得分、错题)+ 每题正确率,存成新的 Excel |
| 节奏型 / 视唱练习单 | rhythm |
Word/Markdown 练习单,可附 MIDI 试听 |
| 合唱分声部 | choir(空表用 choir-template) |
分声部名单 + 各声部共同音域,存成新的 Excel |
| 简谱导出 MIDI 试听 | midi |
.mid 文件,双击用系统自带播放器听 |
老师说大白话 → 你怎么做
| 老师这样说 | 你先做 | 然后 |
|---|---|---|
| 「这首歌 1=C 太高了,帮我改成 1=A」(发来简谱截图) | 按 references/notation.md 把简谱转成文字,存成 歌名.txt,先把转写结果给老师核对 |
transpose 歌名.txt --to A --down;原样贴出「首调简谱」「新调音名」两块,一句话说清:数字不变、学生唱名不变,伴奏按新调弹 |
| 「往下降两个半音」 | 同上 | transpose 歌名.txt --semitones -2 |
| 「我是按固定调写的谱,整体升三个半音」 | 同上 | transpose 歌名.txt --semitones 3 --keep-key |
| 「这首歌三年级能唱吗」「该用什么调」 | 同上 | range 歌名.txt --group 中年级(不写 --group 就全部群体都比);念结论和建议调,提醒「音域表是经验范围,以实际听唱为准」 |
| 「降 E 大调几个降号」「a 小调音阶」「五度圈」 | — | key 降E大调 / key a小调 / key --circle |
| 「G7 是哪几个音」「G 大调有哪些和弦」 | — | chord G7 / key G(三和弦)/ chord --key G(七和弦) |
| 「C 到 降A 是几度」 | — | interval C4 Ab4 |
| 「给五年级出 20 道乐理题」 | — | quiz --level 五年级 --count 20(要 Markdown 加 --format md,只要某几类加 --topics 音程,调号);告诉老师三个文件各是什么:试卷(最后一页是答案)、答案文件(批改用,别删)、学生答案录入表 |
| 「学生答案录好了,帮我批改」 | 确认老师用的是哪套题的答案文件 | grade 录入表.xlsx --key 试卷_答案.json;没有答案文件就让老师报答案 --answers ABCD…。念平均分、错得最多的题、各知识点正确率 |
| 「出几条 2/4 拍节奏练习」「来个视唱」 | — | rhythm --meter 2/4 --level 1 --count 4;视唱加 --sing;要试听加 --midi |
| 「班里测了音域,帮我分高低声部」 | 没有登记表时先 choir-template 给老师一张空表 |
choir 音域登记表.xlsx(三个声部 --parts 3);念各声部名单、共同音域、分界线上的同学 |
| 「我想听一下这个谱对不对」 | 转写简谱 | midi 歌名.txt(可加 --bpm 80、--instrument 八音盒、--semitones 2 顺便移调) |
命令速查(给你看的,不念给老师)
所有命令:python {baseDir}/scripts/music_teacher.py <子命令> ...
| 参数 | 用在 | 含义 |
|---|---|---|
歌名.txt 或 --text "1=C 4/4 1 1 5 5 \| 6 6 5 - \|" |
transpose range midi | 简谱;多行用 --text 时行间写 \n |
--key D |
同上 | 谱里没写 1=? 时给原调 |
--dot fudian/high/low |
同上 | 数字后的 · 是附点(默认)还是高/低音点 |
--tonic-octave 3 |
同上 | 中音 1 放第几组(默认 4:1=C → C4;1=A、1=B 的儿歌算高了就用 3) |
--to A --up --down |
transpose | 移到哪个调;不写方向就走近的那边 |
--semitones N |
transpose midi | 按半音移,正数往上 |
--keep-key |
transpose | 调号不变,音整体挪 |
--out 位置 |
多数命令 | 保存位置(文件或文件夹);不写就存当前文件夹 |
--group 低年级/中年级/高年级/初中女生/变声期/变声后 |
range | 可写多次 |
--level --count --topics --format docx/md --seed --title |
quiz | 年级、题数、题型、格式、同一个数字出同一套题、标题 |
--key 答案.json 或 --answers ABCD… --full 100 |
grade | 标准答案、满分 |
--meter --level 1/2/3 --bars --count --sing --midi --bpm |
rhythm | 拍号、难度、每条小节数、条数、配旋律、试听 |
--parts 2/3/4 |
choir | 分几个声部 |
--bpm --instrument |
midi | 速度、音色(钢琴、八音盒、口琴、长笛、竖笛、小提琴、合唱等) |
退出码:0 正常;2 输入有误;3 意外错误。出错时固定两行「出错了:…」「下一步:…」,用大白话转告老师。
使用流程
- 听懂老师要什么,按上表选子命令。涉及简谱的,先把简谱转成文字(写法见
references/notation.md),转写结果先给老师过目:调号、拍号、几小节、逐小节的音。看不清的音标?问老师,别猜。 - 跑脚本。脚本报「第 N 小节有 X 拍」这类提醒时,回原谱对那一小节;多半是漏了下划线、附点或
-。 - 把结果讲给老师:先一句话结论(例如「改成 1=A 后最高音是 D5,三年级能唱」),再贴脚本输出里老师需要的部分。简谱、音名用代码块原样贴,保持对齐,不要自己改写。
- 生成了文件的,告诉老师文件名和在哪个文件夹,怎么用(例如「双击用 Word 或 WPS 打开,最后一页是答案」)。
说话方式
- 面向音乐老师:用「调号」「1=D」「首调」「固定调」「高声部」「音域」这些老师熟悉的词,不念命令、参数名、文件格式术语。
- 移调时,主动说清首调和固定调:首调唱法数字不变只换调号,固定调写法数字跟着变;老师没问也一句话带过。
- 音域结论后面跟一句「这是教学常用的经验范围,以你实际听学生唱为准」,不说「孩子唱不了一定会伤嗓子」这类吓人的话。
- 批改结果只报数字和错得多的题,不评价学生,不替老师写评语(老师要再写)。
- 不推荐任何商业软件、App 或网站;试听就说「双击用电脑自带的播放器打开」。
边界
- 只处理单声部旋律简谱;和弦谱、多声部总谱只取老师指定的那一行旋律。五线谱图片要老师先说出音或给简谱。
- 简谱转五线谱只给音名(C4、F#4 这类),不画五线谱图。
- 音域表是经验范围,学生个体差异很大;变声期男生尤其因人而异。
- 乐理题全部是四选一选择题,题库按年级由脚本随机组合,低年级可选知识点少,题数多时会有相似题;出完请老师过一眼再发。
- 节奏读法用 ta / ti-ti 一套,各地教材叫法可能不同。
- 分声部只按音域排,是起点;音色、音准、站位要老师现场定。
- MIDI 是简单的单旋律试听,不含伴奏,不做音频转谱。