]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/topdocs/NEWS.texi
* scripts/lilypond-book.py (Compile_error.process_include): catch
[lilypond.git] / Documentation / topdocs / NEWS.texi
1 \input texinfo @c -*-texinfo-*-
2 @setfilename NEWS.info
3 @settitle NEWS
4
5 @node Top, , , 
6 @top
7 @unnumbered New features in 2.3 since 2.2
8
9 @itemize @bullet
10
11 @item LilyPond does not try to produce output for files that
12 have a parse error.
13
14 @item @code{lilypond-book} will now remove any output  files that
15 contain failed music snippets.
16
17 @item The mode changing commands  (@code{\chords}, @code{\lyrics}, etc.)
18 have been renamed to @code{\chordmode}, @code{\lyricmode}, etc. The
19 command @code{\chords} is an abbreviation for
20
21 @example
22   \new ChordNames \chordmode ... 
23 @end example
24
25 @noindent
26 @code{\drums}, @code{\lyrics}, @code{\chords}, @code{\figures}
27 function similarly.
28
29 @item The types of events quoted with @code{\quote}  can  now be tuned
30 with @code{quotedEventTypes}. By default, only notes and rests end up
31 in quotes.
32
33 @item  LilyPond will try to keep
34 staves at the same distances across a page, but it will stretch
35 distances to prevent collisions. This results in a more even
36 appearance of the page.
37
38 @item Key signature cancellations are now printed before the bar line,
39 and their appearance has been improved.
40
41 @item Different voices that all use  @code{\quote} can now refer to
42 each other.
43
44
45 @item The automatic staff changer, which is invoked with
46 @code{\autochange}, now creates the @code{up} and @code{down} staff
47 automatically, and uses bass clef for the bottom staff.
48
49 @item There is now support for putting two slurs on chords, both above
50 and below. This is switched on with the @code{doubleSlurs} property.
51
52 @item Running trills now have their own spanner and event,
53
54 @example
55   c1\startTrillSpan c4\stopTrillSpan 
56 @end example
57
58 @item There is a new markup command @code{\postscript} that takes a
59 string that is dumped as verbatim PostScript in the output.
60
61 @item The melody  for a @code{\lyricsto} text can be changed during a
62 melody by setting the @code{associatedVoice} property.
63
64 @item The @code{\lyricsto} keyword now automatically switches on
65 @code{\lyrics} mode.
66
67 @item The LilyPond binary  now supports output options
68 @code{--dvi} @code{--png} @code{--ps} @code{--pdf} and
69 @code{--preview}.  The old wrapper script for La@TeX{} has been
70 renamed to @code{lilypond-latex}.
71
72 @item Support for ambitus has been rewritten. The Ambitus object is now
73 a grouping object, composed of @code{AmbitusLine},
74 @code{AmbitusAccidental} and @code{AmbitusNoteHead}. These objects may
75 be tuned similar to accidentals and note heads.
76
77 @item Ledger lines are now shortened when the spacing is tight. This
78 prevents ledger lines from colliding with each other.
79
80 @item Slur formatting has been rewritten. The new slur code
81 works similar to the Beam formatter: scores are assigned for all
82 esthetic components of a slur. A large number of combinations for
83 begin and end points is then tried out.  Slurs will now also take into
84 account collisions with staff lines, scripts (like staccato and
85 accent) and accidentals.
86
87
88 @item In the LilyPond  emacs mode, entering @code{|} will  display the
89   current beat within the measure.
90
91 @item Colliding notes are now correctly aligned relative to notes in other staves.
92
93 @item An experimental GNOME output backend is available for developers.
94 It depends on several unreleased packages such as gnome-guile TLA and
95 Pango CVS.  The output interface coverage is sparse, but it already
96 does support point-and-click on the GNOME Canvas.  See also
97 @file{scm/output-gnome.scm}.
98
99 @item Context definitions are now stored in identifiers that match the
100 context name, in other words, to modify a @code{Staff} context, the
101 following code may be used.
102
103 @example
104 \context @{
105   \Staff
106   .. 
107 @}
108 @end example
109
110 @item A new block, @code{\bookpaper} has been introduced to
111 hold settings for paper size and output scaling. Further options
112 include @code{raggedbottom} (if set, systems are not vertically filled
113 to reach the bottom of the page), and @code{raggedlastbottom}.
114
115
116
117 @item Support for fret diagrams  has been contributed by Carl
118 D. Sorensen. @file{input/test/fret-diagram.ly} contains an example.
119  
120 @item The @code{--safe-mode} has been revisited: GUILE evaluation
121 is done in the R5RS safe module, with only the basic @code{ly:}
122 interface available and malicious @TeX{} code is stopped.  However, to
123 be reasonably safe, you are advised to use the PostScript backend
124 rather than the @TeX{} backend anyway; and if possible use an UML
125 sandbox to run gs or latex.
126
127 @item Music syntax can now be extended seamlessly. As an example,
128 here is the new implementation @code{\applymusic},
129
130 @example
131   applymusic = #(ly:make-music-function
132      (list procedure? ly:music?) ; signature
133      (lambda (where func music)  ; the function
134        (func music)))
135 @end example
136
137 @item @code{\apply} has been renamed to @code{\applymusic}.
138
139 @item Music can be used as a markup.
140 When inserting a @code{score} block as part of a @code{\markup}, it
141 produces a rendered markup of the music.  An example is in
142 @file{input/test/markup-score.ly}.
143
144 @item LilyPond expressions can be embedded into Scheme. The syntax for
145 this is @code{#@{ ... #@}}. Within such a block, Scheme forms can be
146 introduced using a @code{$} character (@code{$$} results in a single
147 `$' character).  These forms are then inserted in the pattern.
148
149 @example
150 #(define (textoffset dx dy)
151    (ly:export
152      #@{ \override Voice.TextScript #'extra-offset = #(cons $dx $dy) #@}))
153
154 @{
155   c'^"normal text"
156   %% The following embedded scheme call is the same as
157   %% \override Voice.TextScript #'extra-offset = #(cons 2 -3)
158   #(textoffset 2 -3)
159   c'^"text with offset" 
160 @}
161 @end example
162
163 @item A music list at toplevel is interpreted as implicit @code{\score}
164 a @code{\score} block at toplevel is interpreted as an implicit
165 @code{\book} and @code{\notes} mode is the default lexer mode.  The
166 result is that
167
168 @example
169 \header @{ title = "The Title" @}
170 @{ a b c @}
171 @end example
172
173 is interpreted as
174
175 @example
176 \header @{ title = "The Title" @}
177 \book @{
178   \score @{
179     \notes @{ a b c @}
180   @}
181 @}    
182 @end example
183
184 This is handled by the function defined in
185 @code{toplevel-music-handler}.  Similarly, @code{\score} and
186 @code{\book} are handled by @code{toplevel-score-handler} and a
187 @code{toplevel-book-handler}.  By changing these variables, different
188 results can be obtained.
189
190 @item Mode changing commands,
191 such as @code{\chords} and @code{\figures} must now be directly
192 followed by delimiters. The following example demonstrates the new
193 behavior,
194
195 @verbatim
196   \figures \context Figures { .. } % wrong
197   \context Figures \figures { .. } % right
198 @end verbatim 
199
200
201 @item The starting pitch for @code{relative} music is optional for music lists.
202 The default value is middle C.
203
204 @c update-me?  formal definition of newaddlyrics, once it works
205 @item Combining lyrics with music can be done with @code{\addlyrics}
206
207 @example
208     \relative @{
209         \clef bass
210         d2 d c4 bes a2 \break
211     @}
212     \newlyrics @{
213         My first Li -- ly song,
214     @}
215     \newlyrics @{
216         Not much can go wrong!
217     @}
218 @end example
219
220 Syntactically, @code{\addlyrics} acts like an infix operator.  
221
222 @item The parser is encapsulated in a Scheme function
223 @code{ly:parse-file}, so the following fragment processes two files
224
225 @verbatim
226 #(ly:parse-file "another.ly")
227 \score { \notes { c4 }}
228 @end verbatim
229
230 @item The @code{font-encoding} property can now be used to select
231 differently encoded fonts. The previous default setting
232 @code{TeX-text} has been replaced by latin1. LilyPond requires the
233 @uref{http://www.lilypond.org/download/fonts/,ec-fonts-mftraced}
234 package installed to function properly.
235
236 @item The encoding of a file can be switched with
237 @code{\encoding}. The strings for markup texts are translated
238 automatically.
239
240 @item The toplevel block @code{\book} introduces page layout.
241 A @code{\book} groups @code{\score} blocks into one page layout
242 entity. For example, two scores are combined in one book with   
243
244 @example
245 \book @{
246      \score @{ ... @}
247      \score @{ ... @}
248 @}
249 @end example
250
251
252 @item
253 Titling and page breaks are handled by LilyPond.  Page breaks may be
254 inserted manually with
255 @example
256   \pageBreak
257 @end example
258
259 @item
260 The @code{lilypond} program does not generate La@TeX{} titles or page
261 layout.  If you need La@TeX{} titles, you can use the
262 @code{lilypond-book} program.
263
264 @item There is now less of a noticeable ``hook'' at the end of a long slur.
265
266 @item The meaning of the @code{|} in the input can be redefined, by
267  assigning a music expression to @code{pipeSymbol}.
268  
269 @end itemize
270
271 @unnumbered New features in 2.2 since 2.0
272
273 @itemize @bullet
274
275 @item Setting @code{raggedlast = ##t} in the @code{\paper} block
276 causes the last line to be set flush-left instead of justified. 
277
278 @item The @code{Timing_engraver} now sets the @code{Timing} alias on
279 its containing context automatically.
280
281 @item The code for font selection has been rewritten. In addition to
282 existing font selection properties, the property @code{font-encoding}
283 has been added, which makes the switch between normal @code{text} and
284 other encodings like @code{braces}, @code{music} and @code{math}.
285
286 @item The pmx2ly script has been removed from the distribution.
287
288 @item Pedal brackets will now run to the last bar of a piece if they are not
289 explicitly ended.
290
291 @item Context definitions now use the word @code{\context} instead of @code{\translator}.
292
293 @item Property functions may be used as an argument to @code{set!},
294 for example
295
296 @example
297   (set! (ly:grob-property grob 'beam) ... )
298 @end example
299
300 @item In anticipation of Emacs 21.4 or 22.1, the info documentation contains
301 images.
302
303 @item Cue notes can be quoted directly from the parts that
304 contain them. This will take into account transposition of source and target
305 instrument. For example,
306
307 @verbatim
308 \addquote clarinet \notes\relative c' {
309   \transposition bes
310   fis4 fis fis fis
311 }
312
313 \score {
314     \notes \relative c'' {
315         c8 d8 \quote 2 oboe es8 gis  
316     }
317 }
318 @end verbatim
319
320 @item The transposition of an instrument can be specified using the
321 @code{\transposition} command.  An
322 E-flat alto saxophone is specified as 
323
324 @example
325   \transposition es'
326 @end example 
327
328 @item The naming of exported Scheme functions now follows Scheme conventions.
329 Changes be applied to Scheme files with 
330
331 @example
332         convert-ly -e -n --from=2.1.24 --to=2.1.26 *.scm 
333 @end example
334
335
336 @item Notes can  be excluded from auto-beaming, by  marking them with
337 @code{\noBeam}
338 @example
339   c8 c \noBeam c c 
340 @end example
341
342 @noindent
343 will print two separate eighth notes, and two beamed notes.
344
345 @item  Translators and contexts have been split. The result of this
346 internal cleanup is that @code{Score} no longer is the top context;
347 @code{Score} is contained in the @code{Global} context. Consequently,
348 it is possible to tweak @code{Score} as follows:
349
350 @example
351   \context Score \with @{
352     @dots{}
353   @}
354 @end example
355
356 @item The number of staff lines  in Tablature notation is now
357 automatically deduced from the @code{stringTunings} property.
358
359 @item The program reference has been cleaned up and revised.
360
361 @item The syntax for setting properties has been simplified:
362 the following table lists the differences:
363
364 @example
365       (old)                           (new)
366
367 \property A.B = #C                \set A.B = #C
368 \property A.B \unset              \unset A.B
369 \property A.B \set #C = #D        \override A.B #C = #D 
370 \property A.B \override #C = #D   (removed)
371 \property A.B \revert #C          \revert A.B #C
372 @end example
373
374 Furthermore, if @code{A} is left out, the bottommost context is used
375 by default.  In other words, it is no longer necessary to explicitly
376 mention @code{Voice}, @code{Lyrics} or @code{ChordNames}. 
377
378 Old:
379
380 @example
381    \property Voice.autoBeaming = ##f
382    \property Staff.TimeSignature \set #'style = #'C
383 @end example
384
385 New:
386
387 @example
388    \set autoBeaming = ##f
389    \override Staff.TimeSignature #'style = #'C
390 @end example
391
392
393 @item Tweaks  made with @code{\override} and @code{\revert} no longer
394 hide tweaks at higher context levels.
395
396 @item Melismata in lyrics are also properly handled  in the MIDI output.
397
398 @item The lilypond-book script has been rewritten.
399 It is shorter, cleaner and faster.  The special construct
400 @code{mbinclude} has been removed, plain @code{@@include} or
401 @code{\input} can be used now.
402
403 It now supports running convert-ly on the lilypond snippets,
404 @example
405     lilypond-book --filter='convert-ly --from=2.0.0' my-book.tely
406 @end example
407
408 @item The @code{LyricsVoice} context has been removed. Lyrics should only
409 be constructed in @code{Lyrics}.
410
411 @item The @code{Thread} context has been removed. Note heads and rests
412 are now constructed at @code{Voice} level.
413
414 @item  Harmonic notes can now be entered as
415
416 @example
417    <c' g''\harmonic>
418 @end example
419
420 @item Drum notation is now supported  as a regular feature:
421 percussion may be entered in @code{\drums} mode, and printed or
422 performed in a @code{DrumStaff} context:
423
424 @example
425   \score @{
426     \drums \new DrumStaff @{ hihat4 cowbell8 @}
427   @}
428 @end example
429
430 @item The automatic staff changer was internally rewritten. As a
431 result, the syntax has been simplified as well:
432
433 @example
434   \autochange @var{the-music}
435 @end example
436
437 @item The ergonomic syntax of @code{\markup} now has an equivalent in
438 Scheme. The @code{markup*} macro creates such objects; the following
439 two markup commands are equivalent:
440 @example
441  f4^#(markup* #:raise 0.2 #:bold "hi")
442  f4^\markup @{ \raise #0.2 \bold hi  @}
443 @end example
444
445 @item Voice names, for vocal lines, have been added. They are similar
446 to instrument names.   They can be set by defining @code{vocalName}
447 and @code{vocNam}.
448
449 @item Safe mode has been reinstated for lilypond.
450 When lilypond is invoked with @code{--safe-mode}, @TeX{} and
451 PostScript file output is disallowed, and lilypond-bin is invoked with
452 @code{--safe-mode}, the user's Guile expressions are evaluated in a
453 safe environment and file inclusion is not allowed.
454
455 Warning: this does not protect against denial-of-service attacks using
456 Guile, @TeX{} or PostScript.
457
458 (This feature is still experimental.)
459
460 @item There is now a Scheme macro for defining markup
461 commands. Special mark-up commands can be defined in user-files too.
462
463 @item Many fixes for dimension scaling have been made,
464 resulting in correct results for scores that mix staves in different
465 sizes.
466
467 @item Improved robustness when  layout properties are accidentally removed.  
468
469 @item A  more cleanly constructed part combiner has been installed.
470 It is more robust and less buggy. The part-combiner can be used with
471 @example
472   \partcombine @var{mus1} @var{mus2}
473 @end example
474
475 @noindent
476 See @file{input/regression/new-part-combine.ly} for an example.
477
478 @item Formatting of rehearsal marks has been improved. The @code{\mark}
479 command now only does automatic incrementing for marks specified as
480 integer. For example, @code{\mark #1} will print an A in the default
481 style.  See @file{input/regression/rehearsal-mark-letter.ly},
482 @file{input/regression/rehearsal-mark-number.ly}.
483
484 @item Formatting of ottava brackets has been much improved.
485
486 @item Objects in the output can now be documented: the following fragment
487  boxes the note head, and adds the text ``heads or tails?'' three
488 spaces below the box.
489
490 @example
491        \context Voice \applyoutput #(add-balloon-text
492                                      'NoteHead "heads, or tails?"
493                                      '(0 . -3))
494
495       
496        c8
497 @end example
498
499
500 @item Default staff sizes are now scalable. There are two new mechanisms for
501 setting staff sizes. Both are demonstrated in this fragment:
502
503 @example
504   #(set-global-staff-size 15)
505   \paper @{
506     #(paper-set-staff-size (* 15 pt))
507   @}   
508 @end example
509
510
511 @noindent
512 Both have the same effect on the global layout of a piece. Similarly,
513 the paper size may be changed as follows
514
515 @example
516   #(set-default-paper-size "a4")
517   \paper @{
518     #(set-paper-size "a4")
519   @}
520 @end example 
521
522
523 @item Warnings for bar check errors are more cleverly printed.  This
524 makes @code{barCheckSynchronize} superfluous, so it is now switched
525 off by default.
526
527 Warning: this will cause problems in scores that use bar checks to
528 shorten measures.
529
530 @item The black note head was made a little rounder, which causes a less
531  frantic graphic impression.
532
533 @item
534 A more concise syntax for checking octaves was introduced. A note may
535 be followed by @code{=}@var{quotes} which indicates what its absolute
536 octave should be.  In the following example, 
537
538 @example
539   \relative c'' @{ c='' b=' d,='' @}        
540 @end example
541
542 @noindent
543 the d will generate a warning, because a d'' is
544 expected, but a d' is found.
545 @c @code adds ` ', very confusing.
546
547 @item There is a new mechanism for putting lyrics to melodies.
548 With this mechanism, @code{Lyrics} lines can be put melodies
549 individually, allowing for different melismatic sections in every
550 @code{Lyrics}. See @file{input/regression/lyric-combine-new.ly}.
551
552 @item Bar lines may now be dotted.
553
554
555 @item The documentation now has links to a wiki, where everyone can
556 add personal comments to the manual.
557
558 @item Contexts may now be changed locally for an isolated music
559 expression. For example,
560   
561 @example
562   \new Voice \with @{
563      \consists "Pitch_squash_engraver"
564   @} @{
565     c'4
566   @}
567 @end example
568
569 @item The syntax for changing staffs has changed. The keyword
570 @code{\change} should now be used, e.g.
571
572 @example
573   \change Staff = up
574 @end example 
575
576 @item Features of spanner contexts, like @code{Staff}, can now be changed
577   using @code{\set}, eg.
578
579 @example
580   \new Staff @{
581        \override Staff.StaffSymbol #'line-count = #4
582        c'4
583   @} 
584 @end example
585
586 @noindent
587 puts a quarter note C on a staff with 4 lines.  
588
589
590 @item Multi measure rests are now truly centered between the
591 clefs/barlines of the staff, their position is independent of symbols
592 on the other staffs.
593
594 @item Collision resolution for dots in chords has been improved greatly. 
595
596 @item
597 Spacing following barlines was improved for widely stretched lines.
598
599 @item
600 Lyric hyphens and extenders now conform to standard typesetting
601 practice.
602
603 @item
604 Lyrics are now aligned under note heads conforming to engraving
605 standards. The responsible code has been rewritten, and is drastically
606 simpler from the previous version. To aid this rewrite, the syntactic
607 function of the extender line ( __ ) has been changed: it is now
608 attached to the lyric syllable.
609
610 @item
611 When redefining a context, the associated identifier is also
612 updated. For example, after reading 
613
614 @example
615  \translator @{
616         \ScoreContext
617         autoBeaming = ##f
618  @}
619 @end example
620
621 @noindent
622 the definition of @code{ScoreContext} is updated to include the changed
623 setting.
624
625
626 @item
627 The weight of the stafflines is now heavier at smaller staff sizes.
628 The font has been modified to match this look: at smaller sizes, the
629 font is heavier and the note heads are more rounded.
630
631 @item Processing scores is now done while parsing the file. New
632 Scheme functions give more flexibility: for example, it is now possible
633 interpret a score, collecting synchronized musical events in a list, and
634 manipulate that information using inline Scheme. For an example, see
635 @file{input/no-notation/recording.ly}.
636
637 @item Font sizes can now truly be scaled continuously: the  @code{font-size}
638 is similar to the old @code{font-relative-size}, but may be set to
639 fractional values; the closest design size will be scaled to achieve
640 the desired size. As a side-effect, there are now no longer
641 limitations in using smaller fonts (eg. grace notes) at small staff
642 sizes.
643
644 @item Stem tips are now also engraved with rounded corners.
645
646 @item
647 The placement of accidentals on chords and ledgered notes is improved.
648
649 @end itemize
650
651
652 @unnumbered New features in 2.0 since 1.8
653
654 @itemize
655
656 @item
657 Crescendos can now be drawn dotted or dashed.
658
659 @item
660 Quarter tones are now supported. They are entered by suffixing
661 @code{ih} for a half-sharp and @code{eh} for a half-flat. Hence, the
662 following is an ascending list of pitches:
663
664 @example
665   ceses ceseh ces ceh c cih cis cisih cisis
666 @end example
667
668 @item
669 The following constructs have been removed from the syntax:
670
671 @example
672   \duration #SCHEME-DURATION
673   \pitch #SCHEME-PITCH
674   \outputproperty @var{func} @var{symbol} = @var{value}
675 @end example
676
677 For @code{\outputproperty}, the following may be substituted:
678
679 @example
680    \applyoutput #(outputproperty-compatibility @var{func}
681                   @var{symbol} @var{value}) 
682 @end example 
683
684 @item
685 Clefs may now be transposed arbitrarily, for example
686
687 @example
688   \clef "G_8"
689   \clef "G_15"
690   \clef "G_9"
691 @end example
692
693
694 @item
695 The syntax for chords and simultaneous music have changed.
696 Chords are entered as
697
698 @example
699    <@var{pitches}>
700 @end example
701
702 while simultaneous music is entered as
703
704 @example
705    <<@var{..music list..}>>
706 @end example
707
708 In effect, the meanings of both have been swapped relative to their 1.8
709 definition.  The syntax for lists in @code{\markup} has changed
710 alongside, but figured bass mode was not  changed, i.e.:
711
712 @example
713   \markup @{ \center <@var{..list of markups..}> @}
714   \figure @{ <@var{figures}> @}
715 @end example
716
717 As chords the more often used than simultaneous music, this change will
718 save keystrokes.
719
720 @item
721 Each music expression can now be tagged, to make different printed
722 versions from the same music expression.  In the following example,
723 we see two versions of a piece of music, one for the full score, and
724 one with cue notes for the instrumental part:
725
726 @example
727 << \tag #'part <<
728      @{ c4 f2 g4 @}      % in the part, we have cue-notes  
729      \\ R1 >>
730   \tag #'score R1  % in the score: only a rest
731 >>
732 @end example
733  
734 The same can be applied to articulations, texts, etc.: they are
735 made by prepending
736
737 @example
738         -\tag #@var{your-tags} 
739 @end example
740
741 to an articulation, for example, 
742
743 @example
744         c4-\tag #'with-fingerings -4 -\tag #'with-strings \6
745 @end example
746
747 This defines a note, which has a conditional fingering and a
748 string-number indication.
749
750 @item
751 The settings for chord-fingering are more flexible. You can specify a
752 list where fingerings may be placed, eg.
753
754 @example
755         \property Voice.fingeringOrientations = #'(left down)
756 @end example
757
758 This will put the fingering for the lowest note below the chord, and the
759 rest to the left.
760
761 @item
762 The script previously known as @code{ly2dvi} has been renamed to
763 @code{lilypond}. The binary itself is now installed as
764 @code{lilypond-bin}.
765
766 @item
767 Markup text (ie. general text formatting) may now be used for lyrics too. 
768
769 @item
770 Two new commands for grace notes have been added, @code{\acciaccatura}
771 and @code{\appoggiatura},
772
773 @example
774   \appoggiatura f8 e4
775   \acciaccatura g8 f4
776 @end example
777
778 Both reflect the traditional meanings of acciaccatura and appogiatura,
779 and both insert insert a slur from the first grace note to the main
780 note.
781
782 @item 
783 Layout options for grace notes are now stored in a context property,
784 and may now be set separately from musical content.
785
786 @item
787 The @code{\new} command will create a context with a unique
788 name automatically. Hence, for multi-staff scores, it is no longer
789 necessary to invent arbitrary context names. For example, a two-staff
790 score may be created by
791
792 @example
793   \simultaneous @{
794     \new Staff @{ @var{notes for 1st staff} @}
795     \new Staff @{ @var{notes for 2nd staff} @}
796   @}
797 @end example
798
799
800
801 @item
802 Octave checks make octave errors easier to correct.
803 The syntax is 
804
805 @example
806   \octave @var{pitch}
807 @end example
808
809 This checks that @var{pitch} (without octave) yields @var{pitch} (with
810 octave) in \relative mode. If not, a warning is printed, and the
811 octave is corrected.
812
813 @item
814 All articulations must now be entered postfix. For example,
815
816 @example
817         c8[( d8]) 
818 @end example
819
820 @noindent
821 is a pair of beamed slurred eighth notes.
822
823 @item
824 The definition of @code{\relative} has been simplified.  Octaves are
825 now always propagated in the order that music is entered. In the
826 following example,  
827
828 @example
829   PRE
830   \repeat "unfold" 3  BODY \alternative @{ ALT1 ALT2 @}
831   POST
832 @end example
833
834 @noindent
835 the octave of BODY is based on PRE, the starting octave of ALT1 on
836 BODY, the starting octave of ALT2 on ALT1, and the starting octave of
837 POST on ALT2.
838
839 The same mechanism is used for all other music expressions, except the
840 chord. Backwards compatibility is retained through a special program option,
841 which is set through 
842
843 @example
844   #(ly:set-option 'old-relative)
845 @end example
846
847 @item
848 Windows users can double click a @code{.ly} file to process and view
849 it automagically through the new @code{lily-wins} frontend.
850
851 @end itemize
852
853
854
855
856 @unnumbered New features in 1.8 since 1.6
857
858 @itemize
859
860 @item 
861 The chord entry code has been completely rewritten. It is now
862 cleaner and more flexible.
863
864 @item 
865 A new syntax has been added for text entry.  This syntax is more
866 friendly than the old mechanism, and it is implemented in a more
867 robust and modular way. For more information, refer to the section on
868 "Text markup" in the notation manual.
869
870 @item 
871 The integration of the input language and Scheme has been made deeper:
872 you can now use LilyPond identifiers in Scheme, and use Scheme
873 expressions instead of LilyPond identifiers.
874
875 @item 
876 The internal representation of music has been cleaned up completely
877 and converted to Scheme data structures.  The representation may be
878 exported as XML.
879
880 @item 
881 A new uniform postfix syntax for articulation has been introduced.
882 A beamed slurred pair of eighth notes can be entered as
883
884 @example
885         c8-[-( d8-]-) 
886 @end example
887
888 In version 2.0, postfix syntax will be the only syntax
889 available, and the dashes will become optional.
890
891 This will simplify the language: all articulations can be entered as
892 postfix, in any order.
893
894 @item 
895 A new syntax has been added for chords:
896
897
898 @example
899         << PITCHES >>
900 @end example 
901
902 It is not necessary to update files to this syntax, but it will be for
903 using LilyPond version 2.0.  In version 2.0, this syntax will be
904 changed to
905
906 @example
907         < PITCHES >
908 @end example
909
910 for chords, and
911
912 @example
913         \simultaneous @{ .. @} 
914 @end example
915
916 for simultaneous music.
917
918 To convert your files from <PITCHES> to <<PITCHES>>, use the script
919 included in @file{buildscripts/convert-new-chords.py}.
920
921 This change was introduced for the following reasons
922
923 @itemize @bullet
924 @item
925 It solves the "start score with chord" problem, where you have to
926   state \context Voice explicitly when a chord was the start of a
927   Staff or Score.
928 @item
929 With the new syntax, it is possible to distinguish between
930   articulations (or fingerings) which are for a single chord note,
931   and which are for the entire chord. This allows for per-note
932   fingerings, and is more logical on the whole.
933 @end itemize
934
935 @item 
936 User code may now be executed during interpreting.  The syntax for
937 this code is
938
939 @example
940         \applycontext #SCHEME-FUNCTION
941 @end example
942
943 @item 
944 User code may now be executed on arbitrary grobs during interpreting.
945 The syntax for this feature is
946
947 @example
948         \applyoutput #SCHEME-FUNCTION
949 @end example
950
951 @noindent
952 SCHEME-FUNCTION takes a single argument, and is called for every grob
953 that is created in the current context.
954
955 @item 
956 New algorithms for chord-name formatting have been installed. They
957 can be tuned and have ergonomic syntax for entering exceptions.
958
959 @item 
960 Texts may now be put on multimeasure rests, e.g.
961
962 @example
963         R1*20^\markup @{ "GP" @}
964 @end example
965
966 @item
967 Ancient notation now prints ligatures in Gregorian square neumes
968 notation, roughly following the typographical style of the Liber
969 hymnarius of Solesmes, published in 1983.  Ligatures are still printed
970 without the proper line breaking and horizontal spacing.
971
972 @item 
973 Glissandi can now be printed using the zigzag style.
974
975 @item 
976 LilyPond can now print clusters. The syntax is
977
978 @example
979         \apply #notes-to-clusters @{ NOTE NOTE .. @}
980 @end example
981
982 @item
983 For irregular meters, beat grouping marks can be printed. The
984 syntax for this is
985
986 @example
987         #(set-time-signature 7 8 '(3 2 2))
988 @end example
989
990
991 @item 
992 Nested horizontal brackets for music analysis can now be printed:
993
994 @example
995         NOTE-\startGroup
996                 ..
997         NOTE-\stopGroup
998 @end example
999
1000
1001 @item  Ottava brackets are now fully supported as a feature.  The syntax
1002 is
1003
1004 @example
1005         #(set-octavation 1)
1006 @end example
1007
1008
1009 @item  Metronome markings are printed when a \tempo command is processed.
1010
1011
1012
1013 @item Fingerings can be put on chords horizontally.
1014
1015
1016
1017 @item  The appearance of various glyphs has been fine-tuned.
1018
1019
1020
1021 @item  Different types of percent style repeats may now be nested.
1022
1023
1024
1025 @item  The emacs support has been extended.
1026
1027
1028 @item 
1029 The manual has been completely revised and extended.
1030
1031 @end itemize
1032
1033 @unnumbered New features in 1.6 since 1.4
1034
1035
1036 @itemize @bullet
1037
1038 @item
1039 Support for figured bass and tablature.
1040
1041 @item
1042 Completely rewritten beam formatting: provides much better output
1043 now.
1044
1045
1046 @item
1047 Completely revised and improved music font.
1048
1049
1050 @item
1051 Completely rewritten MIDI import support.
1052
1053 @item
1054 Completely rewritten grace note support. Practically speaking this
1055 means that grace notes can be slurred to normal normal notes.
1056
1057
1058 @item
1059 Improved accidental handling and formatting: styles for producing
1060 cautionaries may vary, and complex collisions between accidentals of a
1061 chord are handled much better.
1062
1063 @item
1064 Better spacing: both globally and locally. This includes subtle
1065 details like optical stem spacing.
1066
1067 @item
1068 More support for ancient notation: mensural ligatures, ambitus
1069 (pitch range) of voices, more shapes, etc.
1070
1071 @item
1072 More support for piano notation: bracket pedals, directed arpeggios,
1073 arpeggio brackets.
1074
1075 @item
1076 Easier music polyphonic music entry.
1077
1078 @item
1079 More extensibility, many speedups and bugfixes
1080
1081 @item
1082 The manual has been thoroughly revised.
1083
1084 @item
1085 Development is now hosted at http://savannah.gnu.org, and sources
1086 can be downloaded through anonymous CVS.
1087
1088 @item
1089 Support for windows: LilyPond is part of the cygwin distribution,
1090 which comes with a user-friendly installer.
1091
1092 @end itemize