首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Music21 Python库将仅输出钢琴声音

Music21 Python库将仅输出钢琴声音
EN

Stack Overflow用户
提问于 2019-08-12 04:28:46
回答 1查看 598关注 0票数 2

我正在使用Music21库,希望听到乐器中的每一首曲目都应该在我的jupyter笔记本(IPython)中演奏。

我可以成功地将不同音轨上的音乐输出到midi文件中,并通过胆小音播放,但我听不到IPython播放器中除钢琴(midiProgram = 0)以外的任何音轨。

我目前使用的是Ubuntu18.04,使用的是music21 v5.7.0。我也可以在我的Mac系统上复制它。

我试着写出一个流到midi文件中,而不是在笔记本中显示它,我只能在生成的midi文件中听到调整后的乐器。

代码语言:javascript
运行
复制
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文件有关,但我在这里没有任何专业知识。

任何帮助都将不胜感激,我目前的解决方法只是使用

代码语言:javascript
运行
复制
!timidity <path to file>

在我的笔记本上,以防其他人运行这个问题。

EN

回答 1

Stack Overflow用户

发布于 2020-03-06 23:33:37

Jupyter Notebook的MIDI播放器有一个问题,而不是Music21。当您使用正确的MIDI播放器编写和播放MIDI文件时,您可以听到所有乐器的声音。用于编写MIDI文件:

代码语言:javascript
运行
复制
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中执行此操作时

代码语言:javascript
运行
复制
stream1.show('midi')

Windows Media Player打开。如果你想在另一个环境中听到MIDI文件的声音,你可以使用一个可以播放MIDI文件的库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57453379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档