]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/topdocs/NEWS.texi
7edf2db43fc5fa3846ad105507b589b387c6efa6
[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
8 @chapter New features in 2.1 since 2.0
9
10 @ignore
11 Unreleased:
12
13 @itemize
14 @end itemize
15
16 Version 2.1.13
17 @end ignore
18
19 @itemize @bullet
20
21 @item The syntax for setting properties has been simplified:
22 the following table lists the differences:
23
24 @example
25 \property A.B = #C                \set A.B = #C
26 \property A.B \unset              \unset A.B
27 \property A.B \set #C = #D        \override A.B #C = #D 
28 \property A.B \override #C = #D   (removed)
29 \property A.B \revert #C          \revert A.B #C
30 @end example
31
32 Furthermore, if @code{A} is left out, the bottommost context is used
33 by default.  In other words, it is no longer necessary to explicitly
34 mention @code{Voice}, @code{Lyrics} or @code{ChordNames}. 
35
36 Old:
37
38 @example
39    \property Voice.autoBeaming = ##f
40    \property Staff.TimeSignature \set #'style = #'C
41 @end example
42
43 New:
44
45 @example
46    \set autoBeaming = ##f
47    \override Staff.TimeSignature #'style = #'C
48 @end example
49
50
51 @item Tweaks  made with @code{\override} and @code{\revert} no longer
52 hide tweaks at higher context levels.
53
54 @item Melismata in lyrics are also properly handled  in the MIDI output.
55
56 @item The lilypond-book script has been rewritten.
57 It is shorter, cleaner and faster.  The special construct
58 @code{mbinclude} has been removed, plain @code{@@include} or
59 @code{\input} can be used now.
60
61 @ignore
62 It now supports
63 running convert-ly on the lilypond snippets like so:
64 @example
65     lilypond-book --filter='convert-ly --from=2.0.0' my-book.tely
66 @end example
67 @end ignore
68
69 @item The @code{LyricsVoice} context has been removed. Lyrics should only
70 be constructed in @code{Lyrics}.
71
72 @item The @code{Thread} context has been removed. Note heads and rests
73 are now constructed at @code{Voice} level.
74
75 @item  Harmonic notes can now be entered as
76
77 @example
78    <c' g''\harmonic>
79 @end example
80
81 @item Drum notation is now supported  as a regular feature:
82 percussion may be entered in @code{\drums} mode, and printed or
83 performed in a @code{DrumStaff} context:
84
85 @example
86   \score @{
87     \drums \new DrumStaff @{ hihat4 cowbell8 @}
88   @}
89 @end example
90
91 @item The automatic staff changer was internally rewritten. As a
92 result, the syntax has been simplified as well:
93
94 @example
95   \autochange @var{the music}
96 @end example
97
98 @item The ergonomic syntax of @code{\markup} now has an equivalent in
99 Scheme. The @code{markup*} macro creates such objects; the following
100 two markup commands are equivalent:
101 @example
102  f4^#(markup* #:raise 0.2 #:bold "hi")
103  f4^\markup @{ \raise #0.2 \bold hi  @}
104 @end example
105
106 @item Voice names, for vocal lines, have been added. They are similar
107 to instrument names.   They can be set by defining @code{vocalName}
108 and @code{vocNam}.
109
110 @item Safe mode has been reinstated for lilypond.
111 When lilypond is invoked with @code{--safe-mode}, @TeX{} and
112 PostScript file output is disallowed, and lilypond-bin is invoked with
113 @code{--safe-mode}, the user's Guile expressions are evaluated in a
114 safe environment and file inclusion is not allowed.
115
116 Warning: this does not protect against denial-of-service attacks using
117 Guile, @TeX{} or PostScript.
118
119 (This feature is still experimental.)
120
121 @item There is now a Scheme macro for defining markup
122 commands. Special mark-up commands can be defined in user-files too.
123
124 @item Many fixes for dimension scaling have been made,
125 resulting in correct results for scores that mix staves in different
126 sizes.
127
128 @item Improved robustness when  layout properties are accidentally removed.  
129
130 @item A  more cleanly constructed part combiner has been installed.
131 It is more robust and less buggy. The part-combiner can be used with
132 @example
133   \partcombine @var{mus1} @var{mus2}
134 @end example
135
136 @noindent
137 See @file{input/regression/new-part-combine.ly} for an example.
138
139 @item Formatting of rehearsal marks has been improved. The @code{\mark}
140 command now only does automatic incrementing for marks specified as
141 integer. For example, @code{\mark #1} will print an A in the default
142 style.  See @file{input/regression/rehearsal-mark-letter.ly},
143 @file{input/regression/rehearsal-mark-number.ly}.
144
145 @item Formatting of ottava brackets has been much improved.
146
147 @item Objects in the output can now be documented: the following fragment
148  boxes the note head, and adds the text ``heads or tails?'' three
149 spaces below the box.
150
151 @example
152        \context Voice \applyoutput #(add-balloon-text
153                                      'NoteHead "heads, or tails?"
154                                      '(0 . -3))
155
156       
157        c8
158 @end example
159
160
161 @item Default staff sizes are now scalable. There are two new mechanisms for
162 setting staff sizes. Both are demonstrated in this fragment:
163
164 @example
165   #(set-global-staff-size 15)
166   \paper @{
167     #(paper-set-staff-size (* 15 pt))
168   @}   
169 @end example
170
171
172 @noindent
173 Both have the same effect on the global layout of a piece. Similarly,
174 the paper size may be changed as follows
175
176 @example
177   #(set-paper-size "a4")
178 @end example 
179
180
181 @item Warnings for bar check errors are more cleverly printed.  This
182 makes @code{barCheckSynchronize} superfluous, so it is now switched
183 off by default.
184
185 Warning: this will cause problems in scores that use bar checks to
186 shorten measures.
187
188 @item The black note head was made a little rounder, which causes a less
189  frantic graphic impression.
190
191 @item
192 A more concise syntax for checking octaves was introduced. A note may
193 be followed by @code{=}@var{quotes} which indicates what its absolute
194 octave should be.  In the following example, 
195
196 @example
197   \relative c'' @{ c='' b=' d,='' @}        
198 @end example
199
200 @noindent
201 the d will generate a warning, because a d'' is
202 expected, but a d' is found.
203 @c @code adds ` ' very confusing.
204
205 @item There is a new mechanism for putting lyrics to melodies.
206 With this mechanism, @code{LyricVoice}s can be put melodies
207 individually, allowing for different melismatic sections in every
208 @code{LyricVoice}. See @file{input/regression/lyric-combine-new.ly}.
209
210 @item Bar lines may now be dotted.
211
212
213 @item The documentation now has links to a wiki, where everyone can
214 add personal comments to the manual.
215
216 @item Contexts may now be changed locally for an isolated music
217 expression. For example,
218   
219 @example
220   \new Voice \with @{
221      \consists "Pitch_squash_engraver"
222   @} @{
223     c'4
224   @}
225 @end example
226
227 @item The syntax for changing staffs has changed. The keyword
228 @code{\change} should now be used, e.g.
229
230 @example
231   \change Staff = up
232 @end example 
233
234 @item Features of spanner contexts, like @code{Staff}, can now be changed
235   using @code{\property}, eg.
236
237 @example
238   \new Staff @{
239        \property Staff.StaffSymbol \set #'line-count = #4
240        c'4
241   @} 
242 @end example
243
244 @noindent
245 puts a quarter note C on a staff with 4 lines.  
246
247
248 @item Multi measure rests are now truly centered between the
249 clefs/barlines of the staff, their position is independent of symbols
250 on the other staffs.
251
252 @item Collision resolution for dots in chords has been improved greatly. 
253
254 @item
255 Spacing following barlines was improved for widely stretched lines.
256
257 @item
258 Lyric hyphens and extenders now conform to standard typesetting
259 practice.
260
261 @item
262 Lyrics are now aligned under note heads conforming to engraving
263 standards. The responsible code has been rewritten, and is drastically
264 simpler from the previous version. To aid this rewrite, the syntactic
265 function of the extender line ( __ ) has been changed: it is now
266 attached to the lyric syllable.
267
268 @item
269 When redefining a context, the associated identifier is also
270 updated. For example, after reading the following snippet,
271 @example
272  \translator @{
273         \ScoreContext
274         autoBeaming = ##f
275  @}
276 @end example
277 the definition of @code{ScoreContext} is updated to include the changed
278 setting.
279
280
281 @item
282 The weight of the stafflines is now heavier at smaller staff sizes.
283 The font has been modified to match this look: at smaller sizes, the
284 font is heavier and the note heads are more rounded.
285
286 @item Processing scores is now done while parsing the file. New
287 Scheme functions give more flexibility: for example, it is now possible
288 interpret a score, collecting synchronized musical events in a list, and
289 manipulate that information using inline Scheme. For an example, see
290 @file{input/no-notation/recording.ly}.
291
292 @item Font sizes can now truly be scaled continuously: the  @code{font-size}
293 is similar to the old @code{font-relative-size}, but may be set to
294 fractional values; the closest design size will be scaled to achieve
295 the desired size. As a side-effect, there are now no longer
296 limitations in using smaller fonts (eg. grace notes) at small staff
297 sizes.
298
299 @item Stem tips are now also engraved with rounded corners.
300
301 @item
302 The placement of accidentals on chords and ledgered notes is improved.
303
304 @end itemize
305
306
307 @chapter New features in 2.0 since 1.8
308
309 @itemize
310
311 @item
312 Crescendos can now be drawn dotted or dashed.
313
314 @item
315 Quarter tones are now supported. They are entered by suffixing
316 @code{ih} for a half-sharp and @code{eh} for a half-flat. Hence, the
317 following is an ascending list of pitches:
318
319 @example
320   ceses ceseh ces ceh c cih cis cisih cisis
321 @end example
322
323 @item
324 The following constructs have been removed from the syntax:
325
326 @example
327   \duration #SCHEME-DURATION
328   \pitch #SCHEME-PITCH
329   \outputproperty @var{func} @var{symbol} = @var{value}
330 @end example
331
332 For @code{\outputproperty}, the following may be substituted:
333
334 @example
335    \applyoutput #(outputproperty-compatibility @var{func}
336                   @var{symbol} @var{value}) 
337 @end example 
338
339 @item
340 Clefs may now be transposed arbitrarily, for example
341
342 @example
343   \clef "G_8"
344   \clef "G_15"
345   \clef "G_9"
346 @end example
347
348
349 @item
350 The syntax for chords and simultaneous music have changed.
351 Chords are entered as
352
353 @example
354    <@var{pitches}>
355 @end example
356
357 while simultaneous music is entered as
358
359 @example
360    <<@var{..music list..}>>
361 @end example
362
363 In effect, the meanings of both have been swapped relative to their 1.8
364 definition.  The syntax for lists in @code{\markup} has changed
365 alongside, but figured bass mode was not  changed, i.e.:
366
367 @example
368   \markup @{ \center <@var{..list of markups..}> @}
369   \figure @{ <@var{figures}> @}
370 @end example
371
372 As chords the more often used than simultaneous music, this change will
373 save keystrokes.
374
375 @item
376 Each music expression can now be tagged, to make different printed
377 versions from the same music expression.  In the following example,
378 we see two versions of a piece of music, one for the full score, and
379 one with cue notes for the instrumental part:
380
381 @example
382 << \tag #'part <<
383      @{ c4 f2 g4 @}      % in the part, we have cue-notes  
384      \\ R1 >>
385   \tag #'score R1  % in the score: only a rest
386 >>
387 @end example
388  
389 The same can be applied to articulations, texts, etc.: they are
390 made by prepending
391
392 @example
393         -\tag #@var{your-tags} 
394 @end example
395
396 to an articulation, for example, 
397
398 @example
399         c4-\tag #'with-fingerings -4 -\tag #'with-strings \6
400 @end example
401
402 This defines a note, which has a conditional fingering and a
403 string-number indication.
404
405 @item
406 The settings for chord-fingering are more flexible. You can specify a
407 list where fingerings may be placed, eg.
408
409 @example
410         \property Voice.fingeringOrientations = #'(left down)
411 @end example
412
413 This will put the fingering for the lowest note below the chord, and the
414 rest to the left.
415
416 @item
417 The script previously known as @code{ly2dvi} has been renamed to
418 @code{lilypond}. The binary itself is now installed as
419 @code{lilypond-bin}.
420
421 @item
422 Markup text (ie. general text formatting) may now be used for lyrics too. 
423
424 @item
425 Two new commands for grace notes have been added, @code{\acciaccatura}
426 and @code{\appoggiatura},
427
428 @example
429   \appoggiatura f8 e4
430   \acciaccatura g8 f4
431 @end example
432
433 Both reflect the traditional meanings of acciaccatura and appogiatura,
434 and both insert insert a slur from the first grace note to the main
435 note.
436
437 @item 
438 Layout options for grace notes are now stored in a context property,
439 and may now be set separately from musical content.
440
441 @item
442 The @code{\new} command will create a context with a unique
443 name automatically. Hence, for multi-staff scores, it is no longer
444 necessary to invent arbitrary context names. For example, a two-staff
445 score may be created by
446
447 @example
448   \simultaneous @{
449     \new Staff @{ @var{notes for 1st staff} @}
450     \new Staff @{ @var{notes for 2nd staff} @}
451   @}
452 @end example
453
454
455
456 @item
457 Octave checks make octave errors easier to correct.
458 The syntax is 
459
460 @example
461   \octave @var{pitch}
462 @end example
463
464 This checks that @var{pitch} (without octave) yields @var{pitch} (with
465 octave) in \relative mode. If not, a warning is printed, and the
466 octave is corrected.
467
468 @item
469 All articulations must now be entered postfix. For example,
470
471 @example
472         c8[( d8]) 
473 @end example
474
475 @noindent
476 is a pair of beamed slurred eighth notes.
477
478 @item
479 The definition of @code{\relative} has been simplified.  Octaves are
480 now always propagated in the order that music is entered. In the
481 following example,  
482
483 @example
484   PRE
485   \repeat "unfold" 3  BODY \alternative @{ ALT1 ALT2 @}
486   POST
487 @end example
488
489 @noindent
490 the octave of BODY is based on PRE, the starting octave of ALT1 on
491 BODY, the starting octave of ALT2 on ALT1, and the starting octave of
492 POST on ALT2.
493
494 The same mechanism is used for all other music expressions, except the
495 chord. Backwards compatibility is retained through a special program option,
496 which is set through 
497
498 @example
499   #(ly:set-option 'old-relative)
500 @end example
501
502 @item
503 Windows users can double click a @code{.ly} file to process and view
504 it automagically through the new @code{lily-wins} frontend.
505
506 @end itemize
507
508
509
510
511 @chapter New features in 1.8 since 1.6
512
513 @itemize
514
515 @item 
516 The chord entry code has been completely rewritten. It is now
517 cleaner and more flexible.
518
519 @item 
520 A new syntax has been added for text entry.  This syntax is more
521 friendly than the old mechanism, and it is implemented in a more
522 robust and modular way. For more information, refer to the section on
523 "Text markup" in the notation manual.
524
525 @item 
526 The integration of the input language and Scheme has been made deeper:
527 you can now use LilyPond identifiers in Scheme, and use Scheme
528 expressions instead of LilyPond identifiers.
529
530 @item 
531 The internal representation of music has been cleaned up completely
532 and converted to Scheme data structures.  The representation may be
533 exported as XML.
534
535 @item 
536 A new uniform postfix syntax for articulation has been introduced.
537 A beamed slurred pair of eighth notes can be entered as
538
539 @example
540         c8-[-( d8-]-) 
541 @end example
542
543 In version 2.0, postfix syntax will be the only syntax
544 available, and the dashes will become optional.
545
546 This will simplify the language: all articulations can be entered as
547 postfix, in any order.
548
549 @item 
550 A new syntax has been added for chords:
551
552
553 @example
554         << PITCHES >>
555 @end example 
556
557 It is not necessary to update files to this syntax, but it will be for
558 using LilyPond version 2.0.  In version 2.0, this syntax will be
559 changed to
560
561 @example
562         < PITCHES >
563 @end example
564
565 for chords, and
566
567 @example
568         \simultaneous @{ .. @} 
569 @end example
570
571 for simultaneous music.
572
573 To convert your files from <PITCHES> to <<PITCHES>>, use the script
574 included in buildscripts/convert-new-chords.py
575
576 This change was introduced for the following reasons
577
578 @itemize @bullet
579 @item
580 It solves the "start score with chord" problem, where you have to
581   state \context Voice explicitly when a chord was the start of a
582   Staff or Score.
583 @item
584 With the new syntax, it is possible to distinguish between
585   articulations (or fingerings) which are for a single chord note,
586   and which are for the entire chord. This allows for per-note
587   fingerings, and is more logical on the whole.
588 @end itemize
589
590 @item 
591 User code may now be executed during interpreting.  The syntax for
592 this code is
593
594 @example
595         \applycontext #SCHEME-FUNCTION
596 @end example
597
598 @item 
599 User code may now be executed on arbitrary grobs during interpreting.
600 The syntax for this feature is
601
602 @example
603         \applyoutput #SCHEME-FUNCTION
604 @end example
605
606 @noindent
607 SCHEME-FUNCTION takes a single argument, and is called for every grob
608 that is created in the current context.
609
610 @item 
611 New algorithms for chord-name formatting have been installed. They
612 can be tuned and have ergonomic syntax for entering exceptions.
613
614 @item 
615 Texts may now be put on multimeasure rests, e.g.
616
617 @example
618         R1*20^\markup @{ "GP" @}
619 @end example
620
621 @item
622 Ancient notation now prints ligatures in Gregorian square neumes
623 notation, roughly following the typographical style of the Liber
624 hymnarius of Solesmes, published in 1983.  Ligatures are still printed
625 without the proper line breaking and horizontal spacing.
626
627 @item 
628 Glissandi can now be printed using the zigzag style.
629
630 @item 
631 LilyPond can now print clusters. The syntax is
632
633 @example
634         \apply #notes-to-clusters @{ NOTE NOTE .. @}
635 @end example
636
637 @item
638 For irregular meters, beat grouping marks can be printed. The
639 syntax for this is
640
641 @example
642         #(set-time-signature 7 8 '(3 2 2))
643 @end example
644
645
646 @item 
647 Nested horizontal brackets for music analysis can now be printed:
648
649 @example
650         NOTE-\startGroup
651                 ..
652         NOTE-\stopGroup
653 @end example
654
655
656 @item  Ottava brackets are now fully supported as a feature.  The syntax
657 is
658
659 @example
660         #(set-octavation 1)
661 @end example
662
663
664 @item  Metronome markings are printed when a \tempo command is processed.
665
666
667
668 @item Fingerings can be put on chords horizontally.
669
670
671
672 @item  The appearance of various glyphs has been fine-tuned.
673
674
675
676 @item  Different types of percent style repeats may now be nested.
677
678
679
680 @item  The emacs support has been extended.
681
682
683 @item 
684 The manual has been completely revised and extended.
685
686 @end itemize
687
688 @chapter New features in 1.6 since 1.4
689
690
691 @itemize @bullet
692
693 @item
694 Support for figured bass and tablature.
695
696 @item
697 Completely rewritten beam formatting: provides much better output
698 now.
699
700
701 @item
702 Completely revised and improved music font.
703
704
705 @item
706 Completely rewritten MIDI import support.
707
708 @item
709 Completely rewritten grace note support. Practically speaking this
710 means that grace notes can be slurred to normal normal notes.
711
712
713 @item
714 Improved accidental handling and formatting: styles for producing
715 cautionaries may vary, and complex collisions between accidentals of a
716 chord are handled much better.
717
718 @item
719 Better spacing: both globally and locally. This includes subtle
720 details like optical stem spacing.
721
722 @item
723 More support for ancient notation: mensural ligatures, ambitus
724 (pitch range) of voices, more shapes, etc.
725
726 @item
727 More support for piano notation: bracket pedals, directed arpeggios,
728 arpeggio brackets.
729
730 @item
731 Easier music polyphonic music entry.
732
733 @item
734 More extensibility, many speedups and bugfixes
735
736 @item
737 The manual has been thoroughly revised.
738
739 @item
740 Development is now hosted at http://savannah.gnu.org, and sources
741 can be downloaded through anonymous CVS.
742
743 @item
744 Support for windows: LilyPond is part of the cygwin distribution,
745 which comes with a user-friendly installer.
746
747 @end itemize