Compare commits

..

32 Commits

Author SHA1 Message Date
leopold c468ec7d57 added python app 2025-02-13 17:06:40 +01:00
leopoldfajtak 96273071bb added offertory verses to propers: 2025-02-08 16:53:57 +01:00
leopoldfajtak 5b4d0f989e added propers 4-8 (except offertory) 2025-02-05 16:26:19 +01:00
leopoldfajtak ad51af8cfb fixed Activate Gregorian disclaimer 2025-01-31 17:23:37 +01:00
leopoldfajtak d5238e26c6 fixed presentation naming 2025-01-31 17:10:03 +01:00
leopoldfajtak 56364a4bb2 fixed smallcaps at Jesus 2025-01-31 17:02:01 +01:00
leopoldfajtak e39e2b8748 updated library: 2025-01-31 16:58:00 +01:00
leopoldfajtak b7ba46c249 added propers, fixed gregorio imports 2025-01-31 16:56:52 +01:00
leopoldfajtak 50dcb2e45f added immaculate conception proper 2024-12-11 14:15:40 +01:00
leopoldfajtak 349641c275 update library 2024-12-11 14:11:31 +01:00
leopoldfajtak 8f2f66b0c5 bug fixes 2024-12-11 14:08:30 +01:00
leopoldfajtak 1dc2207c33 fixed default template 2024-12-05 10:43:53 +01:00
leopoldfajtak 6938f650fd made section templates more flexible 2024-12-05 10:39:14 +01:00
leopoldfajtak 12dc7edf0e updated library 2024-12-05 10:21:07 +01:00
leopold 5cade9cd94 made libraries more independent 2024-11-27 22:48:43 +01:00
leopold 39d9f65428 added tex dependency to pdf 2024-11-27 17:29:45 +01:00
leopold 3bcb5a1553 update library 2024-11-27 17:18:01 +01:00
leopold 9574691953 added propers for advent 2024-11-27 17:08:08 +01:00
leopold 0bc4c14ed2 adapted library to new context aware format 2024-11-27 15:21:27 +01:00
leopold ca0740b810 made song template directory aware 2024-11-27 14:54:13 +01:00
leopold 0ae5cba75c made library dependencies more dynamic
switched to absolute paths
2024-11-27 14:51:40 +01:00
leopold 0f7023da16 added propers for christ the king 2024-11-24 12:13:08 +01:00
leopold 930123771c fixed indents 2024-11-24 12:09:53 +01:00
leopold fe5ba3a18f moved variable declaratios to config 2024-11-24 09:37:36 +01:00
leopoldfajtak 6f60bdd652 bug fixes, changed delim 2024-11-15 14:00:30 +01:00
leopold 02557ee6bc cleanup 2024-11-09 10:22:21 +01:00
leopold ed6a1fb612 changed delimitor to | 2024-11-09 09:49:45 +01:00
leopold ba15df5873 added propers for 32nd sunday ordinary time 2024-11-09 09:33:37 +01:00
leopoldfajtak 27c25eb147 changed csv delimiter 2024-10-31 16:13:04 +01:00
leopold b265bf42dc split makefiles, added empty page template 2024-10-25 17:53:44 +02:00
leopold 707cff52b4 fixed fonts 2024-10-24 11:55:08 +02:00
leopold 190885e5da changed docker to Debian
removed fonts submodules
2024-10-21 22:06:13 +02:00
82 changed files with 1226 additions and 201 deletions
+1
View File
@@ -1,2 +1,3 @@
build
.config
.DS_Store
+20 -3
View File
@@ -1,5 +1,22 @@
FROM archlinux:latest
FROM debian:sid-slim
RUN pacman -Syu --noconfirm texlive texlive-langgerman lilypond pdftk perl-template-toolkit make inkscape
WORKDIR /tmp
ENV LANG=C.UTF-8 \
LC_ALL=C.UTF-8 \
# ConTeXt cache can be created on runtime and does not need to
# increase image size
TEXLIVE_INSTALL_NO_CONTEXT_CACHE=1 \
# As we will not install regular documentation why would we want to
# install perl docs…
NOPERLDOC=1
RUN apt-get -q update && \
apt-get -qy upgrade && \
apt-get install -qy --no-install-recommends git make lilypond texlive-extra-utils texlive-font-utils texlive-latex-base texlive-latex-extra texlive-luatex texlive-lang-german texlive-music libtemplate-perl pdftk-java inkscape fonts-ebgaramond fonts-dosis && \
rm -rf /var/lib/apt/lists/*
ENV HOME /data
WORKDIR /data
VOLUME ["/data"]
+35 -47
View File
@@ -1,51 +1,39 @@
.PHONY: all
tex_deps = build variables.tt library/*/*/*.tt song_choices.csv song_template.tt propers/*.tt purpose_processing.tt
tpage = /usr/bin/vendor_perl/tpage
docker = podman
all: leadsheet_collection.pdf print_a3.pdf print_a4.pdf clean_intermediate
%.pdf: %.tex
cd build && \
lualatex --shell-escape $<
print_a3.pdf: songsheet_a3part.pdf
cd build && \
pdftk A=$< B=$< shuffle A B output - | pdfjam -o a4.pdf --nup 1x2 --paper a4paper --clip true /dev/stdin && \
pdfbook2 --paper a3paper -s -n -o 0 -i 0 -t 0 -b 0 a4.pdf && \
mv a4-book.pdf print_a3.pdf && \
rm a4.pdf
print_a4.pdf: songsheet_a4part.pdf
cd build && \
pdftk A=$< B=$< shuffle A B output - | pdfjam -o $@ --nup 1x2 --paper a4paper /dev/stdin;
songsheet_a3part.pdf: songsheet_a5.pdf
cd build && \
pdftk $< cat ~3-4 output $@
# cp $< $@
songsheet_a4part.pdf: songsheet_a5.pdf
# cp $< $@
# Uncomment this if songsheet.pdf has 12 pages or less, and you want to use an a4 sheet inside a folded a3 sheet
cd build && \
pdftk $< cat 3-4 output $@
songsheet_a5.pdf: songsheet.pdf
cd build && \
pdfjam -o $@ --nup 2x1 --paper a5paper --landscape $<
songsheet.tex: songsheet.tt $(tex_deps) header.tt head.tt footer.tt
$(tpage) $< > build/$@
musician_scores.tex: musician_scores.tt $(tex_deps)
$(tpage) $< > build/$@
leadsheet_collection.tex: musician_scores.tt $(tex_deps)
$(tpage) --define parts=band $< > build/$@
chornoten.tex: musician_scores.tt $(tex_deps)
$(tpage) --define parts=choir $< > build/$@
clean_intermediate:
cd build && \
rm songsheet_a3part.pdf songsheet_a4part.pdf songsheet_a5.pdf
build:
mkdir build
TOPDIR ::= $(shell pwd)
build_dir ::= $(TOPDIR)/build
config_dir ::= $(TOPDIR)/config
docker ::= podman
library_dir ::= $(TOPDIR)/library
propers_dir ::= $(TOPDIR)/propers
template_dir ::= $(TOPDIR)/templates
song_choices ::= $(config_dir)/song_choices.csv
user_variables ::= $(config_dir)/variables.tt
export
.PHONY: clean all
*: $(build_dir)/dynamic_deps.mk
$(build_dir)/dynamic_deps.mk: build_dir $(template_dir)/dynamic_deps.mk.tt $(song_choices) $(user_variables)
$(MAKE) -C $(template_dir) $@
include $(build_dir)/dynamic_deps.mk
clean:
rm -r build
$(RM) -r build
all: leadsheet_collection.pdf choir_scores.pdf print_a3.pdf clean_intermediate #print_a4.pdf
print_%.pdf: songsheet.pdf
$(MAKE) -C $(build_dir) $@
%.pdf: build %.tex
$(MAKE) -C $(build_dir) $@
clean_intermediate:
$(MAKE) -C $(build_dir) clean_intermediate
build_dir:
mkdir -p $(build_dir)
build: build_dir build-Makefile
cp build-Makefile $(build_dir)/Makefile && \
cp -r library/gregorio_scores $(build_dir)
init:
git submodule update --init --recursive
init_docker:
build_docker_image:
$(docker) build -t songsheet_generator .
build_in_docker:
$(docker) run -v `pwd`:/tmp songsheet_generator make
pull_docker:
$(docker) pull gitea.leopold.fajtak.at/leopold/songsheet_generator:latest
tex_deps ::= $(template_dir)/variables.tt $(config_dir)/qr_codes.csv $(config_dir)/variables.tt $(dynamic_deps)
songsheet.tex: $(template_dir)/songsheet.tt $(tex_deps) $(template_dir)/header.tt $(template_dir)/head.tt $(template_dir)/footer.tt
%.tex: build $(tex_deps)
$(MAKE) -C $(template_dir) $@
+163
View File
@@ -0,0 +1,163 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
*.lock
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
# Flet
storage/
+23
View File
@@ -0,0 +1,23 @@
# Flet app
Flet app using Flet extension.
To run the app:
1. Install dependencies from pyproject.toml:
```
poetry install
```
2. Build app:
```
poetry run flet build macos -v
```
3. Run app:
```
poetry run flet run
```
+41
View File
@@ -0,0 +1,41 @@
[project]
name = "songsheet_generator"
version = "0.1.0"
description = ""
readme = "README.md"
requires-python = ">=3.9"
authors = [
{ name = "Leopold Fajtak", email = "leopold@fajtak.at" }
]
dependencies = [
"flet==0.26.0"
]
[tool.flet]
# org name in reverse domain name notation, e.g. "com.mycompany".
# Combined with project.name to build bundle ID for iOS and Android apps
org = "at.fajtak.songsheet_generator"
# project display name that is used as an app title on Android and iOS home screens,
# shown in window titles and about app dialogs on desktop.
product = "Songsheet Generator"
# company name to display in about app dialogs
company = "Leopold Fajtak"
# copyright text to display in about app dialogs
copyright = "Copyright (C) 2025 by Leopold Fajtak"
[tool.flet.app]
path = "src/songsheet_generator"
[tool.uv]
dev-dependencies = [
"flet[all]==0.26.0",
]
[tool.poetry]
package-mode = false
[tool.poetry.group.dev.dependencies]
flet = {extras = ["all"], version = "0.26.0"}
+2
View File
@@ -0,0 +1,2 @@
flet[all]
dependency_injector
Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

@@ -0,0 +1,24 @@
import flet as ft
from pathlib import PurePath
from songsheet_generator.service.config_service import ConfigService
class ConfigComponent(ft.Column):
# application's root control is a Column containing all other controls
def __init__(self, config_service: ConfigService):
super().__init__()
self.config_service = config_service
self.path = ft.TextField(label="Bibliothek Pfad", value = self.config_service.library_path, on_change=self.textbox_changed)
self.width = 600
self.controls = [
self.path,
ft.ElevatedButton(text="Save config", on_click=self.save_config)
]
def textbox_changed(self, e):
self.config_service.library_path = e.control.value
def save_config(self, e):
self.config_service.save_config_to_storage()
@@ -0,0 +1,91 @@
import flet as ft
from songsheet_generator.types.song_purpose import SongPurpose
from songsheet_generator.types.song import Song
from songsheet_generator.service.song_service import SongService
from pathlib import Path
class SongComponent(ft.Column):
def __init__(self,
song_service: SongService,
song_delete = lambda a : None,
song: Song = Song(),
):
super().__init__()
self.song_service = song_service
self.song = song
self.delete = song_delete
self.display_song = ft.Row(spacing=0, controls=[
ft.Text(self.song.purpose.display_name, weight=ft.FontWeight.BOLD),
ft.Text(self.song.path),
])
self.edit_purpose = ft.Dropdown(
label = "Messteil",
hint_text="Teil der Messe, der gesungen wird",
options=[ ft.dropdown.Option(key=purpose.key, text=purpose.display_name) for purpose in SongPurpose.get_all_purposes() ],
autofocus=True,
)
self.edit_path = ft.Dropdown(
label="Pfad",
options = [ft.dropdown.Option(key=path) for path in self.song_service.all_songs()]
)
self.edit_name = ft.TextField(expand=1)
self.display_view = ft.Row(
alignment=ft.MainAxisAlignment.SPACE_BETWEEN,
vertical_alignment=ft.CrossAxisAlignment.CENTER,
controls=[
self.display_song,
ft.Row(
spacing=0,
controls=[
ft.IconButton(
icon=ft.Icons.CREATE_OUTLINED,
tooltip="Lied bearbeiten",
on_click=self.edit_clicked,
),
ft.IconButton(
ft.Icons.DELETE_OUTLINE,
tooltip="Lied entfernen",
on_click=self.delete_clicked,
),
],
),
],
)
self.edit_view = ft.Row(
visible=False,
alignment=ft.MainAxisAlignment.SPACE_BETWEEN,
vertical_alignment=ft.CrossAxisAlignment.CENTER,
controls=[
self.edit_purpose,
self.edit_path,
ft.IconButton(
icon=ft.Icons.DONE_OUTLINE_OUTLINED,
icon_color=ft.Colors.GREEN,
tooltip="Update Song",
on_click=self.save_clicked,
),
],
)
self.controls = [self.display_view, self.edit_view]
def edit_clicked(self, e):
self.edit_purpose.value = self.song.purpose.key
self.edit_path.value = self.song.path
self.display_view.visible = False
self.edit_view.visible = True
self.update()
def save_clicked(self, e):
self.song.purpose = SongPurpose(self.edit_purpose.value)
self.display_song.controls[0].value = self.song.purpose.display_name
self.display_song.controls[1].value = Path(self.song.path)
self.display_view.visible = True
self.edit_view.visible = False
self.update()
def delete_clicked(self, e):
self.delete(self)
@@ -0,0 +1,47 @@
import flet as ft
from pathlib import Path
from .song_component import SongComponent
from songsheet_generator.types.song_purpose import SongPurpose
from songsheet_generator.types.song import Song
from songsheet_generator.service.song_service import SongService
from songsheet_generator.containers import Services
class SongsComponent(ft.Column):
# application's root control is a Column containing all other controls
def __init__(self, song_service: SongService):
super().__init__()
self.song_service = song_service
self.songs = ft.Column()
self.purpose = ft.Dropdown(
label = "Messteil",
hint_text="Teil der Messe, der gesungen wird",
options=[ ft.dropdown.Option(key=purpose.key, text=purpose.display_name) for purpose in SongPurpose.get_all_purposes() ],
autofocus=True,
)
self.path = ft.Dropdown(
label="Pfad",
options = [ft.dropdown.Option(key=path) for path in self.song_service.all_songs()]
)
self.width = 600
self.controls = [
ft.Row(
controls=[
self.purpose,
self.path,
ft.FloatingActionButton(
icon=ft.Icons.ADD, on_click=self.add_clicked
),
],
),
self.songs,
]
def add_clicked(self, s):
# todo use dependency injection and the factory design pattern
self.songs.controls.append(SongComponent(song_service = self.song_service, song_delete = self.song_delete, song = Song(SongPurpose(self.purpose.value), Path(self.path.value))))
self.update()
def song_delete(self, song):
self.songs.controls.remove(song)
self.update()
+16
View File
@@ -0,0 +1,16 @@
"""Containers module"""
from dependency_injector import containers, providers
from service.config_service_impl import ConfigServiceImpl
from service.song_service_impl import SongServiceImpl
from components.song_component import SongComponent
class Services(containers.DeclarativeContainer):
config_service = providers.Singleton(ConfigServiceImpl)
song_service = providers.Singleton(SongServiceImpl, config_service = config_service)
song_component_factory = providers.Factory(SongComponent, song_service=song_service)
class Application(containers.DeclarativeContainer):
services = providers.Container(
Services
)
+48
View File
@@ -0,0 +1,48 @@
import flet as ft
from dependency_injector.wiring import Provide, inject
from components.songs_component import SongsComponent
from components.config_component import ConfigComponent
from service.config_service import ConfigService
from service.song_service import SongService
from songsheet_generator.containers import Application
def main(
page: ft.Page,
song_service: SongService = Provide[Application.services.song_service],
config_service: ConfigService = Provide[Application.services.config_service]):
page.title = "Songsheet Generator"
page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
page.update()
config_service.set_page(page)
lieder = SongsComponent(song_service)
config = ConfigComponent(config_service)
tabs = ft.Tabs(
selected_index=1,
animation_duration=300,
tabs = [
ft.Tab(
text="Lieder",
content=lieder,
),
ft.Tab(
text="Events",
content=ft.Text("Events"),
),
ft.Tab(
text="Config",
content=config,
)
]
)
#add application's root control to the page
page.add(tabs)
container1 = Application()
container1.wire(modules=[__name__])
ft.app(main)
@@ -0,0 +1,17 @@
import flet as ft
from abc import ABC, abstractmethod
from pathlib import Path
class ConfigService(ABC):
@property
@abstractmethod
def library_path(self) -> Path:
pass
@abstractmethod
def set_page(self, page: ft.Page):
pass
@abstractmethod
def save_config_to_storage(self):
pass
@@ -0,0 +1,26 @@
import flet as ft
from .config_service import ConfigService
from pathlib import Path
class ConfigServiceImpl(ConfigService):
def __init__(self):
self.library_path: Path = Path.home()
self.page = None
def set_page(self, page: ft.Page):
self.page = page
if self.page.client_storage.contains_key("library_path"):
self.library_path = Path(self.page.client_storage.get("library_path"))
@property
def library_path(self) -> Path:
return self._library_path
@library_path.setter
def library_path(self, value: Path):
self._library_path = value
def save_config_to_storage(self):
if self.page:
self.page.client_storage.set("library_path", self.library_path)
@@ -0,0 +1,2 @@
class Library():
def __init__(self):
@@ -0,0 +1,8 @@
from abc import ABC, abstractmethod
class SongService(ABC):
@abstractmethod
def all_songs():
pass
@@ -0,0 +1,12 @@
from .config_service import ConfigService
from .song_service import SongService
class SongServiceImpl(SongService):
def __init__(self, config_service: ConfigService):
self.config_service = config_service
def all_songs(self):
assignments_paths = list(self.config_service.library_path.rglob('assignments.tt'))
return [ p.parent.relative_to(self.config_service.library_path) for p in assignments_paths ]
@@ -0,0 +1,9 @@
from pathlib import PurePath
from .song_purpose import SongPurpose
class Song():
def __init__(self,
purpose: SongPurpose = SongPurpose(),
path: PurePath = PurePath(),):
self.purpose = purpose
self.path = path
@@ -0,0 +1,27 @@
class SongPurpose():
all_purposes = {
"introitus": ["Eröffnung", "Eröffnung"],
"kyrie": ["Kyrie", "Kyrie"],
"gloria": ["Gloria", "Gloria"],
"kehrvers": ["Antwortpsalm-Kehrvers", "Antwortpsalm-Kehrvers"],
"graduale": ["Graduale", "Graduale"],
"ad_evangelium": ["Ruf vor dem Evangelium/der Passion", "Ruf vor dem Evangelium/der Passion"],
"credo": ["Glaubensbekenntnis", "Glaubensbekenntnis"],
"offertorium": ["Zur Gabenbereitung", "Zur Gabenbereitung"],
"sanctus": ["Sanctus", "Sanctus"],
"agnus": ["Agnus Dei", "Agnus Dei"],
"communio": ["Zur Kommunion", "Zur Kommunion"],
"BMV": ["Marianische Antiphon", "Marianische Antiphon"],
"": ["", "Leer"]
}
def __init__(self, key=""):
self.key = key
try:
[self.print_name, self.display_name] = self.all_purposes.get(key)
except KeyError:
printf(f"{key} is not a purpose option.")
@classmethod
def get_all_purposes(cls):
return [cls(key) for key in cls.all_purposes.keys()]
+23
View File
@@ -0,0 +1,23 @@
.PRECIOUS: %.tex
%.pdf: %.tex
lualatex --shell-escape $<
print_a3.pdf: songsheet_a3part.pdf
pdftk A=$< B=$< shuffle A B output - | pdfjam -o a4.pdf --nup 1x2 --paper a4paper --clip true /dev/stdin && \
pdfbook2 --paper a3paper -s -n -o 0 -i 0 -t 0 -b 0 a4.pdf && \
mv a4-book.pdf print_a3.pdf && \
rm a4.pdf
print_a4.pdf: songsheet_a4part.pdf
pdftk A=$< B=$< shuffle A B output - | pdfjam -o $@ --nup 1x2 --paper a4paper /dev/stdin;
songsheet_a3part.pdf: songsheet_a5.pdf
cp $< $@
# pdftk $< cat ~3-4 output $@
songsheet_a4part.pdf: songsheet_a5.pdf
# cp $< $@
# Uncomment this if songsheet.pdf has 12 pages or less, and you want to use an a4 sheet inside a folded a3 sheet
pdftk $< cat 3-4 output $@
songsheet_a5.pdf: songsheet.pdf
pdfjam -o $@ --nup 2x1 --paper a5paper --landscape $<
%.tex:
$(MAKE) -C $(TOPDIR) $@
clean_intermediate:
$(RM) songsheet_a3part.pdf songsheet_a4part.pdf songsheet_a5.pdf
+1
View File
@@ -0,0 +1 @@
podman run -v `pwd`:/data songsheet_generator make "$@"
+1
View File
@@ -0,0 +1 @@
description | url
1 description url
+15
View File
@@ -0,0 +1,15 @@
purpose | template | assignments_directory | overrides
| | freie_lieder/adeste_fideles |
introitus | | |
#confiteor | | | lyrics = "\\input{${library_dir}/gebete/confiteor/confiteor_de.tex}"
kyrie | | |
gloria | | |
graduale | | |
tractus | | |
#credo | | | lyrics = "\\input{${library_dir}/gebete/credo/apostolisch_de.tex}"
offertorium | | |
sanctus | | |
agnus | | |
communio | | |
#BMV | | |
| | |
Can't render this file because it contains an unexpected character in line 4 and column 27.
+8
View File
@@ -0,0 +1,8 @@
[%# set variables proper, color, title, subtitle, credo, gregorian, small_head, small_footer, lent, meditations -%]
[%
proper = ''
gregorian = 0
small_head = 0
small_footer = 0
meditations = 0
-%]
+1
View File
@@ -1 +1,2 @@
*/*/*.glog
*/*/*.gtex
@@ -1,3 +1,3 @@
[%
scores.gregorian = 'gregorio_scores/agnus_dei/agnus_viii.gabc';
scores.gregorian = 'agnus_viii.gabc';
-%]
@@ -0,0 +1,6 @@
name:Alma Redemptoris (simple tone);
office-part:Antiphona;
book:The Liber Usualis, 1961, p. 277 & Chants of the Church, 1956, p. 83;
transcriber:Andrew Hinkley, Leopold Fajtak;
%%
(c4) AL(c/ef/gh)ma(g) *() Re(g)dem(g)ptó(h)ris(i) Ma(j)ter,(g) (;) quæ(e) pér(e)vi(e)a(f) c<sp>'æ</sp>(e)li(d) por(e)ta(f) ma(h)nes,(g) (;) Et(h) stel(j)la(i) ma(h)ris,(g) (;) suc(e)cúr(f)re(e) ca(d)dén(e)ti(g) (;) súr(e)ge(f)re(g) qui(h) cu(j)rat(i) pó(k)pu(j)lo(j) :(:) Tu(j) quæ(i) ge(j)nu(j)í(k)sti,(g) (;) na(j)tú(i)ra(h) mi(g)rán(f)te,(e) (;) tu(e)um(e) san(h)ctum(g) Ge(f)ni(e)tó(de)rem(fe) :(:) Vir(j)go(i) pri(h)us(g) ac(h) po(g)sté(e)ri(f)us,(g) (;) Ga(h)bri(h)é(j)lis(h) ab(g) o(f)re(e) (;) su(f)mens(e) il(g)lud(g) A(h)ve,(g) (;) pec(j)ca(i)tó(j)rum(hg) mi(h)se(f)ré(ed)re.(c) (::)
@@ -0,0 +1,16 @@
[%
scores.gregorian = 'alma_redemptoris_mater_simplex.gabc';
after_song = '
\\textit{
Erhabne Mutter des Erlösers,
du allzeit offene Pforte des Himmels
und Stern des Meeres,
komm, hilf deinem Volke,
das sich müht, vom Falle aufzustehn.
Du hast geboren, der Natur zum Staunen,
deinen heiligen Schöpfer.
die du, Jungfrau davor und danach,
aus Gabriels Mund vernahmst das selige Ave,
o erbarme dich der Sünder.
}';
-%]
@@ -1,5 +1,5 @@
[%
scores.gregorian = 'gregorio_scores/bmv/ave_regina_caelorum.gabc';
scores.gregorian = 'ave_regina_caelorum.gabc';
credits = {
lyrics = 'um 1100'
melody = '17. Jh.'
@@ -1,5 +1,5 @@
[%
scores.gregorian = 'gregorio_scores/bmv/regina_caeli/regina_caeli.gabc';
scores.gregorian = 'regina_caeli.gabc';
credits = {
lyrics = 'Rom um 1170'
melody = '16. Jh.'
@@ -1,5 +1,5 @@
[%
scores.gregorian = 'gregorio_scores/bmv/salve_regina_simplex/salve_regina_simplex.gabc';
scores.gregorian = 'salve_regina_simplex.gabc';
credits = {
lyrics = "11. Jh."
melody = "17. Jh. nach Henri Du Mont"
@@ -15,7 +15,7 @@
Wohlan denn, unsre Fürsprecherin,
deine barmherzigen Augen
wende uns zu
und nach diesem Elend zeige uns Jesus,
und nach diesem Elend zeige uns \\textsc{Jesus},
die gebenedeite Frucht deines Leibes.
O gütige, o milde, o süße Jungfrau \\textsc{Maria}.}';
-%]
@@ -1,5 +1,5 @@
[%
scores.gregorian = 'gregorio_scores/kyrie/kyrie_viii/kyrie_viii.gabc';
scores.gregorian = 'kyrie/kyrie_viii/kyrie_viii.gabc';
credits = {
lyrics = 'Liturgie'
melody = 'Vat. VIII'
@@ -1,5 +1,5 @@
[%
scores.gregorian = 'gregorio_scores/kyrie/kyrie_xvi/kyrie_xvi.gabc';
scores.gregorian = 'kyrie/kyrie_xvi/kyrie_xvi.gabc';
credits = {
lyrics = 'Liturgie'
melody = 'Vat. XVI'
@@ -0,0 +1,11 @@
name:Kyrie XVI (forma ordinaria);
office-part:Kyriale;
mode:3;
book:Graduale Romanum, 1974, p. 763 & Liber cantualis, 1983, p. 17;
transcriber:Pierre François;
commentary:XI-XIII. s.;
%%
(c4) KY(g)ri(hi)e(ii) *() e(g)lé(h_)i(i)son. (i.) <i>bis</i>(::)
Chrí(k)ste(ij) e(h)lé(h_)i(i)son. (i.) <i>bis</i>(::)
Ký(g)ri(hi)e(ii) e(g)lé(h_)i(i)son.(i.) (::)
Ký(g)ri(hi)e(ii) () e(g)lé(hj)i(h)son.(ig/hvGFE.) (::)
-6
View File
@@ -1,6 +0,0 @@
\paper {
% #(set-paper-size "a4")
#(define fonts
(make-pango-font-tree "EB Garamond" "DejaVu Sans" "DejaVu Sans Mono" (/ staff-height pt 20)))
}
\header {tagline = ##f}
-10
View File
@@ -1,10 +0,0 @@
#(set-global-staff-size 14)
\paper {
#(define fonts
(set-global-fonts
#:roman "EB Garamond"
#:factor (/ staff-height pt 18)
))
% #(set-paper-size "a4")
}
\header {tagline = ##f}
+12
View File
@@ -0,0 +1,12 @@
[% title = 'Erster Advent\-sonntag'
color = 'purple'
lent = 0
introitus = '\gradualverse{Zu dir, Herr, erhebe ich meine Seele. Mein Gott, dir vertraue ich.
Lass mich nicht scheitern, lass meine Feinde nicht triumphieren!
Denn niemand, der auf dich hofft, wird zuschanden.
Zeige mir, Herr, deine Wege, lehre mich deine Pfade}{Ps 25 (24), 1--3a, 4}'
offertorium = '\gradualverse{Zu dir, Herr, erhebe ich meine Seele. Mein Gott, dir vertraue ich.
Lass mich nicht scheitern, lass meine Feinde nicht triumphieren!
Denn niemand, der auf dich hofft, wird zuschanden.}{Ps 25 (24), 1--3a}'
communio = '\gradualverse{Der Herr wird seinen Segen spenden,
und unsere Erde bringt ihre Frucht hervor.}{Ps 85 (84), 13}' -%]
+13
View File
@@ -0,0 +1,13 @@
[% title = 'Zweiter Advent\-sonntag'
color = 'purple'
lent = 0
introitus = '\gradualverse{Der Herr wird kommen, um die Welt zu erlösen.
Volk Gottes, mach dich bereit.
Höre auf ihn, und dein Herz wird sich freuen.}{Vgl. Jes 30, 19.30}'
offertorium = '\gradualverse{Willst du uns nicht wieder beleben,
dass dein Volk an dir sich freue?
Lass uns schauen, Herr, deine Huld und schenk uns dein Heil.}{Ps 85 (84), 7--8}'
communio = '\gradualverse{Jerusalem, erhebe dich,
steig auf den Berg und schau die Freude,
die von deinem Gott zu dir kommt.}{Bar 5, 5; 4, 36}'
-%]
+11
View File
@@ -0,0 +1,11 @@
[% title = 'Dritter Advent\-sonntag'
color = 'pink'
lent = 0
introitus = '\gradualverse{Freut euch im Herrn zu jeder Zeit! Noch einmal sage ich: Freut euch!
Denn der Herr ist nahe.}{Phil 4, 4.5}'
offertorium = '\gradualverse{Du hast wieder Gefallen gefunden, Herr, an deinem Land,
du hast Jakobs Unglück gewendet.
Du hast deinem Volk die Schuld vergeben, all seine Sünden zugedeckt.}{Ps 85 (94) 2--3}'
communio = '\gradualverse{Sagt den Verzagten: Habt Mut, fürchtet euch nicht!
Seht, hier ist euer Gott!
Er selbst wird kommen und euch erretten.}{Jes 35, 4}' -%]
+10
View File
@@ -0,0 +1,10 @@
[% title = 'Vierter Advent\-sonntag'
color = 'purple'
lent = 0
introitus = '\gradualverse{Tauet, ihr Himmel, von oben!
Ihr Wolken, regnet herab den Gerechten!
Tu dich auf, o Erde, und sprosse den Heiland hervor!}{Vgl. Jes 45, 8}'
offertorium = '\gradualverse{Sei gegrüßt, Maria, du Begnadete, der Herr ist mit dir.
Gesegnet bist du unter den Frauen,, und gesegnet ist die Frucht deines Leibes.}{Lk 1, 28b,42b}'
communio = '\gradualverse{Seht, die Jungfrau wird empfangen und einen Sohn gebären.
Sein Name ist Immanuel, Gott mit uns.}{Jes 7, 14}' -%]
+18
View File
@@ -0,0 +1,18 @@
[% title = 'Christkönigssonntag'
subtitle = ''
color = 'white'
lent = 0
introitus = '\gradualverse{
Würdig ist das Lamm, das geschlachtet ist, Macht zu empfangen,
Reichtum und Weisheit, Kraft und Ehre.
Ihm sei die Herrlichkeit und die Herrschermacht in Ewigkeit.
}{Offb 5, 12; 1, 6}'
offertorium = '\gradualverse{
Fordre von mir, und ich gebe dir die Völker zum Erbe,
die Enden der Erde zum Eigentum.
}{Ps 2, 8}'
communio = '\gradualverse{
Der Herr thront als König in Ewigkeit.
Der Herr segne sein Volk mit Frieden.
}{Ps 29 (28), 1011}';
-%]
+20
View File
@@ -0,0 +1,20 @@
[% title = 'Taufe des Herrn'
subtitle = ''
color = 'white'
lent = 0
introitus = '\gradualverse{
Als Jesus getauft war, öffnete sich der Himmel,
und er sah den Geist Gottes wie eine Taube auf sich herabkommen.
Und die Stimme des Vaters aus dem Himmel sprach:
Das ist mein geliebter Sohn, an dem ich Gefallen habe.
}{Vgl. Mt 3, 1617}'
offertorium = '\gradualverse{
Hochgelobt sei der da kommt im Namen des Herrn.
Hosanna in der Höhe.
}{Mt 21, 9}'
communio = '\gradualverse{
Dieser ist es, über den Johannes gesagt hat:
Ich habe es gesehen und lege Zeugnis ab:
Dieser ist der Sohn Gottes.
}{Joh 1, 30.34}';
-%]
+21
View File
@@ -0,0 +1,21 @@
[% title = 'Hochfest der ohne Erbsünde empfangenen Jungfrau und Gottesmutter Maria'
subtitle = ''
color = 'white'
lent = 0
introitus = '\gradualverse{
Von Herzen will ich mich freuen über den Herrn.
Meine Seele soll jubeln über meinen Gott.
Denn er kleidet mich in Gewänder des Heils,
er hüllt mich in den Mantel der Rettung
und schmückt mich köstlich wie eine Braut.
}{Jes 61,10}'
offertorium = '\gradualverse{
Sei gegrüßt, du Begnadete, der Herr ist mit dir.
Gesegnet bist du unter den Frauen und gesegnet ist die Frucht deines Leibes.
}{vgl. Lk 1,28; 42}'
communio = '\gradualverse{
Großes hat man von dir gesagt, Maria,
denn aus dir ging hervor die Sonne der Gerechtigkeit,
Christus, unser Gott.
}{}';
-%]
+18
View File
@@ -0,0 +1,18 @@
[% title = 'Zweiter Sonntag im Jahreskreis'
subtitle = ''
color = 'green'
lent = 0
introitus = '\gradualverse{Alle Welt bete dich an, o Gott, und singe dein Lob,
sie lobsinge deinem Namen, du Allerhöchster.}{Ps 66 (65), 4}'
offertorium = '\gradualverse{
Jauchzt vor Gott, alle Länder der Erde! Spielt zum Ruhm seines Namens!
Ihr alle, die ihr Gott fürchtet, kommt und hört;
ich will euch erzählen, was er mir Gutes getan hat.
}{Ps 66 (65), 1-2,16}'
communio = '\gradualverse{Herr, du deckst mir den Tisch vor den Augen meiner Feinde.
Du füllst mir reichlich den Becher.
}{Ps 23 (22), 5}\par
\textit{oder}\par
\gradualverse{Wir haben die Liebe erkannt und an die Liebe geglaubt,
die Gott zu uns hat.}{1 Joh 4, 16}';
-%]
+19
View File
@@ -0,0 +1,19 @@
[% title = 'Dritter Sonntag im Jahreskreis'
subtitle = ''
color = 'green'
lent = 0
introitus = '\gradualverse{Singet dem Herrn ein neues Lied, singt dem Herrn, alle Lande!
Hoheit und Pracht sind vor seinem Angesicht,
Macht und Glanz in seinem Heiligtum!}{Ps 96 (95), 1.6}'
offertorium = '\gradualverse{
Die Rechte des Herrn ist erhoben, die Rechte des Herrn wirkt mit Macht.
Ich werde nicht sterben, sondern leben, um die Taten des Herrn zu verkünden.
}{Ps 118 (117), 16.17}'
communio = '\gradualverse{Blickt auf zum Herrn, so wird euer Gesicht leuchten,
und ihr braucht nicht zu erröten.}{Ps 34 (33), 6}\par
\textit{oder}\par
\gradualverse{
Ich bin das Licht der Welt so spricht der Herr.
Wer mir nachfolgt, wird nicht in der Finsternis gehen.
Er wird das Licht des Lebens haben.}{Joh 8, 12}';
-%]
+17
View File
@@ -0,0 +1,17 @@
[% title = 'Vierter Sonntag im Jahreskreis'
subtitle = ''
color = 'green'
lent = 0
introitus = '\gradualverse{Hilf uns, Herr, unser Gott, führe uns aus den Völkern zusammen!
Wir wollen deinen heiligen Namen preisen,
uns rühmen, weil wir dich loben dürfen.}{Ps 106 (105), 47}'
offertorium = '\gradualverse{ Lass dein Angesicht leuchten über deinem Knecht,
hilf mir in deiner Güte.
Herr, lass mich nicht scheitern, denn ich rufe zu dir.
}{Ps 31 (30), 1718}'
communio = '\gradualverse{}{}\par
\textit{oder}\par
\gradualverse{Selig, die vor Gott arm sind; denn ihnen gehört das Himmelreich.
Selig, die keine Gewalt anwenden; denn sie werden das Land erben.
}{Mt 5, 3.5}';
-%]
+24
View File
@@ -0,0 +1,24 @@
[% title = 'Fünfter Sonntag im Jahreskreis'
subtitle = ''
color = 'green'
lent = 0
introitus = '\gradualverse{Kommt, lasst uns niederfallen,
uns verneigen vor dem Herrn, unserem Schöpfer!
Denn er ist unser Gott.}{Ps 95 (94), 67}'
offertorium = '\gradualverse{
Auf dem Weg deiner Gebote gehn meine Schritte,
meine Füße wanken nicht auf deinen Pfaden.
Wende dein Ohr mir zu, vernimm meine Rede!
Wunderbar erweise deine Huld!
Du rettest alle, die sich an deiner Rechten vor den Feinden bergen
}{Ps 17 (16), 5.6b-7}'
communio = '\gradualverse{Wir wollen dem Herrn danken für seine Huld,
für sein wunderbares Tun an den Menschen,
weil er die hungernde Seele mit seinen Gaben erfüllt hat.
}{Ps 107 (106), 89}\par
\textit{oder}\par
\gradualverse{Selig, die trauern; denn sie werden getröstet werden.
Selig, die hungern und dürsten nach der Gerechtigkeit;
denn sie werden satt werden.
}{Mt 5, 4.6}';
-%]
+19
View File
@@ -0,0 +1,19 @@
[% title = 'Sechster Sonntag im Jahreskreis'
subtitle = ''
color = 'green'
lent = 0
introitus = '\gradualverse{Sei mir ein schützender Fels, eine feste Burg, die mich rettet.
Denn du bist mein Fels und meine Burg;
um deines Namens willen wirst du mich führen und leiten.}{Ps 31 (30), 34}'
offertorium = '\gradualverse{
Gepriesen seist du, Herr! Lehre mich deine Gesetze.
Mit meinen Lippen verkünde ich alle Urteile deines Mundes.
}{Ps 119 (118), 12-13}'
communio = '\gradualverse{Alle aßen und wurden satt; er gab ihnen, was sie begehrten.
Ihr Verlangen wurde erfüllt.}{Vgl. Ps 78 (77), 2930}\par
\textit{oder}\par
\gradualverse{Gott hat die Welt so geliebt, dass er seinen einzigen Sohn hingab,
damit jeder, der an ihn glaubt, nicht zugrunde geht,
sondern das ewige Leben hat.
}{Joh 3, 16}';
-%]
+18
View File
@@ -0,0 +1,18 @@
[% title = 'Siebter Sonntag im Jahreskreis'
subtitle = ''
color = 'green'
lent = 0
introitus = '\gradualverse{Herr, ich baue auf deine Huld,
mein Herz soll über deine Hilfe frohlocken.
Singen will ich dem Herrn, weil er mir Gutes getan hat.}{Ps 13 (12), 6}'
offertorium = '\gradualverse{
Vernimm mein lautes Schreien, mein König und mein Gott, denn ich flehe zu dir.
}{Ps 5, 3}'
communio = '\gradualverse{Herr, verkünden will ich all deine Wunder.
Ich will jauchzen und an dir mich freuen,
für dich, du Höchster, will ich singen und spielen.}{Ps 9, 23}\par
\textit{oder}\par
\gradualverse{Ja, Herr, ich glaube, dass du der Messias bist,
der Sohn Gottes, der in die Welt kommen soll.
}{Joh 11, 27}';
-%]
+16
View File
@@ -0,0 +1,16 @@
[% title = 'Achter Sonntag im Jahreskreis'
subtitle = ''
color = 'green'
lent = 0
introitus = '\gradualverse{Der Herr wurde mein Halt.
Er führte mich hinaus ins Weite,
er befreite mich, denn er hat an mir Gefallen.}{Ps 18 (17), 19.20}'
offertorium = '\gradualverse{
Herr, wende dich mir zu und errette mich, in deiner Huld bring mir Hilfe!
}{Ps 6, 5}'
communio = '\gradualverse{Singen will ich dem Herrn, weil er mir Gutes getan hat,
den Namen des Höchsten will ich preisen.}{Ps 13 (12), 6}\par
\textit{oder}\par
\gradualverse{Ich bin bei euch alle Tage bis zum Ende der Welt so spricht der Herr.
}{Mt 28, 20}';
-%]
+24
View File
@@ -0,0 +1,24 @@
[% title = '31. Sonntag im Jahreskreis'
subtitle = ''
color = 'green'
lent = 0
introitus = '\gradualverse{
Freuen sollen sich alle, die den Herrn suchen.
Sucht den Herrn und seine Macht, sucht sein Antlitz allezeit.
}{Ps 38 (37), 2223}'
offertorium = "\\gradualverse{
Lobe den Herrn, meine Seele, und alles in mir seinen heiligen Namen!
Lobe den Herrn, meine Seele, und vergiss nicht, was er dir Gutes getan hat!
}{Ps 103, 1-2}"
communio = '\gradualverse{
Herr, du zeigst mir den Pfad zum Leben;
vor deinem Angesicht herrscht Freude in Fülle.
}{Ps 16 (15), 11}\par
\textit{oder}\par
\gradualverse{
So spricht der Herr:
Wie mich der lebendige Vater gesandt hat
und wie ich durch den Vater lebe,
so wird jeder, der mich isst, durch mich leben.
}{Joh 6, 57}';
-%]
+23
View File
@@ -0,0 +1,23 @@
[% title = '32. Sonntag im Jahreskreis'
subtitle = ''
color = 'green'
lent = 0
introitus = '\gradualverse{
Herr, lass mein Gebet zu dir dringen,
wende dein Ohr meinem Flehen zu.
}{Ps 88 (87), 3}'
offertorium = "\\gradualverse{
Festige meine Schritte wie du es verheißen hast.
Lass kein Unrecht über mich herrschen!
}{Ps 119 (118), 133}"
communio = '\gradualverse{
Der Herr ist mein Hirte, nichts wird mir fehlen.
Er lässt mich lagern auf grünen Auen
und führt mich zum Ruheplatz am Wasser.
}{Ps 23 (22), 1--2}\par
\textit{oder}\par
\gradualverse{
Die Jünger erkannten den Herrn Jesus,
als er das Brot brach.
}{Vgl. Lk 24, 35}';
-%]
+26
View File
@@ -0,0 +1,26 @@
[% title = '33. Sonntag im Jahreskreis'
subtitle = ''
color = 'green'
lent = 0
introitus = '\gradualverse{
So spricht der Herr:
Ich sinne Gedanken des Friedens und nicht des Unheils.
Wenn ihr mich anruft, so werde ich euch erhören
und euch aus der Gefangenschaft von allen Orten zusammenführen
}{Vgl. Jer 29, 11.12.14}'
offertorium = "\\gradualverse{
Aus der Tiefe rufe ich, Herr zu dir:
Herr, höre meine Stime!
}{Ps 130 (129), 1--2}"
communio = '\gradualverse{
Gott nahe zu sein ist mein Glück.
Ich setze mein Vertrauen auf Gott, den Herrn.
}{Ps 73 (72), 28}\par
\textit{oder}\par
\gradualverse{
So spricht der Herr:
Amen, ich sage euch: Betet und bittet, um was ihr wollt,
glaubt nur, dass ihr es schon erhalten habt,
dann wird es euch zuteil.
}{Mk 11, 2324}';
-%]
+15
View File
@@ -0,0 +1,15 @@
[% title = 'Darstellung des Herrn'
subtitle = ''
color = 'white'
lent = 0
introitus = '\gradualverse{Wir haben dein Heil empfangen, o Gott, inmitten deines Tempels.
Wie dein Name, Gott, so reicht dein Ruhm bis an die Enden der Erde;
deine rechte Hand ist voll von Gerechtigkeit.
}{Vgl. Ps 48 (47), 1011}'
offertorium = '\gradualverse{
Anmut ist ausgegossen über deine Lippen, darum hat Gott dich für immer gesegnet.
}{Ps 45 (44), 2}'
communio = '\gradualverse{Meine Augen haben das Heil gesehen,
das du vor allen Völkern bereitet hast.
}{Lk 2, 3031}';
-%]
-1
View File
@@ -1 +0,0 @@
description : url
1 description : url
-15
View File
@@ -1,15 +0,0 @@
purpose : content : template : variables
: : :
introitus : : :
#confiteor : \input{library/gebete/confiteor/confiteor_de.tex} : :
kyrie : : :
gloria : : :
graduale : : :
tractus : : :
#credo : \input{library/gebete/credo/apostolisch_de.tex} : :
offertorium : : :
sanctus : : :
agnus : : :
communio : : :
#BMV : : :
: : :
1 purpose : content : template : variables
2 : : :
3 introitus : : :
4 #confiteor : \input{library/gebete/confiteor/confiteor_de.tex} : :
5 kyrie : : :
6 gloria : : :
7 graduale : : :
8 tractus : : :
9 #credo : \input{library/gebete/credo/apostolisch_de.tex} : :
10 offertorium : : :
11 sanctus : : :
12 agnus : : :
13 communio : : :
14 #BMV : : :
15 : : :
-54
View File
@@ -1,54 +0,0 @@
[% PROCESS purpose_processing.tt;
IF variables;
PROCESS "$variables";
END;
-%]
\song{[% purpose_print ? purpose_print : purpose %]}{[% song_title -%]}{
[% before_song -%]
\begin{samepage}
[% IF scores -%]
[% IF scores.gregorian AND (gregorian OR NOT scores.congregation) -%]
[% IF NOT gregorian -%]
\textbf{\LARGE{Activate gregorian}}
[% ELSE -%]
\gregorioscore{../library/[% scores.gregorian %]}
[% END -%]
[% ELSE -%]
\lilypondfile{[% IF parts;
IF parts == 'band';
IF scores.leadsheet;
GET "../library/${scores.leadsheet}";
ELSE;
GET "../library/${scores.SATB}";
END;
ELSIF parts == 'SATB';
IF scores.SATB;
GET "../library/${scores.SATB}";
ELSE;
GET "../library/${scores.leadsheet}";
END;
END;
ELSE;
GET "../library/${scores.congregation}";
END; %]}
[% END -%]
[% ELSIF lyrics -%]
[% lyrics %]
[% END -%]
[% IF credits -%]
\leavevmode\\*
[% FOREACH key = credits.keys -%]
\[% key %]{[% credits.$key %]}
[% END -%]
[% END -%]
\end{samepage}
[% content -%]
[% IF (meditation && meditations) || (parts && meditation) -%]
\leavevmode\par\smallskip
[% meditation %]
[% END -%]
[% IF after_song -%]
\leavevmode\par\smallskip
[% after_song %]
[% END -%]
}
-20
View File
@@ -1,20 +0,0 @@
[% PROCESS variables.tt -%]
[% parts = 0 -%]
[% INCLUDE header.tt -%]
\begin{document}
[% INCLUDE head.tt %]
[% USE song_choices = datafile('song_choices.csv') %]
[% FOREACH song = song_choices %]
[% template = song.template == '' ? "song_template.tt" : song.template -%]
[% INCLUDE "$template"
purpose = song.purpose
content = song.content
variables = song.variables ? "${song.variables}/assignments.tt" : ''
%]
[% END %]
[% INCLUDE footer.tt %]
\end{document}
+19
View File
@@ -0,0 +1,19 @@
tpage_defs = --define config_dir=$(config_dir) --define library_dir=$(library_dir) --define propers_dir=$(propers_dir)
tpage = tpage $(tpage_defs)
tex_deps = *.tt $(config_dir)/variables.tt $(dynamic_deps)
songsheet.tex: songsheet.tt $(tex_deps) header.tt head.tt footer.tt
$(tpage) $< > $(build_dir)/$@
full_scores.tex: musician_scores.tt $(tex_deps)
$(tpage) --define parts=full $< > $(build_dir)/$@
choir_scores.tex: musician_scores.tt $(tex_deps)
$(tpage) --define parts=SATB $< > $(build_dir)/$@
leadsheets.tex: musician_scores.tt $(tex_deps)
$(tpage) --define parts=band $< > $(build_dir)/$@
$(build_dir)/dynamic_deps.mk: dynamic_deps.mk.tt $(song_choices) $(user_variables)
$(tpage) $< > $@
violin_parts.tex: musician_scores.tt $(tex_deps)
$(tpage) --define parts=violin $< > $(build_dir)/$@
viola_parts.tex: musician_scores.tt $(tex_deps)
$(tpage) --define parts=viola $< > $(build_dir)/$@
cello_parts.tex: musician_scores.tt $(tex_deps)
$(tpage) --define parts=cello $< > $(build_dir)/$@
+11
View File
@@ -0,0 +1,11 @@
dynamic_deps = [% PROCESS variables.tt;
USE song_choices = datafile("${config_dir}/song_choices.csv", delim= '|');
FOREACH song = song_choices;
IF song.variables != '';
GET "${library_dir}/${song.variables}/* ";
END;
END;
IF proper != '';
GET "${propers_dir}/${proper}.tt";
END;
-%]
+3
View File
@@ -0,0 +1,3 @@
[% IF parts == '' -%]
\newpage\null\thispagestyle{empty}\newpage
[% END -%]
+1 -1
View File
@@ -1,6 +1,6 @@
\vspace*{\fill}
[% USE qr_codes = datafile('qr_codes.csv') %]
[% USE qr_codes = datafile("${config_dir}/qr_codes.csv", delim= '|') %]
[% FOREACH qr_code = qr_codes -%]
View File
+3 -4
View File
@@ -8,7 +8,7 @@
\usepackage{ifthen}
\usepackage[utf8]{inputenc}
\usepackage{ltxtable}
\usepackage{lyluatex}
\usepackage[pass-fonts]{lyluatex}
\usepackage{multirow}
\usepackage[ngerman]{selnolig}
\usepackage{svg}
@@ -79,8 +79,7 @@ BoldFont = *-Bold
\footnotesize Originaltitel: #1}}
\newcommand{\TM}[1]{{
\footnotesize T \& M: #1}}
\newcommand{\arrangement}[1]{{
\footnotesize S: #1}}
\newcommand{\arrangement}[1]{}
\newcommand{\lyrics}[1]{{
\footnotesize T: #1}}
\newcommand{\melody}[1]{{
@@ -99,7 +98,7 @@ BoldFont = *-Bold
\newcommand{\Outro}[1]{\par\textit{Outro} {#1}}
\newcommand{\St}[2]{\par\textit{{#1}.} {#2}}
\setluaoption{ly}{staffsize}{14}
%\setluaoption{ly}{staffsize}{14}
\setlength\parindent{0pt}
\setlength\parskip{2mm plus 1mm minus 1.5mm}
@@ -1,28 +1,44 @@
[% PROCESS variables.tt -%]
\documentclass[a4paper,12pt]{memoir}
\usepackage[margin=2cm]{geometry}
\usepackage[utf8]{inputenc}
[% PROCESS variables.tt;
IF proper != '';
PROCESS "${propers_dir}/${proper}.tt";
END;
-%]
\documentclass[a4paper,12pt]{article}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{svg}
\usepackage{wrapfig}
\usepackage{enumitem}
\usepackage{fontspec}
\usepackage[margin=2cm]{geometry}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{ifthen}
\usepackage[utf8]{inputenc}
\usepackage{ltxtable}
\usepackage[pass-fonts=true]{lyluatex}
\usepackage{multirow}
\usepackage{svg}
\usepackage[explicit]{titlesec}
\usepackage{wrapfig}
\usepackage{xcolor}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newcommand{\mytable}[1]{\LTXtable{\textwidth}{#1}}
\setmainfont[Numbers={OldStyle, Proportional},RawFeature={+ss06}]{EB Garamond}
\newcommand{\raisedrulefill}[2][0ex]{\leaders\hbox{\rule[#1]{1pt}{#2}}\hfill}
\setmainfont[
Path = ../fonts/EBGaramond12/fonts/ttf/,
Extension = .ttf,
UprightFont = *-Regular,
BoldFont = *-Bold,
ItalicFont = *-Italic,
BoldItalicFont = *-BoldItalic,
Numbers = {OldStyle, Proportional},
RawFeature = {+ss06}
]{EBGaramond}
%\titleformat{\subsection}{\normalfont\Large}{\thesubsection. }{0em}{#1}
\newcommand{\song}[3]{\ifthenelse{\equal{#1}{}}
{\subsection*{#2}\par{#3}\par}
{\subsection*{\textbf{#1} {#2}}\par{#3}\par}}
{\subsection*{\textit{#1} {#2}}\par{#3}\par}}
\newcommand{\gradualverse}[2]{#1\hfill\textit{#2}}
\newcommand{\ordinarium}[1]{\input{#1}}
\newcommand{\original}[1]{{
@@ -38,8 +54,6 @@
\newcommand{\translation}[1]{
Ü: #1}
\setmainfont[Numbers={OldStyle, Proportional},RawFeature={+ss06}]{EB Garamond}
\newcommand{\Chorus}[2][]{\ifthenelse{\equal {#1} {} }{\textit{Ref.} {#2}\par}{\textit{Ref. {#1}.} {#2}\par}}
\newcommand{\VA}[1]{\textit{V/A:} {#1}\par}
\newcommand{\V}[1]{\textit{V:} {#1}\par}
@@ -53,8 +67,6 @@
\setlength\parindent{0pt}
\setlength\parskip{2mm plus 1mm minus 1.5mm}
\setlist[itemize]{noitemsep}
\setlength{\droptitle}{-1.875cm}
\setlength{\droptitle}{-1.875cm}
[% IF gregorian -%]
\usepackage[autocompile]{gregoriotex}
@@ -63,23 +75,23 @@
\begin{document}
\section*{[% title %]}
\begin{centering}
[% subtitle %]
\end{centering}
\vfill
[% parts %]
[% USE song_choices = datafile('song_choices.csv') %]
[% USE song_choices = datafile("${config_dir}/song_choices.csv", delim= '|') %]
[% IF parts == 0 -%]
parts = ensemble
parts = ensemble
[% END -%]
[% FOREACH song = song_choices %]
\newpage
[% template = song.template == '' ? "song_template.tt" : song.template -%]
[% INCLUDE "$template"
purpose = song.purpose
title = song.title
content = song.content
variables = song.variables ? "${song.variables}/assignments.tt" : ''
%]
[% END %]
[% template = song.template == '' ? "song_template.tt" : song.template;
INCLUDE "$template"
purpose = song.purpose
assignments = song.assignments_directory ? "${library_dir}/${song.assignments_directory}/assignments.tt" : ''
directory = song.assignments_directory ? "${library_dir}/${song.assignments_directory}" : ''
overrides = song.overrides;
-%]
[% END; -%]
\end{document}
@@ -7,9 +7,13 @@
purpose_print = purpose_print ? purpose_print : 'Kyrie';
ELSIF purpose == 'gloria';
purpose_print = purpose_print ? purpose_print : 'Gloria';
ELSIF purpose == 'graduale';
ELSIF purpose == 'kehrvers';
purpose_print = 'Antwortpsalm-Kehrvers';
ELSIF purpose == 'graduale';
purpose_print = 'Graduale';
ELSIF purpose == 'tractus';
purpose_print = 'Traktus';
ELSIF purpose == 'ad_evangelium';
purpose_print = passion ? 'Ruf vor der Passion' : lent ? 'Ruf vor dem Evangelium' : 'Halleluja';
ELSIF purpose == 'credo';
purpose_print = 'Glaubensbekenntnis';
+89
View File
@@ -0,0 +1,89 @@
[% PROCESS purpose_processing.tt;
IF assignments;
PROCESS "$assignments";
END;
IF overrides != '';
"\[% $overrides %\]" | evaltt;
END;
-%]
\song{[% purpose_print ? purpose_print : purpose %]}{[% song_title -%]}{
[% before_song -%]
\begin{samepage}
[% IF scores;
IF scores.gregorian AND (gregorian OR NOT scores.congregation);
IF NOT gregorian;
GET '\\textbf{\\LARGE{Activate gregorian}}';
GET "\n";
ELSE;
GET "\\gresetgregpath{{${directory}/}}";
GET "\\gregorioscore{${scores.gregorian}}\n";
END;
ELSE;
IF parts;
GET '\lilypondfile{';
IF parts == 'band';
IF scores.band;
GET "${directory}/${scores.band}";
ELSIF scores.leadsheet;
GET "${directory}/${scores.leadsheet}";
ELSIF scores.full;
GET "${directory}/${scores.full}";
ELSE;
GET "${directory}/${scores.SATB}";
END;
ELSIF parts == 'full';
IF scores.full;
GET "${directory}/${scores.full}";
ELSIF scores.leadsheet;
GET "${directory}/${scores.leadsheet}";
ELSE;
GET "${directory}/${scores.SATB}";
END;
ELSIF parts == 'SATB';
IF scores.SATB;
GET "${directory}/${scores.SATB}";
ELSE;
GET "${directory}/${scores.leadsheet}";
END;
ELSE;
IF scores.${parts};
GET "${directory}/${scores.$parts}";
ELSE;
IF scores.full;
GET "${directory}/${scores.full}";
ELSIF scores.leadsheet;
GET "${directory}/${scores.leadsheet}";
ELSE;
GET "${directory}/${scores.SATB}";
END;
END;
END;
GET "}\n";
ELSE;
IF scores.congregation;
GET "\\lilypondfile{${directory}/${scores.congregation}}\n";
END;
END;
END;
ELSIF lyrics;
GET lyrics;
END; %]
[% IF credits -%]
\leavevmode\\*
[% FOREACH key = credits.keys;
# Workaround because PERL keeps resolving \\$ to $
s = "\\ ${key}{${credits.$key}}\n";
GET s.replace('(\W) ', '$1');
END; -%]
[% END -%]
\end{samepage}
[% content -%]
[% IF (meditation && meditations) || (parts && meditation) -%]
\leavevmode\par\smallskip
[% meditation %]
[% END -%]
[% IF after_song -%]
\leavevmode\par\smallskip
[% after_song %]
[% END -%]
}
+26
View File
@@ -0,0 +1,26 @@
[% PROCESS variables.tt;
IF proper != '';
PROCESS "${propers_dir}/${proper}.tt";
END;
-%]
[% parts = 0 -%]
[% INCLUDE header.tt -%]
\begin{document}
[% INCLUDE head.tt %]
[% USE song_choices = datafile("${config_dir}/song_choices.csv", delim= '|') %]
[%
FOREACH song = song_choices;
template = song.template == '' ? "song_template.tt" : song.template;
INCLUDE "$template"
purpose = song.purpose
assignments = song.assignments_directory ? "${library_dir}/${song.assignments_directory}/assignments.tt" : ''
directory = song.assignments_directory ? "${library_dir}/${song.assignments_directory}" : ''
overrides = song.overrides;
END;
-%]
[% INCLUDE footer.tt %]
\end{document}
+3 -3
View File
@@ -1,6 +1,6 @@
[% DEFAULT
color = 'blue'
title = 'Sonntag'
color = 'white'
title = 'Hl. Messe'
subtitle = ''
credo = 'library/gebete/credo/apostolisch_de.tex'
gregorian = 0
@@ -9,4 +9,4 @@
lent = 0
meditations = 0
-%]
[%# PROCESS propers/per_annum_XIII.tt -%]
[% PROCESS "${config_dir}/variables.tt" -%]