我在ipython笔记本中使用music21和MuseScore。它工作得很好,唯一的问题是,每次我创建一个流,然后运行my_stream.show(),它会花费很长时间,因为它等待打开MuseScore应用程序。即使MuseScore已经打开(它会打开应用程序的第二个副本,然后在打印图像后自动关闭),也会发生这种情况。
如何防止music21每次都重新打开MuseScore,并让它使用已经打开的应用程序?
编辑:添加版本/操作系统信息
我在使用MuseScore版本2.1.0的mac (OSX10.10.4)上
我还尝试过用概述的here方法在ipython笔记本中打印出乐谱,但也发生了同样的事情。
至少对于第二种方法来说,问题似乎出在music21/converter/subConverter.py中。
在……下面
class ConverterMusicXML(SubConverter):这里有这个部分:
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我认为特别是这一行
os.system(musescoreRun)每次都独立地打开MuseScore,但是我不知道用什么来替换它,这样music21就可以找到已经在运行的MuseScore实例。
发布于 2021-05-03 23:16:49
同样的问题错误。这里引用了一个关于GitHub的问题
...用
subprocess.run(musescoreRun)修改subconverters.py的os.system(musescoreRun)行891。您还需要在subconverters.py开始时导入子流程。
也许它对你有用!
https://stackoverflow.com/questions/44953626
复制相似问题