openbook project by Mark Veltzer
September 1, 2026 · View on GitHub
description: OpenBook is an open source Jazz real book
project website: https://veltzer.github.io/openbook
author: Mark Veltzer
version: 0.0.1
github
build
What is OpenBook?
OpenBook is a Jazz real book constructed with free software. A real book simply means a big book with lots of Jazz tunes or standards as they are more widely known.
Where is the project's website?
https://veltzer.github.io/openbook
Why did you start this?
Because of many reasons:
- I wanted to learn Jazz, and a good way to do that is to write down the tunes (amongst many other things).
- I wanted beautiful sheet music that I could fiddle with.
- I did not want to pay for the overly expensive real or fake books out there.
- I believe in free software and wanted free (in the sense of freedom) sheet music.
- Jazz is a prime example of a free type of art, so it's conjunction with free software seems a match made in heaven.
- Jazz musicians may need beautiful electronic Real books because electronic books are starting to be used by Jazz musicians both for practice and for performance.
What tools are used?
- lilypond: the music engraver, this is the main tool we use
- rsconstruct: the build system (templating, dependency tracking, linting)
- uv: manages the python environment
- python3: for the helper scripts
What python modules are used?
- requests
What is produced?
Beautiful and lightweight postscript and PDF real books with Jazz tunes. The idea is that the end user can control the final output and decide if he/she wants lyrics, size of paper, transposition for a trumpet, selection of tunes and more. In addition, you can produce midi, mp3 and ogg outputs. Possibly other output formats will be supported in the future (epub?).
What is the copyright?
All the stuff in this project is GPL version 3. The tunes themselves have their own copyright holders.
Who can contribute?
Anyone.
What system do I need to participate?
A Linux system that you can install software on. Mac OSX is reported to work too if you know how to install the right stuff on it. Windows is not currently supported although well-formed patches will be accepted. (disclaimer: the author hates Windows with a vengence so patches have to be spotless to be accepted)
What do I need to know to participate?
- Some rudimentary Linux system administration (in order to install the software needed for this project to build).
- Some basic git software content tracking (in order to fetch the project, modify and submit patches).
- The lilypond language (in order to edit or add tunes).
- Some music knowledge would also help...:)
Who currently contributes?
Look at the CREDITS file
Your name could be here if you contribute...
Where can I see some results?
Check out the PDFs and other outputs in https://veltzer.github.io/openbook.
Why is there so little documentation?
I just started this project (4 years all in all -> that's not true: it's 12 years in the making). Feel free to add stuff and request a pull. Contributing may make you an admin...
How do you write the standards?
Using lilypond. Check it out at http://www.lilypond.org/.
Will you co-operate with the lilypond, mutopia and wikifonia communities?
YES! Any bugs or feature suggestion are submitted to the lilypond community. Any requests for pieces from the mutopia community will be respected. Wikifonia uses musicXML for typesetting while I use an essentially lilypond format as input format - so there could not be much co-operation there.
Do you only allow Jazz tunes?
No. Rock and Pop will be welcome and so would classical. If you are really into classical lilypond production, you may alternativly wish to contribute to the mutopia project at http://www.mutopiaproject.org/.
How do I build the pdfs?
- you need tools installed. on Ubuntu
$ sudo apt install lilypond - you need the rsconstruct build tool on your PATH.
- clone the repository
$ git clone https://github.com/veltzer/openbook.git - cd into the newly created folder
$ cd openbook - install the python environment with uv
$ uv sync - activate the virutal env
$ source .venv/bin/activate - run the build process
$ rsconstruct build - the pdfs should now be built, and you will find them in the 'out/tera/books' folder.
- if you want to build all the tunes individually then run
$ rsconstruct build --iset generator.songs_pdf.enabled=true --iset generator.songs_midi.enabled=true(after a plain build has rendered the songs).
MacOS user notes
How do I contribute?
- create an account on github.
- hack on the .ly.tera files (git add the files that you hack on).
- commit to your own hard drive repository (git commit).
- push to git hub (git push).
- send me a pull request (button in the github ui).
Can I just add a single tune?
Yes. To add a tune named [tunename] just add single file named
src/openbook/[tunename].ly.tera
The extension is .tera since I use "tera" for templating: the file carries the tune's metadata as TOML front matter followed by sections. Just copy them from some other tune. One section for chords, another for lyrics, another for the melody etc. The build picks the new tune up by itself — no other file needs editing. After working on the tune build just that single tune by issueing:
rsconstruct build --iset generator.songs_pdf.enabled=true -t "*[tunename]*"
or with --iset generator.songs_midi.enabled=true for the midi.
Can I just build a single tune?
Sure. Just use:
rsconstruct build --iset generator.songs_pdf.enabled=true -t "*[tunename]*"
to build the pdf
rsconstruct build --iset generator.songs_midi.enabled=true -t "*[tunename]*"
to build the midi (a plain rsconstruct build must have rendered the songs first).
What about MusicXML?
Sorry, this project is lilypond based. Patches for MusicXML will be welcome, but I don't see how they will fit into this project.
Can I send corrections to the tunes without learning lilypond and all the rest of the stuff?
Yes. Just send them as regular text via my email below.
Where can I get more documentation about this project?
Look in the doc subfolder of the source code...
How can I get a version of this book in a key other than C?
Just edit the TONALITY_PITCH / TONALITY_NAME constants in scripts/drivers.py
(e.g. "bes" / "B♭") and rebuild.
How do I download the external pdfs to compare them to this project?
Just run:
rsconstruct build --iset explicit.real_books.enabled=true
and look at the resulting real_books_archive.gi folder that is created.
contact me
Mark Veltzer, Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026