diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..eae7250 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 4 + +[Makefile] +indent_style = tab diff --git a/.gitignore b/.gitignore index 2232c4d..f4d8d16 100755 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,4 @@ .vscode tmp build -src/tmp-ly +src/tmp_ly diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 63f3382..fcb276c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ build: image: thallian/latex-builder script: - - make -j4 + - make artifacts: paths: - build/* diff --git a/Makefile b/Makefile index dee7356..9110593 100644 --- a/Makefile +++ b/Makefile @@ -1,70 +1,101 @@ mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) WORKING_DIR := $(patsubst %/,%,$(dir $(mkfile_path))) - BOOKNAME=kommersbuch SRC_DIR=src BUILD_DIR=build TMP_DIR=tmp -SONG_DIR=$(SRC_DIR)/songs -BUILD_BOOK_DIR=$(BUILD_DIR)/books -TMP_BOOK_DIR=$(TMP_DIR)/books -BUILD_SONG_DIR=$(BUILD_DIR)/songs -TMP_SONG_DIR=$(TMP_DIR)/songs -BUILD_MIDI_DIR=$(BUILD_DIR)/midi -TMP_MIDI_DIR=$(TMP_DIR)/midi -BUILD_OPUS_DIR=$(BUILD_DIR)/opus +SONG_DIR=${SRC_DIR}/songs +BUILD_BOOK_DIR=${BUILD_DIR}/books +TMP_BOOK_DIR=${TMP_DIR}/books +BUILD_SONG_DIR=${BUILD_DIR}/songs +TMP_SONG_DIR=${TMP_DIR}/songs +BUILD_MIDI_DIR=${BUILD_DIR}/midi +TMP_MIDI_DIR=${TMP_DIR}/midi +BUILD_OPUS_DIR=${BUILD_DIR}/opus -BOOK_TYPES=folio quarto sexto octavo +LY_FILES=$(wildcard ${SONG_DIR}/*.ly) +LY_PDFS=$(patsubst %.ly,${BUILD_SONG_DIR}/%.pdf,$(notdir ${LY_FILES})) +LY_TMP_PDFS=$(patsubst %.ly,${TMP_SONG_DIR}/%.pdf,$(notdir ${LY_FILES})) +LY_MIDIS=$(patsubst %.ly,${BUILD_MIDI_DIR}/%.midi,$(notdir ${LY_FILES})) +LY_TMP_MIDIS=$(patsubst %.ly,${TMP_MIDI_DIR}/%.midi,$(notdir ${LY_FILES})) +LY_OPUS=$(patsubst %.ly,${BUILD_OPUS_DIR}/%.opus,$(notdir ${LY_FILES})) -LY_FILES=$(wildcard $(SONG_DIR)/*.ly) -LY_PDFS=$(patsubst %.ly,$(BUILD_SONG_DIR)/%.pdf,$(notdir $(LY_FILES))) -LY_TMP_PDFS=$(patsubst %.ly,$(TMP_SONG_DIR)/%.pdf,$(notdir $(LY_FILES))) -LY_MIDIS=$(patsubst %.ly,$(BUILD_MIDI_DIR)/%.midi,$(notdir $(LY_FILES))) -LY_TMP_MIDIS=$(patsubst %.ly,$(TMP_MIDI_DIR)/%.midi,$(notdir $(LY_FILES))) -LY_OPUS=$(patsubst %.ly,$(BUILD_OPUS_DIR)/%.opus,$(notdir $(LY_FILES))) - -.PHONY: book songs midi opus clean all +.PHONY: book songs midi opus clean directories all .DEFAULT_GOAL := all -define BUILDER -$(TMP_BOOK_DIR)/%-$(TYPE).pdf: $(TMP_BOOK_DIR)/%.pdf - cd $(TMP_BOOK_DIR) && \ - ../../bin/makebook -v -t $(TYPE) -i $$(notdir $$<) -o $$(notdir $$@) -endef -$(foreach TYPE,$(BOOK_TYPES),$(eval $(BUILDER))) +directories: ${BUILD_DIR} ${BUILD_BOOK_DIR} ${TMP_BOOK_DIR} ${BUILD_SONG_DIR} ${BUILD_MIDI_DIR} ${TMP_DIR} ${TMP_SONG_DIR} ${TMP_MIDI_DIR} ${BUILD_OPUS_DIR} -%.dir: - mkdir -p $* +${BUILD_DIR}: + mkdir -p ${BUILD_DIR} -$(TMP_SONG_DIR)/%.pdf: $(SONG_DIR)/%.ly $(SONG_DIR)/%.tex | $(TMP_SONG_DIR).dir - cd $(SRC_DIR) && lualatex --jobname='$(notdir $(basename $@))' \ - --output-directory=$(WORKING_DIR)/$(TMP_SONG_DIR) \ - --shell-escape $(WORKING_DIR)/$(SRC_DIR)/song.tex \ - $(WORKING_DIR)/$(SONG_DIR)/$(notdir $(basename $@)).ly $(WORKING_DIR)/$(SONG_DIR)/$(notdir $(basename $@)).tex +${BUILD_BOOK_DIR}: + mkdir -p ${BUILD_BOOK_DIR} -$(BUILD_MIDI_DIR)/%.midi: $(TMP_MIDI_DIR)/%-1.midi | $(BUILD_MIDI_DIR).dir +${BUILD_SONG_DIR}: + mkdir -p ${BUILD_SONG_DIR} + +${BUILD_MIDI_DIR}: + mkdir -p ${BUILD_MIDI_DIR} + +${TMP_DIR}: + mkdir -p ${TMP_DIR} + +${TMP_BOOK_DIR}: + mkdir -p ${TMP_BOOK_DIR} + +${TMP_SONG_DIR}: + mkdir -p ${TMP_SONG_DIR} + +${TMP_MIDI_DIR}: + mkdir -p ${TMP_MIDI_DIR} + +${BUILD_OPUS_DIR}: + mkdir -p ${BUILD_OPUS_DIR} + +${TMP_SONG_DIR}/%.pdf: ${SONG_DIR}/%.ly ${SONG_DIR}/%.tex + cd ${SRC_DIR} && lualatex --jobname='$(notdir $(basename $@))' --output-directory=${WORKING_DIR}/${TMP_SONG_DIR} --shell-escape ${WORKING_DIR}/${SRC_DIR}/song.tex ${WORKING_DIR}/${SONG_DIR}/$(notdir $(basename $@)).ly ${WORKING_DIR}/${SONG_DIR}/$(notdir $(basename $@)).tex + rm -r ${SRC_DIR}/tmp_ly + +${BUILD_MIDI_DIR}/%.midi: ${TMP_MIDI_DIR}/%-1.midi cp $< $@ -$(TMP_MIDI_DIR)/%-1.midi: $(SONG_DIR)/%.ly | $(TMP_MIDI_DIR).dir - lilypond --output=$(TMP_MIDI_DIR) $(WORKING_DIR)/$< +${TMP_MIDI_DIR}/%-1.midi: ${SONG_DIR}/%.ly + lilypond --output=${TMP_MIDI_DIR} ${WORKING_DIR}/$< -$(BUILD_OPUS_DIR)/%.opus: $(BUILD_MIDI_DIR)/%.midi | $(BUILD_OPUS_DIR).dir +${BUILD_OPUS_DIR}/%.opus: ${BUILD_MIDI_DIR}/%.midi timidity $< -Ow -o - | opusenc - $@ -$(TMP_BOOK_DIR)/%.pdf: $(SRC_DIR)/%.tex $(SRC_DIR)/images/title.png | $(TMP_BOOK_DIR).dir - latexmk -cd -lualatex -e '$$lualatex=q/lualatex %O -shell-escape %S/' -output-directory=$(WORKING_DIR)/$(TMP_BOOK_DIR) $< - rm -r $(SRC_DIR)/tmp-ly +${TMP_BOOK_DIR}/%.pdf: ${SRC_DIR}/%.tex ${SRC_DIR}/images/title.png + latexmk -cd -lualatex -e '$$lualatex=q/lualatex %O -shell-escape %S/' -output-directory=${WORKING_DIR}/${TMP_BOOK_DIR} $< + rm -r ${SRC_DIR}/tmp_ly -$(BUILD_DIR)/%.pdf: $(TMP_DIR)/%.pdf | $(BUILD_BOOK_DIR).dir $(BUILD_SONG_DIR).dir +${TMP_BOOK_DIR}/%-folio.pdf: ${TMP_BOOK_DIR}/%.pdf + cd ${TMP_BOOK_DIR} && \ + ../../bin/makebook -v -t folio -i $(notdir $<) -o $(notdir $@) + +#long edge binding +${TMP_BOOK_DIR}/%-quarto.pdf: ${TMP_BOOK_DIR}/%.pdf + cd ${TMP_BOOK_DIR} && \ + ../../bin/makebook -v -t quarto -i $(notdir $<) -o $(notdir $@) + +${TMP_BOOK_DIR}/%-sexto.pdf: ${TMP_BOOK_DIR}/%.pdf + cd ${TMP_BOOK_DIR} && \ + ../../bin/makebook -v -t sexto -i $(notdir $<) -o $(notdir $@) + +#short edge binding +${TMP_BOOK_DIR}/%-octavo.pdf: ${TMP_BOOK_DIR}/%.pdf + cd ${TMP_BOOK_DIR} && \ + ../../bin/makebook -v -t octavo -i $(notdir $<) -o $(notdir $@) + +${BUILD_DIR}/%.pdf: ${TMP_DIR}/%.pdf cp $< $@ -book: $(BUILD_BOOK_DIR)/$(BOOKNAME).pdf $(BUILD_BOOK_DIR)/$(BOOKNAME)-folio.pdf $(BUILD_BOOK_DIR)/$(BOOKNAME)-quarto.pdf $(BUILD_BOOK_DIR)/$(BOOKNAME)-sexto.pdf $(BUILD_BOOK_DIR)/$(BOOKNAME)-octavo.pdf $(LY_FILES) -songs: $(LY_PDFS) -midi: $(LY_MIDIS) -opus: $(LY_OPUS) +book: directories ${BUILD_BOOK_DIR}/${BOOKNAME}.pdf ${BUILD_BOOK_DIR}/${BOOKNAME}-folio.pdf ${BUILD_BOOK_DIR}/${BOOKNAME}-quarto.pdf ${BUILD_BOOK_DIR}/${BOOKNAME}-sexto.pdf ${BUILD_BOOK_DIR}/${BOOKNAME}-octavo.pdf ${LY_FILES} +songs: directories ${LY_PDFS} +midi: directories ${LY_MIDIS} +opus: directories ${LY_OPUS} all: book songs midi opus clean: - rm -rf $(BUILD_DIR) - rm -rf $(TMP_DIR) - rm -rf $(SRC_DIR)/tmp-ly + rm -rf ${BUILD_DIR} + rm -rf ${TMP_DIR} diff --git a/bin/makebook b/bin/makebook index 237a79d..93913e0 100755 --- a/bin/makebook +++ b/bin/makebook @@ -6,10 +6,10 @@ # #**********************************************************# # makebook # -# written by Donald P. Goodman III # -# Copyright (C) 2011 # -# # -# Impose pdf pages for binding # +# written by Donald P. Goodman III # +# Copyright (C) 2011 # +# # +# Impose pdf pages for binding # #**********************************************************# # # This program is free software: you can redistribute it @@ -34,7 +34,7 @@ PATH=/bin:/usr/bin:/usr/local/bin ; export PATH umask 033 # define our revision number variable for rcs -REVISION="2.2" +REVISION="2.1" # define error codes E_WRONG_ARGS=64 # too many or few args E_BAD_SIG_TYPE=65 # invalid type of signature @@ -88,7 +88,8 @@ command -v bc >/dev/null 2>&1 || # print the version information and exit successfully versionfunc () { - echo "makebook v${REVISION}. Copyright (C) 2011, Donald P Goodman III." + echo "makebook v${REVISION}. Copyright (C) 2011, Donald P." + echo "Goodman III." echo "This program comes with ABSOLUTELY NO WARRANTY." echo "This is free software, and you are welcome to " echo "redistribute it under certain conditions; see " @@ -262,9 +263,6 @@ then cp "$FILE_NAME" "$NEW_FILE_NAME" else FILE_NAME="book.pdf" - if [ $VERBOSE -eq 1 ]; then - echo "makebook: No input file named; using stdin..." - fi cat /dev/stdin > "$NEW_FILE_NAME" fi # declare holder variable for pdftk @@ -289,8 +287,8 @@ fi # get some information about our source document NUM_PAGES=`pdfinfo "$NEW_FILE_NAME" | awk '/Pages:/ {print $2}'`; -SRC_PAGE_WIDTH=`pdfinfo "$NEW_FILE_NAME" | awk '/Page size:/ {print $3}'`; -SRC_PAGE_HEIGHT=`pdfinfo "$NEW_FILE_NAME" | awk '/Page size:/ {print $5}'`; +SRC_PAGE_WIDTH=`pdfinfo "$NEW_FILE_NAME" | awk '/Page\ size:/ {print $3}'`; +SRC_PAGE_HEIGHT=`pdfinfo "$NEW_FILE_NAME" | awk '/Page\ size:/ {print $5}'`; # find the number of pages we'll have per signature PAGES_PER_SIG=$(dc -e "$PAGES_PER_SIG $SECT_TYPE * p") # determine if extra pages will be necessary diff --git a/src/kommersbuch.tex b/src/kommersbuch.tex index 363a612..d34508b 100644 --- a/src/kommersbuch.tex +++ b/src/kommersbuch.tex @@ -1,6 +1,6 @@ % !Mode:: "TeX:UTF-8" -\documentclass[11pt, openany, twoside]{scrbook} +\documentclass[11pt, openany, oneside]{scrbook} \usepackage[utf8]{inputenc} \usepackage{fontspec} \usepackage{fancyhdr} @@ -42,25 +42,8 @@ \renewcommand\addchaptertocentry[2]{\addtocentrydefault{chapter}{}{#2}} \renewcommand{\contentsname}{Inhalt} - -\setlength{\columnseprule}{0.2pt} - -\hypersetup -{ - bookmarks=true, % show bookmarks bar? - unicode=true, % non-Latin characters in Acrobat’s bookmarks - pdftoolbar=true, % show Acrobat’s toolbar? - pdfmenubar=false, % show Acrobat’s menu? - pdffitwindow=false, % window fit to page when opened - pdfstartview={FitH}, % fits the width of the page to the window - pdftitle={Alcolica Kommersbuch}, % title - pdfauthor={Sebastian Hugentobler}, % author - pdfsubject={Kantenprügel der Alcolica Verbindung}, % subject of the document - pdfcreator={Sebastian Hugentobler}, % creator of the document - pdfproducer={Sebastian Hugentobler}, % producer of the document - pdfnewwindow=true, % links in new window - colorlinks=false, % false: boxed links; true: colored links -} +\renewcommand{\cfttoctitlefont}{\huge\textbf\rmfamily} +\renewcommand{\cftchapfont}{\large\rmfamily} \begin{document} \begin{titlepage} @@ -79,12 +62,6 @@ \tableofcontents \newpage - \lysetoption{staffsize}{22} - \lysetoption{quote}{true} - \lysetoption{indent}{false} - \lysetoption{insert}{inline} - \lysetoption{pass-fonts}{true} - \songs \end{document} diff --git a/src/lyluatex.lua b/src/lyluatex.lua new file mode 100644 index 0000000..255b25f --- /dev/null +++ b/src/lyluatex.lua @@ -0,0 +1,187 @@ +local err, warn, info, log = luatexbase.provides_module({ + name = "lyluatex", + version = '0', + greinternalversion = internalversion, + date = "2017/09/30", + description = "Module lyluatex.", + author = "The Gregorio Project (see CONTRIBUTORS.md)", + copyright = "2008-2017 - The Gregorio Project", + license = "MIT", +}) + +local md5 = require 'md5' + + +LILYPOND = 'lilypond' +TMP = 'tmp_ly' +N = 0 + + +function ly_definir_programme(lilypond) + if lilypond then LILYPOND = lilypond end +end + + +function contenuIntegral(contenu) + local content ="" + for i, Line in ipairs(contenu:explode('\n')) do + if Line:find("^%s*[^%%]*\\include") then + local i = io.open(Line:gsub('%s*\\include%s*"(.*)"%s*$', "%1"), 'r') + if i then + content = content .. contenuIntegral(i:read('*a')) + else + content = content .. Line .. "\n" + end + else + content = content .. Line .. "\n" + end + end + return content +end + + +function direct_ly(ly, largeur, facteur) + N = N + 1 + facteur = calcul_facteur(facteur) + ly = ly:gsub('\\par ', '\n'):gsub('\\([^%s]*) %-([^%s])', '\\%1-%2') + print(ly) + local sortie = TMP..'/'..string.gsub(md5.sumhexa(contenuIntegral(ly))..'-'..facteur..'-'..largeur, '%.', '-') + if not lfs.isfile(sortie..'-systems.tex') then + compiler_ly(entete_lilypond(facteur, largeur - 10)..'\n'..ly, sortie) + end + retour_tex(sortie) +end + + +function inclure_ly(entree, currfiledir, largeur, facteur) + facteur = calcul_facteur(facteur) + nom = splitext(entree, 'ly') + entree = currfiledir..nom..'.ly' + if not lfs.isfile(entree) then entree = kpse.find_file(nom..'.ly') end + if not lfs.isfile(entree) then err("Le fichier %s.ly n'existe pas.", nom) end + local i = io.open(entree, 'r') + ly = i:read('*a') + i:close() + local sortie = TMP..'/' ..string.gsub(md5.sumhexa(contenuIntegral(ly))..'-'..facteur..'-'..largeur, '%.', '-') + if not lfs.isfile(sortie..'-systems.tex') then + compiler_ly(entete_lilypond(facteur, largeur - 10)..'\n'..ly, sortie, dirname(entree)) + end + retour_tex(sortie) +end + + +function compiler_ly(ly, sortie, include) + mkdirs(dirname(sortie)) + local commande = LILYPOND.." ".. + "-dno-point-and-click ".. + "-dbackend=eps ".. + "-djob-count=2 ".. + "-ddelete-intermediate-files " + if include then commande = commande.."-I '"..lfs.currentdir().."/"..include.."' " end + commande = commande.."-o "..sortie.." -" + local p = io.popen(commande, 'w') + p:write(ly) + p:close() +end + + +function entete_lilypond(facteur, largeur) + return string.format( +[[%%En-tête +\version "2.18.2" +#(define default-toplevel-book-handler + print-book-with-defaults-as-systems ) + +#(define toplevel-book-handler + (lambda ( . rest) + (set! output-empty-score-list #f) + (apply print-book-with-defaults rest))) + +#(define toplevel-music-handler + (lambda ( . rest) + (apply collect-music-for-book rest))) + +#(define toplevel-score-handler + (lambda ( . rest) + (apply collect-scores-for-book rest))) + +#(define toplevel-text-handler + (lambda ( . rest) + (apply collect-scores-for-book rest))) + + +#(set-global-staff-size %s) + + +%%Paramètres de la partition +\paper{ + indent = 0\mm + line-width = %s\pt +} + +%%Partition originale +]], +facteur, +largeur +) +end + + +function calcul_facteur(facteur) + if facteur == 0 then facteur = fontinfo(font.current()).size/39321.6 end + return facteur +end + + +function retour_tex(sortie) + local i = io.open(sortie..'-systems.tex', 'r') + contenu = i:read("*all") + i:close() + texoutput, _ = string.gsub( + contenu, + [[includegraphics{]], [[includegraphics{]]..dirname(sortie) + ) + tex.print(([[\noindent]]..texoutput):explode('\n')) +end + + +function dirname(str) + if str:match(".-/.-") then + local name = string.gsub(str, "(.*/)(.*)", "%1") + return name + else + return '' + end +end + + +function splitext(str, ext) + if str:match(".-%..-") then + local name = string.gsub(str, "(.*)(%." .. ext .. ")", "%1") + return name + else + return str + end +end + + +function mkdirs(str) + path = '.' + for dir in string.gmatch(str, '([^%/]+)') do + path = path .. '/' .. dir + lfs.mkdir(path) + end +end + + +local fontdata = fonts.hashes.identifiers +function fontinfo(id) + local f = fontdata[id] + if f then + return f + end + return font.fonts[id] +end + + +mkdirs(TMP) diff --git a/src/lyluatex.sty b/src/lyluatex.sty new file mode 100644 index 0000000..2588452 --- /dev/null +++ b/src/lyluatex.sty @@ -0,0 +1,71 @@ +\ProvidesPackage{lyluatex} + +% Dépendances +\RequirePackage{luatexbase} +\RequirePackage{luaotfload} +\RequirePackage{kvoptions} +\RequirePackage{graphicx} +\RequirePackage{keycommand} +\RequirePackage{environ} +\RequirePackage{currfile} +% Options +\DeclareStringOption[lilypond]{program}[lilypond] +\ProcessKeyvalOptions* +% Script lua +\directlua{dofile(kpse.find_file("lyluatex.lua"))} +\directlua{LILYPOND = '\lyluatex@program'} + +% Une tricherie un peu sale pour récupérer la largeur de ligne +\let\bs\textbackslash +{\catcode`p=12 \catcode`t=12 \gdef\un#1pt{#1}} +\newcommand*{\largeur}{\expandafter\un\the\linewidth} +% Taille des partitions +% Si la valeur est 0, elle sera automatiquement calculée +% à partir de la taille de police. +\def\staffsize{0} +\let\localstaffsize\staffsize + + +% Commandes principales +% Inclusion d'un fichier ly +\newkeycommand*\includely[staffsize=\staffsize][autres][1]{% +\directlua{% + inclure_ly( + "\luatexluaescapestring{#1}", + "\luatexluaescapestring{\currfiledir}", + \luatexluaescapestring{\largeur}, + \luatexluaescapestring{\commandkey{staffsize}} + )% +}% +} + +% Inclusion d'un fragment intégré au document (environnement de base) +\NewEnviron{compilerly}{% +\directlua{% + direct_ly( + "\luatexluaescapestring{\unexpanded\expandafter{\BODY}}", + \luatexluaescapestring{\largeur}, + \luatexluaescapestring{\localstaffsize} + )% +}% +} + +% Commande et environnement avec paramètres +\newkeycommand{\lily}[staffsize=\staffsize][autres][1]{% +\def\localstaffsize{\commandkey{staffsize}}% +\begin{compilerly}% +#1 +\end{compilerly}% +} + +\newkeyenvironment{ly}[staffsize=\staffsize][autres]{% +\def\localstaffsize{\commandkey{staffsize}}% +\compilerly% +}{% +\endcompilerly% +} + +% Commandes pour la compatibilité avec lilypond-book +\let\lilypondfile\includely +\let\lilypond\ly +\let\endlilypond\endly diff --git a/src/song.tex b/src/song.tex index 1fb88bb..9e85542 100644 --- a/src/song.tex +++ b/src/song.tex @@ -3,6 +3,7 @@ \documentclass[11pt, openany, oneside]{scrbook} \usepackage{fontspec} +%%\usepackage[a4paper,left=3cm,right=3cm, top=3cm, bottom=3cm,includeheadfoot]{geometry} \usepackage[a4paper]{geometry} \usepackage{lmodern} \usepackage{tgschola} @@ -13,14 +14,8 @@ \pagenumbering{gobble} - \lysetoption{staffsize}{22} - \lysetoption{quote}{true} - \lysetoption{indent}{false} - \lysetoption{insert}{inline} - \lysetoption{pass-fonts}{true} - \directlua{ - tex.sprint("\string\\lilypondfile{" .. arg[5] .. "}") + tex.sprint("\string\\includely[staffsize=16]{" .. arg[5] .. "}") } ~\\ \directlua{ diff --git a/src/songs.lua b/src/songs.lua index 00c489a..703c14b 100644 --- a/src/songs.lua +++ b/src/songs.lua @@ -28,7 +28,7 @@ function find_songs(dir) local ly_title = string.match(ly_content, 'title = "(.-)"') tex.sprint('\\unchapter{' .. ly_title .. '}') - tex.sprint('\\lilypondfile{' .. dir .. '/' .. file .. '}') + tex.sprint('\\includely[staffsize=16]{' .. dir .. '/' .. file .. '}') tex.sprint('~\\\\') tex.sprint('~\\\\') tex.sprint('\\input{' .. dir .. '/' .. file:gsub("%.ly", ".tex") .. '}') diff --git a/src/songs/bierlied.ly b/src/songs/bierlied.ly deleted file mode 100644 index 9c2180b..0000000 --- a/src/songs/bierlied.ly +++ /dev/null @@ -1,86 +0,0 @@ -\version "2.18" -\include "articulate.ly" - -\header { - title = "Bierlied" - composer = "" - poet = "Munter" - tagline = "" -} - -musicOne = \relative e' { - \time 3/8 - \key a \major - - \partial 8 e8 | - e (a) a | - a4 a8 | - a gis fis | - fis e e | - fis fis fis | - a gis fis | - fis e d | - d cis a' | - e e d | - d cis a' | - e e d | - cis4\fermata e16 e | - e8 a a16 a | - a8 cis cis16 cis | - d8 (b) b | - e4 cis16 cis | - d8 (b) b | - a4 r8 | - \bar "|." -} - -verseOne = \lyricmode { - Das | - Jahr ist | - gut, braun | - Bier ist ge -- | - ra -- ten, drum | - wünsch ich mir | - nichts als drei -- | - tau -- send Du -- | - ka -- ten, da -- | - mit ich kann | - schüt -- ten braun | - Bier in mein | - Loch; und je | - mehr ich da -- von | - trin -- ke, de -- sto | - besser schmeckt's | - noch, de -- sto | - besser schmeckt's | - noch. | -} - -\book { - \score { - << - \new Voice = "one" { - \musicOne - } - \new Lyrics \lyricsto "one" { - \verseOne - } - >> - \layout { - } - } -} - -\book { - \score { - \unfoldRepeats \articulate - << - \new Voice = "one" { - \musicOne - } - >> - \midi { - \tempo 4 = 100 - } - } -} diff --git a/src/songs/bierlied.tex b/src/songs/bierlied.tex deleted file mode 100644 index e1c0012..0000000 --- a/src/songs/bierlied.tex +++ /dev/null @@ -1,27 +0,0 @@ -\par -2. Seh ich ein braun Bier, o welch ein Vergnügen! da tu ich -vor Freuden die Mütze abziegen, betracht das Gewächse, o große Allmacht, -das aus einem Traurigen |: einen Lustigen macht. :| -\par -3. Wenn einer vor Schulden nicht kann bleiben zu Hause, so geht -er ins Wirtshaus und setzt sich zum Schmause, er setzt sich zum Braunen -und tut, was er kann, und wer ihn da fordert, |: der kommt übel an. :| -\par -4. Unser Herrgott muß endlich wohl selber drüber lachen, was die -Menschen für närrische Sachen tun machen: planieren, plattieren, -plattieren, planieren und am Ende da |: tun sie noch gar appellieren. :| -\par -5. Bei der ersten Halben da ist's mäuschenstille, weil keiner mit -einer etwas anfangen wille; die zweite ist kritisch, die dritte muß ziegen, -bei der vierten giebt's Schläg, |: daß die Haar davon fliegen. :| -\par -6. Wenn ich einst sterbe, so laßt mich begraben, nicht unter den -Kirchhof, nicht über den Schragen; hinunter in Keller, wohl unter -das Faß! lieg gar nit gern trocken, |: lieg alleweil gern naß. :| -\par -7. Auf meinem Grabsteine da könnt ihr einst lesen, was ich für -ein närrischer Kauz bin gewesen, beständig betrunken, zuweilen ein -Narr, doch ein ehrlicher Kerl, |: und das letzte ist wahr! :| -\begin{flushright} -1824 -\end{flushright} diff --git a/src/songs/gedanken_sind_frei.ly b/src/songs/gedanken_sind_frei.ly deleted file mode 100644 index 72cd4c8..0000000 --- a/src/songs/gedanken_sind_frei.ly +++ /dev/null @@ -1,94 +0,0 @@ -\version "2.18" -\include "articulate.ly" - -\header { - title = "Die Gedanken sind frei" - composer = "Volksweise, um 1815" - poet = "" - tagline = "" -} - -musicOne = \relative e' { - \time 3/4 - \key a \major - - \partial 4 e8 e | - \repeat volta 2 - { - a4 a cis8 (a) | - e2 e4 | - d b e | - } - \alternative - { - { cis a e'8 e } - { cis4 a a' } - } - gis4 b4. gis8 | - a4 cis a | - gis b4. gis8 | - a4 cis a | - fis fis a8 (fis) | - e2 e8 cis' | - cis (b) a4 gis | - a2 r4 | - \bar "|." -} - -verseOne = \lyricmode { - Die Ge -- | - dan -- ken sind | - frei, wer | - kann sie err -- | - ra -- ten, sie _ | - _ _ _ | - Mensch kann sie | - wis -- sen, kein | - Jä -- ger er -- | - schie -- ßen. Es | - blei -- bet da -- | - bei: Die Ge -- | - dan -- ken sind | - frei. | -} - -verseOneRepeat = \lyricmode { - _ _ | - flie -- hen vor -- | - bei, wie | - nächt -- li -- che | - _ _ _ _ | - Schat -- ten. Kein | -} - -\book { - \score { - << - \new Voice = "one" { - \musicOne - } - \new Lyrics \lyricsto "one" { - \verseOne - } - \new Lyrics \lyricsto "one" { - \verseOneRepeat - } - >> - \layout { - } - } -} - -\book { - \score { - \unfoldRepeats \articulate - << - \new Voice = "one" { - \musicOne - } - >> - \midi { - \tempo 4 = 100 - } - } -} diff --git a/src/songs/gedanken_sind_frei.tex b/src/songs/gedanken_sind_frei.tex deleted file mode 100644 index 4a61148..0000000 --- a/src/songs/gedanken_sind_frei.tex +++ /dev/null @@ -1,40 +0,0 @@ -\par -2. Ich denke, was ich will, -und was mich beglücket, -doch alles in der Still, -und wie es sich schicket. -Mein Wunsch und Begehren -kann niemand verwehren, -es bleibet dabei: -die Gedanken sind frei. -\par -3. Ich liebe den Wein, -mein Mädchen vor allen, -sie tut mir allein -am besten gefallen. -Ich bin nicht alleine -bei meinem Glas Weine, -mein Mädchen dabei: -die Gedanken sind frei. -\par -4. Und sperrt man mich ein -im finsteren Kerker, -das alles sind rein -vergebliche Werke; -denn meine Gedanken -zerreißen die Schranken -und Mauern entzwei: -die Gedanken sind frei. -\par -5. Drum will ich auf immer -den Sorgen entsagen -und will mich auch nimmer -mit Grillen mehr plagen. -Man kann ja im Herzen -stets lachen und scherzen -und denken dabei: -die Gedanken sind frei. -\\~ -\begin{flushright} -Volkslied, 18. Jh. -\end{flushright} diff --git a/src/songs/koenig_von_preussen.ly b/src/songs/koenig_von_preussen.ly deleted file mode 100644 index cf3e064..0000000 --- a/src/songs/koenig_von_preussen.ly +++ /dev/null @@ -1,82 +0,0 @@ -\version "2.18" -\include "articulate.ly" - -\header { - title = "O König von Preußen" - composer = "Volksweise, 18. Jh." - poet = "" - tagline = "" -} - -musicOne = \relative c' { - \time 2/4 - \key d \major - - \partial 8 a8 | - d4 d8 d | - d4 fis8 fis | - fis e e cis | - d4 r8 fis | - fis (a) a a | - b (a) g fis | - fis e e fis | - e4 r8 fis | - fis a a a | - b4. a8 | - a g g b | - a4 a8 (fis) | - d d d d | - e (fis) g e | - d d cis e | - d4 r | - \bar "|." -} - -verseOne = \lyricmode { - O | - Kö -- nig von | - Preu -- ßen, du | - gro -- ßer Po -- ten -- | - tat, ich | - bin__ dei -- nes | - Dien -- stes so | - ü -- ber -- flüs -- sig | - satt. Was | - fan -- gen wir nur | - an, in | - die -- sem Jam -- mer -- | - tal, all -- | - wo ist nicht zu | - fin -- den als | - lau --ter Not und | - Qual. | -} - -\book { - \score { - << - \new Voice = "one" { - \musicOne - } - \new Lyrics \lyricsto "one" { - \verseOne - } - >> - \layout { - } - } -} - -\book { - \score { - \unfoldRepeats \articulate - << - \new Voice = "one" { - \musicOne - } - >> - \midi { - \tempo 4 = 100 - } - } -} diff --git a/src/songs/koenig_von_preussen.tex b/src/songs/koenig_von_preussen.tex deleted file mode 100644 index e1f5b19..0000000 --- a/src/songs/koenig_von_preussen.tex +++ /dev/null @@ -1,49 +0,0 @@ -\par -2. Und kommt das Frühjahr an, -da ist die große Hitz', -da muß man exerzier'n, -daß eim der Buckel schwitzt. -Da muß man exerzier'n -vom Morgen bis Mittag, -und das verfluchte Leben -das währt den ganzen Tag. -\par -3. Vom Exerzieren weg, -geht's wieder auf die Wacht, -kein Teufel tut nicht frag'n, -ob man gefressen hat. -Kein Branntwein in der Flaschen, -kein weißes Brot dabei; -ein schlechtes Tabakrauchen, -das ist er Zeitvertreib. -\par -4. Ihr Herren, nehmt's nicht Wunder, -wann einer desertiert, -wir werden wie die Hunde -mit Schlägen strapeziert; -und bringen sie uns wieder, -sie henken uns nicht auf, -das Kriegsrecht wird gesprochen: -Der Kerl muß Gassen lauf! -\par -5. Und wann wir Gassen laufen, -so spielet man uns auf -mit Waldhorn und Trompeten, -da geht es tapfer drauf; -da werden wir gehauen -von einem Musketier, -der eine hat's Bedauern, -der andre gönnt es mir. -\par -6. Und werden wir dann alt, -wo wenden wir uns hin? -Die Gesundheit ist verloren, -die Kräfte sind dahin! -Und endlich wird es heißen: -Ein Vogel und kein Nest! -Geh', Alter, nimm den Bettelsack, -bist auch Soldat gewest! -\\~ -\begin{flushright} -Volkslied, 1815 -\end{flushright} diff --git a/src/songs/kurfuerst_friedrich.tex b/src/songs/kurfuerst_friedrich.tex index 50818be..db438e9 100644 --- a/src/songs/kurfuerst_friedrich.tex +++ b/src/songs/kurfuerst_friedrich.tex @@ -25,7 +25,7 @@ machte er sein Testament, und es fanden seine Erben auch ein Buch in Pergament. Drinnen stand auf jeder Seit': -"Seid vernünftig, liebe Leut! +"Seid vernünftig, liebe Leuf! |: dieses geb' ich zu Attest: Heute wieder voll gewest!" \footnote{Diese Notiz des Kurfürsten Friedrich IV. von der Pfalz findet sich in dessen „Tage- und Ausgabebuch“ unterm 9. Juni 1598. Daselbst heißt es ferner: „30. Juli. Hab ich ein Rausch gehabet“} :| diff --git a/src/songs/matrosenlied.ly b/src/songs/matrosenlied.ly deleted file mode 100644 index 0e4eb9c..0000000 --- a/src/songs/matrosenlied.ly +++ /dev/null @@ -1,78 +0,0 @@ -\version "2.18" -\include "articulate.ly" - -\header { - title = "Matrosenlied" - composer = "Fr. Silcher, 1830" - poet = "Mäßig" - tagline = "" -} - -musicOne = \relative b' { - \time 3/4 - \key g \major - - \partial 4 b8. a16 | - g4 d8 (b) c16 (d) e (fis) | - g8 (b,) d4 d16 (e) fis (g) | - a4. b16 (a) a8 e16 (fis) | - d4 r a'8. b16 | - c4 a g16 (fis) e (d) | - d8 (b') g4 a8. b16 | - c4 a g16 (fis) e (d) | - d8 (b') g4 g8\p g | - e8 e16 (c) g'4 fis8 (e) | - d2 g8.\f b16 | - a4 e fis8 d | - g2 g8.\ff b16 | - d4 d, b'8. a16 | - g2 r4 | - \bar "|." -} - -verseOne = \lyricmode { - Auf dem | - Meer bin ich ge -- | - bo -- ren, auf dem | - Mee -- re ward ich | - groß, zu dem | - Meer hab ich ge -- | - schwo -- ren, es zur | - ew -- gen Braut er -- | - ko -- ren; fin -- det | - drum des To -- des | - Los, auf dem | - Meer stirbt der Mat -- | - ros, auf dem | - Meer stirbt der Mat -- | - ros. -} - -\book { - \score { - << - \new Voice = "one" { - \musicOne - } - \new Lyrics \lyricsto "one" { - \verseOne - } - >> - \layout { - } - } -} - -\book { - \score { - \unfoldRepeats \articulate - << - \new Voice = "one" { - \musicOne - } - >> - \midi { - \tempo 4 = 130 - } - } -} diff --git a/src/songs/matrosenlied.tex b/src/songs/matrosenlied.tex deleted file mode 100644 index 79c30b9..0000000 --- a/src/songs/matrosenlied.tex +++ /dev/null @@ -1,20 +0,0 @@ -\par -2. Schwingt der Mai die Sonnenflügel, lacht ein heitrer Sommertag, -ziehen rebengrüne Hügel längs des Wassers Silberspiegel, sing -ich bei dem Ruderschlag |: seinen hellen Furchen nach. :| -\par -3. Stürmt, den Winter zu verkünden, durch die Nächte wild der -Nord, rauscht die Flut aus tiefen Gründen, wenn die Sternlein bleich -verschwinden, spring ich keck von Bord zu Bord, |: kühn zur Tat, wie treu im Wort. :| -\par -4. Kracht der Kiel dann auch zusammen, ich halt aus in letzter -Stund; unter Masten, Schutt und Flammen bet ich still zum Schicksal: -Amen! blick hinunter in den Schlund und |: fahr mit dem Schiff zu Grund. :| -\par -5. Unten schlaf ich doch nicht immer, denn der Himmel ist kein -Spott; einst erweckt im Morgenschimmer auch der Herr die lecken Trümmer, -und vom Stapel frank und flott |: läuft dahin ein neues Boot. :| -\par -6. Aus dem Meere ewger Rosen winkt des Lechtturms goldner -Strahl, und es landen die Matrosen als willkommne Festgenossen, -wo im heilgen Heldensaal |: thront der große Admiral. :| diff --git a/src/songs/papst_und_sultan.ly b/src/songs/papst_und_sultan.ly deleted file mode 100644 index 1324358..0000000 --- a/src/songs/papst_und_sultan.ly +++ /dev/null @@ -1,76 +0,0 @@ -\version "2.18" -\include "articulate.ly" - -\header { - title = "Papst und Sultan" - composer = "" - poet = "Heiter" - tagline = "" -} - -musicOne = \relative a' { - \time 4/4 - \key d \major - - \partial 4 a4 | - d4. d,8 d d fis d | - a'2 r4 cis8 d | - e4. d8 cis b a g | - fis2 r8 a b cis | - - \repeat volta 2 - { - d4. a8 e'4. a,8 | - fis'2 r8 e d cis | - b4 e d cis | - } - \alternative - { - { d2 r8 a b cis } - { d2 r2 } - } - \bar "|." -} - -verseOne = \lyricmode { - Der | - Papst lebt herr -- lich in der | - Welt, es _ | - fehlt ihm nie an Ab -- lass -- | - geld, er trinkt vom | - al -- ler -- bes -- ten | - Wein; drum möcht ich | - auch der Papst wohl | - sein; er trinkt vom | - sein | -} - -\book { - \score { - << - \new Voice = "one" { - \musicOne - } - \new Lyrics \lyricsto "one" { - \verseOne - } - >> - \layout { - } - } -} - -\book { - \score { - \unfoldRepeats \articulate - << - \new Voice = "one" { - \musicOne - } - >> - \midi { - \tempo 4 = 140 - - } - } -} diff --git a/src/songs/papst_und_sultan.tex b/src/songs/papst_und_sultan.tex deleted file mode 100644 index 4766d2f..0000000 --- a/src/songs/papst_und_sultan.tex +++ /dev/null @@ -1,23 +0,0 @@ -\par -2. Doch nein, er ist ein armer Wicht, ein holdes Mädchen küßt -ihn nicht; |: er schläft in seinem Bett allein; ich möchte doch der Papst -nicht sein. :| -\par -3. Der Sultan lebt in Saus und Braus, er wohnt in einem -großen Haus; |: voll wunderschöner Mägdelein; drum möcht ich wohl der -Sultan sein. :| -\par -4. Doch nein, er ist ein armer Mann, denn folgt er seinem Alkoran, -|: so trinkt er keinen Tropfen Wein; ich möchte doch nicht Sultan sein. :| -\par -5. Geteilt veracht ich beider Glück und kehr in meinen Stand -zurück, |: doch das geh ich mit Freuden ein: Bald Papst, bald Sultan -möcht ich sein. :| -\par -6. Drum, Mädchen, gib mir einen Kuß, denn jetzt bin ich der -Sultanus. |: Ihr trauten Brüder, schenket ein, damit ich auch der Papst -kann sein. :| -\\~ -\begin{flushright} -Nach C. G. L. Noack, 1789 -\end{flushright} diff --git a/src/songs/raeuberlied.ly b/src/songs/raeuberlied.ly deleted file mode 100644 index 0a8c6e5..0000000 --- a/src/songs/raeuberlied.ly +++ /dev/null @@ -1,132 +0,0 @@ -\version "2.18.2" -\include "articulate.ly" - -\header { - title = "Räuberlied" - poet = "Frisch" - tagline = "" -} - -musicOne = \relative c'' { - \time 3/4 - \key c \major - \partial 8 c8 | - - \repeat volta 2 - { - g8. g16 g4 c | - a8. a16 a4. c8 | - b8. c16 d4 g, | - } - \alternative - { - { c8 e8 c4. c8 } - { c8 e8 c4. c8 } - } -} - -musicTwo = \relative c'' { - \repeat volta 2 - { - g8. b16 d4 d | - e8 c d4. c8 | - } -} - -musicThree = \relative c'' { - \repeat volta 2 - { - \time 3/4 - c8. b16 a4 (f'8) d | - \time 2/4 - e4 (d) | - } - \alternative - { - { c4. c8 } - { c4 r4 } - } - \bar "|." -} - -verseOne = \lyricmode { - Ein | - \repeat volta 2 - { - frei -- es Le -- ben | - füh -- ren wir, ein | - Le -- ben vol -- ller | - } - \alternative - { - { Won -- _ -- ne. Ein } - { Won -- _ -- ne. Der } - } -} - -verseTwo = \lyricmode { - \new Lyrics = "firstVerse"{ - << - { - Wald ist un -- ser | - Nacht -- quar -- tier; bei | - } - \new Lyrics = "secondVerse" - \with { alignBelowContext = "firstVerse" } - { - Sturm und Wind han -- | - tie -- ren wir; der | - } - >> - } -} - -verseThree = \lyricmode { - \repeat volta 2 - { - \time 3/4 - Mond ist uns -- re | - \time 2/4 - Son -- | - } - \alternative - { - { ne, der } - { ne. _ } - } -} - -\book { - \score { - << - \new Voice = "one" { - \musicOne - \musicTwo - \musicThree - } - \new Lyrics \lyricsto "one" { - \verseOne - \verseTwo - \verseThree - } - >> - \layout { - } - } -} - -\book { - \score { - \unfoldRepeats \articulate - << - \new Voice = "one" { - \musicOne - \musicTwo - \musicThree - } - >> - \midi { - \tempo 4 = 100 - } - } -} diff --git a/src/songs/raeuberlied.tex b/src/songs/raeuberlied.tex deleted file mode 100644 index 34ab1c6..0000000 --- a/src/songs/raeuberlied.tex +++ /dev/null @@ -1,16 +0,0 @@ -\par -2. |: Heut kehren wir bei Pfaffen ein, bei masten Pächtern morgen; :| -da gibt’s Dukaten, Bier und Wein, was drüber ist, da lassen wir fein -|: den lieben Herrgott sorgen. :| -\par -3. |: Und haben wir im Traubensaft die Gurgel ausgebadet, :| so machen -wir uns Mut und Kraft und mit dem Schwarzen Brüderschaft, -|: der in der Hölle bratet. :| -\par -|: Und wenn dann unser Stündlein kommt, das unsre Taten lohnet, :| -so trinken wir uns toll und voll und bring'n dem Schwarzen unsern Zoll, -|: der in der Hölle thronet. :| -\\~ -\begin{flushright} -Schiller, 1780 -\end{flushright}