Was passiert denn, wenn du alles was nicht mit dem Sound zu tun hat, raus haust. Hängt es dann immer noch?
Delphi-Quellcode:
timeout := 10000;
while (PlayingSong) do
begin
sleep (1000);
PlayNotes;
timeout := timeout - 1000;
if (timeout < 0) then
begin
break;
end;
end;
Was genau macht PlayNotes bzw. wie ist es implementiert? Packt es die Noten in einen Puffer der dann (von was?) abgespielt wird? Oder spielt es die Noten gleich ab und blockiert damit die Schleife?
Vielleicht erzeugst du auch gerade mit dem Warten das Geruckle. Ist das Ruckeln gleichmäßig?
Du solltest erst die Ursache des Ruckeln bekämpfen und dann die anderen Sachen wie Grafik, Nachrichtenbehandlung, Tempo usw. hinzufügen.