LilyPond多声部乐谱排版实战:钢琴谱、合唱谱与乐队总谱一篇搞定的完整指南
【免费下载链接】lilypondThis is just a mirror of GNU LilyPond repository. If you'd like to contribute to LilyPond, please look at http://www.lilypond.org/development.html项目地址: https://gitcode.com/gh_mirrors/li/lilypond
LilyPond 是 GNU 开发的免费开源乐谱排版引擎,用纯文本输入即可生成专业级的钢琴谱、合唱谱与乐队总谱。它采用"上下文(Context)+ 声部(Voice)"的分层模型,天然适合多声部排版的三大场景:钢琴谱(双手五线谱)、合唱谱(SATB 四部)、乐队总谱(多系统 StaffGroup)。本文带你从零掌握核心语法,配合内置模板快速出谱。
💡 日常写作推荐使用 Frescobaldi 编辑器(左侧代码、右侧实时预览),安装与配置说明见官方文档目录 Documentation/en/learning/installing.itely。
核心概念:声部、上下文与总谱结构
写多声部乐谱前,只需理解三个关键词:
| 概念 | 含义 | 输入符号 |
|---|---|---|
| Voice(声部) | 能独立演奏/演唱的一条旋律线,是承载音符的最小单位 | { ... } |
| Staff(谱表) | 一条五线谱,可包含多个 Voice | \new Staff |
| PianoStaff / ChoirStaff | 内置组合谱表:钢琴双手 / 合唱团 | \new PianoStaff |
| << ... >> | 表示"同时发生",多个谱表上下堆叠成总谱 | 尖括号 |
| \ | 同一谱表内分隔两个声部 | 双反斜杠 |
官方教程中用"人声 + 钢琴"演示了总谱骨架(Documentation/en/learning/fundamental.itely):
\score { << \new Staff = "singer" << \new Voice = "vocal" { c'1 } \addlyrics { And } >> \new PianoStaff = "piano" << \new Staff = "upper" { c'1 } \new Staff = "lower" { \clef "bass" c'1 } >> >> \layout { } }📌 阅读技巧:从外向内一层层看,并保持严格缩进——这是写多声部输入文件最重要的习惯。
钢琴谱:一个 PianoStaff 搞定双手
钢琴谱最常见的错误是手写两条独立 Staff。LilyPond 提供了开箱即用的PianoStaff上下文,自动完成连谱号、系谱号、双手间距与对齐。
upper = \relative { c' e g c } lower = \relative { \clef "bass" c e g c } \score { \new PianoStaff << \new Staff { \upper } \new Staff { \lower } >> \layout { } }同谱表双声部(右手旋律 + 左手分解和弦叠写在一行谱表上)用\\分隔,第二个声部符杆自动朝下:
\relative { % 声部 1(符杆朝上) 声部 2(符杆朝下) << { g'4 fis8( g) a4 g } \\ { d4 d d d } >> }钢琴模板:piano-tkit.ly 与 pianoStaff
- ly/piano-tkit.ly:内置"钢琴模板",定义
make-pianostaff函数,通过PianoRHMusic、PianoLHMusic变量即可生成双手谱,并支持PianoDynamics(力度)、PianoInstrumentName等可选项。 PianoStaff还支持\stem dirDown等细节控制,官方在 ly/staff-tkit.ly 中提供了谱表模板函数。
合唱谱:内置 SATB 模板最快上手
LilyPond 自带两套合唱模板,无需复制修改,直接在输入文件末尾\include即可(注意:内置模板必须放在文件末尾,这是与常规 include 的最大区别):
- ly/satb.ly:SATB 四部合唱,支持钢琴伴奏、独唱、最高 9 段歌词;
- ly/ssaattbb.ly:8 部分组合唱(Soprano/Alto/Tenor/Bass 各可分两个声部)。
一份完整的四部合唱 + 钢琴伴奏输入文件(取自官方模板手册 Documentation/en/learning/templates.itely):
SopranoMusic = \relative { a'4\f a8 a a4 a } SopranoLyrics = \lyricmode { Sop -- ra -- no ly -- rics } AltoMusic = \relative { d'4\f d d d } AltoLyrics = \lyricmode { Al -- to ly -- rics } TenorMusic = \relative { a4\p a a a } TenorLyrics = \lyricmode { Te -- nor ly -- rics } BassMusic = \relative { c2\p c4 c } BassLyrics = \lyricmode { Bass ly -- rics } PianoRHMusic = \relative { c' e g c } PianoLHMusic = \relative { c e g c } \include "satb.ly"合唱排版三个实用开关
TwoVoicesPerStaff = ##t:S/A、T/B 每部两声写进同一谱表(共 2 行谱表);默认##f则四行谱表。- 省略变量即减声部:只定义
SopranoMusic和BassMusic就得到女高/男低二重唱。 - 多段歌词:用
SopranoLyricsOne、SopranoLyricsTwo配合\stanza "1."自动叠排多段词。
乐队总谱:StaffGroup 组织多系统
乐队总谱的套路是"每个乐器一条 Staff,用 StaffGroup 按乐器族分组":
\score { << \new StaffGroup << \new Staff = "flute" { \fluteMusic } \new Staff = "oboe" { \oboeMusic } \new Staff = "clarinet" { \clarinetMusic } >> \new StaffGroup << \new Staff = "violin" { \violinMusic } \new Staff = "viola" { \violaMusic } \new Staff = "cello" { \celloMusic } >> \new StaffGroup \with { systemStartDelimiter = #'PianoStaffDelimiters } << \new Staff = "pianoRH" { \pianoRHM } \new Staff = "pianoLH" { \clef "bass" \pianoLHM } >> >> \layout { } \midi { } % 多声部总谱还能直接导出多轨 MIDI }要点:
- 尖括号
<< >>决定谱表自上而下的顺序,总谱排版 = 排好顺序的尖括号; - 每组
StaffGroup自动绘制左侧分组括线,\with { systemStartDelimiter = #'PianoStaffDelimiters }可为键盘乐器加上钢琴式连谱号; - 每个声部的音乐建议先写成独立变量(如
\fluteMusic),总谱只负责"组装",改谱时互不干扰; - 加上
\midi { }后,一次运行即可同时得到 PDF 总谱和 MIDI 音频,方便排练听效果。
常见问题速查(FAQ)
Q1:同一个谱表里两条旋律,符杆方向错了怎么办?第二个声部(\\之后)默认符杆朝下;若某处不自然,可对该声部加\stem dirUp/\stem dirDown。
Q2:两个声部音符撞在一起看不清?可在对应 Staff 上设置\override NoteHead.staff-symbol-table = ...之外的简单方案——直接给第二个声部加\clef区分或改用双谱表;复杂碰撞问题见官方调优章节 Documentation/en/learning/tweaks.itely。
Q3:想让合唱谱自动对齐歌词与节拍?把歌词写成独立变量后用\new Lyrics \lyricsto "声部名" \歌词变量绑定到指定声部即可(参考 ly/lyrics-tkit.ly 的歌词模板函数)。
Q4:总谱中某个声部中途才进入?在对应 Staff 的音符开头写休止符,或用\new Staff临时引入"临时谱表"(ossia 段落的常用技巧,见 fundamental.itely "Nesting music expressions" 一节)。
总结:三张模板速查卡
| 场景 | 推荐做法 | 关键文件 |
|---|---|---|
| 钢琴谱 | \new PianoStaff+\\双声部 | ly/piano-tkit.ly |
| 合唱谱 | 末尾\include "satb.ly",只填变量 | ly/satb.ly、ly/ssaattbb.ly |
| 乐队总谱 | StaffGroup分组 + 变量化各声部 | ly/staff-tkit.ly、ly/voice-tkit.ly |
| 模板大全 | 官方内置模板手册 | Documentation/en/learning/templates.itely |
掌握"变量写音乐、尖括号组总谱、模板管结构"这三招,钢琴谱、合唱谱、乐队总谱的排版都能一篇搞定。想继续深入,建议按顺序阅读官方学习文档目录 Documentation/en/learning/:从fundamental.itely到templates.itely,正是本文扩展的完整版本。
【免费下载链接】lilypondThis is just a mirror of GNU LilyPond repository. If you'd like to contribute to LilyPond, please look at http://www.lilypond.org/development.html项目地址: https://gitcode.com/gh_mirrors/li/lilypond
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考