Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: fugenkomponist am Dienstag, 7. Mai 2013, 07:12
-
Hallo,
ich hab da mal ein sehr merkwürdiges Problem: und zwar würde ich gerne die Systeme von zwei Instrumenten mitten im Stück vertauschen, so wie im (mal eben mit Laptop-Maus hingepfuschten) Anhang. Hat da jemand eine Idee?
Gruß,
Malte
Edit: es reicht, wenns nur so aussieht, die LilyPond-internen Staffs dürfen ruhig die gleichen bleiben ;)
Ach ja: heißt es Staffs oder Staves?
-
ich hab da mal ein sehr merkwürdiges Problem: und zwar würde ich gerne die Systeme von zwei Instrumenten mitten im Stück vertauschen, so wie im (mal eben mit Laptop-Maus hingepfuschten) Anhang. Hat da jemand eine Idee?
Ja, das ist allerdings ein merkwürdiges Problem.
Ich habe da mal eine Lösung hingebastelt, je nach endgültigem Spacing müssen die X-offset-Werte noch angepaßt werden.
Grundideen:
- Die Stimmen wechseln per \change Staff die Staves
- Der Übergangsbereich wird als Cadenza ausgeprägt, damit die Taktnummern nicht durcheinander kommen und man frei und problemlos allerlei Notendauern unterbringen kann
- Im Übergangsbereich werden die beiden kreuzenden Staves mit \stopStaff und \startStaff vorübergehend ausgeschaltet
- Die überkreuzenden "Notenlinien" sind mißbrauchte Glissandi
- Die Glissandi "hängen" an unsichtbaren Akkorden, deren Noten auf den Linien liegen
- Das rechte und linke Padding der Glissandi wird auf 0 gesetzt, damit sie genau auf den Notenlinien beginnen und enden
- Die NoteColumns der Glissando-Hilfsakkorde werden per X-offset so zurechtgeschoben, daß die Glissandi an den Unterbrechungsstellen der Notenlinien anfangen/aufhören
Das ist alles recht abenteuerlich...
\version "2.16.1"
fagott = \relative c {
\set Staff.instrumentName = "Fagott"
\clef bass
c4 e g e
\cadenzaOn
\hideNotes
\once\override Glissando #'(bound-details left padding) = #0
\once\override Glissando #'(bound-details right padding) = #0
\once\override NoteColumn #'X-offset = #1.0
<g, b d f a>8 \glissando
\stopStaff
s1
\change Staff = "unten"
\startStaff
\once\override NoteColumn #'X-offset = #-0.5
<g b d f a>8
\cadenzaOff
\unHideNotes
c4 e g e
}
blech = \relative c'' {
\set Staff.instrumentName = "Blech"
c1
\cadenzaOn
s8 \hideNotes c4 c c c \unHideNotes s8
\cadenzaOff
c1
}
pauke = \relative c {
\set Staff.instrumentName = "Pauke"
\clef bass
c4 g c g
\cadenzaOn
\hideNotes
\once\override Glissando #'(bound-details left padding) = #0
\once\override Glissando #'(bound-details right padding) = #0
\once\override NoteColumn #'X-offset = #1.0
<g b d f a>8 \glissando
\stopStaff
s1
\change Staff = "oben"
\startStaff
\once\override NoteColumn #'X-offset = #-0.5
<g b d f a>8
\cadenzaOff
\unHideNotes
c4 g c g
}
\score {
<<
\new Staff = "oben" \fagott
\new Staff = "mitte" \blech
\new Staff = "unten" \pauke
>>
}
Ach ja: heißt es Staffs oder Staves?
In England spricht man eher von stave/staves, in Amerika von staff/staffs/staves.
Grundsätzlich ist beides möglich, im Plural sagen die Amerikaner auch meist staves.
Viele Grüße
Torsten
-
Hallo Fugenkomponist,
für was ist sowas gut, oder wo wird es angewandt.
-
Vielen Dank für diese grandiose Fertiglösung, Be-3! Mit sowas hatte ich gar nicht gerechnet, da scheinst du ja einiges reingesteckt zu haben. Mit Glissandi hatte ich auch mal rumprobiert, hatte es aber aufgegeben, weil ich keine Ahnung hatte, wie ich denen ganz genau sage, wo sie hinmüssen. Und \start/stopStaff kannte ich auch noch nicht.
Das ganze verwende ich im Vorwort (in Form einer Ouvertüre) zu unserer Orchesterzeitung; ich spiel da auf einige reale Probensituationen an ;)
-
Das ganze verwende ich im Vorwort (in Form einer Ouvertüre) zu unserer Orchesterzeitung; ich spiel da auf einige reale Probensituationen an ;)
In diesem Falle wäre es wohl eine Überlegung wert, solche Spielereien in einem der einschlägigen Vektorgrafik-Programme (Illustrator, Freehand usw.) zu machen. Da gibt es keinerlei Einschränkungen der Kreativität ;)
Zu empfehlen ist auch die freie Software Inkscape (http://inkscape.org). Da kannst Du sogar als Ausgangsbasis LilyPond-Output importieren (am besten im Vektor-Format SVG) und beliebig "verunstalten".
Beispiel: Siehe Anhang :D
Viele Grüße
Torsten
-
Hmja, das wär ne Überlegung wert. PDF kann Inkscape auch; aber mir ist grad aufgefallen, dass dann die eingebetteten Fonts kaputtgehn, also lass ich das lieber (dafür gibts ja -dbackend=svg). Aber ich glaub, das mach ich erst, wenn der LilyPond-Code definitiv fertig ist ;)
-
Hallo zusammen,
Siehe :
- http://lsr.di.unimi.it/LSR/Item?id=1007 (http://lsr.di.unimi.it/LSR/Item?id=1007)
- (http://lsr.di.unimi.it/LSR/Item?id=1005 (http://lsr.di.unimi.it/LSR/Item?id=1005))
Gruß, ;)
~PPS
-
Hallo Leute,
das sieht alles sehr schön aus! Gibt es eine Möglichkeit zum selben Ergebnis zu kommen, ohne den Hack mit den versteckten Noten und der Kadenz? Das würde bei mir alles durcheinander bringen.
Viele Grüße,
infranator
-
Ich denke mal, dass die versteckten Noten nötig sind (zumindest für die Glissandi im ersten Fall); je nachdem, was du unter „durcheinanderbringen“ verstehst, gäbe es verschiedene Abhilfe:
• Noten sollen im MIDI nicht klingen: Arbeite mit \tag #'score und \tag #'midi
• Noten nehmen horizontal Platz weg: Denen kann man sicher irgendwie eine Spacing-Breite 0 geben
• Kadenz bringt Taktlänge durcheinander: Probiers ohne Kadenz oder setze die measure-position von Hand später richtig.
• Irgendwas anderes: Da hängt jetzt einfach viel von deinem Anwendungsfall ab, was hast du denn vor?
-
Es ist eine Geschmacksfrage. Ich mag keine Workarounds mit versteckten Noten, in größeren Partituren muss man die nämlich in jede Stimme eintragen. Außerdem geht es doch ganz bestimmt irgendwie ohne :-)
-
in größeren Partituren muss man die nämlich in jede Stimme eintragen.
Nicht, wenn sie keine Zeit wegnehmen (also Länge x*0 haben).
% Ja, sowas geht tatsächlich :)
{ c'4*0 e'4 }