python编写midi文件

此程序采用的是python的mido库进行编曲,mido库可以直接通过命令

pip install mido

来进行安装。
mido库的详细用法可以参考某位大佬的文章mido库的详解
这里直接放项目代码

from mido import Message, MidiFile, MidiTrack
import os
import traceback
import random
#把音名、唱名等换成 MIDO相对应的数字
#已完成
def num(yin):                    
    if yin == "A0" or yin =="a0":            #最低音 la
        return 21
    if yin == "B0" or yin == "b0":           #最低的si
        return 23
    if yin == "C1" or yin == "c1":           #低三个八度 do
        return 24
    if yin == "D1" or yin == "d1":           #re
        return 26
    if yin == "E1" or yin == "e1":           #mi
        return 28
    if yin == "F1" or yin == "f1":           #fa
        return 29
    if yin == "G1" or yin == "g1":           #so 或者说 sol
        return 31
    if yin == "A1" or yin == "a1":           #la
        return 33
    if yin == "B1" or yin == "b1":           #si
        return 35
    if yin == "C2" or yin == "c2":           #低两个八度 do
        return 36
    if yin == "D2" or yin == "d2":           #re
        return 38
    if yin == "E2" or yin == "e2":           #mi
        return 40
    if yin == "F2" or yin == "f2":           #fa
        return 41
    if yin == "G2" or yin == "g2":           #so 或者说 sol
        return 43
    if yin == "A2" or yin == "a2":           #la
        return 45
    if yin == "B2" or yin == "b2":           #si
        return 47
    if yin == "C3" or yin == "c3" or yin == ".do" or yin == ".1" or yin == ".Do" or yin == ".DO":          #低八度   do
        return 48
    if yin == "D3" or yin == "d3" or yin == ".re" or yin == ".2" or yin == ".Re" or yin == ".RE":           #re
        return 50
    if yin == "E3" or yin == "e3" or yin == ".mi" or yin == ".3" or yin == ".Mi" or yin == ".MI":           #mi
        return 52
    if yin == "F3" or yin == "f3" or yin == ".fa" or yin == ".4" or yin == ".Fa" or yin == ".FA":           #fa
        return 53
    if yin == "G3" or yin == "g3" or yin == ".so" or yin == ".sol" or yin == ".5" or yin == ".So" or yin == ".Sol" or yin == ".SO" or yin == ".SOL":   #so 或者说 sol
        return 55
    if yin == "A3" or yin == "a3" or yin == ".la" or yin == ".6" or yin == ".La" or yin == ".LA":            #la
        return 57
    if yin == "B3" or yin == "b3" or yin == ".si" or yin == ".7" or yin == ".Si" or yin == ".SI":             #si
        return 59
    #中音区
    if yin == "C4" or yin == "c4" or yin == "C" or yin == "c" or yin == "1" or yin == 1 or yin == "do" or yin == "Do" or yin == "DO":       #中音do
        return 60
    if yin == "D4" or yin == "d4" or yin == "D" or yin == "d" or yin == "2" or yin == 2 or yin == "re" or yin == "Re" or yin == "RE":        #中音re
        return 62
    if yin == "E4" or yin == "e4" or yin == "E" or yin == "e" or yin == "3" or yin == 3 or yin == "mi" or yin == "Mi" or yin == "MI":       #中音mi
        return 64
    if yin == "F4" or yin == "f4" or yin == "F" or yin == "f" or yin == "4" or yin == 4 or yin == "fa" or yin == "Fa" or yin == "FA":       #中音fa
        return 65
    if yin == "G4" or yin == "g4" or yin == "G" or yin == "g" or yin == "5" or yin == 5 or yin == "so" or yin == "sol" or yin == "So" or yin == "Sol" or yin == "SO" or yin == "SOL":   #中音so  或者说 sol
        return 67
    if yin == "A4" or yin == "a4" or yin == "A" or yin == "a" or yin == "6" or yin == 6 or yin == "la" or yin == "La" or yin == "LA":       #中音la
        return 69
    if yin == "B4" or yin == "b4" or yin == "B" or yin == "b" or yin == "7" or yin == 7 or yin == "si" or yin == "Si" or yin == "SI":       #中音si
        return 71
    #高音区
    if yin == "C5" or yin == "c5" or yin == "1." or yin == "do." or yin == "Do." or yin == "DO.":   #do
        return 72
    if yin == "D5" or yin == "d5" or yin == "2." or yin == "re." or yin == "Re." or yin == "RE.":   #re 
        return 74
    if yin == "E5" 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值