LilyPond嵌套重复结构MIDI导出异常求助及教程推荐
LilyPond重复结构问题解决与资源推荐
代码修正
你当前的代码问题在于外层\repeat segno 2会把包含\repeat volta和\Section_b的整个块重复两次,导致MIDI播放顺序变成Section_a+ending_1 → Section_b → Section_a+ending_2 → Section_b,完全不符合预期的Section_a+ending_1 → Section_a+ending_2 → Section_b → Section_a+ending_1结构。
以下是修正后的代码:
% 处理前两次A段的不同结尾 \repeat volta 2 { \Section_a \alternative { \volta 1 {\ending_1} \volta 2 {\ending_2} } } % 播放B段 \Section_b % 最后回到A段+结尾1 \Section_a \ending_1
如果需要PDF中显示规范的Da Capo标记(而非重复打印A段),可以使用分段标记实现:
\mark \default % 标记Segno位置在开头 \Section_a \alternative { \volta 1 {\ending_1 \segno} % 第一次演奏后标记Segno \volta 2 {\ending_2} } \Section_b \daCapo % 回到开头Segno位置,演奏至结尾
注意:使用\daCapo时,可在\ending_1后添加\fine来明确终止演奏节点。
优质重复结构教学资源
- 《LilyPond Cookbook》重复章节:以实际乐谱案例为核心,拆解volta、segno、da capo等重复逻辑,每个案例都附带代码和渲染效果,比官方参考文档更贴近实际使用场景。
- LilyPond官方入门教程“Repeats and Voltas”模块:虽然官方参考文档晦涩,但入门教程的分步示例更友好,重点关注带MIDI输出的练习案例,能直观看到代码和播放效果的对应关系。
- 社区整理的《LilyPond Cheat Sheet》:包含常见重复场景的代码模板速查,比如二段式结尾、Da Capo al Fine、Segno重复等,适合快速检索和套用。
内容的提问来源于stack exchange,提问作者EmSeeDee
相关产品推荐
相关产品推荐

