Autor Beitrag
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Sa 25.06.11 15:58 
Hab lange überlegt wie ich den Title nennen soll.
Vor allen, ob ich es richtig formuliert habe, Mein Problem :roll:

Vorab folgende Grundlage.
Alles basiert auf 1/4tel Note.
Soll heissen 1/4tel Note enspricht eine Spalte im Gid, in Abhängigkeit der Darstellenden Note.
Standard Einstellung ist 1/4, 1/4, 4/4.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
Duration: ist die zu zeichnenden Notenlänge im Takt pro Darstellende Note
     Value
1/1  4
1/2  2
1/4  1
1/8  0.5 
1/16 0.25
1/32 0.125
1/64 0.0625

<span style="color: red">Darstellende Note im Grid pro 1/4tel Note</span>
     Value
1/4  1
1/8  2  
1/16 4
1/32 8
1/64 16

Takt Arten: Wieviel Darstellende Noten reinpassen im Takt
     Value
2/2  4
3/2  6
4/2  8
2/4  2
3/4  3
4/4  4
5/4  5
6/4  6
9/4  9
usw



Bei der standard Auflösung gibt es kein Problem.
Solange ich nur ein ValueWert zur Anzeige benutzte.

Wenn ich 2 Valuewerte berechne naja, schon schwierigkeiten. Bei drei total Confus.

Hier mal 2 Beispiele:
1.
Duration: 1/1 value 4
Darstellende Note 1/4 value 1
4 div 1 * taktarten.Value funct klar

2.
Duration: 1/2 value 2
Darstellende Note value 1
2 div 1 * taktarten.Value kann nicht funcen

Dafür nun ne Formel mit 3 Values omg.

Ich bekomme es nicht zusammen wie die ValueWerte berechnet werden mussen das der zu zeichnede Balken die breite X im Grid einnimmt. Entweder er ist zu kurz oder zu lang. Ne Formel kann ich nicht anbieten, da ich alles erst auf Papier schreibe um überhaupt nen kleinen Überblick zu bekommen, wie wo was mit einander abhängig wird. Dabei habe ich schon festgestellt das irgend wo 1 bis 2 zuviel oder zu wenig als Ergebnis rauskommen. Aber wie verrechne ich diese +- Überträge.

Sind also wieder mal Mathe Asse gefragt.
Ich hoffe ihr könnt mir da Helfen.

Gruss ALf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!


Zuletzt bearbeitet von ALF am Di 28.06.11 15:00, insgesamt 1-mal bearbeitet
ALF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Mo 27.06.11 10:35 
Ok, ich merg schon, sch***** formuliert.
Mal anders

const = 4

a = 4, 2, 1, 0.5, 0.25, 0.125, 0.0625
b = 2, 3, 4, 5, 6, 7, 8, 9
c = 1, 2, 4, 8, 16,

x muss folgendes Ergebnis liefern

1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 32, 64

mal so ein Versuch von vielen.
x= ((b div a) - ((b div a) - a)) * c

Meine Versuche und zich andere, klar können nicht funcen sonst würde ich ja hier nicht fragen :wink:

Frage wie muss diese Formel aussehen oder sollte ich hier lieber mit
if (a = so) and (b = so) then rechne so, arbeiten um die richtien Ergebnisse zu bekommen

Oder muss ich noch die constante 4 mit einbinden

für mich also hochkomplex diese Aufgabe.
Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
ALF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Di 28.06.11 15:19 
So hab es nun mif if Abfragen gelöst und es funct.
Hab allerdings oben noch mal Werte korrigieren müssen.
Das ganze ist jetzt in einer funktion untergbracht.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if a = 4 then
 result:= round((b * 1) * c)
else
if a = 2 then
 result:= round((b / (b / a)) * c)
else
if a <= 1 then
 result:= round(a * c)


Ob sich dies allerdings lohnt in eine Formel zu packen, wenn es geht, ist fraglich. Wegen der Übersichtlichkeit.

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!