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