声音边缘:Linux音乐制谱软件,第 3 部分

作者:Dave Phillips


在本月对 Linux 音乐制谱程序的巡览中,我们
看看 MusiXTeX 音乐排版软件。MusiXTeX 由
Daniel Taupin、Ross Mitchell 和 Andreas Egler 创建。MusiXTeX 目前由
Christian Mondrup 和其他志愿者维护。

MusiXTeX 是一组宏和字体,为使用 TeX 排版软件进行音乐
出版提供扩展。TeX 是一个强大的 UNIX/Linux 文本
处理系统,最初设计用于高质量地
排版科学和工程文章和书籍。它特别
强调表示代数中发现的符号和图形
方程和其他数学公式。这种特殊的图形功能
使 TeX 成为高质量音乐排版系统的自然选择。

关于安装 TeX 的几句话
TeX 系统的安装并非易事,我建议使用
您发行版的软件包安装系统来自动
此过程。有关安装 TeX 的详细信息,请访问主要的
TeX 相关网站(请参阅本文的资源)。我参考
读者访问这些站点,以获取有关构建和
配置 TeX 系统的完整说明。此阶段是必选项:您必须拥有
一个可用的 TeX 安装,然后才能设置和使用您的 MusiXTeX
扩展。

注意:Linux 用户更可能以 LaTeX 的形式获取和安装 TeX,
这在功能上与 TeX 相同。在本
篇文章中,我只是提到 TeX,并理解为 LaTeX
也被引用。

安装和配置 MusiXTeX
转到 MusiXTeX 主网站,下载并解压
将 musixtex-Txxx.tar.gz tarball 放在您的主目录中,然后进入您的
新的 MusiXTeX 源代码目录。MusiXTeX 包主要由
TeX 兼容的宏文件组成,因此没有构建过程。
整个过程在 MusiXTeX 网站上进行了描述,但我将指出
最好按照说明设置所谓的“私有”安装在 /usr/local 文件
层次结构中。成为 root 用户,然后将分发文件复制到
建议的目录中,如下所示

/usr/local/share/texmf 	;;; Create this directory first
/usr/local/share/texmf/tex/musixtex/ ;;; Copy all files from the tex subdirectory of your MusiXTeX distribution 
/usr/local/share/texmf/doc/musixtex/ ;;; Copy all files from the doc subdirectory
/usr/local/share/texmf/fonts/source/musixtex/ ;;; Copy all files from the mf subdirectory
/usr/local/share/texmf/fonts/tfm/musixtex/ ;;; Copy all files from the tfm subdirectory

如果所需目录尚不存在,请创建它们。之后
将宏和字体放在其正确的目录中,运行
以下命令(作为 root)以更新您的 TeX 环境

mktexlsr
mktexlsr /usr/local/share/texmf 

如果您的 TeX 安装不包括 mktexlsr 命令,请尝试
将其替换为 texhash。如果两个命令都不存在,那么您的
TeX 安装不完整,必须升级才能
成功安装 MusiXTeX。

现在您需要构建和安装 musixflx,这是一个必需的工具,必须
从 MusiXTeX 发行版的 system/c-source 目录中找到的 musixflx.c 文件编译。
幸运的是,编译该实用程序非常
容易。进入 system/c-sources 目录并发出以下
命令

	gcc musixflx.c -o musixflx

将 musixflx 二进制文件复制到 /usr/local/bin。现在您的 MusiXTeX 系统
已完全安装并可以使用。顺便说一句,本文中介绍的 MusiXTeX 版本是稳定版本 T112。Beta
版本 T113 在撰写本文时也可用,但它
未针对此评论进行测试。


MusiXTeX 文档

要查看广泛的 MusiXTeX 手册,请输入
/usr/local/share/texmf/doc/musixtex 并发出以下命令

xdvi musixdoc.dvi

要获得可打印的 PostScript 文件,请运行此命令

dvips musixdoc.dvi -o musixdoc.ps

使用 MusiXTeX
准备 MusiXTeX 乐谱源文件类似于
使用诸如 HTML 之类的标记语言准备网页的过程。以下
示例演示了正确编写的 MusiXTeX 的一些基本功能
源文件

    			% This is a comment.
\input musixtex		% You must include this line

\parindent10mm		% Staff and meter configuration
\instrumentnumber{1}
\setname1{Piano}
\setstaffs1{2}
\generalmeter{\meterfrac44}

\startextract		% Set up notes, barlines, beaming, etc.
\Notes\ibu0f0\qb0{cge}\tbu0\qb0g|\hl j\en
\Notes\ibu0f0\qb0{cge}\tbu0\qb0g|\ql l\sk\ql n\en
\bar
\Notes\ibu0f0\qb0{dgf}|\qlp i\en
\Notes\tbu0\qb0g|\ibbl1j3\qb1j\tbl1\qb1k\en
\Notes\ibu0f0\qb0{cge}\tbu0\qb0g|\hl j\en
\endextract

\end

不幸的是,MusiXTeX 源文件只能被
音乐家部分读取。特别是,Note 语句相当复杂。
但是,来自 MusiXTeX 手册的这些解释应有助于阐明
上面示例中排版命令的操作

\ibu0f0 begins an upper beam, aligned on the f, reference number 0, slope 0
\tbu0 terminates this beam before writing the second g (\qb0g)
\qb.. indicates a note belonging to a beam
\sk sets a space between the two quarter notes in the right hand, so that 
	the second quarter note is aligned with the third eighth-note in the left hand
\qlp indicates a dotted quarter note (p = point)
\ibbl1j3 starts a double beam aligned on the C (j) with a slope of 15%

虽然语义和语法仍然有些困难,但您可以
了解 MusiXTeX 如何表示音乐符号和语法。请查阅
MusiXTeX 手册以获取有关语言细节的完整描述。

完成所有必需的准备工作后,实际上使用 MusiXTeX 创建
可打印的乐谱相当平淡无奇。在您最喜欢的文本编辑器中输入示例代码片段
,并将其另存为 fragment.tex。然后,运行
以下命令

	tex fragment.tex

此命令将创建一个名为 fragment.dvi 的 DVI 文件,该文件可以
使用 xdvi 实用程序直接查看,也可以转换为 PostScript 文件
使用 dvips 程序。图 1 显示了生成的 PostScript 视图。

图 1. 简单的 MusiXTeX 示例
如图 1 所示,MusiXTeX 在
PostScript 格式。它还能够生成出色的 PDF 输出,但
这样做需要本配置文件中未描述的字体和实用程序。请参阅
MusiXTeX 网站,了解有关准备 MusiXTeX 的详细信息
最终实现为 PDF 输出的文件。

现在应该很清楚,MusiXTeX 不是作曲家的助手。它
专为输出质量而设计,其输入语言是
有时很难理解。尽管如此,MusiXTeX 确实实现了其
高质量可打印乐谱的目标,如图 2 所示。

图 2. 更复杂的 MusiXTeX 示例
图 2 中看到的乐谱的源代码可以在一组
Daniel Taupin 准备的 MusiXTeX 示例,可从 MusiXTeX
网站。

MusiXTeX 的家庭和朋友

已经开发了各种辅助应用程序来缓解 MusiXTeX 的
相当复杂的使用。因此,在离开本配置文件之前,让我们简要查看
PMX MusiXTeX 预处理器和用于 MusiXTeX 源的 Mux2D GUI
创建。

PMX

Don Simons 的 PMX 是一种称为预处理器的编程实用程序。
它是
旨在通过以下方式使 MusiXTeX 源代码的输入更快更容易
以更容易理解的形式呈现 MusiXTeX 的功能
表格。下载和安装详细信息可从 MusiXTeX
网站,因此这里我仅提供 PMX 的基本示例。
以下源代码提供了一个简单的 PMX 文件

% nv noinst mtrnuml mtrdenl mtrnump mtrdenp xmtrnum0 isig npages nsyst musicsize fracindent
  2  2      4       4       4       4       0        0    1      1     20        0.07


bt
./
e23   c   | g43 a f g | e43 d e f | g43 a f g /
c44 d e f | g44 a b c | c24   e   | g44 a b c /
%---------------------------------------------------------%

前两行未注释的行包含各种设置参数,
定义如下

nv       number of staves
noinst   number of instruments
mtrnuml/mtrdenl  logical time signature numerator and denominator
mtrnump/mtrdenp  printed time signature numerator and denominator (if 0 set to logical values) 
xmtrnum0  number of beats in partial first measure, i.e. pickup notes
isig     number of sharps or flats in key signature (positive integer equals sharps, negative equals flats)
npages   number of pages
nsyst    number of systems
musicsize  height of staff in points (20 or 16)
fracindent left indentation of the first system (decimal fraction of total line width)

语法非常敏感。如果删除其中一个空行
在 bt 指令之前,PMX 编译器将停止并出现致命错误。

在两个空行之后,我们有谱号排序,从最低的
五线谱,以及目标目录的指示符

bt   bass, then treble clef
./   directory path for resulting TeX file (in this instance, the current directory)

在此设置块之后,我们终于可以获得音符数据。在这里我们可以看到
PMX 比 MusiXTeX 的本机语言透明得多
元素,将基本音符元素定义如下

note name, duration, octave

如果音符名称后面没有值,则音符的持续时间和八度音阶
来自前面的元素。简单的小节线用 | 表示
符号,结尾栏由 / 字符(正斜杠)表示。

要创建 TeX 输出文件,请将以上代码复制为 ex1.pmx 并处理
在这些阶段

pmx ex1.pmx
tex ex1.tex
xdvi ex1.dvi

图 3 显示了在 xdvi 查看器中看到的结果。

图 3. 来自 PMX 的简单输出
图 4 展示了来自 PMX 源的更高级示例
包裹。作者周到地包含了许多有用的示例
PMX 源的文件。我建议有兴趣的读者学习
仔细研究这些示例,以从系统中获得最佳结果。在
除了示例之外,PMX 系统的出色文档
以完整手册和参考卡的形式存在,均采用 PDF 格式。

图 4. 更复杂的 PMX 示例
PMX 还可以准备乐谱的 MIDI 文件以进行“试听
试听”,
因此您可以在提交打印之前听到您的乐谱。

Mux2D
Lukas Gratzmacher 的 Mux2D 为
MusiXTeX 源文件的创建。它类似于 Denemo
用于 LilyPond 的实用程序,设计为辅助应用程序而不是
功能齐全的乐谱编辑器。尽管如此,Mux2D 仍然可以发挥重要作用
帮助我们这些对 MusiXTeX 来说太难使用的人
直接。有关安装和配置的完整说明
详细信息可从 Mux2D 网站获得,因此我们仅
在此处了解 Mux2D 的运行情况。

图 5 显示了 Mux2D 的工作。音符和其他乐谱元素已输入
并通过计算机键盘和菜单对话框进行修改。界面
易于学习,每个键的定义都在
显示屏的左下角。

图 5. Mux2D,MusiXTeX 的 GUI
使用 Mux2D 创建的文件可以加载并保存在程序的本机中
MXD 格式。您还可以以 TeX 格式导出您的作品以进行处理
使用 MusiXTeX。以下 TeX 代码由图 5 中看到的示例创建

%%% TeX file with MusiXTeX code
%%% generated by MuX2d

\input musixtex
\input musixext

\instrumentnumber{1}
\def\freqbarno{5}

\setstaffs1{2}

\setsign{1}{0}
\setclef{1}{60}
\setname1{Piano}
\setmeter1{{\meterfrac{4}{4}}{\meterfrac{4}{4}}}\relax

\parindent25pt

\startpiece
\Notes\hl{L}|\qu{c}\en
\Notes|\qu{d}\en
\Notes\hl{N}|\qu{e}\en
\Notes|\qu{f}\en
\barre
\Notes\hl{M}|\qu{g}\en
\Notes|\qu{h}\en
\Notes\hl{K}|\ql{i}\en
\Notes|\ql{j}\en
\barre
\Notes\ql{L}|\hl{i}\en
\Notes\ql{M}|\en
\Notes\ql{N}|\hu{h}\en
\Notes\ql{a}|\en
\barre
\Notes\ql{b}|\hu{g}\en
\Notes\ql{c}|\en
\Notes\ql{d}|\hu{f}\en
\Notes\ql{N}|\en
\barre
\Notes\qlp{c}|\hu{e}\en
\notes\cl{a}|\en
\Notes\qlp{b}|\hu{d}\en
\notes\cl{N}|\en
\barre
\Notes\wh{c}|\wh{c}\en
\setdoubleBAR\stoppiece
\bye

图 6 说明了在 TeX 中处理此代码后的结果
并将生成的 DVI 文件转换为 PostScript。正如你所看到的,
图 5 中看到的相当简单的图形已被
出色的 MusiXTeX 符号。

图 6. 转换为 TeX 和 PostScript 的 Mux2D 文件
结束语
MusiXTeX 是在 GPL 下获得许可的免费开源软件。它
正在维护中,用户继续贡献乐谱和代码。
一个活跃的邮件列表为有关 MusiXTeX 的问题和建议提供了一个论坛
关于 MusiXTeX 的 PMX、Mux2D 和其他成员
家庭。如果您正在为您的作品寻找出版质量的输出,
并且你已经准备好使用 TeX,或者已经知道如何使用它,那么
你应该了解一下 MusiXTeX。

下个月我将介绍另一个基于 TeX 的音乐排版程序,
令人惊叹的 LilyPond。下次再见!
资源

MusiXTeX 和 PMX


Mux2D


TeX 用户组
(TeX 新手的良好起点)


linux-sound.org 上的音乐符号

Dave Phillips 是一位音乐家、教师和作家,居住在俄亥俄州芬德利。
自从 1995 年第一次接触 Linux 以来,他一直是 Linux 音频社区的积极成员。
他是 The Book of Linux
Music & Sound
的作者,以及
Linux Journal 中众多文章的作者。可以通过以下方式联系他:
dlphilp@linux-sound.org.

加载 Disqus 评论