使用iPython Notebook / Enthought Canopy显示music21,musicXML和PNG对象

6
我正在尝试使用music21库进行实验,为涉及流派分类和归类的机器学习项目做准备。我正在遵循这里提供的一些教程。我正在使用MuseScore作为我的MusicXML程序,并尝试从iPython运行整个过程。
虽然我可以从终端运行某些教程,但是有些元素似乎无法在iPython内部顺利运行。例如:
In [3]: sBach.show()
Out[3]: <music21.ipython21.objects.IPythonPNGObject at 0x10da0aa10>

上面的代码表示创建了PNG对象,但没有显示出来。3 的预期输出如下: enter image description here 尝试以下iPython命令,我得到了一个图像占位符,但没有图像。
In [6]: %load_ext music21.ipython21.ipExtension
In [7]: sBach.show()

我找不到任何关于我的MusicXMLPath的问题。这个tutorial是关于使用Anaconda和musc21的,但是我的所有开发都是用Enthought完成的,所以我不想再运行另一个虚拟环境来使用music21与iPython。
有没有办法在Enthought/iPython笔记本中运行music21?

enter image description here

5个回答

4

我自己一直在解决这个问题。 ... 您是否在music21中设置了musicxmlPath?如果没有,可以通过 environment.set(key, value) 来设置。您可以使用 environment.keys() 查询可用的键。我希望这个答案不会太简单,但它为我解决了问题。


3
这应该在iPython music21文档中有所体现,抱歉:在iPython中使用music21需要安装Lilypond才能在笔记本中生成图像。目前没有(并且在MuseScore 2.0发布之前不会有)使用MusicXML直接生成PNG乐谱图像的方法。
编辑:2015年7月;music21 2.0与MuseScore 2一起安装将使用MuseScore生成PNG图像,如果未安装,则回退到Lilypond。

将其设置为查找MuseScore集,使用以下代码: us = environment.UserSettings(); us['musescoreDirectPNGPath'] = "/Applications/MuseScore 2.app/Contents/MacOS/mscore"(或者您安装的位置)。 - Michael Scott Asato Cuthbert

2
如果还没有尝试过,以下是一些隔离问题原因的步骤:
1)更新到最新的Canopy(编辑:目前为1.4.1)(可能有所帮助,通常有益而无害)。
2)在Canopy的IPython shell中将Pylab后端更改为“Inline(SVG)”,方法是通过“首选项/Python”进行设置。(该shell中的默认Qt后端与music21使用的tkinter库冲突。)
3)在该shell中测试您的脚本,而不是在笔记本中测试。
4)确保Canopy User Python是终端窗口中的默认Python,如此处所述。
5)在普通的ipython终端内测试您的脚本(从终端输入ipython)。
6)在ipython终端的pylab模式下测试(ipython qtconsole --pylab=inline)。
7)在常规浏览器中运行的ipython笔记本中测试您的脚本(从终端输入ipython notebook和/或ipython notebook --pylab=inline)。

谢谢Jonathan。1到5点都没问题,意思是Canopy 1.2是我的当前版本,将Pylab后端更改为SVG,Canopy是我的默认Python等。然而,对于第6点(ipython --pylab=inline),我得到以下提示:警告:'inline'不可用作pylab后端,改用'auto'。尽管如此,没有PNG显示;也许--pylab的问题只是其中的一部分。 - Luis Miguel
抱歉,我的失误。在文本控制台中无法使用内联图形。请改用 ipython qtconsole --pylab=inline。但是,如果您所说的“点1-5都没问题”意味着您的脚本在所有这些点上都能正常工作,那么您实际上不需要测试(6),直接进入(7)即可。您能否确认哪些变化对您有效? - Jonathan March
我仍然不明白如何在iPython或notebook中获取PNG图像。1-5点表明我的所有设置都是正确的,并且第5点给我带来了与笔记本相同的问题。我需要更深入地研究一下,我认为问题不在iPython内部。 - Luis Miguel
只是确认一下,有没有可能music21窗口在后台弹出(所以不可见,但实际上是存在的)? - Jonathan March

0

0
曾经遇到过类似的问题。当人们尝试在ipython/jupyter笔记本中使用plot函数时,会出现相同的问题。您需要调用
%matplotlib inline

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接