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