Entwickler-Ecke

Freeware Projekte - Metronom


JayEff - Fr 30.03.07 23:16
Titel: Metronom
Hallo Leute!
Wie so oft, hab ich ein relativ sinnbefreites Programm geschrieben, das mir irgendwann mal in den Sinn kam. Ich wusste sofort einen wundervollen Namen:
Das Jaytronom

Was tut es?
Es ist vorallem ein Taktgeber. Es soll, ähnlich einem richtigen Metronom, für Musiker eine Orientierung für eine gleichbleibende Spielgeschwindigkeit bieten.

...aber?
Nun. Es ist sehr ungenau, trotz Einsatz des TDXTimers. Die Ungenauigkeit erkennt man am deutlichsten, wenn man eine Frequenz von 60 bpm einstellt und das Interval, welches in ms angegeben wird, betrachtet: Es schwankt zwischen 1100 und 1200 ms! Bei 60 bpm sollte es natürlich konstant bei 1000 ms sein.

...ja, aber ist es dann nicht ... Schwachsinn?
Nein. Zumindest nicht unbedingt. Man kann auch mit einer kleinen Toleranz im Frequenzbereich leben ;)
Ausserdem wars ein interessantes Stück Geometrie den Zeiger zu zeichnen. Bei der Gelegenheit: Die Paintbox, auf die gezeichnet wird, kann man in der IDE beliebig vergrößern/-kleinern, alle Punkte werden zur Laufzeit aus den Width/Height-Eigenschaften errechnet.

Eine Anmerkung noch: Man erkennt ab und zu ein Flimmern. Bevor jemand fragt: DoubleBuffered ist true. ;)


Ironwulf - Sa 31.03.07 23:09

ich kann die exe nicht entpacken nur die wave und die bass.dll ...


Karlson - Sa 31.03.07 23:30

Also bei mir klappt das Entpacken und das Programm :gruebel:

JayEff, hast du Doublebuffered auf true? Weil bei mir flackert das ab und zu! :mrgreen: (nein, spass ;) )


Funktioniert gut, ich hab keine Fehler entdecken können. Ist bestimmt für Musiker sehr nützlich, wenn sie ihr metronom mal grad nich dabei haben.

@Ironwolf: Ich hab mit Winrar keine Probleme. Liegt wohl an deinem Packprogramm.


Saubäär - Sa 31.03.07 23:36

user profile iconKarlson hat folgendes geschrieben:
Ist bestimmt für Musiker sehr nützlich, wenn sie ihr metronom mal grad nich dabei haben.

Aber zufällig den Desktop ;o)


Ironwulf - Sa 31.03.07 23:37

ich hab die fehler beim entpacken

! Pfad\Jaytronom[1].zip: Unknown method in Jaytronom.exe
! Cannot execute "Pfad\Jaytronom.exe"


Karlson - Sa 31.03.07 23:40

user profile iconSaubäär hat folgendes geschrieben:
user profile iconKarlson hat folgendes geschrieben:
Ist bestimmt für Musiker sehr nützlich, wenn sie ihr metronom mal grad nich dabei haben.

Aber zufällig den Desktop ;o)


Hey, da gibts ne richtig coole Erfindung [http://www.flashbios.org/catalog/images/laptop_complete.jpg] jetzt. Du wirst es nicht glauben, aber da braucht man nicht mal mehr den Monitor mitzuschleppen! :lol:

Ne echt jetzt...gibt genug Leute (wohl hauptsächlich Studenten) die ihren Laptop oft mit rumschleppen - und wenn man sich dann das Metronom sparen kann ist das doch okay. Zumindest war das Teil meiner Schwester ziemlich schwer und unhandlich. Die wär bestimmt froh wenn sie sowas gehabt hätte!


Saubäär - Sa 31.03.07 23:42

user profile iconKarlson hat folgendes geschrieben:
Hey, da gibts ne richtig coole Erfindung [http://www.flashbios.org/catalog/images/laptop_complete.jpg] jetzt :lol:


Cool was das denn?? :wink:

Aber als Musiker kann ich dir sagen, dass man sowas wie ein Metronom nie und nimmer brauch! (meine Meinung)

Gruß


Ironwulf - Sa 31.03.07 23:43

schwer un unhandlich? die passn heutzutage in jede hosentasche :D


Karlson - Sa 31.03.07 23:44

Ja, schön toll! Ich wollte nur nett sein. Leck mich :lol: :mrgreen:

@Saubäär: Ich hab keine Ahnung wofür man das brauchen könnte - aber ich hab auch nur 6 Wochen Blockflöte in der Grundschule gespielt ;)


Saubäär - Sa 31.03.07 23:45

user profile iconKarlson hat folgendes geschrieben:
Ja, schön toll! Ich wollte nur nett sein. Leck mich :lol:

War das jetzt erst gemeint? Ich scherze doch nur. :wink:


Karlson - Sa 31.03.07 23:46

Ach was! Ich hab doch extra den LoL Smiley dazu gemacht ;)


Saubäär - Sa 31.03.07 23:48

Dann bin ich beruhigt.

Gute Nacht Freunde :D


JayEff - So 01.04.07 18:02

user profile iconSaubäär hat folgendes geschrieben:
Aber als Musiker kann ich dir sagen, dass man sowas wie ein Metronom nie und nimmer brauch! (meine Meinung)
Lass mich raten: E-Gitarre nach Tabulatur? :roll: Ich spiele seit über 10 Jahren Klavier und Saxophon und ich garantiere dir, ohne Metronom kannst du kein "anständiges" Instrument auf teamfähige Art und Weise lernen, da du nie lernst, im Takt zu spielen. Kaum kommst du in ein Orchester/Band und sollst dich z.B. am Schlagzeuger orientieren, wirst du nur Chaos verursachen :(

Edit: Aber das ist ja OT, also einich gehts hier ums Programm ;)

Wenn jemand ne Idee hat, wie man das leichte Flimmern wegbekommt, immer her damit. Ich hab einen DXTimer in dem per sinus/cosinus etc. immer die Linien per MoveTo/LineTo gezeichnet werden, mit einem Interval von 10 ms. Die Routine wird allerdings nicht bei jedem onTimer-Event ausgeführt:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
//Increment: Lokal Extended, Alpha: Global Extended, Interval: Global Integer

    Increment := 500 / Interval;

    If ToRight Then
        alpha := alpha + Increment
    Else
        alpha := alpha - Increment;

    If round(alpha * 3) <> round(prev_alpha * 3Then Zeichnen;


MrSaint - So 01.04.07 18:55

Hmm.. ich brauch sowas zwar nicht, aber ich würde zuerst versuchen, das ding genauer zu bekommen bevor ich versuch das flackern zu eliminieren ;) Ich schätze jetzt einfach mal, dass das laggen durch die zeichen-Methode erzeugt wird.. Dann würde ich einfach mal den Timer in einen eigenen Thread packen und im OnTimer das Klack-Geräusch abspielen lassen. Im Main-Thread würde ich dann mit einem zweiten Timer das Zeichnen machen. Den zusätzlichen Thread kannst du ja noch auf Realtime-Priority setzen und dann sollte es, denke ich, besser laufen. Dann hast du nämlich einen eigenen Thread, der häufiger Zeit bekommt als der Main-Thread und der gibt dein Geräusch aus. Und der Thread kann dann seine Timer-Messages (ich geh jetzt mal davon aus, dass OnTimer-Ereignisse per Message abgearbeitet werden) immer möglichst schnell abarbeiten, weil er ja sonst nix zu tun hat. Der Main-Thread muss ja nebenher auch immer noch malen und auf Klicks, MouseMoves etc. reagieren...
Wenn du aber Pech hast, sind die Timer einfach so ungenau :( Das wär natürlich blöd ;)


MrSaint


JayEff - So 01.04.07 19:03

user profile iconMrSaint hat folgendes geschrieben:
Ich schätze jetzt einfach mal, dass das laggen durch die zeichen-Methode erzeugt wird..
Nope, schon ausprobiert.
Das Klicken wird übrigens dann ausgelöst, wenn der Zeiger die Mitte erreicht, nicht per Interval eines Timers.
Übrigens, wenn man die BPM auf ca 65 stellt, bekommt man recht genau 1000ms auf dem Hin- und 1015ms auf dem Rückweg des Zeigers. Also die Ungenauigkeit sollte sich "wegrechnen" lassen, muss mal sehn, ob das geht. Aber eigentlich ist die Ungenauigkeit kein Problem: Beim Spielen soll man nicht sich eine genaue Geschwindigkeit perfekt einprägen, sondern lernen, nach einer Vorgegebenen "Richtgeschwindigeit" zu spielen. Der Dirigent variiert am Ende sowieso.


Regan - So 01.04.07 20:07

Also, der fehler beim Entpacken kommt bei mir auch. Als ich es dann mit Winrar gemacht habe, funktionierte es plötzlich. na egal.
Bei mir wird kein Bild angezeigt,zumindest, wenn man das programm erst kleingezuogen und dann wieder großgezogen hat; Mein Vorschlag: Größe ändern verhindern.
Und noch was: Pausiert man das Programm und stellt man einen anderen wert ein, so wird der Interval addiert.
P.S. Du solltest den Timer nur laufen lassen, wenn das Programm aktiv ist.


JayEff - So 01.04.07 22:36

user profile iconRegan hat folgendes geschrieben:
Als ich es dann mit Winrar gemacht habe, funktionierte es plötzlich.
Nun, ich habs mit Winzip verpackt :gruebel:
user profile iconRegan hat folgendes geschrieben:
Bei mir wird kein Bild angezeigt, [...]zumindest, wenn man das programm erst kleingezuogen und dann wieder großgezogen hat; Mein Vorschlag: Größe ändern verhindern[/...]

Klar, bsSingle war schon geplant, nur... Dass dann das Bild nicht mehr angezeigt wird ...? :gruebel: Das find ich echt seltsam. Die Paintbox wächst beim Verändern der Fenstergröße nämlich nicht mit, oder so.
user profile iconRegan hat folgendes geschrieben:
Und noch was: Pausiert man das Programm und stellt man einen anderen wert ein, so wird der Interval addiert.
P.S. Du solltest den Timer nur laufen lassen, wenn das Programm aktiv ist.

Das ist seltsam... Wenn man auf Start/Stop klickt wird der Timer normalerweise Enabled:= not Enabled. :gruebel: