Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
02.01.2010, 20:28
DopE



Hey,
Ich brauche ein BPM-Counter fürs Handy.
Ein Freund hat sowas schon gebaut:

Zitat:
var
iT: Integer;
procedure TForm2.bBumClick(Sender: TObject);
var
x: Real;
begin
if bP
Then Begin
T.Enabled:=False;
x:=iT;
x:=x/60;
Label2.Caption:=FloatToStr(x);
End
Else Begin
T.Enabled:=True;
iT:=0;
End;
end;

procedure TForm2.TTimer(Sender: TObject);
begin
iT:=iT+1;
end;

Leider ist das ein Delphi QC. Ich bräuchte nun jemanden der das fürs Handy-Java zum laufen bringt bzw kurz nachbaut. Demjenigen wäre ich sehr dankbar, da bei google nichts tolle raus gekommen ist. Diese eine handy-html seite (falls jemand das doch googelt) funktioniert nicht. :)

Schönen Abend noch.

--

Ich bin so faul, dass ich manche Maps nicht zuende...

zum Seitenanfang zum Seitenende Profil || Suche
001
02.01.2010, 21:02
Bluthund



Darf man erfahren, was der Code da tun soll?
Formatierung wäre auch ganz reizend (code anstatt quote nutzen).
Woher kommen T und bP?

FYI: Timer sind i.A. so implementiert das sie _mindestens_ die angegebene Zeit verstreichen lassen bevor ihr Event gefeuert wird.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
002
02.01.2010, 21:17
ApfelL



Guten Abend, ich bin der 'Schöpfer' dieses Codefusels.
Der Code war mal strukturiert und eingerückt *hust DopE*

@001
Der Code ist im Prinzip recht einfach gehalten.
Ich denke mal du weißt wie man mit Delphi 2010 programmiert?

Das ist der Source zu einer Formular-Anwendung.
Die Zeilen, die Dope hier reinkopiert hat sind nur die Ereignisse,
die vom BPM-Knopf und vom Timer ausgelöst werden.

T ist der Timer, bzw. der Name mit dem ich den 'T'imer (!) aufrufe und
anspreche. bP ist eine Booleanvariable, die man im Source grade nicht sehen kann
weil die global deklariert worden ist.

Diese Variable 'bP' prüft oder Button schon vorhher einmal gedrückt worden ist (-> True) oder nicht (-> False). Wenn der Knopf schon einmal gedrückt worden ist, steht bP auf True und der Timer wird ausgeschaltet. Die verstrichene Zeit 'iT' wird in die Variable 'x' übergeben und durch 60 geteilt. Danach wird das Ergebniss, also die BPM in ein Label geschrieben. Der Verwender kann dann auf dem Formular sehen wieviele BPM das Lied hat.

Über Nutzen & Zweck des Programms lässt sich sicherlich streiten, ich würd das Lied eher in einem Soundstream speichern und dann auswerten, aber DopE wollte gerne das ich das so mache.

Da ich leider Java nicht behersche kann ich ihm das nur in Delphi schreiben, das hilft ihm aber bei seinem Handy nicht wirklich wieter.

Lieben Gruß,
bei weiteren Fragen, einfach fragen ;)

/ Ich weiß das die Variable iT falsch gezählt wird, der Timer muss schneller |ablaufen und iT mit Tausend-Sekundenbruchteilen gezählt werden, damit das ganze viel genauer ist.
\

--

zum Seitenanfang zum Seitenende Profil || Suche
003
02.01.2010, 21:41
DopE



Zitat:
ApfelL postete
Über Nutzen & Zweck des Programms lässt sich sicherlich streiten, ich würd das Lied eher in einem Soundstream speichern und dann auswerten, aber DopE wollte gerne das ich das so mache.

Ich weiß das die Variable iT falsch gezählt wird, der Timer muss schneller |ablaufen und iT mit Tausend-Sekundenbruchteilen gezählt werden, damit das ganze viel genauer ist.

Nutzen und Zweck hat sich grade geklärt. Das Programm muss das ergebnis auch MAXIMAL eine Stelle hinter dem Kommar anzeigen.

Beispiel wie ich das meine:

Taste wird (zB) 4 mal gedrückt (Das 1. mal zum start).
x= (Zeit zwischen 1. Drücken & 2. Drücken) = 60 / (x / 1)
y= (Zeit zwischen 2. Drücken & 3. Drücken) = 60 / (x+y / 2)
z= (Zeit zwischen 3. Drücken & 4. Drücken) = 60 / (x+y+z / 3)

also (zB)

x = 60 / 0.39
y = 60 / 0.39+0,41
z = 60 / 0,39+0,41+0,4

Als (BPM-)Ergebnis sollte immer die Lösung der Buchstaben angezeigt werden.
Hier also (bei z) z = 60 / 0,39+0,41+0,4) = 150

Ich hoffe, das ist soweit verständlich. :)

--

Ich bin so faul, dass ich manche Maps nicht zuende...


Dieser Beitrag wurde am 02.01.2010 um 21:47 von DopE bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche