Python music21库从流创建png

时间:2018-04-20 10:13:58

标签: python music21 music-notation

我在stream中从music21对象生成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')

2 个答案:

答案 0 :(得分:1)

最好的界面是通过调用:

.music21rc

将运行一切。但是Lilypond接口并不是那么强大,所以最好安装MuseScore并将mscore中的MusescoreDirectPNGPath设置为指向chords.show('musicxml.png')可执行文件并且只调用MusicXML它将执行通过{{1}}进行更好的翻译。

答案 1 :(得分:1)

对于所有在Linux(例如Ubuntu)上的Jupyter Notebook中显示音乐中的乐谱的人来说,请遵循以下步骤:

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

sudo snap install musescore

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

whereis musescore

在我的情况下是“ usr/bin/musescore”。

3)设置环境变量以告诉music21如何定位music21。在您的Jupyter笔记本中执行此操作:

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

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

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