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