9 Commits

7 changed files with 115 additions and 33 deletions

View File

@@ -61,6 +61,11 @@ generalLayout = \layout {
\Voice \Voice
% ich will lines breaken wie ich will! % ich will lines breaken wie ich will!
\remove "Forbid_line_break_engraver" \remove "Forbid_line_break_engraver"
\override NoteHead.layer = 2
\override Dots.layer = 2
\override Stem.layer = 2
\override Flag.layer = 2
\override Beam.layer = 2
} }
} }
@@ -76,6 +81,11 @@ secondVoiceStyle = {
\override Stem.color = #grey \override Stem.color = #grey
\override Flag.color = #grey \override Flag.color = #grey
\override Beam.color = #grey \override Beam.color = #grey
\override NoteHead.layer = 1
\override Dots.layer = 1
\override Stem.layer = 1
\override Flag.layer = 1
\override Beam.layer = 1
} }
firstVoiceStyle = { firstVoiceStyle = {
@@ -86,14 +96,10 @@ firstVoiceStyle = {
\override Beam.color = #black \override Beam.color = #black
} }
% einzelne Noten innerhalb von \secondVoiceStyle mit schwarzem statt grauem Kopf % Deprecated: einzelne Noten innerhalb von \secondVoiceStyle mit schwarzem statt grauem Kopf
schwarzkopf = schwarzkopf =
#(define-music-function (parser location noten) (ly:music?) #(define-music-function (parser location noten) (ly:music?)
#{ (begin (ly:warning "\\schwarzkopf brauchts nicht mehr, das kann ersatzlos weg!") noten))
\revert NoteHead.color
$noten
\override NoteHead.color = #grey
#})
romanStanza = romanStanza =
#(define-music-function (parser location) () #(define-music-function (parser location) ()
@@ -101,10 +107,44 @@ romanStanza =
stanza = stanza =
#(define-music-function (parser location stanzanumber) (number?) #(define-music-function (parser location stanzanumber) (number?)
(make-apply-context #{
(lambda (context) \once \override StanzaNumber.layer = 23 % set this to signal that there is a real stanza and no repeat signs
\applyContext
#(lambda (context)
(let* ((stanzastyle (ly:assoc-get 'style (ly:context-grob-definition context 'StanzaNumber))) (let* ((stanzastyle (ly:assoc-get 'style (ly:context-grob-definition context 'StanzaNumber)))
(formattedStanzaNumber (format #f (if (eq? stanzastyle 'roman) romanStanzaFormat stanzaFormat) stanzanumber))) (formattedStanzaNumber (format #f (if (eq? stanzastyle 'roman) romanStanzaFormat stanzaFormat) stanzanumber)))
(ly:context-set-property! context 'stanza formattedStanzaNumber))))) (ly:context-set-property! context 'stanza formattedStanzaNumber)))
#}
)
ref = { \set stanza = \refString } ref = {
\once \override StanzaNumber.layer = 23 % set this to signal that there is a real stanza and no repeat signs
\set stanza = \refString
}
% prints a repStart Sign as stanza if the tag 'repeats is kept.
% if there was a stanza already set by the stanza function with StanzaNumber.layer = 23 we set that also as stanza.
repStartWithTag = \lyricmode {
\tag #'repeats {
\applyContext
#(lambda (context)
(let ((lastStanza (ly:context-property context 'stanza))
(printLastStanza (= (ly:assoc-get 'layer (ly:context-grob-definition context 'StanzaNumber) 0) 23))
(stanzaFontSeries (ly:assoc-get 'font-series (ly:context-grob-definition context 'StanzaNumber) 'normal)))
(ly:context-set-property! context 'stanza
(make-concat-markup
(if printLastStanza
(list (make-override-markup `(font-series . ,stanzaFontSeries) lastStanza) (make-hspace-markup 1) repStart)
(list repStart)
)))))
\once \override StanzaNumber.font-series = #'normal
}
}
repStopWithTag = \lyricmode {
\tag #'repeats {
\once \override StanzaNumber.font-series = #'normal
\once \override StanzaNumber.direction = 1
\set stanza = \markup { \repStop }
}
}

View File

@@ -38,6 +38,32 @@ shiftChords = #(define-music-function (parser location xshift chords) (number? l
$chords $chords
#}) #})
altChord = #(define-music-function (parser location mainchord altchord) (ly:music? ly:music?)
(define (chord-namer in-pitches bass inversion context)
#{
\markup {
\translate #'(-0.5 . 0)
\score {
\chords { #mainchord \klamm #altchord }
\layout {
\LAYOUT
\context {
\ChordNames
\override ChordName.extra-spacing-width = #'(0 . 0.3)
}
\context {
\Score
\override SpacingSpanner.spacing-increment = 0
}
}
}
}
#})
#{
\once \set chordNameFunction = #chord-namer
#mainchord
#})
% kleine Mollakkorde und Alteration ausgeschrieben % kleine Mollakkorde und Alteration ausgeschrieben
#(define (note-name->german-markup-nosym pitch lowercase?) #(define (note-name->german-markup-nosym pitch lowercase?)
(define (pitch-alteration-semitones pitch) (inexact->exact (round (* (ly:pitch-alteration pitch) 2)))) (define (pitch-alteration-semitones pitch) (inexact->exact (round (* (ly:pitch-alteration pitch) 2))))
@@ -98,15 +124,6 @@ generalLayout = \layout {
} }
} }
#(define-public (custom-lyric-text::print grob)
"Allow interpretation of tildes as lyric tieing marks."
;; See also similar code in Lyric_performer.
(let ((text (ly:grob-property grob 'text)))
(grob-interpret-markup grob (if (string? text)
(make-pad-right-markup -0.1 (make-tied-lyric-markup text))
text))))
% Akkord mit Bunddiagramm anzeigen % Akkord mit Bunddiagramm anzeigen
#(define-markup-command (fret-chord layout props fret chord) (string? string?) #(define-markup-command (fret-chord layout props fret chord) (string? string?)
(interpret-markup layout props (interpret-markup layout props

View File

@@ -2,6 +2,7 @@ songFormatAndSize = "a5"
songMargin = 5 songMargin = 5
songInfoFontSize = 0 songInfoFontSize = 0
songInfoLineWidthFraction = 0.9 songInfoLineWidthFraction = 0.9
songTitleSize = 6
songTitleFont = "LilyPond Sans" songTitleFont = "LilyPond Sans"
songChordFont = "LilyPond Sans" songChordFont = "LilyPond Sans"
songLyricFont = "LilyPond Sans" songLyricFont = "LilyPond Sans"

View File

@@ -104,7 +104,10 @@
) )
(if (and (equal? poetIds composerIds) (null? translatorIds) (null? versePoetData) (null? verseComposerData) (null? voiceComposerData) (null? compositionIds) (null? bridgeIds) (null? interludeIds)) (if (and (equal? poetIds composerIds) (null? translatorIds) (null? versePoetData) (null? verseComposerData) (null? voiceComposerData) (null? compositionIds) (null? bridgeIds) (null? interludeIds))
(list (list
(join-present (list
(render-contribution-group (ly:output-def-lookup layout 'poetAndComposerEqualPrefix) poetIds) (render-contribution-group (ly:output-def-lookup layout 'poetAndComposerEqualPrefix) poetIds)
(if (equal? year_text year_melody) year_text (join-present (list year_text year_melody) "/"))
) ", ")
#f) #f)
(list (list
(if (and (null? poetIds) (null? versePoetData) (null? translatorIds)) #f (if (and (null? poetIds) (null? versePoetData) (null? translatorIds)) #f

View File

@@ -4,7 +4,7 @@
\markup { \markup {
\override #'(baseline-skip . 3.5) \override #'(baseline-skip . 3.5)
\center-column { \center-column {
\override #`(font-name . ,songTitleFont) { \fontsize #6 \fromproperty #'header:title } \override #`(font-name . ,songTitleFont) { \fontsize #songTitleSize \fromproperty #'header:title }
\large \bold \fromproperty #'header:subtitle \large \bold \fromproperty #'header:subtitle
\smaller \bold \fromproperty #'header:subsubtitle \smaller \bold \fromproperty #'header:subsubtitle
} }

View File

@@ -167,11 +167,11 @@
(reverse (map (lambda (m) (reverse (map (lambda (m)
(make-size-box-to-box-markup #f #t m target-size-markup)) (make-size-box-to-box-markup #f #t m target-size-markup))
(cons (cons
(make-fill-with-pattern-markup 1 RIGHT "." (car revlist) page) (make-with-link-symbol-ref-markup 'index:label (make-fill-with-pattern-markup 1 RIGHT "." (car revlist) page))
(cdr revlist))))))))) (cdr revlist)))))))))
\paper { \paper {
indexItemMarkup = \markup \with-link-symbol-ref #'index:label { indexItemMarkup = \markup {
\index-item-with-pattern \index-item-with-pattern
} }
indexSectionMarkup = \markup \override #'(baseline-skip . 1.5) \left-column { indexSectionMarkup = \markup \override #'(baseline-skip . 1.5) \left-column {

View File

@@ -227,9 +227,18 @@
#:properties ((baseline-skip)) #:properties ((baseline-skip))
(stack-stencils Y DOWN baseline-skip (stack-stencils Y DOWN baseline-skip
(map (map
(lambda (line) (ly:make-stencil (ly:stencil-expr line) (ly:stencil-extent line X) `(0 . ,reference-height))) (lambda (line) (ly:make-stencil (ly:stencil-expr line) (ly:stencil-extent line X) `(,(/ reference-height -2.0) . ,(/ reference-height 2.0))))
(interpret-markup-list layout props lines)))) (interpret-markup-list layout props lines))))
#(define-public (custom-lyric-text::print grob)
"Allow interpretation of tildes as lyric tieing marks."
;; See also similar code in Lyric_performer.
(let ((text (ly:grob-property grob 'text)))
(grob-interpret-markup grob (if (string? text)
(make-pad-right-markup -0.1 (make-tied-lyric-markup text))
text))))
#(define-markup-command (chordlyrics layout props lyrics) (ly:music?) #(define-markup-command (chordlyrics layout props lyrics) (ly:music?)
#:properties ((verse-chords #{#}) #:properties ((verse-chords #{#})
(verse-reference-voice #{#}) (verse-reference-voice #{#})
@@ -244,21 +253,17 @@
#{ #{
\markup { \markup {
\override #`(baseline-skip . ,intraverse-vspace) \override #`(baseline-skip . ,intraverse-vspace)
\pad-left #-5
\score-equal-height #verse-line-height \score-lines { \score-equal-height #verse-line-height \score-lines {
\transposable #transposition \transposable #transposition
<< <<
\new Devnull { #verse-break-voice } \new Devnull { #verse-break-voice }
\new NullVoice = "dummyvoice" { #verse-reference-voice }
#(music-clone verse-chords) #(music-clone verse-chords)
\new NullVoice { #verse-reference-voice } \new Lyrics \lyricsto "dummyvoice" { #lyrics }
\addlyrics { #lyrics }
>> >>
\layout { \layout {
\verselayout \verselayout
\context { ragged-right = ##t
\Staff
\override LeftEdge.space-alist.first-note = #'(fixed-space . 5.0)
}
\context { \context {
\Lyrics \Lyrics
\override VerticalAxisGroup.nonstaff-relatedstaff-spacing.basic-distance = #verse-text-chord-distance \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.basic-distance = #verse-text-chord-distance
@@ -268,9 +273,15 @@
\override LyricSpace.minimum-distance = 0.8 \override LyricSpace.minimum-distance = 0.8
\override LyricText.stencil = #custom-lyric-text::print \override LyricText.stencil = #custom-lyric-text::print
} }
\context {
\ChordNames
\override VerticalAxisGroup.staff-affinity = ##f
\override ChordName.extra-spacing-width = #'(-0.1 . 0.1)
}
\context { \context {
\Score \Score
\override PaperColumn.keep-inside-line = ##f \override PaperColumn.keep-inside-line = ##f
% \override SpacingSpanner.strict-note-spacing = ##t
\override SpacingSpanner.uniform-stretching = ##t \override SpacingSpanner.uniform-stretching = ##t
\override SpacingSpanner.spacing-increment = 0 \override SpacingSpanner.spacing-increment = 0
\remove Bar_number_engraver \remove Bar_number_engraver
@@ -283,7 +294,10 @@
\remove Staff_symbol_engraver \remove Staff_symbol_engraver
\remove Clef_engraver \remove Clef_engraver
\remove Time_signature_engraver \remove Time_signature_engraver
\remove Bar_engraver
\remove Separating_line_group_engraver
\omit KeySignature \omit KeySignature
\omit KeyCancellation
} }
\context { \context {
\Voice \Voice
@@ -296,6 +310,13 @@
\remove Dynamic_engraver \remove Dynamic_engraver
\remove Note_heads_engraver \remove Note_heads_engraver
} }
\context {
\NullVoice
\consists Rest_engraver
\omit Rest
% \undo \omit NoteHead
% \hide NoteHead
}
} }
} }
} }