使用Python创建MIDI文件
基本上,我想从头开始制作MIDI文件,并把它们放到网上。我对使用不同的编程语言都很开放,但我更喜欢用Python(这两种语言中的一种,如果这有什么区别的话)。我想知道应该用哪个库。提前谢谢你们!
3 个回答
-2
Perl 这个编程语言有一个叫做 MIDI::Simple 的模块。我记得在已经不再出版的《Perl期刊》中看到过一篇关于它的文章:
0
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,当你在写代码时,可能会发现某些功能没有按照你的预期工作。这种情况下,很多人会去网上寻找答案,像是在StackOverflow这样的平台上提问。
在提问的时候,最好能把你的问题描述得清楚一些。比如,你可以告诉别人你在做什么,遇到了什么问题,以及你尝试过哪些解决方法。这样,其他人才能更好地理解你的情况,并给出有用的建议。
另外,分享一些代码片段也是很重要的。这样别人可以看到你的代码是怎么写的,可能会更容易找到问题所在。记得把代码格式化好,这样看起来会更清晰。
总之,提问的时候要尽量详细,这样才能提高得到帮助的机会。
from midiutil import MIDIFile
def create_midi(chord_progression, file_name='jazz_piano_progression.mid', tempo=120):
# Create a MIDI file
midi = MIDIFile(1)
midi.addTempo(0, 0, tempo)
# Define the chords and their durations
chords = [
{'pitch': [60, 63, 67, 70], 'duration': 4}, # Cm7
{'pitch': [65, 68, 72, 75], 'duration': 4}, # Fm7
{'pitch': [70, 74, 77, 81], 'duration': 4}, # Bb7
{'pitch': [64, 68, 71, 75], 'duration': 4} # Ebmaj7
]
time = 0
for chord in chords:
for pitch in chord['pitch']:
midi.addNote(0, 0, pitch, time, chord['duration'], 100)
time += chord['duration']
# Save the MIDI file
with open(file_name, 'wb') as midi_file:
midi.writeFile(midi_file)
# Generate MIDI file with the specified chord progression
create_midi([{'Cm7': ['C', 'E♭', 'G', 'B♭']},
{'Fm7': ['F', 'A♭', 'C', 'E♭']},
{'Bb7': ['B♭', 'D', 'F', 'A♭']},
{'Ebmaj7': ['E♭', 'G', 'B♭', 'D']}
], 'jazz_piano_progression.mid', tempo=120)
9