Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: fugenkomponist am Samstag, 13. August 2011, 17:50
-
Hallo,
ich bin auf ein weiteres Problem gestossen: Mahler schreibt ja gerne sehr viele sehr ausfuehrliche Tempobezeichnungen und aehnliches. Ich hab jetzt oefter den Fall, dass Pausen oder auch Noten nicht breit genug sind, sodass die Bezeichnungen sehr viel vertikalen Platz einnehmen und das ganze zudem unuebersichtlich wird. Kann man irgendwie erzwingen, dass Takte breit genug sind, um gewissen markups vollstaendig aufzunehmen?
Gruss,
Malte
Edit: die kaputten Stichnoten sind meine Schuld, das repariere ich gerade...
Edit (November 2013, falls jemand bei der Suche auf diesen alten Thread stoßen sollte): Mit Version 2.17 (bald 2.18) gibt es jetzt einen Befehl \markLengthOn, der das Problem löst. Meine Lösung aus dem letzten Post funktioniert aber noch ;)
-
Hallo Malte,
In solchen Fällen baue ich eine zusätzliche Stimme dazu mit unsichtbaren Tönen. Grob gesagt, kriegt man mehr platz mit kleinere Einheiten, also mit 16tel mehr platz als nur mit 8tel.
\version "2.12.3"
\relative c' {
<< {
R1 R1 R1 R1 R1 R1
}
\\
{ s1 s1 s1
\hideNotes \repeat unfold 8 { c8 } \unHideNotes
s1 s1 }
>>
}
Ich hoffe das hilft!
Gruß
kil
-
Klingt so, als wuerde es funktionieren. Aber gibts was aehnliches wie \textLengthOn, was auch fuer \tempo funktioniert?
-
Hmm...weiss ich nicht. Aber diese Lösung aus den Snippets könnte eventuell helfen:
http://lsr.dsi.unimi.it/LSR/Item?id=587 (http://lsr.dsi.unimi.it/LSR/Item?id=587)
-
Hallo Malte,
probier mal:
\version "2.14.2"
\paper {
indent = 0
}
\layout {
\context {
\Score
\override NonMusicalPaperColumn #'line-break-permission = ##f
}
}
\relative c' {
\compressFullBarRests
\textLengthOn
s1*0^\markup { \bold " Sehr zurückhaltend " }
R1
s1*0^\markup { \bold "Sehr langsam" }
\once\override MultiMeasureRest #'minimum-length = #21
R1*4
\time 8/8 \mark \markup { \musicglyph #"scripts.ufermata" }
\textLengthOff
\override Rest #'X-extent = #'(-2 . 1.5)
r2^\markup \with-dimensions #'(0 . 7) #'(-2 . 0) {\bold "Molto rit" }
r4
\override Rest #'X-extent = #'(-2 . 3)
r\fermata
\time 4/4
\textLengthOn
\mark \markup
\with-dimensions #'(0 . 0) #'(-3.5 . 0) {
\override #'(baseline-skip . 3.5)
\center-column {\bold "40" \musicglyph #"scripts.ufermata" }}
s1*0^\markup {\bold "a Tempo (schleppend) " }
R1
\break
R1
\tempo 4 = 120~280
\once\override MultiMeasureRest #'minimum-length = #15
R1 a16 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
}
Gruß,
Harm
P.S.: Poste doch bitte immer ein kurzes, kompilierbares Beispiel! Das verkürzt und erleichtert die Arbeit
-
Hmm...weiss ich nicht. Aber diese Lösung aus den Snippets könnte eventuell helfen:
http://lsr.dsi.unimi.it/LSR/Item?id=587 (http://lsr.dsi.unimi.it/LSR/Item?id=587)
Danke, muss wohl naechstes Mal mir noch andere Suchbegriffe fuers LSR ausdenken. Hatte nach tempo textLengthOn gesucht und bin nicht fuendig geworden. \markup\bold statt \tempo ist aber kein Problem.
harm6: Naechstes Mal mach ich es, (Schande ueber mich, ich weiss doch selbst, wie gut Minimalbeispiele helfen), wahrscheinlich wird sich bald eine Gelegenheit ergeben.
-
Hi,
das LSR-Snippet entstammt NR 1.2.2. In meinem obigen Vorschlag habe ich mich auch danach gerichtet.
Da der output aber noch nicht zufriedenstellend war, habe ich noch so einiges dran rumgefummelt:
\once\override MultiMeasureRest #'minimum-length ...
\override Rest #'X-extent ...
\markup \with-dimensions ...
dient alles dem Feintuning.
Kannst ja mal damit rumspielen.
Gruß,
Harm
-
Vielen Dank fuer eure Bemuehungen.
Da das alles ziemlich haeufig vorkommt, hab ich mich jetzt doch mal an Scheme gewagt.
Herausgekommen ist folgendes:
\version "2.14.2"
tempoRest =
#(define-music-function
(parser location text length)
(string? number?)
#{
\textLengthOn
s1*0^\markup\bold $text
\once \override MultiMeasureRestNumber #'direction = #DOWN
\scaleDurations $(cons length 1) { R1 }
\textLengthOff
#}
)
\relative c' {
\compressFullBarRests
\tempoRest "Sehr viel Text" #5
\tempo "Sehr viel Text" R1*5
\tempo "Sehr viel Text" \repeat unfold 5 R1
}
Edit: wenn man string? durch markup? ersetzt, kann man auch schoene so Sachen wie \tempoRest\markup\column{Sehr viel Text} #5 machen.