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