![]() |
AW: Timing problem
Zitat:
Aber nicht das ich meine Anwendung aufgrund des Loops nicht mehr schließen kann. gruss |
AW: Timing problem
Und was macht
Delphi-Quellcode:
?
// Starte den Song
while PlayingSong do begin //Weiterlaufen bis die 16.tel Note (Pause) abgelaufen ist // while GetTickCount < Tick + TempoWait do sleep (1000); Winprocessmessages; Tick := GetTickCount; PlayNotes; DrawGraphics(WinHandle); hsi.nPos := StartX + XSizeMid; SetScrollInfo(WinHandle, SB_HORZ, hsi, True); end; |
AW: Timing problem
Zitat:
Und das muss ich auch gar nicht erst ausprobieren ;) Ich glaube da hilft nur noch die Knallharte Methode.. HALT; Und das will ich eigentlich nicht. gruss |
AW: Timing problem
Meinst du?
Was macht denn
Delphi-Quellcode:
> Leider muss ich feststellen das dieser sehr CPU lastig ist.
while true do
begin end; > Also 25% hab ich dann schon. 4 Kerne? Was anderes machst du mit WinProcessMessages derzeit nicht außer Nachrichten behandeln. (Es sei denn deine Implementierung sieht inzwischen anders aus.) |
AW: Timing problem
Zitat:
das bedeutet alle 1000ms wird dann bei mir das Fenster und alles andere was damit zu tun hat weiterverarbeitet. Was soll das werden wenn ich mir noch ne neue Bremse mit einbaue. Zitat:
Bild im Anhang. gruss |
AW: Timing problem
Aber ob deine Anwendung 1000 ms schläft oder 1000 ms in einer Schleife rennt, anstatt Musik zu spielen, das ist aus meiner Sicht das gleiche.
Und dass die 1000 ms nur der Platzhalter für das Tempo sind, ich dachte das wäre auch ohne Kommentar zu erkennen gewesen. Ich weiß ja nun immer noch nicht ob PlayNotes Zeit verbrät oder gleich zurück kommt. |
AW: Timing problem
Verarbeitest du auch Eingabegeräte? Soweit ich gelesen habe haben die bei der Echtzeitverarbeitung von Musik die gleichen Probleme.
Meiner Meinung nach Schreit das nach einen Thread pro Aufgabe. Ein Thread für das Formular und Nachrichtenbehandlung. Einer für die Grafik womit das Formular gefüttert wird (auch wenn du Fenster bewegst). Und einer für den Ton. Sagt dir Lugert Verlag Forte etwas? Das macht genau das was du versucht umzusetzen. Nur mit einfacher Grafik. |
AW: Timing problem
Zitat:
Delphi-Quellcode:
TNoteType = (BlankNote, StartingNote, ContinuingNote);
Nach Playnotes geht es in DrawGraphics wo mit GDI+ die grüne Abtastleiste gezeichnet wird. Und von da aus geht es dann in die Zeichnen routine für das Grid
Delphi-Quellcode:
DrawGrid(WinHandle);
Das ist im groben der ablauf. Und das kann ich nicht auslagern unmöglich da alles zusammenhängt. gruss |
AW: Timing problem
Zitat:
wenn du sehen willst was ich da mache. Eingabegeräte verwende ich keine. EDit: Forte 180.00EUR Euronen .. ;) gruss |
AW: Timing problem
> Eingabegeräte verwende ich keine.
Schade :) D.h. PlayNotes startet nur, aber wartet nicht auf das Ende der Note. Die Nachrichtenbehandlung wirst du für den Empfang von CloseQueries usw. schon brauchen. Nur solltest du das mit dem Sleep () kombinieren um deinen Wunsch nach weniger Auslastung gerecht zu werden. Ich habe die Erfahrung gemacht, wenn im Formular z.B. ein Button gedrückt wird der in eine Schleife rennt, wird für die Dauer die zweite Schleife im selben Thread nicht weiter ausgeführt (ist auch irgendwie logisch). Daher wirst du nichts anderes erwarten können, wenn du das Fenster durch die Gegend schiebst, dass die Musik stoppt. Mit dem Beispielcode wollte ich übrigens auch nur wissen ob die übrigen Anweisungen hängen. Das sind so die Probleme die ich bisher erlesen konnte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 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-2025 by Thomas Breitkreuz