From: Jan Nieuwenhuizen Date: Sat, 12 May 2001 10:49:04 +0000 (+0200) Subject: patch::: 1.4.0.jcn2 X-Git-Tag: release/1.4.1~6 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=eeef5f8c434e1acba302e522d219ceb0b249b048;p=lilypond.git patch::: 1.4.0.jcn2 1.4.0.jcn2 ========== * Bugfix: trend of broken slurs with user-overridden stem attachments. * Further Timmification of tutorial. --- diff --git a/CHANGES b/CHANGES index e2b25f4f3a..61be7926bd 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,15 @@ +1.4.0.jcn2 +========== + +* Bugfix: trend of broken slurs with user-overridden stem attachments. + +* Further Timmification of tutorial. + 1.4.0.jcn1 ========== +* Bugfix redhat.spec: use root attributes on files. + * Bugfix: typo in update-lily, re-set download url to /development. * Removed some empty files. diff --git a/Documentation/regression-test.tely b/Documentation/regression-test.tely index d95171e7ff..cf40a7a182 100644 --- a/Documentation/regression-test.tely +++ b/Documentation/regression-test.tely @@ -119,6 +119,8 @@ and documenting bugfixes. @lilypondfile[printfilename]{slur-attachment-override.ly} +@lilypondfile[printfilename]{slur-stem-broken.ly} + @lilypondfile[printfilename]{drarn-slurs.ly} @lilypondfile[printfilename]{phrasing-slur.ly} diff --git a/Documentation/user/macros.itexi b/Documentation/user/macros.itexi index 7d8699e0b8..b7185a03ba 100644 --- a/Documentation/user/macros.itexi +++ b/Documentation/user/macros.itexi @@ -18,7 +18,7 @@ @macro separate @tex -\\hbox to\\hsize{\\hfill\\vrule width1.4 cm height1.0pt\\hfill} +\\hbox to\\hsize{\\hfill\\smallrm*\\textrm*\\smallrm*\\hfill} @end tex @end macro diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index 085b7865ce..9c0fed6e04 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -47,7 +47,7 @@ produce most complex music with LilyPond. @c @node Music language of LilyPond @c @section Music language of LilyPond -This section shows how easy making music with LilyPond actually is. If +This section shows how easy writing music with LilyPond actually is. If you have not used LilyPond before, this section is for you. You get a simple note by typing its note name, from @code{a} through @@ -57,6 +57,7 @@ You get a simple note by typing its note name, from @code{a} through @example c d e f g a b @end example + @lilypond[fragment] \property Score.timing = ##f \property Staff.TimeSignature = \turnOff @@ -72,12 +73,14 @@ whole note, ``@code{2}'' for a halve note, and so on: @example a1 a2 a4 a16 a32 @end example + @lilypond[fragment] \property Score.timing = ##f \property Staff.TimeSignature = \turnOff \property Staff.noAutoBeaming = ##t \property Staff.Clef = \turnOff \transpose c'' { a1 a2 a4 a16 a32 } +s16_" " @end lilypond @end quotation @separate @@ -88,11 +91,13 @@ If you don't specify a duration, the previous duration is used: @example a a a2 a @end example + @lilypond[fragment] \property Score.timing = ##f \property Staff.TimeSignature = \turnOff \property Staff.Clef = \turnOff \transpose c'' { a a a2 a } +s16_" " @end lilypond @end quotation @separate @@ -103,11 +108,13 @@ A sharp is made by adding ``@code{is}'', a flat by adding ``@code{es}'': @example cis1 ees fisis aeses @end example + @lilypond[fragment] \property Score.timing = ##f \property Staff.TimeSignature = \turnOff \property Staff.Clef = \turnOff \transpose c'' { cis1 ees fisis aeses } +s16_" " @end lilypond @end quotation @separate @@ -117,37 +124,59 @@ Add a dot ``@code{.}'' after the duration to get a dotted note: @example a2. a4 a8. a16 @end example + @lilypond[fragment] \property Score.timing = ##f \property Staff.TimeSignature = \turnOff \property Staff.Clef = \turnOff \transpose c'' { a2. a4 a8. a16 } +s16_" " @end lilypond @end quotation @separate -The meter (or time signature) can be set the ``@code{\time}'' command: +The meter (or time signature) can be set with the ``@code{\time}'' command: @quotation @example \time 3/4 +\time 6/8 +\time 4/4 @end example + @lilypond[fragment] +\property Staff.Clef = \turnOff \time 3/4 -s2_" " +s4_" " +\time 6/8 +s4_" " +\time 4/4 +s16_" " @end lilypond @end quotation @separate -The clef is set using ``@code{\clef}'': +The clef can be set using the ``@code{\clef}'' command: @quotation @example +\clef violin \clef bass +\clef alto +\clef tenor @end example + @lilypond[fragment] +\property Score.timing = ##f +\property Staff.TimeSignature = \turnOff +\clef violin +s4_" " \clef bass -s2_" " +s4_" " +\clef alto +s4_" " +\clef tenor +s16_" " @end lilypond @end quotation @separate @@ -168,14 +197,14 @@ LilyPond then knows that music follows (and not lyrics, for example): @end quotation @separate -Actually, this piece of music is ready to be printed. This is done by -combining the music with a printing command. +At this point, the piece of music is ready to be printed. This is done +by combining the music with a printing command. The printing command is the so-called ``@code{\paper}'' block. You will see later that the \paper block is necessary to customize all kinds of printing specifics. The music and the \paper block are combined by -enclosing them in ``@code{\score @{ ... @}}''. This is a full LilyPond -source file: +enclosing them in ``@code{\score @{ ... @}}''. This is what a full +LilyPond source file looks like: @quotation @lilypond[verbatim] @@ -192,30 +221,20 @@ source file: @end quotation @separate +We continue with the introduction of the remaining musical constructs. + Rests are entered just like notes with the name ``@code{r}'': @quotation @example r2 r4 r8 r16 @end example -@lilypond[fragment] - \property Score.timing = ##f - \property Staff.TimeSignature = \turnOff - % \property Staff.Clef = \turnOff - % \property Staff.whichBar = #"" - r2 r4 r8 r16 -@end lilypond -@end quotation -@separate - -To raise a note by an octave, add a high quote @code{'} (apostrophe) to -the note name, to lower a note one octave, add a ``low quote'' @code{,} -(a comma). The central C is @code{c'}: -@c huh, why exactly was central C == c'? -@quotation -@lilypond[verbatim,fragment] -c'4 c'' c''' c, +@lilypond[fragment] +\property Score.timing = ##f +\property Staff.TimeSignature = \turnOff +r2 r4 r8 r16 +s16_" " @end lilypond @end quotation @separate @@ -241,6 +260,24 @@ g' @end lilypond @end quotation +To raise a note by an octave, add a high quote @code{'} (apostrophe) to +the note name, to lower a note one octave, add a ``low quote'' @code{,} +(a comma). The central C is @code{c'}: +@c huh, why exactly was central C == c'? + +@quotation +@example +c'4 c'' c''' \clef bass c c, +@end example + +@lilypond[fragment] +\property Score.timing = ##f +\property Staff.TimeSignature = \turnOff +c'4 c'' c''' \clef bass c c, +@end lilypond +@end quotation +@separate + @c bit on the long/complex/scary taste This example shows notes, ties, octave marks, and rests in action. Don't worry about all the quotes. @@ -310,8 +347,8 @@ You can make a large interval by adding octaviation quotes. For example, @separate A slur is drawn across many notes, and indicates bound articulation -(legato). The starting note and ending note with a ``@code{(}'' and a -``@code{)}'' respectively: +(legato). The starting note and ending note are marked with a +``@code{(}'' and a ``@code{)}'' respectively: @quotation @lilypond[fragment,relative 1, verbatim] @@ -342,9 +379,9 @@ and @code{]}: @end quotation @separate -You can make more than one staff, by specifying @code{\context Staff} before -snippets of music, and combining those snippets in @code{<} and -@code{>}, as is demonstrated here: +To print more than one staff, each piece of music that makes up a staff +is marked by adding @code{\context Staff} before it. These staffs can +be grouped inside @code{<} and @code{>}, as is demonstrated here: @quotation @lilypond[fragment,verbatim] @@ -355,9 +392,9 @@ snippets of music, and combining those snippets in @code{<} and @end lilypond @end quotation -Here, @code{staffA} and @code{staffB} are names that you give them to -the staff. For now, it doesn't matter what names you give them, as long -as they are different. +In this example, @code{staffA} and @code{staffB} are names that are +given to the staffs. For now, it doesn't matter what names you give, as +long as each staffs has a unique name. @separate @@ -409,21 +446,24 @@ c2 \< \! c2-\ff \> c2 \! c2 Chords can be made by surrounding notes with @code{<} and @code{>}: @quotation @lilypond[relative 0, fragment,verbatim] - r4 +r4 @end lilypond @end quotation @separate +@ignore @c te diepzinnig? - +@c hmm, te losjes, iig In general, @code{ < @var{stuff} > } is used when @var{stuff} all happens at the same time, like in chords, or (like in the two-staff example above) in a bunch of stacked staffs. +@end ignore -Of course, you can combine beams and ties with chords: +Of course, you can combine beams and ties with chords. Notice where the +beam and tie markings are places: @quotation @lilypond[relative 0, fragment,verbatim] - r4 [ ] ~ +r4 [ ] ~ @end lilypond @end quotation @@ -485,6 +525,7 @@ with the basics. It deals with some of the more advanced features of LilyPond. Topics include lyrics, chords, orchestral scores and parts, fine tuning output, polyphonic music, and integrating text and music. + @node Running LilyPond @section Running LilyPond @@ -501,12 +542,16 @@ write LilyPond input. The instructions that follow are for Unix. Windows instructions are given at the end of this section. Start with opening a terminal window, and start up a text editor. For example, start an xterm and execute -@code{joe}. Enter the following -input, and save the file as @file{test.ly}. - +@code{joe}. Enter the following input, and save the file as +@file{test.ly}. -If this code looks intimidating you, then don't worry, we explain all -about it in the next section. +@quotation +@example +\score @{ + \notes @{ c'4 e' g' @} +@} +@end example +@end quotation @cindex ly2dvi @@ -552,8 +597,9 @@ produce a window with some music notation on your screen: kghostview test.ps @end example @end quotation -When you're satisfied with the result, you can print the PS file by -clicking File/Print inside ghostview. +If you are satisfied with the looks of the music displayed on your +screen, you can print the PS file by clicking File/Print inside +ghostview. The DVI file (@file{test.dvi}) contains the same sheet music in a different format. DVI files are more easily processed by the computer, @@ -629,8 +675,9 @@ is included in the distribution as @file{minuet.ly}. \bar "|." } \paper { - % standard settings are too wide for a book - linewidth = 14.0 \cm + % standard settings are too big and wide for a book + indent = 1.0 \cm + linewidth = 15.0 \cm } } @end lilypond @@ -897,7 +944,9 @@ bar, we must explicitely request one, using @code{"|."}. @example \paper @{ - linewidth = 14.0\cm + % standard settings are too big and wide for a book + indent = 1.0\cm + linewidth = 15.0\cm @} @end example diff --git a/VERSION b/VERSION index 75d855e626..89e61722d4 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=4 PATCH_LEVEL=0 -MY_PATCH_LEVEL=jcn1 +MY_PATCH_LEVEL=jcn2 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/regression/slur-stem-broken.ly b/input/regression/slur-stem-broken.ly new file mode 100644 index 0000000000..30372fa362 --- /dev/null +++ b/input/regression/slur-stem-broken.ly @@ -0,0 +1,13 @@ +\header { +texidoc="Trend of broken slur with user-overridden stem attachment" +} +\score { + \notes\relative c' { + \property Voice.Slur \override #'attachment = #'(stem . stem) + f( c' c c \break + c c c \stemUp ) c + } + \paper { + linewidth=40*\staffspace + } +} diff --git a/lily/slur.cc b/lily/slur.cc index 3e2743385b..7f04c7c621 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -9,7 +9,6 @@ /* [TODO] - * fix broken interstaff slurs * should avoid stafflines with horizontal part. * begin and end should be treated as a/acknowledge Scripts. * smart changing of endings @@ -316,27 +315,21 @@ Slur::get_attachment (Grob *me, Direction dir, } } } - else if (str == "loose-end") + /* + If we're not a note_column, we can't be anything but a loose-end. + But if user has set (attachment . (stem . stem)), our string is + stem, not loose-end. + + Hmm, maybe after-line-breaking should set this to loose-end? */ + else // if (str == "loose-end") { SCM other_a = dir == LEFT ? gh_cdr (s) : gh_car (s); if (ly_symbol2string (other_a) != "loose-end") - { -#if 0 - /* - The braindead way: horizontal - */ - o = Offset (0, get_attachment (me, -dir, common)[Y_AXIS]); -#else - o = broken_trend_offset (me, dir); -#endif - - - } - + o = broken_trend_offset (me, dir); } SCM alist = me->get_grob_property ("extremity-offset-alist"); -int stemdir = stem ? Stem::get_direction (stem) : 1; + int stemdir = stem ? Stem::get_direction (stem) : 1; int slurdir = gh_scm2int (me->get_grob_property ("direction")); SCM l = scm_assoc (scm_listify (a,