1. 为什么选择LilyPond制作吉他谱?
作为一个玩了十年吉他的老手,我尝试过几乎所有主流打谱软件。第一次接触LilyPond时,我也被它的代码输入方式吓退过——直到发现它能生成印刷级质量的吉他六线谱。与传统图形界面软件相比,LilyPond有三点无法替代的优势:
首先是指法标记的精确控制。在图形软件里拖动和弦图时,经常遇到指法符号重叠、把位显示错乱的问题。而LilyPond通过代码定义指法位置,比如\fret-diagram-terse "x;3;2;0;1;0;"就能精准生成C和弦图,每个数字对应琴弦上的按品格数,"x"表示不弹奏该弦。
其次是批量修改效率。当需要调整整首曲子的调弦时(比如从标准调弦改为Drop D),只需修改顶部的\stringTuning定义,所有音符会自动重新计算位置。而在图形软件中,你需要手动移动每根弦上的音符——我曾在MuseScore上为此耗费整个下午。
最重要的是跨平台协作。ly文件本质是纯文本,可以像程序代码一样用Git进行版本管理。去年我和乐队成员合写原创曲时,通过GitHub轻松合并了各自编写的吉他声部和贝斯声部,这是二进制格式的工程文件无法实现的。
2. 搭建六线谱基础框架
2.1 定义吉他调弦
所有吉他谱都需要先声明调弦方式,这是与钢琴谱最大的不同。在LilyPond中,标准调弦(EADGBE)的代码如下:
\include "predefined-guitar-fretboards.ly" \stringTuning \with { stringTunings = #guitar-tuning } { \repeat unfold 6 { s1 } }如果想自定义调弦,比如降半音的Eb调弦,只需修改为:
stringTunings = #`( ,(ly:make-pitch 0 2 NATURAL) ; Eb ,(ly:make-pitch 0 0 NATURAL) ; Bb ,(ly:make-pitch -1 5 NATURAL) ; Gb ,(ly:make-pitch -1 3 NATURAL) ; Db ,(ly:make-pitch -1 1 NATURAL) ; Ab ,(ly:make-pitch -2 4 NATURAL) ; Eb )这里每个ly:make-pitch参数分别表示八度、音级和升降记号。建议将调弦定义放在文件开头,方便后续修改。
2.2 创建双谱表结构
专业吉他谱需要同时显示六线谱和五线谱,通过以下代码实现:
\score { << \new Staff \with { \override StaffSymbol.line-count = #6 instrumentName = "Guitar" } { \clef "moderntab" % 六线谱内容 } \new Staff { \clef "treble" % 五线谱内容 } >> }关键点说明:
line-count = #6强制设置六条线clef "moderntab"启用现代指板谱样式<<...>>语法表示两个谱表垂直对齐
3. 输入音符与演奏技巧
3.1 六线谱音符表示法
六线谱的音符输入与五线谱完全不同,采用<弦号-品位>的格式:
{ <\tweak font-size #-2 6\3>4 % 第6弦第3品 <\tweak font-size #-2 5\0> % 第5弦空弦 <\tweak font-size #-2 4\2>8 % 第4弦第2品(八分音符) }\tweak font-size #-2是为了缩小指法数字的显示尺寸,使谱面更整洁。如果需要同时显示多个音符(如和弦),用尖括号包裹:
<6\3 5\0 4\2>2 % 同时弹奏三个音(二分音符)3.2 添加演奏技巧标记
吉他特有的演奏技巧可以通过以下语法添加:
- 滑音:
\glissando
<\tweak font-size #-2 5\3>\glissando <\tweak font-size #-2 5\5>- 击弦/勾弦:
\hammerOn和\pullOff
<\tweak font-size #-2 3\2>\hammerOn <\tweak font-size #-2 3\4> <\tweak font-size #-2 2\3>\pullOff <\tweak font-size #-2 2\1>- 泛音:
\harmonic
<\tweak font-size #-2 4\7>\harmonic建议将这些技巧定义成缩写,方便重复使用:
ho = \hammerOn po = \pullOff harm = \harmonic4. 和弦图与节奏型标注
4.1 插入和弦图
在歌曲谱中经常需要标注和弦,LilyPond提供两种方式:
简洁模式(适合流行谱):
\chordmode { \set chordChanges = ##t g1 c d }指板图模式(适合指弹谱):
\markup { \fret-diagram-terse "x;3;2;0;1;0;" }指板图字符串中,分号分隔每根弦(从低音弦到高音弦),数字表示按品格位置,"x"为不弹奏,"o"为空弦。可以通过\override调整显示位置:
\once \override Score.FretBoard.extra-offset = #'(1 . 2)4.2 节奏型标注
对于重复的节奏型,可以用\repeat语法简化输入:
\repeat unfold 4 { <6\3>8 <5\0> <4\2> <5\0> }如果需要标注特殊拨弦方向(如全部下拨),添加\stroke标记:
\strokeDown <6\3>4 <5\0> <4\2> <5\0> \strokeNeutral % 恢复默认5. 实战案例:编写《天空之城》前奏
现在我们把所有知识点整合,编写经典指弹曲目前8小节:
\version "2.24.0" \header { title = "天空之城" composer = "久石让" } music = { \time 4/4 \tempo 4 = 72 <\tweak font-size #-2 6\0>4\harmonic <\tweak font-size #-2 5\2>8\glissando <\tweak font-size #-2 5\0> <\tweak font-size #-2 4\2>4 <\tweak font-size #-2 3\2> <\tweak font-size #-2 2\3>\ho <\tweak font-size #-2 2\1>\po | <\tweak font-size #-2 6\0>4\harmonic <\tweak font-size #-2 5\2>8\glissando <\tweak font-size #-2 5\0> <\tweak font-size #-2 4\2>4 <\tweak font-size #-2 3\2> <\tweak font-size #-2 2\1>2 | } \score { << \new TabStaff \with { stringTunings = #guitar-tuning } { \music } \new Staff { \clef "treble" \music } >> }这段代码展示了:
- 泛音标记(第6弦空弦泛音)
- 滑音与击勾弦组合
- 双谱表同步显示
- 速度与拍号设置
建议将常用乐句保存为变量(如\music),方便重复调用和修改。当需要变调时,只需在\score外包裹\transpose c d { ... }即可整体升调。