Changes

Jump to navigation Jump to search
1,206 bytes added ,  18:21, 25 January 2021
adapt to current working setup
< [[Graphics]] | [[Using Graphics]] >
[http://lilypond.org LilyPond] is a great music engraver, and you can include LilyPond in ConTeXt source using [[moduleshttps://github.com/adityam/filter|the filter module]] with some setup.This is different from using the lilypond-book preprocessor with LaTeX. (For LaTeX there’s also a package that works similar to our ConTeXt setup here: [https://github.com/jperon/lyluatex lyluatex].)
== Simple Filter Setup ==
directory=lilytemp/, % directory for LilyPond's files
output={\externalfilterbasefile.pdf},
filtercommand={lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts -ddelete-intermediate-files -o"lilytemp/\externalfilterbasefile" "\externalfilterinputfile"}]
</texcode>
directory=\LILYTEMP/,
output={\externalfilterbasefile.pdf},
filtercommand={lilypond -dbackend=eps -dincludeddelete-epsintermediate-fonts -dno-gs-load-fonts files -o"\LILYTEMP/\externalfilterbasefile/" "\externalfilterinputfile"},]
</texcode>
You can avoid this \include line following [http://modules.contextgarden.net/dl/t-filter/doc/context/third/filter/filter.txt filter module documentation], section "Prepend and append text".
In short: you can inline your complete LilyPond settings or at least the include line:
 
<texcode>
\startbuffer[lilypond::settings]
\include "mysettings.ly"
\stopbuffer
 
\defineexternalfilter[lilypond][
...
bufferbefore={lilypond::settings},
...]
</texcode>
=== Sample Include File ===
<texcode>
\version "2.1618.02"
#(ly:set-option (quote no-point-and-click))
#(set-global-staff-size 14)
\override PaperColumn #'keep-inside-line = ##t
}
% some example settings
\context { \Staff
\override TimeSignature #'style = #'numbered
</texcode>
Please look up the meaning of settings in [http://lilypond.org/doc/v2.22/Documentation/web/manuals LilyPond’s great documentation]!
Unfortunately it’s not possible If you’d like to exchange measures like text width between ConTeXt and LilyPond , you could write those into the LilyPond buffer (at least I’ve no idea howsee below). To give LilyPond measures to ConTeXt, so you must define sizes manuallywould need to write them into a temp file (using Scheme) and read that in again (using Lua). And For the time being this is left as an exercise to the user. ;) Unfortunately you can’t define LilyPond’s text (lyrics) size with an absolute value, but only relative to staff size...
== Named Buffers ==
Normally, your LilyPond snippets just get a running number. If you re-order your scores, each one gets re-rendered.
You might want can avoid that if you name your LilyPond snippets: just add <tt>[name=myfunnyname]</tt> to add {{cmd|startlilypond}}. If you have just one LilyPond part per component (e.g. songs in a songbook), you could use <tt>[name=\currentcomponent]</tt> . == Automatical width adaption == If you want to set your note line width automatically to your current text width, try this:  -- this goes after "create temp folder" io.savedata(or name"\LILYTEMP/texsettings.ly", "\\paper { line-width =mymusic" .. string.gsub(number.todimen(tex.dimen.textwidth) to ,"pt","\\pt") .. " } \n") and then adapt your snippets or preamble buffer:<cmdtexcode>startlilypond\include "../mysettings.ly"\include "texsettings.ly"</cmdtexcode> to avoid unnecessary re You must comment/delete the "line-renderingwidth" setting in mysettings.ly, otherwise it doesn’t work.
== Example ==
== Too many open files ==
With bigger projects and the above setup you might run into "too many open files" errors, at least in older Linux, OSX and other Unix-like OSes.
Ask your shell about the open files maximum and set it higher:
$ ulimit -n
256
$ ulimit -S -n 2048 == Deprecation == The old LilyPond module (t-lilypond) doesn't work any more with recent versions of ConTeXt, therefore we removed its documentation here.
[[Category:Modules]]

Navigation menu