Build Status of openLilyLib
on Travis:
A place to store and collaborate on LilyPond tools - snippets, templates, extensions. Why we don't just put this stuff in Lilypond Snippet Repository? There are two reasons:
- Some things cannot be placed in LSR (multi-file extensions, special scripts).
- LSR doesn't have tools for collaboration and version control.
[EDIT: Currently openLilyLib
is undergoing a fundamental reorganization.
The below README contents is about the current implementation as a
collection of arbitrary snippets.
The new structure as a collection of targeted libraries can be found inside
the ly
directory.]
- custom-music-fonts - alternative fonts for LilyPond, that can be used instead of default Feta.
- debugging-layout - tools that visualize LilyPond's layout decisions (e.g. directions),
- general-tools - stuff for working on and with LilyPond itself.
- input-shorthands - music functions and other tools that make writing LilyPond code easier,
- notation-snippets - LilyPond code that produces some particular notation,
- simple-examples - snippets that are just explaining or demonstrating things from the documentation,
- specific-solutions - hacks that aren't generic, just solve a very specific problem,
- stylesheets - a place for collections of user-designed layout settings ("house styles"),
- templates - examples showing how to structure LilyPond code.
Every category has a README.md
file inside with more details,
but if you're not sure which category to choose, don't worry!
It's not that important.
You can view the files in your browser by clicking on their names, and simply copy&paste the code into your editor. You can also download the whole repository in a ZIP archive. This is recommended for casual use. For regular users, we recommend using Git to clone the whole repository to your computer. If you need help with Git, contact us.
Most snippets are divided into an .ily
file with function definitions and a .ly
file showing a usage example. To use the functions provided by the snippet,
simply \include
the .ily
file into your score.
You can make the root directory of the repository available to LilyPond,
e.g. by using the -I
or --include=
command line option (or, if you use
Frescobaldi, add the path in LilyPond preferences).
Then you will be able to \include
the snippets with a path relative to
the repository root directory - for example,
\include "debugging-layout/display-grob-anchors/definitions.ily"
will allow you to use \printAnchors
function defined in the snippet.
Frescobaldi also supports autocompletion if you have added the repository
in the preferences. So typing \include "debu
will already give you the
appropriate completion suggestion.
Everything that's useful and isn't totally obvious (rule of thumb: anything over 20 lines of code is probably worth including). You can even contribute work in progress and update it later.
The easiest way to contribute is using GitHub's web interface.
- Create an account on GitHub, log into it.
- Go to this repository's GitHub page.
- To add a new file, click on [this button] (http://raw.github.com/openlilylib/snippets/master/meta/adding-new-file-github-interface.png). To modify a file, click its name and then click Edit.
- Write what you have changed (form at the bottom) and click Commit.
- Don't forget to click Send pull request. (more info...)
Using more powerful tools for contributing is described here.
Note: detailed guidelines are in [meta/contributing.md
]
(meta/contributing.md)(optional reading).
- Your snippet must compile (even if it's work-in-progress)
and it must contain a
\version
statement. - Please use a template from [
meta/snippet-templates
] (meta/snippet-templates) as your starting point:- simple snippets that just demonstrate built-in LilyPond features should use the one-file template.
- snippets defining custom commands, functions, engravers etc. that can be useful on their own should use the "includable" template.
- If possible, please format your code using Frescobaldi's Format tool.
- When you make changes in your snippets, please contribute updates to the repository! :-)
Have trouble contributing? Let us know!
[email protected]
[email protected]