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