import os
import threading
import time
import mido
import pygame
mid = mido.MidiFile()
track = mido.MidiTrack()
mid.tracks.append(track)
def play_midi(file):
freq = 44100
bitsize = -16
channels = 2
buffer = 1024
pygame.mixer.init(freq, bitsize, channels, buffer)
pygame.mixer.music.set_volume(1)
clock = pygame.time.Clock()
try:
pygame.mixer.music.load(file)
except:
import traceback
print(traceback.format_exc())
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
clock.tick(30)
KEY = 1
neg_SPEED = 1.2 # 数值越小速度越快
# bpm = \frac{60000000}{tempo}
def music(note, base_num, base_time):
base_num, base_time = base_num + KEY, base_time * neg_SPEED
# mid = mido.MidiFile()
# track = mido.MidiTrack()
# mid.tracks.append(track)
# 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))
# print('正在合成(',note, base_num, base_time,')音')
# 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))
# mid.save('1.mid')
# play_midi('1.mid')
def lemon_music():
a = 0
b = 1
# 前奏
# music(1, a+b + 1, 2)
music(1, a + 1, 1 * 2)
music(6, a + 0, 0.5 * 2)
music(1, a + 1, 0.5 * 2)
music(3, a + 1, 1)
music(3, a + 1, 0.5)
music(2, a + 1, 0.5)
music(3, a + 1, 0.5)
music(2, a + 1, 0.5)
music(3, a + 1, 0.5)
music(2, a + 1, 0.5)
music(1, a + 1, 0.5)
music(7, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(6, a + 0, 1)
music(7, a + 0, 0.5)
music(1, a + 1, 0.5)
music(2, a + 1, 1)
music(3, a + 1, 0.5)
music(4, a + 1, 0.5)
music(5, a + 1, 2)
music(3, a + 1, 0.5)
music(5, a + 1, 1)
music(2, a + 1, 0.5)
music(3, a + b + 1, 0.25)
music(1, a + b + 1, 0.25)
music(6, a + b + 0, 0.25)
music(3, a + b + 0, 0.25)
music(3, a + b + 1, 0.25)
music(1, a + b + 1, 0.25)
music(6, a + b + 0, 0.25)
music(3, a + b + 0, 0.25)
music(3, a + b + 1, 0.25)
music(1, a + b + 1, 0.25)
music(6, a + b + 0, 0.25)
music(3, a + b + 0, 0.25)
music(3, a + b + 1, 0.25)
music(1, a + b + 1, 0.25)
music(6, a + b + 0, 0.25)
music(3, a + b + 0, 0.25)
music(2, a + b + 1, 0.25)
music(7, a + b + 0, 0.25)
music(5, a + b + 0, 0.25)
music(2, a + b + 0, 0.25)
music(2, a + b + 1, 0.25)
music(7, a + b + 0, 0.25)
music(5, a + b + 0, 0.25)
music(2, a + b + 0, 0.25)
music(2, a + b + 1, 0.25)
music(7, a + b + 0, 0.25)
music(5, a + b + 0, 0.25)
music(2, a + b + 0, 0.25)
music(2, a + b + 1, 0.25)
music(7, a + b + 0, 0.25)
music(5, a + b + 0, 0.25)
music(2, a + b + 0, 0.25)
music(1, a + b + 1, 0.25)
music(6, a + b + 0, 0.25)
music(4, a + b + 0, 0.25)
music(1, a + b + 0, 0.25)
music(1, a + b + 1, 0.25)
music(6, a + b + 0, 0.25)
music(4, a + b + 0, 0.25)
music(1, a + b + 0, 0.25)
music(7, a + b + 0, 0.25)
music(5, a + b + 0, 0.25)
music(2, a + b + 0, 0.25)
music(7, a + b + 0, 0.25)
music(7, a + b + 0, 0.25)
music(5, a + b + 0, 0.25)
music(2, a + b + 0, 0.25)
music(7, a + b + 0, 0.25)
music(1, a + b + 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 * 1))
music(5, a - 1, 1)
music(6, a - 1, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 1)
music(3, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 1)
music(3, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.75)
music(1, a + 0, 0.75)
music(6, a - 1, 0.5)
music(1, a + 0, 0.75)
music(2, a + 0, 0.75)
music(3, a + 0, 0.5)
music(3, a + 0, 1.5)
music(5, a - 1, 0.5)
music(6, a - 1, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(5, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(3, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.75)
music(2, a + 0, 0.75)
music(2, a + 0, 0.5)
music(2, a + 0, 0.75)
music(1, a + 0, 0.75)
music(6, a - 1, 0.5)
music(2, a + 0, 1.5)
music(5, a - 1, 0.5)
music(6, a - 1, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 1)
music(5, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 1)
music(6, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.75)
music(1, a + 0, 0.75)
music(6, a - 1, 0.5)
music(1, a + 0, 0.75)
music(2, a + 0, 0.75)
music(3, a + 0, 0.5)
music(5, a + 0, 1.5)
music(5, a - 1, 0.5)
music(6, a - 1, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(6, a + 0, 1)
music(5, a + 0, 0.5)
music(3, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(3, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.75)
music(2, a + 0, 0.75)
music(2, a + 0, 0.5)
music(2, a + 0, 0.75)
music(1, a + 0, 0.75)
music(6, a - 1, 0.5)
music(1, a + 0, 1.5)
# 副歌
music(1, a + 0, 0.5)
music(1, a + 1, 0.5)
music(7, a + 0, 0.5)
music(1, a + 1, 0.5)
music(6, a + 0, 0.5)
music(1, a + 1, 0.75)
music(6, a + 0, 0.75)
music(5, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(5, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 1)
music(5, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(6, a + 0, 0.75)
music(6, a + 0, 0.75)
music(6, a + 0, 0.5)
music(6, a + 0, 0.75)
music(5, a + 0, 0.75)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 1.5)
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(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(6, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(1, a + 0, 0.5)
music(1, a + 0, 0.5)
music(1, a + 1, 0.5)
music(1, a + 1, 0.75)
music(1, a + 1, 0.75)
music(1, a + 1, 0.5)
music(6, a + 0, 0.75)
music(1, a + 1, 0.5)
music(6, a + 0, 1.5)
music(5, a + 0, 1)
music(1, a + 0, 0.5)
music(1, a + 1, 0.5)
music(7, a + 0, 0.5)
music(1, a + 1, 0.5)
music(7, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(5, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 1)
music(5, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(6, a + 0, 0.75)
music(6, a + 0, 0.75)
music(6, a + 0, 0.5)
music(6, a + 0, 0.75)
music(5, a + 0, 0.75)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 1.5)
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(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(6, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(1, a + 1, 2)
track.append(mido.Message('note_on', note=0, velocity=0, time=0))
track.append(mido.Message('note_off', note=0, velocity=0, time=480 * 3))
music(1, a + 1, 0.5)
music(6, a + 0, 0.5)
music(1, a + 1, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 1)
music(5, 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 1)
music(1, a + 0, 0.5)
music(6, a - 1, 0.5)
music(1, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 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 * 1))
music(5, a - 1, 1)
music(6, a - 1, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 1)
music(3, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 1)
music(3, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.75)
music(1, a + 0, 0.75)
music(6, a - 1, 0.5)
music(1, a + 0, 0.75)
music(2, a + 0, 0.75)
music(3, a + 0, 0.5)
music(3, a + 0, 1.5)
music(5, a - 1, 0.5)
music(6, a - 1, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(5, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(3, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.75)
music(2, a + 0, 0.75)
music(2, a + 0, 0.5)
music(2, a + 0, 0.75)
music(1, a + 0, 0.75)
music(6, a - 1, 0.5)
music(2, a + 0, 1.5)
music(5, a - 1, 0.5)
music(6, a - 1, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 1)
music(5, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 1)
music(6, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.75)
music(1, a + 0, 0.75)
music(6, a - 1, 0.5)
music(1, a + 0, 0.75)
music(2, a + 0, 0.75)
music(3, a + 0, 0.5)
music(5, a + 0, 1.5)
music(5, a - 1, 0.5)
music(6, a - 1, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(6, a + 0, 1)
music(5, a + 0, 0.5)
music(3, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(3, a + 0, 1)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.75)
music(2, a + 0, 0.75)
music(2, a + 0, 0.5)
music(2, a + 0, 0.75)
music(1, a + 0, 0.75)
music(6, a - 1, 0.5)
music(1, a + 0, 1.5)
music(1, a + 0, 0.5)
music(1, a + 1, 0.5)
music(7, a + 0, 0.5)
music(1, a + 1, 0.5)
music(6, a + 0, 0.5)
music(1, a + 1, 0.75)
music(6, a + 0, 0.75)
music(5, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(5, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 1)
music(5, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(6, a + 0, 0.75)
music(6, a + 0, 0.75)
music(6, a + 0, 0.5)
music(6, a + 0, 0.75)
music(5, a + 0, 0.75)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 1.5)
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(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(6, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(1, a + 0, 0.5)
music(1, a + 0, 0.5)
music(1, a + 1, 0.5)
music(1, a + 1, 0.75)
music(1, a + 1, 0.75)
music(1, a + 1, 0.5)
music(6, a + 0, 0.75)
music(1, a + 1, 0.5)
music(6, a + 0, 1.5)
music(5, a + 0, 1)
music(1, a + 0, 0.5)
music(1, a + 1, 0.5)
music(7, a + 0, 0.5)
music(1, a + 1, 0.5)
music(7, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(5, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 1)
music(5, a + 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(6, a + 0, 0.75)
music(6, a + 0, 0.75)
music(6, a + 0, 0.5)
music(6, a + 0, 0.75)
music(5, a + 0, 0.75)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 1.5)
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(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 1)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(6, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 0.5)
music(1, a + 1, 2)
# 尾部
track.append(mido.Message('note_on', note=0, velocity=0, time=0))
track.append(mido.Message('note_off', note=0, velocity=0, time=480 * 3))
music(1, a + 1, 0.5)
music(6, a + 0, 0.5)
music(1, a + 1, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 1)
music(5, 0, 0.5)
music(6, a + 0, 0.5)
music(5, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 0.5)
music(3, a + 0, 0.5)
music(2, a + 0, 1)
music(1, a + 0, 0.5)
music(6, a - 1, 0.5)
music(1, a + 0, 0.5)
music(1, a + 0, 0.5)
music(2, a + 0, 0.5)
music(1, a + 0, 2)
music(1, a + 0, 0.5)
music(1, a + 1, 0.5)
music(6, a + 0, 0.5)
music(1, a + 1, 0.5)
music(2, a + 1, 0.5)
music(1, a + 1, 1)
music(1, a + 1, 0.5)
music(2, a + 1, 0.5)
music(1, a + 1, 0.5)
music(6, a + 0, 0.5)
music(1, a + 1, 0.5)
music(3, a + 1, 0.5)
music(2, a + 1, 1)
music(1, a + 1, 0.5)
music(6, a + 0, 0.5)
music(1, a + 1, 0.5)
music(2, a + 1, 1)
music(1, a + 1, 4)
lemon_music()
mid.save('a2.mid')
def play():
play_midi('a2.mid')
def show():
for i in f.readlines():
print("\033[0;34;40m%s\033[0m" % i)
time.sleep(len(i) / 3)
os.system('cls')
if __name__ == '__main__':
f = open('lyrics.txt', 'r', encoding='utf-8')
t1 = threading.Thread(target=play)
t2 = threading.Thread(target=show)
t1.start()
t2.start()
os.remove('a2.mid')
手把手教你用python演奏音乐(以富士山下为例)
最新推荐文章于 2024-05-01 23:38:41 发布