Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: fugenkomponist am Samstag, 13. August 2011, 17:50

Titel: Genug horizontalen Platz fuer tempo und markup schaffen
Beitrag 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 ;)
Titel: Re: Genug horizontalen Platz fuer tempo und markup schaffen
Beitrag von: kilgore am Samstag, 13. August 2011, 21:40
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
Titel: Re: Genug horizontalen Platz fuer tempo und markup schaffen
Beitrag von: fugenkomponist am Sonntag, 14. August 2011, 11:57
Klingt so, als wuerde es funktionieren. Aber gibts was aehnliches wie \textLengthOn, was auch fuer \tempo funktioniert?
Titel: Re: Genug horizontalen Platz fuer tempo und markup schaffen
Beitrag von: kilgore am Sonntag, 14. August 2011, 12:12
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)

Titel: Re: Genug horizontalen Platz fuer tempo und markup schaffen
Beitrag von: harm6 am Sonntag, 14. August 2011, 13:20
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
Titel: Re: Genug horizontalen Platz fuer tempo und markup schaffen
Beitrag von: fugenkomponist am Sonntag, 14. August 2011, 14:40
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.
Titel: Re: Genug horizontalen Platz fuer tempo und markup schaffen
Beitrag von: harm6 am Sonntag, 14. August 2011, 15:19
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
Titel: Re: Genug horizontalen Platz fuer tempo und markup schaffen
Beitrag von: fugenkomponist am Sonntag, 14. August 2011, 15:51
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.