2016-08-14 226 views
3

自从我开始阅读“使用计算机制作音乐:用Python创作编程”一书已经过了几个星期,现在我在试图用此库播放鼓声时感到困惑。我使用Mit的music21图书馆,因为本书提出的图书馆不适合我(它简称为“音乐”)。 这是本书用来播放低音鼓声音的代码示例:在Python中弹鼓声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但没有播放声音:

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') 

任何意见会非常有帮助,因为除了webPage外,网上几乎没有关于这个库的信息。

在此先感谢, Julián!

+0

你在哪里调用代码中的'Play'方法? – fdsa

+0

如果这两个库都不起作用,那么MIDI输出设备可能有问题(不管它是什么)。 –

+0

该播放方法是最后一行** drumPart.show('midi')** – Julian

回答

0

嗨朱利安我做了一个小的改变,它在我的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')