094_使用python控制音符列表_midi_文件制作
使用python控制音符列表_midi_文件制作
回忆
-
上次了解了 列表的下标索引
-
可以是 正数
-
也可以是 负数
-
| 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| o | e | a | s | y |
| -5 | -4 | -3 | -2 | -1 |
-
有
2个函数都可以-
根据 列表项
-
找到 索引位置
-
| 函数 | 输入 | 输出 | 区别 |
|---|---|---|---|
| index | 列表项 | 索引值 | 找不到 就报ValueError |
| find | 列表项 | 索引值 | 找不到 不报错 返回-1 |
-
这列表 还有什么
好玩的 吗?🤔
midi文件
-
我想生成 可以播放的mid文件

-
先进入 Code文件夹
cd Code
-
便于 生成mid 的 下载
制作midi
-
先来个 《两只老虎》的 mid

构建环境
pip install mido
-
先安装需要的包mido

复制代码
from mido import Message, MidiFile, MidiTrack
# 定义简谱数字与MIDI note number的映射(以C调为例)
note_mapping = {
1: 60, # do
2: 62, # re
3: 64, # mi
4: 65, # fa
5: 67, # sol
6: 69, # la
7: 71 # si
}
# 《两只老虎》的简谱音符序列
tune_notes = [
1, 2, 3, 1,
1, 2, 3, 1,
3, 4, 5,
3, 4, 5,
5, 6, 5, 4, 3, 1,
5, 6, 5, 4, 3, 1,
2, 5, 1,
2, 5, 1
]
# 定义每个音符的拍子(这里假设每个音符为1拍,可根据需要调整)
beat_per_note = 1
# 定义每拍的tick数(MIDI文件中时间的基本单位)
ticks_per_beat = 480
# 创建MIDI文件和音轨
mid = MidiFile()
track = MidiTrack()
mid.tracks.append(track)
# 设置乐器为钢琴(program number 0)
track.append(Message('program_change', program=0, time=0))
# 遍历音符序列,生成MIDI消息
for note in tune_notes:
if note in note_mapping:
note_num = note_mapping[note]
# 音符开启消息
track.append(Message('note_on', no

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



