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
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#1

AW: Timing problem

  Alt 8. Apr 2011, 14:47
Ich weiss es ist nonVcl! Vom Prinzip her nichts anderes!
Aber warum machst du es Dir selber schwerer als es sein muss?
In VCL würde ich einen Timer nehmen und dann nicht while benutzen sondern
If songplay then usw.
Vorteil liegt klar auf der Hand, Du hast keine while schleife in der Du nun festhängst!
CPU last würde damit auch nach unten gehen.
Wie man einen Timer in nonVCL schreibt mh.. muss ich passen.

Soll ja auch nur als Anregung dienen!

alfold
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.658 Beiträge
 
Delphi 12 Athens
 
#2

AW: Timing problem

  Alt 8. Apr 2011, 15:01
Wie man einen Timer in nonVCL schreibt mh.. muss ich passen.
Das ist recht überschaubar: http://msdn.microsoft.com/de-de/library/ee503884.aspx
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Timing problem

  Alt 8. Apr 2011, 15:02
Ich weiss es ist nonVcl! Vom Prinzip her nichts anderes!
Aber warum machst du es Dir selber schwerer als es sein muss?
In VCL würde ich einen Timer nehmen und dann nicht while benutzen sondern
If songplay then usw.
Vorteil liegt klar auf der Hand, Du hast keine while schleife in der Du nun festhängst!
CPU last würde damit auch nach unten gehen.
Wie man einen Timer in nonVCL schreibt mh.. muss ich passen.

Soll ja auch nur als Anregung dienen!

alfold
Ich habe kein Problem einen Timer zu erstellen das sind zwei Zeilen
SetTimer und KillTimer das ist alles.

Das problem ist aber nicht der Timer selbst sondern er muss auch warten wenn eine andere Aktion ausgeführt wird.
Das soll er auch .. Aber das geht nur über einen eigenen Thread bzw einer Callback.

Ich habe meinen Timer und der wartet auch..
Muss mal sehen ob ich damit bessere Karten habe.

Delphi-Quellcode:
function MySetWaitableTimer(hTimer: THandle;
                            var lpDueTime: TLargeInteger;
                            lPeriod: longint;
                            pfnCompletionRoutine: TFNTimerAPCRoutine;
                            lpArgToCompletionRoutine: Pointer;
                            fResume: BOOL): BOOL;
                            stdcall; external 'kernel32.dllname 'SetWaitableTimer';

Zitat:
Wenn dein Programm tatsächlich permanent etwas tut, dann wirst du auch nicht um die 100% CPU-Auslastung herumkommen...
Na ja hab 25% aber dann ackert er auch..
Denke damit kann ich leben ..

Bei normalen Grafik Operationen sind es 0%

Zitat:
PS: Ich werde dein Programm erst dann wieder runterladen, wenn Grund zur Annahme besteht,
dass das Problem, das bei mir den Start verhindert, behoben ist
Kann ich ganz und voll verstehen nur wie soll ich das beheben wenn der Download gleich 0 ist.
Macht es dann Sinn den Quelltext noch hochzuladen ?

gruss
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Timing problem

  Alt 8. Apr 2011, 15:44
hab mich vielleicht blöd ausgedrückt: unabhängig von nonVCL oder VCl bitte. Nur im Prinzip!

Delphi-Quellcode:
TForm1.Timer1Timer(sender: Tobject)
begin
    if Playsong then
    begin
        PlayNotes;//<--wobei das evtl hier im Timer nicht wichtig ist?
        DrawGraphics(WinHandle);
        hsi.nPos := StartX + XSizeMid;
        SetScrollInfo(WinHandle, SB_HORZ, hsi, True);
    end;
end;
Ich weiss es ist nicht so einfach wie oben geschrieben, ist ja nur ne Überlegung.
Worauf soll Dein Timer warten? WEnn ich dich richtig verstehe geht es darum Die note/Pause abzuspielen, dabei gleichzeitig die graphik zu aktuallisieren.

Zumal die Aktuallisierung der Graphic ja nur vom Tempo wichtig ist. Ob Du da 8tel 16tel oder 32tel darstellen tust ist der Graphic egal. Wichtig ist die sychronisation!
Also evtl trennen, siehe im Timer!

alfold
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Timing problem

  Alt 8. Apr 2011, 15:50
Zitat:
PlayNotes;//<--wobei das evtl hier im Timer nicht wichtig ist?
Darauf baut sich alles auf.
Wie kommst du darauf das es nicht wichtig sein soll ?
Ohne dem Spielt einfach kein Ton.

Der Grafik ist das nicht egal denn das Grid verwaltet nun mal die noten
Und diese werden eingelesen abhängig von den Balken (Abtastbar) wie lange sie sich über einer Noten befindet.
Und die kann ganz lang sein.

Also eine kombination zwichen Grafik Timing und der länge der noten (was wiederum mit dem Timing zu tun hat).
Werde es nachher mal mit meinem Timer versuchen der auf die Events wartet.

gruss
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Timing problem

  Alt 8. Apr 2011, 16:10
Missvertändniss! Playnotes meine ich im Timer evtl überflüssig! Weil Du damit nur "die Melodie" spielst, hat aber mit der Anzeige im eigentlichen nichts zu tun
Denn abspielen kannst Du auch ohne graphic das meint ich damit!

alfold
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Timing problem

  Alt 8. Apr 2011, 16:27
Missvertändniss! Playnotes meine ich im Timer evtl überflüssig! Weil Du damit nur "die Melodie" spielst, hat aber mit der Anzeige im eigentlichen nichts zu tun
Denn abspielen kannst Du auch ohne graphic das meint ich damit!

alfold
Nein .. Ohne Grafik geht gar nichts das Programm ist so aufgebaut das x,y Koordinaten mit der AbtastLeiste
aufgenommen werden und mit einem array verglichen werden wo einmal der erste eintrag für die Spur von 0..7 steht
und der zweite 0..1000 für die maximale eingabe an noten pro Spur.

gruss
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Timing problem

  Alt 8. Apr 2011, 18:15
Da hast Du dir aber selbst das Problem gebaut!
Nenne mal Qauntisierung, ist reine Mathematik bei MIDI.
Die Graphic selber dient mir ja nur um evtl die Note genauer zuplatzieren. Taktanfang zb. oder wenn ich sie zu kurz gespielt habe ebend mal zu verlängern von 1/8 auf 1/4 zb ist also nur Hilfsmittel bei MIDI.
Das Du das Problem Lösen wirst da hab ich volles Vertrauen, nur der Ansatz, die Graphic in den Vordergrund zu setzen, anstatt auf das Eigentlich die MIDIEEVENTS (MIDIFILE)für den Aufbau der Graphic zu nutzen, halte ich nicht für gut!

Gruss alfold
  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 05:04 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