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