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