Das große deutschsprachige Gitarrenforum

Normale Version: The Tranposer (Betatester gesucht!)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Ich poste das mal bewusst unter Musktheorie und nicht unter Links, zum einen ist das hier noch nicht der endgültige Link, zum anderen betrifft das hier tatsächlich die Theorie, z.B. mit der Frage weiter unten, wie bringe ich einem dummen Computer bei das \"C F G C\" auf C Dur deutet?

Ich bin gerade dabei eine Anwendung zu schreiben, die einem beim Transponieren von Songs in andere Tonarten helfen soll.
Nicht ganz unähnlich dem was Chordie macht, nur mit dem Unterschied, das man hier nicht auf den (illegalen) Tab-Vorrat von Chordie angewiesen ist sondern sich seine Tabs selber schreiben oder aus (illegalen oder auch legalen) Quellen selber ziehen muss.

Eine einfache Version ist fertig und online und kann ausprobiert werden, Link weiter unten.


Erst möchte ich erklären, was das Teil machen soll.

Man kann dem Programm (der Webseite) ein beliebiges Textfile übergeben.
Meine Anwendung analisiert dieses Textfile dann Zeile für Zeile und versucht zu erkennen, ob sich hier möglicherweise Akkordsymbole verbergen. Wenn der von mir programmierte Algorithmus der Meinung ist, die jeweilige Zeile ist eine Akkordzeile, dann werden dort diese Akkorde farblich markiert und um einen Faktor transponiert, den man auch auf dieser Seite angeben kann.
Z.B. sollte mit der Einstellung +2 Halbtöne aus

Code:
Am   C             Dm     F
There is a house down in New Orleans
     Am       C      E7
They call the Risin Sun
dann werden

Code:
Bm   D             Em     G
There is a house down in New Orleans
     Bm       D      F#7
They call the Risin Sun

Das funktioniert auch alles schon mehr oder weniger.

Ich hoste keine Tab files oder ähnliches, ihr müsstet euch schon selber irgendwo Tablaturen besorgen um diese zu transponieren!

Einschränkungen:
1. Ich arbeite mit B statt H (internationale Notierung, ich habe H zwar auch implementiert aber noch nicht ernsthaft getestet, kann sein das es klappt, kann sein das es gar nicht klappt, und im schlimmsten Fall führt das zu Problemen beim B (nicht mehr eindeutig), da muss ich noch sehen was ich machen werde).
2. Ich gebe derzeit nur Kreuztonarten zurück. Ich überlege noch wie ich herauskriege, in welcher Tonart ein Song ist, dann könnte ich genau bestimmen ob ich Kreuz oder B zurückgeben muss. Hat jemand eine Idee wie ich das bestimmen kann? Ich könnte es mit einfach machen und den Akkord nehmen, der am häufigsten vorkommt und diesen zum Grundakkord ernennen...
3. Da ich zuerst jede Zeile analysiere, ob sie Akkordsymbole enthält und diese nur dann bearbeite, wenn ich einigermassen sicher bin, das sie Akkorde enthält funktionert das ganze nicht bei Notierungen wie hier:
Code:
There [Am]is a [C]house down in [Dm]New Orleans [F]
4. Mit echten Tablaturen kann die Anwendung natürlich auch nichts anfangen bzw die Tablatur selber nicht editieren, also hier geht es nur um wienenntmandieeigentlich? Sheets? Tabs?
5. Die Optik der Seite ist noch unter aller Kanone, ich habe bisher \"nur\" das Programm ans laufen gebracht. Da sind noch Dinge denkbar wie \"Ausgabe auf einer druckbaren Seite, mit allen vorkommenden Akkordsymbolen für ein vorher ausgewähltes Instrument am Kopf oder Fuss als Grafiken\".
6. Tabs sind gewöhnlich mit einem \"Monospace\" Font gepostet, d.h. alle Buchstaben sind gleich dick. Dadurch kann man Akkorde genau an die richtige Textposition schieben. Dies kann sich durch das Transponieren verschieben. Ob ich das korrigiere oder darauf vertraue das sich das ja mehr oder wenig selber ausgleicht (manche Akkorde werden kürzer, manche länger) weiss ich noch nicht...

Was mich jetzt interessiert, gibt es in der bisherigen Anwendung Fehler? (Ganz sicher gibt es die, ich muss sie nur finden!)
Werden Akkorde falsch transponiert?
Werden Akkorde nicht erkannt? (Ganz sicher habe ich hier bisher noch nicht alle möglichen Kombinationen von Akkorden drin)
Ist das Teil überhaupt für jemanden interessant?

Im Augenblick steht die Anwendung hier:

http://ws64.com/transpose.php

Dort wird sie auf Dauer nicht bleiben, daher bitte noch nicht in Linksammlungen aufnehmen, wenn das Teil einmal richtig läuft mache ich mir Gedanken über einen Namen und eine geeignete Domain!
--
http://Chordfind.com - http://EarlyWolf.com - http://youtube.com/ws64
Habe einen \"Schnelltest\" gemacht, bei dem ich das Lied \"Breakfast at Tiffanys\" von Deep Blue Something um 5 Halbtöne oder eine Quarte nach Oben zu transponieren versucht habe. Dabei sind mir zwei \"Bugs\" aufgefallen:
  1. Wenn ein Akkordbuchstabe direkt vor oder hinter einem Lesezeichen steht, wird der Akkord nicht transponiert

    aus dem Text Zeile[song]Chorus x 2-----------------D G A , end on D[/song]wurde somit[song]Chorus x 2-----------------[c=#FF0000]D[/c] [c=#0000FF]C[/c] [c=#0000FF]D[/c] , end on [c=#0000FF]G[/c][/song]
  2. Du wandelst auch die Kleinbuchstaben a b c d e f g (und h?) in andere Akkorde um. Das Wörtchen \"a\" ist in Englischen Texten jedoch sehr häufig, außerdem werden Mollakkorde im Englischen nicht mit Kleinbuchstaben, sondern eben mit dem Zusatz \"m\" angegeben. Wenn du zu H schon B sagst, solltest du dich auch in Sachen Moll und Dur an der Nicht-Deutschen Schreibweise orientieren.

    aus dem Text[song]end on a few times[/song]wurde somit[song]end on [mark=#FF0000][c=#0000FF]d[/c][/mark] few times[/song]Am ist jedoch auch gefährlich, weil diese Akkordbezeichnung am Anfang eines Deutschen Satzes ganz bestimmt nicht das bezeichnet, was wir unter einem A-Moll-Akkord verstehen...
Gruß,
--
And then one night in desperation, a young man breaks away.
He buys a gun, steals a car, tries to run but he don´t get far in the
GHETTO
Vielen Dank für den Input, genau solche Fälle suche ich!

Zitat:Original von ghetto:
...Dabei sind mir zwei \"Bugs\" aufgefallen:
  1. Wenn ein Akkordbuchstabe direkt vor oder hinter einem Lesezeichen steht, wird der Akkord nicht transponiert

Lesezeichen ist das minus?
Das habe ich angepasst (war nicht ganz leicht, da das Minus in Akkorden wie C7-5 ja eine Bedeutung hat, sollte jetzt aber funktionieren).

Mit den Kleinbuchstaben und dem H, ich arbeite daran. Ich möchte beides benutzen.

Was derzeit noch schief geht ist wenn ein Tab sowohl H als auch B beinhaltet. Das H wird dann richtig erkannt, aber das B wird leider auch wie das deutsche H behandelt. Da muss ich mir noch was einfallen lassen.
Bei den Kleinbuchstaben, die werden derzeit einfach nur Kleinzurückgegeben, solange ich nicht (was ich aber vorhabe) noch den Akkord mit zurückgebe (als Grafik) kann es mir egal sein ob es sich um Mollakkorde handelt oder nicht, das muss der Verfasser des Tabs abklären!

Mein derzeitiger \"schwieriger\" Testtab (der Dank Deiner Hilfe wieder ein wenig gewachsen ist) lautet

Trallala am Abend
Am E A7 C7-5 C7-5555jibbetnich a c Am a7 am7 C
Chorus x 2-----------------D G A , end on D
Chorus x D-----------------D G A , end on D
intro/verse (the edges are...) A - F - F#m - F
hammer on the B string for the intro and random parts in the verses
chorus (and there is no law...) F#m - E - F - A
F#m - E - A - F
bridge (oh, oh,...) F#m - E - E - F
E - F - F#m - F
coda (my only mistake is...) A - A - F#m - F
end on a few times
a rose is a rose is a rose
Bb6 B6 H6
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

und wird sauber abgearbeitet bis auf die letzte Zeile, da weiss ich aber wirklich nicht was ich noch machen soll bzw wie ich da entscheiden will ob es sich um Akkorde handelt oder nicht.

Bei den letzten beiden Zeilen sieht man übrigens schön was passiert wenn man die transponiert. Bei \"0\" änder ich nichts, aber bei \"1\" gibts keinen Unterschied mehr zwischen B und H. Da müsste ich wohl zuerst abfragen ob ich im gesamten Tab einen \"H\" Akkord finde und dann den \"B\" Akkord anders behandeln. Da muss ich nochmal drüber nachdenken!

--
http://Chordfind.com - http://EarlyWolf.com - http://youtube.com/ws64
Aha, geht schon deutlich besser!

Jetzt habe ich noch versucht, die gefinkelte und absichtlich mit einem Beistrich versehene Akkordfolge[song]F#7, F#maj7 B6[/song]um 8 Halbtöne oder eine kleine Sexte nach unten zu transponieren. Die langen Akkordbezeichnungen hat dein Programm problemlos geschluckt, den Beistrich jedoch nicht:[song][c=#FF0000]F#7[/c], [c=#0000FF]A#maj7 D#6[/c][/song]Die Akkordnamen A#maj7 und D#6 sind zwar grundsätzlich richtig, einfacher zu lesen und somit \"wahrscheinlicher\" wären jedoch die Bezeichnungen mit b, also Bbmaj7 und Eb6.

Noch ein Tipp am Rande:
Das Thema H und B und Bb ist extrem heikel und die durchgehende Verwendung ein- und derselben Bezeichnung in von Otto Normalmusikern erstellten Textdateien ist bei weitem nicht immer gegeben. Außerdem kann es sein, dass dieser B- (oder H-) Akkord im ganzen Stück nur ein einziges Mal vorkommt, wie z.B. die bei Stücken in D# beliebte Schlussakkordfolge B - C# - D#. Im Moment entscheidet sich dein Programm - wie du geschrieben hattest - automatisch für B = Deutsch H, Leute die sich mit # und b nicht recht auskennen und die beiden durcheinander verwenden können in D#-Dur als Dominante jedoch den Bb-Dur Akkord einsetzen und für diesen - nach Deutscher Gewohnheit - ein B hinschreiben. Wofür entscheidest du dich jetzt?

Genau wegen solcher Fälle möchte ich dir empfehlen, Bezeichnungen wie Fis Cis Gis Dis Ais Eis, Es As Des Ges Ces Fes, B anstelle Bb sowie die Kleinbuchstaben und -kombinationen (as a ais b h his ces c cis des d dis es e eis fes f fis ges g gis) völlig außer Betracht zu lassen, weil du mit diesen Bezeichnungen immer wieder auf programmiertechnisch extreme und z.T. wirklich unlösbare Herausforderungen stoßen wirst. Im Moment hast du mit den Kleinbuchstaben für Deutschspachige nur eine Teillösung implementiert. Fis, Es und alle anderen \"ausgeschriebenen\" Akkordnamen funktionieren nämlich nicht. Wenn du diese aber berücksichtigen würdest, wären Textzeilen auch wieder gefährdet, weil \"As\", \"Des\", \"Es\" in Englischen, Bayrischen und Deutschen Texten ganz normale Worte sind. Dazu kommen noch andere Sprachen, in denen solche Buchstabenkombinationen als Text eine Bedeutung haben können.

Ich programmiere auch hin und wieder und weiß, dass ein Programmierer alle Regeln und Ausnahmen im Programmcode logisch beschreiben muss. Mit dem internationalen Akkordbezeichnungssystem würde ich mich aussehen, da lässen sich alle Transponierschritte deutlich und ohne Zweifel definieren. Wenn ich daneben in ein- und demselben Programm auch noch die altbewährte Deutsche Akkordschreibweisen transponieren will kann ich die Regeln und Ausnahmen nicht mehr sauber beschreiben, mein Programm produziert mit Sicherheit Fehler.

Ein Ansatz fällt mir dazu noch ein: Wenn du beide Systeme ermöglichen willst, dann lasse doch die Benutzer wählen, ob sie einen Text mit \"Deutschen\" Akkordbezeichnungen oder einen Text mit \"internationalen\" Akkordbezeichnungen transponieren wollen. Durch diese aktive Wahl deiner User kannst du wenn auch nicht alle, dann aber zumindest ganz viele Fehler von Vorne herein ausschließen.

Gruß,
--
And then one night in desperation, a young man breaks away.
He buys a gun, steals a car, tries to run but he don´t get far in the
GHETTO
So, Komma (und Punkt) sind jetzt auch \"gültige Trenner\", d.h. \"F#7, F#maj7 B6\" klappt jetzt auch.

Das mit Dis und Des und As usw hatte ich zwischenzeitlich mal drin und habs auch wieder rausgeschmissen.

Ich überlege mir mal ob ich Checkboxen einführe ala
\"H statt B/B statt Bb\"
\"erlaube Kleinbuchstaben für Moll\"
usw.

---

Im Augenblick gebe ich tatsächlich nur Kreuztonarten zurück [Edit: gerade geändert, siehe unten], ich überlege gerade noch wie ich herauskriege in welcher Tonart ein Song ist, dann kann ich entscheiden ob hier B nicht besser wäre als #.
Ich könnte es mit auch leicht machen und mir ein Alphabet
C
C#
D
Eb
E
F
F#
G
Ab
A
Bb
B
nutzen...
(Das habe ich tatsächlich gerade mal eingebaut, mal sehen ob mir das gefällt. Nachteil nun ist natürlich das man u.U. b und # gemischt zurück kriegt)
--
http://Chordfind.com - http://EarlyWolf.com - http://youtube.com/ws64
Checkboxen sind gut, da hast du schon einen Schritt weiter gedacht als ich vorhin!

Gruß,
--
And then one night in desperation, a young man breaks away.
He buys a gun, steals a car, tries to run but he don´t get far in the
GHETTO
sehr interessant, ich habe gerade nicht die Zeit das genauer anzusehen, für den Anfang mal so viel:

2. Ich gebe derzeit nur Kreuztonarten zurück. Ich überlege noch wie ich herauskriege, in welcher Tonart ein Song ist, dann könnte ich genau bestimmen ob ich Kreuz oder B zurückgeben muss. Hat jemand eine Idee wie ich das bestimmen kann? Ich könnte es mit einfach machen und den Akkord nehmen, der am häufigsten vorkommt und diesen zum Grundakkord ernennen...

Der am häufigsten vorkommende Akkord ist sicher ein guter Hinweis auf die Grundtonart, wenn er dann auch noch Schlussakkord ist, liegst du sicher 99% richtig.
--
:_pirate:
e-learning
VallesantaCorde
dann bekommst du aber eventuell probleme bei tonartwechseln.
würde also die tonart höchstens als entscheidungshilfe implementieren, nicht als grundlage fürs transponieren.

ansonsten sehr interessante sache, so etwas in der art hatte ich auch schonmal vor, jedoch keine zeit, mich intensiv damit zu beschäftigen. wobei bei mir eher die vereinheitlichung der chord-sheets im vordergrund stehen würde, woraus dann das problemlose (und fehlerfreie) transponieren mehr oder weniger resultieren würde.
sprich: ich würde einen anderen ansatz wählen, das dokument analysieren und aufgrund einer (im besten fall lernenden) chord(schreibweisen)-datenbank in genau eine einheitliche form bringen (eventuell modellierungssprache im hintergrund mit stylesheet visualisiert).

am ende könnte man sich aus chords verschiedener herkunft ein vollkommen einheitliches songbook selbst erstellen, für jeden song die gewünschte tonart einstellen lassen usw.

mal schaun...vielleicht nach der diplomarbeit Wink

weiter so!
greez
EeK
--
«EeK ist Ausdruck von Individualismus.»
--
hi, Respekt... das funzt ja schon ganz gut... Thumbs

bei meinem Beispiel funzt es mit Akkorden, die den Hinweis zum Basston geben (z.B C/H) nicht. Das C wird transponiert... der Basston H nicht.

[song] C C/H Am
Ich habe einen Schatz gefunden, und er trägt deinen Namen.
[/song]

nach der Bearbeitung:

[song] D D/H Bm
Ich habe einen Schatz gefunden, und er trägt deinen Namen [/song]


Gruß, Andy

--
--- hier klicken bewirkt nix ---
Zitat:Original von Andy63:
Basston geben (z.B C/H) nicht. Das C wird transponiert... der Basston H nicht.

Und Du hattest den Haken gesetzt bei
\"Use H and B instead of B and Bb.\"?

Der ist aber zugegebenermassen erst heute Abend dazu gekommen, es besteht die Möglichkeit das beim Abschicken Deines Formulars er noch nicht da war.
--
http://Chordfind.com - http://EarlyWolf.com - http://youtube.com/ws64
Thumbs nun funzt es Thumbs

Gruß, Andy
--
--- hier klicken bewirkt nix ---
Bei mir hat auch alles geklappt! Thumbs

Vielleicht solltest du noch ne kleine Erklärung dazuschreiben. Gerade Anfänger wissen nicht wie man transponiert. Und gerade diese Gruppe sprichst du meiner Meinung nach mit dem Transponator an (Simpel gehaltene Erklärung) Wink

lg
fetzi
--
[Bild: dance2.gif] GitarrenWorkshops [Bild: dance2.gif]
Hab es kurz ausprobiert, geht wirklich gut! Thumbs
--
Gruß aus Wien, cat
Hey,

habe gerade dein Programm an einigen Songs getestet.
Mir ist nur dieses Problem:

\"Tabs sind gewöhnlich mit einem \"Monospace\" Font gepostet, d.h. alle Buchstaben sind gleich dick. Dadurch kann man Akkorde genau an die richtige Textposition schieben. Dies kann sich durch das Transponieren verschieben. Ob ich das korrigiere oder darauf vertraue das sich das ja mehr oder wenig selber ausgleicht (manche Akkorde werden kürzer, manche länger) weiss ich noch nicht...\"

untergekommen. Finde ich aber zunächst nicht sehr tragisch.

Im übrigen, vielen Dank für dieses Program, sowas habe ich schon lange gesucht, da ich als Anfänger oft Lieder transponieren muss, um schwierigen Griffen zu entgehen. Thumbs Thumbs

Ich denke auch wie Fetzi: im Endausbau deines Programms wären einige Erklärungen sehr schön.
--
liebe Grüße
hitichen

Was keiner kann, das kann ich auch!!
Erklärungen bzw Hilfetext werden noch kommen.
Ich bin ja noch lange nicht fertig, es fehlt ja z.B noch total die Akkorde auch anzuzeigen, ist aber alles in Planung.
Bisher arbeite ich ja \"erst\" drei Abende an der Seite, ist noch alles im Betastadium!

--
http://Chordfind.com - http://EarlyWolf.com - http://youtube.com/ws64
Seiten: 1 2