\version "2.12.0" \layout{ \context { \Staff \override TextScript #'staff-padding = #4.0 } \context { \type "Engraver_group" \name "Funktion" \alias Voice \consists "Output_property_engraver" %keine Ahnung, was das bedeuten soll! \consists "Text_spanner_engraver" \consists "Text_engraver" \consists "Axis_group_engraver" % \consists "Bar_engraver" \override VerticalAxisGroup #'minimum-Y-extent = #'(-1 . 1) } \context { \Score \accepts Funktion } \context { \PianoStaff \accepts Funktion } } %Ende Layout % Inspired by slashed-digit from scm/define-markup.scm: #(define-markup-command (slashed-char layout props ch) (char?) "A character, with slash." (let* ((mag (magstep (chain-assoc-get 'font-size props 0))) (thickness (* mag (ly:output-def-lookup layout 'line-thickness) (chain-assoc-get 'thickness props 1.6))) (char-stencil (interpret-markup layout props ch)) (num-x (interval-widen (ly:stencil-extent char-stencil X) (* mag 0.1))) (num-y (ly:stencil-extent char-stencil Y)) (is-sane (and (interval-sane? num-x) (interval-sane? num-y))) (slash-stencil (if is-sane (ly:make-stencil `(draw-line ,thickness ,(car num-x) ,(car num-y) ,(cdr num-x) ,(cdr num-y)) num-x num-y) #f))) (ly:stencil-add char-stencil slash-stencil))) %Zuerst die Hauptfunktionen: %%%%%%%%%%%%% Alle möglichen Tonikas %zuerst die Durtonikas Tonika = \markup {T} T = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Tonika} >> #}) Tonikamitterzimbass = \markup {T { \hspace #-1.5 \raise #0.25 \sub 3 } } Tdrei = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Tonikamitterzimbass} >> #}) Tonikamitquintimbass = \markup {T { \hspace #-1.5 \raise #0.25 \sub 5 } } Tfuenf = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Tonikamitquintimbass } >> #}) %Tonika als Textspanner Tspan = { \textSpannerDown \override TextSpanner #'bound-details #'left #'text = \markup {"T" } \once \override TextSpanner #'bound-details #'left-broken #'text = ##f %dieser Quatschkram sorgt dafür, dass der Text nicht auf der nächsten Seite von neuem beginnt!! \override TextSpanner #'style = #'dashed-line \override TextSpanner #'dash-period = #0.01 \override TextSpanner #'bound-details #'right #'attach-dir = #1 \once \override TextSpanner #'bound-details #'right-broken #'text = ##f %dieser Quatschkram sorgt dafür, dass der Text nicht auf der nächsten Seite von neuem beginnt!! \override TextSpanner #'bound-details #'right #'padding = #-0.5 } %damit das klappt, musst Du danach noch "\start" und "\stopTextSpan" einfuegen, erst dann startet das Symbol! %dasselbe nun in Moll tonika = \markup {t} mt = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\tonika} >> #}) tonikamitterzimbass = \markup {t { \hspace #-1.5 \raise #0.25 \sub 3 } } tdrei = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\tonikamitterzimbass} >> #}) tonikamitquintimbass = \markup {t { \hspace #-1.5 \raise #0.25 \sub 5 } } tfuenf = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\tonikamitquintimbass } >> #}) %tonika als Textspanner tspan = { \textSpannerDown \override TextSpanner #'bound-details #'left #'text = \markup {"t" } \once \override TextSpanner #'bound-details #'left-broken #'text = ##f %dieser Quatschkram sorgt dafür, dass der Text nicht auf der nächsten Seite von neuem beginnt!! \override TextSpanner #'style = #'dashed-line \override TextSpanner #'dash-period = #0.01 \override TextSpanner #'bound-details #'right #'attach-dir = #1 \once \override TextSpanner #'bound-details #'right-broken #'text = ##f %dieser Quatschkram sorgt dafür, dass der Text nicht auf der nächsten Seite von neuem beginnt!! \override TextSpanner #'bound-details #'right #'padding = #-0.5 } % %Alle Dursubdominanten Subdominante = \markup {S} S = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Subdominante} >> #}) Subdominantemitterzimbass = \markup {S { \hspace #-1.5 \raise #0.25 \sub 3 } } Sdrei = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Subdominantemitterzimbass} >> #}) Subdominantemitquintimbass = \markup {S { \hspace #-1.5 \raise #0.25 \sub 5 } } Sfuenf = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Subdominantemitquintimbass } >> #}) %%% Moll Subdominante subdominante = \markup {s} ms = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\subdominante} >> #}) %sixte ajoutee %der Sixteajoutee in Grundstellung SubdominantemitQuinteundSexte = \markup {S { \super \hspace #-1 \raise #2 \teeny 6 }{ \hspace #-2 \raise #-0.8 \super \teeny 5} } Sajoutee = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'Y-offset =#-2 s1*0_\SubdominantemitQuinteundSexte } >> #}) SubdominantemitQuinteundSexteTerzimBass = \markup {S { \super \hspace #-1 \raise #2 \teeny 6 }{ \hspace #-2 \raise #-0.8 \super \teeny 5} \hspace #-3 \raise #0.25 \sub 3 } Sajouteedrei = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'Y-offset =#-2 s1*0_\SubdominantemitQuinteundSexteTerzimBass } >> #}) SubdominantemitQuinteundSexteQuinteimBass = \markup {S { \super \hspace #-1.5 \raise #1.5 \teeny 6 } \hspace #-2 \raise #0.25 \sub 5 } Sajouteefuenf = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'Y-offset =#-2 s1*0_\SubdominantemitQuinteundSexteQuinteimBass } >> #}) SubdominantemitQuinteundSexteSexteimBass = \markup {S { \super \hspace #-1.5 \raise #1.5 \teeny 5 } \hspace #-2 \raise #0.25 \sub 6 } Sajouteesechs = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'Y-offset =#-2 s1*0_\SubdominantemitQuinteundSexteSexteimBass } >> #}) %Die Sixteajoutee und ihre Umkehrungen in Moll! subdominantemitQuinteundSexte = \markup {s { \super \hspace #-1 \raise #2 \teeny 6 }{ \hspace #-2 \raise #-0.8 \super \teeny 5} } sajoutee = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'Y-offset =#-2 s1*0_\subdominantemitQuinteundSexte } >> #}) subdominantemitQuinteundSexteTerzimBass = \markup {s { \super \hspace #-1 \raise #2 \teeny 6 }{ \hspace #-2 \raise #-0.8 \super \teeny 5} \hspace #-3 \raise #0.25 \sub 3 } sajouteedrei = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'Y-offset =#-2 s1*0_\subdominantemitQuinteundSexteTerzimBass } >> #}) subdominantemitQuinteundSexteQuinteimBass = \markup {s { \super \hspace #-1.5 \raise #1.5 \teeny 6 } \hspace #-2 \raise #0.25 \sub 5 } sajouteefuenf = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'Y-offset =#-2 s1*0_\subdominantemitQuinteundSexteQuinteimBass } >> #}) subdominantemitQuinteundSexteSexteimBass = \markup {s { \super \hspace #-1.5 \raise #1.5 \teeny 5 } \hspace #-2 \raise #0.25 \sub 6 } sajouteesechs = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'Y-offset =#-2 s1*0_\subdominantemitQuinteundSexteSexteimBass } >> #}) %Jetzt der Ssechs SubdominantemitSexte = \markup { S \hspace #-1.5 \raise #0 \super \teeny 6 } Ssechs = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'Y-offset =#-2 s1*0_\SubdominantemitSexte } >> #}) subdominantemitSexte = \markup { s \hspace #-1.5 \raise #-0.5 \super \teeny 6 } ssechs = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'Y-offset =#-2 s1*0_\subdominantemitSexte } >> #}) %der berühmte Neapolitaner! Neapolitaner = \markup { s \hspace #-1.5 \raise #-0.5 \super \teeny n } sn = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'Y-offset =#-2 s1*0_\Neapolitaner } >> #}) %Die sogenannten Nebenfunktionen in Dur, erstmal nur deren GrundStellungen: Tonikaparallele = \markup {Tp} Tp = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Tonikaparallele} >> #}) Subdominantparallele = \markup {Sp} Sp = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Subdominantparallele} >> #}) Dominantparallele = \markup {Dp} Dp = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Dominantparallele} >> #}) Tonikagegenklang = \markup {Tg} Tg = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Tonikagegenklang} >> #}) %Diese nun auch in Moll tonikaParallele = \markup {tP} tP = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\tonikaParallele} >> #}) tonikaParalleleterzimbass = \markup {tP { \hspace #-1.5 \raise #0.25 \sub 3 } } tPdrei= #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\tonikaParalleleterzimbass} >> #}) tonikaParalleleQuintimbass = \markup {tP { \hspace #-1.5 \raise #0.25 \sub 3 } } tPfuenf= #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\tonikaParalleleQuintimbass} >> #}) subdominantParallele = \markup {sP} sP = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\subdominantParallele} >> #}) subdominantParalleleterzimbass = \markup {sP { \hspace #-1.5 \raise #0.25 \sub 3 } } sPdrei= #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\subdominantParalleleterzimbass} >> #}) subdominantParalleleQuintimbass = \markup {sP { \hspace #-1.5 \raise #0.25 \sub 3 } } sPfuenf= #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\subdominantParalleleQuintimbass} >> #}) dominantParallele = \markup {dP} dP = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\dominantParallele} >> #}) dominantParalleleterzimbass = \markup {dP { \hspace #-1.5 \raise #0.25 \sub 3 } } dPdrei= #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\subdominantParalleleterzimbass} >> #}) subdominantParalleleQuintimbass = \markup {dP { \hspace #-1.5 \raise #0.25 \sub 3 } } dPfuenf= #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\subdominantParalleleQuintimbass} >> #}) %ein paar Typische Wendungen: Der WechelQuartsextakkord sechsvier = \markup { \hspace #'1 { \column { \raise #-4 \teeny 6 \raise #-3 \teeny 4 } } } fuenfdrei = \markup { \hspace #'1 { \column { \raise #-4 \teeny 5 \raise #-3 \teeny 3 } } } Wechselquartsext= #(define-music-function (parser location x y z ) (ly:music? ly:music? ly:music?) #{ \Tspan \context Voice << $x { s1*0 \startTextSpan^\fuenfdrei } >> \context Voice << $y { s1*0^\sechsvier }>> \context Voice << $z { s1*0 \stopTextSpan^\fuenfdrei }>> #}) Dspan = { \textSpannerDown \override TextSpanner #'bound-details #'left #'text = \markup {"D" } \once \override TextSpanner #'bound-details #'left-broken #'text = ##f %dieser Quatschkram sorgt dafür, dass der Text nicht auf der nächsten Seite von neuem beginnt!! \override TextSpanner #'style = #'dashed-line \override TextSpanner #'dash-period = #0.01 \override TextSpanner #'bound-details #'right #'attach-dir = #1 \once \override TextSpanner #'bound-details #'right-broken #'text = ##f %dieser Quatschkram sorgt dafür, dass der Text nicht auf der nächsten Seite von neuem beginnt!! \override TextSpanner #'bound-details #'right #'padding = #-0.5 } Vorhaltsquartsext= #(define-music-function (parser location x y ) (ly:music? ly:music? ) #{ \Dspan \context Voice << $x { s1*0 \startTextSpan^\sechsvier } >> \context Voice << $y { s1*0 \stopTextSpan^\fuenfdrei }>> #}) %%Die Dominante Dominante = \markup {D} D = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\markup { \Dominante } } >> #}) Dominantemitterzimbass = \markup {D { \hspace #-1.5 \raise #0.25 \sub 3 } } Ddrei = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Dominantemitterzimbass} >> #}) Dominantemitquintmbass = \markup {D { \hspace #-1.5 \raise #0.25 \sub 5 } } Dfuenf = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Dominantemitquintmbass} >> #}) % Dominante in klammern KlammerDominante = \markup {(D)} kD = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'extra-offset = #'(0 . 2.1) s1*0_\markup {(D)} } >> } #}) klammerDominantemitterzimbass = \markup {\KlammerDominante { \hspace #-1.5 \raise #0.25 \sub 3 } } kDdrei = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\klammerDominantemitterzimbass} >> #}) klammerDominantemitquintmbass = \markup {D { \hspace #-1.5 \raise #0.25 \sub 5 } } kDfuenf = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\klammerDominantemitquintmbass} >> #}) %alle Dsiebens Dominantsept = \markup { D \hspace #-1.75 \super \small 7 } % verkuerzter D7 Dominantemitquinteimbassohnegrundtonmitsepte = \markup { \raise #3 \slashed-char #"D" \raise #3 \super \teeny 7 \hspace #-3 \raise #3.25 \sub 5 } verkuerzter = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x s1*0 _\Dominantemitquinteimbassohnegrundtonmitsepte >> #}) Dsieben= #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'extra-offset = #'(0 . 3.1) s1*0_\Dominantsept} >> #}) DsiebenTerzimBass = \markup {D { \hspace #-2 \sub 3 \hspace #-1.75 \super \small 7 } } Dsiebenrei = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'extra-offset = #'(0 . 3.1) s1*0_\DsiebenTerzimBass} >> } #}) Dominantterzquart = \markup {D { \hspace #-2 \sub 5 \hspace #-1.75 \super \small 7 } } Dsiebenfuenf = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { \once \override TextScript #'extra-offset = #'(0 . 3.1) s1*0_\Dominantterzquart} >> } #}) % die Doppeldominante, mit allen Umkehrungen: Doppeldominante = \markup{D \hspace#-2.2 \raise #0.9 D } DD = #(define-music-function (parser location x) (ly:music?) #{ \context Voice << $x { s1*0_\Doppeldominante} >> #}) %DoppeldominanteTerzimBass = \markup { \Doppeldominante