LilyPond
< Graphics | Using Graphics >
LilyPond is a great music engraver, and you can include LilyPond in ConTeXt source using the lilypond module.
Setup
- First you need a working LilyPond installation plus dependencies like GhostScript.
- Include the lilypond module
\usemodule[lilypond]
- If you want, you can change the default settings using \setuplilypond
Snippets
There are some notes \lilypond{ \relative{bes a c b} } embedded in this line.
Sections
E.g. for a songbook you want to place big chunks of LilyPond output (i.e. note staffs) in your text. It behaves like any other graphics, especially similar to embedded MetaPost code:
\section{A Tune} \startlilypond \relative { \repeat volta 2 { \partial 4 e4 | a2 c4 d | e2 f4 e | d2. c4 | b4. c8 d4 e | a,2 c4 d | e2 f4 e | g,2 a | \partial 2. b2. | } \repeat volta 2 { \partial 4 r4 | f' g f d | e f e c | a b c d | e2. e4 | f g f8 e d4 | e f e c | a c b8 a g4 | } \alternative { { \partial 2. g2. } { \partial 2. a2. } } } \stoplilypond There's nothing to say about this tune yet; my friend heard it from Lúnasa.
Developer's Corner
For information how the integration works, please check the module code and its pdf version (both available from [1]). Unlike lilypond-book for LaTeX, the module does not use a precompiling step and thus can react to local width changes and the like, even if the lilypond code is stored in a buffer.
Things that have not been implemented yet include:
- set the text font (default should be ConTeXt's bodyfont instead of LilyPond's)
- make lilypond call back on ConTeXt for included TeX (cf. [2])
- get information from lilypond about the baseline, for run-in music fragments
- tell lilypond how much space is left on the first page
- check and probably work on proper multi-page music
LilyPond uses fontconfig for font search. At least on MacOS X it's very restricted what kind of fonts it can use - only single-style TrueType (including dfont). I didn't manage yet to use fonts from the TeX tree. (That doesn't seem to be fontconfig's fault - it writes appropriate font cache files everywhere.)
To remember:
- see LilyPond Docs!
- How do we handle version/syntax changes of LilyPond?
--Hraban 2005-08-20, lots of changes by Christopher Creutzig 2005-09-21
Workarounds
Calling lilypond from command line in Windows fails. (Seems like a bug in lilypond.)
You have two options:
- modify the module, so that lilypond is called with the whole path (
C:/prog/lilypond/usr/bin/lilypond
for example instead oflilypond
alone). - place a
lilypond.bat
somewhere in your search path, calling
c:/prog/lilypond/usr/bin/lilypond %1 %2 %3 %4 %5 %6 %7 %8 %9