Criando um metrônomo preciso com python e Qt

Estou tentando adicionar um metrônomo simples ao meu programa pyQt de plataforma cruzada, mas tendo muita dificuldade em obter um tempo preciso. Tocar o som parece funcionar melhor usando o sistema de som do PyGame. Eu tentei o Phonon, mas simplesmente não era consistente e o QSound não funciona no meu sistema. Eu tentei manipular o tempo com a biblioteca de tempo do python e usar QTimers, mas o QTimeLine parece funcionar melhor.

O tempo em menor tempo não é tão ruim ... ainda um soluço aqui e ali. Tempos mais altos, no entanto, não são precisos.

Quaisquer idéias / sugestões seriam muito apreciadas!

Aqui está um código:

class Metronome(object):
    def init_metronome(self):
        self.metronome_timer = QtCore.QTimeLine(100000)
        self.metronome_timer.valueChanged.connect(self.tick)
        self.metronome_timer.setCurveShape(3) #linear curve

        self.ui.pushButton_metronome.toggled.connect(self.toggle_metronome)
        self.ui.spinBox_metronome_bpm.valueChanged.connect(self.set_metronome_bpm)

        pygame.mixer.init()
        self.sound = pygame.mixer.Sound("./sounds/tick.wav")


    def toggle_metronome(self):
        if self.ui.pushButton_metronome.isChecked() == True:
            self.set_metronome_bpm()
            self.metronome_timer.start()
        else: 
            self.metronome_timer.stop()

    def set_metronome_bpm(self):
        bpm = self.ui.spinBox_metronome_bpm.value()
        self.metronome_timer.setUpdateInterval(60./bpm * 1000)

    def tick(self):
        QtCore.QCoreApplication.processEvents()
        self.sound.play()

questionAnswers(1)

yourAnswerToTheQuestion