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