Python music21库从流创建png

2024-03-28 19:21:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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生成一个文件,而不是图形。在

编辑:

带环境变量的代码

^{pr2}$

Tags: 文件代码streampnga4chordsappendchord
2条回答

对于那些想在Linux(例如Ubuntu)上用Jupyter笔记本电脑显示music21乐谱的人来说,请遵循以下步骤:

1)安装MuseScore(https://musescore.org/en/download),例如使用snappy:

sudo snap install musescore

2)在文件系统中找到musescore:

^{pr2}$

在我的例子中是“usr/bin/musescore”。在

3)设置环境变量,告诉music21如何找到music21。在你的Jupyter笔记本上做:

environment.set("musescoreDirectPNGPath", "/usr/bin/musescore")

4)现在可以使用musescore渲染music21中的乐谱:

bwv295 = corpus.parse('bach/bwv295')
bwv295.show()

最好的接口是调用:

chords.show('lily.png')

它将运行一切。但是Lilypond接口不是很强大,所以最好安装MuseScore并在.music21rc中设置MusescoreDirectPNGPath指向mscore可执行文件和刚刚调用的chords.show('musicxml.png'),它通过MusicXML进行更好的转换。在

相关问题 更多 >