Autor Thema: Taktzählung zur Positionierung von Events  (Gelesen 2568 mal)

ingmar

  • Member
Taktzählung zur Positionierung von Events
« am: Mittwoch, 11. Januar 2017, 20:39 »
Hallo,


manchmal will man bestimmte Eventtypen in eigenen Variablen halten, um sie zu den Noten hinzufügen zu können oder eben nicht. Es gibt viele Beispiele, ich nehme hier mal Probebuchstaben.

Zuerst setzt man sie einfach hintereinander:
\version "2.19.37"

music = \relative {
c'1 d2 e
f1 g2 a
b2 c b a g f e d
c1
}
lettersA = {
s1 *2 \mark \default
s1 *2 \mark \default
s1 *3 \mark \default
}
\score {
\new Staff << \music \lettersA >>
}
Dann aber merkt man, dass man beim Verschieben eines dieser Probebuchstaben immer auch den nächsten im entsprechendem Maße in die andere Richtung verschieben muss. Das ist fehleranfällig, also kommt die Idee, die Angaben absolut statt relativ zu machen:
\version "2.19.37"

music = \relative {
c'1 d2 e
f1 g2 a
b2 c b a g f e d
c1
}
lettersB = <<
{ s1 *2 \mark \default }
{ s1 *4 \mark \default}
{ s1 *7 \mark \default}
>>

\score {
\new Staff << \music \lettersB >>
}

Das ist ein großer Fortschritt, obwohl es sich etwas wenig elegant anfühlt, dass man "Takt 96" mit "s1 *95" angeben muss.

Blöd wird es nun, wenn irgendwo in dem Stück Taktwechsel auftauchen, denn diese muss man ab dort an jeder Stelle immer wieder aufführen, wenn man die Übersicht behalten will. Man fragt sich, warum man eigentlich nicht einfach die Taktnummer angeben kann, in der dieser Probebuchstabe stehen soll. Ich stelle mir das etwa folgendermaßen vor:
\version "2.19.37"

music = \relative {
\time 2/4
c'2 d e
\time 3/4
f2. g a
\time 4/4
b2 c b a g f e d
c1
}
lettersA = {
s2 *3 \mark \default
s2. *3 \mark \default
s1 *3 \mark \default
}
lettersB = <<
{ s2 *3 \mark \default }
{ s2 *3 s2. *3 \mark \default}
{ s2 *3 s2. *3 s1 *3 \mark \default}
>>
lettersC = << % geht nicht...
{ \barNo 4 \mark \default }
{ \barNo 7 \mark \default}
{ \barNo 10 \mark \default}
>>
\score {
\new Staff << \music \lettersC >>
}

Das ist nicht nur für Probebuchstaben interessant, sondern auch für Vortragsanweisungen (die ja sprachabhängig sein könnten), MIDI-Tempoänderungen (wenn man Versionen in verschiedenem Tempo will, denn relative Änderungen gehen nicht), Quotes usw.

Ich denke, die Anforderung liegt so nahe, dass ich den Verdacht habe, sie ist vielleicht aus guten Gründen nicht eingeführt worden...?


Vielleicht hat jemand von Euch eine Idee dazu.
--ingmar

fugenkomponist

  • Member
Re: Taktzählung zur Positionierung von Events
« Antwort #1 am: Mittwoch, 11. Januar 2017, 20:53 »
Ich glaube, der edition-engraver könnte was für dich sein. Hab ihn noch nie benutzt, keine Ahnung, wie er funktioniert und angewendet wird (wie auch allgemein die openlilylib), aber ich meine, daß das in die Richtung geht. Auf der englischen Mailingliste wird er immer mal wieder erwähnt, da findest du bestimmt auch Anwendungsbeispiele und Antworten zu Fragen.

Eine zweite Idee: ich verwende beim Komponieren regelmäßig den Code aus diesem Post (in dem auch der ursprüngliche Thread mit der Entstehungsgeschichte verlinkt ist). Damit kann ich zwar keine absoluten Taktangaben machen, aber in einer globalen Stimme Ankerpunkte setzen, an denen sich Musik und andere Dinge orientieren können. Diese Ankerpunkte kann ich dann nach belieben verschieben (wenn ich z. B. nicht einfach von vorn nach hinten durchkomponiere). Vielleicht hilft dir das auch ein bißchen, hängt vom Anwendungsfall ab.

Edit: Eine dritte Idee, die nur einen kleinen Ansatzpunkt für derartige Probleme darstellt: vielleicht hilft dir ja in irgendeiner Form die Beschäftigung mit den Funktionen skip-of-length und ly:music-length.
« Letzte Änderung: Mittwoch, 11. Januar 2017, 21:01 von fugenkomponist »

ingmar

  • Member
Re: Taktzählung zur Positionierung von Events
« Antwort #2 am: Mittwoch, 11. Januar 2017, 22:14 »
Danke!

Wenn man eine Taktzählung nicht leicht haben kann, dann wären Anker an jeder Stelle mit Taktwechsel (die in 'meiner' Musik auch immer einen Einschnitt bedeutet) sicher eine gute Lösung. Ich muss mir das mal in Ruhe ansehen.

--ingmar

Arnold

  • Member
Re: Taktzählung zur Positionierung von Events
« Antwort #3 am: Freitag, 13. Januar 2017, 10:58 »
Hmm.....

mir fallen drei Lösungsansätze dazu ein - unter der Voraussetzung, daß alle diese RehearsalMarks am Taktstrich liegen sollen und nicht in der Mitte eines Taktes!

  • Taktzahlen umformatieren
  • speziellen Engraver erstellen
  • music-funktion mit detailierter Liste als Eingabeparameter

Von unten nach oben betrachtet:
3. music-funktion:
Ein solche Music-Funktion benötigt als Eingabeparameter alle für die Taktzählung relevanten Informationen, also Auftakt, Taktart / Taktwechsel, verkürzte (Volten bei Widerholungen, welche nicht auf einem Taktstrich ausgerichtet sind) und verlängerte (cadenza) Takte, Methodik der Taktzählung bei den Widerholungsklammern, gegebenenfalls sogar die Positionen der Voltenklammern. Es besteht die Gefahr, daß die Angaben nicht zum Notentext passen, und das erst einmal gar nicht auffällt.
2. Engraver:
Vielleicht die eleganteste Lösung. Im »poly-mark-engraver« erzeuge ich (falls nötig) an jedem Taktstrich (mit Grace-Time) ein Hilfs-Markup als "Positionslieferant" für ein erst später eintreffendes RehearsalMark-Event. Diese LY-Datei (siehe LSR) könnte man als Ausgangspunkt für die Entwicklung eines solchen Engravers benutzen. Ist (wegen Mehrtaktpusen) kein Taktstrich vorhanden, dann wird aber auch kein RehearsalMark erstellt! Warnungsmeldung ist denkbar.
3. Taktzahlen umvormatieren:
Die Taktzahlen (abhängig von der Taktzahl selbst) umzuformatierten wäre im Ergebnis ähnlich der Engraver-Lösung, aber viel weniger elegant. Auch hier gilt: Ist (wegen Mehrtaktpusen) kein Taktstrich vorhanden, dann wird auch kein RehearsalMark erstellt! Aber mit einer Warnungsmeldung tut man sich da schon schwer als beim Engraver.

Arnold

ingmar

  • Member
Re: Taktzählung zur Positionierung von Events
« Antwort #4 am: Freitag, 13. Januar 2017, 12:11 »
Danke, Arnold,

ich glaube, wir müssen uns als erstes von den Probebuchstaben lösen; ich hatte unten in meinem Originalpost noch ein paar andere Beispiele genannt, die nicht gerade danach riechen, durch umformatierte Taktzahlen realisiert zu werden.

Mehrtaktpausen sind jedenfalls ein sehr guter, wichtiger Hinweis. Ein großer Vorteil von Probebuchstaben, wie sie in der heutigen Orchesterkultur verwendet werden, ist, dass sie immer in allen Stimmen auftreten. Ich habe also nicht Pause von Takt 49 bis Takt 73, und der Dirigent sagt: "Nochmal von Takt 58, zwo, drei...", und nun muss ich rechnen, aber ganz, ganz fix... Wenn da in meiner Pause ein oder zwei Probebuchstaben stünden, wäre die Pause immer entsprechend aufgeteilt. Und da hast du recht, das müsste LilyPond dann auch automatisch leisten. Dasselbe gilt aber auch für ein Accelerando oder Crescendo, das für das ganze Ensemble gilt und nun verschoben werden soll.

Alles in allem hab ich den Eindruck, dass mein unschuldiger Wunsch doch weit mehr Aufwände im Hintergrund erzeugen würde, als der echte Gewinn - für mich - rechtfertigt. Wenn jemand das lösen will - super! Aber es bringt wohl mehr für Orchesterwerke mit langen Pausen für einzelne Instrumente; ich persönlich werde mir anders behelfen, siehe oben.

Herzlichen Dank.
--ingmar

Arnold

  • Member
Re: Taktzählung zur Positionierung von Events
« Antwort #5 am: Montag, 16. Januar 2017, 16:20 »
Stimmt Ingmar,

das Problem (oder die Aufgabe) wird ganz schön vielfältig - ich möchte ja auch nicht umbedingt die generelle Dynamik in die Instrumentengruppe hineingesetzt bekommen, die (wie Register der Orgel eingesetzt) gerade pausiert.

Persönlich habe ich das von dir genannte Taktzählproblem so gelöst, daß ich nach Mehrtaktpausen die aktuelle Taktzahl hinzuschreibe, und dann zähle ich halt 58, 59, 60, 61, u.s.w. bis 72, denn bei 73 muß ich ja wieder spielen.
Zur Übung kannst du ja auch mal rückwärts zählen, bei zwölf Takten also 12, 11, 10, 9, ... - aber nicht verpassen, daß es bei Null schon losgeht.

Arnold