最近在学钢琴。作为一个工具癖,琴可以不练好,乐谱一定要好看。找打谱软件的时候,我想到了万能的 TeX。果然有个宏包 MusiXTeX。TeX 打谱效果可能不好,但是难学啊!
这两天在练这首《妈妈您听我说》,就是《小星星变奏曲》的前身。谱是这个样子:
我就尝试用 MusiXTeX 排一下吧。
配置环境
我最喜欢的 TeX 工具是 Texpad 的 Mac 版,这次决定试一下 iOS 版。在 设置 → 包管理器 里可以安装「Music」相关的宏包(包括了 MusiXTeX)。用其他工具也一样,只要安装 MusiXTeX 即可。
五线谱
下面这段代码生成两行的五线谱,2/4 拍:
音符
音符相对来讲复杂一些,放在 \startextract
和 zendextract
之间。可以用 \Notes
、\en
等一系列宏用于调整其中音符的间距。实际上有一个叫做 autosp
的宏包可以自动调整间距,但 iOS 上不能随便装包,就不用了。
这里用前四个小节示例一下:
\ha
和 \qa
是代表二分音符和四分音符的宏,a
代表符杆方向自动。\ha
宏里面包的 {c}
是音高。此外还有 \wh
、\ca
、\cca
等等分别代表全音符、八分音符、十六分音符。\bar
用来画小节线。竖线是用来跳到上面的五线谱的——比如第一行的 \ha{c}
画的是左下角的二分音符,|
之后是上面五线谱的第一小节。
连音线
\islurd
和 \isluru
分别用于画上面和下面的连音线。\tslur
用于结束连音线。语法是这样的:
\islurd<连音线编号><连音线起始的音高>
\tslur<连音线编号><连音线终止的音高>
编号让 \tslur
能结束正确的连音线。
这里加入了两条连音线:
渐强和渐弱
用 \icresc
标记起点,用 \tcresc
(渐强)或 \tdecresc
(渐弱)标记终点。由于我们想让渐强出现在两谱中间,要把终点再包在 \cmidstaff
里。同理,力度记号 \p
也可以包在 \zmidstaff
里。(\lmidstaff
、\cmidstaff
和 \zmidstaff
的唯一区别是横向的位置。)
完整的前八小节
主要的操作就这么多,还有一些其他宏可以绘制重复记号、重音记号、抬高连音线、去掉小节编号等等,用法都比较简单,不再赘述。那么,完整的前八小节如下(下载 PDF):
进阶或者放弃
可以看出这段代码不仅难写,可读性也极差,所以我放弃了。就排这么八小节吧。人生苦短,干点啥不好。如果你感兴趣,这里有 MusiXTeX 的完整文档(嗯,154页!)。
实际上,如果真要打谱,前 MusiXTeX 开发者创建的 LilyPond 会是更好的选择。当然,LilyPond 也是基于代码的。