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