AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timing problem

Ein Thema von EWeiss · begonnen am 7. Apr 2011 · letzter Beitrag vom 8. Apr 2011
Antwort Antwort
Benutzerbild von Trebxson
Trebxson

Registriert seit: 7. Apr 2011
18 Beiträge
 
Turbo Delphi für Win32
 
#1

AW: Timing problem

  Alt 8. Apr 2011, 00:17
Ich verstehe noch nicht so ganz die Logik.

Was passiert während des Waits? (per was auch immer) Stell die Zeit doch mal extrem hoch und schau ob die Hänger gleichmäßig sind.

Ich meine es gibt ja auch halbe, ganze Noten. Ganz zu schweigen von verschiedenen Akzenten Legato oder das Gegenstück Staccato.

Vielleicht musst du am Ende die Schleife durch rennen lassen. Wenn die Funktionen gekapselt sind werden die vermutlich bald zurück kommen, wenn die nichts zu tun haben.

Ist das ein Baukasten oder hast du dir einen solchen selbst zurecht programmiert? Vielleicht gibt es Beispiele für deine Schleife.

Wer liefert die Noten? Also woher weiß "PlayNotes" welche Noten zu spielen sind?
  Mit Zitat antworten Zitat
Benutzerbild von Trebxson
Trebxson

Registriert seit: 7. Apr 2011
18 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Timing problem

  Alt 8. Apr 2011, 00:21
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;
?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Timing problem

  Alt 8. Apr 2011, 00:30
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;
?
Entschuldige bitte aber ich denke mal gar nichts.
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

Geändert von EWeiss ( 8. Apr 2011 um 00:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Trebxson
Trebxson

Registriert seit: 7. Apr 2011
18 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Timing problem

  Alt 8. Apr 2011, 00:35
Meinst du?

Was macht denn

Delphi-Quellcode:
while true do
 begin
 end;
> Leider muss ich feststellen das dieser sehr CPU lastig ist.
> 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.)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Timing problem

  Alt 8. Apr 2011, 00:41
Meinst du?

Was macht denn

Delphi-Quellcode:
while true do
 begin
 end;
> Leider muss ich feststellen das dieser sehr CPU lastig ist.
> 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.)
Dein Sleep ohne es testen zu müssen sorgt dafür das die Anwendung für 1000ms schläft quasi einfriert.
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:
Ist das ein Baukasten oder hast du dir einen solchen selbst zurecht programmiert? Vielleicht gibt es Beispiele für deine Schleife.
Was für ein Baukasten das ist eine nonvcl Anwendung geschrieben in reinem WinAPI auf lowlevel Basis.

Bild im Anhang.

gruss

Geändert von EWeiss ( 9. Jul 2019 um 08:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Trebxson
Trebxson

Registriert seit: 7. Apr 2011
18 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Timing problem

  Alt 8. Apr 2011, 00:46
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.
  Mit Zitat antworten Zitat
Benutzerbild von Trebxson
Trebxson

Registriert seit: 7. Apr 2011
18 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Timing problem

  Alt 8. Apr 2011, 00:52
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.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Timing problem

  Alt 8. Apr 2011, 00:53
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 das 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.
Playnotes prüft welcher notentyp gerade verwendet wird läd dann dementsprechend die Instrumente und starte die Note.
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
DrawGrid(WinHandle);
Das ist im groben der ablauf.
Und das kann ich nicht auslagern unmöglich da alles zusammenhängt.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 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