Как отобразить музыкальную нотацию с использованием music21 в ipython/python с MuseScore БЕЗ повторного открытия MuseScore при каждом вызове.show()?

Я использую music21 с MuseScore в записной книжке ipython. Это работает хорошо, единственная проблема заключается в том, что каждый раз, когда я создаю Stream и затем запускаю my_stream.show(), это занимает вечность, потому что он ожидает открытия приложения MuseScore. Это происходит, даже если MuseScore уже открыт (он открывает вторую копию приложения, которая затем закрывается после печати изображения).

Как я могу запретить музыке 21 вновь открывать MuseScore и использовать вместо нее уже открытое приложение?

РЕДАКТИРОВАТЬ: Добавление версии / Информация об ОС

Я на Mac (OSX 10.10.4) с использованием MuseScore версии 2.1.0

Я также попробовал описанный здесь метод, чтобы распечатать ноты в блокноте 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.

1 ответ

Те же проблемы с ошибками. Здесь говорится о проблеме на GitHub:

... изменение os.system(musescoreRun) строка 891 файла subconverters.py, автор: subprocess.run(musescoreRun). Вам также необходимо импортировать подпроцесс в начале subconverters.py.

Может быть, это сработает для вас!

Другие вопросы по тегам