Automatische Schlüssel?

Begonnen von Enthalpy, Donnerstag, 19. März 2020, 15:40

« vorheriges - nächstes »

Enthalpy

Hallo miteinander,

Lilypond läßt die Notenhöhen schreiben, transponieren, und danach den Schlüssel (Bass, Tenor, Alt, Violin-) wählen, nett und schön. Manche Instrumente benutzen 2-3 Schlüssel, und man kann manuell den Schlüssel innerhalb eines Satzes ändern, prima.

Aber kann Lilypond den Schlüssel selber ändern, abhängig von der Höhe der Noten? Ich habe das in der Doku nicht gesehen. Es muß natürlich sinnvoll geschehen, nicht mit einer einfachen Schwelle. Genau dafür benutzen wir ja einen Compiler statt irgendeine wysiwyg-Software.

Bei einem einzigen Instrument kann man zwar den Schlüssel manuell ändern. Wenn ich aber mehrere Transpositionen machen will, zum Beispiel eine fürs Fagott und eine fürs Horn, sind die Schlüssel möglicherweise anders, und wegen der transponierenden Instrumente muß die Schlüsseländerung an unterschiedlichen Stellen erfolgen. Doch ich würde gerne die Noten nur einmal tippen.

Und falls diese Funktion noch nicht existiert, wäre sie denkbar?

Danke!

Manuela

Hallo,

du musst die Noten nicht nochmals tippen.
Nachfolgend ein Beispiel, wie du die gleichen Noten mit unterschiedlichen Notenschlüsseln verwenden kannst:
\version "2.20.0"
\language "deutsch"

mus = \relative c' { c4 c c c c,, c c c }

<<
  \new Staff
  {
    <<
      \new Voice \mus
      \context Voice { \clef treble s1 \clef bass }
    >>
  }
  \new Staff
  {
    <<
      \new Voice \transpose c c' \mus
      \context Voice { \clef alto s1 \clef tenor }
    >>
  }
  \new Staff
  {
    <<
      \new Voice \transpose c c'' \mus
      \context Voice { \clef sopran s1 \clef mezzosoprano }
    >>
  }
>>


Harm hat sicher ein geniales Scheme-Programm auf Lager, aber vll. hilft dir mein Vorschlag auch weiter  :)
Danke für eure Hilfe
viele Grüße
-- Manuela

Enthalpy

Danke Manuela!

Nach langem Denken glaube ich zu ahnen, was da passiert. Ich fange eben mit Lilypond an. Ich werde noch rumprobieren.

Die Schlüssel sind zwar nicht automatisch, aber tatsächlich, ich brauche die Noten nur einmal zu tippen, und die Schlüssel für verschiede Instrumente an unterschiedlichen Stellen ändern. Das wäre eine brauchbare Lösung. Gut gespielt!

Manuela

#3
Zitat von: Enthalpy am Freitag, 20. März 2020, 00:20
Nach langem Denken glaube ich zu ahnen, was da passiert. Ich fange eben mit Lilypond an. Ich werde noch rumprobieren.

Mir ist es ganz gleich gegangen, am Anfang hatte ich überhaupt keinen Tau, was sich abspielt. Trotz intensiven Studiums der Handbücher...

Hier ist wahrscheinlich die Stelle der Dokumentation, die man am genauesten studieren sollte.

Lilypond ist jedenfalls genial, ich kann das gar nicht oft genug wiederholen  :)

Update: ich lerne am besten von Beispielen. Ich habe den Link schon in einem anderen Thread gepostet, vielleicht magst du dir von hier was abschauen: Nachts von Josephine Lang Es betrifft deine Problemstellung zwar nicht unmittelbar, aber es gibt einige interessante Dinge, z.B. wie einzelne Noten und die Punktierung verschoben werden können, Staffwechsel, etc.

Ich habe mir angewöhnt, den Code komplett zu strukturieren, im Score stehen nur mehr Contexte und Variablennamen.
Danke für eure Hilfe
viele Grüße
-- Manuela

Arnold

Hallo Enthalpy,

ich möchte dir ein paar Hinweise geben, wie du mit Lilypond anfangen könntest, gepaart mit meinen Erfahrungen beim Stimmen-Umtransponieren und Arrangieren.

  • Lilypond ist kein WhatYouSeeIsWhatYouGet-Programm, sondern eher mit einem Compiler vergleichbar. Nutze die include-Anweisung und trenne (mindestens) - ähnlich einer Mechanik-Konstruktion in heute üblichen assoziativen 3D-CAD-Programmen - die Definition des musikalischen Inhalts (3D-Modelle der Einzelteile, Baugruppen im CAD) und die darauf zugreifende Festlegung des Erscheinungsbilds (der Zeichnung im CAD, PDF- oder MIDI-Ausgaben im Notensatz) in unterschiedliche Dateien. Je größer das »Projekt«, um so mehr einzelne Dateien werden es, es ist ja auch eine Zeitersparnis, wenn nicht immer sofort alles neu übersetzt werden muß.
  • Bei mir ist es häufig ein Abschreiben von Stimmen mit Schlüsselwechsel für Instrumente ohne Schlüsselwechsel. Da nutze ich die »Variantenbildung mittels Tags« in Lilypond. [1. Beispiel] Durch das Filtern mittels \removeWithTag entferne ich diese Schlüsselwechsel.
  • Oft stelle ich in einer Arbeitspartitur mit zwei oder gar drei Partiturblöcke übereinander dar: (1) das abgeschriebene Original, (2) einheitlich transponiert, (3) die fertigen Stimmen bei einer Transkription - (noch) kein 2. Beispiel
  • Wichtig, und für dich gut zu gebrauchen, ist die \tagGroup (seit Version 2.20 bzw. eine der späteren 2.19.x). Damit werden mehrere Tags zusammengebündelt, und dann wirkt das \keepWithTag nur noch auf die Tags der jeweiligen Tag-Gruppe. So kannst Du also in der Stimmendefinition angeben, für welchen »Darstellungszweck« welcher Schlüsselwechsel einzubringen ist. Unterschiedliche tagGoups werden also völlig unabhängig voneinander gefiltert. - (noch) kein 3. Beispiel

1. Beispiel mit »wegfiltern«:FagottIdef = {
  \tag #'ClefChange \clef tenor
  f'1
  \tag #'ClefChange \clef bass
  f,1
}

HornIdef = { % Horn in F, traditioneller Baßschlüssel
  \tag #'ClefChange \clef treble
  c''1
  \tag #'ClefChange \clef "bass^[8]"
  c1
}

FagottIsound = \removeWithTag #'ClefChange \FagottIdef

HornIsound = \transpose c' f \removeWithTag #'ClefChange \HornIdef


Außerdem:
Schaue, daß "pointAndClick" bei dir läuft. So kannst Du dann bequem im Noten-PDF dorthin klicken, wo Du einen Schlüsselwechsel einfügen willst.
Die Bearbeitung von »unten noch oben« ist sinnvoll, denn falls man eine neue Zeile in den Quelltext einfügt, ändern sich nur die Zeilennummern darüber noch nicht.

Ach ja:
»Wenn Sie einem Computer die Wahl lassen, findet er die erste logische Lösung, aber nicht die plausibelste, die Sie eigentlich wollten!«
Also, automatischen Schlüsselwechsel (vor allem, wenn dafür eine »Sequentielle Musik« bearbeitet werden soll) lässt sich im Lilypond durchaus programmieren. Aber die ganze Plausibilitäts-Prüfung muß als Logik definiert werden.

Arnold

P.S. Hoffentlich kein Tippfehler in meinem ungetesteten Schnipsel.
Entschuldige, daß ich noch keine Beispiele für die anderen Punkte eingefügt habe.

Malte

Anstatt Takte zu zählen, um herauszufinden, wie lang die Pausen (s1, s1*23 und so) zwischen den Schlüsselwechseln sein müssen, kann man die Schlüsselwechsel auch direkt in die Noten eintragen und mit \tag versehen:
\tag fagott \clef tenor
Die einzelnen Stimmen könnten dann\keepWithTag fagottund\keepWithTag hornenthalten, dann würde der obige Schlüsselwechsel nur in der Fagottstimme auftauchen. Hier die entsprechende Stelle in der Dokumentation.

Enthalpy

Wow, die Qualität der Antworte ist auf diesem Forum beeindruckend! Vieles fliegt mir noch ein Kilometer über dem Kopf, aber ich fange eben an.

Auch interessant, \keepWithTag. Wenn man im Voraus weiß, für welche Instrumente eine Stimme transponiert wird, kann man tatsächlich die Tags an der Stelle hinzufügen. Ich hatte angefangen, an etwas ähnliches zu denken: Variablen zu definieren, die einen Schlüsselwechsel befehlen, und nur die Einschlägigen Variablen vor einer bestimmten Transposition zu füllen.

Dieser Thread ist in meinen Browserlinks, denn ich werde manche Vorschläge besser verstehen, wenn ich mehr geübt bin. Lilypond braucht hoffentlich weniger Zeit zu lernen als ein Musikinstrument  ::)

moniaqua

Zitat von: Enthalpy am Freitag, 20. März 2020, 12:19
Lilypond braucht hoffentlich weniger Zeit zu lernen als ein Musikinstrument  ::)
Da bin ich mir manchmal nicht so sicher  ::) Die Lernkurve ist schon ziemlich steil und wenn aus einem Score Musik kommt, heißt das noch lange nicht, dass er auch gut geschrieben ist.
Pfiads Eich,
Monika

ingmar

#8
ZitatIch hatte angefangen, an etwas ähnliches zu denken: Variablen zu definieren, die einen Schlüsselwechsel befehlen, und nur die Einschlägigen Variablen vor einer bestimmten Transposition zu füllen.
Ja, das geht, und ist grundsätzlich sicher auch eine gute Idee; ich hab sowas häufig verwendet.

Automatische Schlüsselwechsel hingegen nicht! Es gibt da sehr unterschiedliche Traditionen bei den verschiedenen Instrumenten. So wünscht sich ein Pianist, dass ein gewechselter Schlüssel dann möglichst für einige Zeit gültig bleibt, ehe er wieder wechselt. Auf einen Cellisten hingegen wirken ständige Wechsel zwischen Violin-, Tenor- und Bassschlüssel vollkommen natürlich, solange die Schlüssel in den richtigen Bereichen verwendet werden: Tiefe Töne im Violin- oder Tenorschlüssel sind unidiomatisch und geradezu unleserlich. Solche Unterschiede einer Automatik beizubringen wirst du nicht wollen..

--ingmar

Enthalpy

Zitat von: ingmar am Sonntag, 29. März 2020, 20:01
[...] Automatische Schlüsselwechsel [...] So wünscht sich ein Pianist, dass ein gewechselter Schlüssel dann möglichst für einige Zeit gültig bleibt [...] Auf einen Cellisten hingegen wirken ständige Wechsel zwischen Violin-, Tenor- und Bassschlüssel vollkommen natürlich [...] Solche Unterschiede einer Automatik beizubringen wirst du nicht wollen.

Ich hatte eben nicht vor, selber zu programmieren! Eine solche Fähigkeit nur zu benutzen wäre doch ganz einfach. ;D Etwa
\automaticKey { bass tenor treble changeSeldom }
und dann noch eine Handvoll Variablen definieren wie
\automaticBassoonKey
OK OK, ich will nicht zu extrem übertrieben schwerfällig sein.

ingmar

#10
Nein! der neue Schlüssel gehört ja auch nicht irgendwohin, sondern bei tonleiterartigen Gängen vor die neue Phrase. Sowas macht man nicht mit Automatik.

Zitat von: Enthalpy am Dienstag, 31. März 2020, 01:25Eine solche Fähigkeit nur zu benutzen wäre doch ganz einfach.
Ja, aber die Ergebnisse wären oft eben nicht musikalisch. Eine solche "Automatik", wenn sie nicht perfekt ist, führt letzten Endes zu schlechterer Notation. Eigentlich war Lilypond mal angetreten, die Notation zu verbessern.

--ingmar

ingmar

... und übrigens, noch zum Thema Automatik:

"Der Erfinder der Autokorrektur ist ein Astloch und soll sich ins Knie fügen!"

--i

Manuela

Danke für eure Hilfe
viele Grüße
-- Manuela

Enthalpy

Probiert, nachgedacht, entschieden.

Schlüsselwechsel müssen tatsächlich sinnvoll plaziert werden. Auch eine Hysterese, mit Schwellen nach oben und nach unten, wäre noch lange nicht klug genug. Eine clevere Automatik dafür scheint es in Lilypond (noch) nicht zu geben. Vielleicht könnte etwas wie "nicht zu oft wechseln, und vorzugsweise zwischen langen Noten" genügen.

Also habe ich Manuela's Vorschlag 1:1 aufgenommen:
    <<
      \new Voice \mus
      \context Voice { \clef tenor s4*36 \clef bass }
    >>
und das läuft perfekt. Es braucht wenig Mühe, genügt für sinnvolle Transponierungen, und ist für künftige Instrumente brauchbar, woran ich noch nicht denke als ich die Noten tippe.

Danke Euch!

Enthalpy

Wiederhallo,

Mit \context konnte ich auch ottava sopra bei existierender Musik hinzufügen, nicht nur Schlüsselwechsel. Auch schön, wenn man für ein weiteres Instrument transponiert.

Aber würde \transpose in einem \context passen? Ich habe nicht einmal probiert, weil ich gar nicht sehe, wie das mit der Blockstruktur passen würde.

Doch bei Achron's Hebräischen Melodie mußte ich 4 Oktaven und eine Terz Umfang auf der Geige um eine Oktave für das Fagott reduzieren
https://www.musiktreff.info/noten/26694-transponierte-noten-fuer-fagott.html#post335638
und dafür die Musik zerstücken, um \transpose gezielt zu verwenden.

Bessere Ideen?

Ich tippe gerade die Klavierstimme, ¡Caramba! Als \parallelMusic braucht sie 5 Stimmen und Akkorde dazu. Weil ich auch die Klavierstimme zerstücke, um eventuell gezielt zu oktavieren, damit das Klavier nicht auf der Höhe des Fagottes spielt, muß ich dazu regelmäßig \relative eintippen. So schaffe ich nur 5 Zeilen am Tag.

Bessere Ideen auch da? Danke!