Allgemein > Allgemeine Diskussion

Generalbaß aussetzen

<< < (2/3) > >>

erich:
Hallo Malte

GB-Ziffern sind relative Notenbezeichnungen; das bedeutet, wenn du ein Stück transponierst bleibt die GB-Bezifferung dieselbe.
Zu prüfen ist, ob Lilypond die transponierten Noten in die interne Struktur schreibt; das ist aber der Fall:

\displayMusic{c'  \transpose c e {c'}}

gibt für das erste C (ly.make-pitch 0 0 0) aus und für das transponierte (ly:make-pitch 0 2 0)

Zum Transponieren: Ein Stück nach C zu transponieren bedeutet für Lilypond keine Schwierigkeit; wenn es also gelungen sein sollte,
auf der internen Struktur die GB-Noten hinzu zufügen, stellt sich die Frage, wie transponiert man zurück in die originale Tonart.
Ich weiß nicht, ob Lilypond intern eine Musikstruktur durch eine einfache Anweisung zurücktransponieren kann.
Andernfalls kann man den ausgesetzten GB als Notentext, also nicht die in Graphik umgesetzten Noten, ausgeben lassen,
harm6 hat hierzu Ausführungen zu meiner Anfrage "notennamen auslesen" gemacht. https://liarchiv.joonet.de/index.php?topic=1712.msg9477#msg9477
Wenn man so die GB-Noten erzeugt hat, kann man sie durch Lilypond zurücktransponieren lassen.

zu meiner p.s.-Notiz

wenn Du einen Dreiklang erzeugen willst, dessen Töne du noch ermitteln musst, kannst du z.B. <c' c' c'>2 eingeben:
\displayMusic{<c' c' c'>2} erzeugt intern dreimal (ly.make-pitch 0 0 0); nur diese drei Stellen sind zu modifizieren, 

Ich selbst finde es lästig, in traditioneller Notendarstellung zu arbeiten, und habe mir deswegen mein Twintet-System geschaffen;
dann kann ich tonartenunabhängig die Pitches berechnen. Was mir noch fehlt ist, aus der internen Lilypond-Struktur wieder einen
Notentext ausgeben zu können; den könnte man dann wieder konventionell setzen lassen.

Gruß
Erich

fugenkomponist:
Hallo Erich,

--- Zitat von: erich am Dienstag,  8. April 2014, 08:06 ---GB-Ziffern sind relative Notenbezeichnungen; das bedeutet, wenn du ein Stück transponierst bleibt die GB-Bezifferung dieselbe.

--- Ende Zitat ---
Das stimmt nicht ganz: Angenommen, ich hab in c-Moll ein G mit ♮ stehen (also für den einfachen Dreiklang mit aufgelöster und damit Dur-Terz), dann müsste das beim Transponieren nach a-Moll zu einem E mit ♯ werden. Weitere Fälle gibts auch bei Verbindungen von Ziffern und Vorzeichen.

--- Zitat ---Zum Transponieren: Ein Stück nach C zu transponieren bedeutet für Lilypond keine Schwierigkeit; wenn es also gelungen sein sollte,
auf der internen Struktur die GB-Noten hinzu zufügen, stellt sich die Frage, wie transponiert man zurück in die originale Tonart.
Ich weiß nicht, ob Lilypond intern eine Musikstruktur durch eine einfache Anweisung zurücktransponieren kann.
--- Ende Zitat ---
Warum sollte es in andere Tonarten schwieriger sein als nach C-Dur? LilyPond kann alles ;) Ich versteh aber immer nch nicht, warum ich das tun sollte. Abgesehen von dem oben beschriebenen Problem hat man auch in einem Stück in C-Dur oft genug zusätzliche Vorzeichen (spätestens im Barock), so dass ich da keinen zusätzlichen Nutzen drin sehe …
--- Zitat ---wenn Du einen Dreiklang erzeugen willst, dessen Töne du noch ermitteln musst, kannst du z.B. <c' c' c'>2 eingeben:
\displayMusic{<c' c' c'>2} erzeugt intern dreimal (ly.make-pitch 0 0 0); nur diese drei Stellen sind zu modifizieren, 

--- Ende Zitat ---
Ja, schon klar, dass ich das machen kann, aber auch hier versteh ich halt nicht, warum ich nicht gleich die richtigen Töne nehmen soll. Flexibler wäre es, erstmal überhaupt die rechte Hand zu berechnen, die ja (je nach Möglichkeiten des Programms) auch mal zwei- (Stichwort: Sextakkorde über Tonleiter) oder vierstimmig oder polyphon (Stichwort: Vorhalte) sein kann und erst dann in die Notation zurückzukehren, wenn das alles geklärt ist. Und dann kann ich auch gleich die richtigen Töne verwenden ;)

--- Zitat ---Ich selbst finde es lästig, in traditioneller Notendarstellung zu arbeiten, und habe mir deswegen mein Twintet-System geschaffen;

--- Ende Zitat ---
Wie gibst du das denn ein? Und hast du sowas wie eine automagische Übersetzung von traditioneller Schreibweise nach Twintet und andersrum? Ansonsten hilft mir das glaub ich recht wenig. Und so Sachen wie ganz oben erwähnt (Dur-Terz als ♯ oder ♮ schreiben?) gehen damit natürlich schon mal verloren. Wahrscheinlich sollte ich also in der traditionellen Schreibweise bleiben (auch, damit andere nicht erst Twintet lernen müssen, um mit dem Programm umgehen oder dazu beitragen zu können).

Wenn ich mal Zeit hab, muss ich mich aber sowieso erstmal darum kümmern, wie ich überhaupt an die Informationen aus dem LilyPond-Code rankomme, am besten, ohne einen eigenen Parser schreiben zu müssen ;)

Gruß,
Malte

erich:
Hallo Malte


--- Zitat ---Wenn ich mal Zeit hab, muss ich mich aber sowieso erstmal darum kümmern, wie ich überhaupt an die Informationen aus dem LilyPond-Code rankomme, am besten, ohne einen eigenen Parser schreiben zu müssen ;)

--- Ende Zitat ---

Das ist wohl wahr, wie sollten wir uns sonst zielführend unterhalten können.

Zur Berechnung von Tonhöhen in Twintet:

Zum Pitch (ly:make-pitch o s a) ist in Twintet (o*6 + s + a)*2 = z die Anzahl der Halbtonschritte vom Pitch (ly:make-pitch 0 0 0)
- entsprechend c' - aus gerechnet.

Um den Pitch (ly:make-pitch O S A) für einen Ton zu berechnen, der s Halbtonschritte höher liegt (s kann auch negativ sein, dann
geht es um einen tiefer liegenden Ton) kann man in Twintet die Werte O, S und A durch einfache mathematische Operationen ermitteln:

Man wähle O so, dass gilt 0 <= z+s-O*12 <= 11. (<= kleiner-gleich, O kann auch negativ sein)
Ist z+s-O*12 gerade, dann ist S = (z+s-O*12)/2 und A = 0
Ist z+s-O*12 ungerade, so hat man zwei Möglichkeiten:

* soll ein Ton mit einem b ausgegeben werden, so ist S = (z+s-O*12 +1)/2 und A = -1/2
* soll ein Ton mit einem # ausgegeben werden, so ist S = (z+s-O*12 -1)/2 und A = 1/2
.

--- Zitat ---Wie gibst du das denn ein? Und hast du sowas wie eine automagische Übersetzung von traditioneller Schreibweise nach Twintet und andersrum? Ansonsten hilft mir das glaub ich recht wenig. Und so Sachen wie ganz oben erwähnt (Dur-Terz als ♯ oder ♮ schreiben?) gehen damit natürlich schon mal verloren.
--- Ende Zitat ---

Ich schreibe die Noten in Dateien, die ich mit include einbinde. Ich kann dieselben Notendateien fürs traditionelle Schreiben wie auch den Twintet-Notensatz verwenden.

Die Modifikationen, um Twintet aufzurufen, halten sich Grenzen; sie müssen vom Anwender nicht unbedingt verstanden werden.
Man muss aber auch Twintet als neue Sprache vereinbaren und dazu die define-note-names.scm-Datei erweitern, dazu sollte man schon verstehen, was man macht.

Gruß
Erich

.



Joei:
Moin,

schade, dass scheint ja nicht gerade auf großes Interesse gestoßen zu sein :( - oder ist es da weitergegangen?

Joei

fugenkomponist:
Nicht wirklich. Ich hab noch auf der englischen Liste gefragt, aber auch da gabs nicht viel Interesse.

Meine Idee war so ungefähr:

* Generalbaßziffern ergänzen: nichts zu 5/3, 6 zu 6/3, 2 zu 6/4/2 etc.
* Aus Baßton, Ziffern und Tonartvorzeichen die drei oder vier Akkordtöne errechnen.
* Aus diesen Tönen alle möglichen/sinnvollen dreistimmigen Akkorde für die rechte Hand bilden. verschiedene Möglichkeiten bewerten. Begrenzende Faktoren:

* Töne nur zwischen g und a'' (oder so), beste Bewertung in der Mitte
* maximal eine Oktave Umfang
* Verdoppelte Töne sind möglich (GB-Ziffer 6 wird zu rechter Hand Grundton–Quinte–Grundton, Quinte–Grundton–Quinte oder einer der drei Umkehrungen von Grundton–Terz–Quinte), Terzdopplung und fehlende Töne (wenn man den Bass mitrechnet, z. B. Terz–Grundton–Terz zu GB-Ziffer 5) werden schlechter bewertet.
* Die bewerteten Baßton-rechte-Hand-Kombinationen bilden nun die Knoten eines DAG (gerichteter azyklischer Graph). Von jeder Kombination zu einem Baßton geht eine Kante zu jeder Kombination zum nächsten Baßton. Diese Kanten werden jetzt bewertet:

* kleine Bewegung/wenig veränderte Töne → kurze Kante
* Strafe (Verlängerung der Kante) für Oktav- und Quintparallelen, evtl. auch geringere Strafe für Anti- und verdeckte Parallelen (da müßte ich mal nachlesen, wie streng das im Generalbaß gehandhabt wird).

* Strafe für Querstände
* Der Einfachheit halber schlechte Bewertung des Zielakkords als Verlängerung der Kante nehmen (statt die Knotenbewertung in der folgenden Lösungssuche noch zu beachten).
* Den kürzesten Weg von einem der Startakkorde zu einem der Zielakkorde finden. Dijkstra-Algorithmus oder so (weiß grad nicht mehr auswendig, was für Vorteile z. B. bezüglich negativer Kantengewichte oder schnellerer Algorithmen es bringt, daß ich nur nen DAG habe, aber das könnte Sachen vereinfachen).
Schwierigkeiten:
* wenig bezifferter Baß, wo man sich z. B. manche 6 aus dem Kontext denken kann/muß
* Welche Baßnoten brauchen einen Akkord, welche sind nur Durchgänge?

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln