Python music21 库从流创建 png
Python music21 library create png from stream
我在从 music21
中的 stream
对象生成 png 文件时遇到问题。我阅读文档并使用 ConverterLilypond
来执行此操作。
chords = stream.Stream()
d7 = chord.Chord(['D4', 'F4', 'A4', 'C5'])
dmin7 = chord.Chord(['D4', 'F-4', 'A4', 'C5'])
dmaj7 = chord.Chord(['D4', 'F#4', 'A4', 'C#5'])
chords.append(d7)
chords.append(dmin7)
chords.append(dmaj7)
conv = converter.subConverters.ConverterLilypond()
conv.write(chords, fmt='lilypond', fp='file', subformats=['png'])
此代码将生成png文件、eps文件计数文件、tex和texi文件。为什么?如何只生成一个文件,PNG 文件?
当我在 jupyter 中尝试 运行 这段代码时,我会使用 chords.show()
来显示图像,但通常在脚本中 show
生成一个文件,而不是图形。
编辑:
带有环境变量的代码
from music21 import *
us = environment.UserSettings()
us['lilypondPath'] = 'C:/Program Files (x86)/LilyPond/usr/bin/lilypond.exe'
us['musescoreDirectPNGPath'] = 'C:/Program Files (x86)/MuseScore 2/bin/MuseScore.exe'
us['musicxmlPath'] = 'C:/Program Files (x86)/MuseScore 2/bin/MuseScore.exe'
d7 = chord.Chord(['D4', 'F4', 'A4', 'C5'])
stream = stream.Stream()
stream.show('musicxml.png')
最好的接口是调用:
chords.show('lily.png')
这将 运行 一切。但是 Lilypond 接口不是那么强大,所以最好安装 MuseScore 并在 .music21rc
中设置 MusescoreDirectPNGPath 以指向 mscore
可执行文件,然后调用 chords.show('musicxml.png')
它会做一个MusicXML
.
翻译得更好
对于在 Linux(例如 Ubuntu)上难以在 Jupyter Notebook 中显示 music21 乐谱的所有用户,请按照以下步骤操作:
1) 安装 MuseScore (https://musescore.org/en/download),例如使用 snappy :
sudo snap install musescore
2) 在您的文件系统中找到 musescore:
whereis musescore
在我的例子中是“usr/bin/musescore
”。
3) 设置环境变量告诉music21如何定位music21。在您的 Jupyter Notebook 中执行:
environment.set("musescoreDirectPNGPath", "/usr/bin/musescore")
4) 现在您可以使用 musescore 从 music21 渲染乐谱:
bwv295 = corpus.parse('bach/bwv295')
bwv295.show()
我在从 music21
中的 stream
对象生成 png 文件时遇到问题。我阅读文档并使用 ConverterLilypond
来执行此操作。
chords = stream.Stream()
d7 = chord.Chord(['D4', 'F4', 'A4', 'C5'])
dmin7 = chord.Chord(['D4', 'F-4', 'A4', 'C5'])
dmaj7 = chord.Chord(['D4', 'F#4', 'A4', 'C#5'])
chords.append(d7)
chords.append(dmin7)
chords.append(dmaj7)
conv = converter.subConverters.ConverterLilypond()
conv.write(chords, fmt='lilypond', fp='file', subformats=['png'])
此代码将生成png文件、eps文件计数文件、tex和texi文件。为什么?如何只生成一个文件,PNG 文件?
当我在 jupyter 中尝试 运行 这段代码时,我会使用 chords.show()
来显示图像,但通常在脚本中 show
生成一个文件,而不是图形。
编辑:
带有环境变量的代码
from music21 import *
us = environment.UserSettings()
us['lilypondPath'] = 'C:/Program Files (x86)/LilyPond/usr/bin/lilypond.exe'
us['musescoreDirectPNGPath'] = 'C:/Program Files (x86)/MuseScore 2/bin/MuseScore.exe'
us['musicxmlPath'] = 'C:/Program Files (x86)/MuseScore 2/bin/MuseScore.exe'
d7 = chord.Chord(['D4', 'F4', 'A4', 'C5'])
stream = stream.Stream()
stream.show('musicxml.png')
最好的接口是调用:
chords.show('lily.png')
这将 运行 一切。但是 Lilypond 接口不是那么强大,所以最好安装 MuseScore 并在 .music21rc
中设置 MusescoreDirectPNGPath 以指向 mscore
可执行文件,然后调用 chords.show('musicxml.png')
它会做一个MusicXML
.
对于在 Linux(例如 Ubuntu)上难以在 Jupyter Notebook 中显示 music21 乐谱的所有用户,请按照以下步骤操作:
1) 安装 MuseScore (https://musescore.org/en/download),例如使用 snappy :
sudo snap install musescore
2) 在您的文件系统中找到 musescore:
whereis musescore
在我的例子中是“usr/bin/musescore
”。
3) 设置环境变量告诉music21如何定位music21。在您的 Jupyter Notebook 中执行:
environment.set("musescoreDirectPNGPath", "/usr/bin/musescore")
4) 现在您可以使用 musescore 从 music21 渲染乐谱:
bwv295 = corpus.parse('bach/bwv295')
bwv295.show()