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