From 5d5ca8642dca9169ddf78949c41381e5f1380975 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Fri, 26 Jan 2001 14:59:06 +0100 Subject: [PATCH] patch::: 1.3.125.jcn2 1.3.125.jcn2 ============ * Moved feature and regression-test input to input/feature, input/regression. * Added some regtests. * Bugfix: auto-knee for beam over rest. * Fixes for Coriolan and viola Solo Cello Suites. * Replaced generic 'collapse-height' for System_start_delimiter with brace-collapse-height, bracket-collapse-height, bar-line-collapse-height. * Bugfix: measure System_start_delimiter's *-collapse-height in staff-space. --- CHANGES | 18 + Documentation/regression-test.tely | 2 + VERSION | 2 +- input/GNUmakefile | 2 +- input/bugs/hara-kiri-short.ly | 40 -- input/features/GNUmakefile | 6 + input/features/beam-count.ly | 20 + input/features/beam-dir-function.ly | 40 ++ input/features/beam-neutral-direction.ly | 13 + input/features/beam-position.ly | 13 + input/features/beam-rest.ly | 17 + input/features/beam-slope.ly | 13 + input/features/crescendo-text.ly | 15 + input/features/embedded-postscript.ly | 10 + input/features/embedded-tex.ly | 11 + input/features/follow-thread.ly | 26 + input/features/fragment.ly | 10 + input/features/metronome.ly | 30 ++ input/features/move-notehead.ly | 13 + input/features/move-specific-text.ly | 12 + input/features/no-bar-lines.ly | 15 + input/features/no-staff.ly | 13 + input/features/ophee-slurs.ly | 18 + input/features/ottava.ly | 16 + input/features/part-combine.ly | 37 ++ input/features/reverse-music.ly | 30 ++ input/features/slur-attachment-override.ly | 21 + input/features/slur-attachment.ly | 17 + input/features/slur-ugly.ly | 35 ++ input/features/smart-transpose.ly | 90 ++++ input/regression/GNUmakefile | 6 + input/regression/accidental-single-double.ly | 29 ++ input/regression/accidental.ly | 15 + input/regression/arpeggio.ly | 23 + input/regression/auto-beam-bar.ly | 20 + input/regression/auto-change.ly | 20 + input/regression/auto-isknee.ly | 25 + input/regression/auto-knee.ly | 17 + input/regression/bar-number.ly | 19 + input/regression/bar-scripts.ly | 41 ++ input/regression/beam-cross-staff.ly | 32 ++ input/regression/beam-extreme.ly | 19 + input/regression/beam-length.ly | 14 + input/regression/beam-position.ly | 22 + input/regression/beaming.ly | 27 + input/regression/between-systems.ly | 19 + input/regression/break.ly | 17 + input/regression/breathing-sign.ly | 27 + input/regression/chord-names.ly | 37 ++ input/regression/chord-tremolo.ly | 20 + input/regression/clefs.ly | 37 ++ input/regression/collisions.ly | 79 +++ input/regression/dots.ly | 30 ++ input/regression/dyn-line.ly | 27 + input/regression/generic-output-property.ly | 26 + input/regression/generic-property-override.ly | 17 + input/regression/glissando.ly | 30 ++ input/regression/grace.ly | 30 ++ input/regression/hara-kiri-short.ly | 40 ++ input/regression/keys.ly | 26 + input/regression/lyric-combine.ly | 54 ++ input/regression/lyrics-bar.ly | 39 ++ input/regression/lyrics-multi-stanza.ly | 154 ++++++ input/regression/mm-rests2.ly | 30 ++ input/regression/molecule-hacking.ly | 73 +++ input/regression/multi-measure-rest.ly | 20 + input/regression/non-empty-text.ly | 15 + input/regression/noteheadstyle.ly | 63 +++ input/regression/number-staff-lines.ly | 19 + input/regression/repeat-fold.ly | 14 + input/regression/repeat-line-break.ly | 16 + input/regression/repeat-unfold.ly | 25 + input/regression/repeat-volta.ly | 25 + input/regression/rest-collision.ly | 61 +++ input/regression/rest.ly | 16 + input/regression/size11.ly | 10 + input/regression/size13.ly | 2 + input/regression/size16.ly | 2 + input/regression/size20.ly | 2 + input/regression/size23.ly | 2 + input/regression/size26.ly | 2 + input/regression/slur-attachment.ly | 19 + input/regression/slur-broken-trend.ly | 21 + input/regression/slur-cross-staff.ly | 48 ++ input/regression/slur-nice.ly | 23 + input/regression/slur-symmetry-1.ly | 14 + input/regression/slur-symmetry.ly | 14 + input/regression/spacing-loose.ly | 11 + input/regression/spacing-natural.ly | 13 + input/regression/spacing-tight.ly | 21 + input/regression/staccato-pos.ly | 18 + input/regression/staff-margin.ly | 28 + input/regression/stem-direction-down.ly | 15 + input/regression/stem-direction.ly | 23 + input/regression/stem-spacing.ly | 17 + input/regression/stem-tremolo.ly | 29 ++ input/regression/tie-accidental.ly | 37 ++ input/regression/tie-chord.ly | 21 + input/regression/tie.ly | 19 + input/regression/triplets.ly | 27 + input/regression/tup.ly | 19 + input/test/accidental-single-double.ly | 29 -- input/test/accidental.ly | 15 - input/test/arpeggio.ly | 23 - input/test/auto-beam-bar.ly | 20 - input/test/auto-change.ly | 20 - input/test/auto-isknee.ly | 25 - input/test/auto-knee.ly | 17 - input/test/bar-number.ly | 8 - input/test/bar-scripts.ly | 41 -- input/test/beam-cross-staff.ly | 32 -- input/test/beam-dir-function.ly | 40 -- input/test/beam-extreme.ly | 19 - input/test/beam-length.ly | 14 - input/test/beam-position.ly | 22 - input/test/beam-rest.ly | 17 - input/test/beaming.ly | 27 - input/test/between-systems.ly | 19 - input/test/break.ly | 17 - input/test/breathing-sign.ly | 27 - input/test/chord-names.ly | 37 -- input/test/chord-tremolo.ly | 20 - input/test/clefs.ly | 37 -- input/test/collisions.ly | 79 --- input/test/dots.ly | 30 -- input/test/dyn-line.ly | 27 - input/test/follow-thread.ly | 36 -- input/test/generic-output-property.ly | 26 - input/test/generic-property-override.ly | 17 - input/test/glissando.ly | 30 -- input/test/grace.ly | 30 -- input/test/hara-kiri-short.ly | 40 -- input/test/keys.ly | 26 - input/test/lyric-combine.ly | 54 -- input/test/lyrics-bar.ly | 39 -- input/test/lyrics-multi-stanza.ly | 154 ------ input/test/metronome.ly | 32 -- input/test/mm-rests2.ly | 30 -- input/test/molecule-hacking.ly | 73 --- input/test/multi-measure-rest.ly | 20 - input/test/music-apply.ly | 31 -- input/test/non-empty-text.ly | 15 - input/test/noteheadstyle.ly | 63 --- input/test/number-staff-lines.ly | 19 - input/test/ophee-slurs.ly | 19 - input/test/orchestscore.ly | 11 +- input/test/ottava.ly | 22 - input/test/part-combine-score.ly | 482 ++++++++++-------- input/test/part-combine.ly | 51 -- input/test/repeat-fold.ly | 14 - input/test/repeat-line-break.ly | 16 - input/test/repeat-unfold.ly | 25 - input/test/repeat-volta.ly | 25 - input/test/rest-collision.ly | 61 --- input/test/rest.ly | 16 - input/test/size11.ly | 10 - input/test/size13.ly | 2 - input/test/size16.ly | 2 - input/test/size20.ly | 2 - input/test/size23.ly | 2 - input/test/size26.ly | 2 - input/test/slur-attachment-override.ly | 19 - input/test/slur-attachment.ly | 19 - input/test/slur-broken-trend.ly | 21 - input/test/slur-cross-staff.ly | 48 -- input/test/slur-nice.ly | 23 - input/test/slur-symmetry-1.ly | 14 - input/test/slur-symmetry.ly | 14 - input/test/slur-ugly.ly | 35 -- input/test/smart-transpose.ly | 99 ---- input/test/spacing-loose.ly | 11 - input/test/spacing-natural.ly | 13 - input/test/spacing-tight.ly | 21 - input/test/staccato-pos.ly | 18 - input/test/staff-margin.ly | 28 - input/test/stem-direction-down.ly | 15 - input/test/stem-direction.ly | 23 - input/test/stem-spacing.ly | 17 - input/test/stem-tremolo.ly | 29 -- input/test/tie-accidental.ly | 37 -- input/test/tie-chord.ly | 21 - input/test/tie.ly | 19 - input/test/triplets.ly | 27 - input/test/tup.ly | 19 - lily/beam.cc | 20 +- lily/stem.cc | 1 - lily/system-start-delimiter.cc | 25 +- make/ly-rules.make | 6 +- mutopia/Coriolan/bassi.ly | 7 +- mutopia/Coriolan/coriolan-paper.ly | 6 +- mutopia/Coriolan/coriolan-part-paper.ly | 2 +- mutopia/Coriolan/violi.ly | 4 +- .../Solo-Cello-Suites/courante-viola.ly | 2 +- .../J.S.Bach/Solo-Cello-Suites/gigue-viola.ly | 2 +- .../Solo-Cello-Suites/menuetto-viola.ly | 4 +- .../Solo-Cello-Suites/prelude-viola.ly | 2 +- .../Solo-Cello-Suites/sarabande-viola.ly | 2 +- scm/grob-description.scm | 5 +- scm/grob-property-description.scm | 5 +- scripts/ly2dvi.py | 2 + scripts/pmx2ly.py | 14 +- 201 files changed, 2779 insertions(+), 2556 deletions(-) create mode 100644 input/features/GNUmakefile create mode 100644 input/features/beam-count.ly create mode 100644 input/features/beam-dir-function.ly create mode 100644 input/features/beam-neutral-direction.ly create mode 100644 input/features/beam-position.ly create mode 100644 input/features/beam-rest.ly create mode 100644 input/features/beam-slope.ly create mode 100644 input/features/crescendo-text.ly create mode 100644 input/features/embedded-postscript.ly create mode 100644 input/features/embedded-tex.ly create mode 100644 input/features/follow-thread.ly create mode 100644 input/features/fragment.ly create mode 100644 input/features/metronome.ly create mode 100644 input/features/move-notehead.ly create mode 100644 input/features/move-specific-text.ly create mode 100644 input/features/no-bar-lines.ly create mode 100644 input/features/no-staff.ly create mode 100644 input/features/ophee-slurs.ly create mode 100644 input/features/ottava.ly create mode 100644 input/features/part-combine.ly create mode 100644 input/features/reverse-music.ly create mode 100644 input/features/slur-attachment-override.ly create mode 100644 input/features/slur-attachment.ly create mode 100644 input/features/slur-ugly.ly create mode 100644 input/features/smart-transpose.ly create mode 100644 input/regression/GNUmakefile create mode 100644 input/regression/accidental-single-double.ly create mode 100644 input/regression/accidental.ly create mode 100644 input/regression/arpeggio.ly create mode 100644 input/regression/auto-beam-bar.ly create mode 100644 input/regression/auto-change.ly create mode 100644 input/regression/auto-isknee.ly create mode 100644 input/regression/auto-knee.ly create mode 100644 input/regression/bar-number.ly create mode 100644 input/regression/bar-scripts.ly create mode 100644 input/regression/beam-cross-staff.ly create mode 100644 input/regression/beam-extreme.ly create mode 100644 input/regression/beam-length.ly create mode 100644 input/regression/beam-position.ly create mode 100644 input/regression/beaming.ly create mode 100644 input/regression/between-systems.ly create mode 100644 input/regression/break.ly create mode 100644 input/regression/breathing-sign.ly create mode 100644 input/regression/chord-names.ly create mode 100644 input/regression/chord-tremolo.ly create mode 100644 input/regression/clefs.ly create mode 100644 input/regression/collisions.ly create mode 100644 input/regression/dots.ly create mode 100644 input/regression/dyn-line.ly create mode 100644 input/regression/generic-output-property.ly create mode 100644 input/regression/generic-property-override.ly create mode 100644 input/regression/glissando.ly create mode 100644 input/regression/grace.ly create mode 100644 input/regression/hara-kiri-short.ly create mode 100644 input/regression/keys.ly create mode 100644 input/regression/lyric-combine.ly create mode 100644 input/regression/lyrics-bar.ly create mode 100644 input/regression/lyrics-multi-stanza.ly create mode 100644 input/regression/mm-rests2.ly create mode 100644 input/regression/molecule-hacking.ly create mode 100644 input/regression/multi-measure-rest.ly create mode 100644 input/regression/non-empty-text.ly create mode 100644 input/regression/noteheadstyle.ly create mode 100644 input/regression/number-staff-lines.ly create mode 100644 input/regression/repeat-fold.ly create mode 100644 input/regression/repeat-line-break.ly create mode 100644 input/regression/repeat-unfold.ly create mode 100644 input/regression/repeat-volta.ly create mode 100644 input/regression/rest-collision.ly create mode 100644 input/regression/rest.ly create mode 100644 input/regression/size11.ly create mode 100644 input/regression/size13.ly create mode 100644 input/regression/size16.ly create mode 100644 input/regression/size20.ly create mode 100644 input/regression/size23.ly create mode 100644 input/regression/size26.ly create mode 100644 input/regression/slur-attachment.ly create mode 100644 input/regression/slur-broken-trend.ly create mode 100644 input/regression/slur-cross-staff.ly create mode 100644 input/regression/slur-nice.ly create mode 100644 input/regression/slur-symmetry-1.ly create mode 100644 input/regression/slur-symmetry.ly create mode 100644 input/regression/spacing-loose.ly create mode 100644 input/regression/spacing-natural.ly create mode 100644 input/regression/spacing-tight.ly create mode 100644 input/regression/staccato-pos.ly create mode 100644 input/regression/staff-margin.ly create mode 100644 input/regression/stem-direction-down.ly create mode 100644 input/regression/stem-direction.ly create mode 100644 input/regression/stem-spacing.ly create mode 100644 input/regression/stem-tremolo.ly create mode 100644 input/regression/tie-accidental.ly create mode 100644 input/regression/tie-chord.ly create mode 100644 input/regression/tie.ly create mode 100644 input/regression/triplets.ly create mode 100644 input/regression/tup.ly diff --git a/CHANGES b/CHANGES index 02e10f2f61..200fdcb319 100644 --- a/CHANGES +++ b/CHANGES @@ -1,8 +1,26 @@ +1.3.125.jcn2 +============ + +* Moved feature and regression-test input to input/feature, input/regression. + +* Added some regtests. + +* Bugfix: auto-knee for beam over rest. + +* Fixes for Coriolan and viola Solo Cello Suites. + +* Replaced generic 'collapse-height' for System_start_delimiter with +brace-collapse-height, bracket-collapse-height, bar-line-collapse-height. + +* Bugfix: measure System_start_delimiter's *-collapse-height in staff-space. + 1.3.125.jcn1 ============ * Fixed some info and html links. +* Automatic knees now on by default for vertical distances >= 7 staff-space. + 1.3.124.jcn3 ============ diff --git a/Documentation/regression-test.tely b/Documentation/regression-test.tely index 95d4f9b9ce..f7fb0eb9d2 100644 --- a/Documentation/regression-test.tely +++ b/Documentation/regression-test.tely @@ -184,6 +184,8 @@ and documenting bugfixes. @lilypondfile[printfilename]{break.ly} +@lilypondfile[printfilename]{bar-number.ly} + @lilypondfile[printfilename]{bar-scripts.ly} @lilypondfile[printfilename]{staff-margin.ly} diff --git a/VERSION b/VERSION index ec23b1ba76..12fd5a4e59 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 PATCH_LEVEL=125 -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/GNUmakefile b/input/GNUmakefile index f9ab946b3a..20cb71ba46 100644 --- a/input/GNUmakefile +++ b/input/GNUmakefile @@ -2,7 +2,7 @@ depth = .. -SUBDIRS=test bugs tutorial +SUBDIRS=bugs features test regression tutorial examples=trip star-spangled-banner paddy scarlatti-test flexamples= diff --git a/input/bugs/hara-kiri-short.ly b/input/bugs/hara-kiri-short.ly index 1cb4fdbedd..e69de29bb2 100644 --- a/input/bugs/hara-kiri-short.ly +++ b/input/bugs/hara-kiri-short.ly @@ -1,40 +0,0 @@ -\header{ -texidoc=" -Hara kiri staffs kill themselves if they are empty. This example really -contains two staffs, but the second contains only spaces, and is -therefore removed. Also, any staff brackets and braces are removed. -"; -} - -\version "1.3.117"; -zager = \context Staff = zager \notes \relative c'' { - \clef treble; - c1 -} - -zoger = \context Staff = zoger \notes \relative c'' { - \clef treble; - \skip 1* 1; -} - -zagers = \context GrandStaff < - \zager - \zoger -> - -\score{ - < - \context StaffGroup = zagers < - \zagers - > - > - \paper{ - linewidth = 80.0\mm; - - \translator { \HaraKiriStaffContext } -%uh? - - } -} - - diff --git a/input/features/GNUmakefile b/input/features/GNUmakefile new file mode 100644 index 0000000000..558771769c --- /dev/null +++ b/input/features/GNUmakefile @@ -0,0 +1,6 @@ +depth = ../.. + +LOCALSTEPMAKE_TEMPLATES=mutopia +include $(depth)/make/stepmake.make + + diff --git a/input/features/beam-count.ly b/input/features/beam-count.ly new file mode 100644 index 0000000000..89167f101e --- /dev/null +++ b/input/features/beam-count.ly @@ -0,0 +1,20 @@ + +fragment = \notes { + f'32 g a b b a g f + + \property Voice.autoBeamSettings + \set #'(end * * * *) = #(make-moment 1 4) + f32 g a b b a g f + + f32 g a + \property Voice.stemRightBeamCount = #1 b + \property Voice.stemLeftBeamCount = #1 b + a g f +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/beam-dir-function.ly b/input/features/beam-dir-function.ly new file mode 100644 index 0000000000..d445468a09 --- /dev/null +++ b/input/features/beam-dir-function.ly @@ -0,0 +1,40 @@ +\header{ +texidoc=" +There are several ways to calculate the direction of a beam + +@table @samp +@item majority +number count of up or down notes +@item mean +mean centre distance of all notes +@item median +mean centre distance weighted per note +@end table + +We should see: + + up down down + + up up down +"; +} + +\score { + \notes \relative c'' { + % the default + %\property Voice.Beam \set #'dir-function = #beam-dir-majority + [d8 a] + \property Voice.Beam \set #'dir-function = #beam-dir-mean + [d a] + \property Voice.Beam \set #'dir-function = #beam-dir-median + [d a] + + \property Voice.Beam \set #'dir-function = #beam-dir-majority + \time 3/8; + [d8 a a] + \property Voice.Beam \set #'dir-function = #beam-dir-mean + [d a a] + \property Voice.Beam \set #'dir-function = #beam-dir-median + [d a a] + } +} diff --git a/input/features/beam-neutral-direction.ly b/input/features/beam-neutral-direction.ly new file mode 100644 index 0000000000..f8e156810c --- /dev/null +++ b/input/features/beam-neutral-direction.ly @@ -0,0 +1,13 @@ + +fragment = \notes { + [b''8 b] + \property Voice.Beam \set #'default-neutral-direction = #-1 + [b b] +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/beam-position.ly b/input/features/beam-position.ly new file mode 100644 index 0000000000..bf14a7fee8 --- /dev/null +++ b/input/features/beam-position.ly @@ -0,0 +1,13 @@ + +fragment = \notes { + \property Voice.Beam \set #'y-position-hs = #4 + \property Voice.Beam \set #'height-hs = #-4 + [c'8 c] +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/beam-rest.ly b/input/features/beam-rest.ly new file mode 100644 index 0000000000..736a84708e --- /dev/null +++ b/input/features/beam-rest.ly @@ -0,0 +1,17 @@ +\header{ +texidoc=" +Beams over rests. +"; +} + +\score{ + \context Staff=one \notes\relative c''{ + r4 [r8 g a] + [bes8 r16 f g a] + [bes8 r16 \property Voice.stemLeftBeamCount = #1 f g a] + } + + \paper{ + linewidth =-1; + } +} diff --git a/input/features/beam-slope.ly b/input/features/beam-slope.ly new file mode 100644 index 0000000000..254a5cbc89 --- /dev/null +++ b/input/features/beam-slope.ly @@ -0,0 +1,13 @@ + +fragment = \notes { + \property Voice.Beam \set #'direction = #1 + \property Voice.Beam \set #'height-hs = #0 + [a''8 e' d c] +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/crescendo-text.ly b/input/features/crescendo-text.ly new file mode 100644 index 0000000000..b9b6edbf8a --- /dev/null +++ b/input/features/crescendo-text.ly @@ -0,0 +1,15 @@ + +fragment = \notes { + \context Voice { + \property Voice.crescendoText = "cresc." + \property Voice.crescendoSpanner = #'dashed-line + a''2\mf\< a a \!a + } +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/embedded-postscript.ly b/input/features/embedded-postscript.ly new file mode 100644 index 0000000000..9667149b14 --- /dev/null +++ b/input/features/embedded-postscript.ly @@ -0,0 +1,10 @@ +\score { + \notes \relative c'' { + a-#"\\embeddedps{3 4 moveto 5 3 rlineto stroke}" + -#"\\embeddedps{ [ 0 1 ] 0 setdash 3 5 moveto 5 -3 rlineto stroke}" + b-#"\\embeddedps{3 4 moveto 0 0 1 2 8 4 20 3.5 rcurveto stroke}" + s2 + a'1 + } + \paper { linewidth = 70 * \staffspace; } +} diff --git a/input/features/embedded-tex.ly b/input/features/embedded-tex.ly new file mode 100644 index 0000000000..970e2fce41 --- /dev/null +++ b/input/features/embedded-tex.ly @@ -0,0 +1,11 @@ + +fragment = \notes { + a''^"3 $\\times$ \\`a deux" +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/follow-thread.ly b/input/features/follow-thread.ly new file mode 100644 index 0000000000..bf370780cc --- /dev/null +++ b/input/features/follow-thread.ly @@ -0,0 +1,26 @@ +\header{ +texidoc=" +Theads can be traced automagically when they switch staffs by setting +property @code{followThread}. +"; +} +% followThread: connect note heads with line when thread switches staff + +fragment = \notes { + \context PianoStaff < + \property PianoStaff.followThread = ##t + \context Staff \context Voice { + c'1 + \translator Staff=two + b2 a + } + \context Staff=two {\clef bass; \skip 1*2;} + > +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/fragment.ly b/input/features/fragment.ly new file mode 100644 index 0000000000..8e37abee63 --- /dev/null +++ b/input/features/fragment.ly @@ -0,0 +1,10 @@ +fragment = \notes { + +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/metronome.ly b/input/features/metronome.ly new file mode 100644 index 0000000000..1b5bacfa58 --- /dev/null +++ b/input/features/metronome.ly @@ -0,0 +1,30 @@ + +\version "1.3.117"; + +% Test scm markup text and kerning + +% Warning +% +% This is not a feature, it is a hack. If you change anything, +% it will probably break (that's because scm markup text is a +% bit broken and needs fixing). Chances are, it's already +% broken by the time you read this. Don't complain. +% +% FIXME: put in an item, and typeset by an engraver. + +#(define note '(rows (music "noteheads-2" ((kern . -0.1) "flags-stem")))) +#(define eight-note `(rows ,note ((kern . -0.1) (music ((raise . 3.5) "flags-u3"))))) +#(define dotted-eight-note `(rows ,eight-note (music "dots-dot"))) + +\score { + \notes\relative c'' { + a1^#`(rows ,dotted-eight-note " = 64") + } + \paper { + linewidth = -1.; + \translator{ + \ScoreContext + TextScript \override #'font-shape = #'upright + } + } +} diff --git a/input/features/move-notehead.ly b/input/features/move-notehead.ly new file mode 100644 index 0000000000..20d69836f9 --- /dev/null +++ b/input/features/move-notehead.ly @@ -0,0 +1,13 @@ + +fragment = \notes { + \outputproperty #(make-type-checker 'note-head-interface) + #'extra-offset = #'(2 . 3) + c''2 c +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/move-specific-text.ly b/input/features/move-specific-text.ly new file mode 100644 index 0000000000..08c909a777 --- /dev/null +++ b/input/features/move-specific-text.ly @@ -0,0 +1,12 @@ +#(define (make-text-checker text) + (lambda (grob) (equal? text (ly-get-elt-property grob 'text)))) + +\score { + \notes\relative c''' { + \property Voice.Stem \set #'direction = #1 + \outputproperty #(make-text-checker "m.d.") + #'extra-offset = #'(-3.5 . -4.5) + a^2^"m.d." + } + \paper { linewidth = -1.; } +} diff --git a/input/features/no-bar-lines.ly b/input/features/no-bar-lines.ly new file mode 100644 index 0000000000..6624407df6 --- /dev/null +++ b/input/features/no-bar-lines.ly @@ -0,0 +1,15 @@ +\score { + \notes \relative c'' { + a b c d + d c b a + } + \paper { + linewidth = -1.; + \translator { + \StaffContext + whichBar = #"" + \remove "Time_signature_engraver"; + } + } +} + diff --git a/input/features/no-staff.ly b/input/features/no-staff.ly new file mode 100644 index 0000000000..05eba6615a --- /dev/null +++ b/input/features/no-staff.ly @@ -0,0 +1,13 @@ +\score { + \notes { c4 c4 c8 c8 } + \paper { + linewidth = -1.; + \translator { + \StaffContext + \remove Staff_symbol_engraver; + \consists Pitch_squash_engraver; + \remove Clef_engraver; + } + } +} + diff --git a/input/features/ophee-slurs.ly b/input/features/ophee-slurs.ly new file mode 100644 index 0000000000..d32dd6c789 --- /dev/null +++ b/input/features/ophee-slurs.ly @@ -0,0 +1,18 @@ +\header{ +texidoc=" +Slurs can be forced to always attach to note heads. +"; +} + +fragment = \notes { + \property Voice.Slur \set #'direction = #1 + \property Voice.Slur \set #'attachment = #'(head . head) + g''16()g()g()g()d'()d()d()d +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/ottava.ly b/input/features/ottava.ly new file mode 100644 index 0000000000..513946dab5 --- /dev/null +++ b/input/features/ottava.ly @@ -0,0 +1,16 @@ + +fragment = \notes { + a'''' b c a + \property Voice.TextSpanner \set #'type = #'dotted-line + \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5) + \property Voice.TextSpanner \set #'edge-text = #'("8va " . "") + \property Staff.centralCPosition = #-13 + a\spanrequest \start "text" b c a \spanrequest \stop "text" +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/part-combine.ly b/input/features/part-combine.ly new file mode 100644 index 0000000000..ec4262f3a8 --- /dev/null +++ b/input/features/part-combine.ly @@ -0,0 +1,37 @@ +\header{ +texidoc=" +In orchestral scores and hymns, voices are traditionally combined onto +one staff. LilyPond has a part combiner, that combines or separates two +voices according to actual rhythm and pitch. User-defined texts such as +``solo'' and ``@`a2'' are typeset automagically, as appropriate. +"; +} + +\score{ + \context Staff = flauti < + \time 4/4; + \context Voice=one \partcombine Voice + \context Thread=one \notes\relative c'' { + c4 d e f | b,4 d c d | r2 e4 f | c4 d e f | + c4 r e f | c4 r e f | c4 r a r | a a r a | + a2 \property Voice.soloADue = ##f a | + } + \context Thread=two \notes\relative c'' { + g4 b d f | r2 c4 d | a c c d | a4. b8 c4 d + c r e r | r2 s2 | a,4 r a r | a r r a | + a2 \property Voice.soloADue = ##f a | + } + > + \paper{ + linewidth = 80 * \staffspace; + \translator{ + \ThreadContext + \consists Rest_engraver; + } + \translator{ + \VoiceContext + \remove Rest_engraver; + } + } +} + diff --git a/input/features/reverse-music.ly b/input/features/reverse-music.ly new file mode 100644 index 0000000000..0d9fe6a522 --- /dev/null +++ b/input/features/reverse-music.ly @@ -0,0 +1,30 @@ +\header { +texidoc=" +Simple customised music apply. +"; +} + +music = \notes { c'4 d'4( e'4 f'4 } + +#(define (reverse-music music) + (let* ((elements (ly-get-mus-property music 'elements)) + (reversed (reverse elements)) + (span-dir (ly-get-mus-property music 'span-direction))) + + (ly-set-mus-property music 'elements reversed) + + (if (dir? span-dir) + (ly-set-mus-property music 'span-direction (- span-dir))) + + (map reverse-music reversed) + + music)) + +\score { + \context Voice { + \music + \apply #reverse-music \music + } + \paper { linewidth = -1.; } +} + diff --git a/input/features/slur-attachment-override.ly b/input/features/slur-attachment-override.ly new file mode 100644 index 0000000000..67e7435a47 --- /dev/null +++ b/input/features/slur-attachment-override.ly @@ -0,0 +1,21 @@ +\header{ +texidoc=" +In some cases, you may want to set slur attachments by hand. +"; +} + + +fragment = \notes { + \property Voice.Stem \set #'direction = #1 + \property Voice.Slur \set #'direction = #1 + d'32( d'4 )d8.. + \property Voice.Slur \set #'attachment = #'(stem . stem) + d,32( d'4 )d8.. +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/slur-attachment.ly b/input/features/slur-attachment.ly new file mode 100644 index 0000000000..4182bb38c6 --- /dev/null +++ b/input/features/slur-attachment.ly @@ -0,0 +1,17 @@ + +fragment = \notes { + \property Voice.Slur \set #'direction = #1 + \property Voice.Stem \set #'length = #5.5 + g''8(g)g4 + g4(g8)g + \property Voice.Slur \set #'attachment = #'(stem . stem) + g8(g)g4 + g4(g8)g +} + +\paper { linewidth = -1.; } + +\score { + \notes\relative c \fragment + \paper { } +} diff --git a/input/features/slur-ugly.ly b/input/features/slur-ugly.ly new file mode 100644 index 0000000000..7406ba233b --- /dev/null +++ b/input/features/slur-ugly.ly @@ -0,0 +1,35 @@ +\header { +texidoc="You can get ugly slurs, if you want. +"; +} + +baseWalk = \notes \relative c { + d,8( a' d f a d f d a f d )a +} + +\score { + \notes \context PianoStaff < + \time 6/4; + \context Staff=up { s1 * 6/4 } + \context Staff=down < + \clef bass; + \autochange Staff \context Voice \baseWalk + > + > + \paper { + linewidth = -1.; + \translator { + \VoiceContext + Slur \override #'beautiful = #5.0 + Slur \override #'direction = #1 + Stem \override #'direction = #-1 + autoBeamSettings \override #'(end * * * *) + = #(make-moment 1 2) + } + \translator { + \PianoStaffContext + VerticalAlignment \override #'threshold = #'(5 . 5) + } + } +} + diff --git a/input/features/smart-transpose.ly b/input/features/smart-transpose.ly new file mode 100644 index 0000000000..697c54585e --- /dev/null +++ b/input/features/smart-transpose.ly @@ -0,0 +1,90 @@ +\header { +texidoc=" +@example + Here's a copy of my feature request : +@quotation + Your task, if you accept it is to implement a \smarttranspose + command> that would translate such oddities into more natural + notations. Double accidentals should be removed, as well as #E + (-> F), bC (-> B), bF (-> E), #B (-> C). +@end quotation + +You mean like this. (Sorry 'bout the nuked indentation.) +@end example +"; +} + +% Btw, I've leant an el-neato trick for formatting code in email messages, +% using inderect buffers. +% +% M-x make-indirect-buffer RET RET foo RET C-x b foo RET +% Select region and then narrow: C-x n n +% Set mode, eg: M-x sch TAB RET +% + +#(define (unhair-pitch p) + (let* ((o (pitch-octave p)) + (a (pitch-alteration p)) + (n (pitch-notename p))) + + (cond + ((and (> a 0) (or (eq? n 6) (eq? n 2))) + (set! a (- a 1)) (set! n (+ n 1))) + ((and (< a 0) (or (eq? n 0) (eq? n 3))) + (set! a (+ a 1)) (set! n (- n 1)))) + + (cond + ((eq? a 2) (set! a 0) (set! n (+ n 1))) + ((eq? a -2) (set! a 0) (set! n (- n 1)))) + + (if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7)))) + (if (> n 7) (begin (set! o (+ o 1)) (set! n (- n 7)))) + + (make-pitch o n a))) + +#(define (smart-transpose music pitch) + (let* ((es (ly-get-mus-property music 'elements)) + (e (ly-get-mus-property music 'element)) + (p (ly-get-mus-property music 'pitch)) + (body (ly-get-mus-property music 'body)) + (alts (ly-get-mus-property music 'alternatives))) + + (if (pair? es) + (ly-set-mus-property + music 'elements + (map (lambda (x) (smart-transpose x pitch)) es))) + + (if (music? alts) + (ly-set-mus-property + music 'alternatives + (smart-transpose alts pitch))) + + (if (music? body) + (ly-set-mus-property + music 'body + (smart-transpose body pitch))) + + (if (music? e) + (ly-set-mus-property + music 'element + (smart-transpose e pitch))) + + (if (pitch? p) + (begin + (set! p (unhair-pitch (Pitch::transpose p pitch))) + (ly-set-mus-property music 'pitch p))) + + music)) + + +music = \notes \relative c' { c4 d e f g a b c } + +\score { + \notes \context Staff { + \transpose ais' \music + \apply #(lambda (x) (smart-transpose x (make-pitch 0 5 1))) + \music + } + \paper { linewidth = -1.; } +} + diff --git a/input/regression/GNUmakefile b/input/regression/GNUmakefile new file mode 100644 index 0000000000..558771769c --- /dev/null +++ b/input/regression/GNUmakefile @@ -0,0 +1,6 @@ +depth = ../.. + +LOCALSTEPMAKE_TEMPLATES=mutopia +include $(depth)/make/stepmake.make + + diff --git a/input/regression/accidental-single-double.ly b/input/regression/accidental-single-double.ly new file mode 100644 index 0000000000..765cdff810 --- /dev/null +++ b/input/regression/accidental-single-double.ly @@ -0,0 +1,29 @@ +\header{ +texidoc=" +A sharp sign after a double sharp sign, as well as a flat sign +after a double flat sign is automatically prepended with a +natural sign. +"; +} +\version "1.3.117"; + + +thenotes = \notes \relative cis' { \time 4/4; +gisis'4 gis gisis ges | +geses ges geses gis | +gisis g geses g | +gis g ges g | +\key a \major; +gisis4 gis gisis ges | +geses ges geses gis | +gisis g geses g | +gis g ges g | +} + +\score { < \context Staff \thenotes + \context NoteNames { + \property NoteNames.basicNoteNameProperties \override #'no-spacing-rods = ##f + \thenotes + } + > +} diff --git a/input/regression/accidental.ly b/input/regression/accidental.ly new file mode 100644 index 0000000000..c7ebadec80 --- /dev/null +++ b/input/regression/accidental.ly @@ -0,0 +1,15 @@ +\header{ +texidoc=" +Accidentals work: the second note does not get a sharp. The third and +fourth show forced and courtesy accidentals. +"; +} + +foo = \notes\relative c'' { \key as \major; dis4 dis dis! dis? } + +\score { + + < \foo + \context NoteNames \foo + > +} diff --git a/input/regression/arpeggio.ly b/input/regression/arpeggio.ly new file mode 100644 index 0000000000..1699fa7dc7 --- /dev/null +++ b/input/regression/arpeggio.ly @@ -0,0 +1,23 @@ +\header{ +texidoc=" +Arpeggios are supported, both cross-staff and broken single staff. +"; +} + +\version "1.3.117"; + +\score{ + \context PianoStaff < + \context Staff=one \notes\relative c''{ + \context Voice < fis,-\arpeggio d a > + %%\property PianoStaff.SpanArpeggio \override #'connect = ##t + \property PianoStaff.connectArpeggios = ##t + + } + \context Staff=two \notes\relative c{ + \clef bass; + \context Voice < g b d-\arpeggio > + + } + > +} diff --git a/input/regression/auto-beam-bar.ly b/input/regression/auto-beam-bar.ly new file mode 100644 index 0000000000..645c62de7c --- /dev/null +++ b/input/regression/auto-beam-bar.ly @@ -0,0 +1,20 @@ +\header{ +texidoc=" +The first two a8 notes should not be beamed. +Also, no automatic beaming accross bar lines. +"; +} + +\score{ +\notes \notes\relative c'' { +\time 2/8; +a8 a +\time 6/8; +a16 cis d a bes g fis4 g8 +%a4. fis4 g8 +a16 g a bes c d % ees8 d c +} +\paper{ + linewidth=-1.; +} +} \ No newline at end of file diff --git a/input/regression/auto-change.ly b/input/regression/auto-change.ly new file mode 100644 index 0000000000..ee0b5d18ba --- /dev/null +++ b/input/regression/auto-change.ly @@ -0,0 +1,20 @@ +\header{ +texidoc=" +Auto change piano staff switches voices between up and down staffs +automatically; rests are switched along with the coming note. +"; +} + +\score { + \notes \context PianoStaff < + \context Staff = "up" { + \autochange Staff \context Voice = VA < \relative c' { g4 a b c d r4 a g } > + } + \context Staff = "down" { + \clef bass; + s1*2 + } + + > + +} diff --git a/input/regression/auto-isknee.ly b/input/regression/auto-isknee.ly new file mode 100644 index 0000000000..fa3256b668 --- /dev/null +++ b/input/regression/auto-isknee.ly @@ -0,0 +1,25 @@ +\header{ +texidoc="Two automatic knees"; +} + +\score { + \notes \context PianoStaff < + \context Staff = "up" \notes\relative c''{ + [ b8 \translator Staff="down" d,, ] + [ c \translator Staff="up" c'' ] + [ b, \translator Staff="down" d ] + } + \context Staff = "down" { + \clef bass; + s2. + } + > + \paper{ + linewidth = 40*\staffspace; +% Now by default +% \translator{ +% \VoiceContext +% Beam \override #'auto-knee-gap = #7 +% } + } +} diff --git a/input/regression/auto-knee.ly b/input/regression/auto-knee.ly new file mode 100644 index 0000000000..b49954b60c --- /dev/null +++ b/input/regression/auto-knee.ly @@ -0,0 +1,17 @@ +\header{ +texidoc="One automatic knee"; +} + +\score { + \context Staff \notes\relative c''{ + [c'8 c,,] [c8 e'] + } + \paper{ + linewidth = 40*\staffspace; +% Now by default +% \translator { +% \VoiceContext +% Beam \override #'auto-knee-gap = #7 +% } + } +} diff --git a/input/regression/bar-number.ly b/input/regression/bar-number.ly new file mode 100644 index 0000000000..502045ed54 --- /dev/null +++ b/input/regression/bar-number.ly @@ -0,0 +1,19 @@ +\header { +texidoc="Bar number settable and padding adjustable."; +} + +\score { + \notes \relative c'' { + c1 c\break + c1 c\break + \property Score.currentBarNumber = #25 + \property Score.BarNumber \override #'padding = #3 + c1 c\break + } + \paper { + linewidth = 40*\staffspace; + \translator { + \BarNumberingStaffContext + } + } +} diff --git a/input/regression/bar-scripts.ly b/input/regression/bar-scripts.ly new file mode 100644 index 0000000000..644550de3f --- /dev/null +++ b/input/regression/bar-scripts.ly @@ -0,0 +1,41 @@ +\header{ +texidoc=" +Markings that are attached to (invisible) barlines are +delicate: the are attached to the rest of the score without the score +knowing it. Consequently, they fall over often. +"; +} + +\version "1.3.117"; + +onestaff = \context Staff = foo\notes { + \property Staff.instr = instr + \property Staff.instrument = instrument \mark "B"; + c1 \mark "A"; \break c2 c2 \break +} + +grstaff = \notes \context GrandStaff < + \context Staff = bar { + + \property Staff.instr = instr + + \mark "B"; \break c1 \mark "A"; c2 } + \context Staff = bufl { c1 c2 } +> + +scpaper = \paper {\translator {\OrchestralScoreContext}} +stpaper = \paper{ \translator {\BarNumberingStaffContext }} + +scscore = \score { \grstaff \paper { +\scpaper +}} + + +stscore = \score { \onestaff \paper { + \stpaper +}} + +%\score {\stscore} +\score {\scscore +\header { title = "bar scripts"; } +} diff --git a/input/regression/beam-cross-staff.ly b/input/regression/beam-cross-staff.ly new file mode 100644 index 0000000000..72b3c288fa --- /dev/null +++ b/input/regression/beam-cross-staff.ly @@ -0,0 +1,32 @@ +\header{ +texidoc=" +Beams can be typeset over fixed distance aligned staffs, beam +beautification doesn't really work, but knees do. Beams should be +behave well, wherever the switching point is. +"; +} +\score{ + \context PianoStaff < + \context Staff=one \notes\relative c'{ + \stemUp [c8 c \translator Staff=two \stemUp c c] + [c c c c] + \translator Staff=one + \stemDown [c8 c \translator Staff=two \stemUp c c] + r2 + \stemDown [c8 c \translator Staff=one \stemDown c c] + r2 + \translator Staff=two + \stemUp [c8 c \translator Staff=one \stemDown c c] + r2 + } + \context Staff=two \notes\relative c'{ + \clef bass; + s1 + s1 + s1 + s1 + } + > +} + +\version "1.3.117"; diff --git a/input/regression/beam-extreme.ly b/input/regression/beam-extreme.ly new file mode 100644 index 0000000000..653024e70c --- /dev/null +++ b/input/regression/beam-extreme.ly @@ -0,0 +1,19 @@ +\header{ +texidoc=" +Beams should behave reasonably well, even under extreme circumstances. +Stems may be short, but noteheads should never touch the beam. +"; +} +\version "1.3.117"; +\score{ + \notes\relative c''{ + [g8 c c,] + [c16 c'' a f] + \stemUp + [c,,32 c'' a f] + + } + \paper{ + linewidth=-1.; + } +} diff --git a/input/regression/beam-length.ly b/input/regression/beam-length.ly new file mode 100644 index 0000000000..3c2a8f16be --- /dev/null +++ b/input/regression/beam-length.ly @@ -0,0 +1,14 @@ +\header{ +texidoc=" +beams should look the same +"; +} + +\score { + \context Voice \notes\relative c { + + [d''8 d d] [d g d] + c c + + } +} diff --git a/input/regression/beam-position.ly b/input/regression/beam-position.ly new file mode 100644 index 0000000000..88f5749d5b --- /dev/null +++ b/input/regression/beam-position.ly @@ -0,0 +1,22 @@ +\header{ +texidoc=" +Beams should always reach the middle staff line. The second beam +counting from the note head side, should never be lower than the +second staff line. This does not hold for grace note beams. +Override with @code{noStemExtend}. +"; +} +\version "1.3.117"; + +\score { + \context Voice \notes\relative c { + [f8 f] [f64 f] \grace { [f8 e8] } + \property Grace.Stem \override #'no-stem-extend = ##t + [f8 f] + + } + \paper { + linewidth=-1.0; + } + \midi { } +} diff --git a/input/regression/beaming.ly b/input/regression/beaming.ly new file mode 100644 index 0000000000..b1673319bf --- /dev/null +++ b/input/regression/beaming.ly @@ -0,0 +1,27 @@ +\header{ +texidoc=" +Beaming is generated automatically. Beams may cross bar lines. In that +case, line breaks are forbidden. Yet clef and key signatures are +hidden just as with breakable bar lines. +"; +} + +\score { \context Staff \notes \relative c'' { + [c8. c16] + [c8. c16 c8. c16] + [c16 c8.] | + [c8. c16 c16 c8.] + [c8. c32 c32] + [c8 c8] | + [c16 c16] + [c32 c32] + [c64 c64] + c32 + [c8 c,4 c'8] % should warn here! + [c8 c c] c8 % over barline + [c16 c8 c16] + [c32 c16 c16 c16 c32] + [c32 c16 c8 c32] % hmm ? + + }} + diff --git a/input/regression/between-systems.ly b/input/regression/between-systems.ly new file mode 100644 index 0000000000..e5d3577845 --- /dev/null +++ b/input/regression/between-systems.ly @@ -0,0 +1,19 @@ +\header{ +texidoc=" +The same mechanism can be used to force pagebreaks. +"; +} + + +% In reality, you'd use #"\\newpage" instead of "(pagebreak)", of course. + +\score { +\notes { c1 + + \context Score \outputproperty #(make-type-checker 'paper-column-interface) + #'between-system-string = #"(pagebreak)\n\n" + \break + +c1 } + +} diff --git a/input/regression/break.ly b/input/regression/break.ly new file mode 100644 index 0000000000..49f7ddde61 --- /dev/null +++ b/input/regression/break.ly @@ -0,0 +1,17 @@ +\header{ +texidoc=" +Breaks can be encouraged and discouraged using @code{\break} and +@code{\noBreak}. They are abbrevs for @code{\penalty} commands. +"; +} + + +\score{ + \notes\context Voice{ + \emptyText + c1 c1^"no break after 2nd note" \noBreak c1 c1 + + c1^"break after this" \break c1 c1 + } + \paper { linewidth = 4.0\cm;} +} diff --git a/input/regression/breathing-sign.ly b/input/regression/breathing-sign.ly new file mode 100644 index 0000000000..70e375fe7a --- /dev/null +++ b/input/regression/breathing-sign.ly @@ -0,0 +1,27 @@ +\header{ +texidoc=" +Breathing signs, also used for phrasing, do normally not influence +global spacing -- only if space gets tight, notes are shifted to make +room for the breathing sign. Breathing signs break beams running +through their voice. In the following example, the notes in the first +two measures all have the same distance from each other: +"; +} + + +\version "1.3.117"; + +\score { + \notes \relative c' { + \key es \major; \time 3/4; + < \context Voice = two { \stemDown es4 bes es } + \context Voice = one { \stemUp g4 as g } + > | + < \context Voice = two { \stemDown es4 \breathe bes es } + \context Voice = one { \stemUp g4 as g } + > | + es8 d es f g4 \breathe | + es8 d \breathe es f g f | + es2 r4 \bar "||"; + } +} diff --git a/input/regression/chord-names.ly b/input/regression/chord-names.ly new file mode 100644 index 0000000000..2d233f5e19 --- /dev/null +++ b/input/regression/chord-names.ly @@ -0,0 +1,37 @@ +\header{ +texidoc=" +Chord names are generated from a list pitches, and are customisable +from guile. For some unlogical names, guile customisation is used +by default. +"; +} +\version "1.3.117" +chord = \notes\transpose c''\chords{ + c1 + c:m + c:m5- + c:m5-.7- + c:7+ + c:m5-.7 + c:5-.7+ + c:m7 + c:7 + d + d/a + d/+gis +} + +\score{ + < + \context ChordNames \chord + \context Staff \chord + > + \paper{ + + \translator { + \ChordNamesContext + ChordName \override #'word-space = #1 + } + } +} + diff --git a/input/regression/chord-tremolo.ly b/input/regression/chord-tremolo.ly new file mode 100644 index 0000000000..6d941ff971 --- /dev/null +++ b/input/regression/chord-tremolo.ly @@ -0,0 +1,20 @@ +\header{ +texidoc=" +Chord tremolos look like beams, but are a kind of repeat symbol. +To avoid confusion, chord tremolo beams do not reach the stems, but +leave a gap. Chord tremolo beams on half notes are not ambiguous, +as half notes cannot appear in a regular beam, and should reach the +stems. +"; +} + +\score { + \context Voice \notes\relative c { + \repeat "tremolo" 8 { c16 d16 } + \repeat "tremolo" 4 { c16 d16 } + } + \paper { + linewidth=-1.0; + } + \midi { } +} diff --git a/input/regression/clefs.ly b/input/regression/clefs.ly new file mode 100644 index 0000000000..834595b0ca --- /dev/null +++ b/input/regression/clefs.ly @@ -0,0 +1,37 @@ + +\header{ +texidoc=" +The transparent clef should not occupy any space and with style +@code{fullSizeChanges}, the changing clef should be typeset in full +size. For octaviated clefs, the ``8'' should appear closely above or +below the clef respectively. The ``8'' is processed in a convoluted +way, so this is fragile as well. +"; +} + +\version "1.3.117"; + +\score { + \notes{ + + \clef "treble"; c'1^"{treble}" \bar "||"; + \clef "french";c'1^"{french}" \bar "||"; + \clef "soprano";c'1^"{soprano}" \bar "||"; + \clef "mezzosoprano";c'1^"{mezzosoprano}" \bar "||"; + \clef "alto";c'1^"{alto}" \bar "||"; + \clef "tenor";c'1^"{tenor}" \bar "||"; + \clef "baritone";c'1^"{baritone}" \bar "||"; + \clef "varbaritone";c'1^"{varbaritone}" \bar "||"; + \clef "G_8";c'1^"{sub 8?}" c'1 \bar "||"; + \clef "G^8";c'1^"{sup 8?}" c'1 \bar "||"; + \clef "bass";c'1^"{bass}" \bar "||"; + \clef "subbass";c'1^"{subbass}" \bar "||"; + \property Staff.clefStyle="transparent" + \clef "treble"; c'1^"clefStyle=\"transparent\"" \bar "||"; + \property Staff.clefStyle="fullSizeChanges" + \clef "treble"; c'1^"clefStyle=\"fullSizeChanges\"" \bar "|."; + } + \paper{ + } +} + diff --git a/input/regression/collisions.ly b/input/regression/collisions.ly new file mode 100644 index 0000000000..1933d10097 --- /dev/null +++ b/input/regression/collisions.ly @@ -0,0 +1,79 @@ +\header{ +texidoc=" +Normal collisions. We have support for polyphony, where the +middle voices are horizontally shifted. +"; +filename = "collisions.ly"; +description = "random counterpoint to test collisions"; +enteredby = "HWN,JCN"; +copyright = "public domain"; +Tested = "test the Collision resolution "; +} +\version "1.3.117"; + +twovoice = \context Staff \notes < + \context Voice=i { \stemDown c4 d e f g2~ g4 a [c8 d e f] c2| } + \context Voice=ii { \stemUp g4 f e g ~ g2 g2 c4 g4 g2 } +> + +twovoicesteminvert = \context Staff \notes < + % the f and g on 4th beat are exceptionally ugh. + \context Voice=i { \stemUp c4 d e f g2 g4 a | } + \context Voice=ii { \stemDown g4 f e g g2 g2 } +> + +threevoice = \context Staff \notes < + \context Voice=i { \stemUp g4 f e f g a g2 } + \context Voice=ii { \stemUp \property Voice.NoteColumn \override #'horizontal-shift = #1 + e2 e2 e2 e2 } + \context Voice=iii { \stemDown c4 d e d c d es } +> + +chordstest = \context Staff \notes < + \context Voice = i \relative c { + \stemUp e4 dis c f g f a b b + } + \context Voice = ii \relative c { + \stemDown + } +> + +hairyChord = \context Staff \notes\relative c' < + \context Voice=one { + \property Voice.NoteColumn \override #'horizontal-shift = #0 + \stemUp + e4 + } + + \context Voice=two { + \stemUp + \property Voice.NoteColumn \override #'horizontal-shift = #1 + cis + } + + \context Voice=three { + \property Voice.NoteColumn \override #'horizontal-shift = #2 + + \stemUp + ais + } + + \context Voice=four { + \stemDown + \property Voice.NoteColumn \override #'horizontal-shift = #1 + + fis + } +> + + +\score{ + \notes \transpose c'' { \twovoice + \twovoicesteminvert + \threevoice \break + \chordstest + \hairyChord + } + +% \midi { \tempo 4:80 } +} diff --git a/input/regression/dots.ly b/input/regression/dots.ly new file mode 100644 index 0000000000..fbb8855d0d --- /dev/null +++ b/input/regression/dots.ly @@ -0,0 +1,30 @@ +\header{ +texidoc=" +Noteheads can have dots, and rests can too. Augmentation dots should +never be printed on a staff line, but rather be shifted vertically. They +should go up, but in case of multiple parts, the down stems have down +shifted dots. (Wanske p. 186) In case of chords, all dots should be in +a column. The dots go along as rests are shifted to avoid collisions. +"; +} + + +\version "1.3.117"; +\score { + \context Voice \notes\relative c'' { + \time 6/8; + d4. g,, + + + + + \context Staff < + \context Voice = VA { \stemUp f'' r4. } + \context Voice = VB { \stemDown b, r4. } + > + + + } + \paper { } + \midi { } +} diff --git a/input/regression/dyn-line.ly b/input/regression/dyn-line.ly new file mode 100644 index 0000000000..31f5dc597b --- /dev/null +++ b/input/regression/dyn-line.ly @@ -0,0 +1,27 @@ +\header{ +texidoc=" +Dynamics appear below or above the staff. If multiple dynamics are +linked with (de)crescendi, they should be on the same line. +"; +} +\score{ +\notes\relative c''{ +a1\fff\> \!c,,\pp a'' a\p + + +% We need this to test if we get two Dynamic line spanners +a + +% because do_removal_processing () +% doesn't seem to post_process elements +d\f + +a + +} +\paper{ +} +\midi{ +\tempo 1 = 60; +} +} diff --git a/input/regression/generic-output-property.ly b/input/regression/generic-output-property.ly new file mode 100644 index 0000000000..f3a5586586 --- /dev/null +++ b/input/regression/generic-output-property.ly @@ -0,0 +1,26 @@ +\header{ +texidoc=" +As a last resort, the placement of grobs can be adjusted manually, by +setting the @code{extra-offset} of a grob. +"; +} + +\score{ + \notes\relative c''{ + \outputproperty #(make-type-checker 'note-head-interface) + #'extra-offset = #'(2 . 3) + c2 + c + \context Score { + \outputproperty #(make-type-checker 'mark-interface) + #'extra-offset = #'(-1 . 4) + } + \mark A; + d1 + \mark; + e +} +\paper{ + linewidth=-1.0; +} +} diff --git a/input/regression/generic-property-override.ly b/input/regression/generic-property-override.ly new file mode 100644 index 0000000000..c3cb0d25b1 --- /dev/null +++ b/input/regression/generic-property-override.ly @@ -0,0 +1,17 @@ +\header{ +texidoc=" +More specific settings take precendence over less specific settings. The +second slur has slurDirection set to down, overriding the stemup setting. +"; +} +\version "1.3.117"; + +\score { + \notes \relative c'' \context Voice { + \stemUp + c'4 () c4 + \slurDown + c4 ( )c4 + } + \paper { linewidth = -1.0; } +} diff --git a/input/regression/glissando.ly b/input/regression/glissando.ly new file mode 100644 index 0000000000..115c5c2883 --- /dev/null +++ b/input/regression/glissando.ly @@ -0,0 +1,30 @@ +\header{ + +texidoc=" Simple glissando lines between notes are supported. +The first two glissandi are not consecutive. + +The engraver does no time-keeping, so it involves some trickery to get +< @{ s8 s8 s4 @} @{ c4 \\gliss d4 @} > working correctly. + +"; +} + +\score{ + \context Staff=one \notes\relative c''{ + % gliss non gliss and + c4 \glissando d e \glissando f \glissando \break + % consecutive + c \glissando d \glissando e + < { \stemUp e8 \glissando g8 } + \context Voice = VB {\stemDown \repeat unfold 4 d16 } > + + } + \paper{ + linewidth = 70.\mm; + \translator{ + \StaffContext + % makes for handier debugging + % \remove Clef_engraver; + } + } +} diff --git a/input/regression/grace.ly b/input/regression/grace.ly new file mode 100644 index 0000000000..dbc42a872c --- /dev/null +++ b/input/regression/grace.ly @@ -0,0 +1,30 @@ +\header{ +texidoc=" +Grace notes are typeset as an encapsulated piece of music. You can +have beams, notes, chords, stems etc. within a @code{\grace} section. +Slurs that start within a grace section, but aren't ended are attached +to the next normal note. Grace notes have zero duration. If there +are tuplets, the grace notes won't be under the brace. Grace notes +can have accidentals, but they are (currently) spaced at a fixed +distance. Grace notes (of course) come before the accidentals of the +main note. Grace notes can also be positioned after the main note. + +Grace notes without beams should have a slash, if @code{flagStyle} is +not set. Main note scripts don't end up on the grace note. + +"; +} + +\score {\notes \context Voice = VA \relative c'' { + \grace b8 c4-\fermata + \grace { [c32 cis32] } gis4 + \grace { [cis32 dis32] } e4 + \grace { [c32 d] }\times 2/3 { [c8 c c] } + \grace { [b32 ( c32] } ) c4 + \grace [c8 c8] +% \grace c16 [c8 c8] + \grace { \property Grace.graceAlignPosition = \right c16} c4 +} +\paper {linewidth = -1.;} +\midi{ } +} diff --git a/input/regression/hara-kiri-short.ly b/input/regression/hara-kiri-short.ly new file mode 100644 index 0000000000..1cb4fdbedd --- /dev/null +++ b/input/regression/hara-kiri-short.ly @@ -0,0 +1,40 @@ +\header{ +texidoc=" +Hara kiri staffs kill themselves if they are empty. This example really +contains two staffs, but the second contains only spaces, and is +therefore removed. Also, any staff brackets and braces are removed. +"; +} + +\version "1.3.117"; +zager = \context Staff = zager \notes \relative c'' { + \clef treble; + c1 +} + +zoger = \context Staff = zoger \notes \relative c'' { + \clef treble; + \skip 1* 1; +} + +zagers = \context GrandStaff < + \zager + \zoger +> + +\score{ + < + \context StaffGroup = zagers < + \zagers + > + > + \paper{ + linewidth = 80.0\mm; + + \translator { \HaraKiriStaffContext } +%uh? + + } +} + + diff --git a/input/regression/keys.ly b/input/regression/keys.ly new file mode 100644 index 0000000000..3013dd1ca4 --- /dev/null +++ b/input/regression/keys.ly @@ -0,0 +1,26 @@ +\header{ +texidoc=" +Key signatures appear on key changes. They may also +appear without barlines. The restoration accidentals are not printed at +the start of the line. If @code{createKeyOnClefChange} is set, they're +also created on a clef change. +"; +} + +\version "1.3.117"; + +\score { + \notes \relative c'' + { + \property Staff. createKeyOnClefChange = ##t + \key bes \major; c2 +% \key c \major; % \minor; + \key es \major; % \minor; + c2 + \break + \key bes \major; % \major; + c2 \clef alto; c2 \key d \major; \clef treble; c2 + \property Staff. keySignature = #'((2 . -1) (6 . -1) (4 . -1)) + e2 + } +} diff --git a/input/regression/lyric-combine.ly b/input/regression/lyric-combine.ly new file mode 100644 index 0000000000..1d67184f26 --- /dev/null +++ b/input/regression/lyric-combine.ly @@ -0,0 +1,54 @@ +\header{ +texidoc=" +Lyrics can be set to a melody automatically. Excess lyrics will be +dumped. Lyrics will not be set over rests. You can have melismata +either by setting a property melismaBusy, or by setting +automaticMelismas (which will set melismas during slurs and ties). If +you want a different order than first Music, then Lyrics, you must +precook a chord of staffs/lyrics and label those. Of course +@code{\rhythm} ignores any other rhythms in the piece. Hyphens and +extenders do not assume anything about lyric lengths, so they continue +to work. +"; + + +filename = "twinkle-pop.ly"; +xtitle = "Ah, vous dirais-je, maman "; +description = "twinkle twinkle in pop-song-settings"; +composer = "traditional"; +enteredby = "HWN, chords by Johan Vromans"; +copyright = "public domain"; +} + +\version "1.3.117"; + +m = \notes \relative c'' { + \property Staff.automaticMelismata = ##t + \autoBeamOff + g4 r8 \times 2/3 { g'8( f )e } r8 \grace { [d16 c b] } e4 + \emptyText + d8.^"melisma" \melisma c16 + \melismaEnd + b } + +noisebeat = \notes \relative c'' {g16 g g g } +noise = { \noisebeat \noisebeat \noisebeat \noisebeat \noisebeat \noisebeat } +textI = \lyrics { la2 __ la -- la __ la la la la la } +textII = \lyrics { da -- da __ da -- da da da da da } + +\score { + \notes < \context Staff = SA \m + \context Lyrics = LA { s1 } + \context Staff = SB { s1 } + \context Lyrics = LB { s1 } + \context Staff = SC \noise + + \addlyrics + \context Staff = SB \m + < \context Lyrics = LA \textI + \context Lyrics = LB \textII + > + + > +} + diff --git a/input/regression/lyrics-bar.ly b/input/regression/lyrics-bar.ly new file mode 100644 index 0000000000..ec0309b322 --- /dev/null +++ b/input/regression/lyrics-bar.ly @@ -0,0 +1,39 @@ +\header{ +texidoc=" +Adding a @code{Bar_engraver} to the LyricsVoice context makes sure that +lyrics don't collide with barlines. +"; +} + +\score { + \context StaffGroup < + \notes \context Staff { + b1 b1 \bar "|."; + } + \lyrics\context Lyrics < + \context LyricsVoiceWithBars { +% thisContextHasSpanBarEngraver1 added + ThisContextCertainlyHasSpanBarEngraverAddedButTheresSomethingFunny1. Here. + } + \context LyricsVoice { + this4 one has no SpanBarEngraverAddedToContext1 + } + > + \notes \context Staff = SB { b1 b1 } + > + \paper { + linewidth = -1.0\cm; + \translator { + \LyricsContext + \consists "Span_bar_engraver"; + \accepts "LyricsVoiceWithBars"; + } + \translator { + \LyricsVoiceContext + \name "LyricsVoiceWithBars"; + } + \translator { + \LyricsVoiceContext + } + } +} diff --git a/input/regression/lyrics-multi-stanza.ly b/input/regression/lyrics-multi-stanza.ly new file mode 100644 index 0000000000..a7dee3a6a4 --- /dev/null +++ b/input/regression/lyrics-multi-stanza.ly @@ -0,0 +1,154 @@ + +\version "1.3.117"; +\include "english.ly" + +\header{ +texidoc=" +Multiple stanzas + + Tests a number of features: + * Lyric_phrasing_engraver + * Stanza_number_engraver + * Automatic melismata on beamed notes + +"; + + title = "Crowned with Honour"; + composer = "Oliver Holden (1765-1844)"; + poet = "Thomas Kelly (1769-1855)"; +} + +allup = \notes{ + \stemUp + \slurUp + \tieUp + \property Voice.DynamicLineSpanner \override #'direction = #1 + \autoBeamOff +} + +alldown = \notes{ + \stemDown + \slurDown + \tieDown + \property Voice.DynamicLineSpanner \override #'direction = #-1 + \autoBeamOff +} + +Global = \notes{ + \key g \major; + \time 4/4; + \partial 4; +} + +Soprano = \notes \relative c' { + \allup + d4 | g g b b a g a b a g b a g( a )g % modified to test melisma align right + + [a8 b] | b4 % modified to test melisma align left + a g b [d16 d c8] [b a] b4 % modified to test beam melisma +% a4 | b a g b [d8 \melisma c] \melismaEnd [b \melisma a] \melismaEnd b4 + + d d2 d e d4( cs8 ~ )cs d2. + + b4 | d b g b [a8 g] [a b] a4 +% b4 | d b g b [a8 \melisma g] \melismaEnd [a \melisma b] \melismaEnd a4 + + g d'2 c b4.( c8 )a4 a g2. +} +Alto = \notes \relative c'{ + \alldown + d4 | d d g g fs g fs g fs e g fs d2. + d4 | g d b g' [b8 a] [g fs] g4 fs g2 a g fs4( e8 )g fs2. + d4 | g g d g [fs8 e] [fs g] fs4 g f2 e d4.( d8 )d4 fs4 d2. +} +Tenor = \notes \relative c{ + \allup + d4 | b' b d d c b c d c b d c b2. + a4 | b a g b [d8 c] [b a] b4 a b2 c b a a2. + g4 | b d b d [c8 b] [c d] c4 b g2 g g4.( a8 [fs )a] c4 b2. +} +Bass = \notes \relative c{ + \alldown + d4 | g g g g d d d g d e d d g,2. + d'4 | g d b g' [b8 a] [g fs] g4 d g2 fs e a d,2. + g4 | g g g g d d d e b2 c d2. d4 g,2. +} + +TheLyrics = \lyrics < + { + \context LyricsVoice = "Soprano-1" + \property LyricsVoice .stanza = "1:" + \property LyricsVoice .stz = "(1)" + The4 head that once was crowned with thorns + Is crowned with glo -- ry now; + A roy -- al di -- a -- dem a -- dorns + The might -- y Vic -- tor's brow. + A roy -- al di -- a -- dem a -- dorns + The might -- y Vic -- tor's brow. + } + { + \context LyricsVoice = "Soprano-2" + \property LyricsVoice .stanza = "2:" + \property LyricsVoice .stz = "(2)" + The4 high -- est place that heav'n af -- fords + Is His by sov -- 'reign right; + The King of kings, the Lord of lords, + He reigns in glo -- ry bright, + The King of kings, the Lord of lords, + He reigns in glo -- ry bright. + } + { + \context LyricsVoice = "Soprano-3" + \property LyricsVoice .stanza = "3:" + \property LyricsVoice .stz = "(3)" + The joy of all who dwell a -- bove, + The joy of saints be -- low, + To4 whom He man -- i -- fests His love, + And grants His name to know, + To4 whom He man -- i -- fests His love, + And grants His name to4 know. + } +> + + +\score{ + \context ChoirStaff + \notes + < + \property Score.barNumberScriptPadding = #10.0 + \context Staff = "treblestaff"{ + < + \context Voice = "Soprano" { } + \context Voice = "Alto" { } + > + } + \context Lyrics = mainlyrics { } + \context Staff = "treblestaff"{ + < + \Global + \addlyrics { \context Voice = "Soprano" \Soprano } + { \context Lyrics = mainlyrics \TheLyrics } + \context Voice = "Alto" \Alto + > + \bar "|."; + } + \context Staff = "bassstaff"{ + \clef "bass"; + < + \context Voice = "Tenor" { \Tenor } + \context Voice = "Bass" { \Bass } + > + \bar "|."; + } + > + + \paper { + \translator{ + \VoiceContext + automaticMelismata = ##t; + noAutoBeaming = ##t; + \remove "Auto_beam_engraver"; + } + + } +} diff --git a/input/regression/mm-rests2.ly b/input/regression/mm-rests2.ly new file mode 100644 index 0000000000..c801ec4c67 --- /dev/null +++ b/input/regression/mm-rests2.ly @@ -0,0 +1,30 @@ +\header{ +texidoc=" +If @code{Score.skipBars} is set, +the signs for four, two, and one measure rest are combined to +produce the graphical representation of rests for up to 10 bars. +The number of bars will be written above the sign. +"; +} + +thenotes = \notes \relative cis' { +\property Score. skipBars = ##t +\time 4/4; +R1 | +R1*1 | +R1*2 | +R1*3 | +R1*4 | +R1*5 | +R1*6 | +R1*7 | +R1*8 | +R1*9 | +R1*10 | +R1*11 | +} + +\score { < \context Staff \thenotes + + > +} diff --git a/input/regression/molecule-hacking.ly b/input/regression/molecule-hacking.ly new file mode 100644 index 0000000000..49a9ce9f4f --- /dev/null +++ b/input/regression/molecule-hacking.ly @@ -0,0 +1,73 @@ + +\header { texidoc=" You can write molecule callbacks in Scheme, thus +providing custom glyphs for notation elements. A simple example is +adding parentheses to existing molecule callbacks. + +The parenthesized beam is less successful due to implementation of the +Beam. The note head is also rather naive, since the extent of the +parens are also not seen by accidentals. +"; + + } + +#(define (parenthesize-callback callback) + "Construct a function that will do CALLBACK and add parentheses. +Example usage: + + \property Voice.NoteHead \\override #'molecule-callback + = + #(parenthesize-callback Note_head::brew_molecule) + +" + + + (define (parenthesize-molecule grob) + "This function adds parentheses to the original callback for +GROB. The dimensions of the molecule is not affected. +" + + (let* ( + (fn (ly-get-default-font grob)) + (pclose (ly-find-glyph-by-name fn "accidentals-)")) + (popen (ly-find-glyph-by-name fn "accidentals-(")) + (subject (callback grob)) + + ;; remember old size + (subject-dims (ly-get-molecule-extent subject 0)) + ) + + ;; add parens + (set! subject + (ly-combine-molecule-at-edge + (ly-combine-molecule-at-edge subject 0 1 pclose 0.2) + 0 -1 popen 0.2)) + + ;; revert old size. + (ly-set-molecule-extent! subject 0 subject-dims) + subject + ) + ) + parenthesize-molecule + ) + + + +\score { + \notes \relative c' { c4 e + + \property Voice.NoteHead \override #'molecule-callback + = + #(parenthesize-callback Note_head::brew_molecule) + g bes + \property Voice.NoteHead \revert #'molecule-callback + \property Voice.Beam \override #'molecule-callback + = + #(parenthesize-callback Beam::brew_molecule) + + a8 gis8 a2. + + } + + \paper { linewidth = -1.; } + } + diff --git a/input/regression/multi-measure-rest.ly b/input/regression/multi-measure-rest.ly new file mode 100644 index 0000000000..01732e4e88 --- /dev/null +++ b/input/regression/multi-measure-rest.ly @@ -0,0 +1,20 @@ +\header{ +texidoc=" +Multiple measure rests do not collide with barlines and clefs. They +are not expanded when you set @code{Score.skipBars}. Although the +multi-measure-rest is a Spanner, minimum distances are set to keep it +colliding from barlines. +"; +} +\version "1.3.117"; + +\score { \notes { \time 3/4; \key cis \major; + R2.*15 R2. R2.*7 } + \paper { + \translator { + \ScoreContext + skipBars = ##t + } + linewidth = -1.; + } +} diff --git a/input/regression/non-empty-text.ly b/input/regression/non-empty-text.ly new file mode 100644 index 0000000000..1d445c81fb --- /dev/null +++ b/input/regression/non-empty-text.ly @@ -0,0 +1,15 @@ +\header{ +texidoc=" +Text is set with empty horizontal dimensions. The boolean property +textNonEmpty is used to respect the horizontal size of text. +"; +} +\score { \notes { +\property Voice.TextScript \override #'no-spacing-rods = ##f +c4_"very wide and long text" c4 +} + +\paper { + linewidth = -1.0; + } +} diff --git a/input/regression/noteheadstyle.ly b/input/regression/noteheadstyle.ly new file mode 100644 index 0000000000..c59f40c073 --- /dev/null +++ b/input/regression/noteheadstyle.ly @@ -0,0 +1,63 @@ +\header{ +texidoc=" +Note head shapes are settable. The stem endings should be adjusted +per note head. If you want different note head styles on one stem, +you must create a special context called Thread. + +Harmonic notes have a different shape and different +dimensions. Nevertheless, noteheads in both styles can be combined, on +either up or down stems. +"; +} + +\version "1.3.117"; + + +\score { \notes \relative c{ +% anyone wanna pop? +c''4 c2 c8 c16 c16 c1 c\breve +\property Voice.NoteHead \override #'style = #'diamond +c4 c2 c8 c16 c16 c1 c\breve +\property Voice.NoteHead \override #'style = #'transparent +c4 c2 c8 c16 c16 c1 c\breve +\property Voice.NoteHead \override #'style = #'cross +c4 c2 c8 c16 c16 c1 c\breve +\property Voice.NoteHead \override #'style = #'mensural +c4 c2 c8 c16 c16 c1 c\breve c\longa +\property Voice.NoteHead \override #'style = #'harmonic +c4 c2 c8 c16 c16 c1 c\breve +\property Voice.NoteHead \override #'style = #'baroque +c4 c2 c8 c16 c16 c1 c\breve c\longa + + + \context Voice < + \context Thread = TA + { + \property Thread.NoteHead \override #'style = #'cross + \property Voice.Stem \override #'direction = #1 + c16 + } + \context Thread = TB + { \property Thread.NoteHead \override #'style = #'default a16 } + + \context Thread = TC + { \property Thread.NoteHead \override #'style = #'mensural d16 } + + > + + + \context Voice <\context Thread = TA { + \property Thread.NoteHead \override #'style = #'default + c4 c4 } +\context Thread = TB { + \property Thread.NoteHead \override #'style = #'mensural + c'4 \stemDown c +} > + +} + + \paper { + + +} +} diff --git a/input/regression/number-staff-lines.ly b/input/regression/number-staff-lines.ly new file mode 100644 index 0000000000..5494d66c52 --- /dev/null +++ b/input/regression/number-staff-lines.ly @@ -0,0 +1,19 @@ +\header{ + +texidoc=" The number of stafflines of a staff can be set. Ledger +lines both on note heads and rests are adjusted. Barlines also are +adjusted. "; + +} + +\score { +\context Voice \notes\relative c { + c' c c c | g' g g g + } + \paper { + +\translator { \StaffContext +StaffSymbol \override #'line-count = #3 +} } + \midi { } +} diff --git a/input/regression/repeat-fold.ly b/input/regression/repeat-fold.ly new file mode 100644 index 0000000000..28313665a5 --- /dev/null +++ b/input/regression/repeat-fold.ly @@ -0,0 +1,14 @@ +\header{ +texidoc=" +Folded. This doesn't make sense without alternatives, but it works. +"; +} + +\score { \notes\context Staff\relative c'' { +\repeat fold 3 { c^"3$\\times$ 0alt" d } +% less alts than body +\repeat fold 4 { c^"4$\\times$ 2alt" d } \alternative { e f } +% more alts than body +\repeat fold 2 { c^"2$\\times$ 3alt" d } \alternative { e f g } +}} + diff --git a/input/regression/repeat-line-break.ly b/input/regression/repeat-line-break.ly new file mode 100644 index 0000000000..ae6a06de0d --- /dev/null +++ b/input/regression/repeat-line-break.ly @@ -0,0 +1,16 @@ +\header{ +texidoc=" +Across linebreaks, the left edge of a first and second alternative +bracket should be equal +"; +} + +\score { +\notes +\context Staff\relative c'' { + \repeat "volta" 2 { c1 \break } \alternative { d e } + c1 + \repeat "volta" 2 { c1 } \alternative { { d \break} e } + +} +} diff --git a/input/regression/repeat-unfold.ly b/input/regression/repeat-unfold.ly new file mode 100644 index 0000000000..cb965c1610 --- /dev/null +++ b/input/regression/repeat-unfold.ly @@ -0,0 +1,25 @@ +\header{ +texidoc=" +LilyPond has three modes for repeats: folded, unfolded and +semi-unfolded. Unfolded repeats are fully written out. Semi unfolded +repeats have the body written and all alternatives sequentially. +Folded repeats have the body written and all alternatives +simultaneo.ly. If the number of alternatives is larger than the +repeat count, the excess alternatives are ignored. If the number of +alternatives is smaller, the first alternative is multiplied to get to +the number of repeats. + +Unfolded behavior: +"; +} + +\score { + + \context Voice \notes\relative c'' { +\repeat unfold 3 { c^"3x 0a" d } +% less alts than body +\repeat unfold 4 { c^"4x 0a" d } \alternative { e f } +% more alts than body +\repeat unfold 2 { c^"2x 3a" d } \alternative { e f g } +}} + diff --git a/input/regression/repeat-volta.ly b/input/regression/repeat-volta.ly new file mode 100644 index 0000000000..634ba4dadd --- /dev/null +++ b/input/regression/repeat-volta.ly @@ -0,0 +1,25 @@ +\header{ +texidoc=" +Volta (Semi folded) behavior. Voltas can start on non-barline moments. +If they don't barlines should still be shown. +"; +} + +% no alts. +\score { \notes + \relative c'' { +% repeat non aligning with barlines. +e +\repeat volta 3 { c^"3$\\times$ 0alt" d e } +% less alts than body +\repeat volta 4 { c^"4$\\times$ 2alt" d } \alternative { e f } + +% more alts than body +\repeat volta 2 { c^"2$\\times$ 3alt" d } \alternative { e f g } +} + + \midi{} + \paper{} + +} + diff --git a/input/regression/rest-collision.ly b/input/regression/rest-collision.ly new file mode 100644 index 0000000000..276afa516a --- /dev/null +++ b/input/regression/rest-collision.ly @@ -0,0 +1,61 @@ +\header{ +texidoc=" +Rests should not collide with beams, stems and noteheads. Rests may +be under beams. Rests should be move by integral number of spaces +inside the staff, and by half spaces outside. Notice that the half +and whole rests just outside the staff get ledger lines in different +cases. +"; +} + +scale = \notes \relative c' { + c8 d e f g a b c c d e f g a b c + +} +rests = \notes { + r r r r r r r r r r r r r r r r +} +different = < \context Voice = one { + \stemUp + \notes \relative c'' { + r8 a e4 a e + } + } + \context Voice = two { + \stemDown + \notes \relative c'' { + r1 + }} > + +scales = \context Staff \notes < + \context Voice=i { \stemUp r1 r2 r2 \scale c''1 c'2 a'2 \rests } + \context Voice = ii { \stemDown a'1 a'2 d'2 \rests r1 r2 r2 \scale } +> + +restsII = \context Staff \notes { + r4 r8 + \context Staff < { \stemUp r8 } { \stemDown r8} > + \context Staff < {\stemUp r8} r8 { \stemDown r8} > + \context Staff < {\stemUp r8} r8 r8 { \stemDown r8} > + \context Staff < {\stemUp r} { \stemDown r} > + \context Staff < {\stemUp r} r { \stemDown r} > + \stemUp + \transpose c'' { [c''8 r8 c''8 c''8] + [c8 r8 c8 c8] + [c8 r8 r8 c'''8] + \stemDown + [c8 r8 c8 c8] + [c''8 r8 c''8 c''8] + [c'8 r8 r8 c'''8] + \different + } +} + +\score{ + \notes { + \scales + \restsII + } +} + +\version "1.3.117"; diff --git a/input/regression/rest.ly b/input/regression/rest.ly new file mode 100644 index 0000000000..0e7eea1703 --- /dev/null +++ b/input/regression/rest.ly @@ -0,0 +1,16 @@ +\header{ +texidoc=" +Rests. Note that the dot of 8th, 16th and 32nd rests rest should be +next to the top of the rest. All rests except the whole rest are +centered on the middle staff line. +"; +} + + + \score { \notes { + \time 4/4; +r \longa * 1/4 r\breve * 1/2 +r1 r2 r4 r8 r16 r32 r64 r128 r128 +\time 6/4; +r1. r2. r4. r8. r16. r32. r64. r128. r128. +}} diff --git a/input/regression/size11.ly b/input/regression/size11.ly new file mode 100644 index 0000000000..6bc299ba38 --- /dev/null +++ b/input/regression/size11.ly @@ -0,0 +1,10 @@ +\header{ +texidoc=" +Fonts are available in a default set of sizes: 11, 13, 16, 20, 23 and +26pt staffheight. Sizes of the text fonts and symbol fonts are made +to match the staff dimensions. +"; +} + +\include "paper11.ly" +\include "allfontstyle.ly"; diff --git a/input/regression/size13.ly b/input/regression/size13.ly new file mode 100644 index 0000000000..ac58c4dd65 --- /dev/null +++ b/input/regression/size13.ly @@ -0,0 +1,2 @@ +\include "paper13.ly" +\include "allfontstyle.ly"; diff --git a/input/regression/size16.ly b/input/regression/size16.ly new file mode 100644 index 0000000000..69352ff59d --- /dev/null +++ b/input/regression/size16.ly @@ -0,0 +1,2 @@ +\include "paper16.ly" +\include "allfontstyle.ly"; diff --git a/input/regression/size20.ly b/input/regression/size20.ly new file mode 100644 index 0000000000..d76a6cdb03 --- /dev/null +++ b/input/regression/size20.ly @@ -0,0 +1,2 @@ +\include "paper20.ly" +\include "allfontstyle.ly"; diff --git a/input/regression/size23.ly b/input/regression/size23.ly new file mode 100644 index 0000000000..c5accc9f90 --- /dev/null +++ b/input/regression/size23.ly @@ -0,0 +1,2 @@ +\include "paper23.ly" +\include "allfontstyle.ly"; diff --git a/input/regression/size26.ly b/input/regression/size26.ly new file mode 100644 index 0000000000..919c6e07cd --- /dev/null +++ b/input/regression/size26.ly @@ -0,0 +1,2 @@ +\include "paper26.ly" +\include "allfontstyle.ly"; diff --git a/input/regression/slur-attachment.ly b/input/regression/slur-attachment.ly new file mode 100644 index 0000000000..7a00de8687 --- /dev/null +++ b/input/regression/slur-attachment.ly @@ -0,0 +1,19 @@ +\header{ +texidoc=" +Slurs should be attached to note heads, except when they would collide +with beams. Also see: ophee-slurs. +"; +} +\score{ + \notes \relative c''{ + \property Voice.Slur \set #'direction = #1 + a8( a )a4 + a4( a8 )a + a8 a()a4 + a4() a8 a + } + \paper{ + indent = 0.0; + linewidth = 100.\mm; + } +} diff --git a/input/regression/slur-broken-trend.ly b/input/regression/slur-broken-trend.ly new file mode 100644 index 0000000000..868d156491 --- /dev/null +++ b/input/regression/slur-broken-trend.ly @@ -0,0 +1,21 @@ +\header{ +texidoc=" +Across line breaks, slurs behave nicely. On the left, they extend to +just after the preferatory matter, and on the right to the end of the +staff. A slur should follow the same vertical direction it would have +in unbroken state. +"; +} +\score{ + \notes \relative c''{ + e1( \break) a, + \time 2/4; + e'2( \break) a,(\break + a2\break + )e'2 + } + \paper { + linewidth=40.\mm; + indent=0.; + } +} diff --git a/input/regression/slur-cross-staff.ly b/input/regression/slur-cross-staff.ly new file mode 100644 index 0000000000..e2ada8c8e7 --- /dev/null +++ b/input/regression/slur-cross-staff.ly @@ -0,0 +1,48 @@ +\header{ +texidoc=" +The same goes for slurs. They behave decently when broken across +linebreak. +"; +} + + +\score{ + \context PianoStaff < + \context Staff=one \notes\relative c'{ + \stemUp \slurUp + c4( c \translator Staff=two c )c | + \translator Staff=one + \stemUp \slurUp + c4( c \translator Staff=two c )c | + \stemUp \slurUp + c4( c \translator Staff=one c )c | + \translator Staff=two + \stemUp \slurUp + c4( c \translator Staff=one c )c | + \translator Staff=two + \stemUp \slurUp + c4( \translator Staff=one c c )c | + r2 + \translator Staff=two + \stemUp \slurUp + c4( \translator Staff=one c + \break + c )c + r2 +% \stemDown \slurDown +% c4( \translator Staff=two c c \translator Staff=one )c + \stemDown \slurDown + d4( \translator Staff=two c c \translator Staff=one )d + \translator Staff=two + \stemUp \slurUp + c4( \translator Staff=one c c \translator Staff=two )c + r1 + } + \context Staff=two \notes\relative c'{ + \clef bass; + s1 s1 s1 s1 s1 s1 s1 s1 s1 s1 + } + > +} + +\version "1.3.117"; diff --git a/input/regression/slur-nice.ly b/input/regression/slur-nice.ly new file mode 100644 index 0000000000..fce8f94686 --- /dev/null +++ b/input/regression/slur-nice.ly @@ -0,0 +1,23 @@ +\header{ +texidoc=" +Slurs should look nice and symmetric. The curvature may increase +only to avoid noteheads, and as little as possible. Slurs never +run through noteheads or stems. +"; +} +\version "1.3.117"; +\score{ + \notes\relative c''{ + \time 3/4; + \slurUp + \stemBoth a ( \stemDown a \stemBoth ) a a( c )a a( e' )a, a( g' )a, + \stemUp a( e' )a, + \break + \slurDown + \stemBoth c ( \stemUp c \stemBoth ) c c ( a ) c c( d, )c' c( f, )c' + \stemDown c( f, )c' + } + \paper{ + linewidth = 120.\mm; + } +} diff --git a/input/regression/slur-symmetry-1.ly b/input/regression/slur-symmetry-1.ly new file mode 100644 index 0000000000..6e2ea7c67b --- /dev/null +++ b/input/regression/slur-symmetry-1.ly @@ -0,0 +1,14 @@ +\score{ + \notes\relative c''< + \time 4/4; + \context Staff{ + f8(f f)f f(g g)f f(a a)f f(b b)f + } + \context Staff=x{ + e,(e e)e e(d d)e e(c c)e e(b b)e + } + > + \paper{ + linewidth=-1.; + } +} diff --git a/input/regression/slur-symmetry.ly b/input/regression/slur-symmetry.ly new file mode 100644 index 0000000000..41ebe836b3 --- /dev/null +++ b/input/regression/slur-symmetry.ly @@ -0,0 +1,14 @@ +\score{ + \notes\relative c'< + \time 6/8; + \context Staff{ + e8(e)e e(d)e e(c)e e(b)e + } + \context Staff=x{ + f'8(f)f f(g)f f(a)f f(b)f + } + > + \paper{ + linewidth=-1.; + } +} diff --git a/input/regression/spacing-loose.ly b/input/regression/spacing-loose.ly new file mode 100644 index 0000000000..eaac633a28 --- /dev/null +++ b/input/regression/spacing-loose.ly @@ -0,0 +1,11 @@ +\header{ +texidoc=" +Loose: +"; +} +\score { + \notes { \time 2/2; c'2 c'2 \time 2/2; } + \paper { linewidth = 5.0\cm; + indent = 0.0; + } +} diff --git a/input/regression/spacing-natural.ly b/input/regression/spacing-natural.ly new file mode 100644 index 0000000000..74e9f6f0f7 --- /dev/null +++ b/input/regression/spacing-natural.ly @@ -0,0 +1,13 @@ +\header{ +texidoc=" +Natural: +"; +} + +\score { + \notes { \time 2/2; c'2 c'2 \time 2/2; } + \paper { linewidth = -1.0 \cm; + indent = 0.0; + } +} + diff --git a/input/regression/spacing-tight.ly b/input/regression/spacing-tight.ly new file mode 100644 index 0000000000..75c7d16f97 --- /dev/null +++ b/input/regression/spacing-tight.ly @@ -0,0 +1,21 @@ +\header{ +texidoc=" +If there are accidentals in the music, we add space, but the space +between note and accidentals is less than between the notes with the +same value. Clef changes also get extra space, but not as much as +barlines. + +Even if a line is very tightly spaced, there will still be room +between prefatory matter and the following notes. The space after the +prefatory is very rigid. In contrast, the space before the barline +must stretch like the space within the measure. + +Tight: +"; +} +\score { + \notes { \time 2/2; f''2 c'2 \time 2/2; } + \paper { linewidth = 2.5 \cm; + indent = 0.0; + } +} diff --git a/input/regression/staccato-pos.ly b/input/regression/staccato-pos.ly new file mode 100644 index 0000000000..aa3ac8a27f --- /dev/null +++ b/input/regression/staccato-pos.ly @@ -0,0 +1,18 @@ +\header{ +texidoc=" +The staccato dot (and all scripts with follow-into-staff set), must +not be on staff lines. +"; +} +\score { + \context Voice \notes\relative c { + + e''4-. f-. d-. + c,-. b-. c'''-. d-. + + } + \paper { + linewidth=-1.0; + } + \midi { } +} diff --git a/input/regression/staff-margin.ly b/input/regression/staff-margin.ly new file mode 100644 index 0000000000..bb2b30f36b --- /dev/null +++ b/input/regression/staff-margin.ly @@ -0,0 +1,28 @@ +\header{ +texidoc=" +Staff margins are also markings attached to barlines. They should be +left of the staff, and be centered vertically wrt the staff. They may +be on normal staffs, but also on compound staffs, like the PianoStaff +"; +} + + +\version "1.3.117"; + +\score { + + \notes \context PianoStaff < + \context Staff = treble { + \property PianoStaff.instrument = "Piano " + \property Staff.instrument = "Right " { c''4 }} + \context Staff = bass { \property Staff.instrument = "Left " \clef bass; c4 }> + +\paper { +linewidth=-1.0; +\translator { \ScoreContext + + } +\translator { \StaffContext \consists "Instrument_name_engraver"; } +\translator { \PianoStaffContext \consists "Instrument_name_engraver"; } +}} + diff --git a/input/regression/stem-direction-down.ly b/input/regression/stem-direction-down.ly new file mode 100644 index 0000000000..1733d3995f --- /dev/null +++ b/input/regression/stem-direction-down.ly @@ -0,0 +1,15 @@ +\header{ +texidoc=" +@c FIXME +Similarly, if @code{stem_default_neutral_direction} is set to @code{-1}. +"; +} + +\score{ + \notes\relative c{ + b''4 ~ b8()b8 e4 e, + } + \paper{ + stem_default_neutral_direction=-1.0; + } +} diff --git a/input/regression/stem-direction.ly b/input/regression/stem-direction.ly new file mode 100644 index 0000000000..78f20f5182 --- /dev/null +++ b/input/regression/stem-direction.ly @@ -0,0 +1,23 @@ +\header{ +texidoc=" +Beams, stems and noteheads often have communication troubles, since +the two systems for y dimensions (1 unit = staffspace, 1 unit = 1 +point) are mixed. + +Stems, beams, ties and slurs should behave similarly, when placed +on the middle staff line. Of course stem-direction is down for high +notes, and up for low notes. +"; +} + + +\score { + \context Voice \notes\relative c { + b''4 ~ b8()b8 e4 e, + + } + \paper { + linewidth=-1.0; + } + \midi { } +} diff --git a/input/regression/stem-spacing.ly b/input/regression/stem-spacing.ly new file mode 100644 index 0000000000..765416f54c --- /dev/null +++ b/input/regression/stem-spacing.ly @@ -0,0 +1,17 @@ +\header{ +texidoc=" +In a limited number of cases, LilyPond corrects for optical spacing +effects. In this example, space for opposite pointed stems is adjuste +"; +} +\score { + \context Voice \notes\relative c { + + \time 12/4; c''4 c c c a f' f, a + + } + \paper { + linewidth=-1.0; + } + \midi { } +} diff --git a/input/regression/stem-tremolo.ly b/input/regression/stem-tremolo.ly new file mode 100644 index 0000000000..3493dabef1 --- /dev/null +++ b/input/regression/stem-tremolo.ly @@ -0,0 +1,29 @@ +\header{ +texidoc=" +Stem tremolos or rolls are tremolo signs that look like beam segments +crossing stems. If the stem is in a beam, the tremolo must be parallel +to the beam. If the stem is invisible (eg. on a whole note), the +tremolo must be centered on the note. +"; +} + +\version "1.3.117"; +\score{ + \context Voice\notes \relative c''{ + \property Voice.Text \set #'direction = #1 + \property Voice.TextScript \set #'padding = #5 + a1:4^":4" a:8^":8" c:16^":16" a:32^":32" a^"x" a:^":" + a4:4 c:8 a:16 c:32 a a: a2: + \break + \stemUp + a4:32 a'4:64 + \stemDown + c,4:32 c,4:64 + \stemBoth + c'8:16 c c c + a': a a: a + c,16:32 c: c c a16:32 a: a a + c8:16 g: d: a: + c8:32 f: b: e: + } +} diff --git a/input/regression/tie-accidental.ly b/input/regression/tie-accidental.ly new file mode 100644 index 0000000000..8faf34ab8f --- /dev/null +++ b/input/regression/tie-accidental.ly @@ -0,0 +1,37 @@ +\header{ +texidoc=" +When tieing notes with accidentals across a bar boundary, the accidental +must not be drawn on the note in the new bar. Instead, the next note of +the same pitch in this bar should always show the accidental (even if +it's natural). Slurring a accidentaled note to a natural one across bar +boundaries should be explicit. + +Pitches can be verified by printing them with the @code{NoteNames} context. +"; +} + +thenotes = \notes \relative cis' { \time 4/4; +g'2 g ~ | +g g4 gis | +gis2 gis ~ | +gis4 gis8 ~ gis g4 gis | +g2 gis ~ | +gis g4 gis | +g2 gis( | +)g! gis4 gis | +\break +\key a \major; +gis2 gis ~ | +gis4 gis8 ~ gis g4 gis | +gis2 g ~ | +g4 gis8 ~ gis g4 gis | +g2 gis ~ | +gis g4 gis | +g2 gis( | +)g! gis4 gis | +} + +\score { < \context Staff \thenotes + \context NoteNames \thenotes + > +} diff --git a/input/regression/tie-chord.ly b/input/regression/tie-chord.ly new file mode 100644 index 0000000000..2068c371ae --- /dev/null +++ b/input/regression/tie-chord.ly @@ -0,0 +1,21 @@ +\header{ +texidoc=" +When tieing chords, the outer slurs point outwards, the inner slurs +point away from the center of the staff. Override with +@code{tieVerticalDirection}. +"; +} +\version "1.3.117"; + +t = \notes \relative c' { ~ } + + \score { +\notes \context Voice { + \t + \transpose g' \t + + \property Voice.TieColumn \override #'direction = #-1 + \t + + } +} diff --git a/input/regression/tie.ly b/input/regression/tie.ly new file mode 100644 index 0000000000..6cc474c3b6 --- /dev/null +++ b/input/regression/tie.ly @@ -0,0 +1,19 @@ +\header{ +texidoc=" +Ties are strictly horizontal. They are placed in between note heads. +The horizontal middle should not overlap with a staffline. +"; +} +\score{ + \notes\relative c''{ + %b2~b4~b8~b16~b32~b64 r64\break + %a2~a4~a8~a16~a32~a64 r64 + \time 8/4; + d1 ~ d2~d4~d8~d16~d32~d64 r64\break + a1~ a2~a4~a8~a16~a32~a64 r64 + %c2~c4~c8~c16~c32~c64 r64 + } + \paper{ + linewidth=0.; + } +} diff --git a/input/regression/triplets.ly b/input/regression/triplets.ly new file mode 100644 index 0000000000..802727f22e --- /dev/null +++ b/input/regression/triplets.ly @@ -0,0 +1,27 @@ +\header { +texidoc="Simple beams. This broke somewhere < 1.3.110 +"; + title = "Gammes Chromatiques"; + composer = ""; + filename = "gammes_chromatiques.ly"; +} + +linebreak = \penalty -1000; + +$ex8 = \notes \relative c' { + \repeat "volta" 2 { + \times 2/3 {c8( cis d} \times 2/3 {dis e f} + \times 2/3 {fis g gis} \times 2/3 {a bes b} | + \property Voice.TupletBracket \override #'tuplet-number-visibility = ##f + \property Voice.TupletBracket \override #'tuplet-bracket-visibility = ##f + \times 2/3 {c8 cis d} \times 2/3 {dis e f} + \times 2/3 {fis g gis} \times 2/3 {a bes b} | + \times 2/3 {c b bes} \times 2/3 {a aes g} + \times 2/3 {fis f e} \times 2/3 {ees d des} | + \times 2/3 {c b bes} \times 2/3 {a aes g} + \times 2/3 {fis f e} \times 2/3 {ees d )des} + } + c1 || \linebreak +} + +\score { \context Staff { \notes { \$ex8 } } } diff --git a/input/regression/tup.ly b/input/regression/tup.ly new file mode 100644 index 0000000000..649feb5d22 --- /dev/null +++ b/input/regression/tup.ly @@ -0,0 +1,19 @@ +\header{ +texidoc=" +Tuplets are indicated by a bracket with a number. There should be no +bracket if there is one beam that matches the length of the tuplet. +The bracket does not interfere with the stafflines, and the number is +centered in the gap in the bracket. +"; +} +\score{ + \notes \context Voice \relative c'' { + \times 2/3 { \times 2/3 { a8 b c} c } + \times 3/4 { c4 c4 c4 c4 } + \time 6/8; + \times 6/9 { c8 c c c c c c c c } + + } +} + +\version "1.3.117"; diff --git a/input/test/accidental-single-double.ly b/input/test/accidental-single-double.ly index 765cdff810..e69de29bb2 100644 --- a/input/test/accidental-single-double.ly +++ b/input/test/accidental-single-double.ly @@ -1,29 +0,0 @@ -\header{ -texidoc=" -A sharp sign after a double sharp sign, as well as a flat sign -after a double flat sign is automatically prepended with a -natural sign. -"; -} -\version "1.3.117"; - - -thenotes = \notes \relative cis' { \time 4/4; -gisis'4 gis gisis ges | -geses ges geses gis | -gisis g geses g | -gis g ges g | -\key a \major; -gisis4 gis gisis ges | -geses ges geses gis | -gisis g geses g | -gis g ges g | -} - -\score { < \context Staff \thenotes - \context NoteNames { - \property NoteNames.basicNoteNameProperties \override #'no-spacing-rods = ##f - \thenotes - } - > -} diff --git a/input/test/accidental.ly b/input/test/accidental.ly index c7ebadec80..e69de29bb2 100644 --- a/input/test/accidental.ly +++ b/input/test/accidental.ly @@ -1,15 +0,0 @@ -\header{ -texidoc=" -Accidentals work: the second note does not get a sharp. The third and -fourth show forced and courtesy accidentals. -"; -} - -foo = \notes\relative c'' { \key as \major; dis4 dis dis! dis? } - -\score { - - < \foo - \context NoteNames \foo - > -} diff --git a/input/test/arpeggio.ly b/input/test/arpeggio.ly index 1699fa7dc7..e69de29bb2 100644 --- a/input/test/arpeggio.ly +++ b/input/test/arpeggio.ly @@ -1,23 +0,0 @@ -\header{ -texidoc=" -Arpeggios are supported, both cross-staff and broken single staff. -"; -} - -\version "1.3.117"; - -\score{ - \context PianoStaff < - \context Staff=one \notes\relative c''{ - \context Voice < fis,-\arpeggio d a > - %%\property PianoStaff.SpanArpeggio \override #'connect = ##t - \property PianoStaff.connectArpeggios = ##t - - } - \context Staff=two \notes\relative c{ - \clef bass; - \context Voice < g b d-\arpeggio > - - } - > -} diff --git a/input/test/auto-beam-bar.ly b/input/test/auto-beam-bar.ly index 645c62de7c..e69de29bb2 100644 --- a/input/test/auto-beam-bar.ly +++ b/input/test/auto-beam-bar.ly @@ -1,20 +0,0 @@ -\header{ -texidoc=" -The first two a8 notes should not be beamed. -Also, no automatic beaming accross bar lines. -"; -} - -\score{ -\notes \notes\relative c'' { -\time 2/8; -a8 a -\time 6/8; -a16 cis d a bes g fis4 g8 -%a4. fis4 g8 -a16 g a bes c d % ees8 d c -} -\paper{ - linewidth=-1.; -} -} \ No newline at end of file diff --git a/input/test/auto-change.ly b/input/test/auto-change.ly index ee0b5d18ba..e69de29bb2 100644 --- a/input/test/auto-change.ly +++ b/input/test/auto-change.ly @@ -1,20 +0,0 @@ -\header{ -texidoc=" -Auto change piano staff switches voices between up and down staffs -automatically; rests are switched along with the coming note. -"; -} - -\score { - \notes \context PianoStaff < - \context Staff = "up" { - \autochange Staff \context Voice = VA < \relative c' { g4 a b c d r4 a g } > - } - \context Staff = "down" { - \clef bass; - s1*2 - } - - > - -} diff --git a/input/test/auto-isknee.ly b/input/test/auto-isknee.ly index fa3256b668..e69de29bb2 100644 --- a/input/test/auto-isknee.ly +++ b/input/test/auto-isknee.ly @@ -1,25 +0,0 @@ -\header{ -texidoc="Two automatic knees"; -} - -\score { - \notes \context PianoStaff < - \context Staff = "up" \notes\relative c''{ - [ b8 \translator Staff="down" d,, ] - [ c \translator Staff="up" c'' ] - [ b, \translator Staff="down" d ] - } - \context Staff = "down" { - \clef bass; - s2. - } - > - \paper{ - linewidth = 40*\staffspace; -% Now by default -% \translator{ -% \VoiceContext -% Beam \override #'auto-knee-gap = #7 -% } - } -} diff --git a/input/test/auto-knee.ly b/input/test/auto-knee.ly index b49954b60c..e69de29bb2 100644 --- a/input/test/auto-knee.ly +++ b/input/test/auto-knee.ly @@ -1,17 +0,0 @@ -\header{ -texidoc="One automatic knee"; -} - -\score { - \context Staff \notes\relative c''{ - [c'8 c,,] [c8 e'] - } - \paper{ - linewidth = 40*\staffspace; -% Now by default -% \translator { -% \VoiceContext -% Beam \override #'auto-knee-gap = #7 -% } - } -} diff --git a/input/test/bar-number.ly b/input/test/bar-number.ly index 731be52469..e69de29bb2 100644 --- a/input/test/bar-number.ly +++ b/input/test/bar-number.ly @@ -1,8 +0,0 @@ - \score { \notes { - - c1 c1 c1 c1\break - c1 c1 c1 c1\break - \property Score.currentBarNumber = 25 - c1 c1 c1 c1 -} - \paper{ \translator {\BarNumberingStaffContext }}} diff --git a/input/test/bar-scripts.ly b/input/test/bar-scripts.ly index 644550de3f..e69de29bb2 100644 --- a/input/test/bar-scripts.ly +++ b/input/test/bar-scripts.ly @@ -1,41 +0,0 @@ -\header{ -texidoc=" -Markings that are attached to (invisible) barlines are -delicate: the are attached to the rest of the score without the score -knowing it. Consequently, they fall over often. -"; -} - -\version "1.3.117"; - -onestaff = \context Staff = foo\notes { - \property Staff.instr = instr - \property Staff.instrument = instrument \mark "B"; - c1 \mark "A"; \break c2 c2 \break -} - -grstaff = \notes \context GrandStaff < - \context Staff = bar { - - \property Staff.instr = instr - - \mark "B"; \break c1 \mark "A"; c2 } - \context Staff = bufl { c1 c2 } -> - -scpaper = \paper {\translator {\OrchestralScoreContext}} -stpaper = \paper{ \translator {\BarNumberingStaffContext }} - -scscore = \score { \grstaff \paper { -\scpaper -}} - - -stscore = \score { \onestaff \paper { - \stpaper -}} - -%\score {\stscore} -\score {\scscore -\header { title = "bar scripts"; } -} diff --git a/input/test/beam-cross-staff.ly b/input/test/beam-cross-staff.ly index 72b3c288fa..e69de29bb2 100644 --- a/input/test/beam-cross-staff.ly +++ b/input/test/beam-cross-staff.ly @@ -1,32 +0,0 @@ -\header{ -texidoc=" -Beams can be typeset over fixed distance aligned staffs, beam -beautification doesn't really work, but knees do. Beams should be -behave well, wherever the switching point is. -"; -} -\score{ - \context PianoStaff < - \context Staff=one \notes\relative c'{ - \stemUp [c8 c \translator Staff=two \stemUp c c] - [c c c c] - \translator Staff=one - \stemDown [c8 c \translator Staff=two \stemUp c c] - r2 - \stemDown [c8 c \translator Staff=one \stemDown c c] - r2 - \translator Staff=two - \stemUp [c8 c \translator Staff=one \stemDown c c] - r2 - } - \context Staff=two \notes\relative c'{ - \clef bass; - s1 - s1 - s1 - s1 - } - > -} - -\version "1.3.117"; diff --git a/input/test/beam-dir-function.ly b/input/test/beam-dir-function.ly index d445468a09..e69de29bb2 100644 --- a/input/test/beam-dir-function.ly +++ b/input/test/beam-dir-function.ly @@ -1,40 +0,0 @@ -\header{ -texidoc=" -There are several ways to calculate the direction of a beam - -@table @samp -@item majority -number count of up or down notes -@item mean -mean centre distance of all notes -@item median -mean centre distance weighted per note -@end table - -We should see: - - up down down - - up up down -"; -} - -\score { - \notes \relative c'' { - % the default - %\property Voice.Beam \set #'dir-function = #beam-dir-majority - [d8 a] - \property Voice.Beam \set #'dir-function = #beam-dir-mean - [d a] - \property Voice.Beam \set #'dir-function = #beam-dir-median - [d a] - - \property Voice.Beam \set #'dir-function = #beam-dir-majority - \time 3/8; - [d8 a a] - \property Voice.Beam \set #'dir-function = #beam-dir-mean - [d a a] - \property Voice.Beam \set #'dir-function = #beam-dir-median - [d a a] - } -} diff --git a/input/test/beam-extreme.ly b/input/test/beam-extreme.ly index 653024e70c..e69de29bb2 100644 --- a/input/test/beam-extreme.ly +++ b/input/test/beam-extreme.ly @@ -1,19 +0,0 @@ -\header{ -texidoc=" -Beams should behave reasonably well, even under extreme circumstances. -Stems may be short, but noteheads should never touch the beam. -"; -} -\version "1.3.117"; -\score{ - \notes\relative c''{ - [g8 c c,] - [c16 c'' a f] - \stemUp - [c,,32 c'' a f] - - } - \paper{ - linewidth=-1.; - } -} diff --git a/input/test/beam-length.ly b/input/test/beam-length.ly index 3c2a8f16be..e69de29bb2 100644 --- a/input/test/beam-length.ly +++ b/input/test/beam-length.ly @@ -1,14 +0,0 @@ -\header{ -texidoc=" -beams should look the same -"; -} - -\score { - \context Voice \notes\relative c { - - [d''8 d d] [d g d] - c c - - } -} diff --git a/input/test/beam-position.ly b/input/test/beam-position.ly index 88f5749d5b..e69de29bb2 100644 --- a/input/test/beam-position.ly +++ b/input/test/beam-position.ly @@ -1,22 +0,0 @@ -\header{ -texidoc=" -Beams should always reach the middle staff line. The second beam -counting from the note head side, should never be lower than the -second staff line. This does not hold for grace note beams. -Override with @code{noStemExtend}. -"; -} -\version "1.3.117"; - -\score { - \context Voice \notes\relative c { - [f8 f] [f64 f] \grace { [f8 e8] } - \property Grace.Stem \override #'no-stem-extend = ##t - [f8 f] - - } - \paper { - linewidth=-1.0; - } - \midi { } -} diff --git a/input/test/beam-rest.ly b/input/test/beam-rest.ly index bf8d2788f6..e69de29bb2 100644 --- a/input/test/beam-rest.ly +++ b/input/test/beam-rest.ly @@ -1,17 +0,0 @@ -\header{ -texidoc=" -Beams over rests. -"; -} - -\score{ - \context Staff=one \notes\relative c''{ - r4 [r8 g a] - [bes8 r16 f g a] - [bes8 r16 \property Voice.stemLeftBeamCount = #1 f g a] - - } - \paper{ - linewidth =-1; - } -} diff --git a/input/test/beaming.ly b/input/test/beaming.ly index b1673319bf..e69de29bb2 100644 --- a/input/test/beaming.ly +++ b/input/test/beaming.ly @@ -1,27 +0,0 @@ -\header{ -texidoc=" -Beaming is generated automatically. Beams may cross bar lines. In that -case, line breaks are forbidden. Yet clef and key signatures are -hidden just as with breakable bar lines. -"; -} - -\score { \context Staff \notes \relative c'' { - [c8. c16] - [c8. c16 c8. c16] - [c16 c8.] | - [c8. c16 c16 c8.] - [c8. c32 c32] - [c8 c8] | - [c16 c16] - [c32 c32] - [c64 c64] - c32 - [c8 c,4 c'8] % should warn here! - [c8 c c] c8 % over barline - [c16 c8 c16] - [c32 c16 c16 c16 c32] - [c32 c16 c8 c32] % hmm ? - - }} - diff --git a/input/test/between-systems.ly b/input/test/between-systems.ly index e5d3577845..e69de29bb2 100644 --- a/input/test/between-systems.ly +++ b/input/test/between-systems.ly @@ -1,19 +0,0 @@ -\header{ -texidoc=" -The same mechanism can be used to force pagebreaks. -"; -} - - -% In reality, you'd use #"\\newpage" instead of "(pagebreak)", of course. - -\score { -\notes { c1 - - \context Score \outputproperty #(make-type-checker 'paper-column-interface) - #'between-system-string = #"(pagebreak)\n\n" - \break - -c1 } - -} diff --git a/input/test/break.ly b/input/test/break.ly index 49f7ddde61..e69de29bb2 100644 --- a/input/test/break.ly +++ b/input/test/break.ly @@ -1,17 +0,0 @@ -\header{ -texidoc=" -Breaks can be encouraged and discouraged using @code{\break} and -@code{\noBreak}. They are abbrevs for @code{\penalty} commands. -"; -} - - -\score{ - \notes\context Voice{ - \emptyText - c1 c1^"no break after 2nd note" \noBreak c1 c1 - - c1^"break after this" \break c1 c1 - } - \paper { linewidth = 4.0\cm;} -} diff --git a/input/test/breathing-sign.ly b/input/test/breathing-sign.ly index 70e375fe7a..e69de29bb2 100644 --- a/input/test/breathing-sign.ly +++ b/input/test/breathing-sign.ly @@ -1,27 +0,0 @@ -\header{ -texidoc=" -Breathing signs, also used for phrasing, do normally not influence -global spacing -- only if space gets tight, notes are shifted to make -room for the breathing sign. Breathing signs break beams running -through their voice. In the following example, the notes in the first -two measures all have the same distance from each other: -"; -} - - -\version "1.3.117"; - -\score { - \notes \relative c' { - \key es \major; \time 3/4; - < \context Voice = two { \stemDown es4 bes es } - \context Voice = one { \stemUp g4 as g } - > | - < \context Voice = two { \stemDown es4 \breathe bes es } - \context Voice = one { \stemUp g4 as g } - > | - es8 d es f g4 \breathe | - es8 d \breathe es f g f | - es2 r4 \bar "||"; - } -} diff --git a/input/test/chord-names.ly b/input/test/chord-names.ly index 2d233f5e19..e69de29bb2 100644 --- a/input/test/chord-names.ly +++ b/input/test/chord-names.ly @@ -1,37 +0,0 @@ -\header{ -texidoc=" -Chord names are generated from a list pitches, and are customisable -from guile. For some unlogical names, guile customisation is used -by default. -"; -} -\version "1.3.117" -chord = \notes\transpose c''\chords{ - c1 - c:m - c:m5- - c:m5-.7- - c:7+ - c:m5-.7 - c:5-.7+ - c:m7 - c:7 - d - d/a - d/+gis -} - -\score{ - < - \context ChordNames \chord - \context Staff \chord - > - \paper{ - - \translator { - \ChordNamesContext - ChordName \override #'word-space = #1 - } - } -} - diff --git a/input/test/chord-tremolo.ly b/input/test/chord-tremolo.ly index 6d941ff971..e69de29bb2 100644 --- a/input/test/chord-tremolo.ly +++ b/input/test/chord-tremolo.ly @@ -1,20 +0,0 @@ -\header{ -texidoc=" -Chord tremolos look like beams, but are a kind of repeat symbol. -To avoid confusion, chord tremolo beams do not reach the stems, but -leave a gap. Chord tremolo beams on half notes are not ambiguous, -as half notes cannot appear in a regular beam, and should reach the -stems. -"; -} - -\score { - \context Voice \notes\relative c { - \repeat "tremolo" 8 { c16 d16 } - \repeat "tremolo" 4 { c16 d16 } - } - \paper { - linewidth=-1.0; - } - \midi { } -} diff --git a/input/test/clefs.ly b/input/test/clefs.ly index 834595b0ca..e69de29bb2 100644 --- a/input/test/clefs.ly +++ b/input/test/clefs.ly @@ -1,37 +0,0 @@ - -\header{ -texidoc=" -The transparent clef should not occupy any space and with style -@code{fullSizeChanges}, the changing clef should be typeset in full -size. For octaviated clefs, the ``8'' should appear closely above or -below the clef respectively. The ``8'' is processed in a convoluted -way, so this is fragile as well. -"; -} - -\version "1.3.117"; - -\score { - \notes{ - - \clef "treble"; c'1^"{treble}" \bar "||"; - \clef "french";c'1^"{french}" \bar "||"; - \clef "soprano";c'1^"{soprano}" \bar "||"; - \clef "mezzosoprano";c'1^"{mezzosoprano}" \bar "||"; - \clef "alto";c'1^"{alto}" \bar "||"; - \clef "tenor";c'1^"{tenor}" \bar "||"; - \clef "baritone";c'1^"{baritone}" \bar "||"; - \clef "varbaritone";c'1^"{varbaritone}" \bar "||"; - \clef "G_8";c'1^"{sub 8?}" c'1 \bar "||"; - \clef "G^8";c'1^"{sup 8?}" c'1 \bar "||"; - \clef "bass";c'1^"{bass}" \bar "||"; - \clef "subbass";c'1^"{subbass}" \bar "||"; - \property Staff.clefStyle="transparent" - \clef "treble"; c'1^"clefStyle=\"transparent\"" \bar "||"; - \property Staff.clefStyle="fullSizeChanges" - \clef "treble"; c'1^"clefStyle=\"fullSizeChanges\"" \bar "|."; - } - \paper{ - } -} - diff --git a/input/test/collisions.ly b/input/test/collisions.ly index 1933d10097..e69de29bb2 100644 --- a/input/test/collisions.ly +++ b/input/test/collisions.ly @@ -1,79 +0,0 @@ -\header{ -texidoc=" -Normal collisions. We have support for polyphony, where the -middle voices are horizontally shifted. -"; -filename = "collisions.ly"; -description = "random counterpoint to test collisions"; -enteredby = "HWN,JCN"; -copyright = "public domain"; -Tested = "test the Collision resolution "; -} -\version "1.3.117"; - -twovoice = \context Staff \notes < - \context Voice=i { \stemDown c4 d e f g2~ g4 a [c8 d e f] c2| } - \context Voice=ii { \stemUp g4 f e g ~ g2 g2 c4 g4 g2 } -> - -twovoicesteminvert = \context Staff \notes < - % the f and g on 4th beat are exceptionally ugh. - \context Voice=i { \stemUp c4 d e f g2 g4 a | } - \context Voice=ii { \stemDown g4 f e g g2 g2 } -> - -threevoice = \context Staff \notes < - \context Voice=i { \stemUp g4 f e f g a g2 } - \context Voice=ii { \stemUp \property Voice.NoteColumn \override #'horizontal-shift = #1 - e2 e2 e2 e2 } - \context Voice=iii { \stemDown c4 d e d c d es } -> - -chordstest = \context Staff \notes < - \context Voice = i \relative c { - \stemUp e4 dis c f g f a b b - } - \context Voice = ii \relative c { - \stemDown - } -> - -hairyChord = \context Staff \notes\relative c' < - \context Voice=one { - \property Voice.NoteColumn \override #'horizontal-shift = #0 - \stemUp - e4 - } - - \context Voice=two { - \stemUp - \property Voice.NoteColumn \override #'horizontal-shift = #1 - cis - } - - \context Voice=three { - \property Voice.NoteColumn \override #'horizontal-shift = #2 - - \stemUp - ais - } - - \context Voice=four { - \stemDown - \property Voice.NoteColumn \override #'horizontal-shift = #1 - - fis - } -> - - -\score{ - \notes \transpose c'' { \twovoice - \twovoicesteminvert - \threevoice \break - \chordstest - \hairyChord - } - -% \midi { \tempo 4:80 } -} diff --git a/input/test/dots.ly b/input/test/dots.ly index fbb8855d0d..e69de29bb2 100644 --- a/input/test/dots.ly +++ b/input/test/dots.ly @@ -1,30 +0,0 @@ -\header{ -texidoc=" -Noteheads can have dots, and rests can too. Augmentation dots should -never be printed on a staff line, but rather be shifted vertically. They -should go up, but in case of multiple parts, the down stems have down -shifted dots. (Wanske p. 186) In case of chords, all dots should be in -a column. The dots go along as rests are shifted to avoid collisions. -"; -} - - -\version "1.3.117"; -\score { - \context Voice \notes\relative c'' { - \time 6/8; - d4. g,, - - - - - \context Staff < - \context Voice = VA { \stemUp f'' r4. } - \context Voice = VB { \stemDown b, r4. } - > - - - } - \paper { } - \midi { } -} diff --git a/input/test/dyn-line.ly b/input/test/dyn-line.ly index 31f5dc597b..e69de29bb2 100644 --- a/input/test/dyn-line.ly +++ b/input/test/dyn-line.ly @@ -1,27 +0,0 @@ -\header{ -texidoc=" -Dynamics appear below or above the staff. If multiple dynamics are -linked with (de)crescendi, they should be on the same line. -"; -} -\score{ -\notes\relative c''{ -a1\fff\> \!c,,\pp a'' a\p - - -% We need this to test if we get two Dynamic line spanners -a - -% because do_removal_processing () -% doesn't seem to post_process elements -d\f - -a - -} -\paper{ -} -\midi{ -\tempo 1 = 60; -} -} diff --git a/input/test/follow-thread.ly b/input/test/follow-thread.ly index 26144d9121..e69de29bb2 100644 --- a/input/test/follow-thread.ly +++ b/input/test/follow-thread.ly @@ -1,36 +0,0 @@ -\header{ -texidoc=" -Theads can be traced automagically when they switch staffs by setting -property @code{followThread}. -"; -} -% followThread: connect note heads with line when thread switches staff - -\score{ - \context PianoStaff < - \context Staff=one \notes\relative c''{ - \context Thread - d, - \translator Staff=two - c -%{ - b - \translator Staff=one - a' - - [c,8 - \translator Staff=two - c] - s2. -%} - } - \context Staff=two { \clef bass; \skip 1*2; } - > - \paper{ - linewidth = 90.\mm; - \translator { - \ScoreContext - followThread = ##t - } - } -} diff --git a/input/test/generic-output-property.ly b/input/test/generic-output-property.ly index f3a5586586..e69de29bb2 100644 --- a/input/test/generic-output-property.ly +++ b/input/test/generic-output-property.ly @@ -1,26 +0,0 @@ -\header{ -texidoc=" -As a last resort, the placement of grobs can be adjusted manually, by -setting the @code{extra-offset} of a grob. -"; -} - -\score{ - \notes\relative c''{ - \outputproperty #(make-type-checker 'note-head-interface) - #'extra-offset = #'(2 . 3) - c2 - c - \context Score { - \outputproperty #(make-type-checker 'mark-interface) - #'extra-offset = #'(-1 . 4) - } - \mark A; - d1 - \mark; - e -} -\paper{ - linewidth=-1.0; -} -} diff --git a/input/test/generic-property-override.ly b/input/test/generic-property-override.ly index c3cb0d25b1..e69de29bb2 100644 --- a/input/test/generic-property-override.ly +++ b/input/test/generic-property-override.ly @@ -1,17 +0,0 @@ -\header{ -texidoc=" -More specific settings take precendence over less specific settings. The -second slur has slurDirection set to down, overriding the stemup setting. -"; -} -\version "1.3.117"; - -\score { - \notes \relative c'' \context Voice { - \stemUp - c'4 () c4 - \slurDown - c4 ( )c4 - } - \paper { linewidth = -1.0; } -} diff --git a/input/test/glissando.ly b/input/test/glissando.ly index 115c5c2883..e69de29bb2 100644 --- a/input/test/glissando.ly +++ b/input/test/glissando.ly @@ -1,30 +0,0 @@ -\header{ - -texidoc=" Simple glissando lines between notes are supported. -The first two glissandi are not consecutive. - -The engraver does no time-keeping, so it involves some trickery to get -< @{ s8 s8 s4 @} @{ c4 \\gliss d4 @} > working correctly. - -"; -} - -\score{ - \context Staff=one \notes\relative c''{ - % gliss non gliss and - c4 \glissando d e \glissando f \glissando \break - % consecutive - c \glissando d \glissando e - < { \stemUp e8 \glissando g8 } - \context Voice = VB {\stemDown \repeat unfold 4 d16 } > - - } - \paper{ - linewidth = 70.\mm; - \translator{ - \StaffContext - % makes for handier debugging - % \remove Clef_engraver; - } - } -} diff --git a/input/test/grace.ly b/input/test/grace.ly index dbc42a872c..e69de29bb2 100644 --- a/input/test/grace.ly +++ b/input/test/grace.ly @@ -1,30 +0,0 @@ -\header{ -texidoc=" -Grace notes are typeset as an encapsulated piece of music. You can -have beams, notes, chords, stems etc. within a @code{\grace} section. -Slurs that start within a grace section, but aren't ended are attached -to the next normal note. Grace notes have zero duration. If there -are tuplets, the grace notes won't be under the brace. Grace notes -can have accidentals, but they are (currently) spaced at a fixed -distance. Grace notes (of course) come before the accidentals of the -main note. Grace notes can also be positioned after the main note. - -Grace notes without beams should have a slash, if @code{flagStyle} is -not set. Main note scripts don't end up on the grace note. - -"; -} - -\score {\notes \context Voice = VA \relative c'' { - \grace b8 c4-\fermata - \grace { [c32 cis32] } gis4 - \grace { [cis32 dis32] } e4 - \grace { [c32 d] }\times 2/3 { [c8 c c] } - \grace { [b32 ( c32] } ) c4 - \grace [c8 c8] -% \grace c16 [c8 c8] - \grace { \property Grace.graceAlignPosition = \right c16} c4 -} -\paper {linewidth = -1.;} -\midi{ } -} diff --git a/input/test/hara-kiri-short.ly b/input/test/hara-kiri-short.ly index 1cb4fdbedd..e69de29bb2 100644 --- a/input/test/hara-kiri-short.ly +++ b/input/test/hara-kiri-short.ly @@ -1,40 +0,0 @@ -\header{ -texidoc=" -Hara kiri staffs kill themselves if they are empty. This example really -contains two staffs, but the second contains only spaces, and is -therefore removed. Also, any staff brackets and braces are removed. -"; -} - -\version "1.3.117"; -zager = \context Staff = zager \notes \relative c'' { - \clef treble; - c1 -} - -zoger = \context Staff = zoger \notes \relative c'' { - \clef treble; - \skip 1* 1; -} - -zagers = \context GrandStaff < - \zager - \zoger -> - -\score{ - < - \context StaffGroup = zagers < - \zagers - > - > - \paper{ - linewidth = 80.0\mm; - - \translator { \HaraKiriStaffContext } -%uh? - - } -} - - diff --git a/input/test/keys.ly b/input/test/keys.ly index 3013dd1ca4..e69de29bb2 100644 --- a/input/test/keys.ly +++ b/input/test/keys.ly @@ -1,26 +0,0 @@ -\header{ -texidoc=" -Key signatures appear on key changes. They may also -appear without barlines. The restoration accidentals are not printed at -the start of the line. If @code{createKeyOnClefChange} is set, they're -also created on a clef change. -"; -} - -\version "1.3.117"; - -\score { - \notes \relative c'' - { - \property Staff. createKeyOnClefChange = ##t - \key bes \major; c2 -% \key c \major; % \minor; - \key es \major; % \minor; - c2 - \break - \key bes \major; % \major; - c2 \clef alto; c2 \key d \major; \clef treble; c2 - \property Staff. keySignature = #'((2 . -1) (6 . -1) (4 . -1)) - e2 - } -} diff --git a/input/test/lyric-combine.ly b/input/test/lyric-combine.ly index 1d67184f26..e69de29bb2 100644 --- a/input/test/lyric-combine.ly +++ b/input/test/lyric-combine.ly @@ -1,54 +0,0 @@ -\header{ -texidoc=" -Lyrics can be set to a melody automatically. Excess lyrics will be -dumped. Lyrics will not be set over rests. You can have melismata -either by setting a property melismaBusy, or by setting -automaticMelismas (which will set melismas during slurs and ties). If -you want a different order than first Music, then Lyrics, you must -precook a chord of staffs/lyrics and label those. Of course -@code{\rhythm} ignores any other rhythms in the piece. Hyphens and -extenders do not assume anything about lyric lengths, so they continue -to work. -"; - - -filename = "twinkle-pop.ly"; -xtitle = "Ah, vous dirais-je, maman "; -description = "twinkle twinkle in pop-song-settings"; -composer = "traditional"; -enteredby = "HWN, chords by Johan Vromans"; -copyright = "public domain"; -} - -\version "1.3.117"; - -m = \notes \relative c'' { - \property Staff.automaticMelismata = ##t - \autoBeamOff - g4 r8 \times 2/3 { g'8( f )e } r8 \grace { [d16 c b] } e4 - \emptyText - d8.^"melisma" \melisma c16 - \melismaEnd - b } - -noisebeat = \notes \relative c'' {g16 g g g } -noise = { \noisebeat \noisebeat \noisebeat \noisebeat \noisebeat \noisebeat } -textI = \lyrics { la2 __ la -- la __ la la la la la } -textII = \lyrics { da -- da __ da -- da da da da da } - -\score { - \notes < \context Staff = SA \m - \context Lyrics = LA { s1 } - \context Staff = SB { s1 } - \context Lyrics = LB { s1 } - \context Staff = SC \noise - - \addlyrics - \context Staff = SB \m - < \context Lyrics = LA \textI - \context Lyrics = LB \textII - > - - > -} - diff --git a/input/test/lyrics-bar.ly b/input/test/lyrics-bar.ly index ec0309b322..e69de29bb2 100644 --- a/input/test/lyrics-bar.ly +++ b/input/test/lyrics-bar.ly @@ -1,39 +0,0 @@ -\header{ -texidoc=" -Adding a @code{Bar_engraver} to the LyricsVoice context makes sure that -lyrics don't collide with barlines. -"; -} - -\score { - \context StaffGroup < - \notes \context Staff { - b1 b1 \bar "|."; - } - \lyrics\context Lyrics < - \context LyricsVoiceWithBars { -% thisContextHasSpanBarEngraver1 added - ThisContextCertainlyHasSpanBarEngraverAddedButTheresSomethingFunny1. Here. - } - \context LyricsVoice { - this4 one has no SpanBarEngraverAddedToContext1 - } - > - \notes \context Staff = SB { b1 b1 } - > - \paper { - linewidth = -1.0\cm; - \translator { - \LyricsContext - \consists "Span_bar_engraver"; - \accepts "LyricsVoiceWithBars"; - } - \translator { - \LyricsVoiceContext - \name "LyricsVoiceWithBars"; - } - \translator { - \LyricsVoiceContext - } - } -} diff --git a/input/test/lyrics-multi-stanza.ly b/input/test/lyrics-multi-stanza.ly index a7dee3a6a4..e69de29bb2 100644 --- a/input/test/lyrics-multi-stanza.ly +++ b/input/test/lyrics-multi-stanza.ly @@ -1,154 +0,0 @@ - -\version "1.3.117"; -\include "english.ly" - -\header{ -texidoc=" -Multiple stanzas - - Tests a number of features: - * Lyric_phrasing_engraver - * Stanza_number_engraver - * Automatic melismata on beamed notes - -"; - - title = "Crowned with Honour"; - composer = "Oliver Holden (1765-1844)"; - poet = "Thomas Kelly (1769-1855)"; -} - -allup = \notes{ - \stemUp - \slurUp - \tieUp - \property Voice.DynamicLineSpanner \override #'direction = #1 - \autoBeamOff -} - -alldown = \notes{ - \stemDown - \slurDown - \tieDown - \property Voice.DynamicLineSpanner \override #'direction = #-1 - \autoBeamOff -} - -Global = \notes{ - \key g \major; - \time 4/4; - \partial 4; -} - -Soprano = \notes \relative c' { - \allup - d4 | g g b b a g a b a g b a g( a )g % modified to test melisma align right - - [a8 b] | b4 % modified to test melisma align left - a g b [d16 d c8] [b a] b4 % modified to test beam melisma -% a4 | b a g b [d8 \melisma c] \melismaEnd [b \melisma a] \melismaEnd b4 - - d d2 d e d4( cs8 ~ )cs d2. - - b4 | d b g b [a8 g] [a b] a4 -% b4 | d b g b [a8 \melisma g] \melismaEnd [a \melisma b] \melismaEnd a4 - - g d'2 c b4.( c8 )a4 a g2. -} -Alto = \notes \relative c'{ - \alldown - d4 | d d g g fs g fs g fs e g fs d2. - d4 | g d b g' [b8 a] [g fs] g4 fs g2 a g fs4( e8 )g fs2. - d4 | g g d g [fs8 e] [fs g] fs4 g f2 e d4.( d8 )d4 fs4 d2. -} -Tenor = \notes \relative c{ - \allup - d4 | b' b d d c b c d c b d c b2. - a4 | b a g b [d8 c] [b a] b4 a b2 c b a a2. - g4 | b d b d [c8 b] [c d] c4 b g2 g g4.( a8 [fs )a] c4 b2. -} -Bass = \notes \relative c{ - \alldown - d4 | g g g g d d d g d e d d g,2. - d'4 | g d b g' [b8 a] [g fs] g4 d g2 fs e a d,2. - g4 | g g g g d d d e b2 c d2. d4 g,2. -} - -TheLyrics = \lyrics < - { - \context LyricsVoice = "Soprano-1" - \property LyricsVoice .stanza = "1:" - \property LyricsVoice .stz = "(1)" - The4 head that once was crowned with thorns - Is crowned with glo -- ry now; - A roy -- al di -- a -- dem a -- dorns - The might -- y Vic -- tor's brow. - A roy -- al di -- a -- dem a -- dorns - The might -- y Vic -- tor's brow. - } - { - \context LyricsVoice = "Soprano-2" - \property LyricsVoice .stanza = "2:" - \property LyricsVoice .stz = "(2)" - The4 high -- est place that heav'n af -- fords - Is His by sov -- 'reign right; - The King of kings, the Lord of lords, - He reigns in glo -- ry bright, - The King of kings, the Lord of lords, - He reigns in glo -- ry bright. - } - { - \context LyricsVoice = "Soprano-3" - \property LyricsVoice .stanza = "3:" - \property LyricsVoice .stz = "(3)" - The joy of all who dwell a -- bove, - The joy of saints be -- low, - To4 whom He man -- i -- fests His love, - And grants His name to know, - To4 whom He man -- i -- fests His love, - And grants His name to4 know. - } -> - - -\score{ - \context ChoirStaff - \notes - < - \property Score.barNumberScriptPadding = #10.0 - \context Staff = "treblestaff"{ - < - \context Voice = "Soprano" { } - \context Voice = "Alto" { } - > - } - \context Lyrics = mainlyrics { } - \context Staff = "treblestaff"{ - < - \Global - \addlyrics { \context Voice = "Soprano" \Soprano } - { \context Lyrics = mainlyrics \TheLyrics } - \context Voice = "Alto" \Alto - > - \bar "|."; - } - \context Staff = "bassstaff"{ - \clef "bass"; - < - \context Voice = "Tenor" { \Tenor } - \context Voice = "Bass" { \Bass } - > - \bar "|."; - } - > - - \paper { - \translator{ - \VoiceContext - automaticMelismata = ##t; - noAutoBeaming = ##t; - \remove "Auto_beam_engraver"; - } - - } -} diff --git a/input/test/metronome.ly b/input/test/metronome.ly index 3d0ca2068f..e69de29bb2 100644 --- a/input/test/metronome.ly +++ b/input/test/metronome.ly @@ -1,32 +0,0 @@ - -\version "1.3.117"; - -% Test scm markup text and kerning - -% Warning -% -% This is not a feature, it is a hack. If you change anything, -% it will probably break (that's because scm markup text is a -% bit broken and needs fixing). Chances are, it's already -% broken by the time you read this. Don't complain. -% -% FIXME: put in an item, and typeset by an engraver. - -#(define note '(rows (music "noteheads-2" ((kern . -0.1) "flags-stem")))) -#(define eight-note `(rows ,note ((kern . -0.1) (music ((raise . 3.5) "flags-u3"))))) -#(define dotted-eight-note `(rows ,eight-note (music "dots-dot"))) - - -\score{ - \notes\relative c''{ - a1-#`(rows ,dotted-eight-note " = 64") - } - \paper{ - linewidth = -1.\mm; - \translator{ - \ScoreContext - TextScript \override #'font-shape = #'upright - TextScript \override #'direction = #1 - } - } -} diff --git a/input/test/mm-rests2.ly b/input/test/mm-rests2.ly index c801ec4c67..e69de29bb2 100644 --- a/input/test/mm-rests2.ly +++ b/input/test/mm-rests2.ly @@ -1,30 +0,0 @@ -\header{ -texidoc=" -If @code{Score.skipBars} is set, -the signs for four, two, and one measure rest are combined to -produce the graphical representation of rests for up to 10 bars. -The number of bars will be written above the sign. -"; -} - -thenotes = \notes \relative cis' { -\property Score. skipBars = ##t -\time 4/4; -R1 | -R1*1 | -R1*2 | -R1*3 | -R1*4 | -R1*5 | -R1*6 | -R1*7 | -R1*8 | -R1*9 | -R1*10 | -R1*11 | -} - -\score { < \context Staff \thenotes - - > -} diff --git a/input/test/molecule-hacking.ly b/input/test/molecule-hacking.ly index 49a9ce9f4f..e69de29bb2 100644 --- a/input/test/molecule-hacking.ly +++ b/input/test/molecule-hacking.ly @@ -1,73 +0,0 @@ - -\header { texidoc=" You can write molecule callbacks in Scheme, thus -providing custom glyphs for notation elements. A simple example is -adding parentheses to existing molecule callbacks. - -The parenthesized beam is less successful due to implementation of the -Beam. The note head is also rather naive, since the extent of the -parens are also not seen by accidentals. -"; - - } - -#(define (parenthesize-callback callback) - "Construct a function that will do CALLBACK and add parentheses. -Example usage: - - \property Voice.NoteHead \\override #'molecule-callback - = - #(parenthesize-callback Note_head::brew_molecule) - -" - - - (define (parenthesize-molecule grob) - "This function adds parentheses to the original callback for -GROB. The dimensions of the molecule is not affected. -" - - (let* ( - (fn (ly-get-default-font grob)) - (pclose (ly-find-glyph-by-name fn "accidentals-)")) - (popen (ly-find-glyph-by-name fn "accidentals-(")) - (subject (callback grob)) - - ;; remember old size - (subject-dims (ly-get-molecule-extent subject 0)) - ) - - ;; add parens - (set! subject - (ly-combine-molecule-at-edge - (ly-combine-molecule-at-edge subject 0 1 pclose 0.2) - 0 -1 popen 0.2)) - - ;; revert old size. - (ly-set-molecule-extent! subject 0 subject-dims) - subject - ) - ) - parenthesize-molecule - ) - - - -\score { - \notes \relative c' { c4 e - - \property Voice.NoteHead \override #'molecule-callback - = - #(parenthesize-callback Note_head::brew_molecule) - g bes - \property Voice.NoteHead \revert #'molecule-callback - \property Voice.Beam \override #'molecule-callback - = - #(parenthesize-callback Beam::brew_molecule) - - a8 gis8 a2. - - } - - \paper { linewidth = -1.; } - } - diff --git a/input/test/multi-measure-rest.ly b/input/test/multi-measure-rest.ly index 01732e4e88..e69de29bb2 100644 --- a/input/test/multi-measure-rest.ly +++ b/input/test/multi-measure-rest.ly @@ -1,20 +0,0 @@ -\header{ -texidoc=" -Multiple measure rests do not collide with barlines and clefs. They -are not expanded when you set @code{Score.skipBars}. Although the -multi-measure-rest is a Spanner, minimum distances are set to keep it -colliding from barlines. -"; -} -\version "1.3.117"; - -\score { \notes { \time 3/4; \key cis \major; - R2.*15 R2. R2.*7 } - \paper { - \translator { - \ScoreContext - skipBars = ##t - } - linewidth = -1.; - } -} diff --git a/input/test/music-apply.ly b/input/test/music-apply.ly index e0f2144ef4..e69de29bb2 100644 --- a/input/test/music-apply.ly +++ b/input/test/music-apply.ly @@ -1,31 +0,0 @@ -\header { -texidoc=" -Simple customised music apply. -"; -} - -music = \notes { c'4 d'4( e'4 f'4 } - -#(define (reverse-music music) - (let* ((elements (ly-get-mus-property music 'elements)) - (reversed (reverse elements)) - (span-dir (ly-get-mus-property music 'span-direction))) - - (ly-set-mus-property music 'elements reversed) - - (if (dir? span-dir) - (ly-set-mus-property music 'span-direction (- span-dir))) - - (map reverse-music reversed) - - music)) - -\score { - \context Voice { - \music - \apply #reverse-music \music - } - \paper { - linewidth = -1.; - } -} diff --git a/input/test/non-empty-text.ly b/input/test/non-empty-text.ly index 1d445c81fb..e69de29bb2 100644 --- a/input/test/non-empty-text.ly +++ b/input/test/non-empty-text.ly @@ -1,15 +0,0 @@ -\header{ -texidoc=" -Text is set with empty horizontal dimensions. The boolean property -textNonEmpty is used to respect the horizontal size of text. -"; -} -\score { \notes { -\property Voice.TextScript \override #'no-spacing-rods = ##f -c4_"very wide and long text" c4 -} - -\paper { - linewidth = -1.0; - } -} diff --git a/input/test/noteheadstyle.ly b/input/test/noteheadstyle.ly index c59f40c073..e69de29bb2 100644 --- a/input/test/noteheadstyle.ly +++ b/input/test/noteheadstyle.ly @@ -1,63 +0,0 @@ -\header{ -texidoc=" -Note head shapes are settable. The stem endings should be adjusted -per note head. If you want different note head styles on one stem, -you must create a special context called Thread. - -Harmonic notes have a different shape and different -dimensions. Nevertheless, noteheads in both styles can be combined, on -either up or down stems. -"; -} - -\version "1.3.117"; - - -\score { \notes \relative c{ -% anyone wanna pop? -c''4 c2 c8 c16 c16 c1 c\breve -\property Voice.NoteHead \override #'style = #'diamond -c4 c2 c8 c16 c16 c1 c\breve -\property Voice.NoteHead \override #'style = #'transparent -c4 c2 c8 c16 c16 c1 c\breve -\property Voice.NoteHead \override #'style = #'cross -c4 c2 c8 c16 c16 c1 c\breve -\property Voice.NoteHead \override #'style = #'mensural -c4 c2 c8 c16 c16 c1 c\breve c\longa -\property Voice.NoteHead \override #'style = #'harmonic -c4 c2 c8 c16 c16 c1 c\breve -\property Voice.NoteHead \override #'style = #'baroque -c4 c2 c8 c16 c16 c1 c\breve c\longa - - - \context Voice < - \context Thread = TA - { - \property Thread.NoteHead \override #'style = #'cross - \property Voice.Stem \override #'direction = #1 - c16 - } - \context Thread = TB - { \property Thread.NoteHead \override #'style = #'default a16 } - - \context Thread = TC - { \property Thread.NoteHead \override #'style = #'mensural d16 } - - > - - - \context Voice <\context Thread = TA { - \property Thread.NoteHead \override #'style = #'default - c4 c4 } -\context Thread = TB { - \property Thread.NoteHead \override #'style = #'mensural - c'4 \stemDown c -} > - -} - - \paper { - - -} -} diff --git a/input/test/number-staff-lines.ly b/input/test/number-staff-lines.ly index 5494d66c52..e69de29bb2 100644 --- a/input/test/number-staff-lines.ly +++ b/input/test/number-staff-lines.ly @@ -1,19 +0,0 @@ -\header{ - -texidoc=" The number of stafflines of a staff can be set. Ledger -lines both on note heads and rests are adjusted. Barlines also are -adjusted. "; - -} - -\score { -\context Voice \notes\relative c { - c' c c c | g' g g g - } - \paper { - -\translator { \StaffContext -StaffSymbol \override #'line-count = #3 -} } - \midi { } -} diff --git a/input/test/ophee-slurs.ly b/input/test/ophee-slurs.ly index 1e595dca67..e69de29bb2 100644 --- a/input/test/ophee-slurs.ly +++ b/input/test/ophee-slurs.ly @@ -1,19 +0,0 @@ -\header{ -texidoc=" -Slurs can be forced to always attach to note heads. -"; -} - - -\score{ - \notes \relative c''{ - \property Voice.VerticalDirection = #1 - \property Voice.slurBeginAttachment = #'head - \property Voice.slurEndAttachment = #'head - g16()g()g()g()d'()d()d()d - } - \paper{ - indent = 0.0; - linewidth = 60.0\mm; - } -} diff --git a/input/test/orchestscore.ly b/input/test/orchestscore.ly index 99160b7dd1..be3360d573 100644 --- a/input/test/orchestscore.ly +++ b/input/test/orchestscore.ly @@ -77,7 +77,8 @@ c1 | c2 c | c c | R1*5 \m > \context Staff = vlc < - \property Staff.instrument = "Violoncello" + %% \property Staff.instrument = "Violoncello" + \property StaffCombineStaff.instrument = #'(lines "Violoncello" "e" "Contrabasso") \property Staff.instr = "Vlc" \m > @@ -93,8 +94,12 @@ c1 | c2 c | c c | R1*5 linewidth = 185.\mm; textheight = 260.\mm; \translator { - \OrchestralScoreContext -% barNumberScriptPadding = 10; + \OrchestralScoreContext + skipBars = ##t + markScriptPadding = #4.0 + BarNumber \override $'padding = #3 + RestCollision \override #'maximum-rest-count = #1 + marginScriptHorizontalAlignment = #1 } \translator { \HaraKiriStaffContext } diff --git a/input/test/ottava.ly b/input/test/ottava.ly index b4b0cfa9a0..e69de29bb2 100644 --- a/input/test/ottava.ly +++ b/input/test/ottava.ly @@ -1,22 +0,0 @@ - -\version "1.3.117"; - -\score{ - \notes\relative c'''{ - \property Voice.TextSpanner \revert #'type - \property Voice.TextSpanner \override #'type = #'dotted-line - \property Voice.TextSpanner \override #'edge-height = #'(0 . 1.5) - \property Voice.TextSpanner \override #'edge-text = #'("8va " . "") - \property Staff.centralCPosition = #-13 - - a\spanrequest \start "text" b c a \spanrequest \stop "text" - - \property Staff.centralCPosition = #-6 - a b c a - - \property Staff.centralCPosition = #1 - \property Voice.TextSpanner \override #'edge-text = #'("8bass " . "") - \property Voice.TextSpanner \override #'direction = #-1 - a\spanrequest \start "text" b c a \spanrequest \stop "text" - } -} diff --git a/input/test/part-combine-score.ly b/input/test/part-combine-score.ly index ba9999d04a..591343f6e0 100644 --- a/input/test/part-combine-score.ly +++ b/input/test/part-combine-score.ly @@ -1,213 +1,273 @@ +\header { +texidoc="Template for part-combining orchestral scores"; +} + +\include "paper16.ly"; +% \include "mutopia/Coriolan/coriolan-paper.ly"; + + + +flautoI = \notes\relative c'' { + c4 d e f + b,4 d c d + r2 e4 f + \break + c4 d e f + c4 r e f + c4 r e f + \break + c4 r a r + a a r a + a2 \property VoiceCombineThread.soloADue = ##f a +} + +flautoII = \notes\relative c'' { + g4 b d f + r2 c4 d + a c c d + a4. b8 c4 d + c r e r + r2 s2 + a,4 r a r + a r r a + a2 \property VoiceCombineThread.soloADue = ##f a +} + +flautiStaff = \notes \context VoiceCombineStaff = flauti < + \property VoiceCombineStaff.midiInstrument = #"flute" + \property VoiceCombineStaff.instrument = #"2 Flauti" + \property VoiceCombineStaff.instr = #"Fl." + %\global + \context VoiceCombineVoice=one \partcombine VoiceCombineVoice + \context VoiceCombineThread=one \flautoI + \context VoiceCombineThread=two \flautoII +> + +legniGroup = \context StaffGroup = legni_group < + \flautiStaff + %\oboiStaff + %\clarinettiStaff + %\fagottiStaff +> + +violinoI = \notes\relative c'' { + c4 d e f + c d e f + c d e f + c d e f + c d e f + c d e f + c4 d e f + a8 a a a b b b b + d1 +} + +violinoII = \notes\relative c'' { + c4 d e f + c d e f + c d e f + c2 e2 + c4 d e f + c2 e2 + c,4 d e f + a8 a a a b b b b + b1 +} + +violinoIStaff = \context Staff = violino1 < + \property Staff.midiInstrument = #"violin" + \property Staff.instrument = #"Violino I" + \property Staff.instr = #"Vl. I" + \notes< + %\global + \context Voice=violinoi + \violinoI + > +> + +violinoIIStaff = \context Staff = violino2 < + % MIDI hoort geeneens verschil tussen een + % eerste en tweede viool ;-) + \property Staff.midiInstrument = #"violin" + \property Staff.instrument = #"Violino II" + \property Staff.instr = #"Vl. II" + \notes< + %\global + \context Voice=violinoii + \violinoII + > +> + +violaI = \notes\transpose c, \violinoI + +violaII = \notes\transpose c, \violinoII + +violiGroup = \notes \context VoiceCombineStaff = violi < + \context VoiceCombineStaff=violi { + \property VoiceCombineStaff.midiInstrument = #"viola" + \property VoiceCombineStaff.instrument = #"Viola" + \property VoiceCombineStaff.instr = #"Vla." + \clef "alto"; + \key es \major; + \skip 1*314; + \bar "|."; + } + \context VoiceCombineVoice=one \partcombine VoiceCombineVoice + \context VoiceCombineThread=one \violaI + \context VoiceCombineThread=two \violaII +> + +violoncello = \notes\relative c { + \clef bass; + c1 d e f c d e f c +} + +contrabasso = \notes\relative c { + \clef bass; + c1 + d4 e d e + e1 + f4 g f g + c1 + d4 e d e + e1 + f4 g f g + c1 +} + + +bassiGroup = \context PianoStaff = bassi_group \notes < + \context StaffCombineStaff=oneBassi { + \property StaffCombineStaff.midiInstrument = #"cello" + %\property StaffCombineStaff.instrument = #"Violoncello\ne\nContrabasso" + \property StaffCombineStaff.instrument = #'(lines "Violoncello" "e" "Contrabasso") + \property StaffCombineStaff.instr = #"Vc." + \clef "bass"; + \key es \major; + \skip 1*314; + \bar "|."; + } + \context StaffCombineStaff=twoBassi { + \property StaffCombineStaff.midiInstrument = #"contrabass" + \property StaffCombineStaff.instrument = #"Contrabasso" + \property StaffCombineStaff.instr = #"Cb." + \clef "bass"; + \key es \major; + \skip 1*314; + \bar "|."; + } + + \context StaffCombineStaff=oneBassi \partcombine StaffCombineStaff + \context StaffCombineVoice=oneBassi \violoncello + \context StaffCombineVoice=twoBassi \contrabasso +> + + +violiniGroup = \context GrandStaff = violini_group < + \violinoIStaff + \violinoIIStaff +> + +archiGroup = \context StaffGroup = archi_group < + \violiniGroup + \violiGroup + \bassiGroup +> + + \score{ - < - \context VoiceCombineStaff = flauti < - \time 4/4; - - \context VoiceCombineThread=one \skip 1*9; - \context VoiceCombineThread=two \skip 1*9; - - \context VoiceCombineVoice=one \partcombine VoiceCombineVoice - \context VoiceCombineThread=one \notes\relative c'' - { - c4 d e f - b,4 d c d - r2 e4 f - \break - c4 d e f - c4 r e f - c4 r e f - \break - c4 r a r - a a r a - a2 \property VoiceCombineThread.soloADue = ##f a - } - \context VoiceCombineThread=two \notes\relative c'' - { - g4 b d f - r2 c4 d - a c c d - a4. b8 c4 d - c r e r - r2 s2 - a,4 r a r - a r r a - a2 \property VoiceCombineThread.soloADue = ##f a - } - > - \context PianoStaff = violi < - \context StaffCombineStaff=oneVioli { \clef alto; \skip 1*9;} - \context StaffCombineStaff=twoVioli { \clef alto; \skip 1*9;} - \context StaffCombineStaff=oneVioli \partcombine StaffCombineStaff - \context StaffCombineVoice=one \notes\relative c' - { - c4 d e f - c d e f - c d e f - c d e f - c d e f - c d e f - c4 d e f - a8 a a a b b b b - d1 - } - \context StaffCombineVoice=two \notes\relative c' - { - c4 d e f - c d e f - c d e f - c2 e2 - c4 d e f - c2 e2 - c,4 d e f - a8 a a a b b b b - b1 - } - > - \context PianoStaff = lower < - \context StaffCombineStaff=oneBassi { \clef bass; \skip 1*9;} - \context StaffCombineStaff=twoBassi { \clef bass; \skip 1*9;} - \context StaffCombineStaff=oneBassi \partcombine StaffCombineStaff - \context StaffCombineVoice=oneB \notes\relative c - { - \clef bass; - c1 - d - e - f - c - d - e - f - c - } - \context StaffCombineVoice=twoB \notes\relative c - { - \clef bass; - c1 - d4 e d e - e1 - f4 g f g - c1 - d4 e d e - e - f4 g f g - c1 - } - > - > - \paper { - - textheight = 295.0\mm; - linewidth = 180.0\mm; - - \translator{ \HaraKiriStaffContext } - % - % The Voice combine hierarchy - % - \translator{ - \ThreadContext - \name "VoiceCombineThread"; - \consists "Rest_engraver"; - } - \translator{ - \VoiceContext - \name "VoiceCombineVoice"; - soloText = #"I." - soloIIText = #"II." - \remove "Rest_engraver"; - \accepts "VoiceCombineThread"; - } - \translator{ - \HaraKiriStaffContext - \consists "Mark_engraver"; - \name "VoiceCombineStaff"; - \accepts "VoiceCombineVoice"; - } - - % - % The Staff combine hierarchy - % - \translator{ - \ThreadContext - \name "StaffCombineThread"; - } - \translator{ - \VoiceContext - \name "StaffCombineVoice"; - \accepts "StaffCombineThread"; - \consists "Thread_devnull_engraver"; - } - \translator { - \HaraKiriStaffContext - \name "StaffCombineStaff"; - \accepts "StaffCombineVoice"; - - soloADue = ##t - soloText = #"" - soloIIText = #"" - aDueText = #"" - splitInterval = #'(1 . 0) - } - \translator { - \StaffGroupContext - \accepts "VoiceCombineStaff"; - \accepts "StaffCombineStaff"; - } - \translator{ \HaraKiriStaffContext } - - \translator { - \ScoreContext - \accepts "VoiceCombineStaff"; - \accepts "StaffCombineStaff"; - skipBars = ##t - - barScriptPadding = #2.0 % dimension \pt - markScriptPadding = #4.0 - - %% urg: in pt? - barNumberScriptPadding = #15 - %% URG: this changes dynamics too - %%textStyle = #"italic" - timeSignatureStyle = #"C" - maximumRestCount = #1 - } - } - \midi{ - \tempo 4 = 150; - - \translator { - \ThreadContext - \name "VoiceCombineThread"; - } - \translator { - \VoiceContext - \name "VoiceCombineVoice"; - \accepts "VoiceCombineThread"; - } - \translator { - \StaffContext - \name "VoiceCombineStaff"; - \accepts "VoiceCombineVoice"; - } - - \translator { - \ThreadContext - \name "StaffCombineThread"; - } - \translator { - \VoiceContext - \name "StaffCombineVoice"; - \accepts "StaffCombineThread"; - } - \translator { - \StaffContext - \name "StaffCombineStaff"; - \accepts "StaffCombineVoice"; - } - \translator { - \ScoreContext - \accepts "VoiceCombineStaff"; - \accepts "StaffCombineStaff"; - } - } + < + \legniGroup + %\ottoniGroup + %\timpaniGroup + \archiGroup + > + \header { + title = "Coriolan"; + subtitle = "Ouverture"; + opus = "Opus 62"; + composer = "Ludwig van Beethoven (1770-1827)"; + enteredby = "JCN"; + copyright = "public domain"; + } + %\paper {} + \paper{ + \paperSixteen + + %textheight = 290.0\mm; + %linewidth = 195.0\mm; + textheight = 285.0\mm; + linewidth = 190.0\mm; + + \translator{ \HaraKiriStaffContext } + % + % The Voice combine hierarchy + % + \translator{ + \ThreadContext + \name "VoiceCombineThread"; + \consists "Rest_engraver"; + } + \translator{ + \VoiceContext + \name "VoiceCombineVoice"; + soloText = #"I." + soloIIText = #"II." + \remove "Rest_engraver"; + \accepts "VoiceCombineThread"; + } + \translator{ + \HaraKiriStaffContext + \consists "Mark_engraver"; + \name "VoiceCombineStaff"; + \accepts "VoiceCombineVoice"; + } + + % + % The Staff combine hierarchy + % + \translator{ + \ThreadContext + \name "StaffCombineThread"; + } + \translator{ + \VoiceContext + \name "StaffCombineVoice"; + \accepts "StaffCombineThread"; + \consists "Thread_devnull_engraver"; + } + \translator { + \HaraKiriStaffContext + \name "StaffCombineStaff"; + \accepts "StaffCombineVoice"; + + soloADue = ##t + soloText = #"" + soloIIText = #"" + % This is non-conventional, but currently it is + % the only way to tell the difference. + aDueText = #"\\`a2" + splitInterval = #'(1 . 0) + changeMoment = #`(,(make-moment 1 1) . ,(make-moment 1 1)) + } + \translator { + \StaffGroupContext + \accepts "VoiceCombineStaff"; + \accepts "StaffCombineStaff"; + } + \translator{ \HaraKiriStaffContext } + + \translator { + %\ScoreContext + \OrchestralScoreContext + \accepts "VoiceCombineStaff"; + \accepts "StaffCombineStaff"; + skipBars = ##t + + markScriptPadding = #4.0 + + BarNumber \override #'padding = #3 + RestCollision \override #'maximum-rest-count = #1 + } + } } diff --git a/input/test/part-combine.ly b/input/test/part-combine.ly index d710038cde..e69de29bb2 100644 --- a/input/test/part-combine.ly +++ b/input/test/part-combine.ly @@ -1,51 +0,0 @@ -\header{ -texidoc=" -In orchestral scores and hymns, voices are traditionally combined onto -one staff. LilyPond has a part combiner, that combines or separates two -voices according to actual rhythm and pitch. User-defined texts such as -``solo'' and ``@`a2'' are typeset automagically, as appropriate. -"; -} - -\score{ - \context Staff = flauti < - \time 4/4; - - \context Voice=one \partcombine Voice - \context Thread=one \notes\relative c'' - { - c4 d e f - b,4 d c d - r2 e4 f - c4 d e f - c4 r e f - c4 r e f - c4 r a r - a a r a - a2 \property Voice.soloADue = ##f a - } - \context Thread=two \notes\relative c'' - { - g4 b d f - r2 c4 d - a c c d - a4. b8 c4 d - c r e r - r2 s2 - a,4 r a r - a r r a - a2 \property Voice.soloADue = ##f a - } - > - \paper{ - linewidth = 140.\mm; - \translator{ - \ThreadContext - \consists Rest_engraver; - } - \translator{ - \VoiceContext - \remove Rest_engraver; - } - } -} diff --git a/input/test/repeat-fold.ly b/input/test/repeat-fold.ly index 28313665a5..e69de29bb2 100644 --- a/input/test/repeat-fold.ly +++ b/input/test/repeat-fold.ly @@ -1,14 +0,0 @@ -\header{ -texidoc=" -Folded. This doesn't make sense without alternatives, but it works. -"; -} - -\score { \notes\context Staff\relative c'' { -\repeat fold 3 { c^"3$\\times$ 0alt" d } -% less alts than body -\repeat fold 4 { c^"4$\\times$ 2alt" d } \alternative { e f } -% more alts than body -\repeat fold 2 { c^"2$\\times$ 3alt" d } \alternative { e f g } -}} - diff --git a/input/test/repeat-line-break.ly b/input/test/repeat-line-break.ly index ae6a06de0d..e69de29bb2 100644 --- a/input/test/repeat-line-break.ly +++ b/input/test/repeat-line-break.ly @@ -1,16 +0,0 @@ -\header{ -texidoc=" -Across linebreaks, the left edge of a first and second alternative -bracket should be equal -"; -} - -\score { -\notes -\context Staff\relative c'' { - \repeat "volta" 2 { c1 \break } \alternative { d e } - c1 - \repeat "volta" 2 { c1 } \alternative { { d \break} e } - -} -} diff --git a/input/test/repeat-unfold.ly b/input/test/repeat-unfold.ly index cb965c1610..e69de29bb2 100644 --- a/input/test/repeat-unfold.ly +++ b/input/test/repeat-unfold.ly @@ -1,25 +0,0 @@ -\header{ -texidoc=" -LilyPond has three modes for repeats: folded, unfolded and -semi-unfolded. Unfolded repeats are fully written out. Semi unfolded -repeats have the body written and all alternatives sequentially. -Folded repeats have the body written and all alternatives -simultaneo.ly. If the number of alternatives is larger than the -repeat count, the excess alternatives are ignored. If the number of -alternatives is smaller, the first alternative is multiplied to get to -the number of repeats. - -Unfolded behavior: -"; -} - -\score { - - \context Voice \notes\relative c'' { -\repeat unfold 3 { c^"3x 0a" d } -% less alts than body -\repeat unfold 4 { c^"4x 0a" d } \alternative { e f } -% more alts than body -\repeat unfold 2 { c^"2x 3a" d } \alternative { e f g } -}} - diff --git a/input/test/repeat-volta.ly b/input/test/repeat-volta.ly index 634ba4dadd..e69de29bb2 100644 --- a/input/test/repeat-volta.ly +++ b/input/test/repeat-volta.ly @@ -1,25 +0,0 @@ -\header{ -texidoc=" -Volta (Semi folded) behavior. Voltas can start on non-barline moments. -If they don't barlines should still be shown. -"; -} - -% no alts. -\score { \notes - \relative c'' { -% repeat non aligning with barlines. -e -\repeat volta 3 { c^"3$\\times$ 0alt" d e } -% less alts than body -\repeat volta 4 { c^"4$\\times$ 2alt" d } \alternative { e f } - -% more alts than body -\repeat volta 2 { c^"2$\\times$ 3alt" d } \alternative { e f g } -} - - \midi{} - \paper{} - -} - diff --git a/input/test/rest-collision.ly b/input/test/rest-collision.ly index 276afa516a..e69de29bb2 100644 --- a/input/test/rest-collision.ly +++ b/input/test/rest-collision.ly @@ -1,61 +0,0 @@ -\header{ -texidoc=" -Rests should not collide with beams, stems and noteheads. Rests may -be under beams. Rests should be move by integral number of spaces -inside the staff, and by half spaces outside. Notice that the half -and whole rests just outside the staff get ledger lines in different -cases. -"; -} - -scale = \notes \relative c' { - c8 d e f g a b c c d e f g a b c - -} -rests = \notes { - r r r r r r r r r r r r r r r r -} -different = < \context Voice = one { - \stemUp - \notes \relative c'' { - r8 a e4 a e - } - } - \context Voice = two { - \stemDown - \notes \relative c'' { - r1 - }} > - -scales = \context Staff \notes < - \context Voice=i { \stemUp r1 r2 r2 \scale c''1 c'2 a'2 \rests } - \context Voice = ii { \stemDown a'1 a'2 d'2 \rests r1 r2 r2 \scale } -> - -restsII = \context Staff \notes { - r4 r8 - \context Staff < { \stemUp r8 } { \stemDown r8} > - \context Staff < {\stemUp r8} r8 { \stemDown r8} > - \context Staff < {\stemUp r8} r8 r8 { \stemDown r8} > - \context Staff < {\stemUp r} { \stemDown r} > - \context Staff < {\stemUp r} r { \stemDown r} > - \stemUp - \transpose c'' { [c''8 r8 c''8 c''8] - [c8 r8 c8 c8] - [c8 r8 r8 c'''8] - \stemDown - [c8 r8 c8 c8] - [c''8 r8 c''8 c''8] - [c'8 r8 r8 c'''8] - \different - } -} - -\score{ - \notes { - \scales - \restsII - } -} - -\version "1.3.117"; diff --git a/input/test/rest.ly b/input/test/rest.ly index 0e7eea1703..e69de29bb2 100644 --- a/input/test/rest.ly +++ b/input/test/rest.ly @@ -1,16 +0,0 @@ -\header{ -texidoc=" -Rests. Note that the dot of 8th, 16th and 32nd rests rest should be -next to the top of the rest. All rests except the whole rest are -centered on the middle staff line. -"; -} - - - \score { \notes { - \time 4/4; -r \longa * 1/4 r\breve * 1/2 -r1 r2 r4 r8 r16 r32 r64 r128 r128 -\time 6/4; -r1. r2. r4. r8. r16. r32. r64. r128. r128. -}} diff --git a/input/test/size11.ly b/input/test/size11.ly index 6bc299ba38..e69de29bb2 100644 --- a/input/test/size11.ly +++ b/input/test/size11.ly @@ -1,10 +0,0 @@ -\header{ -texidoc=" -Fonts are available in a default set of sizes: 11, 13, 16, 20, 23 and -26pt staffheight. Sizes of the text fonts and symbol fonts are made -to match the staff dimensions. -"; -} - -\include "paper11.ly" -\include "allfontstyle.ly"; diff --git a/input/test/size13.ly b/input/test/size13.ly index ac58c4dd65..e69de29bb2 100644 --- a/input/test/size13.ly +++ b/input/test/size13.ly @@ -1,2 +0,0 @@ -\include "paper13.ly" -\include "allfontstyle.ly"; diff --git a/input/test/size16.ly b/input/test/size16.ly index 69352ff59d..e69de29bb2 100644 --- a/input/test/size16.ly +++ b/input/test/size16.ly @@ -1,2 +0,0 @@ -\include "paper16.ly" -\include "allfontstyle.ly"; diff --git a/input/test/size20.ly b/input/test/size20.ly index d76a6cdb03..e69de29bb2 100644 --- a/input/test/size20.ly +++ b/input/test/size20.ly @@ -1,2 +0,0 @@ -\include "paper20.ly" -\include "allfontstyle.ly"; diff --git a/input/test/size23.ly b/input/test/size23.ly index c5accc9f90..e69de29bb2 100644 --- a/input/test/size23.ly +++ b/input/test/size23.ly @@ -1,2 +0,0 @@ -\include "paper23.ly" -\include "allfontstyle.ly"; diff --git a/input/test/size26.ly b/input/test/size26.ly index 919c6e07cd..e69de29bb2 100644 --- a/input/test/size26.ly +++ b/input/test/size26.ly @@ -1,2 +0,0 @@ -\include "paper26.ly" -\include "allfontstyle.ly"; diff --git a/input/test/slur-attachment-override.ly b/input/test/slur-attachment-override.ly index caac6ff210..e69de29bb2 100644 --- a/input/test/slur-attachment-override.ly +++ b/input/test/slur-attachment-override.ly @@ -1,19 +0,0 @@ -\header{ -texidoc=" -In some cases, you may want to set slur attachments by hand. -"; -} - -\score{ - \notes \relative c''{ - \property Voice.Stem \set #'length = #5.5 - \property Voice.Slur \set #'direction = #1 - \property Voice.Slur \set #'attachment = #'(stem . stem) - g8(g)g4 - g4(g8)g - } - \paper{ - indent = 0.0; - linewidth = 60.\mm; - } -} diff --git a/input/test/slur-attachment.ly b/input/test/slur-attachment.ly index 7a00de8687..e69de29bb2 100644 --- a/input/test/slur-attachment.ly +++ b/input/test/slur-attachment.ly @@ -1,19 +0,0 @@ -\header{ -texidoc=" -Slurs should be attached to note heads, except when they would collide -with beams. Also see: ophee-slurs. -"; -} -\score{ - \notes \relative c''{ - \property Voice.Slur \set #'direction = #1 - a8( a )a4 - a4( a8 )a - a8 a()a4 - a4() a8 a - } - \paper{ - indent = 0.0; - linewidth = 100.\mm; - } -} diff --git a/input/test/slur-broken-trend.ly b/input/test/slur-broken-trend.ly index 868d156491..e69de29bb2 100644 --- a/input/test/slur-broken-trend.ly +++ b/input/test/slur-broken-trend.ly @@ -1,21 +0,0 @@ -\header{ -texidoc=" -Across line breaks, slurs behave nicely. On the left, they extend to -just after the preferatory matter, and on the right to the end of the -staff. A slur should follow the same vertical direction it would have -in unbroken state. -"; -} -\score{ - \notes \relative c''{ - e1( \break) a, - \time 2/4; - e'2( \break) a,(\break - a2\break - )e'2 - } - \paper { - linewidth=40.\mm; - indent=0.; - } -} diff --git a/input/test/slur-cross-staff.ly b/input/test/slur-cross-staff.ly index e2ada8c8e7..e69de29bb2 100644 --- a/input/test/slur-cross-staff.ly +++ b/input/test/slur-cross-staff.ly @@ -1,48 +0,0 @@ -\header{ -texidoc=" -The same goes for slurs. They behave decently when broken across -linebreak. -"; -} - - -\score{ - \context PianoStaff < - \context Staff=one \notes\relative c'{ - \stemUp \slurUp - c4( c \translator Staff=two c )c | - \translator Staff=one - \stemUp \slurUp - c4( c \translator Staff=two c )c | - \stemUp \slurUp - c4( c \translator Staff=one c )c | - \translator Staff=two - \stemUp \slurUp - c4( c \translator Staff=one c )c | - \translator Staff=two - \stemUp \slurUp - c4( \translator Staff=one c c )c | - r2 - \translator Staff=two - \stemUp \slurUp - c4( \translator Staff=one c - \break - c )c - r2 -% \stemDown \slurDown -% c4( \translator Staff=two c c \translator Staff=one )c - \stemDown \slurDown - d4( \translator Staff=two c c \translator Staff=one )d - \translator Staff=two - \stemUp \slurUp - c4( \translator Staff=one c c \translator Staff=two )c - r1 - } - \context Staff=two \notes\relative c'{ - \clef bass; - s1 s1 s1 s1 s1 s1 s1 s1 s1 s1 - } - > -} - -\version "1.3.117"; diff --git a/input/test/slur-nice.ly b/input/test/slur-nice.ly index fce8f94686..e69de29bb2 100644 --- a/input/test/slur-nice.ly +++ b/input/test/slur-nice.ly @@ -1,23 +0,0 @@ -\header{ -texidoc=" -Slurs should look nice and symmetric. The curvature may increase -only to avoid noteheads, and as little as possible. Slurs never -run through noteheads or stems. -"; -} -\version "1.3.117"; -\score{ - \notes\relative c''{ - \time 3/4; - \slurUp - \stemBoth a ( \stemDown a \stemBoth ) a a( c )a a( e' )a, a( g' )a, - \stemUp a( e' )a, - \break - \slurDown - \stemBoth c ( \stemUp c \stemBoth ) c c ( a ) c c( d, )c' c( f, )c' - \stemDown c( f, )c' - } - \paper{ - linewidth = 120.\mm; - } -} diff --git a/input/test/slur-symmetry-1.ly b/input/test/slur-symmetry-1.ly index 6e2ea7c67b..e69de29bb2 100644 --- a/input/test/slur-symmetry-1.ly +++ b/input/test/slur-symmetry-1.ly @@ -1,14 +0,0 @@ -\score{ - \notes\relative c''< - \time 4/4; - \context Staff{ - f8(f f)f f(g g)f f(a a)f f(b b)f - } - \context Staff=x{ - e,(e e)e e(d d)e e(c c)e e(b b)e - } - > - \paper{ - linewidth=-1.; - } -} diff --git a/input/test/slur-symmetry.ly b/input/test/slur-symmetry.ly index 41ebe836b3..e69de29bb2 100644 --- a/input/test/slur-symmetry.ly +++ b/input/test/slur-symmetry.ly @@ -1,14 +0,0 @@ -\score{ - \notes\relative c'< - \time 6/8; - \context Staff{ - e8(e)e e(d)e e(c)e e(b)e - } - \context Staff=x{ - f'8(f)f f(g)f f(a)f f(b)f - } - > - \paper{ - linewidth=-1.; - } -} diff --git a/input/test/slur-ugly.ly b/input/test/slur-ugly.ly index 7406ba233b..e69de29bb2 100644 --- a/input/test/slur-ugly.ly +++ b/input/test/slur-ugly.ly @@ -1,35 +0,0 @@ -\header { -texidoc="You can get ugly slurs, if you want. -"; -} - -baseWalk = \notes \relative c { - d,8( a' d f a d f d a f d )a -} - -\score { - \notes \context PianoStaff < - \time 6/4; - \context Staff=up { s1 * 6/4 } - \context Staff=down < - \clef bass; - \autochange Staff \context Voice \baseWalk - > - > - \paper { - linewidth = -1.; - \translator { - \VoiceContext - Slur \override #'beautiful = #5.0 - Slur \override #'direction = #1 - Stem \override #'direction = #-1 - autoBeamSettings \override #'(end * * * *) - = #(make-moment 1 2) - } - \translator { - \PianoStaffContext - VerticalAlignment \override #'threshold = #'(5 . 5) - } - } -} - diff --git a/input/test/smart-transpose.ly b/input/test/smart-transpose.ly index 388ae4eec3..e69de29bb2 100644 --- a/input/test/smart-transpose.ly +++ b/input/test/smart-transpose.ly @@ -1,99 +0,0 @@ -\header { -texidoc="LilyPond 1.3 is more flexible than some users realise. Han-Wen could be very rich. -"; -} - -% Btw, I've leant an el-neato trick for formatting code in email messages, -% using inderect buffers. -% -% M-x make-indirect-buffer RET RET foo RET C-x b foo RET -% Select region and then narrow: C-x n n -% Set mode, eg: M-x sch TAB RET -% - -%{ - I've just entered a request on cosource.com : - - http://www.cosource.com/cgi-bin/cos.pl/wish/info/387 - - Here's a copy of my feature request : - - Your task, if you accept it is to implement a \smarttranspose - command> that would translate such oddities into more natural - notations. Double accidentals should be removed, as well as #E - (-> F), bC (-> B), bF (-> E), #B (-> C). - -You mean like this. (Sorry 'bout the nuked indentation.) - -Add IMPLEMENT_TYPE_P(Music, "music?"); to music.cc, and presto, done. - -That's an easy $ 100; if I'd make $ 200/hour for every hour I worked -on Lily, I'd be very rich :) - -%} - -#(define (unhair-pitch p) - (let* ((o (pitch-octave p)) - (a (pitch-alteration p)) - (n (pitch-notename p))) - - (cond - ((and (> a 0) (or (eq? n 6) (eq? n 2))) - (set! a (- a 1)) (set! n (+ n 1))) - ((and (< a 0) (or (eq? n 0) (eq? n 3))) - (set! a (+ a 1)) (set! n (- n 1)))) - - (cond - ((eq? a 2) (set! a 0) (set! n (+ n 1))) - ((eq? a -2) (set! a 0) (set! n (- n 1)))) - - (if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7)))) - (if (> n 7) (begin (set! o (+ o 1)) (set! n (- n 7)))) - - (make-pitch o n a))) - -#(define (smart-transpose music pitch) - (let* ((es (ly-get-mus-property music 'elements)) - (e (ly-get-mus-property music 'element)) - (p (ly-get-mus-property music 'pitch)) - (body (ly-get-mus-property music 'body)) - (alts (ly-get-mus-property music 'alternatives))) - - (if (pair? es) - (ly-set-mus-property - music 'elements - (map (lambda (x) (smart-transpose x pitch)) es))) - - (if (music? alts) - (ly-set-mus-property - music 'alternatives - (smart-transpose alts pitch))) - - (if (music? body) - (ly-set-mus-property - music 'body - (smart-transpose body pitch))) - - (if (music? e) - (ly-set-mus-property - music 'element - (smart-transpose e pitch))) - - (if (pitch? p) - (begin - (set! p (unhair-pitch (Pitch::transpose p pitch))) - (ly-set-mus-property music 'pitch p))) - - music)) - - -music = \notes \relative c' { c4 d e f g a b c } - -\score { - \notes \context Staff { - \transpose ais' \music - \apply #(lambda (x) (smart-transpose x (make-pitch 0 5 1))) - \music - } - \paper { linewidth = -1.; } -} diff --git a/input/test/spacing-loose.ly b/input/test/spacing-loose.ly index eaac633a28..e69de29bb2 100644 --- a/input/test/spacing-loose.ly +++ b/input/test/spacing-loose.ly @@ -1,11 +0,0 @@ -\header{ -texidoc=" -Loose: -"; -} -\score { - \notes { \time 2/2; c'2 c'2 \time 2/2; } - \paper { linewidth = 5.0\cm; - indent = 0.0; - } -} diff --git a/input/test/spacing-natural.ly b/input/test/spacing-natural.ly index 74e9f6f0f7..e69de29bb2 100644 --- a/input/test/spacing-natural.ly +++ b/input/test/spacing-natural.ly @@ -1,13 +0,0 @@ -\header{ -texidoc=" -Natural: -"; -} - -\score { - \notes { \time 2/2; c'2 c'2 \time 2/2; } - \paper { linewidth = -1.0 \cm; - indent = 0.0; - } -} - diff --git a/input/test/spacing-tight.ly b/input/test/spacing-tight.ly index 75c7d16f97..e69de29bb2 100644 --- a/input/test/spacing-tight.ly +++ b/input/test/spacing-tight.ly @@ -1,21 +0,0 @@ -\header{ -texidoc=" -If there are accidentals in the music, we add space, but the space -between note and accidentals is less than between the notes with the -same value. Clef changes also get extra space, but not as much as -barlines. - -Even if a line is very tightly spaced, there will still be room -between prefatory matter and the following notes. The space after the -prefatory is very rigid. In contrast, the space before the barline -must stretch like the space within the measure. - -Tight: -"; -} -\score { - \notes { \time 2/2; f''2 c'2 \time 2/2; } - \paper { linewidth = 2.5 \cm; - indent = 0.0; - } -} diff --git a/input/test/staccato-pos.ly b/input/test/staccato-pos.ly index aa3ac8a27f..e69de29bb2 100644 --- a/input/test/staccato-pos.ly +++ b/input/test/staccato-pos.ly @@ -1,18 +0,0 @@ -\header{ -texidoc=" -The staccato dot (and all scripts with follow-into-staff set), must -not be on staff lines. -"; -} -\score { - \context Voice \notes\relative c { - - e''4-. f-. d-. - c,-. b-. c'''-. d-. - - } - \paper { - linewidth=-1.0; - } - \midi { } -} diff --git a/input/test/staff-margin.ly b/input/test/staff-margin.ly index bb2b30f36b..e69de29bb2 100644 --- a/input/test/staff-margin.ly +++ b/input/test/staff-margin.ly @@ -1,28 +0,0 @@ -\header{ -texidoc=" -Staff margins are also markings attached to barlines. They should be -left of the staff, and be centered vertically wrt the staff. They may -be on normal staffs, but also on compound staffs, like the PianoStaff -"; -} - - -\version "1.3.117"; - -\score { - - \notes \context PianoStaff < - \context Staff = treble { - \property PianoStaff.instrument = "Piano " - \property Staff.instrument = "Right " { c''4 }} - \context Staff = bass { \property Staff.instrument = "Left " \clef bass; c4 }> - -\paper { -linewidth=-1.0; -\translator { \ScoreContext - - } -\translator { \StaffContext \consists "Instrument_name_engraver"; } -\translator { \PianoStaffContext \consists "Instrument_name_engraver"; } -}} - diff --git a/input/test/stem-direction-down.ly b/input/test/stem-direction-down.ly index 1733d3995f..e69de29bb2 100644 --- a/input/test/stem-direction-down.ly +++ b/input/test/stem-direction-down.ly @@ -1,15 +0,0 @@ -\header{ -texidoc=" -@c FIXME -Similarly, if @code{stem_default_neutral_direction} is set to @code{-1}. -"; -} - -\score{ - \notes\relative c{ - b''4 ~ b8()b8 e4 e, - } - \paper{ - stem_default_neutral_direction=-1.0; - } -} diff --git a/input/test/stem-direction.ly b/input/test/stem-direction.ly index 78f20f5182..e69de29bb2 100644 --- a/input/test/stem-direction.ly +++ b/input/test/stem-direction.ly @@ -1,23 +0,0 @@ -\header{ -texidoc=" -Beams, stems and noteheads often have communication troubles, since -the two systems for y dimensions (1 unit = staffspace, 1 unit = 1 -point) are mixed. - -Stems, beams, ties and slurs should behave similarly, when placed -on the middle staff line. Of course stem-direction is down for high -notes, and up for low notes. -"; -} - - -\score { - \context Voice \notes\relative c { - b''4 ~ b8()b8 e4 e, - - } - \paper { - linewidth=-1.0; - } - \midi { } -} diff --git a/input/test/stem-spacing.ly b/input/test/stem-spacing.ly index 765416f54c..e69de29bb2 100644 --- a/input/test/stem-spacing.ly +++ b/input/test/stem-spacing.ly @@ -1,17 +0,0 @@ -\header{ -texidoc=" -In a limited number of cases, LilyPond corrects for optical spacing -effects. In this example, space for opposite pointed stems is adjuste -"; -} -\score { - \context Voice \notes\relative c { - - \time 12/4; c''4 c c c a f' f, a - - } - \paper { - linewidth=-1.0; - } - \midi { } -} diff --git a/input/test/stem-tremolo.ly b/input/test/stem-tremolo.ly index 3493dabef1..e69de29bb2 100644 --- a/input/test/stem-tremolo.ly +++ b/input/test/stem-tremolo.ly @@ -1,29 +0,0 @@ -\header{ -texidoc=" -Stem tremolos or rolls are tremolo signs that look like beam segments -crossing stems. If the stem is in a beam, the tremolo must be parallel -to the beam. If the stem is invisible (eg. on a whole note), the -tremolo must be centered on the note. -"; -} - -\version "1.3.117"; -\score{ - \context Voice\notes \relative c''{ - \property Voice.Text \set #'direction = #1 - \property Voice.TextScript \set #'padding = #5 - a1:4^":4" a:8^":8" c:16^":16" a:32^":32" a^"x" a:^":" - a4:4 c:8 a:16 c:32 a a: a2: - \break - \stemUp - a4:32 a'4:64 - \stemDown - c,4:32 c,4:64 - \stemBoth - c'8:16 c c c - a': a a: a - c,16:32 c: c c a16:32 a: a a - c8:16 g: d: a: - c8:32 f: b: e: - } -} diff --git a/input/test/tie-accidental.ly b/input/test/tie-accidental.ly index 8faf34ab8f..e69de29bb2 100644 --- a/input/test/tie-accidental.ly +++ b/input/test/tie-accidental.ly @@ -1,37 +0,0 @@ -\header{ -texidoc=" -When tieing notes with accidentals across a bar boundary, the accidental -must not be drawn on the note in the new bar. Instead, the next note of -the same pitch in this bar should always show the accidental (even if -it's natural). Slurring a accidentaled note to a natural one across bar -boundaries should be explicit. - -Pitches can be verified by printing them with the @code{NoteNames} context. -"; -} - -thenotes = \notes \relative cis' { \time 4/4; -g'2 g ~ | -g g4 gis | -gis2 gis ~ | -gis4 gis8 ~ gis g4 gis | -g2 gis ~ | -gis g4 gis | -g2 gis( | -)g! gis4 gis | -\break -\key a \major; -gis2 gis ~ | -gis4 gis8 ~ gis g4 gis | -gis2 g ~ | -g4 gis8 ~ gis g4 gis | -g2 gis ~ | -gis g4 gis | -g2 gis( | -)g! gis4 gis | -} - -\score { < \context Staff \thenotes - \context NoteNames \thenotes - > -} diff --git a/input/test/tie-chord.ly b/input/test/tie-chord.ly index 2068c371ae..e69de29bb2 100644 --- a/input/test/tie-chord.ly +++ b/input/test/tie-chord.ly @@ -1,21 +0,0 @@ -\header{ -texidoc=" -When tieing chords, the outer slurs point outwards, the inner slurs -point away from the center of the staff. Override with -@code{tieVerticalDirection}. -"; -} -\version "1.3.117"; - -t = \notes \relative c' { ~ } - - \score { -\notes \context Voice { - \t - \transpose g' \t - - \property Voice.TieColumn \override #'direction = #-1 - \t - - } -} diff --git a/input/test/tie.ly b/input/test/tie.ly index 6cc474c3b6..e69de29bb2 100644 --- a/input/test/tie.ly +++ b/input/test/tie.ly @@ -1,19 +0,0 @@ -\header{ -texidoc=" -Ties are strictly horizontal. They are placed in between note heads. -The horizontal middle should not overlap with a staffline. -"; -} -\score{ - \notes\relative c''{ - %b2~b4~b8~b16~b32~b64 r64\break - %a2~a4~a8~a16~a32~a64 r64 - \time 8/4; - d1 ~ d2~d4~d8~d16~d32~d64 r64\break - a1~ a2~a4~a8~a16~a32~a64 r64 - %c2~c4~c8~c16~c32~c64 r64 - } - \paper{ - linewidth=0.; - } -} diff --git a/input/test/triplets.ly b/input/test/triplets.ly index 802727f22e..e69de29bb2 100644 --- a/input/test/triplets.ly +++ b/input/test/triplets.ly @@ -1,27 +0,0 @@ -\header { -texidoc="Simple beams. This broke somewhere < 1.3.110 -"; - title = "Gammes Chromatiques"; - composer = ""; - filename = "gammes_chromatiques.ly"; -} - -linebreak = \penalty -1000; - -$ex8 = \notes \relative c' { - \repeat "volta" 2 { - \times 2/3 {c8( cis d} \times 2/3 {dis e f} - \times 2/3 {fis g gis} \times 2/3 {a bes b} | - \property Voice.TupletBracket \override #'tuplet-number-visibility = ##f - \property Voice.TupletBracket \override #'tuplet-bracket-visibility = ##f - \times 2/3 {c8 cis d} \times 2/3 {dis e f} - \times 2/3 {fis g gis} \times 2/3 {a bes b} | - \times 2/3 {c b bes} \times 2/3 {a aes g} - \times 2/3 {fis f e} \times 2/3 {ees d des} | - \times 2/3 {c b bes} \times 2/3 {a aes g} - \times 2/3 {fis f e} \times 2/3 {ees d )des} - } - c1 || \linebreak -} - -\score { \context Staff { \notes { \$ex8 } } } diff --git a/input/test/tup.ly b/input/test/tup.ly index 649feb5d22..e69de29bb2 100644 --- a/input/test/tup.ly +++ b/input/test/tup.ly @@ -1,19 +0,0 @@ -\header{ -texidoc=" -Tuplets are indicated by a bracket with a number. There should be no -bracket if there is one beam that matches the length of the tuplet. -The bracket does not interfere with the stafflines, and the number is -centered in the gap in the bracket. -"; -} -\score{ - \notes \context Voice \relative c'' { - \times 2/3 { \times 2/3 { a8 b c} c } - \times 3/4 { c4 c4 c4 c4 } - \time 6/8; - \times 6/9 { c8 c c c c c c c c } - - } -} - -\version "1.3.117"; diff --git a/lily/beam.cc b/lily/beam.cc index 4b18be26eb..8ac599334a 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -187,11 +187,20 @@ Beam::consider_auto_knees (Grob *me) Grob *common = me->common_refpoint (stems[0], Y_AXIS); for (int i=1; i < stems.size (); i++) - common = common->common_refpoint (stems[i], Y_AXIS); - + if (!Stem::invisible_b (stems[i])) + common = common->common_refpoint (stems[i], Y_AXIS); + + int l = 0; for (int i=1; i < stems.size (); i++) { - Real left = Stem::extremal_heads (stems[i-1])[d] + if (!Stem::invisible_b (stems[i-1])) + l = i - 1; + if (Stem::invisible_b (stems[l])) + continue; + if (Stem::invisible_b (stems[i])) + continue; + + Real left = Stem::extremal_heads (stems[l])[d] ->relative_coordinate (common, Y_AXIS); Real right = Stem::extremal_heads (stems[i])[d] ->relative_coordinate (common, Y_AXIS); @@ -210,6 +219,8 @@ Beam::consider_auto_knees (Grob *me) { for (int i=0; i < stems.size (); i++) { + if (Stem::invisible_b (stems[i])) + continue; Item *s = stems[i]; Real y = Stem::extremal_heads (stems[i])[d] ->relative_coordinate (common, Y_AXIS); @@ -530,7 +541,8 @@ Beam::set_stem_length (Grob*me,Real y, Real dy) Grob *common = me->common_refpoint (stems[0], Y_AXIS); for (int i=1; i < stems.size (); i++) - common = common->common_refpoint (stems[i], Y_AXIS); + if (!Stem::invisible_b (stems[i])) + common = common->common_refpoint (stems[i], Y_AXIS); for (int i=0; i < stems.size (); i++) { diff --git a/lily/stem.cc b/lily/stem.cc index e640d0a7d0..c87490d952 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -24,7 +24,6 @@ #include "beam.hh" #include "rest.hh" #include "group-interface.hh" -// #include "cross-staff.hh" #include "staff-symbol-referencer.hh" #include "spanner.hh" diff --git a/lily/system-start-delimiter.cc b/lily/system-start-delimiter.cc index 55af3b8196..cf792f086b 100644 --- a/lily/system-start-delimiter.cc +++ b/lily/system-start-delimiter.cc @@ -15,6 +15,7 @@ #include "font-interface.hh" #include "all-font-metrics.hh" #include "grob.hh" +#include "staff-symbol-referencer.hh" #include "lookup.hh" Molecule @@ -86,21 +87,26 @@ SCM System_start_delimiter::brew_molecule (SCM smob) { Grob * me = unsmob_grob (smob); - Interval ext = ly_scm2interval (Axis_group_interface::group_extent_callback (me->self_scm(), gh_int2scm (Y_AXIS))); - Real l = ext.length (); - Molecule m; - SCM s = me->get_grob_property ("collapse-height"); - if (gh_number_p (s) && l < gh_scm2double (s)) + SCM s = me->get_grob_property ("glyph"); + if (!gh_symbol_p (s)) + return SCM_EOL; + + SCM c = me->get_grob_property ((ly_symbol2string (s) + "-collapse-height") + .ch_C ()); + + Real staff_space = Staff_symbol_referencer::staff_space (me); + Interval ext = ly_scm2interval (Axis_group_interface::group_extent_callback + (me->self_scm(), gh_int2scm (Y_AXIS))); + Real l = ext.length () / staff_space; + + if (gh_number_p (c) && l <= gh_scm2double (c)) { me->suicide(); return SCM_EOL; } - s = me->get_grob_property ("glyph"); - if (!gh_symbol_p(s)) - return SCM_EOL; - + Molecule m; if (s == ly_symbol2scm ("bracket")) m = staff_bracket (me,l); else if (s == ly_symbol2scm ("brace")) @@ -108,7 +114,6 @@ System_start_delimiter::brew_molecule (SCM smob) else if (s == ly_symbol2scm ("bar-line")) m = simple_bar (me,l); - m.translate_axis (ext.center (), Y_AXIS); return m.smobbed_copy (); } diff --git a/make/ly-rules.make b/make/ly-rules.make index 0577bae6e3..be65503ea0 100644 --- a/make/ly-rules.make +++ b/make/ly-rules.make @@ -5,21 +5,21 @@ $(outdir)/%.latex: %.doc rm -f $@ - LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) -I $(pwd) -I $(input-dir)/test/ --dependencies --dep-prefix=$(outdir)/ $< + LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) -I $(pwd) -I $(input-dir)/features/ -I $(input-dir)/regression/ -I $(input-dir)/test/ --dependencies --dep-prefix=$(outdir)/ $< chmod -w $@ # don't do ``cd $(outdir)'', and assume that $(outdir)/.. is the src dir. # it is not, for --scrdir builds $(outdir)/%.texi: %.tely rm -f $@ - LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) -I $(pwd) -I $(input-dir)/test/ --dependencies --format=texi $< + LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) -I $(pwd) -I $(input-dir)/features/ -I $(input-dir)/regression/ -I $(input-dir)/test/ --dependencies --format=texi $< chmod -w $@ # nexi: no-lily texi # for plain info doco: don't run lily $(outdir)/%.nexi: %.tely rm -f $@ - LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) --no-lily -I $(pwd) -I $(input-dir)/test/ --dependencies --dep-prefix=$(outdir)/ --format=texi $< + LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) --no-lily -I $(pwd) -I $(input-dir)/features/ -I $(input-dir)/regression/ -I $(input-dir)/test/ --dependencies --dep-prefix=$(outdir)/ --format=texi $< mv $(@D)/$(*F).texi $@ chmod -w $@ diff --git a/mutopia/Coriolan/bassi.ly b/mutopia/Coriolan/bassi.ly index 754f7c378a..8507de1598 100644 --- a/mutopia/Coriolan/bassi.ly +++ b/mutopia/Coriolan/bassi.ly @@ -17,7 +17,8 @@ bassiGroup = \context PianoStaff = bassi_group \notes < %\global \context StaffCombineStaff=oneBassi { \property StaffCombineStaff.midiInstrument = #"cello" - \property StaffCombineStaff.instrument = #"Violoncello\ne\nContrabasso" + %\property StaffCombineStaff.instrument = #"Violoncello\ne\nContrabasso" + \property StaffCombineStaff.instrument = #'(lines "Violoncello" "e" "Contrabasso") \property StaffCombineStaff.instr = #"Vc." \clef "bass"; \key es \major; @@ -36,6 +37,6 @@ bassiGroup = \context PianoStaff = bassi_group \notes < } \context StaffCombineStaff=oneBassi \partcombine StaffCombineStaff - \context StaffCombineVoice=one \violoncello - \context StaffCombineVoice=two \contrabasso + \context StaffCombineVoice=oneBassi \violoncello + \context StaffCombineVoice=twoBassi \contrabasso > diff --git a/mutopia/Coriolan/coriolan-paper.ly b/mutopia/Coriolan/coriolan-paper.ly index 9dfc0367f5..a9edd675b4 100644 --- a/mutopia/Coriolan/coriolan-paper.ly +++ b/mutopia/Coriolan/coriolan-paper.ly @@ -72,11 +72,9 @@ \accepts "StaffCombineStaff"; skipBars = ##t - barScriptPadding = #2.0 % dimension \pt markScriptPadding = #4.0 - %% urg: in pt? - barNumberScriptPadding = #15 - maximumRestCount = #1 + BarNumber \override #'padding = #3 + RestCollision \override #'maximum-rest-count = #1 } } diff --git a/mutopia/Coriolan/coriolan-part-paper.ly b/mutopia/Coriolan/coriolan-part-paper.ly index 3ba4e4aef8..bdc564dcc8 100644 --- a/mutopia/Coriolan/coriolan-part-paper.ly +++ b/mutopia/Coriolan/coriolan-part-paper.ly @@ -18,6 +18,6 @@ %%textStyle = #"italic" timeSignatureStyle = #"C" marginScriptHorizontalAlignment = #1 - maximumRestCount = #1 + RestCollision \override #'maximum-rest-count = #1 } } diff --git a/mutopia/Coriolan/violi.ly b/mutopia/Coriolan/violi.ly index 475efafc55..7c0a726e6b 100644 --- a/mutopia/Coriolan/violi.ly +++ b/mutopia/Coriolan/violi.ly @@ -43,8 +43,8 @@ violiGroup = \context PianoStaff = violi_group \notes < violiGroup = \notes \context VoiceCombineStaff = violi < \context VoiceCombineStaff=violi { \property VoiceCombineStaff.midiInstrument = #"viola" - \property VoiceStaffCombineStaff.instrument = #"Viola" - \property VoiceStaffCombineStaff.instr = #"Vla." + \property VoiceCombineStaff.instrument = #"Viola" + \property VoiceCombineStaff.instr = #"Vla." \clef "alto"; \key es \major; \skip 1*314; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly index a76fa118b8..dd7a0392d6 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly @@ -25,7 +25,7 @@ couranteViolaScripts = \notes{ } couranteViolaStaff = \context Staff < - \notes \transpose c' \courante + \notes \transpose c'' \courante \couranteViolaGlobal \couranteViolaScripts > diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly index bc7d291abc..d8efcf4288 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly @@ -27,7 +27,7 @@ gigueViolaScripts = \notes{ } gigueViolaStaff = \context Staff < - \notes \transpose c' \gigue + \notes \transpose c'' \gigue \gigueViolaGlobal \gigueViolaScripts > diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly index 5ac93c3f0a..69db680783 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly @@ -40,7 +40,7 @@ menuettoIViolaScripts = \notes{ } menuettoIViolaStaff = \context Staff < - \notes \transpose c' \menuettoI + \notes \transpose c'' \menuettoI \menuettoIViolaGlobal % \menuettoIViolaScripts > @@ -79,7 +79,7 @@ menuettoIiViolaGlobal = \notes{ } menuettoIiViolaStaff = \context Staff < - \notes \transpose c' \menuettoIi + \notes \transpose c'' \menuettoIi \menuettoIiViolaGlobal % \menuettoIiViolaScripts > diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly index 405dce2e31..cf17a8bb71 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly @@ -17,7 +17,7 @@ preludeViolaScripts = \notes{ } preludeViolaStaff = \context Staff < - \notes \transpose c' \prelude + \notes \transpose c'' \prelude \preludeViolaGlobal \preludeViolaScripts > diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly index d82f07b299..a797f92027 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly @@ -17,7 +17,7 @@ sarabandeViolaScripts = \notes{ } sarabandeViolaStaff = \context Staff < - \notes \transpose c' \sarabande + \notes \transpose c'' \sarabande \sarabandeViolaGlobal \sarabandeViolaScripts > diff --git a/scm/grob-description.scm b/scm/grob-description.scm index 043f356734..47ee15416f 100644 --- a/scm/grob-description.scm +++ b/scm/grob-description.scm @@ -70,6 +70,7 @@ (flag-width-function . ,default-beam-flag-width-function) (space-function . ,default-beam-space-function) (damping . 1) + (auto-knee-gap . 7) (meta . ,(grob-description "Beam" beam-interface)) )) @@ -533,7 +534,9 @@ (SystemStartDelimiter . ( (molecule-callback . ,System_start_delimiter::brew_molecule) (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking) - (collapse-height . 1.0) + ;; ugh, in practice, brace has height of 4.1 staff-spaces + (brace-collapse-height . 4.1) + (bracket-collapse-height . 1) (thickness . 1.6) (arch-height . 1.5) (arch-angle . 50.0) diff --git a/scm/grob-property-description.scm b/scm/grob-property-description.scm index fd5ed70f13..ce58750789 100644 --- a/scm/grob-property-description.scm +++ b/scm/grob-property-description.scm @@ -84,7 +84,10 @@ column as start/begin point. Only columns that have grobs or act as bounds are s be at the center of the group after aligning (when using Align_interface::center_on_element). .") (grob-property-description 'chordChanges boolean? "only show changes in chord scheme?.") -(grob-property-description 'collapse-height number? "Minimum height of system start delimiter. If smaller, the delimiter is removed.") +(grob-property-description 'brace-collapse-height number? "Minimum height of system start delimiter brace glyphs. If equal or smaller, the brace is removed.") +(grob-property-description 'bracket-collapse-height number? "Minimum height of system start delimiter bracket glyphs. If equal or smaller, the bracket is removed.") +(grob-property-description 'bar-line-collapse-height number? "Minimum height of system start delimiter bar-line glyphs. If equal or smaller, the bar-line is removed.") +(grob-property-description 'brace-collapse-height number? "Minimum height of system start delimiter brace glyph. If equal or smaller, the brace is removed.") (grob-property-description 'column-space-strength number? "relative strength of space following breakable columns (eg. prefatory matter).") (grob-property-description 'columns list? "list of grobs, typically containing paper-columns, list of note-columns.") (grob-property-description 'contains-grace boolean? "Used to widen entries for grace notes.") diff --git a/scripts/ly2dvi.py b/scripts/ly2dvi.py index f0c91aad99..704efe84ee 100644 --- a/scripts/ly2dvi.py +++ b/scripts/ly2dvi.py @@ -25,6 +25,8 @@ Output: DVI file name = 'ly2dvi' version = '@TOPLEVEL_VERSION@' +if version == '@' + 'TOPLEVEL_VERSION' + '@': + version = '(unknown version)' # uGUHGUHGHGUGH errorlog = '' import sys diff --git a/scripts/pmx2ly.py b/scripts/pmx2ly.py index afe4c35335..b8d289b861 100644 --- a/scripts/pmx2ly.py +++ b/scripts/pmx2ly.py @@ -1,14 +1,10 @@ #!@PYTHON@ -# -# -# -# -# -# +# PMX is a Musixtex preprocessor written by Don Simons, see +# http://www.gmd.de/Misc/Music/musixtex/software/pmx/ - -#fixme: block openings aren't parsed. +# TODO: +# * block openings aren't parsed. import os import string @@ -703,6 +699,8 @@ Huh? expected duration, found %d Left was `%s'""" % (durdigit, str[:20])) left = left[1:] elif c == '\\': left = self.parse_mumbo_jumbo(left) + elif c == '\r': + left = left[1:] else: sys.stderr.write (""" Huh? Unknown directive `%s', before `%s'""" % (c, left[:20] )) -- 2.39.5