python演奏音乐

本文介绍了一个使用Python和Mido库创建的简单程序,该程序能够演奏歌曲“Lemon”。通过定义音符和节奏,程序可以生成MIDI文件,并进一步播放出来。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天早晨闲来无事逛b站,看到有大佬用c++演奏了很多歌曲,然后心血来潮,就想着用python做一个,无奈,自己早年间学过的吉他的乐理知识早就忘得一干二净了,没办法,开展cv大法,找到了一首大佬编写的lemon,特此记录一下。

import mido


mid = mido.MidiFile()
track = mido.MidiTrack()
mid.tracks.append(track)

#bpm = \frac{60000000}{tempo}
def music(note,base_num,base_time):
    
    #meta_time = 60 * 60 * 10 / bpm
    major_notes = [0, 2, 2, 1, 2, 2, 2, 1]
    base_note = 60
    track.append(mido.Message('note_on', note=base_note+base_num*12 + sum(major_notes[0:note]), velocity=96, time=0,channel=1))
    track.append(mido.Message('note_off', note=base_note+base_num*12 + sum(major_notes[0:note]), velocity=96, time=int(480*base_time),channel=1))
    #track.append(mido.Message('note_on', note=base_note, velocity=96, time=0))
    #track.append(mido.Message('note_off', note=base_note, velocity=96, time=480*base_time))
    
def lemon_music():
    #1
    music(1,1,0.5)
    music(2,1,0.5)

    music(3,1,1)
    music(1,1,0.5)
    music(6,0,1.5)
    music(2,1,1)

    music(7,0,1)
    music(5,0,0.5)
    music(3,0,1.5)
    music(7,0,1)

    music(6,0,1)
    music(5,0,0.5)
    music(1,0,1.5)
    music(5,0,1)

    music(3,0,3)
    #2
    music(2,0,0.5)
    music(3,0,0.5)

    music(4,0,2)
    #
    music(1,1,1)
    music(7,0,0.5)
    music(1,1,0.5)

    music(5,0,2)
    music(4,0,1)
    music(3,0,0.75)
    music(4,0,0.25)

    music(4,0,2)
    #
    music(1,1,1)
    music(7,0,0.5)
    music(6,0,0.5)

    music(5,0,3)
    #
    music(1,1,0.5)
    music(2,1,0.5)

    music(3,1,1)
    music(1,1,0.5)
    music(6,0,1.5)
    music(2,1,1)

    music(7,0,1)
    music(5,0,0.5)
    music(3,0,1.5)
    music(7,0,1)

    music(6,0,1)
    music(5,0,0.5)
    music(1,0,1.5)
    music(5,0,1)

    music(3,0,3)
    #
    music(2,0,0.5)
    music(3,0,0.5)

    music(4,0,2)
    #
    music(5,0,1)
    music(4,0,0.5)
    music(5,0,0.5)

    music(3,0,1)
    music(5,0,1)
    music(1,1,1)
    music(3,1,1)

    music(2,1,1.5)
    music(2,1,0.5)
    music(2,1,0.5)
    music(1,1,1)
    music(1,1,0.5)

    music(1,1,4)
    #加空白
    track.append(mido.Message('note_on', note=0, velocity=0, time=0))
    track.append(mido.Message('note_off', note=0, velocity=0, time=480*7))

    
    music(1,1,0.5)
    music(2,1,0.5)

    music(3,1,1)
    music(1,1,0.5)
    music(6,0,1.5)
    music(2,1,1)

    music(7,0,1)
    music(5,0,0.5)
    music(3,0,1.5)
    music(7,0,1)

    music(6,0,1)
    music(5,0,0.5)
    music(1,0,1.5)
    music(5,0,1)

    music(3,0,3)

    #
    music(2,0,0.5)
    music(3,0,0.5)

    music(4,0,2)
    #
    music(1,1,1)
    music(7,0,0.5)
    music(1,1,0.5)

    music(5,0,2)
    music(4,0,1)
    music(3,0,0.75)
    music(4,0,0.25)

    music(4,0,2)
    #
    music(1,1,1)
    music(7,0,0.5)
    music(6,0,0.5)

    music(5,0,3)
    #
    music(1,1,0.5)
    music(2,1,0.5)

    music(3,1,1)
    music(1,1,0.5)
    music(6,0,1.5)
    music(2,1,1)

    music(7,0,1)
    music(5,0,0.5)
    music(3,0,1.5)
    music(7,0,1)

    music(6,0,1)
    music(5,0,0.5)
    music(1,0,1.5)
    music(5,0,1)

    music(3,0,3)
    #
    music(2,0,0.5)
    music(3,0,0.5)

    music(4,0,2)
    music(5,0,1)
    music(4,0,0.5)
    music(5,0,0.5)

    music(3,0,1)
    music(5,0,1)
    music(1,1,1)
    music(3,1,1)

    music(2,1,0.5)
    music(2,1,1.5)
    music(2,1,0.75)
    music(1,1,1.25)

    music(1,1,4)
    #
    music(6,0,1.5)
    music(7,0,0.5)
    music(1,1,1)
    music(7,0,0.5)
    music(6,0,0.5)

    music(5,0,1)
    music(3,1,1)
    music(3,1,2)
    #

    music(2,1,1.5)
    music(3,1,0.5)
    music(4,1,1)
    music(3,1,0.5)
    music(2,1,0.5)

    music(1,1,1)
    music(2,1,1)
    music(5,0,2)
    #
    music(4,0,1.5)
    music(5,0,0.5)
    music(6,0,1)
    music(5,0,0.5)
    music(4,0,0.5)
    
    music(3,0,1)
    music(1,1,1)
    music(1,1,1)
    music(1,1,1)

    #
    music(7,0,2)
    music(6,0,1)
    music(7,0,1)

    music(1,1,1)
    #加空白
    track.append(mido.Message('note_on', note=0, velocity=0, time=0))
    track.append(mido.Message('note_off', note=0, velocity=0, time=480*1))
    music(2,1,0.75)
    music(3,1,0.25)
    music(2,1,0.75)
    music(1,1,0.25)

    music(6,0,0.5)
    music(1,1,1.5)
    music(3,1,0.75)
    music(5,1,1.25)#/

    music(2,1,0.5)
    music(1,1,1.5)
    #
    music(2,1,0.75)
    music(3,1,0.25)
    music(2,1,0.75)
    music(1,1,0.25)

    music(6,0,0.5)
    music(1,1,1.5)
    music(3,1,0.75)
    music(5,1,1.25)

    music(2,1,0.5)
    music(1,1,1.5)
    #
    music(2,1,0.75)
    music(3,1,0.25)
    music(2,1,0.75)
    music(1,1,0.25)

    music(6,0,0.5)
    music(1,1,1.5)
    music(3,1,0.75)
    music(5,1,1.25)#\

    music(5,1,0.125)
    music(6,1,0.375)
    music(5,1,1.5)

    music(5,1,0.5)
    music(1,2,1.5)

    music(7,1,0.5)
    music(5,1,1.5)
    music(3,1,0.5)
    music(5,1,1)
    music(2,1,0.5)

    music(2,1,2)
    #
    music(2,1,0.75)
    music(3,1,0.25)
    music(2,1,0.75)
    music(1,1,0.25)

    music(6,0,0.5)
    music(1,1,1.5)
    music(3,1,0.75)
    music(5,1,1.25)
    #
    music(2,1,0.5)
    music(1,1,1.5)
    music(1,1,0.75)
    music(1,1,0.25)
    music(2,1,0.75)
    music(3,1,0.25)

    music(4,1,0.75)
    music(3,1,1.25)#\
    music(3,1,0.125)
    music(2,1,0.875)#\
    music(7,0,1)

    music(1,1,3)
    #
    music(1,1,0.75)
    music(7,0,0.25)

    music(6,0,1)
    music(7,0,1)
    music(1,1,1)
    music(2,1,1)

    music(1,1,1)
    music(5,0,1)
    music(3,0,1)#\
    music(5,0,1)

    music(6,0,0.75)
    music(2,1,1.25)
    music(7,0,0.75)
    music(1,1,1.25)

    music(1,1,3)
    music(1,1,0.75)
    music(7,0,0.25)

    music(6,0,1)
    music(7,0,1)
    music(1,1,1)
    music(2,1,1)

    music(1,1,1)
    music(5,0,1)
    music(1,1,1)#\
    music(2,1,1)

    music(3,1,0.75)
    music(4,1,1.25)
    music(2,1,0.75)
    music(1,1,1.25)

    music(1,1,3)
    #Kongbai
    #
    music(3,1,1)
    music(1,1,1)
    music(5,1,1)
    music(1,1,1)
    music(1,1,1)
    music(2,1,1)
    music(5,1,1)
    music(1,1,1)
    music(1,1,1)
    music(2,1,1)
    music(5,1,1)
    music(1,1,1)
    music(1,1,1)
    music(2,1,1)
    music(3,1,1)
    music(1,1,1)
    music(2,1,2)
    music(5,1,1)
    music(1,1,1)
    music(1,1,1)
    music(2,1,1)
    music(5,1,1)
    music(1,1,1)
    music(2,1,2)
    music(1,1,2)
    music(2,1,3)
    music(1,1,0.5)
    music(2,1,0.5)

    music(3,1,1)
    music(1,1,0.5)
    music(6,0,1.5)
    music(2,1,1)

    music(7,0,1)
    music(5,0,0.5)
    music(3,0,1.5)
    music(7,0,1)

    music(6,0,1)
    music(5,0,0.5)
    music(1,0,1.5)
    music(5,0,1)

    music(3,0,3)

    #
    music(2,0,0.5)
    music(3,0,0.5)

    music(4,0,2)
    #
    music(1,1,1)
    music(7,0,0.5)
    music(1,1,0.5)

    music(5,0,2)
    music(4,0,1)
    music(3,0,0.75)
    music(4,0,0.25)

    music(4,0,2)
    #
    music(1,1,1)
    music(7,0,0.5)
    music(6,0,0.5)

    music(5,0,3)
    #
    music(1,1,0.5)
    music(2,1,0.5)

    music(3,1,1)
    music(1,1,0.5)
    music(6,0,1.5)
    music(2,1,1)

    music(7,0,1)
    music(5,0,0.5)
    music(3,0,1.5)
    music(7,0,1)

    music(6,0,1)
    music(5,0,0.5)
    music(1,0,1.5)
    music(5,0,1)

    music(3,0,3)
    #
    music(2,0,0.5)
    music(3,0,0.5)

    music(4,0,2)
    music(5,0,1)
    music(4,0,0.5)
    music(5,0,0.5)

    music(3,0,1)
    music(5,0,1)
    music(1,1,1)
    music(3,1,1)

    music(2,1,0.5)
    music(2,1,1.5)
    music(2,1,0.75)
    music(1,1,1.25)

    music(1,1,4)
    #
    music(6,0,1.5)
    music(7,0,0.5)
    music(1,1,1)
    music(7,0,0.5)
    music(6,0,0.5)

    music(5,0,1)
    music(3,1,1)
    music(3,1,2)
    #

    music(2,1,1.5)
    music(3,1,0.5)
    music(4,1,1)
    music(3,1,0.5)
    music(2,1,0.5)

    music(1,1,1)
    music(2,1,1)
    music(5,0,2)
    #
    music(4,0,1.5)
    music(5,0,0.5)
    music(6,0,1)
    music(5,0,0.5)
    music(4,0,0.5)
    
    music(3,0,1)
    music(1,1,1)
    music(1,1,1)
    music(1,1,1)

    #
    music(7,0,2)
    music(6,0,1)
    music(7,0,1)

    music(1,1,1)
    #加空白
    track.append(mido.Message('note_on', note=0, velocity=0, time=0))
    track.append(mido.Message('note_off', note=0, velocity=0, time=480*1))
    music(2,1,0.75)
    music(3,1,0.25)
    music(2,1,0.75)
    music(1,1,0.25)

    music(6,0,0.5)
    music(1,1,1.5)
    music(3,1,0.75)
    music(5,1,1.25)#/

    music(2,1,0.5)
    music(1,1,1.5)
    #
    music(2,1,0.75)
    music(3,1,0.25)
    music(2,1,0.75)
    music(1,1,0.25)

    music(6,0,0.5)
    music(1,1,1.5)
    music(3,1,0.75)
    music(5,1,1.25)

    music(2,1,0.5)
    music(1,1,1.5)
    #
    music(2,1,0.75)
    music(3,1,0.25)
    music(2,1,0.75)
    music(1,1,0.25)

    music(6,0,0.5)
    music(1,1,1.5)
    music(3,1,0.75)
    music(5,1,1.25)#\

    music(5,1,0.125)
    music(6,1,0.375)
    music(5,1,1.5)

    music(5,1,0.5)
    music(1,2,1.5)

    music(7,1,0.5)
    music(5,1,1.5)
    music(3,1,0.5)
    music(5,1,1)
    music(2,1,0.5)

    music(2,1,2)
    #
    music(2,1,0.75)
    music(3,1,0.25)
    music(2,1,0.75)
    music(1,1,0.25)

    music(6,0,0.5)
    music(1,1,1.5)
    music(3,1,0.75)
    music(5,1,1.25)
    #
    music(2,1,0.5)
    music(1,1,1.5)
    music(1,1,0.75)
    music(1,1,0.25)
    music(2,1,0.75)
    music(3,1,0.25)

    music(4,1,0.75)
    music(3,1,1.25)#\
    music(3,1,0.125)
    music(2,1,0.875)#\
    music(7,0,1)

    music(1,1,3)
    #
    music(1,1,0.75)
    music(7,0,0.25)

    music(6,0,1)
    music(7,0,1)
    music(1,1,1)
    music(2,1,1)

    music(1,1,1)
    music(5,0,1)
    music(3,0,1)#\
    music(5,0,1)

    music(6,0,0.75)
    music(2,1,1.25)
    music(7,0,0.75)
    music(1,1,1.25)

    music(1,1,3)
    music(1,1,0.75)
    music(7,0,0.25)

    music(6,0,1)
    music(7,0,1)
    music(1,1,1)
    music(2,1,1)

    music(1,1,1)
    music(5,0,1)
    music(1,1,1)#\
    music(2,1,1)

    music(3,1,0.75)
    music(4,1,1.25)
    music(2,1,0.75)
    music(1,1,1.25)

    music(1,1,3)
    #Kongbai
    #
    music(1,1,2)
    music(1,1,1.75)
    music(4,0,0.25)
    music(1,1,2)
    music(7,0,2)

    music(1,1,2)
    music(5,1,2)

    music(6,1,2)
    music(5,1,2)

    music(2,1,2)
    music(4,1,2)

    music(3,1,4)

    music(1,1,2)
    music(3,1,2)

    music(4,1,2)
    music(3,1,2)
    
    music(2,1,2)
    music(7,0,2)

    music(1,1,4)

    music(1,1,2)
    music(5,1,2)

    music(6,1,2)
    music(5,1,2)

    music(2,1,2)
    music(4,1,1)
    music(3,1,1)

    music(3,1,4)

    music(1,1,2)
    music(3,1,2)

    music(4,1,2)
    music(3,1,2)

    music(2,1,2)
    music(7,0,2)

    music(1,1,2)
    #kongbai

    music(6,0,1)
    music(7,0,0.5)

    music(1,1,2)
    music(5,1,2)

    music(6,1,2)
    music(5,1,1)
    music(2,1,1)

    music(2,1,2)
    music(4,1,1)
    music(3,1,1)

    music(3,1,4)

    music(1,1,2)
    music(3,1,2)

    music(4,1,2)
    music(3,1,2)

    music(2,1,2)
    music(7,0,2)

    music(1,1,3)
    music(6,0,0.5)
    music(7,0,0.5)

    music(1,1,2)
    music(5,1,2)

    music(6,1,2)
    music(5,1,2)

    music(7,1,2)
    music(7,1,1)
    music(1,2,1)

    music(1,2,4)

    music(1,2,2)
    music(5,1,2)

    music(4,1,2)
    music(3,1,1)
    music(2,1,1)

    music(2,1,2)
    music(2,1,2)

    music(6,0,2)
    music(1,1,1)
    music(3,2,1)

    music(4,2,4)
    music(4,2,1)
    music(5,2,1)
    music(5,2,1)
    music(6,1,1)
    music(4,2,4)
    music(4,1,1)
    #kongbai
    music(2,1,0.75)
    music(3,1,0.25)
    music(2,1,0.75)
    music(1,1,0.25)

    music(6,0,0.5)
    music(1,1,1.5)
    music(3,1,0.75)
    music(5,1,1.25)#/

    music(2,1,0.5)
    music(1,1,1.5)
    #
    music(2,1,0.75)
    music(3,1,0.25)
    music(2,1,0.75)
    music(1,1,0.25)

    music(6,0,0.5)
    music(1,1,1.5)
    music(3,1,0.75)
    music(5,1,1.25)

    music(2,1,0.5)
    music(1,1,1.5)
    #
    music(2,1,0.75)
    music(3,1,0.25)
    music(2,1,0.75)
    music(1,1,0.25)

    music(6,0,0.5)
    music(1,1,1.5)
    music(3,1,0.75)
    music(5,1,1.25)#\

    music(5,1,0.125)
    music(6,1,0.375)
    music(5,1,1.5)

    music(5,1,0.5)
    music(1,2,1.5)

    music(7,1,0.5)
    music(5,1,1.5)
    music(3,1,0.5)
    music(5,1,1)
    music(2,1,0.5)

    music(2,1,2)
    #
    music(2,1,0.75)
    music(3,1,0.25)
    music(2,1,0.75)
    music(1,1,0.25)

    music(6,0,0.5)
    music(1,1,1.5)
    music(3,1,0.75)
    music(5,1,1.25)
    #
    music(2,1,0.5)
    music(1,1,1.5)
    music(1,1,0.75)
    music(1,1,0.25)
    music(2,1,0.75)
    music(3,1,0.25)

    music(6,1,0.75)
    music(3,1,1.25)#\
    music(3,1,0.125)
    music(2,1,0.875)#\
    music(7,0,1)

    music(1,1,3)
    #
    music(1,1,0.75)
    music(7,0,0.25)

    music(6,0,1)
    music(7,0,1)
    music(1,1,1)
    music(2,1,1)

    music(1,1,1)
    music(5,0,1)
    music(3,0,1)#\
    music(5,0,1)

    music(6,0,0.75)
    music(2,1,1.25)
    music(7,0,0.75)
    music(1,1,1.25)

    music(1,1,3)
    music(1,1,0.75)
    music(7,0,0.25)

    music(6,0,1)
    music(7,0,1)
    music(1,1,1)
    music(2,1,1)

    music(1,1,1)
    music(5,0,1)
    music(4,0,1)
    music(3,1,1)

    music(4,1,0.75)
    music(1,1,1.25)
    music(1,1,0.75)
    music(5,1,1.25)

    music(3,1,3)
    music(3,1,0.75)
    music(2,1,0.25)

    music(1,1,1)
    music(2,1,1)
    music(3,1,1)
    music(4,1,1)

    music(3,1,1)
    music(1,1,1)
    music(5,0,1)
    music(3,0,1)

    music(2,1,0.75)
    music(3,1,1.25)
    music(2,1,0.75)
    music(1,1,1.25)

    music(1,1,2)
    music(4,-2,0.25)
    music(1,-1,0.25)
    music(4,-1,0.25)
    music(5,-1,0.25)
    music(1,0,0.25)
    music(2,0,0.25)
    music(5,0,0.25)
    music(1,1,0.25)

    music(2,1,0.25)
    music(5,1,0.25)
    music(1,2,0.25)
    music(2,2,0.25)
    music(5,2,0.25)
    music(1,3,0.75)
    music(1,1,0.5)
    music(5,1,1.5)
    music(1,1,0.5)
    music(5,1,1.5)
    music(1,1,0.5)
    music(5,1,1.5)
    music(1,1,0.5)
    music(5,1,1.5)
    music(1,1,0.5)
    music(5,1,1.5)
    music(1,1,0.5)
    music(5,1,3.5)




    



lemon_music()

mid.save('a2.mid')

主要的代码如上图,自己再写一个运行mid的文件即可,最后来欣赏一下最终的效果。 以此给女朋友作为礼物送给他

python演奏lemon

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值