首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ipython/python中使用music21来显示音乐符号,而不用在每次调用.show()时重新打开MuseScore?

如何在ipython/python中使用music21来显示音乐符号,而不用在每次调用.show()时重新打开MuseScore?
EN

Stack Overflow用户
提问于 2017-07-06 23:49:21
回答 1查看 599关注 0票数 0

我在ipython笔记本中使用music21和MuseScore。它工作得很好,唯一的问题是,每次我创建一个流,然后运行my_stream.show(),它会花费很长时间,因为它等待打开MuseScore应用程序。即使MuseScore已经打开(它会打开应用程序的第二个副本,然后在打印图像后自动关闭),也会发生这种情况。

如何防止music21每次都重新打开MuseScore,并让它使用已经打开的应用程序?

编辑:添加版本/操作系统信息

我在使用MuseScore版本2.1.0的mac (OSX10.10.4)上

我还尝试过用概述的here方法在ipython笔记本中打印出乐谱,但也发生了同样的事情。

至少对于第二种方法来说,问题似乎出在music21/converter/subConverter.py中。

在……下面

代码语言:javascript
复制
class ConverterMusicXML(SubConverter):

这里有这个部分:

代码语言:javascript
复制
    musescoreRun = '"' + musescorePath + '" ' + fp + " -o " + fpOut + " -T 0 "
    if 'dpi' in keywords:
        musescoreRun += " -r " + str(keywords['dpi'])

    if common.runningUnderIPython():
        musescoreRun += " -r " + str(defaults.ipythonImageDpi)

    storedStrErr = sys.stderr
    fileLikeOpen = six.StringIO()
    sys.stderr = fileLikeOpen
    os.system(musescoreRun)
    fileLikeOpen.close()
    sys.stderr = storedStrErr

我认为特别是这一行

代码语言:javascript
复制
os.system(musescoreRun)

每次都独立地打开MuseScore,但是我不知道用什么来替换它,这样music21就可以找到已经在运行的MuseScore实例。

EN

回答 1

Stack Overflow用户

发布于 2021-05-03 23:16:49

同样的问题错误。这里引用了一个关于GitHub的问题

...用subprocess.run(musescoreRun)修改subconverters.py的os.system(musescoreRun)行891。您还需要在subconverters.py开始时导入子流程。

也许它对你有用!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44953626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档