我正在使用Music21库,希望听到乐器中的每一首曲目都应该在我的jupyter笔记本(IPython)中演奏。
我可以成功地将不同音轨上的音乐输出到midi文件中,并通过胆小音播放,但我听不到IPython播放器中除钢琴(midiProgram = 0)以外的任何音轨。
我目前使用的是Ubuntu18.04,使用的是music21 v5.7.0。我也可以在我的Mac系统上复制它。
我试着写出一个流到midi文件中,而不是在笔记本中显示它,我只能在生成的midi文件中听到调整后的乐器。
from music21 import *
core_corp = corpus.corpora.CoreCorpus()
bach_piece = core_corp.search('bwv120.8-a')[0].parse()
bach_piece.show("midi")
for el in bach_piece.recurse():
if 'Instrument' in el.classes:
el.activeSite.replace(el, instrument.Trumpet())
bach_piece.show("midi")
我希望在第二个show()调用中听到所有的小号声音,但仍然只听到钢琴。然而,当我打开生成的midi文件时,我可以听到它们都像喇叭一样。
通过挖掘一些源代码,我认为它与javascript生成的midiPlayer或解码base64编码的midi文件有关,但我在这里没有任何专业知识。
任何帮助都将不胜感激,我目前的解决方法只是使用
!timidity <path to file>
在我的笔记本上,以防其他人运行这个问题。
发布于 2020-03-06 23:33:37
Jupyter Notebook的MIDI播放器有一个问题,而不是Music21。当您使用正确的MIDI播放器编写和播放MIDI文件时,您可以听到所有乐器的声音。用于编写MIDI文件:
stream1 = converter.parse('d:/musicxml_folder/Rondo_Alla_Turca.xml')
stream1.write('midi', 'd:/musicxml_folder/Rondo_Alla_Turca.mid')
为了播放MIDI文件,我使用Windows Media Player。当我在Pycharm IDE中执行此操作时
stream1.show('midi')
Windows Media Player打开。如果你想在另一个环境中听到MIDI文件的声音,你可以使用一个可以播放MIDI文件的库。
https://stackoverflow.com/questions/57453379
复制相似问题