3 Commits

Author SHA1 Message Date
tux
8b0fc2d7c9 snippets einzeln baubar und default layout 2023-11-02 23:13:11 +01:00
14e01900c2 songinfo Ausrichtung einfacher anpassbar gemacht 2023-11-01 09:48:52 +01:00
tux
bf596edb2c songinfogenerierung optimiert 2023-10-31 18:48:15 +01:00
9 changed files with 78 additions and 45 deletions

23
all_base_includes.ly Normal file
View File

@ -0,0 +1,23 @@
\include #(if (< (list-ref (ly:version) 1) 24) "legacy-lilypond-compatibility.ly" "void.ly")
#(define noStandaloneOutput (if (defined? 'noStandaloneOutput) noStandaloneOutput #f))
#(if (defined? 'LAYOUT) #f (load "json_parser.scm"))
#(use-modules (json parser))
\include "basic_format_and_style_settings.ly"
\include #(if (< (list-ref (ly:version) 1) 25) "legacy-lilypond-compatibility-pre-2.25.ly" "void.ly")
\include "eps_file_from_song_dir.ly"
\include "title_with_category_images.ly"
\include "auto_rest_merging.ly"
\include "chord_settings.ly"
\include "transposition.ly"
\include "verses_with_chords.ly"
\include "arrows_in_scores.ly"
\include "swing_style.ly"
\include "inline_score.ly"
% reset important variables
LAYOUT = \layout { \generalLayout }
HEADER = {}
MUSIC = {}
TEXT = \markuplist {""}

View File

@ -2,6 +2,7 @@
\include "default_author_style.ly"
\include "default_songinfo_style.ly"
\include "footer_with_songinfo.ly"
\include "styles.ly"
\include #(ly:format "styles/~a.ly" songStyle)

7
default_output.ly Normal file
View File

@ -0,0 +1,7 @@
#(define noDefaultOutput (if (defined? 'noDefaultOutput) noDefaultOutput #f))
HEADER = \bookpart {
\header {
\basicSongInfo
}
}
\include #(if noDefaultOutput "void.ly" "standalone_output.ly")

View File

@ -2,8 +2,7 @@
songinfoMarkup =
#(make-on-the-fly-markup
(lambda (layout props m)
(let ((blockwidth (* (chain-assoc-get 'header:songinfo-size-factor props 0.9) (ly:output-def-lookup layout 'line-width)))
(between-poet-and-composer-markup (chain-assoc-get 'header:between-poet-and-composer-markup props (make-hspace-markup 3)))
(let ((between-poet-and-composer-markup (chain-assoc-get 'header:between-poet-and-composer-markup props (make-hspace-markup 3)))
(poet-maybe-with-composer (chain-assoc-get 'songinfo:poet-maybe-with-composer props #f))
(composer (chain-assoc-get 'songinfo:composer props #f))
(copyright (chain-assoc-get 'songinfo:copyright props #f))
@ -12,22 +11,18 @@
(spelling (chain-assoc-get 'songinfo:spelling props #f))
(year_text (chain-assoc-get 'songinfo:year_text props #f))
(year_melody (chain-assoc-get 'songinfo:year_melody props #f)))
(interpret-markup layout props
(markup
#:override '(baseline-skip . 3.0)
#:override `(line-width . ,blockwidth)
#:fontsize songInfoFontSize
#:sans
(make-justify-markup (list
(if poet-maybe-with-composer (markup
(if year_text (make-concat-markup (list poet-maybe-with-composer ", " year_text)) poet-maybe-with-composer) between-poet-and-composer-markup) "")
(if composer (if year_melody (make-concat-markup (list composer ", " year_melody)) composer) "")
(make-justify-string-markup (string-append
(stack-lines DOWN 0.0 (chain-assoc-get 'baseline-skip props)
(interpret-markup-list layout props
(append
(make-wordwrap-internal-markup-list #t (list
(if poet-maybe-with-composer (markup
(if year_text (make-concat-markup (list poet-maybe-with-composer ", " year_text)) poet-maybe-with-composer) between-poet-and-composer-markup) "")
(if composer (if year_melody (make-concat-markup (list composer ", " year_melody)) composer) "")))
(make-wordwrap-string-internal-markup-list #t (string-append
(if copyright (string-append "© " copyright) "")
(if infotext (string-append "\n\n" infotext) "")
(if translation (string-append "\n\nÜbersetzung: " translation) "")
(if spelling (string-append "\n\nAussprache: " spelling) "")
))))))))
(if spelling (string-append "\n\nAussprache: " spelling) ""))))))))
(make-null-markup)
)
}

View File

@ -32,8 +32,7 @@
(poetId (chain-assoc-get 'header:poetId props (if songId (songinfo-from songId "poet") #f)))
(composerId (chain-assoc-get 'header:composerId props (if songId (songinfo-from songId "composer") #f)))
(poet-and-composer-same (equal? poetId composerId)))
(let (
(infotext (chain-assoc-get 'header:infotext props (chain-assoc-get 'header:songinfo props #f)))
(let ((infotext (chain-assoc-get 'header:infotext props (chain-assoc-get 'header:songinfo props #f)))
(poet-maybe-with-composer (chain-assoc-get 'header:poet props (if poetId (if poet-and-composer-same (format-poet-and-composer poetId) (format-poet poetId)) #f)))
(composer (chain-assoc-get 'header:composer props (if (and composerId (not poet-and-composer-same)) (format-composer composerId) #f)))
(copyright (chain-assoc-get 'header:copyright props #f))
@ -58,6 +57,9 @@
(if (and year_text (not (and (string? year_text) (string-null? year_text)))) year_text #f))
#:override (cons 'songinfo:year_melody
(if (and year_melody (not (and (string? year_melody) (string-null? year_melody)))) year_melody #f))
#:override '(baseline-skip . 3.0)
#:fontsize songInfoFontSize
#:sans
(ly:output-def-lookup layout 'songinfoMarkup)
)))
(make-null-markup)))
@ -73,6 +75,12 @@
)
))))
#(define-markup-command (fractional-line-width layout props arg)(markup?)
(interpret-markup layout props
(make-override-markup
`(line-width . ,(* (chain-assoc-get 'header:songinfo-size-factor props 0.9) (ly:output-def-lookup layout 'line-width)))
arg)))
\paper {
print-first-page-number = ##t
first-page-number = #0
@ -80,14 +88,14 @@
oddFooterMarkup = \markup {
\fill-line {
\line { \null }
\line { \general-align #Y #DOWN \print-songinfo }
\line { \general-align #Y #DOWN \fractional-line-width \print-songinfo }
\line { \if \should-print-page-number \print-pagenumber }
}
}
evenFooterMarkup = \markup {
\fill-line {
\line { \if \should-print-page-number \print-pagenumber }
\line { \general-align #Y #DOWN \print-songinfo }
\line { \general-align #Y #DOWN \fractional-line-width \print-songinfo }
\line { \null }
}
}

View File

@ -1,28 +1,5 @@
\version "2.18"
#(ly:set-option 'relative-includes #t)
\include #(if (< (list-ref (ly:version) 1) 24) "legacy-lilypond-compatibility.ly" "void.ly")
#(define noDefaultOutput #t)
#(define noStandaloneOutput (if (defined? 'noStandaloneOutput) noStandaloneOutput #f))
#(if (defined? 'LAYOUT) #f (load "json_parser.scm"))
#(use-modules (json parser))
\include "basic_format_and_style_settings.ly"
\include #(if (< (list-ref (ly:version) 1) 25) "legacy-lilypond-compatibility-pre-2.25.ly" "void.ly")
\include "eps_file_from_song_dir.ly"
\include "title_with_category_images.ly"
\include "footer_with_songinfo.ly"
\include "auto_rest_merging.ly"
\include "chord_settings.ly"
\include "transposition.ly"
\include "verses_with_chords.ly"
\include "arrows_in_scores.ly"
\include "swing_style.ly"
\include "inline_score.ly"
% reset important variables
LAYOUT = \layout { \generalLayout }
HEADER = {}
MUSIC = {}
TEXT = \markuplist {""}
\include "all_base_includes.ly"

8
snippet_include.ly Normal file
View File

@ -0,0 +1,8 @@
#(ly:set-option 'relative-includes #t)
#(define noDefaultOutput (if (defined? 'noDefaultOutput) noDefaultOutput #f))
\include #(if noDefaultOutput "void.ly" "all_base_includes.ly")
#(define AUTHOR_DATA (if (defined? 'AUTHOR_DATA) AUTHOR_DATA (call-with-input-file "../data/authors.json" json->scm)))
#(define SONG_DATA (if (defined? 'SONG_DATA) SONG_DATA (call-with-input-file "../data/songs.json" json->scm)))

View File

@ -5,7 +5,7 @@
#(define songStyle
(if (not (defined? 'songStyle))
(if (not (defined? 'defaultSongStyle)) 'börnel defaultSongStyle)
(if (not (defined? 'defaultSongStyle)) 'default defaultSongStyle)
songStyle))
#(if (not (boolean? bookStyle))

14
styles/default.ly Normal file
View File

@ -0,0 +1,14 @@
songFormatAndSize = "a4portrait"
songMargin = 5
songInfoFontSize = -3.5
songTitleFont = "LilyPond Sans"
songChordFont = "LilyPond Serif"
songLyricFont = "LilyPond Sans"
songChordFontSeries = #'bold
songTextChordAlignment = #'center
songScoreChordFontSize = 0
songTextChordFontSize = \songScoreChordFontSize
songTextLineHeigth = 5
songTocColumns = 3
globalSize = 15
lyricSize = 1.6