Библиотека Python Music21 создает PNG из потока

У меня проблема с созданием файла png из объекта stream в music21. Я читал документацию и для этого использую ConverterLilypond.

  chords = stream.Stream()

  d7 = chord.Chord(['D4', 'F4', 'A4', 'C5'])
  dmin7 = chord.Chord(['D4', 'F-4', 'A4', 'C5'])
  dmaj7 = chord.Chord(['D4', 'F#4', 'A4', 'C#5'])
  chords.append(d7)
  chords.append(dmin7)
  chords.append(dmaj7)
  conv = converter.subConverters.ConverterLilypond()
  conv.write(chords, fmt='lilypond', fp='file', subformats=['png'])

Этот код сгенерирует файл png, файл подсчета файлов eps, файл tex и texi. Почему? Как я могу создать только один файл, файл PNG?

Когда я пытаюсь запустить этот код в jupyter, я бы использовал chords.show() для отображения изображения, но обычно в сценарии show генерирует файл, а не графику.

Обновлено:

Код со средой var

from music21 import *

us = environment.UserSettings()
us['lilypondPath'] = 'C:/Program Files (x86)/LilyPond/usr/bin/lilypond.exe'
us['musescoreDirectPNGPath'] = 'C:/Program Files (x86)/MuseScore 2/bin/MuseScore.exe'
us['musicxmlPath'] = 'C:/Program Files (x86)/MuseScore 2/bin/MuseScore.exe'

d7 = chord.Chord(['D4', 'F4', 'A4', 'C5'])

stream = stream.Stream()
stream.show('musicxml.png')
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
0
1 619
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Лучший интерфейс - это вызов:

chords.show('lily.png')

который будет запускать все. Но интерфейс Lilypond не так силен, поэтому лучше было бы установить MuseScore и настроить MusescoreDirectPNGPath в .music21rc так, чтобы он указывал на исполняемый файл mscore, а просто вызовите chords.show('musicxml.png'), и он будет намного лучше переводить через MusicXML.

Спасибо за ответ. Я работаю в Windows, где мне найти .music21rc? Я добавляю us['musescoreDirectPNGPath'] = 'C:/Program Files (x86)/MuseScore 2/bin/MuseScore.exe' us['musicxmlPath'] = 'C:/Program Files (x86)/MuseScore 2/bin/MuseScore.exe' в свой сценарий, но это не работает. Еще та же ошибка cannot support showing in this format yet: png

lukassz 21.04.2018 07:37

Плохо мне. Плохо мне. Я должен указывать на интерфейс python для изменения environment.UserSettings (). См. web.mit.edu/music21/doc/usersGuide/…

Michael Scott Cuthbert 21.04.2018 16:30

И я думаю, что в некоторых версиях вам стоит показывать (‘musicxml.png’)

Michael Scott Cuthbert 21.04.2018 16:31

Я использую stream.show('musicxml.png'), но он показывает черный экран в моем средстве просмотра фотографий по умолчанию. Я поставил свой код под сомнение.

lukassz 22.04.2018 11:51
music21.base.Music21ObjectException: cannot support showing in this format yet: lily.png
Cerin 10.05.2020 21:12

Для всех, кому будет сложно отображать партитуры из music21 в Jupyter Notebook в Linux (например, Ubuntu), выполните следующие действия:

1) Установите MuseScore (https://musescore.org/en/download), например используя мгновенно:

sudo snap install musescore

2) Найдите musescore в своей файловой системе:

whereis musescore

В моем случае это «usr/bin/musescore».

3) Задайте переменную окружения, чтобы сообщить music21, как найти музыку21. Сделайте это в своем блокноте Jupyter:

environment.set("musescoreDirectPNGPath", "/usr/bin/musescore")

4) Теперь вы можете использовать musescore для рендеринга нот из music21:

bwv295 = corpus.parse('bach/bwv295')
bwv295.show()

OP спрашивает, как сгенерировать вывод png. Простая установка Musescore и вызов .show() не генерируют png ...

Cerin 10.05.2020 21:13

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