Entwickler-Ecke
Multimedia / Grafik - MIDI Noten im Grid selber zeichnen berechnen?
ALF - Sa 25.06.11 15:58
Titel: MIDI Noten im Grid selber zeichnen berechnen?
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.
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
ALF - 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
ALF - 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.
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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!