我一直在尝试加载一个 MusicXML 文件,对其进行编辑(删除几个部分),并创建一个 PDF 表格文档 + midi/mp3,所有这些都使用 Python。
我首先查看了
music21
,它会正确加载我的MusicXML文件,但据我所知,不会输出正确的文件(输出文件中的所有细节都消失了,剩下的只是音符和标题)
然后我发现
abjad
看起来很有希望。它确实输出了高质量的 ly/pdf 文件,但没有导入 musicxml。
然后,我发现Lilypond带有一个
musicxml2ly
脚本。我能够调用它并使用 sh
(很棒的库!)在 python 中获取结果 lilypond 文件,但是 abjad
lilypond
解析器不会解析它(文档说它解析 lilypond 的“大子集”) ,没有更高的精度)。
最后,我发现
music21
有一个 abjad python 对象的导出器,但它似乎不再出现在代码库中,并且导出器的源代码显然只是导出了注释。
我有点别无选择,我能做些什么来实现这些目标?
(补充一点:我仍然不知道如何做第二部分,使用声音字体转到 midi/mp3,但这可能不是最难的部分。有什么建议吗?)
如果你有MuseScore 2+,你可以在python中设置它
import music21
c = music21.converter.parse('path_to_musicxml.xml')
c.show('musicxml.pdf')
c.show('midi')
%运行/mnt/data/add_libraries_py 从 ai_song_maker 导入 Song_maker
abc_notation_intro = """ 中号:4/4 长:1/4 问:1/4=70 钾:C V:1 谱号=高音 name=“钢琴” snm=“钢琴” | [C2E2G2]4 | [G2B2D2]4 | [A2C2E2]4 | [F2A2C2]4 | ”“”
ordered_part_instrument_intro = {'钢琴': '钢琴'}
musicxml_path_intro = '/mnt/data/song_intro_musicxml.xml' midi_path_intro = '/mnt/data/song_intro_midi.mid'
parts_data_intro,score_data_intro = Song_maker.process_abc(abc_notation_intro,ordered_part_instrument_intro,musicxml_path_intro,midi_path_intro)
musicxml_path_intro、midi_path_intro