AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Metronom-Software -- Brauche Hilfe
Thema durchsuchen
Ansicht
Themen-Optionen

Metronom-Software -- Brauche Hilfe

Offene Frage von "Stresslein"
Ein Thema von Stresslein · begonnen am 13. Mär 2005 · letzter Beitrag vom 29. Jun 2005
 
Dax
(Gast)

n/a Beiträge
 
#22

Re: Metronom-Software -- Brauche Hilfe

  Alt 6. Jun 2005, 10:30
Also, du hast die Definition eines bpm. Entspricht wie gesagt einem Schlag pro Minute. Die Variable "bpmTicks" speichert, wie viele Ticks eines Taktgebers im Rechner einer Minute entsprechen. Oder wir stellen eine Frage: Wenn ich zwischen zwei Schlägen (1 bpm) eine Minute warten will, wie groß muss der Unterschied zwischen dem QueryPerformanceCounter-Wert des letzten Schlags und jetzt sein? Nun, ganz genau "bpmTicks". Willst du 2 Schläge (2 bpm) haben, wäre es dann logischerweise "bpmTicks div 2"

Hier mal ein kleiner Code, der ungefähr tun sollte, was du willst.

Delphi-Quellcode:
var
  TempTicks, LastBeatTicks: Int64;
  bpm: IntegerM

bpm := StrToInt(Edit.Text); // bpm enthält nun deine gewünschte bpm-Zahl
QueryPerformanceCounter(LastBeatTicks);
DoBeat; // Am Anfang gleich den ersten Schlag abspielen
while MetronomeRunning do // solange wie das Metronom laufen soll..
begin
  QueryPerformanceCounter(TempTicks);
  if SameValue(LastBeatTicks - TempTicks, bpmTicks div bpm, Frequency div 10000) then
  // mit SameValue (unit Math) überprüfen wir, ob die Zeitdifferenz zwischen dem letzten Beat
  // und jetzt ungefähr mit der Zeit übereinstimmt, die zwischen 2 Beats liegen soll.
  // Frequency div 10000 heißt hier: Selbst, wenn die Werte noch 100µs auseinander liegen,
  // wird angenommen die Werte seien gleich
  begin
    DoBeat;
    LastBeatTicks := TempTicks;
  end;
end;
Der Code ist ungetestet, sollte aber funktionieren.
  Mit Zitat antworten Zitat
 


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:54 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