python - 在 Python Music21 库中播放鼓声

标签 python audio midi music21 midi-instrument

自从我开始阅读“用计算机制作音乐:用 Python 进行创造性编程”这本书以来已经有几个星期了,现在我在尝试使用这个库播放鼓声时遇到了困难。我正在使用 Mit 的 music21 库,因为这本书中提出的库对我不起作用(它简称为“音乐”)。 这是本书用来播放低音鼓声音的代码示例:

from music import *
drumPart = Part("Drums", 0, 9)
note = Note(ACOUSTIC_BASS_DRUM, QN) # a bass drum strike
drumPhrase = Phrase()
drumPhrase.addNote(note)
drumPart.addPhrase(drumPhrase)
Play.midi(drumPart)

我尝试在 music21 中使用 Hi Hat 声音做同样的事情,但没有播放任何声音:

import music21
from music21 import note, stream, pitch, duration, instrument, tempo, chord
from music21.note import Note, Rest
from music21.chord import Chord
from music21 import midi

def createInstrument(instrument, midiChannel):
    i = instrument
    i.midiChannel = midiChannel
    return i

n = Note("A2", type='quarter')

drumPart = stream.Part()
drumPart.insert(createInstrument(instrument.HiHatCymbal(), 9))

drumMeasure = stream.Measure()
drumMeasure.append(n)
drumPart.append(drumMeasure)
drumPart.show('midi')

任何建议都会非常有帮助,因为除了它的网页之外,网络上几乎没有关于这个库的信息。

提前致谢, 朱利安!

最佳答案

嗨,朱利安,我做了一些小改动,让它在我的 Mac 上运行。我希望这会有所帮助!我基本上只更改了你的一行代码,现在它可以在我的 Mac 上运行了。当我说它有效时,我的意思是它正在正确创建 mid 文件但无法打开它。

无法打开它的原因是默认播放器(在我的例子中是 QuickTime)无法运行中间文件。您可以安装 MuseScore (免费)并将其设置为 mid 文件的默认程序,然后一切都会顺利进行。

from music21 import stream, instrument
from music21.note import Note

n = Note("A2", type='quarter')

drumPart = stream.Part()
drumPart.insert(0, instrument.Woodblock())

drumMeasure = stream.Measure()
drumMeasure.append(n)
drumPart.append(drumMeasure)

# This line actually generate the midi on my mac but there is no relevant software to read it and the opening fail
drumPart.show('midi')

关于python - 在 Python Music21 库中播放鼓声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38938938/

相关文章:

c# - 如何从 FFT 数据中提取 'features'

c# - 使用 WPF 播放 MIDI 文件并与视觉同步时间

c - 如何在 c 中正确发送 MIDI 弯音消息?

Python练习: last letter/first letter

python - 搜索长的连续重复子串

python-3.x - 给定两个音频文件,其中一个是另一个的摘要,是否有一种python方法来查找何时在原始文件中重播该摘要?

Java 应用程序卡在 AudioClip.stop() 上

python - 如何在 GAE Python logging.info 日志中包含文件名和行号?

python - 如何使用 selenium (Python) 获取一个元素和一个类?

ios - 从 MIDI 文件 IOS 读取拍号(如 4/4)