Autor Thema: Inhaltsverzeichnis mit Partiturschnipseln (GELÖST)  (Gelesen 2592 mal)

ingmar

  • Member
Inhaltsverzeichnis mit Partiturschnipseln (GELÖST)
« am: Sonntag, 5. Juli 2015, 12:39 »
Hallo,

ich versuche, einen Index zu erstellen - kurze Notenschnipsel, die die Anfänge der einzelnen Sätze darstellen; dahinter soll dann später noch die Seitenzahl kommen.

Ich hab nun zwei solche Schnipsel, die aber natürlich ganz unterschiedliche Breite haben. Ich hab mehrere Versuche unternommen, diese Breiten zu begrenzen, es gelingt mir aber nicht. Ziel ist: mehrere Notenbeispiele untereinander, alle in gleicher Breite, dahinter mit etwas Abstand (und rechtsbündig) die entsprechenden Seitenzahlen.

Codebeispiel für den Start:
\version "2.18.2"
\language "english"
SNIPPET-ONE= {
   \new PianoStaff <<
\new Staff = "r" <<
    \clef "violin"
    \key c \dorian
  \new Voice
  \relative c'' { r2^"Mein erstes Stück" c2. d4 ef2 e2 f2. g4 af2 }
>>
  \new Staff = "l" <<
  \clef "bass"
  \key c \dorian
\new Voice
\relative c { c1 ~c2. bf4 af g f2 f'2. ef4 }
>>
   >>
}

SNIPPET-TWO= {
   \new PianoStaff <<
\new Staff = "r" <<
    \clef "violin"
    \key c \dorian
  \new Voice
  \relative c'' { r1^"Mein zweites Stück" r2 g4 g g a8 b c4 bf8 ef }
>>
  \new Staff = "l" <<
  \clef "bass"
  \key c \dorian
\new Voice
\relative c' { c4 c c b8 g c4 c bf a g4 g8 g8 f8 ef d c }
>>
   >>
}

\SNIPPET-ONE
\SNIPPET-TWO

Für einen heißen Tip (wahrscheinlich reicht ein Hinweis auf eine Seite des Handbuchs) wäre ich dankbar.
--ingmar
« Letzte Änderung: Sonntag, 5. Juli 2015, 20:54 von ingmar »

harm6

  • Member
Re: Breiten-Begrenzung des Notenoutputs
« Antwort #1 am: Sonntag, 5. Juli 2015, 13:44 »
Hi,

im allgemeinen:

\paper {
  line-width = 100
  ragged-right = ##f
  indent = 0
}
\layout {
  \override Score.NonMusicalPaperColumn.line-break-permission = ##f
}

Als Inhaltsverzeichnis habe ich mal sowas gemacht:

\version "2.18.2"
\language "english"

#(define-markup-command (columns layout props args) (markup-list?)
   (let ((line-width (/ (chain-assoc-get 'line-width props
                         (ly:output-def-lookup layout 'line-width))
                        (max (length args) 1))))
     (interpret-markup layout props
       (make-line-markup (map (lambda (line)
                                (markup
                               ;#:box
                                #:pad-to-box `(0 . 25) '(0 . 3)
                                  #:override `(line-width . 80)
                                  line))
                               args)))))

tocTitleComposer =
#(define-music-function (parser location text) (markup?)
   (add-toc-item! 'tocTitleComposerMarkup text))
   
tocPart =
#(define-music-function (parser location text) (markup?)
   (add-toc-item! 'tocPartMarkup text))

\paper {
       
  tocTitleMarkup = \markup  \column {
            \vspace #2
            \fill-line { \null \fontsize #8 "Inhaltsverzeichnis" \null }
            \vspace #3
  }
           
  tocPartMarkup = \markup \column {
            \vspace #1
            \line {\fontsize #2 \fromproperty #'toc:text \null }
            \vspace #1
  }
   
  tocTitleComposerMarkup =
    \markup \column {
        %\hspace #2
        \large
        \fill-line {
              \fromproperty #'toc:text
              \fromproperty #'toc:page
            }
            \vspace #3
    }
}

toc-score-layout =
\layout {
  \override Score.NonMusicalPaperColumn
  #'line-break-permission = ##f
  line-width = 100
  ragged-right = ##f
  indent = 0
}

SNIPPET-ONE= {
   \new PianoStaff <<
\new Staff = "r" <<
    \clef "violin"
    \key c \dorian
  \new Voice
  \relative c'' { r2^"Mein erstes Stück" c2. d4 ef2 e2 f2. g4 af2 }
>>
  \new Staff = "l" <<
  \clef "bass"
  \key c \dorian
\new Voice
\relative c { c1 ~c2. bf4 af g f2 f'2. ef4 }
>>
   >>
}

SNIPPET-TWO= {
   \new PianoStaff <<
\new Staff = "r" <<
    \clef "violin"
    \key c \dorian
  \new Voice
  \relative c'' { r1^"Mein zweites Stück" r2 g4 g g a8 b c4 bf8 ef }
>>
  \new Staff = "l" <<
  \clef "bass"
  \key c \dorian
\new Voice
\relative c' { c4 c c b8 g c4 c bf a g4 g8 g8 f8 ef d c }
>>
   >>
}

\markuplist \table-of-contents
\pageBreak

\tocTitleComposer 
  \markup \columns {
    "Mein erstes Stück"
    \vcenter \score { \SNIPPET-ONE \layout { \toc-score-layout } }
  }
\score {
  \SNIPPET-ONE
}

\pageBreak

\tocTitleComposer 
  \markup \columns {
"Mein zweites Stück"
\vcenter \score { \SNIPPET-TWO \layout { \toc-score-layout } }
  }
\score {
  \SNIPPET-TWO
}

Gruß,
  Harm

ingmar

  • Member
Re: Breiten-Begrenzung des Notenoutputs
« Antwort #2 am: Sonntag, 5. Juli 2015, 20:53 »
Zitat
harm6: Als Inhaltsverzeichnis habe ich mal sowas gemacht
Funktioniert! Ich hab natürlich eine Zeit gebraucht, bis ich so ungefähr kapiert habe, wie es funktioniert, und wie ich die Einträge enger zusammenschieben kann und dergleichen. Aber es ist eine echte Verbesserung meiner Partituren!

Danke!

Gruß,
--ingmar