【问题标题】:Python music21 library create png from streamPython music21库从流中创建png
【发布时间】:2018-10-01 00:45:10
【问题描述】:

我在从music21 中的stream 对象生成 png 文件时遇到问题。我阅读了文档并使用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 会生成一个文件,而不是图形。

编辑:

带有环境变量的代码

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 music21 music-notation


    【解决方案1】:

    最好的接口是调用:

    chords.show('lily.png')

    它将运行一切。但是 Lilypond 接口不是那么强大,所以最好安装 MuseScore 并将 .music21rc 中的 MusescoreDirectPNGPath 设置为指向 mscore 可执行文件,然后直接调用 chords.show('musicxml.png'),它会通过 @987654326 进行更好的翻译@。

    【讨论】:

    • 感谢您的回复。我在 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
    • 对我不好。坏我。我应该指向用于更改 environment.UserSettings() 的 python 接口。见web.mit.edu/music21/doc/usersGuide/…
    • 我认为在某些版本中你应该做 show('musicxml.png')
    • 我会 stream.show('musicxml.png') 但它在我的默认照片查看器中显示黑屏。我质疑我的代码。
    • music21.base.Music21ObjectException: cannot support showing in this format yet: lily.png
    【解决方案2】:

    对于所有难以在 Linux(例如 Ubuntu)上的 Jupyter Notebook 中显示 music21 乐谱的用户,请按照以下步骤操作:

    1) 安装 MuseScore (https://musescore.org/en/download),例如使用活泼:

    sudo snap install musescore
    

    2) 在您的文件系统中找到 musescore:

    whereis musescore
    

    在我的例子中是“usr/bin/musescore”。

    3) 设置环境变量告诉music21如何定位music21。在您的 Jupyter Notebook 中执行此操作:

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

    4) 现在您可以使用 musescore 从 music21 渲染乐谱:

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

    【讨论】:

    • OP 询问如何生成 png 输出。简单地安装 Musecore 并调用 .show() 不会生成 png...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2022-10-24
    • 1970-01-01
    • 2015-11-22
    • 2020-06-04
    • 1970-01-01
    • 2018-12-11
    相关资源
    最近更新 更多