Autor Beitrag
Jagg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Fr 09.08.02 15:37 
Hallo,Leute !

Ich möchte gern ein Programm in Delphi schreiben,das MusikNoten übersetzt !

Ich gebe euch ein Beispiel :
Es gibt ja diese Programme,wo man die MusikNoten in einem Notensystem eingeben und sehen kann,das sind sogenannte MIDI-Noten ! (wer im Musikunterricht aufgepasst hat,weiss wie sowas aussieht)
Aber bei diesen Programmen werden nur die MusikNoten angezeigt,aber NICHT die Beschreibung (also welchen Namen) sie hat z.B. "C,D oder E".

Ich will jetzt ein Programm schreiben,das diese MusikNoten übersetzt,also das man sehen kann welche NotenNamen diese "Note" hat !

Wie fange ich am besten an ???
Versteht ihr überhaupt was ich jetzt will ???

Jagg !
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 09.08.02 15:46 
Hallo,

in welchen Format hast du denn die Noten vorliegen? Das Grafik oder in einer beschreibungssprache? Oder sollen diese in deinem Programm eingegeben werden wie in dem von dir beschriebenen Programm.

Gruß
Klabautermann
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Fr 09.08.02 19:28 
Die Noten haben ich in Grafik vor mir liegen,man kann es vergleichen mit einem Notenblatt wo die ganzen Noten drauf sind !
Jetzt ist mein Problem,wie ich mein Notenübersetzungsprogramm mit dem Programm wo die ganzen Grafiken drauf sind,verbinde ???

Jagg !
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Fr 09.08.02 19:41 
Hi Jagg,

Wenn du eine Art Noteneditor haben willst, also ein Programm, in das du die Noten eingeben willst, dann würde ich direkt beim Eingeben schon Umformen.
Du hast also deine fünf Linien. Wenn jetzt der Benutzer mit der Maus eine Note setzen will, wird intern sofort mit dem entsprechenden Buchstaben weitergemacht. Ein Beispiel:
___________________
___________________
__O________________
___________________
___________________

Der Benutzer hat also ein hohes C (C ' ) gesetzt. Intern wandelt das Programm sofort den Buchstaben als C ' um und arbeitet damit weiter.
Die "Buchstaben" können in einer Variablen gespeichert werden, in der die Buchstaben von-Links-nach-Rechts abgelegt sind. Diese Variable sieht also in etwa so aus:
"F;C ';C;D; usw."
Die Semikolons sind "Feldtrenner", damit du die Zeichen auch auseinanderhalten kanns, wenn der Benutzer ein doppelt-hohes F eingegeben hat (F ' '), denn da kann man ja nicht mehr einen Buchstaben für eine Note zählen. Alternativ kannst du es auch mit einem eindimensionalen Array versuchen. Das wäre sogar besser, denn dann kann man auch bei nicht-Short-Strings die einzelnen Noten anspringen, ohne den String zu splitten. Dadurch kann man auch nachträglich noch seine "Melodie" ändern.
Das Array schreibt man dann, nach passender Umformung, in eine Text-Datei, Note für Note.
Fertig.
Jetzt kann man im Programm das ganze grafisch darstellen, indem man feste Abstände zwischen den einzelnen Noten festlegt und erstmal Linien zeichnet. Dann werden die Noten in der Reihenfolge wie im Array/String gezeichnet, und zwar jeweils zwischen, oder auf, die entsprechenden Linien. Danach "zeichnet" man die Buchstaben immer unter die entsprechenden Noten, wie sie im Array/String stehen, und schon hat man sein Ziel erreicht.
Um die Länge der Noten (1/4, 1/2, ganze) darzustellen, kann man zusätzlich noch Zahlen vor die Buchstaben stellen (im Array; versteht sich). Vorher muss man natürlich festlegen, welches die kürzeste Einheit ist. Meines Wissens ist die achtel Note die kleinste. Also schreibt man vor den Buchstaben eine "8". Dann kommt die "4"tel, die "2"tel (halbe) und die Ganze ("1") Note. Für doppelte und vierfache Noten kann man weitere Zahlen nehmen, wie 20 (doppelte) und 40 (vierfache). Pausen lassen sich dann auch mit "1P" (ganze Pause) darstellen. Will man noch Takt-Striche, muss es ein Eingabefeld für den Takt geben (3/4, zum Beispiel). Dann rechnet das Programm alle Zahlen vor den Buchstaben zusammen, und macht immer nach 12 (3 mal eine viertel Note (3*4=12)) einen senkrechten Strich.
Mit einer Druckfunktion kann dann Beathoven seine Songs schreiben. Und mit einem eingebauten MIDI-Synthesizer kann er sie sich ohne Klavier gleich anhören.

Eine Möglichkeit, aus einer Grafik, die beispielsweise aus einem Song-Buch eingescannt wurde, gibt es keine Lösung. Man müsste ein OCR-Programm für Musiknoten schreiben. Und aus dem Pixelhaufen im Bild eine Note und dann auch noch die Position festzuhalten, ist selbst für mich zu schwierig...
Da könnte man aber beim Hersteller von OmniPage, oder ähnlichen Programmen, nachfragen, ob die dir die Engine überlassen. Dann kann man die ein bisschen umschreiben und bekommt mit viel Know-How nachher eine solche Noten-Erkennung raus. Aber ob die Firma dir die Engine kostenlos (oder überhaupt) überlässt, halte ich für unwahrscheinlich.

Tschüß
tommie-lie

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mo 12.08.02 08:50 
Hey ich verstehe nur Bahnhof,bin zuwar schon lange dabei mit delphi aber was du da gesagt hast vertsehe ich nicht !
Kannst du mir nicht ne kleine starthife geben mit so einem Code ???

Jagg !
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 12.08.02 08:53 
Hallo Jagg,

ließ Dir doch noch mal (oder auch zwei mal) die Hinweise von Tommie durch und stelle dann mal etwas gezielter eine Frage!

Gruß
TINO
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mo 12.08.02 09:29 
Hi Jagg,

ich denke der wichtigste Teil ist das:
tommie-lie hat folgendes geschrieben:
Eine Möglichkeit, aus einer Grafik, die beispielsweise aus einem Song-Buch eingescannt wurde, gibt es keine Lösung. Man müsste ein OCR-Programm für Musiknoten schreiben. Und aus dem Pixelhaufen im Bild eine Note und dann auch noch die Position festzuhalten, ist selbst für mich zu schwierig...
Da könnte man aber beim Hersteller von OmniPage, oder ähnlichen Programmen, nachfragen, ob die dir die Engine überlassen. Dann kann man die ein bisschen umschreiben und bekommt mit viel Know-How nachher eine solche Noten- Erkennung raus. Aber ob die Firma dir die Engine kostenlos (oder überhaupt) überlässt, halte ich für unwahrscheinlich.


Gruß
Klabautermann
knightkiller
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

WinXP SP2
D7 Pers, D2005 Pers
BeitragVerfasst: Mo 12.08.02 09:48 
Hi Jagg,
es gibt bereits ein fertiges Programm, für das was du machen willst.
Das Programm heist Capella-Scan

user defined image