你想要了解 R 语言中 gm(Graphical Music)包的使用方法并获取可运行的示例,我会从安装、核心概念到具体示例,帮你全面掌握这个包的使用。gm 包是 R 语言中用于以编程方式创建、修改和导出乐谱的工具,它将音乐结构(音符、和弦、拍号、调号等)转化为可渲染的乐谱,支持导出为 MusicXML、PDF、PNG 等格式,非常适合音乐分析和程序化作曲。
音乐编辑涉及软件musescore and LilyPond(符号生成音乐)
注意事项
- gm包使用链式编程风格(%>%操作符),使代码更具可读性
- 可以通过help(package = “gm”)查看完整的函数文档
- 支持多种音符时值:”w”(全音符), “h”(二分音符), “q”(四分音符), “e”(八分音符), “s”(十六分音符)等
- 可以设置音符的力度(velocity)、八度(octave)和音长(duration)希望这些示例代码能帮助你开始使用R语言的gm包创建自己的音乐作品!
一、安装与环境准备
- 安装 gm 包首先需要安装 gm 包及其依赖,gm 依赖xml2、fs等包,还需要lilypond软件来渲染乐谱(导出 PDF/PNG 必需): 安装CRAN版本(如果已发布) install.packages(“gm”) 或安装开发版(推荐,功能更新) install.packages(“devtools”) devtools::install_github(“flujoo/gm”)
- 安装 LilyPond(关键依赖)gm 渲染乐谱依赖 LilyPond,需单独安装:Windows:从LilyPond 官网下载安装包,安装后将路径(如C:\Program Files\LilyPond\usr\bin)添加到系统环境变量。(下载的自拍压缩包bin目录,放入上述目录即可)
- 单独使用这个软件,安装方法,查看连接内文档:learning.pdf
- 或者安装[Frescobaldi 4.0.4](https://github.com/frescobaldi/frescobaldi/releases/tag/v4.0.4) 打开软件,编辑菜单->首选项->选择LilyPond会自动安装,就可以用符号打谱了,例如 C {c’} 显示五线谱do
- Mac/Linux:通过终端安装(brew install lilypond 或 sudo apt-get install lilypond)。
- 你还需要安装 MuseScore,它是一款开源免费的打谱软件。编辑生成的乐谱MuseScore 有默认的安装路径,如果你安装到其它路径,请在 .Renviron 文件中设置:
- 打开 .Renviron 文件。可以用命令
file.edit("~/.Renviron")。 - 在其中加入
MUSESCORE_PATH=<MuseScore 可执行文件的路径>,比如MUSESCORE_PATH="C:/Program Files (x86)/MuseScore 3/bin/MuseScore3.exe"。 - 重启 R。
二、gm 包核心概念
gm 的核心是通过Music对象构建乐谱,主要包含以下层级: Music 对象:整个乐谱的容器,包含多个Part(声部)。 Part 对象:单个声部(如钢琴右手、小提琴声部),包含多个Measure(小节)。 Measure 对象:小节,包含音符、休止符、和弦等音乐元素,以及拍号 / 调号定义。 Note/Rest/Chord 对象:音符、休止符、和弦,需指定音高、时值、八度等属性。
三、完整使用示例
以下是从基础到进阶的示例,覆盖 gm 包的核心功能:
# 加载gm包
library(gm)
# 生成乐谱数据
music <-
Music() +
Meter(4, 4) + # 4/4拍
Line(c("C5", "D5", "E5", "F5")) # 音符序列
music
# 展示乐谱(调用MuseScore渲染并打开)
show(music)
vignette("gm")
四、关键参数说明
| 元素 | 常用参数 | 说明 |
|---|---|---|
note() | pitch(音高)、octave(八度)、duration(时值) | 时值可选:whole(全音符)、half(二分)、quarter(四分)、eighth(八分)、16th(十六分) |
chord() | pitches(音高向量)、octave、duration | 多个音高同时发声,如chord(c("C","E","G"), 4) |
rest() | duration | 休止符,参数同音符 |
export() | file、format | format 可选:musicxml(默认)、pdf |
总结
- 核心流程:初始化
Music对象 → 设置全局属性(拍号 / 调号 / 速度) → 添加Part(声部) → 给Measure(小节)添加音符 / 和弦 / 休止符 → 导出 / 预览。 - 关键依赖:使用
pdf/png导出功能必须安装 LilyPond 并配置环境变量,否则仅能导出 MusicXML。 - 灵活操作:可通过
modify_note()/add_measure()等函数动态修改乐谱,支持程序化生成复杂旋律。
如果需要特定场景的示例(如节奏型生成、调式转换),可以告诉我,我会补充对应的代码。
作者flujoo:我的 R 项目:https://github.com/flujoo/gm
See vignette("gm") for a complete guide to gm.
Complete Guide to gm • gm 查看gm完整教程
