Pygame : Latenz beim Abspielen einer Sounddatei

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
noerre
User
Beiträge: 1
Registriert: Sonntag 19. Oktober 2008, 17:41

Freitag 14. November 2008, 20:12

Hallo,
ich versuche Sounddateien, die alle dasselbe Tempo haben, im Takt zu überblenden. Hierfür habe ich mir folgende Clock gebastelt:

Code: Alles auswählen

class clockStarter(threading.Thread) :
   def __init__(self, timeStep):
      threading.Thread.__init__(self)
      self.theTimeStep = timeStep  #timeStep ist die Taktlänge
   def run(self):
      self.channelMarker = -1 #Schlüssel für das Dictionary der Kanäle, inaktiv (-1)
      self.soundMarker = 0      #Schlüssel für das Dictionary der Sounddateien, deren Taktlänge = timeStep ist
      self.xRun = 1
      while self.xRun == 1:   
         time.sleep(0.5)      #Jede halbe Sekunde Anfrage, ob ein Kanal aktiviert ist
         if self.channelMarker != -1 :    #Wenn ja , Startzeitberechnung. restZeit ist die fehlende Zeit, bis time.clock() ein 
             # ganzzahliges Vielfaches der Taktlänge ist.
            restZeit = self.theTimeStep - (time.clock() % self.theTimeStep)
            time.sleep(restZeit)
             # Der Sound wird gestartet.
            theMixer["chan" + str(self.channelMarker)].play(theSounds["sound" + str(self.soundMarker)].sound)
            self.channelMarker = -1
            self.soundMarker = self.soundMarker + 1 
Es haut nicht hin, obwohl ich, wenn ich nach dem Start des Sounds time.clock() ausgeben lasse, einen Wert unter 10/1000 Sekunden Abweichung bekomme, was akzeptabel wäre. Der Sound muss also mit einer gewissen Latenz starten, wenn ich es richtig sehe. Habe auch schon versucht, mit einem Slider, der einen Wert zwischen 0 und Taktlänge ausgibt, der dann von der Variablen restZeit abgezogen wird, nachzuregeln - ohne Erfolg. Zwischen dem Starten der verschiedenen Sounds vergehen etwa 20 - 30 Sekunden, die Sounds werden also rechtzeitig geladen. Was kann ich machen?
Liebe Grüsse
Jörg
Antworten