用 ABC 渲染音乐符号

ABC 是一个 人类可读的 ascii 表示 的乐谱。 约翰钱伯斯发布了一个 历史简介 ABC 表示法,并且有一个 较新的历史 通过克里斯沃尔肖。

不像 音乐XML,旨在用于在乐谱编辑和演奏应用程序之间交换音乐,ABC 旨在由人类直接编辑。 我可以用 vim 在 ABC 中输入乐谱,这比在 GUI 乐谱编辑器中摆弄鼠标要快得多。 与其他格式不同,ABC 与版本控制(例如 git)配合得很好。 与 Latex 一样,您所看到的并不是您得到的。 但是符号很直观,学习曲线很短,而且好处很棒。

虽然经常被吹捧为民间音乐的标准,但它非常适合爵士乐主唱,并且 满分 以及。 一些 GUI 乐谱编辑器可以导入/导出 ABC 符号。 我用了 笔记编辑 用于 GUI 编辑器,直到它被上游放弃,但能够导出为 ABC。 这 结果 具有合理的人类可读性——让我继续用 ABC 符号进行编辑,并作为一个更完整的分数的例子。 学完本课后,您将能够将其转换为 PDF!

古代 4 世纪赞美诗

对于民谣示例,我们将使用中世纪时代的曲调对 4 世纪的赞美诗进行简单的编曲。 “O Lux Beata Trinitas”是本笃会的编辑们认为无疑是圣人的作品的十二首赞美诗之一 圣安布罗斯. 圣安布罗斯被兰斯的海内马尔在他的论文 De unâ et non trinâ Deitate, 857 中引用。 赞美诗网

这首赞美诗在格里高利圣歌时代仍然流行。 这里 您可以看到中世纪的记谱法并听到与今天一样具有历史意义的表演。

20世纪的诠释

中世纪的符号在赞美诗中更新为 更现代的符号,这是我们的出发点。 正如那些赞美诗所反映的那样,中世纪时期没有小节或小节线。

以下是ABC的基础知识:

  • 注释是以 ‘%’ 开头的行。
  • 以“中 C”开头的音符输入为 CDEFGABcdefgab。
  • 跟随带有数字的音符将时间值乘以该数字。
  • 尽可能将相邻的音符连接在一起。 这是空间重要的唯一方式。
  • 括号用于将音符连在一起或连线。
  • 曲调以 X: 1 开头,其中 1 是曲调编号。 一个文件中可以有多个曲调。 民间曲调经常被收集到一个文件中。 例如,我们可以将 St. Ambrose 的所有 12 部已知作品收集到一个名为“ambrose.abc”的文件中。
  • 标题用 T 给出:
  • 作曲家或来源用 C 给出:
  • 键(默认为 C 大调)用 K 给出:

这是我们将曲调简单地转录为 ABC:

X: 1
T: O lux beata Trinitas
C: Plainsong, Mode VIII
K: D
% Fedora Magazine example
(AB) (AGFG) EFG (AB) (BA) A4 
(AB) (AGFG) EFG (AB) (BA) A4 
(AB) d (cd) B (AG) (AB)  (AGF) F4 
(GA) (AGFG) EFG (AB) (BA) A4

我们将在终端模拟器中完成我们的工作。 Enter 使用您最喜欢的文本编辑器(如果是猫,则加分)将上述内容转换为名为“lux.abc”的文件。
或者 下载lux.abc 与本课的所有曲调。 要格式化和查看它,我们需要 ghostscript、xreader 和 abcm2ps。 您可能已经在桌面上安装了 ghostscript 和 xreader(或其他 PDF 查看器),但再次询问也无妨。

$ sudo dnf install ghostscript xreader abcm2ps make

我让你安装 make 所以一个简单的 makefile 可以简化渲染:

.SUFFIXES:  .abc .ps .pdf .mid
.abc:
    abcm2ps $*
.abc.pdf:
    abcm2ps $*
    ps2pdf Out.ps $*.pdf
.abc.mid:
    abc2midi $*.abc -o $*.mid 

Enter 或者 下载 作为一个名为“Makefile”的文件。 现在格式化并查看我们的曲调:

$ make lux.pdf
$ xreader lux.pdf &

我让你在后台运行 xreader,所以你可以切换回你的终端。 每当 lux.pdf 更新时,Xreader 都会更新视图。 如果您只是在阅读本文,您还可以查看输出 这里.

添加歌词

歌词在它们伴随的曲调线下输入’w:’。 单词被连字符以显示音节如何与音符搭配。 使用“*”为最后一个音节使用附加音符。

在 lux.abc 文件中追加第二首曲子,与歌词相同的曲子:

X: 2
T: O lux beata Trinitas
C: Words: St. Ambrose 4th century
C: Plainsong, Mode VIII
K: D
% Fedora Magazine example
(AB) (AGFG) EFG (AB) (BA) A4 
w: O*  lux***  be-a-ta trin-* ni-* tas, 
(AB) (AGFG) EFG (AB) (BA) A4 
w: et* prin-*** ci-pa-lis U-* ni-* tas,
(AB) d (cd) B (AG) (AB)  (AGF) F4 
w: i-* am sol* re-ce-* dit* i-*gne-us, 
(GA) (AGFG) EFG (AB) (BA) A4
w: in-* fun-***  de lu-men cor-*di-* bus.

现在’make lux.pdf’并在你的xreader窗口中查看结果。 两个曲调都呈现为 PDF。

添加措施

所以,历史真实性都很好,但我想制作一个现代版本。 现代耳朵的第一步是将曲调分成大小相等的小节。 我的耳朵说 7/8 是这首曲子的绝佳拍号。

  • M:7/8 指定默认米为 7/8

  • L: 1/8 指定默认音符长度为整个音符的 1/8。 这已经是默认设置,但现在已记录在案。

  • 问:1/4=80 指定建议的速度:每分钟 80 个四分音符。

  • 度量由“|”表示的条形线分隔。
  • 会有多节经文,所以’:|’ 添加重复条形线。
  • 最后的条形线是“||”,但我们在本示例中不使用它。
  • 将歌词分成小节也是调试的好习惯,而不是依赖于自动分发。
  • 请注意,可以添加额外的空格以提高可读性。
  • 不需要排列条形线,但可以使其更具可读性。

这是带有小节线的第 3 调(附加到 lux.abc):

X: 3
T: O lux beata Trinitas (3)
C: Words: St. Ambrose 4th century
C: Plainsong, Mode VIII
M: 7/8
L: 1/8
Q: 1/4=80
K: D
% Fedora Magazine example
z(AB) (AGFG) | EFG     (AB) (BA) | A3-A4 |
w: O*  lux***|be-a-ta trin-* ni-*| tas,  |
z(AB) (AGFG)   |  EFG    (AB) (BA)| A3-A4 |
w: et* prin-***|ci-pa-lis U-* ni-*| tas,  |
 (AB) d (cd)   B (A |G) (AB) (AGF)   F-| F7|
w:i-* am sol* re-ce-|* dit*  i-*gne-us,| * |
z(GA)  (AGFG) | EFG      (AB) (BA) | A3-A4 :|
w:in-* fun-***| de lu-men cor-*di-*|bus. |

低音线、和弦和诗句

现在我们开始在我们的解释中真正的背离。 首先,添加和弦以帮助从“铅板”进行即兴创作。 然后我们添加一条建议的低音线。

  • V:1 和 V:2 在音色之间切换。

  • 和弦在曲调行中用双引号输入,并呈现在以下音符之上。
  • 一个音符后的每个逗号将其降低一个八度。
  • C:也可用于文件编排和许可。

  • 附加诗句被添加为一个曲调线下的附加歌词线。
  • 可以通过使用“~”将经文编号添加到下一个带有不间断空格的单词中。 否则,它们将被视为单词。
  • %%MIDI 这些是下一节中使用的魔法注释!

这是我们本课的最后曲调:

X: 4
T: O lux beata Trinitas (4)
C: Words: St. Ambrose 4th century
C: Plainsong, Mode VIII
C: Arranged: Stuart D. Gathman
C: Copyright 2012: GeneratePress Commons Attribution-ShareAlike 2.0
M: 7/8
L: 1/8
Q: 1/4=80
K: D
%%MIDI gchord c3c4
%%MIDI program 75
V:1
"D"z(AB) (AGFG) | "A7"EFG (AB) (BA) | "Dsus"A3-"D"A4 |
w:i.~O*  lux*** |be-a-ta trin-* ni-*| tas,  |
w:ii.~Te* ma-***|ne lau-dum car-*mi-*| ne, |
w:iii.~De-* o***|Pa-tri sit glo-*ri-*| a, |
V:2
   D,3  A,2 A,2 |   E,3  A,2 A,2    | D,3  A,2 A,2 |
V:1
"D"z(AB) (AGFG) | "A7"EFG (AB) (BA) | "Dsus"A3-"D"A4 |
w:  et* prin-***|ci-pa-lis U-*  ni-*| tas,  |
w:  te* de-***  |pre-ce-mur ves-*pe-*|re: |
w:  ei-* us-*** |que so-li   Fi-*li-*| o, |
V:2
   D,3  A,2 A,2 |   E,3  A,2 A,2    | D,3  A,2 A,2 |
V:1
"G"(AB) d (cd) B (A  |"Em"G) (AB)  (AGF)  F-|"D"F7 |
w: i-* am sol* re-ce-|*     dit*  i-*gne-us,| * |
w: te* nos-tra* sup-plex|* glo-*ri-**a | * |
w: cum* Spi-ri-*tu Pa-|* ra-*cli-**to, | * |
V:2
   G,3  B,2 B,2 |   D,3  B,2 B,2    | D,3  A,2 A,2 |
V:1
"A7"z(GA) (AGFG) | "A7"EFG (AB) (BA) | "Dsus"A3-"D"A4 :|
w: in-* fun-***  |  de lu-men cor-*di-*| bus. |
w: per* cunc-*** | ta lau-det sae-*cu-*| la. |
w: et*  nunc,*** |  et in per-pe-*tu-* | um |
V:2
   E,3  A,2 A,2 |   C,3  A,2 A,2    | D,3  A,2 A,2 :|

渲染到 MIDI

渲染,使一个漂亮的铅板! 它听起来像什么? 您将需要 abc 到 MIDI 转换器和一个 MIDI 渲染器。 Fedora 带有许多 MIDI 合成器和渲染选项,但我们将使用 timidity – 一个简单的命令行实用程序,可以渲染音频文件或在您的扬声器上播放。

安装abcMIDI和胆怯:

$ sudo dnf install abcMIDI timidity++

如果您一直在学习这些示例,那么您在 lux.abc 中有 4 首曲子。 使用 abc2midi 实用程序将它们渲染为 MIDI:

$ abc2midi lux.abc

这将创建四个 midi 文件,每个曲调一个:lux1.mid .. lux4.mid。 使用胆怯将每个文件播放到您的扬声器:

$ timidity lux1.mid

当您演奏 ‘lux4.mid’ 时,您会听到 ‘%%MIDI’ 指令做了什么。 您可以阅读有关 abc2midi 及其指令的更多信息 这里. 你也可以听到我 唱歌和弹钢琴 从铅片和完全屠杀拉丁语。

ABC 的内容还有很多,但希望这是一个有趣的介绍! /usr/share/doc/abcm2ps/examples中有更多例子,查看 来自多种文化的民谣.