当前位置:首页>python>技术分享 | 用python的Mido库生成MIDI格式音乐文件

技术分享 | 用python的Mido库生成MIDI格式音乐文件

  • 2026-10-21 13:28:31
技术分享 | 用python的Mido库生成MIDI格式音乐文件

你好,我是拂晓东夕~

有专业生成生成歌曲的软件,今天想到怎么样用代码去作曲,于是就去试了试,用python代码怎么为诗歌谱曲

素材——我的藏头诗

常怀雅致任君行, 

晓月银钩显豪情,

东旭冉升平湖越, 

男儿有志八方名。

提示词模板实例

用python为"常怀雅致任君行,晓月银钩显豪情,东旭冉升平湖越,男儿有志八方名"这首藏头诗谱曲,生成一个midi文件,每个字对应一个音符,总共四句,这四句中前六个字对应四分音符,最后一个字对应二分音符,整体的格式要符合羽调式,四句起承转合

核心代码(AI)
import midofrom mido import MidiFile, MidiTrack, Message# 羽调式(Yu Mode)的音高序列(基于C大调的A羽调:A B C E F A)yu_mode_notes = {'C': 60, 'D': 62, 'E': 64, 'F': 65, 'G': 67, 'A': 69, 'B': 71, 'C5': 72, 'D5': 74, 'E5': 76, 'F5': 77, 'G5': 79, 'A5': 81}title = "常怀雅致任君行,晓月银钩显豪情,东旭冉升平湖越,男儿有志八方名"phrases = title.split(",")# 创建MIDI文件mid = MidiFile()track = MidiTrack()mid.tracks.append(track)# 设置速度(BPM)track.append(mido.MetaMessage('set_tempo', tempo=mido.bpm2tempo(100)))# 各句的音高序列,体现起承转合# 起句(第一句):平稳开头,建立主题tune_1 = [yu_mode_notes['A'], yu_mode_notes['B'], yu_mode_notes['C'], yu_mode_notes['E'], yu_mode_notes['F'], yu_mode_notes['A'], yu_mode_notes['C5']]# 承句(第二句):延续主题,略有发展tune_2 = [yu_mode_notes['B'], yu_mode_notes['C'], yu_mode_notes['E'], yu_mode_notes['F'], yu_mode_notes['A'], yu_mode_notes['B'], yu_mode_notes['D5']]# 转句(第三句):转折对比,推向高潮tune_3 = [yu_mode_notes['C'], yu_mode_notes['E'], yu_mode_notes['G'], yu_mode_notes['A'], yu_mode_notes['B'], yu_mode_notes['E5'], yu_mode_notes['G5']]# 合句(第四句):回归主题,圆满结束tune_4 = [yu_mode_notes['A'], yu_mode_notes['G'], yu_mode_notes['F'], yu_mode_notes['E'], yu_mode_notes['C'], yu_mode_notes['A'], yu_mode_notes['A5']]tunes = [tune_1, tune_2, tune_3, tune_4]# 写入音符for i, phrase in enumerate(phrases):for j, char in enumerate(phrase):# 前六个字是四分音符,最后一个字是二分音符        duration = 480 if j < 6 else 960        note = tunes[i][j]# 发送音符开始消息        track.append(Message('note_on', note=note, velocity=64, time=0))# 发送音符结束消息(间隔时间为音符时长)        track.append(Message('note_off', note=note, velocity=64, time=duration))# 句间停顿(四分音符时长)    track.append(Message('note_off', note=60, velocity=64, time=480))# 保存MIDI文件mid.save('poem_melody.mid')print("MIDI文件生成完成:poem_melody.mid")
格式转换网站

https://www.online-convert.com/

生成音频

本来今晚录了视频的,结果视频等了好长时间生成不了,具体是哪个软件就不点名了

晚安

-End-
图文| 拂晓东夕

感谢阅读

如果你也是只身前行

愿所有的能量能凝聚在这里

靠近我,我们一起进步

我是拂晓东夕

等你

最新文章

随机文章