0

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

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

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

我在使用 MuseScore 版本 2.1.0 的 mac (OSX 10.10.4) 上

我也尝试过这里概述的方法在 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 实例。

4

1 回答 1

0

同样的问题错误。这里指的是GitHub 上的一个问题:

... 将os.system(musescoreRun)subconverters.py 的第 891 行更改为subprocess.run(musescoreRun). 您还需要在 subconverters.py 的开头导入子进程。

也许它对你有用!

于 2021-05-03T15:16:48.803 回答