Gschisti Gschasti/score

Zur Navigation springen Zur Suche springen

Lilypond-Score

\version "2.20.0"
\language "deutsch"

myTitel = "Gschisti Gschasti"
mycomp= \markup "Carl Czerny, 1791-1857"

AkkI = {
  \set Staff.shortInstrumentName = \markup \caps "Disc"
  \set Staff.instrumentName = \markup \caps "Dis"
}

AkkII = {
  \set Staff.shortInstrumentName = \markup \caps "Akk II"
  \set Staff.instrumentName = \markup \caps "Akk II"
}

BassI = {
  \set Staff.shortInstrumentName = \markup \caps "Bass"
  \set Staff.instrumentName = \markup \caps "Bass"
}

#(define (MM->Script-text evt)
   (if (eq? 'MultiMeasureTextEvent (ly:music-property evt 'name))
       (let ((res (make-music 'TextScriptEvent)))
         (newline) (display (ly:music-mutable-properties evt)) ; if you are curious ...
         (for-each (lambda(props)
                     (ly:music-set-property! res (car props) (cdr props)))
           (ly:music-mutable-properties evt))
         res)
       evt))

ghostMusic =
#(define-music-function (music) (ly:music? )
   (map-some-music
    (lambda(x)
      (let
       ((dur (ly:music-property x 'duration #f)))
       (and
        (or dur (eq? 'EventChord (ly:music-property x 'name)))
        (let
         ((skip (make-music 'SkipEvent 'duration
                  (or dur (make-duration-of-length (ly:music-length x)))))
          (artis (let ((elts (ly:music-property x 'elements #f)))
                   (if elts
                       (filter
                        (lambda(y)   ;; EventChord
                          (not (eq? 'NoteEvent (ly:music-property y 'name))))
                        elts)
                       (map MM->Script-text (ly:music-property x 'articulations '()))))))
         (ly:music-set-property! skip 'articulations artis)
         skip))))
    music))

make-midi-list =
#(define-void-function (name score tempolist)
   ((string? #f) ly:score? list?)
   (for-each
    (lambda (tempo)
      (ly:book-process
       (apply
        ly:make-book
        $defaultpaper
        $defaultheader
        (list score))
       $defaultpaper
       #{
         \midi {
           \tempo 4 = $tempo
         }
       #}
       (format #f "~a_~a"
         (or name "midi")
         tempo)))
    tempolist))

chExBass = {
  <c es g heses>1-\markup \whiteout { "m" }  %% halbverminderter Septakkord
  <c es g b d'>1-\markup \whiteout { "m" } %% c:m9
  <c es ges b d'>1-\markup \whiteout { "m)" \hspace #-3.4 "(" } %% c:m9.5- eingeklammerter Akkord für einbuchstabige AKkordnamen
  <c es g b>1-\markup { "7" }    %% c:m7
  < c es g b d' f' a' >1-\markup { \normal-size-super "o" }  %% c:m13
  <c es g b d' f'>1-\markup { \fontsize #-0.5 "(7)" }  %% c:m11, die 7 in Klammer
}

#(define (pitch-alteration-semitones pitch)
   (inexact->exact (round (* (ly:pitch-alteration pitch) 2))))

#(define (conditional-string-downcase str condition)
   (if condition
       (string-downcase str)
       str))

#(define ((chord-name->german-markup-text-alteration B-instead-of-Bb) pitch lowercase?)

   (define (pitch-alteration-semitones pitch)
     (inexact->exact (round (* (ly:pitch-alteration pitch) 2))))

   (define (conditional-string-downcase str condition)
     (if condition
         (string-downcase str)
         str))

   (let* ((name (ly:pitch-notename pitch))
          (alt-semitones  (pitch-alteration-semitones pitch))
          (n-a (if (member (cons name alt-semitones) `((6 . -1) (6 . -1)))
                   (cons 7 (+ (if B-instead-of-Bb 1 1) alt-semitones))
                   (cons name alt-semitones))))
     (make-line-markup
      (list
       (make-simple-markup
        (conditional-string-downcase
         (vector-ref #("C" "D" "E" "F" "G" "A" "H" "B") (car n-a))
         lowercase?))
       (let ((alteration (/ (cdr n-a) 2)))
         (cond
          ((and (equal? lowercase? #f) (= alteration FLAT) (= (car n-a) 7)) (make-simple-markup ""))
          ((and (= alteration FLAT) (or (= (car n-a) 5) (= (car n-a) 2) )) (make-simple-markup "s"))
          ((= alteration FLAT) (make-simple-markup "es"))
          ((and (= alteration DOUBLE-FLAT) (or (= (car n-a) 5)(= (car n-a) 2) )) (make-simple-markup "ses"))
          ((= alteration DOUBLE-FLAT) (make-simple-markup "eses"))
          ((= alteration SHARP) (make-simple-markup "is"))
          ((= alteration DOUBLE-SHARP) (make-simple-markup "isis"))
          (else empty-markup)))))))

#(define germanChords (chord-name->german-markup-text-alteration #t))

#(define (note-name->my-german-markup pitch lowercase?)
   (let* ((name (ly:pitch-notename pitch))
          (alt-semitones (pitch-alteration-semitones pitch))
          (n-a (if (member (cons name alt-semitones) `((6 . -1) (6 . -2)))
                   (cons 7 (+ 1 alt-semitones))
                   (cons name alt-semitones))))
     (make-line-markup
      (list
       (string-append
        (list-ref '("C" "D" "E" "F" "G" "A" "H" "B") (car n-a))
        (if (or (equal? (car n-a) 2) (equal? (car n-a) 5))
            (list-ref '( "ses" "s" "" "is" "isis") (+ 2 (cdr n-a)))
            (list-ref '("eses" "es" "" "is" "isis") (+ 2 (cdr n-a)))))))))

#(define (note-name->underlined-markup pitch lowercase?)
   "Return pitch markup for @var{pitch}."
   (make-underline-markup
    (make-line-markup
     (list
      (make-simple-markup
       (conditional-string-downcase
        (vector-ref #("C" "D" "E" "F" "G" "A" "B") (ly:pitch-notename pitch))
        lowercase?))
      (accidental->markup (ly:pitch-alteration pitch))))))

#(define (note-name->german-underlined-markup pitch lowercase?)
   (make-underline-markup
    (make-line-markup
     (list
      ((chord-name->german-markup-text-alteration #t) pitch lowercase?)))))

gRoot= \once \set ChordNames.chordRootNamer = #note-name->german-underlined-markup

chExceptionMusic = {
  <c es g heses>1-\markup \whiteout { "m" }  %% halbverminderter Septakkord
  <c es g b d'>1-\markup \whiteout { "m" } %% c:m9
  <c es ges b d'>1-\markup \whiteout { "m)" \hspace #-3.4 "(" } %% c:m9.5- eingeklammerter Akkord für einbuchstabige AKkordnamen
  %<c es g b>1-\markup { "7" }    %% c:m7
  < c es g b d' f' a' >1-\markup { "v" }  %% c:m13
  <c es g b d' f'>1-\markup { \fontsize #-0.5 "(7)" }  %% c:m11, die 7 in Klammer
}

chUpperBass =
{
  <c g>1-\markup { "" }
}

chExBasses =
#(append
  (sequential-music-to-chord-exceptions chExBass #t)
  (sequential-music-to-chord-exceptions chUpperBass #t)
  ignatzekExceptions)

firstNote =
#(define-music-function (music )
   (ly:music?)
   (event-chord-reduce music))

#(use-modules (scm accreg))
myBlue = #(x11-color 'sienna4)

\layout {
  \context {
    \Voice
    beamExceptions = #'()
    \override BreathingSign.text =
    \markup { \musicglyph #"scripts.lvarcomma" }
    \override Stem.neutral-direction = #down
    \override Script.outside-staff-priority = #'()
    \override Script.padding = #1
    \override Tie.thickness = #1
    \override PhrasingSlur.thickness = #3
    \override Rest.voiced-position = #0
    \override MultiMeasureRest.expand-limit = #3
  }
  \context {
    \Staff
    beamExceptions = #'()
    \override BreathingSign.text =
    \markup { \musicglyph #"scripts.lvarcomma" }
    \override InstrumentName.font-features = #'("smcp")
  }
  \context {
    \ChordNames
    chordNameLowercaseMinor = ##t
    chordNameExceptions = #chExBasses
    \remove Staff_performer
    chordRootNamer = #germanChords
    \override ChordName.font-name = #"Orator10 BT"
    chordNoteNamer = #(chord-name->german-markup #f)
    \override ChordName.X-offset =
    #ly:self-alignment-interface::aligned-on-x-parent
    \override ChordName.self-alignment-X = #CENTER
    \override ChordName.font-name = #"Arial Narrow"
    \override ChordName.layer = #2
    \override ChordName.font-size = #-0.5
    noChordSymbol = ##f
  }

  \context {
    \ChordNames
    \name SecondChords
    \alias ChordNames
    \override Rest.stencil = ##f
    alignAboveContext = #"oben"
  }

  \context {
    \Score
    \accepts SecondChords
    \accepts MyFingers
    \accepts BarNumberStaff
    \override VerticalAxisGroup.remove-first = ##t
    skipBars = ##f
    \override MetronomeMark.font-size = #1
    \override MetronomeMark.font-shape = #'caps
    \override BarLine.thick-thickness = 5
    barNumberVisibility = #all-bar-numbers-visible
    \override Timing.beamExceptions = #'()
    \override BarNumber.color = #(rgb-color 0.7 0.7 0.7)
    \override BarNumber.layer = #-200
    \override BarNumber.outside-staff-priority =#'()
    \override BarNumber.padding = #1
    \override BarNumber.font-size = #-1
    \override BarNumber.font-series = #'bold
    \override BarNumber.self-alignment-X = #0
    \override BarNumber.break-visibility = #end-of-line-invisible
  }
  \context {
    \Dynamics
    \override Hairpin.to-barline = ##f
    alignBelowContext = melodie
    \override TextSpanner.outside-staff-priority = ##f
    \override TextSpanner.padding = #'()
    \override DynamicText.outside-staff-priority = ##f
    \override DynamicText.padding = #4
  }
  \context {
    \RhythmicStaff
    \accepts MyFingers
    \consists Clef_engraver
    clefGlyph = #"clefs.percussion"
    clefPosition = #0
    printPartCombineTexts = ##f
    fontSize = #-1
    \override StaffSymbol.staff-space = #(magstep -1)
    \remove Ledger_line_engraver
    \override NoteColumn.before-line-breaking =
    #(lambda (grob)
       (let* ((pap-col (ly:grob-parent grob X))
              (pap-col-elts (ly:grob-object pap-col 'elements))
              (chord-names
               (if (ly:grob-array? pap-col-elts)
                   (filter
                    (lambda (elt)
                      (grob::has-interface elt 'chord-name-interface))
                    (ly:grob-array->list pap-col-elts))
                   '())))
         (for-each
          (lambda (chrd)
            (ly:grob-set-parent! chrd X grob))
          chord-names)))
  }
  \context {
    \StaffGroup
    \accepts SecondChords
    \accepts BarNumberStaff
  }
}

sequ = \chordmode {
  c8 c:m d d:m9 c c:m g g:m7
  a a:m9 g g:m f f:m e e:m9
  d d:m9 e e:m9 f f:m g g:m
  a a:m9 g g:m7 c c:m g g:m7
}

xsdur = \chordmode {
  as8 as:m es es:m7 as as:m es es:m7
  f f:m9 es es:m des des:m c c:m9
  b b:m9 c c:m9 des des:m es es:m7
  f f:m9 es es:m7 as as:m es es:m7
}

Bassi = \chordmode {
  \BassI
  \repeat volta 2 {
    \sequ
  }
  \repeat volta 2 {
    \sequ
  }
  \repeat volta 2 {
    \sequ
  }
  \repeat volta 2 {
    \sequ
  }
  \repeat volta 2 {
    \xsdur
  }
  \repeat volta 2 {
    \xsdur
  }
  as4 des b es as r r2
}

sequx =  {
  c,8 < c e g > d, < d f a > c, < c e g > g, < g h d >
  a, < a c e > g, < g h d > f, < f a c > e, < e g h >
  d, < d f a > e, < e g h > f, < f a c > g, < g h d >
  a, < a c e > g, < g h d > c, < c e g > g, < g h d >
}

xsdurx =  {
  as,8 < as c es > es, < es g b > as, < as c es > es, < es g b >
  f, < f as c > es, < es g b > des < des f as > c, < c es g >
  b, < b d f > c, < c es g > des < des f as > es, < es g b >
  f, < f as c > es, < es g b > as, < as c es > es, < es g b >
}

Massi =  {
  \key c \major
 \repeat volta 2 {
    \sequx
  }
  \repeat volta 2 {
    \sequx
  }
  \repeat volta 2 {
    \sequx
  }
  \repeat volta 2 {
    \sequx
  }
    \repeat volta 2 {
    \xsdurx
  }
  \repeat volta 2 {
    \xsdurx
  }
  < as, as c es >4 < des, des f as >
  < b, b des as > < es, es g des >
  < as, as c es >
}

Akk = \chordmode {
  s1 * 24
  as4:m des:m b:m7 es:m7 as:m
}

AccordionI= \relative c''' {
  \AkkI
  \key c \major
  \time 4/4
  \repeat volta 2 {
    e16 c g e' d a f d' c g e c' h f d h'
    a e c a' g d h g' f c a f' e h g e'
    d a f d' e h g e' f c a f' g d h g'
    a e c a' h f d h' c g e c' d h f d'
  }
  \repeat volta 2 {
    e g, c e d f, a d c e, g c h d, f h
    a c, e a g h, d g f a, c f e g, h e
    d f, a d e g, h e f a, c f g h, d g
    a c, e a h d, f h c e, g c d f, h d
  }
  \repeat volta 2 {
    g, c e g, f h d f, e g c e, d f h d,
    c e a c, h d g h, a c f a, g h e g,
    f a d f, g h e g, a c f a, h d g h,
    c e a c, d f h d, e g c e, f h d f,
  }
  \repeat volta 2 {
    g e' c g f d' h f e c' g e d h' f d
    c a' e c h g' d h a f' c a g e' h g
    f d' a f g e' h g a f' c a h g' d h
    c a' e c d h' f d e c' g e f d' h f
  }
  \key as \major
  \repeat volta 2 {
    es c' as es des b' g des c as' es c b g' des b
    f' as, c f es g, b es des f, as des c es, g c
    des, f b des, es g c es, f as des f, g b es g,
    as f' c as b g' des b c as' es c des b' g des
  }
  \repeat volta 2 {
    es des' c es, des c' b des, c b' as c, b as' g b,
    as g' f as, g f' es g, f es' des f, es des' c es,
    des c' b des, es des' c es, f es' des f, g f' es g,
    as g' f as, b as' g b, c b' as c, des c' b des,
  }
  \mark \markup \box "Coda"
  < as c >4 <as des des, > < as b f > < b g des es' >
  < as es c > r r2
}

midI =
{
  \override Script.direction = #DOWN

}

fingerc = {
  s16-5 s-3 s-1 s-5 s-4 s-4 s-1 s-3 s-4 s s s-5 s4
  s1
  s16 s s s-4 s-5 s-2 s-1 s-4 s4
  s s s s16 s4 s16-2 s-1 s-4
  s-5 s-1 s-3 s-5 s-4 s-1 s-2 s-5 s-4 s-1 s-2 s-5 s-4 s-1 s-2 s-5
  s1
  s16 s s s-4  s-5 s-1 s-2 s-4  s s s s  s s s s
  s s s s  s s s s  s s s s  s s s s-4
  s^1_2 s^3_4 s-5 s-2  s-1 s-4 s-5 s-2  s s-3 s s-2  s s-3 s s-2
  s s s s  s s s s  s s s s  s s s s-2
  s-1 s-3 s-5 s-1  s-2 s-3 s s-1  s2
  s  s4  s16-2 s-4 s-5 s-1
  s-2 s-5 s-4 s-2  s-1 s s s-2  s-1 s-5 s-3 s-2  s4
  s1
  s16 s s-2 s-1  s-2 s-5 s-3 s-1  s-2 s s s-1  s s s s
  s s s s  s s s s  s s s s  s s s-4 s-1
  s-2 s-5 s-4 s-2  s-1 s-5 s-4 s-2  s-1 s-5 s-3 s-2  s-1 s-5 s-3 s-2  %% As-Dur
  s-5 s-1 s-2 s-5  s-4 s-1 s-2 s-5  s2
  s16-1 s-2 s-5 s-1  s-2 s-3 s-5 s-1  s s s s-1  s s s s-1
  s-2 s-5 s-3 s-1  s-2 s-5 s-3 s-1  s-2 s s s-1  s-2 s-5 s-4 s-1
  s-2 s-5 s-4 s-2  s-1 s-5 s-4 s-2  s-1 s s s-2  s s s s
  s1
  s16 s s s-1  s-2 s-5 s-4 s-1  s-2 s-5 s-4 s-1  s s s s
}
AccordionII = \relative c' {
  \AkkII
  \key c \major
}

midII =
{
  \override Script.direction = #DOWN

}

Struktur = {
  %\override Score.NonMusicalPaperColumn.page-break-permission = ##f
  \override Score.SpacingSpanner.common-shortest-duration = #(ly:make-moment 1/16)
  %\override NonMusicalPaperColumn.line-break-permission = ##f
  s2 * 16 \break
  s2 * 16 \break
}

kopf=\header {
  title = \markup \line
  {
    #myTitel
  }
  subtitle = ##f
  subsubtitle = ##f
  poet = ##f
  composer = \markup { #mycomp }
  piece = ##f
  subtitle =\markup { "spielbar mit 34 Diskant-Tasten" }

  opus = ##f
  composer = \markup \override #'(baseline-skip . 3)
  \right-column {
    \fontsize #1.5 " "
    \line { "für Akkordeon adaptiert" }
    \line { von Manuela }
  }
  poet= \markup \override #'(baseline-skip . 3)
  \left-column  {
    \fontsize #1.5 "Die Schule des Virtousen"
    #mycomp
    \line { "op." \number "365," " №" \number "3" }
  }
}

\paper {
  top-margin = 10\mm
  ragged-right = ##f
  ragged-last = ##f
  ragged-bottom = ##f
  ragged-last-bottom = ##f
  bottom-margin = 20\mm
  indent = #10
  line-width = 160\mm
  print-all-headers = ##f
  #(include-special-characters)
  print-first-page-number = ##t
  first-page-number = #1
  oddFooterMarkup = ##f
  evenFooterMarkup = ##f
  oddHeaderMarkup = #oddFooterMarkup
  evenHeaderMarkup = #evenFooterMarkup
  top-markup-spacing.padding = #5
  top-system-spacing.padding = #10
}

%zzz =
\bookpart {
  \kopf
  \score {
    \new StaffGroup
    <<
      %\override StaffGroup.VerticalAxisGroup.staff-staff-spacing.basic-distance = #12
      \new Staff
      <<
        \new Voice \AccordionI
        \context Voice \fingerc
      >>
      \new ChordNames \Akk
      \new ChordNames="oben"
      {
        \override Rest.stencil = ##f
        \Bassi
      }
      \new RhythmicStaff
      <<
        \new Voice
        {
          \stemDown
          \override Rest.staff-position = #0
          \override Dots.staff-position = #0
          \override Beam.staff-position = #0
          \override NoteHead.staff-position = #0
          \firstNote \Bassi
        }
        \new NullVoice \Struktur
      >>
    >>
  }
}

alle=
\score {
  \new StaffGroup
  %\unfoldRepeats
  <<
    \new Staff {
      <<
        \new Voice {
          \set Staff.midiInstrument = "concertina"
          \AccordionI
        }
        \context Voice {
          \midI
        }
      >>
    }
    \new Staff {
      \set Staff.midiInstrument = "acoustic bass"
      \clef bass
      \Massi
    }
  >>
}

%\make-midi-list "gschisti"    \alle #'(40 50 60 70 80 90 100 108 112 120)
%\alle