1@c -*- coding: utf-8; mode: texinfo; -*-
2
3@ignore
4    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
5
6    When revising a translation, copy the HEAD committish of the
7    version that you are working on.  For details, see the Contributors'
8    Guide, node Updating translation committishes..
9@end ignore
10
11@c \version "2.19.21"
12
13@node External programs
14@chapter External programs
15
16LilyPond can interact with other programs in various ways.
17
18@menu
19* Point and click::
20* Text editor support::
21* Converting from other formats::
22* LilyPond output in other programs::
23* Independent includes::
24@end menu
25
26
27@node Point and click
28@section Point and click
29
30@cindex point and click
31
32Point and click lets you find notes in the input by clicking on them
33in the PDF viewer.  This makes it easier to find input that causes some
34error in the sheet music.
35
36@menu
37* Configuring the system for point and click::
38* Enabling point and click::
39* Selective point-and-click::
40@end menu
41
42
43@node Configuring the system for point and click
44@subsection Configuring the system
45
46When this functionality is active, LilyPond adds hyperlinks to PDF and
47SVG files.  These hyperlinks are sent to a @q{URI helper} or a
48web-browser, which opens a text-editor with the cursor in the right
49place.
50
51To make this chain work, you should configure your PDF viewer to
52follow hyperlinks using the @file{lilypond-invoke-editor} script
53supplied with LilyPond.
54
55The program @file{lilypond-invoke-editor} is a small helper
56program.  It will invoke an editor for the special @code{textedit}
57URIs, and run a web browser for others.  It looks up the environment
58variables @code{EDITOR} and @code{LYEDITOR} to find out and launch the
59favorite editor to use.  @code{LYEDITOR} will have priority over
60@code{EDITOR}, so we recommend using the former especially if you want
61to use one editor in the terminal and another editor for LilyPond point
62and click.
63
64Every editor may have a different syntax to open a file in a specific line
65and column.  For user's convenience, LilyPond comes with ready commands
66for several editors, listed in @file{scm/editor.scm}.  This means that
67you can simply write the editor binary name, e.g.:
68
69@example
70export LYEDITOR=atom
71@end example
72
73@noindent
74and this will invoke
75@example
76atom %(file)s:%(line)s:%(column)s
77@end example
78
79where @code{%(file)s}, @code{%(line)s} and @code{%(column)s} are replaced with
80the file, line and column respectively.
81
82In order to use an editor not listed in @file{scm/editor.scm}, you should
83find its specific syntax and assign the full command to @code{LYEDITOR}.
84Here's an example for Visual Studio Code editor:
85
86@example
87export LYEDITOR="code --goto %(file)s:%(line)s:%(column)s"
88@end example
89
90@warning{If you choose Emacs, an extra configuration is needed.  You should
91add the line @code{(server-start)} to your @file{~/.emacs} file, otherwise
92every click on an object in the PDF will open a new Emacs window.}
93
94@menu
95* Using Xpdf for point and click::
96* Using GNOME 2 for point and click::
97* Using GNOME 3 for point and click::
98* Extra configuration for Evince::
99@end menu
100
101
102@node Using Xpdf for point and click
103@unnumberedsubsubsec Using Xpdf
104
105@cindex Xpdf
106
107For Xpdf on UNIX, the following should be present in
108@file{xpdfrc}.  On UNIX, this file is found either in
109@file{/etc/xpdfrc} or as @file{$HOME/.xpdfrc}.
110
111@example
112urlCommand     "lilypond-invoke-editor %s"
113@end example
114
115If you are using Ubuntu, it is likely that the version of Xpdf
116installed with your system crashes on every PDF file: this state
117has been persisting for several years and is due to library
118mismatches.  Your best bet is to install a current @samp{xpdf}
119package and the corresponding @samp{libpoppler} package from
120Debian instead.  Once you have tested that this works, you might
121want to use
122
123@example
124sudo apt-mark hold xpdf
125@end example
126
127@noindent
128in order to keep Ubuntu from overwriting it with the next
129@q{update} of its crashing package.
130
131
132@node Using GNOME 2 for point and click
133@unnumberedsubsubsec Using GNOME 2
134
135For using GNOME 2 (and PDF viewers integrated with it), the magic
136invocation for telling the system about the @samp{textedit:} URI
137is;
138
139@smallexample
140gconftool-2 -t string -s /desktop/gnome/url-handlers/textedit/command "lilypond-invoke-editor %s"
141gconftool-2 -s /desktop/gnome/url-handlers/textedit/needs_terminal false -t bool
142gconftool-2 -t bool -s /desktop/gnome/url-handlers/textedit/enabled true
143@end smallexample
144
145After that invocation;
146
147@example
148gnome-open textedit:///etc/issue:1:0:0
149@end example
150
151@noindent
152should call @file{lilypond-invoke-editor} for opening files.
153
154
155@node Using GNOME 3 for point and click
156@unnumberedsubsubsec Using GNOME 3
157
158In GNOME 3, URIs are handled by the @q{gvfs} layer rather than by
159@q{gconf}.  Create a file in a local directory such as @file{/tmp}
160that is called @file{lilypond-invoke-editor.desktop} and has the
161contents;
162
163@example
164[Desktop Entry]
165Version=1.0
166Name=lilypond-invoke-editor
167GenericName=Textedit URI handler
168Comment=URI handler for textedit:
169Exec=lilypond-invoke-editor %u
170Terminal=false
171Type=Application
172MimeType=x-scheme-handler/textedit;
173Categories=Editor
174NoDisplay=true
175@end example
176and then execute the commands
177@example
178xdg-desktop-menu install ./lilypond-invoke-editor.desktop
179xdg-mime default lilypond-invoke-editor.desktop x-scheme-handler/textedit
180@end example
181
182After that invocation;
183
184@example
185gnome-open textedit:///etc/issue:1:0:0
186@end example
187@noindent
188should call @file{lilypond-invoke-editor} for opening files.
189
190
191@node Extra configuration for Evince
192@unnumberedsubsubsec Extra configuration for Evince
193
194@cindex Evince
195
196If @code{gnome-open} works, but Evince still refuses to open point
197and click links due to denied permissions, you might need to
198change the Apparmor profile of Evince which controls the kind of
199actions Evince is allowed to perform.
200
201For Ubuntu, the process is to edit the file
202@file{/etc/apparmor.d/local/usr.bin.evince} and append the
203following lines:
204
205@example
206# For Textedit links
207/usr/local/bin/lilypond-invoke-editor Cx -> sanitized_helper,
208@end example
209@noindent
210
211After adding these lines, call
212
213@example
214sudo apparmor_parser -r -T -W /etc/apparmor.d/usr.bin.evince
215@end example
216
217@noindent
218Now Evince should be able to open point and click links.  It is
219likely that similar configurations will work for other viewers.
220
221
222@node Enabling point and click
223@unnumberedsubsec Enabling point and click
224@cindex file size, output
225
226Point and click functionality is enabled by default when creating
227PDF or SVG files.
228
229The point and click links enlarge the output files significantly.  For
230reducing the size of these (and PS) files, point and click may
231be switched off by issuing
232
233@example
234\pointAndClickOff
235@end example
236
237@noindent
238in a @file{.ly} file.  Point and click may be explicitly enabled with
239
240@example
241\pointAndClickOn
242@end example
243
244Alternately, you may disable point and click with a command-line
245option:
246
247@example
248lilypond -dno-point-and-click file.ly
249@end example
250
251@warning{You should always turn off point and click in any LilyPond
252files to be distributed to avoid including path information about
253your computer in the PDF file, which can pose a security risk.}
254
255
256@node Selective point-and-click
257@unnumberedsubsec Selective point-and-click
258
259For some interactive applications, it may be desirable to only
260include certain point-and-click items.  For example, if somebody
261wanted to create an application which played audio or video
262starting from a particular note, it would be awkward if clicking
263on the note produced the point-and-click location for an
264accidental or slur which occurred over that note.
265
266This may be controlled by indicating which events to include:
267
268@itemize
269@item
270Hard-coded in the @file{.ly} file:
271
272@example
273\pointAndClickTypes #'note-event
274\relative @{
275  c'2\f( f)
276@}
277@end example
278
279or
280
281@example
282#(ly:set-option 'point-and-click 'note-event)
283\relative @{
284  c'2\f( f)
285@}
286@end example
287
288@item
289Command-line:
290
291@example
292lilypond -dpoint-and-click=note-event   example.ly
293@end example
294
295@end itemize
296
297Multiple events can be included:
298
299@itemize
300@item
301Hard-coded in the @file{.ly} file:
302
303@example
304\pointAndClickTypes #'(note-event dynamic-event)
305\relative @{
306  c'2\f( f)
307@}
308@end example
309
310or
311
312@example
313#(ly:set-option 'point-and-click '(note-event dynamic-event))
314\relative @{
315  c'2\f( f)
316@}
317@end example
318
319@item
320Command-line:
321
322@smallexample
323lilypond \
324  -e"(ly:set-option 'point-and-click '(note-event dynamic-event))" \
325  example.ly
326@end smallexample
327
328@end itemize
329
330
331@node Text editor support
332@section Text editor support
333
334@cindex editors
335@cindex vim
336@cindex emacs
337@cindex modes, editor
338@cindex syntax coloring
339@cindex coloring, syntax
340
341There is support for different text editors for LilyPond.
342
343@menu
344* Emacs mode::
345* Vim mode::
346* Other editors::
347@end menu
348
349
350@node Emacs mode
351@unnumberedsubsec Emacs mode
352
353Emacs has a @file{lilypond-mode}, which provides keyword
354autocompletion, indentation, LilyPond specific parenthesis matching
355and syntax coloring, handy compile short-cuts and reading LilyPond
356manuals using Info.  If @file{lilypond-mode} is not installed on your
357platform, see below.
358
359An Emacs mode for entering music and running LilyPond is contained in
360the source archive in the @file{elisp} directory.  Do @command{make
361install} to install it to @var{elispdir}.  The file @file{lilypond-init.el}
362should be placed to @var{load-path}@file{/site-start.d/} or appended
363to your @file{~/.emacs} or @file{~/.emacs.el}.
364
365As a user, you may want add your source path (e.g. @file{~/site-lisp/}) to
366your @var{load-path} by appending the following line (as modified) to your
367@file{~/.emacs}
368
369@c any reason we do not advise:  (push "~/site-lisp" load-path)
370@example
371(setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
372@end example
373
374
375@node Vim mode
376@unnumberedsubsec Vim mode
377
378For @uref{http://@/www@/.vim@/.org,Vim}, a filetype plugin, indent
379mode, and syntax-highlighting mode are available to use with
380LilyPond.  To enable all of these features, create (or modify)
381your @file{$HOME/.vimrc} to contain these three lines, in order:
382
383@example
384filetype off
385set runtimepath+=/usr/local/share/lilypond/current/vim/
386filetype on
387syntax on
388@end example
389
390@noindent
391If LilyPond is not installed in the @file{/usr/local/} directory,
392change the path appropriately.  This topic is discussed in
393@rlearning{Other sources of information}.
394
395
396@node Other editors
397@unnumberedsubsec Other editors
398
399Other editors (both text and graphical) support LilyPond, but
400their special configuration files are not distributed with
401LilyPond.  Consult their documentation for more information.  Such
402editors are listed in @rweb{Easier editing}.
403
404
405@node Converting from other formats
406@section Converting from other formats
407
408Music can be entered also by importing it from other formats.  This
409chapter documents the tools included in the distribution to do so.
410There are other tools that produce LilyPond input, for example GUI
411sequencers and XML converters.  Refer to the
412@uref{http://@/lilypond@/.org,website} for more details.
413
414These are separate programs from @command{lilypond} itself, and are
415run on the command line; see @ref{Command-line usage} for more
416information.  If you have MacOS 10.3 or 10.4 and you have trouble
417running some of these scripts, e.g. @code{convert-ly}, see
418@rweb{MacOS X}.
419
420@knownissues
421We unfortunately do not have the resources to maintain these
422programs; please consider them @qq{as-is}.  Patches are appreciated, but
423bug reports will almost certainly not be resolved.
424
425@menu
426* Invoking midi2ly::            Importing MIDI.
427* Invoking musicxml2ly::        Importing MusicXML.
428* Invoking abc2ly::             Importing ABC.
429* Invoking etf2ly::             Importing Finale.
430* Other formats::
431@end menu
432
433
434@node Invoking midi2ly
435@subsection Invoking @command{midi2ly}
436
437@cindex MIDI
438
439@command{midi2ly} translates a Type@tie{}1 MIDI file to a LilyPond
440source file.
441
442MIDI (Music Instrument Digital Interface) is a standard for digital
443instruments: it specifies cabling, a serial protocol and a file
444format.  The MIDI file format is a de facto standard format for
445exporting music from other programs, so this capability may come in
446useful when importing files from a program that has a converter for a
447direct format.
448
449@command{midi2ly} converts tracks into @rinternals{Staff} and
450channels into @rinternals{Voice} contexts.  Relative mode is used
451for pitches, durations are only written when necessary.
452
453It is possible to record a MIDI file using a digital keyboard, and
454then convert it to @file{.ly}.  However, human players are not
455rhythmically exact enough to make a MIDI to LY conversion trivial.
456When invoked with quantizing (@option{-s} and @option{-d} options)
457@command{midi2ly} tries to compensate for these timing errors, but is
458not very good at this.  It is therefore not recommended to use
459@command{midi2ly} for human-generated midi files.
460
461It is invoked from the command-line as follows,
462
463@example
464midi2ly [@var{option}]@dots{} @var{midi-file}
465@end example
466
467Note that by @q{command-line}, we mean the command line of the
468operating system.  See @ref{Converting from other formats}, for
469more information about this.
470
471The following options are supported by @command{midi2ly}.
472
473@table @code
474@item -a, --absolute-pitches
475Print absolute pitches.
476
477@item -d, --duration-quant=@var{DUR}
478Quantize note durations on @var{DUR}.
479
480@item -e, --explicit-durations
481Print explicit durations.
482
483@item -h, --help
484Show summary of usage.
485
486@item -k, --key=@var{acc}[:@var{minor}]
487Set default key.  @math{@var{acc} > 0} sets number of sharps;
488@math{@var{acc} < 0} sets number of flats.  A minor key is indicated by
489@code{:1}.
490
491@item -o, --output=@var{file}
492Write output to @var{file}.
493
494@item -s, --start-quant=@var{DUR}
495Quantize note starts on @var{DUR}.
496
497@item -t, --allow-tuplet=@var{DUR}*@var{NUM}/@var{DEN}
498Allow tuplet durations @var{DUR}*@var{NUM}/@var{DEN}.
499
500@item -v, --verbose
501Be verbose.
502
503@item -V, --version
504Print version number.
505
506@item -w, --warranty
507Show warranty and copyright.
508
509@item -x, --text-lyrics
510Treat every text as a lyric.
511@end table
512
513@knownissues
514Overlapping notes in an arpeggio will not be correctly rendered.  The
515first note will be read and the others will be ignored.  Set them all
516to a single duration and add phrase markings or pedal indicators.
517
518
519@node Invoking musicxml2ly
520@subsection Invoking @code{musicxml2ly}
521
522@cindex MusicXML
523
524@uref{http://@/www.@/musicxml@/.org/,MusicXML} is an XML dialect for
525representing music notation.
526
527@command{musicxml2ly} extracts notes, articulations, score structure and
528lyrics from @q{part-wise} MusicXML files then writes them to a
529@file{.ly} file. It is run from the command-line as follows;
530
531@example
532musicxml2ly [@var{option}]@dots{} @var{file.xml}
533@end example
534
535Note that by @q{command-line}, we mean the command line of the
536operating system.  See @ref{Converting from other formats}, for
537more information about this.
538
539If @file{-} is used instead of @var{file.xml}, @command{musicxml2ly}
540reads all input directly from the command line.
541
542The following options are supported by @command{musicxml2ly}:
543
544@table @code
545@item -a, --absolute
546convert pitches in absolute mode.
547
548@item --fb --fretboards
549converts @code{<frame>} events to a separate FretBoard voice instead of
550markups.
551
552@item -h, --help
553print usage and a summary of all the available command line options.
554
555@item -l, --language=LANG
556use @var{LANG} for pitch names, e.g. @code{deutsch} for note names in
557German.
558
559@item --loglevel=@var{LOGLEVEL}
560Sets the output verbosity to @var{LOGLEVEL}. Possible values are
561@code{NONE}, @code{ERROR}, @code{WARNING}, @code{PROGRESS} (default) and
562@code{DEBUG}.
563
564@item --lxml
565use the lxml.etree Python package for XML-parsing; uses less memory and
566cpu time.
567
568@item -m, --midi
569activate the midi block in the @var{.ly} file.
570
571@item --nb, --no-beaming
572do not convert beaming information, use LilyPond's automatic
573beaming instead.
574
575@item --nd, --no-articulation-directions
576do not convert directions (@code{^}, @code{_} or @code{-}) for
577articulations, dynamics, etc.
578
579@item --nrp, --no-rest-positions
580do not convert exact vertical position of rests.
581
582@item --nsb, --no-system-breaks
583ignore system breaks.
584
585@item --npl, --no-page-layout
586do not convert the exact page layout and breaks (shortcut for
587@code{--nsb} @code{--npb} @code{--npm} options).
588
589@item --npb, --no-page-breaks
590ignore page breaks.
591
592@item --npm, --no-page-margins
593ignore page margins.
594
595@item --nsd, --no-stem-directions
596ignore stem directions from MusicXML, use lilypond's automatic stemming
597instead.
598
599@item -o, --output=@var{FILE}
600set the output filename to @var{FILE}.  If @var{file} is @file{-}, the
601output will be printed to stdout.  If not given, @var{xmlfile.ly} will
602be used instead.
603
604@item -r, --relative
605convert pitches in relative mode (default).
606
607@item --transpose=TOPITCH
608the interval between pitch @code{c} and @var{TOPITCH} to transpose by.
609
610@item --sm, --shift-meter=BEATS/BEATTYPE
611change the length|duration of notes as a function of a given time
612signature to make the score look faster or slower, (e.g. @code{4/4} or
613@code{2/2}).
614
615@item --tc, --tab-clef=TABCLEFNAME
616switch between two versions of tab clefs (@code{tab} and
617@code{moderntab}).
618
619@item --sn --string-numbers=t[rue]/f[alse]
620deactivate string number stencil with @code{--string-numbers}
621@code{false}.  Default is @code{true}.
622
623@item -v, --verbose
624be verbose.
625
626@item --version
627show version number and exit.
628
629@item -z, --compressed
630input file is a zip-compressed MusicXML file.
631@end table
632
633
634@node Invoking abc2ly
635@subsection Invoking @code{abc2ly}
636
637@warning{This is not currently supported and may eventually be removed
638from future versions of LilyPond.}
639
640@cindex ABC
641
642ABC is a fairly simple ASCII based format.  It is described at the ABC
643site:
644
645@quotation
646@uref{http://@/www@/.walshaw@/.plus@/.com/@/abc/@/learn@/.html}.
647@end quotation
648
649@command{abc2ly} translates from ABC to LilyPond.  It is invoked as
650follows:
651
652@example
653abc2ly [@var{option}]@dots{} @var{abc-file}
654@end example
655
656The following options are supported by @command{abc2ly}:
657
658@table @code
659@item -b, --beams=None
660preserve ABC's notion of beams
661@item -h, --help
662this help
663@item -o, --output=@var{file}
664set output filename to @var{file}.
665@item -s, --strict
666be strict about success
667@item --version
668print version information.
669@end table
670
671There is a rudimentary facility for adding LilyPond code to the ABC
672source file.  For example;
673
674@example
675%%LY voices \set autoBeaming = ##f
676@end example
677
678This will cause the text following the keyword @q{voices} to be inserted
679into the current voice of the LilyPond output file.
680
681Similarly,
682
683@example
684%%LY slyrics more words
685@end example
686
687will cause the text following the @q{slyrics} keyword to be inserted
688into the current line of lyrics.
689
690@knownissues
691The ABC standard is not very @q{standard}.  For extended features
692(e.g., polyphonic music) different conventions exist.
693
694Multiple tunes in one file cannot be converted.
695
696ABC synchronizes words and notes at the beginning of a line;
697@command{abc2ly} does not.
698
699@command{abc2ly} ignores the ABC beaming.
700
701
702@node Invoking etf2ly
703@subsection Invoking @command{etf2ly}
704
705@warning{This is not currently supported and may eventually be removed
706from future versions of LilyPond.}
707
708@cindex Enigma Transport Format
709@cindex ETF
710@cindex enigma
711@cindex Finale
712@cindex Coda Technology
713
714ETF (Enigma Transport Format) is a format used by Coda Music
715Technology's Finale product.  @command{etf2ly} will convert part of an
716ETF file to a ready-to-use LilyPond file.
717
718It is invoked from the command-line as follows;
719
720@example
721etf2ly [@var{option}]@dots{} @var{etf-file}
722@end example
723
724Note that by @q{command-line}, we mean the command line of the
725operating system.  See @ref{Converting from other formats}, for
726more information about this.
727
728The following options are supported by @command{etf2ly}:
729
730@table @code
731@item -h, --help
732this help
733@item -o, --output=@var{FILE}
734set output filename to @var{FILE}
735@item --version
736version information
737@end table
738
739@knownissues
740The list of articulation scripts is incomplete.  Empty measures
741confuse @command{etf2ly}.  Sequences of grace notes are ended
742improperly.
743
744
745@node Other formats
746@subsection Other formats
747
748@cindex External programs, generating LilyPond files
749
750LilyPond itself does not come with support for any other formats,
751but some external tools can also generate LilyPond files.  These
752are listed in @rweb{Easier editing}.
753
754
755@node LilyPond output in other programs
756@section LilyPond output in other programs
757
758This section shows methods to integrate text and music, different than
759the automated method with @command{lilypond-book}.
760
761@menu
762* LuaTeX::
763* OpenOffice and LibreOffice::
764* Other programs::
765@end menu
766
767
768@node LuaTeX
769@subsection Lua@TeX{}
770
771@cindex Lua@TeX{}
772@cindex lyluatex
773
774As well as @code{lilypond-book} to integrate LilyPond output,
775there is an alternative program that can be used when using Lua@TeX{}
776called
777@uref{https://github.com/jperon/lyluatex/blob/master/README.md,lyluatex}.
778
779
780@node OpenOffice and LibreOffice
781@subsection OpenOffice and LibreOffice
782
783@cindex OpenOffice.org
784@cindex LibreOffice.org
785@cindex OOoLilyPond
786
787LilyPond notation can be added to OpenOffice.org and LibreOffice with
788@uref{https://github.com/openlilylib/LO-ly,OOoLilyPond}, an
789OpenOffice.org extension that converts LilyPond files into images within
790OpenOffice.org documents.  OOoLilyPond (OLy) works with recent versions of
791LibreOffice and OpenOffice. Older versions should work as well. It has even
792been tested with OpenOffice 2.4 without issues.
793
794
795@node Other programs
796@subsection Other programs
797
798Other programs that can handle @file{PNG}, @file{EPS}, or @file{PDF}
799formats should use @code{lilypond} instead of @code{lilypond-book}.
800Each LilyPond output file must be created and inserted separately.
801Consult the program's own documentation on how to insert files from
802other sources.
803
804To help reduce the white space around your LilyPond score, use the
805following options;
806
807@example
808\paper@{
809  indent=0\mm
810  line-width=120\mm
811  oddFooterMarkup=##f
812  oddHeaderMarkup=##f
813  bookTitleMarkup = ##f
814  scoreTitleMarkup = ##f
815@}
816
817@var{@dots{} music @dots{}}
818@end example
819
820@noindent
821To produce @file{EPS} images;
822
823@example
824lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts myfile.ly
825@end example
826
827@noindent
828To produce @file{PNG} images;
829
830@example
831lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png myfile.ly
832@end example
833
834@noindent
835For transparent @file{PNG} images
836
837@smallexample
838lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts -dpixmap-format=pngalpha --png myfile.ly
839@end smallexample
840
841@cindex fragments, music
842@cindex quoting, music fragments
843@cindex music fragments, quoting
844
845If you need to quote many fragments from a large score, you can also use
846the clip systems feature, see @ruser{Extracting fragments of music}.
847
848
849@node Independent includes
850@section Independent @code{include}s
851
852Some users have produced files that can be @code{\include}d with
853LilyPond to produce certain effects and those listed below are part of
854the LilyPond distribution.  Also see @ruser{Working with input files}.
855
856@menu
857* MIDI articulation::
858@end menu
859
860
861@node MIDI articulation
862@subsection MIDI articulation
863
864@cindex MIDI
865@cindex Articulate project
866
867The @uref{http://www.nicta.com.au/articulate,Articulate} project is an
868attempt to enhance LilyPond's MIDI output and works by adjusting note
869lengths (that are not under slurs) according to the articulation
870markings attached to them.  For example, a @q{staccato} halves the note
871value, @q{tenuto} gives a note its full duration and so on.  See
872@ruser{Enhancing MIDI output}.
873