![]() |
Timing zu langsam?
Bin nen opengl lyricsplayer am schreiben..soweit funktioniert alles
Allerdings habe ich ein problem mit dem timing. Die erste Linie funktioniert einwandfrei danach läßt die genauigkeit nach. Ich verwende IdleLoop und aus dieser heraus spreche ich die Render Routine an. Dort wird dann mit dieser zeile geprüft
Delphi-Quellcode:
getLyricTime gibt die nächste startposition zurück vom nächsten char das gerendert wird.
timeBeforeNext := MidiLyrics.getLyricTime(CurrentLyric) - currentTime;
if (timeBeforeNext <= 0) then begin inc(currentLyric); currenttime hole ich mir über
Delphi-Quellcode:
currentTime := TimeGetTime() - loadDelay - Settings.delay;
wobei settings.delay normalerweise immer 0 ist es sei denn es liegen schwankungen vor betreffend einer ungenauigkeit des Lyrics innerhalb des MidiFiles (Konfigurierbar) Um was es mir jetzt geht ist es möglich das IdleLoop das problem bei mir verursacht seitens des Timing? Mich wundert es nur das die erste Linie funktioniert Hab es auch schon mit GetTickCount versucht da ist aber Zeitlich gesehen keine große differenz gruss |
AW: Timing zu langsam?
Ich dachte immer, der normale Zeitgeber hat eine Auflösung von 18ms. Ohne absoluten Timer wirst Du die Ungenauigkeiten addieren.
|
AW: Timing zu langsam?
Zitat:
es kann nur an der berechnung von currentTime liegen denn die StartPosition ist immer gleich. die ich als LongInt deklariert habe. gruss |
AW: Timing zu langsam?
Zitat:
Auch muß man beachten daß Programme nie "durchlaufen", sondern ständig Pausen machen, während andere Threads/Programme verarbeitet werden, oder hast du genauso viele Kerne wie Threads? |
AW: Timing zu langsam?
Fakt ist aber das es auch bei anderen Programmen funktioniert
Kann mir nicht vorstellen das bsp. C++ schneller sein soll was GetTickCount(Delphi), Clock(C++) angeht Und dort gibt es programme die weitaus mehr vom Timer abverlangen als mein simpler LyricPlayer. Also irgendwo muss ich die ZEit syncronisieren können. Meine vermutung ist das vielleicht!!! bei idleloop da was ausgebremst wird. an GetTickCount denke ich liegt es nicht. zumal ich es ja auch nicht verwende sondern TimeGetTime() gruss |
AW: Timing zu langsam?
20-50 Millisekunden Verzögerung sollte man schon einplanen.
Nja, erstmal braucht man einen festen Bezugspunkt, gegen den man rechnen sollte, damit sich nichts aufsummieren kann. Falls man weniger als 20 Millisekunden für die Auflosung benötigt, dann benötgt man auch einen passenden Timer. GetTickCount => If you need a higher resolution timer, use a multimedia timer or a high-resolution timer. |
AW: Timing zu langsam?
Zitat:
Den festen bezug habe ich ja das stellt kein problem dar. gruss |
AW: Timing zu langsam?
Was bitte ist "idleloop" genau?
Meinst du das OnIdle Event von Application? (Da musste nämlich Done immer auf false setzen und das ganze ein bisschen ausbremsen..) |
AW: Timing zu langsam?
Zitat:
Und ich hab es auch auf Done false gesetzt. Muss mal schaun ob das wirklich so dermaßen abbremst. PS: Bin wohl auf den falschen weg hat nichts mit dem Timing zu tun muß da nochmal mit meinem Kumpel reden da läuft was falsch bei der übergabe der StartPosition des Textes. OnIdle habe ich verwendet um den Timer zu ersetzen und das ist fast schon zu schnell da die Anwendung ab und zu hängt. gruss |
AW: Timing zu langsam?
habe jetzt mal ein und das gleiche MidiFile geparst und stelle fest das MidiFile2 unterschiede zeigt.
Zitat:
Die Frage wäre dann woher diese Unterschiede DateiTypen bedingt? Die position wird berechnet..
Delphi-Quellcode:
was könnte jetzt die Differenz ausmachen?
result := round(PTempoData(FTempoList[K])^.TimePos
+ ((TickVal - PTempoData(FTempoList[K])^.TickPos) / FTicksPerQuarter) * (PTempoData(FTempoList[K])^.Tempo / 1000.0)); TTempoData = record TickPos: LongWord; TimePos: LongWord; Tempo: LongWord; end; FTicksPerQuarter: Word; result: LongWord; Wie man sehen kann addiert sich die ungenauigkeit deshalb stehe ich auch nicht auf der richtigen Cursor position im Text. gruss gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz