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