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