\version "2.16.2"
%#(set-global-staff-size 10.5)
#(set-default-paper-size "a4")


\paper {
#(layout-set-staff-size 17.3)
%page-count = 4  
        indent = #15
        top-margin = #12
        inner-margin = #14
        outer-margin = #18
        two-sided = ##t
        bottom-margin = #20
        ragged-last-bottom = ##t 
        ragged-right = ##f 
        tagline = ##t        
        first-page-number = #3
        print-page-number = ##f
        print-first-page-number = ##t
        oddHeaderMarkup = \markup \fontsize #2 \fill-line { \null \on-the-fly
#not-first-page  \fromproperty #'page:page-number-string }
        evenHeaderMarkup = \markup \fontsize #2 \fill-line { \fromproperty
#'page:page-number-string \null }
}

global = {}

#(define-markup-command (squiggle layout props wd ht rep )
  (number? number? number?)
  #:category graphic
  #:properties ((thickness 2))
  (let* ((th (* (ly:output-def-lookup layout 'line-thickness) thickness))
         (x 0)
         (step (* wd 0.5))
         (strht (number->string ht))
         (strps (string-append (number->string th) " setlinewidth "
                 "0 0 moveto " 
                 (number->string (* step 1)) " " strht " "
                 (number->string (* step 2)) " " strht " "
                 (number->string (* step 3)) " 0 curveto "
                 (number->string (* step 3)) " 0 moveto " 
                 (number->string (* step 4)) " -" strht " "
                 (number->string (* step 5)) " -" strht " "
                 (number->string (* step 6)) " 0 curveto stroke"  )))
       (interpret-markup layout props (markup #:pattern rep X (* 3 wd) 
                                                                 #:postscript strps #:hspace (* 3 wd)))))

#(define-markup-command (zacken layout props wd ht rep )
  (number? number? number?)
  #:category graphic
  #:properties ((thickness 2))
  (let* ((th (* (ly:output-def-lookup layout 'line-thickness) thickness))
         (x 0)
         (step (* wd 1))
         (strht (number->string ht))
         (strpsA (string-append (number->string th) " setlinewidth "
                 "0 0 moveto " 
                 (number->string (* step 1)) " " strht " lineto "
                 (number->string (* step 2)) " 0 lineto stroke"))
         (strpsB (string-append (number->string th) " setlinewidth "
                 "0 0 moveto " 
                 (number->string (* step 2)) " 0 lineto stroke")))
       (interpret-markup layout props (markup #:concat (#:pattern (- rep 1) X 0
                           (#:concat ( #:postscript strpsA #:hspace (* 2 wd) 
                                            #:postscript strpsB #:hspace (* 2 wd)))
                                            #:postscript strpsA #:hspace (* 2 wd))))))

slashOn = {\override Flag #'stroke-style = #"grace"
        \override Stem #'stencil = #(lambda (grob)
                (let* ((x-parent (ly:grob-parent grob X))
                        (is-rest? (ly:grob? (ly:grob-object x-parent 'rest))))
                (if is-rest? empty-stencil
                        (ly:stencil-combine-at-edge
                                (ly:stem::print grob)
                                Y
                                (- (ly:grob-property grob 'direction))
                                (grob-interpret-markup grob
                                        (markup
                                        #:translate '(-0.75 . 0)
                                        #:draw-line '(3.5 . -2)))
                                 -4 ))))}


slashOff = {
        \revert Stem #'stencil
        \revert Flag #'stencil
        }
        
tv = #(define-music-function (parser location hor ) ( number? )
  #{ 
          \once \override Score.BarLine #'extra-offset = #(cons hor 0)
          \once \override Score.SpanBar #'extra-offset = #(cons hor 0)
          \once \override Score.MetronomeMark #'extra-offset = #'(0 . 0.5)
  #})

hairpinWithCenteredText =
#(define-music-function (parser location text) (markup?)
#{
  \override Voice.Hairpin #'stencil = #(lambda (grob)
    (ly:stencil-aligned-to
     (ly:stencil-combine-at-edge
      (ly:stencil-aligned-to (ly:hairpin::print grob) X CENTER)
      Y DOWN
      (ly:stencil-aligned-to (grob-interpret-markup grob text) X CENTER))
     X LEFT))
#})
hairpinMolto = \hairpinWithCenteredText \markup { \italic molto }

 FagOneA = \relative c' { 
\clef bass       
\tempo \markup \normal-text "quasi presto"
\bar "|:" \override Stem #'transparent = ##f \override Beam #'transparent = ##f s8 \breathe \slashOn b-._\markup {\dynamic pp \italic "sempre, misterioso"} [\slashOff gis!-.] s \breathe \slashOn f-. \slashOff s4 \breathe \slashOn es8-. [\slashOff c-.] s \breathe \slashOn es!8-. [\slashOff f-. c-.] s8 \breathe \bar " " \break \slashOn b'8-. [\slashOff f-. gis!-.] \bar ":|" s

<<{\once \override TextScript #'extra-offset = #'(-5 . 0) s4^\markup "2x wiederholen! (pp sempre)"}\\{\once \override TextScript #'extra-offset = #'(-5 . 2.53)  s1_\markup \squiggle #5.5 #1.5 #2 }>> \once \override TextScript #'extra-offset = #'(-4 . 4) 
s_\markup {\rotate #2 \epsfile #X #3 #"Spitze2.eps" } 
\breathe \bar " " 
\break
\override Stem #'transparent = ##f \override Flag #'transparent = ##f \override Beam #'transparent = ##f \override Stem #'transparent = ##f \override Dots #'transparent = ##f
\once \override Score.MetronomeMark #'extra-offset = #'(0 . .5)
\tempo \markup {"Andante" (\fontsize #-3 \note #"8" #1 \normal-text " ca. 60") }
b4\pp\<^\markup \italic "cant. espr." (dis4.) g!8(~\f\fermata \cadenzaOff \revert StaffGroup.SpanBar #'stencil \revert StaffGroup.BarLine #'stencil \bar "||" \time 6/8 g4 e!8~e cis!4)
} 

slashOn = {\override Flag #'stroke-style = #"grace"
        \override Stem #'stencil = #(lambda (grob)
                (let* ((x-parent (ly:grob-parent grob X))
                        (is-rest? (ly:grob? (ly:grob-object x-parent 'rest))))
                (if is-rest? empty-stencil
                        (ly:stencil-combine-at-edge
                                (ly:stem::print grob)
                                Y
                                (- (ly:grob-property grob 'direction))
                                (grob-interpret-markup grob
                                        (markup
                                        #:translate '(-0.75 . 0)
                                        #:draw-line '(3.5 . 2)))
                                 -4 ))))        
}

slashOff = {
        \revert Stem #'stencil
        \revert Flag #'stencil
        }
        
FagTwoA = \relative c, {                              
\clef bass
\slashOn \unHideNotes cis!8-._\markup {\dynamic pp \italic "sempre, misterioso"} [\slashOff e-.] s \breathe \times 2/3 {\slashOn \once \override Accidental #'transparent = ##t g-.[\slashOff e-.] s \breathe}  
\times 2/3 {\slashOn a-. [\slashOff c-. a-.] } s \breathe 
  \slashOn g-. [\slashOff e-. cis!-. e-.] s \breathe 
  \slashOn a-. \slashOff 
  %\break  
  s \breathe  
  \slashOn c!-. [\slashOff g-.] s^\markup "1'' ca."  \once \override BreathingSign #'extra-offset = #'(-3 . 0) \breathe \tv #3 \bar ":|"
<<{\once \override TextScript #'extra-offset = #'(3 . 0) s4^\markup "2x wiederholen! (pp sempre)" 
  }\\{\once \override TextScript #'extra-offset = #'(5 . 2.53)  s1_\markup \squiggle #5.5 #1.5 #2 }>> s_\markup {\rotate #2 \epsfile #X #3 #"Spitze2.eps" } 
\bar " " \cadenzaOff
\override Stem #'transparent = ##f \override Flag #'transparent = ##f \override Beam #'transparent = ##f \override Stem #'transparent = ##f 
s4 s4.^\markup {\magnify #1.5 \musicglyph #"scripts.ufermata" } \hairpinMolto es''!8~\fermata\pp\<^\markup  \italic "dolce" \revert StaffGroup.SpanBar #'stencil \revert StaffGroup.BarLine #'stencil \bar "||" \time 6/8 es\f^\markup \italic "cant. espr." c4 (a \slashOff fis8~fis4)
}

music = {
    <<  
          \tag #'score \tag #'FagOneA \new Staff { << \global \FagOneA >> }
          \tag #'score \tag #'FagTwoA \new Staff { << \global \FagTwoA >>  }        
    >>
}

\score {
        \new StaffGroup 
        \with {\override ScoreSystem-System-Spacing #'basic-distance = #40
        \override StaffGrouper #'staff-staff-spacing #'stretchability = #30
        
      }

       \music
   
        \layout {               
                 indent = #0
                 %\durationLineSettings
                \context {
                        \Score
                        \remove "Timing_translator"
                        \remove "Default_bar_line_engraver"
                        \remove "Mark_engraver"
                }
                \context {
                        \Staff
                        \consists "Timing_translator"
                        \consists "Default_bar_line_engraver"
                        \consists "Mark_engraver"
                        \consists "Bar_number_engraver"
                }
        }
}
