我的电脑钢琴,太差,求改进

from mido import Message, MidiFile, MidiTrack

from mido import Message, MidiFile, MidiTrack

import pygame.midi as pm
import time
# mid = MidiFile()
# track = MidiTrack()
# mid.tracks.append(track)
#
# track.append(Message('program_change', program=12, time=0))
# track.append(Message('note_on', note=64, velocity=64, time=32))
# track.append(Message('note_off', note=64, velocity=127, time=32))

#e
# mid.save('new_song.mid')
import keyboard
import sys
import  pynput

def on_press(key):
    if(key==pynput.keyboard.KeyCode(char='e')):
        mu=88
        pitch=62
        boot(mu,pitch)
    if(key==pynput.keyboard.KeyCode(char='q')):
        boot(88,60)
    if (key == pynput.keyboard.KeyCode(char='w')):
        boot(88,61)
    if (key == pynput.keyboard.KeyCode(char='r')):
        boot(88,64)
    if (key == pynput.keyboard.KeyCode(char='t')):
        boot(88,65)
    if (key == pynput.keyboard.KeyCode(char='y')):
        boot(88,67)
    if (key == pynput.keyboard.KeyCode(char='u')):
        boot(88,68)
    if (key == pynput.keyboard.KeyCode(char='i')):
        boot(88,69)
    if (key == pynput.keyboard.KeyCode(char='o')):
        boot(88,71)
    if (key == pynput.keyboard.KeyCode(char='p')):
        boot(88,72)
    if (key == pynput.keyboard.KeyCode(char='a')):
        boot(88,58)
    if (key == pynput.keyboard.KeyCode(char='s')):
        boot(88,57)
    if (key == pynput.keyboard.KeyCode(char='d')):
        boot(88,55)
    if (key == pynput.keyboard.KeyCode(char='f')):
        boot(88,54)
    if (key == pynput.keyboard.KeyCode(char='g')):
        boot(88,53)
    if (key == pynput.keyboard.KeyCode(char='h')):
        boot(88,51)
    if (key == pynput.keyboard.KeyCode(char='j')):
        boot(88,50)
    if (key == pynput.keyboard.KeyCode(char='k')):
        boot(88,48)
    if (key == pynput.keyboard.KeyCode(char='l')):
        boot(88,47)
    if(key==pynput.keyboard.KeyCode(char='z')):
        boot(88,46)
    if(key==pynput.keyboard.KeyCode(char='x')):
        boot(88,74)
    if(key==pynput.keyboard.KeyCode(char='c')):
        boot(88,75)
    if(key==pynput.keyboard.KeyCode(char='v')):
        boot(88,76)
    if (key == pynput.keyboard.KeyCode(char='b')):
        boot(88,78)
    if(key==pynput.keyboard.KeyCode(char='n')):
        boot(88,79)
    if (key == pynput.keyboard.KeyCode(char='m')):
        boot(88,81)

def boot(mu,pitch):
    pm.init()
    player = pm.Output(0)
    BPM = 120

    player.set_instrument(mu)
    length = 0.3
    player.note_on(pitch, 127)
    time.sleep(length * 60 / BPM)
    player.note_off(pitch, 127)
    pm.quit()


with pynput.keyboard.Listener(on_press=on_press) as keyboard_listener:
    keyboard_listener.join()

import pygame.midi as pm
import time

mid = MidiFile()

track = MidiTrack()

mid.tracks.append(track)

track.append(Message('program_change', program=12, time=0))

track.append(Message('note_on', note=64, velocity=64, time=32))

track.append(Message('note_off', note=64, velocity=127, time=32))

#e

mid.save('new_song.mid')

import keyboard
import sys
import pynput

def on_press(key):
if(key==pynput.keyboard.KeyCode(char='e')):
mu=88
pitch=62
boot(mu,pitch)
if(key==pynput.keyboard.KeyCode(char='q')):
boot(88,60)
if (key == pynput.keyboard.KeyCode(char='w')):
boot(88,61)
if (key == pynput.keyboard.KeyCode(char='r')):
boot(88,64)
if (key == pynput.keyboard.KeyCode(char='t')):
boot(88,65)
if (key == pynput.keyboard.KeyCode(char='y')):
boot(88,67)
if (key == pynput.keyboard.KeyCode(char='u')):
boot(88,68)
if (key == pynput.keyboard.KeyCode(char='i')):
boot(88,69)
if (key == pynput.keyboard.KeyCode(char='o')):
boot(88,71)
if (key == pynput.keyboard.KeyCode(char='p')):
boot(88,72)
if (key == pynput.keyboard.KeyCode(char='a')):
boot(88,58)
if (key == pynput.keyboard.KeyCode(char='s')):
boot(88,57)
if (key == pynput.keyboard.KeyCode(char='d')):
boot(88,55)
if (key == pynput.keyboard.KeyCode(char='f')):
boot(88,54)
if (key == pynput.keyboard.KeyCode(char='g')):
boot(88,53)
if (key == pynput.keyboard.KeyCode(char='h')):
boot(88,51)
if (key == pynput.keyboard.KeyCode(char='j')):
boot(88,50)
if (key == pynput.keyboard.KeyCode(char='k')):
boot(88,48)
if (key == pynput.keyboard.KeyCode(char='l')):
boot(88,47)
if(key==pynput.keyboard.KeyCode(char='z')):
boot(88,46)
if(key==pynput.keyboard.KeyCode(char='x')):
boot(88,74)
if(key==pynput.keyboard.KeyCode(char='c')):
boot(88,75)
if(key==pynput.keyboard.KeyCode(char='v')):
boot(88,76)
if (key == pynput.keyboard.KeyCode(char='b')):
boot(88,78)
if(key==pynput.keyboard.KeyCode(char='n')):
boot(88,79)
if (key == pynput.keyboard.KeyCode(char='m')):
boot(88,81)

def boot(mu,pitch):
pm.init()
player = pm.Output(0)
BPM = 120

player.set_instrument(mu)
length = 0.3
player.note_on(pitch, 127)
time.sleep(length * 60 / BPM)
player.note_off(pitch, 127)
pm.quit()

反应太慢,效果太差,求改进
with pynput.keyboard.Listener(on_press=on_press) as keyboard_listener:
keyboard_listener.join()