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