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
Antwort Antwort
Seite 2 von 3     12 3      
sandraeberlein
(Gast)

n/a Beiträge
 
#11

Re: Metronom-Software -- Brauche Hilfe

  Alt 13. Mär 2005, 19:49
Mit windows.beep kann man cool metronom machen
  Mit Zitat antworten Zitat
Stresslein

Registriert seit: 20. Feb 2005
44 Beiträge
 
#12

Re: Metronom-Software -- Brauche Hilfe

  Alt 26. Apr 2005, 19:06
wie kann man mithile von QueryPerformanceCounter und QueryPerformanceFrequency ein Metronom realisieren?? Ich bin mir da irgendwie unklar
  Mit Zitat antworten Zitat
Benutzerbild von tn249
tn249

Registriert seit: 18. Jan 2004
Ort: München
164 Beiträge
 
Delphi 2005 Personal
 
#13

Re: Metronom-Software -- Brauche Hilfe

  Alt 26. Apr 2005, 20:26
Das hier kannst du Dir mal anschaun; (für die Übung)

http://www.delphipraxis.net/internal...ormancecounter

Und hier Code für den QueryPerformanceCounter;
(ungetestet, hab grad kein Delphi zur Hand!)

Delphi-Quellcode:
var
  TimeBetweenTicks: Integer; // TimeBetweenTicks in ms
  Abort: Boolean;
  Freq, Start, Stop: Int64;

[..]
Abort := false;
QueryPerformanceFrequency(Freq); // Freq kann sich nur durch Neustart des PCs ändern!
QueryPerformanceCounter(Stop); // Wert vernünftig initialisieren
while not(Abort) do
begin
  QueryPerformanceCounter(Start);
  while (((Stop - Start)/Freq) < TimeBetweenTicks) do
    begin
      QueryPerformanceCounter(Stop);
      // evtl: Application.ProcessMessages(); Keine Ahnung wie sich das auf die Genauigkeit auswirkt.
    end;
  //Beep, Klick oder andere Anzeige des Ticks
  // evtl: Abort := true;
end;
[..]
Hoffe das klappt.

Auch wenn ich glaube, dass ein PC ( noch ) zu ungenau ist für diese Aufgabe,
MfG
Thomas
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Stresslein

Registriert seit: 20. Feb 2005
44 Beiträge
 
#14

Re: Metronom-Software -- Brauche Hilfe

  Alt 4. Jun 2005, 17:49
irgendwie funktioniert das nicht so... hat jemand weitere vorschläge??
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#15

Re: Metronom-Software -- Brauche Hilfe

  Alt 4. Jun 2005, 18:30
Was funktioniert denn nicht?
  Mit Zitat antworten Zitat
Stresslein

Registriert seit: 20. Feb 2005
44 Beiträge
 
#16

Re: Metronom-Software -- Brauche Hilfe

  Alt 5. Jun 2005, 17:33
naja also ich bin noch anfänger und ich kann den code von oben irgendwie nicht richtig anwenden. ich hab mal was probiert aber dann kommt:
Abort: Unbekannte Anweisung

Hier meine Unit1:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  TimeBetweenTicks: Integer; // TimeBetweenTicks in ms
  Abort: Boolean;
  Freq, Start, Stop: Int64;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Abort := false;
QueryPerformanceFrequency(Freq); // Freq kann sich nur durch Neustart des PCs ändern!
QueryPerformanceCounter(Stop); // Wert vernünftig initialisieren
while not(Abort) do
begin
  QueryPerformanceCounter(Start);
  while (((Stop - Start)/Freq) < TimeBetweenTicks) do
    begin
      QueryPerformanceCounter(Stop);
      // evtl: Application.ProcessMessages(); Keine Ahnung wie sich das auf die Genauigkeit auswirkt.
    end;
  //HIER die Anweisung für den Clickton abzuspielen
  windows.Beep();
  // evtl: Abort := true;
end;

end.
wäre toll wenn mir jemand helfen kann
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#17

Re: Metronom-Software -- Brauche Hilfe

  Alt 5. Jun 2005, 17:47
Niemals begin und end vergessen

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  TimeBetweenTicks: Integer; // TimeBetweenTicks in ms
  Abort: Boolean;
  Freq, Start, Stop: Int64;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Abort := false;
  QueryPerformanceFrequency(Freq); // Freq kann sich nur durch Neustart des PCs ändern!
  QueryPerformanceCounter(Stop); // Wert vernünftig initialisieren
  while not(Abort) do
  begin
    QueryPerformanceCounter(Start);
    while (((Stop - Start)/Freq) < TimeBetweenTicks) do
      begin
        QueryPerformanceCounter(Stop);
        // evtl: Application.ProcessMessages(); Keine Ahnung wie sich das auf die Genauigkeit auswirkt.
      end;
    //HIER die Anweisung für den Clickton abzuspielen
    windows.Beep();
    // evtl: Abort := true;
  end;
end;

end.
  Mit Zitat antworten Zitat
Stresslein

Registriert seit: 20. Feb 2005
44 Beiträge
 
#18

Re: Metronom-Software -- Brauche Hilfe

  Alt 5. Jun 2005, 17:59
wie definiere ich dann das tempo??
mit
TimeBetweenTicks := 6000; ??
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#19

Re: Metronom-Software -- Brauche Hilfe

  Alt 5. Jun 2005, 18:17
Definieren wir ein bpm für die QPC-Methode wie folgt:
Delphi-Quellcode:
var
  Frequency, TicksPerMinute: Int64;

QueryPerformanceFrequency(Frequency);
TicksPerMinute := Frequency * 60; // Frequency ist in Hz angegeben == Ticks pro Sekunde
Dann kannst du für eine beliebige bpm-Zahl einfach ausrechnen:
Delphi-Quellcode:
var
  bpmTicks: Int64;

bpmTicks := TicksPerMinute div Deine_bpm_Zahl;
div ist hier hinreichend genau, da bei neuen Rechnern Frequency etwas um 3 MHz ist, also ziemlich viel
  Mit Zitat antworten Zitat
Stresslein

Registriert seit: 20. Feb 2005
44 Beiträge
 
#20

Re: Metronom-Software -- Brauche Hilfe

  Alt 5. Jun 2005, 18:44
ich will ja aber in einem editfeld die bpm eingeben und dann einfach start drücken, damit die datei blop.wav in diesem abstand (edit1) abgespielt wird.
muss ich alles bei var oben reinschreiben??
also:
Delphi-Quellcode:
var
  Form1: TForm1;
  TimeBetweenTicks: Integer; // TimeBetweenTicks in ms
  Abort: Boolean;
  Freq, Start, Stop: Int64;
  Frequency, TicksPerMinute: Int64;
  QueryPerformanceFrequency(Frequency);
  TicksPerMinute := Frequency * 60; // Frequency ist in Hz angegeben == Ticks pro Sekunde
  bpmTicks: Int64;
  bpmTicks := TicksPerMinute div Deine_bpm_Zahl;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz