This repository contains the Unilaiva Songbook sources and the project-specific files needed to build the published books with ULSBS (Unilaiva Songbook System).
- Unilaiva Songbook
Important
On 2026-04-13 this repository changed in two important ways:
- the primary branch is now
maininstead ofmaster - ULSBS was split into its own repository and is now included here as the
ulsbs/git submodule
Split-related commits in this repository:
0cfc3bd— Remove embedded ulsbs after repository splita626fcd— Add ulsbs as submodule33acbfb— Use HTTPS URL for ulsbs submodule9dfec62— Add update-repository script to update repo and submodules
If you cloned this repository before these changes, first make sure you do not
have uncommitted work. Old clones may still be configured to fetch only the
removed master branch, so fetch main explicitly and update the local branch
tracking like this:
git remote set-branches origin '*'
git fetch origin main:refs/remotes/origin/main
git branch -m master main 2>/dev/null || true
git branch --set-upstream-to=origin/main main
git remote set-head origin -a
git pull --rebase
git submodule sync --recursive
git submodule update --init --recursiveIf Git refuses to create the submodule because ulsbs/ already exists as a
normal directory in your old clone, move that directory away or remove it
first, then run the last two submodule commands again. After the migration,
normal updates can be done with:
./update-repositoryClone the repository together with the ULSBS submodule:
git clone --depth 1 --recurse-submodules https://github.com/unilaiva/unilaiva-songbook.git
cd unilaiva-songbook
./ulsbs-compileIf you already cloned without submodules, run:
git submodule update --init --recursiveThe default build compiles all configured books in this repository.
The recommended way to build this repository is the default container mode. That means you mainly need:
gitpython33.11+- Docker or Podman
Install the basic tools and Docker, then clone and build:
sudo apt update
sudo apt install docker.io git python3
sudo usermod -aG docker "$USER"
newgrp docker
git clone --depth 1 --recurse-submodules https://github.com/unilaiva/unilaiva-songbook.git
cd unilaiva-songbook
./ulsbs-compileIf you prefer Podman, install podman instead of docker.io.
- Install Docker Desktop: https://docs.docker.com/desktop/setup/install/mac-install/
- Install Python 3.11+ from https://www.python.org/downloads/macos/
- If
gitis missing, install Xcode Command Line Tools with:
xcode-select --installStart Docker Desktop once, then clone and build:
git clone --depth 1 --recurse-submodules https://github.com/unilaiva/unilaiva-songbook.git
cd unilaiva-songbook
./ulsbs-compileUse WSL2 with Ubuntu. Keeping the repository inside the Linux home directory is recommended for symlink support and better performance.
- In PowerShell, install WSL2:
wsl --install -d Ubuntu- Install Docker Desktop for Windows and enable WSL integration for the Ubuntu distro: https://docs.docker.com/desktop/setup/install/windows-install/
- Open the Ubuntu shell and run:
sudo apt update
sudo apt install git python3
cd ~
git clone --depth 1 --recurse-submodules https://github.com/unilaiva/unilaiva-songbook.git
cd unilaiva-songbook
./ulsbs-compileOptional: to copy final outputs directly to your Windows home directory, use for example:
./ulsbs-compile --deploy-dir "/mnt/c/Users/<USERNAME>/unilaiva-result"Useful commands:
- Build everything configured in
ulsbs-config.toml:./ulsbs-compile
- Build only the main Unilaiva books:
./ulsbs-compile --profile main
- Build only Astral books:
./ulsbs-compile --profile astral
- Build one document only:
./ulsbs-compile unilaiva-songbook_A5.tex
- Fast local dev build:
./ulsbs-compile --quick unilaiva-songbook_A5.tex
For containerless builds, full toolchain requirements, CLI options, and generic ULSBS usage outside this repository, see ulsbs/README.md.
To later update the repository, run in the project's root:
./update-repository
Top-level files and directories you are most likely to need:
unilaiva-songbook_A5.tex- main full Unilaiva book
unilaiva-songbook_part1_A5.tex,unilaiva-songbook_part2_A5.tex- split versions of the main book
unilaiva-astral-*.tex- Astral books
ul-selection_new-songs_A5.tex- an example/custom selection book in active use
content/- songs, explanations, and other included content
include/- shared includes, class files, and selection helpers
assets/- deployment metadata and other project assets
- songbook metadata format (used for creating websites for the songbooks) documentation in assets/README.md
ulsbs-config.toml- repository-specific build configuration and profiles
ulsbs/- the ULSBS engine as a git submodule
workspace/- scratch material and helper files for editing/transcribing
For the actual songbook syntax and ULSBS-specific markup, see ulsbs/README.md.
Repository-specific pointers:
- Most song texts live in
content/songs_*.tex. - Non-song prose sections also live in
content/. - Main books in the project root select and arrange content chapters.
- Project-specific class defaults live in:
include/ulsbs-songbook-unilaiva-default.clsinclude/ulsbs-songbook-astral-default.cls
- Available tags are listed in
include/tags.can. - Example selection setup is in
include/ul-selection_example.tex.
If you use VS Code, the bundled extension
ulsbs-tex-tools
provides helpful editing support for ULSBS LaTeX files.
Compiled files are written under result/. Depending on configuration and
available tools, the build may also produce:
- lyrics-only variants
- extra instrument variants
- JSON exports
- MIDI files
- MP3 audio
- cover PNGs
- printout PDFs for home printing
If deployment is enabled, files are also copied under deploy/.
The main books are intended primarily for A5 printing (148 mm × 210 mm).
In the simplest case, print the main document, unilaiva-songbook_A5.pdf, on
A5 paper, and make sure A5 is selected in the printing software. Otherwise the
pages may be scaled up or printed with overly wide margins.
For double-sided printing, make sure the pages are oriented so that odd pages appear on the right-hand side (recto) and even pages on the left-hand side (verso) of each spread. This minimizes page-turning within a song, because all songs that span at least two pages begin on an even page. The margins, page number positions, and similar layout details are also optimized for this order.
If possible, set margins to zero both in the printing software and in the
printer driver settings. On Linux and macOS, the lp program is recommended
for printing without extra margins. For example:
lp -o PageSize=A4 printout-BOOKLET_unilaiva-songbook_A5-on-A4-doublesided-needs-cutting.pdf
Do not use a fit-to-page option, which some GUI printing programs may enable
by default.
The build also generates additional printout PDFs for printing A5 pages on A4 sheets. These are often the easiest files to use for home printing.
For the main songbook (the default variant), the most relevant outputs are usually:
result/unilaiva-songbook_A5.pdfresult/printouts/printout-EASY_unilaiva-songbook_A5-on-A4-sidebyside-simple.pdfresult/printouts/printout-BOOKLET_unilaiva-songbook_A5-on-A4-doublesided-needs-cutting.pdf
To print double-sided on a printer without a duplexer, first print the odd
pages, then flip and re-feed the paper, and finally print the even pages. For
the main document, unilaiva-songbook_A5.pdf, the pages must be flipped on the
long edge. For the other files named printout-*unilaiva-songbook*.pdf, which
place multiple pages on each A4 sheet, the pages should be flipped on the short
edge.
To flip pages on the short edge manually, place the printed stack in front of you upside down, with the printed side hidden. Then create a new stack by moving each sheet one by one from the top of the old stack to the top of the new stack, without rotating or turning the sheets in any way. Feed the new stack into the printer, taking care to insert it in the correct orientation.
If your printing software is limited, you can for example use pdftk to
extract odd and even pages:
pdftk unilaiva-songbook_A5.pdf cat 1-endodd output unilaiva-songbook_odd.pdfpdftk unilaiva-songbook_A5.pdf cat 1-endeven output unilaiva-songbook_even.pdf
This procedure prints the entire book on A4 paper with a printer that supports single-sided printing only. Flipping pages, cutting, and binding are all done by hand. The final result is a book of double-sided A5 pages, which is the preferred format.
./ulsbs-compilepdftk result/printouts/printout-BOOKLET_unilaiva-songbook_A5-on-A4-doublesided-needs-cutting.pdf cat 1-endodd output unilaiva-songbook_odd.pdfpdftk result/printouts/printout-BOOKLET_unilaiva-songbook_A5-on-A4-doublesided-needs-cutting.pdf cat 1-endeven output unilaiva-songbook_even.pdflp -o PageSize=A4 unilaiva-songbook_odd.pdf- Flip the pages manually on the short edge and feed them back into the printer.
lp -o PageSize=A4 unilaiva-songbook_even.pdf- Cut the A4 pages in half to make A5 pages, and arrange them in the correct order.
- Punch holes and bind the book.
If your clone predates the 2026-04-13 branch/submodule migration, follow the steps in Repository change notice (2026-04-13) once first.
To update both this repository and the ULSBS submodule:
./update-repositoryMost technical documentation now lives in the submodule README:
That README covers:
- how ULSBS works
- how to use ULSBS in another songbook repository or local directory
- compilation options and configuration
- songbook syntax
- Lilypond integration
- helper tools such as
ulsbs-ly2texandulsbs-bookmeta - editor support
ULSBS is still under active development. This repository is kept in sync with current ULSBS behavior, but external songbook projects using ULSBS should be prepared to adjust their sources when upgrading until a stable 1.0 release is made.
Unless otherwise noted, the editorial material in these songbooks — including musical transcriptions, chord charts, arrangements, engraving, and typesetting — is licensed under the Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).
Many songs included in this collection are traditional folk songs and are believed to be in the public domain. When known, the source or author of each song is indicated.
Some songs may still be protected by copyright. Such material is included either with permission or in good faith for educational and community use.
The Creative Commons license applies only to the editorial contributions made in this edition and does not affect the copyright status of the underlying songs where such rights exist.
Every effort has been made to identify and credit rights holders where possible. If you believe that any material in this book infringes copyright, please contact the editors so that the matter can be reviewed and the material corrected or removed if necessary.
These songbooks were produced using the Unilaiva Songbook System (ULSBS), which is free software licensed under the GNU General Public License version 3 or later (GPL 3.0+).