PianoFingering.jl 使用教程
项目介绍
PianoFingering.jl 是一个自动生成钢琴乐谱指法的开源项目,使用 Julia 语言编写。该项目通过基于模型的强化学习来确定最佳指法。需要注意的是,生成的指法仅供参考,并非绝对最佳。目前该项目仅在 Linux 系统上进行了测试。
项目快速启动
环境准备
- 安装 Python (>3.11) 和 Julia (>1.9)
- 确保 Python 和 Julia 版本正确:
❯ python -V Python 3.11.3 ❯ julia -v julia version 1.9.0
- 安装 music21 (>9.1.0):
❯ pip3 install music21
项目安装
- 克隆项目到本地并进入项目目录:
❯ git clone https://github.com/JuliaMusic/PianoFingering.jl.git ❯ cd PianoFingering.jl
- 启动 Julia 并安装依赖:
❯ julia julia> using Pkg julia> Pkg.activate(".") julia> Pkg.instantiate()
运行程序
- 将你的 musicxml 文件放入
musicxml
文件夹。 - 运行指法生成程序:
❯ julia -t auto julia> using Pkg julia> Pkg.activate(".") julia> using PianoFingering julia> fingering("example.musicxml")
- 生成的带注释的钢琴乐谱文件
example_output.musicxml
将存储在output
文件夹中。
应用案例和最佳实践
案例一:生成标准乐谱指法
假设你有一个名为 beethoven_sonata.musicxml
的乐谱文件,你可以使用以下命令生成指法:
❯ julia -t auto
julia> using Pkg
julia> Pkg.activate(".")
julia> using PianoFingering
julia> fingering("beethoven_sonata.musicxml")
案例二:处理 PIG 格式文件
如果你有一个 PIG 格式的文本文件 pig_example.txt
,可以使用以下命令生成指法:
❯ julia -t auto
julia> using Pkg
julia> Pkg.activate(".")
julia> using PianoFingering
julia> fingering("pig_example.txt")
典型生态项目
MusicXML.jl
MusicXML.jl 是一个用于处理 MusicXML 文件的 Julia 包,与 PianoFingering.jl 配合使用,可以更好地处理和生成钢琴乐谱。
MIDI.jl
MIDI.jl 是一个用于处理 MIDI 文件的 Julia 包,未来 PianoFingering.jl 计划支持输入录制好的 MIDI 文件,这将需要训练神经网络来分割左右手的音符。
通过这些生态项目的配合,PianoFingering.jl 可以更好地服务于钢琴乐谱的指法生成和处理。