Compare commits

..

No commits in common. "main" and "20200521" have entirely different histories.

23 changed files with 365 additions and 817 deletions

12
.editorconfig Normal file
View File

@ -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

2
.gitignore vendored
View File

@ -5,4 +5,4 @@
.vscode .vscode
tmp tmp
build build
src/tmp-ly src/tmp_ly

View File

@ -1,7 +1,7 @@
build: build:
image: thallian/latex-builder image: thallian/latex-builder
script: script:
- make -j4 - make
artifacts: artifacts:
paths: paths:
- build/* - build/*

123
Makefile
View File

@ -1,70 +1,101 @@
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
WORKING_DIR := $(patsubst %/,%,$(dir $(mkfile_path))) WORKING_DIR := $(patsubst %/,%,$(dir $(mkfile_path)))
BOOKNAME=kommersbuch BOOKNAME=kommersbuch
SRC_DIR=src SRC_DIR=src
BUILD_DIR=build BUILD_DIR=build
TMP_DIR=tmp TMP_DIR=tmp
SONG_DIR=$(SRC_DIR)/songs SONG_DIR=${SRC_DIR}/songs
BUILD_BOOK_DIR=$(BUILD_DIR)/books BUILD_BOOK_DIR=${BUILD_DIR}/books
TMP_BOOK_DIR=$(TMP_DIR)/books TMP_BOOK_DIR=${TMP_DIR}/books
BUILD_SONG_DIR=$(BUILD_DIR)/songs BUILD_SONG_DIR=${BUILD_DIR}/songs
TMP_SONG_DIR=$(TMP_DIR)/songs TMP_SONG_DIR=${TMP_DIR}/songs
BUILD_MIDI_DIR=$(BUILD_DIR)/midi BUILD_MIDI_DIR=${BUILD_DIR}/midi
TMP_MIDI_DIR=$(TMP_DIR)/midi TMP_MIDI_DIR=${TMP_DIR}/midi
BUILD_OPUS_DIR=$(BUILD_DIR)/opus 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) .PHONY: book songs midi opus clean directories all
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
.DEFAULT_GOAL := all .DEFAULT_GOAL := all
define 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}
$(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)))
%.dir: ${BUILD_DIR}:
mkdir -p $* mkdir -p ${BUILD_DIR}
$(TMP_SONG_DIR)/%.pdf: $(SONG_DIR)/%.ly $(SONG_DIR)/%.tex | $(TMP_SONG_DIR).dir ${BUILD_BOOK_DIR}:
cd $(SRC_DIR) && lualatex --jobname='$(notdir $(basename $@))' \ mkdir -p ${BUILD_BOOK_DIR}
--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_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 $< $@ cp $< $@
$(TMP_MIDI_DIR)/%-1.midi: $(SONG_DIR)/%.ly | $(TMP_MIDI_DIR).dir ${TMP_MIDI_DIR}/%-1.midi: ${SONG_DIR}/%.ly
lilypond --output=$(TMP_MIDI_DIR) $(WORKING_DIR)/$< 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 - $@ timidity $< -Ow -o - | opusenc - $@
$(TMP_BOOK_DIR)/%.pdf: $(SRC_DIR)/%.tex $(SRC_DIR)/images/title.png | $(TMP_BOOK_DIR).dir ${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) $< latexmk -cd -lualatex -e '$$lualatex=q/lualatex %O -shell-escape %S/' -output-directory=${WORKING_DIR}/${TMP_BOOK_DIR} $<
rm -r $(SRC_DIR)/tmp-ly 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 $< $@ 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) 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: $(LY_PDFS) songs: directories ${LY_PDFS}
midi: $(LY_MIDIS) midi: directories ${LY_MIDIS}
opus: $(LY_OPUS) opus: directories ${LY_OPUS}
all: book songs midi opus all: book songs midi opus
clean: clean:
rm -rf $(BUILD_DIR) rm -rf ${BUILD_DIR}
rm -rf $(TMP_DIR) rm -rf ${TMP_DIR}
rm -rf $(SRC_DIR)/tmp-ly

View File

@ -34,7 +34,7 @@
PATH=/bin:/usr/bin:/usr/local/bin ; export PATH PATH=/bin:/usr/bin:/usr/local/bin ; export PATH
umask 033 umask 033
# define our revision number variable for rcs # define our revision number variable for rcs
REVISION="2.2" REVISION="2.1"
# define error codes # define error codes
E_WRONG_ARGS=64 # too many or few args E_WRONG_ARGS=64 # too many or few args
E_BAD_SIG_TYPE=65 # invalid type of signature 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 # print the version information and exit successfully
versionfunc () 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 program comes with ABSOLUTELY NO WARRANTY."
echo "This is free software, and you are welcome to " echo "This is free software, and you are welcome to "
echo "redistribute it under certain conditions; see " echo "redistribute it under certain conditions; see "
@ -262,9 +263,6 @@ then
cp "$FILE_NAME" "$NEW_FILE_NAME" cp "$FILE_NAME" "$NEW_FILE_NAME"
else else
FILE_NAME="book.pdf" FILE_NAME="book.pdf"
if [ $VERBOSE -eq 1 ]; then
echo "makebook: No input file named; using stdin..."
fi
cat /dev/stdin > "$NEW_FILE_NAME" cat /dev/stdin > "$NEW_FILE_NAME"
fi fi
# declare holder variable for pdftk # declare holder variable for pdftk
@ -289,8 +287,8 @@ fi
# get some information about our source document # get some information about our source document
NUM_PAGES=`pdfinfo "$NEW_FILE_NAME" | awk '/Pages:/ {print $2}'`; NUM_PAGES=`pdfinfo "$NEW_FILE_NAME" | awk '/Pages:/ {print $2}'`;
SRC_PAGE_WIDTH=`pdfinfo "$NEW_FILE_NAME" | awk '/Page size:/ {print $3}'`; 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_HEIGHT=`pdfinfo "$NEW_FILE_NAME" | awk '/Page\ size:/ {print $5}'`;
# find the number of pages we'll have per signature # find the number of pages we'll have per signature
PAGES_PER_SIG=$(dc -e "$PAGES_PER_SIG $SECT_TYPE * p") PAGES_PER_SIG=$(dc -e "$PAGES_PER_SIG $SECT_TYPE * p")
# determine if extra pages will be necessary # determine if extra pages will be necessary

View File

@ -1,6 +1,6 @@
% !Mode:: "TeX:UTF-8" % !Mode:: "TeX:UTF-8"
\documentclass[11pt, openany, twoside]{scrbook} \documentclass[11pt, openany, oneside]{scrbook}
\usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc}
\usepackage{fontspec} \usepackage{fontspec}
\usepackage{fancyhdr} \usepackage{fancyhdr}
@ -42,25 +42,8 @@
\renewcommand\addchaptertocentry[2]{\addtocentrydefault{chapter}{}{#2}} \renewcommand\addchaptertocentry[2]{\addtocentrydefault{chapter}{}{#2}}
\renewcommand{\contentsname}{Inhalt} \renewcommand{\contentsname}{Inhalt}
\renewcommand{\cfttoctitlefont}{\huge\textbf\rmfamily}
\setlength{\columnseprule}{0.2pt} \renewcommand{\cftchapfont}{\large\rmfamily}
\hypersetup
{
bookmarks=true, % show bookmarks bar?
unicode=true, % non-Latin characters in Acrobats bookmarks
pdftoolbar=true, % show Acrobats toolbar?
pdfmenubar=false, % show Acrobats 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
}
\begin{document} \begin{document}
\begin{titlepage} \begin{titlepage}
@ -79,12 +62,6 @@
\tableofcontents \tableofcontents
\newpage \newpage
\lysetoption{staffsize}{22}
\lysetoption{quote}{true}
\lysetoption{indent}{false}
\lysetoption{insert}{inline}
\lysetoption{pass-fonts}{true}
\songs \songs
\end{document} \end{document}

187
src/lyluatex.lua Normal file
View File

@ -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)

71
src/lyluatex.sty Normal file
View File

@ -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

View File

@ -3,6 +3,7 @@
\documentclass[11pt, openany, oneside]{scrbook} \documentclass[11pt, openany, oneside]{scrbook}
\usepackage{fontspec} \usepackage{fontspec}
%%\usepackage[a4paper,left=3cm,right=3cm, top=3cm, bottom=3cm,includeheadfoot]{geometry}
\usepackage[a4paper]{geometry} \usepackage[a4paper]{geometry}
\usepackage{lmodern} \usepackage{lmodern}
\usepackage{tgschola} \usepackage{tgschola}
@ -13,14 +14,8 @@
\pagenumbering{gobble} \pagenumbering{gobble}
\lysetoption{staffsize}{22}
\lysetoption{quote}{true}
\lysetoption{indent}{false}
\lysetoption{insert}{inline}
\lysetoption{pass-fonts}{true}
\directlua{ \directlua{
tex.sprint("\string\\lilypondfile{" .. arg[5] .. "}") tex.sprint("\string\\includely[staffsize=16]{" .. arg[5] .. "}")
} }
~\\ ~\\
\directlua{ \directlua{

View File

@ -28,7 +28,7 @@ function find_songs(dir)
local ly_title = string.match(ly_content, 'title = "(.-)"') local ly_title = string.match(ly_content, 'title = "(.-)"')
tex.sprint('\\unchapter{' .. ly_title .. '}') tex.sprint('\\unchapter{' .. ly_title .. '}')
tex.sprint('\\lilypondfile{' .. dir .. '/' .. file .. '}') tex.sprint('\\includely[staffsize=16]{' .. dir .. '/' .. file .. '}')
tex.sprint('~\\\\') tex.sprint('~\\\\')
tex.sprint('~\\\\') tex.sprint('~\\\\')
tex.sprint('\\input{' .. dir .. '/' .. file:gsub("%.ly", ".tex") .. '}') tex.sprint('\\input{' .. dir .. '/' .. file:gsub("%.ly", ".tex") .. '}')

View File

@ -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
}
}
}

View File

@ -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}

View File

@ -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
}
}
}

View File

@ -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}

View File

@ -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
}
}
}

View File

@ -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}

View File

@ -25,7 +25,7 @@ machte er sein Testament,
und es fanden seine Erben und es fanden seine Erben
auch ein Buch in Pergament. auch ein Buch in Pergament.
Drinnen stand auf jeder Seit': Drinnen stand auf jeder Seit':
"Seid vernünftig, liebe Leut! "Seid vernünftig, liebe Leuf!
|: dieses geb' ich zu Attest: |: dieses geb' ich zu Attest:
Heute wieder voll gewest!" 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“} :| \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“} :|

View File

@ -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
}
}
}

View File

@ -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. :|

View File

@ -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
}
}
}

View File

@ -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}

View File

@ -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
}
}
}

View File

@ -1,16 +0,0 @@
\par
2. |: Heut kehren wir bei Pfaffen ein, bei masten Pächtern morgen; :|
da gibts 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}