---- ../lilypond-1.3.41.jcn3/CHANGES Sat Apr 1 16:51:17 2000
-++ b/CHANGES Mon Apr 3 10:06:40 2000
-@@ -1,3 +1,8 @@
-1.3.41.jcn4
-===========
-
-* Windows distribution does not longer require Cygnus' usertools.
-
- 1.3.41.jcn3
- ===========
- --- ../lilypond-1.3.41/CHANGES Thu Mar 30 11:05:01 2000
-++ b/CHANGES Sat Apr 1 20:35:51 2000
-@@ -1,3 +1,8 @@
-1.3.41.mb1
-* Avoid that xxxXXXVerticalExtent is used for empty HaraKiriStaff
- lines.
-
- 1.3.40.jcn3
- ===========
- --- ../lilypond-1.3.41.jcn2/CHANGES Sat Apr 1 13:09:18 2000
-++ b/CHANGES Sat Apr 1 16:51:17 2000
-@@ -1,3 +1,9 @@
1.3.41.jcn3
===========
-* chord.cc (to_chord): Forgot to remove early chord bugfix, introducing
-a new bug.
-
- 1.3.41.jcn2
- ===========
- --- ../lilypond-1.3.41.jcn1/CHANGES Thu Mar 30 17:50:26 2000
-++ b/CHANGES Sat Apr 1 13:09:18 2000
-@@ -1,3 +1,13 @@
-1.3.41.jcn2
-===========
-
* Lots of fixes to windows distribution scripts.
* Added configuration features --program-prefix, --program suffix.
* lily/my-lily-parser.cc (get_chord): Bugfix, don't use deleted pitch.
This fixes inversions c/g and bass additions d/+c on chords.
- 1.3.41.jcn1
- ===========
- --- ../lilypond-1.3.41/CHANGES Thu Mar 30 04:05:01 2000
-++ b/CHANGES Fri Mar 31 00:30:53 2000
-@@ -1,3 +1,10 @@
-1.3.41.mwd1
+1.3.41.mb1
+==========
+
+* Avoid that xxxXXXVerticalExtent is used for empty HaraKiriStaff
+ lines.
+
+1.3.41.hwn1
===========
-* Fixed extra dots on repeat span-bars.
+* Debian patches (thanks Anthony!)
-* Changed the look of :|: repeat bars.
+* Use symbols for prefatory matter spacing. Do not use the typename
+for looking up item pairs in the table, but read element property
+break-align-symbol
- 1.3.40.jcn3
- ===========
- 1.3.41.jcn1
-===========
+* Instrument_name_engraver, uses break alignment instead of
+side-position.
+
+* System_start_delimiter_engraver, System_start_delimiter, uses a
+spanner for the braces/brackets at the left of the system. Remove all
+old Span_score_bar engravers.
-* More windows distribution changes: distribute minimal .zip too, and
-fixes to setup scripts.
+* Removed Base_span_bar_engraver::use_prority_b_, and moved
+Base_span_bar_engraver into Span_bar_engraver.
1.3.40.jcn3
===========
* input/test: Removed stale AutoStaffSwitch examples.
-* mutopia/E.Saite: Fixed gnossiene-4, doing \autochange. Removed
+* mutopia/E.Satie: Fixed gnossiene-4, doing \autochange. Removed
stale copy of gnossiene-4.
* buildscripts/make-cygwin-cross.sh: Made some small .zip package fixes.
@node Documentation, Language- mudela, Installing, FAQ - GNU LilyPond FAQs
@section Documentation
-@subsubsection What a sober website/manual you have there!
+@subsubsection What a sober website/manual you have there!
LilyPond development is moving quite fast, documentation will often lag
a bit behind. But don't hesitate to point out inaccuracies. Whip up
@table @samp
@item -f,--format=
- Output format for sheet music. Choices are tex (for TeX
+ Output format for sheet music. Choices are tex (for @TeX{}
output), ps (for PostScript) and scm (for GUILE)
@item -I,--include=
add @file{FILE} to the search path for input files.
@item -m,--midi
- Disable TeX output. If you have a \midi definition, it will do the
+ Disable @TeX{} output. If you have a \midi definition, it will do the
midi output only.
@item -M,--dependencies
Also output rules to be included in Makefile.
which lists what functions and classes may produce copious debugging
output.
@item -s,--safe
- Disallow untrusted @code{\include} directives, backslashes in TeX
+ Disallow untrusted @code{\include} directives, backslashes in @TeX{}
code and named output.
@item -t,--test
Switch on any experimental features. Not for general public use.
@subtitle The GNU Project Typesetter
@author Han-Wen Nienhuys, Jan Nieuwenhuizen and Adrian Mariano
- Copyright @copyright 1999 by the authors
+ Copyright @copyright{} 1999 by the authors
@vskip 0pt plus 1filll
@chapter Ly2dvi
@section DESCRIPTION
-ly2dvi is a Python script which creates input file for LaTeX,
+ly2dvi is a Python script which creates input file for La@TeX{},
based on information from the output files from LilyPond.
The script handles multiple files. If a mudela file name is
-specified LilyPond is run to make an output (TeX) file.
+specified LilyPond is run to make an output (@TeX{}) file.
-One or more LaTeX files are created, based on information found
-in the output (TeX) files, and latex is finally run to create
+One or more La@TeX{} files are created, based on information found
+in the output (@TeX{}) files, and latex is finally run to create
one or more DVI files.
The majority of this utility came from a bourne script written by Jan
info is written, in level two the command @strong{set -x} is run, which
echoes every command in the ly2dvi script.
@item -F,--headers=
- Name of additional LaTeX headers file. This is included in the
+ Name of additional La@TeX{} headers file. This is included in the
tex file at the end of the headers, last line before @code{\begin@{document@}}
@item -H,--Heigth=
- Set paper heigth (points). Used together with width and LaTeX name of
+ Set paper heigth (points). Used together with width and La@TeX{} name of
papersize in case of papersize unknown to ly2dvi.
@item -K,--keeplilypond
Keep LilyPond output after the run.
@item -P,--postscript
In addition to the DVI file, also Generate a postsript file.
@item -W,--Width=
- Set paper width (points). Used together with heigth and LaTeX name of
+ Set paper width (points). Used together with heigth and La@TeX{} name of
papersize in case of papersize unknown to ly2dvi.
@item -d,--dependencies
Tell lilypond to make dependencies file.
@item -h,--help
Print help.
@item -k,--keeply2dvi
- Keep the LaTeX file after the run.
+ Keep the La@TeX{} file after the run.
@item -l,--language=
- Specify LaTeX language.
+ Specify La@TeX{} language.
(@strong{-l norsk} produces @code{\usepackage[norsk]@{babel@}}).
@item -o,--output=
Set output directory.
Specify papersize.
(@strong{-p a4} produces @code{\usepackage[a4paper]@{article@}})
@item -s,--separate
- Normally all output files are included into one LaTeX file.
+ Normally all output files are included into one La@TeX{} file.
With this switch all files are run separately, to produce one
DVI file for each.
@end table
@table @samp
@item language="";
- Specify LaTeX language
+ Specify La@TeX{} language
@item latexheaders="";
- Specify additional LaTeX headers file
+ Specify additional La@TeX{} headers file
@item orientation="";
Set orientation.
@item paperlinewidth="";
that are generated by the ly2dvi job. Possible values are 0 (off) and
1 (on)
@item LANGUAGE=value
-Specify LaTeX language. Possible value is a valid LaTeX language.
+Specify La@TeX{} language. Possible value is a valid La@TeX{} language.
@item LATEXHF=value
-Specify additional LaTeX headers file. Possible value is a file
+Specify additional La@TeX{} headers file. Possible value is a file
specification.
@item LILYINCLUDE=value
Additional directories for input files. Possible value is a delimited
@section Remarks
Many papersizes are now supported. Information on other sizes
-(LaTeX names, horizontal and vertical sizes) should be mailed to
+(La@TeX{} names, horizontal and vertical sizes) should be mailed to
the author or to the mailing list.
Supported papersizes are:
@email{Jan.A.Fagertun@@energy.sintef.no, Jan Arne Fagertun},
@uref{http://www.termo.unit.no/mtf/people/janaf/}
-
-
-
@titlepage
@title mudela-book Manual
-@subtitle Integrating mudela with LateX and TeXinfo
+@subtitle Integrating mudela with La@TeX{} and TeXinfo
@author Tom Cato Amundsen and Han-Wen Nienhuys
- Copyright @copyright 1999 by the authors
+ Copyright @copyright{} 1999 by the authors
@vskip 0pt plus 1filll
[TODO: THIS MANUAL IS OUTDATED. FIXME.]
-Mudela-book is a script that process your \LaTeX file and with great
+Mudela-book is a script that process your La@TeX{} file and with great
help from GNU LilyPond it translates blocks of mudela code it finds
inside @code{mudela} environments to tex or eps graphics. It then
-creates a new file that can be sent through \LaTeX to create a
+creates a new file that can be sent through La@TeX{} to create a
@file{.dvi} file with lines of music integrated with text.
Mudela-book will do its best to try to align the music to the left and
right margins. Currently the most used papersizes and one- and
twocolumn mode is supported, but if you use the geometry-package from
-LaTeX or change the margins things will break.
+La@TeX{} or change the margins things will break.
This document assumes you have basic knowledge of GNU LilyPond and
-LaTeX.
+La@TeX{}.
So what does this look like? Well, here is an example:
@mudela[veryverbatim, intertext="produces this music:"]
}
@end mudela
If you are lucky, the above example show a nice feature of LilyPond
-and LaTeX. Since LilyPond can output the music as \TeX graphics,
-LaTeX can insert pagebreaks between the lines of music.
+and La@TeX{}. Since LilyPond can output the music as @TeX{} graphics,
+La@TeX{} can insert pagebreaks between the lines of music.
Notice that there is no @code{\paper} statement in the example
above. Mudela-book will insert some code for you that defines the
@end mudela
@end example
-To avoid that LaTeX places the music on a line of its one, there should
+To avoid that La@TeX{} places the music on a line of its one, there should
be no empty lines between the normal text and the mudela
environment.
This was all options to @code{\begin}. The rest of the mudela
document will show some ways you can use mudela in
-LaTeX documents. It will also act as a simple test-suite for
+La@TeX{} documents. It will also act as a simple test-suite for
mudela-book. You can place @code{eps} mudela in and marginspars just
as any other included eps graphics.
So the music will be adjusted to the new linewith:
Verbatim environments will also ignore the page margins. That is
-a feature of LaTeX. (But you usually put things inside a verbatim
-environment when you don't want LaTeX to do any linebreaking)
+a feature of La@TeX{}. (But you usually put things inside a verbatim
+environment when you don't want La@TeX{} to do any linebreaking)
@section Texinfo behavior
@section Invocation
@file{mudela-book} is a script that helps integrating mudela and
-LaTeX. mudela-book runs LilyPond on fragments of mudela in your
+La@TeX{}. mudela-book runs LilyPond on fragments of mudela in your
source file, and includes the results into document that can be
-processed with LaTeX. The result is a text document with formatted
+processed with La@TeX{}. The result is a text document with formatted
music integrated.
Lilypond will by default create all output files in directory @file{out}.
Force all mudela to use this fontsize, overriding options
given to \begin@{mudela@}
@item --outname=FILE
- The name of LaTeX file to output. If this option is not given,
+ The name of La@TeX{} file to output. If this option is not given,
the output name derived from the input name.
@item --out-www=DIRECTORY
The name of the directory to output lilypond output and input to.
@section Bugs
-The LaTeX \includeonly@{...@} command is ignored.
+The La@TeX{} \includeonly@{...@} command is ignored.
-Ignores almost all LaTeX commands that changes margins and linewidths.
+Ignores almost all La@TeX{} commands that changes margins and linewidths.
@section Authors
@bye
-
-
-
-
-
@end macro
@table @samp
- @item @code{Generic_property_list} Defines names and types for
-generic properties. These are properties than can be plugged into the
-backend directly. See the init file @file{generic-property.scm} for
-details. For internal use only.
+ @item @code{Generic_property_list}
+ Defines names and types for generic properties. These are properties
+ than can be plugged into the backend directly. See the init file
+ @file{generic-property.scm} for details. For internal use only.
-
-@item @code{XXXVerticalExtent}@indexcode{groupVerticalExtent}
-@propertytype{Interval: a cons of numbers}
-
- Hard code the size of the vertical group in context XXX, example
+ @item @code{XXXVerticalExtent}@indexcode{groupVerticalExtent} @propertytype{Interval: a cons of numbers}
+ Hard code the size of the vertical group in context XXX, example
@example
- \property Staff.StaffVerticalExtent = #(-5.0 . 5.0)
+\property Staff.StaffVerticalExtent = #(-5.0 . 5.0)
@end example
- The value is a cons of real numbers, that measure the extent in
-staff spaces
-
+ The value is a cons of real numbers, that measure the extent in
+ staff spaces.
+@end table
+
+@subsubheading Lyrics properties
@cindex properties!Lyrics
dot.
@end table
+@subsubheading Thread properties
@cindex properties!Thread
property, you can make brackets last shorter. Example
@mudela[verbatim,fragment]
-\context Voice \times 2/3 { \property Voice.tupletSpannerDuration = #(make-moment 1 4) [c8 c c] [c c c] }
+\context Voice \times 2/3 {
+ \property Voice.tupletSpannerDuration = #(make-moment 1 4)
+ [c8 c c] [c c c]
+}
@end mudela
@end table
the music given in an @code{\alternative}.
@end table
+@subsubheading GrandStaff properties
@cindex properties!GrandStaff
Set the minimum vertical distance between staffs.
@end table
+@subsubheading Score properties
@cindex properties!Score
@end example
@end table
+@subsubheading ChordNamesVoice properties
@cindex properties!ChordNamesVoice
`@code{\include "english.ly"}'. The available language files and the
names they define are:
-@quotation
-
@example
Note Names sharp flat
nederlands.ly c d e f g a bes b -is -es
catalan.ly do re mi fa sol la sid si -d/-s -b
@end example
-@end quotation
-
Pitch names can be redefined using the
@code{\notenames}@keyindex{notenames} command, see
subsection XREF-notenames [FIXME].
over 127, or a two-character combination of a backslash followed
by one of `@code{`}', `@code{'}', `@code{"}', or
`@code{^}'.@footnote{The purpose of Lyrics mode is that you can
- enter lyrics in TeX format or a standard encoding without
+ enter lyrics in @TeX{} format or a standard encoding without
needing quotes. The precise definition of this mode indeed is
ludicrous. This will remain so until the authors of LilyPond
acquire a deeper understanding of character encoding, or someone
spaces into words without using quotes. Quoted words can also be
used in Lyrics mode to specify words that cannot be written with
the above rules. Here are some examples. Not all of these words
- are printable by TeX.
-
-
- @quotation
+ are printable by @TeX{}.
@example
Ah! % a word
_ _ _ _ % 4 words, each one a space
@end example
- @end quotation
-
Since combinations of numbers and dots are used for indicating
durations, you can not enter real numbers in this mode.
@end table
@end mudela
In addition, it is possible to place arbitrary strings of text or
-TeX above or below notes by using a string instead of an
+@TeX{} above or below notes by using a string instead of an
identifier: `@code{c^"text"}'. Fingerings
@cindex fingering
can be
selected string does not exactly match, then LilyPond uses the default
piano.
-
-@quotation
+@c @quotation
@example
"acoustic grand" "contrabass" "lead 7 (fifths)"
"cello" "lead 6 (voice)"
@end example
-@end quotation
+@c @end quotation
@cindex MIDI types and performers
with LilyPond and view the output. Details of this procedure may vary
from system to system. To create the output, one would issue the
command `@code{ly2dvi menuet}'. @file{ly2dvi} is a program that does
-the job of running LilyPond and TeX, handling of titles and
+the job of running LilyPond and @TeX{}, handling of titles and
adjusting of page margins.
If all goes well, the file @file{menuet.dvi} will be created.
point@footnote{A point is the standard measure of length for
printing. One point is 1/72.27 inch.} high staff. We want smaller
output (16 point staff height), so we must import the settings for
-that size, which is done.@example
+that size, which is done.
+@example
\score @{
note. If you add a high-quote an extra octave is added. The lowered
quote (a comma) will subtract an extra octave. Because the first note
has no predecessor, you have to give the (absolute) pitch of the note
-to start with.@example
+to start with.
+@example
\sequential @{
@end example
What follows is sequential music, i.e.,
-notes that are to be played and printed after each other.@example
+notes that are to be played and printed after each other.
+@example
\time 3/4;
@end example
This command changes the time signature of the current piece: a 3/4
sign is printed. This command is also used to generate bar lines in
-the right spots.@example
+the right spots.
+@example
\key g;
@end example
- This command changes the current key to G-major. Although this
+ This command changes the current key to G-major. Although this
command comes after the @code{\time} command, in the output, the key
signature comes before the time signature: LilyPond knows about music
-typesetting conventions. @example
+typesetting conventions.
+@example
\repeat "volta" 2
@end example
The subject of the repeat is again sequential music. Since
@code{\sequential} is such a common construct, a shorthand is provided:
-just leave off @code{\sequential}, and the result is the same. @example
+just leave off @code{\sequential}, and the result is the same.
+@example
d4
This is a note with pitch @code{d} (determined up to octaves). The
relative music was started with a @code{c''}, so the real pitch of this
note is @code{d''}. The @code{4} designates the duration of the note
-(it is a quarter note). @example
+(it is a quarter note).
+@example
a b
@end example
These are notes with pitch @code{a} and @code{b}. Because their
duration is the same as the @code{g}, there is no need to enter the
-duration (You may enter it anyway, eg. @code{a4 b4}) @example
+duration (You may enter it anyway, e.g. @code{a4 b4})
+@example
d4 g, g |
the beginning and ending note of the slur is marked with an opening and
closing parenthesis respectively. In the line shown above this is
done for two slurs. Slur markers (parentheses) are between
-the notes.@example
+the notes.
+@example
a4 [b8 a] [g fis]
@end example
Automatic beaming can be overridden by inserting beam marks
-(brackets). Brackets are put around notes you want beamed.@example
+(brackets). Brackets are put around notes you want beamed.
+@example
g2. |
@end example
A duration with augmentation dot is notated
-with the duration number followed by a period.@example
+with the duration number followed by a period.
+@example
@}
@end example
This ends the sequential music to be repeated. LilyPond will typeset
-a repeat bar. @example
+a repeat bar.
+@example
cis'4 b8 cis a4 |
@end example
This line shows that Lily will print an accidental if that is
needed: the first C sharp will be printed with an accidental, the
-second one without. @example
+second one without.
+@example
a8-. b-. cis-. d-. e-. fis-.
You can enter articulation signs either in a verbose form using a
shorthand. Here we demonstrate the shorthand: it is formed by a dash
and the the character for the articulation to use, e.g. `@code{-.}' for
-staccato as shown above. @example
+staccato as shown above.
+@example
fis a, r8 cis8
command `@code{\fermata}' is not part of the core of the language (most
of the other discussed elements are), but it is a shorthand for a more
complicated description of a fermata. @code{\fermata} names that
-description and is therefore called an @emph{identifier}. @example
+description and is therefore called an @emph{identifier}.
+@example
@}
}
@end mudela
-Again, we will dissect the file line by line.@example
+Again, we will dissect the file line by line.
+@example
\header @{
equal sign `@code{=}'. After the equal sign comes the expression you
want to store. In this case, you want to put in strings. The
information has to be quoted here, because it contains spaces. The
-assignment is finished with a semicolon.@example
+assignment is finished with a semicolon.
+@example
\include "paper16.ly"
@end example
-Smaller size for inclusion in a book.@example
+Smaller size for inclusion in a book.
+@example
melody = \notes \relative c' @{
@end example
The key is C minor: we have three flats.
-
@example
c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
\bar "|.";
@end example
+
We use explicit beaming. Since this is a song, we will turn automatic
-beams off, and use explicit beaming where needed.@example
+beams off, and use explicit beaming where needed.
+@example
@}
@end example
This ends the definition of @code{melody}. Note that there are no
-semicolons after assignments at top level.@example
+semicolons after assignments at top level.
+@example
text = \lyrics @{
Lyrics are formed by syllables that have duration, and not by
notes. To make LilyPond parse words as syllables, switch it into
lyrics mode with @code{\lyrics}. Again, the brace after @code{\lyrics}
-is a shorthand for @code{\sequential @{}. @example
+is a shorthand for @code{\sequential @{}.
+@example
- The4 ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the
- ri- ver is flo- __ wing down to the sea.
- @}
+ The4 ri -- ver is flo- __ wing, flo -- wing and gro -- wing, the
+ ri- ver is flo- __ wing down to the sea.
+@}
@end example
The syllables themselves are separated by spaces. You can get syllable
r8
@end example
-There is no accompaniment during the anacrusis.@example
+There is no accompaniment during the anacrusis.
+@example
c2:3- f:3-.7
triad, while a minor triad is wanted. @code{3-} modifies the third to
be small. @code{7} modifies (adds) a seventh, which is small by default
to create the @code{f a c es} chord. Multiple modifiers must be
-separated by a dot.@example
+separated by a dot.
+@example
d:min es4 c8:min r8
@end example
Some modifiers have predefined names, eg. @code{min} is the same as
-@code{3-}, so @code{d-min} is a minor @code{d} chord.@example
+@code{3-}, so @code{d-min} is a minor @code{d} chord.
+@example
c2:min f:min7 g:7^3.5 c:min @}
to be separated by a dot. Tones from a chord are removed with chord
subtractions. Subtractions are started with a caret, and they are
also separated by dots. In this example, @code{g:7^3.5} produces a
-minor seventh. The brace ends the sequential music. @example
+minor seventh. The brace ends the sequential music.
+@example
\score @{
\simultaneous @{
@end example
We assemble the music in the @code{\score} block. Melody, lyrics and
accompaniment have to sound at the same time, so they should be
-@code{\simultaneous}.@example
+@code{\simultaneous}.
+@example
%\accompaniment
Chord mode generates notes grouped in @code{\simultaneous} music. If
you remove the comment sign, you can see the chords in normal
notation: they will be printed as note heads on a separate
-staff. @example
+staff.
+@example
\context ChordNames \accompaniment
The name is a string, it can be quoted with double quotes). The
second argument is the music that should be interpreted in this
context. For the previous line, we could have written @code{\context
-Staff \accompaniment}, and get the same effect.@example
+Staff \accompaniment}, and get the same effect.
+@example
\addlyrics
aligns the syllables of the second piece under the notes of the
first piece. If you would reverse the order, the notes would be
aligned on the lyrics, which is not very useful. (Besides, it looks
-silly.)@example
+silly.)
+@example
\context Staff = mel @{
before the ``note heads'' version of the accompaniment, the
accompaniment will be on a nameless staff. The melody has to be on a
different staff as the accompaniment. This is accomplished by giving
-the melody staff a different name.@example
+the melody staff a different name.
+@example
\property Staff.noAutoBeaming = "1"
An interpretation context has variables that tune its behaviour. One
of the variables is @code{noAutoBeaming}. If set and non-zero (i.e.,
true) LilyPond will not try to put automatic beaming on the current
-staff.@example
+staff.
+@example
\property Staff.automaticMelismata = "1"
@end example
Similarly, we don't want to print a syllable when there is
a slur. This sets up the Staff context to signal slurs while
-@code{\addlyrics} is processed. @example
+@code{\addlyrics} is processed.
+@example
\melody
@}
Finally, we put the melody on the current staff. Note that the
@code{\property} directives and @code{\melody} are grouped in sequential
music, so the property settings are done before the melody is
-processed. @example
+processed.
+@example
\context Lyrics \text
The second argument of @code{\addlyrics} is the text. The text also
should not land on a Staff, but on a interpretation context for
syllables, extenders, hyphens etc. This context is called
-Lyrics.@example
+Lyrics.
+@example
@}
@end example
-This ends @code{\simultaneous}.@example
+This ends @code{\simultaneous}.
+@example
\midi @{ @}
checking music you enter. You listen to the MIDI file: if you hear
something unexpected, it's probably a typing error. @code{\midi} is an
`output definition', a declaration that specifies how to output music
-analogous to @code{\paper @{ @}}.@example
+analogous to @code{\paper @{ @}}.
+@example
\paper @{ linewidth = 10.0\cm; @}
@end example
We also want notation output. The linewidth is short so the piece
-will be set in two lines. @example
+will be set in two lines.
+@example
@}
If it looks like incomprehensible gibberish to you@dots{} Then you are
right. The author has doctored this example to have as many quirks in
-one system as possible.@example
+one system as possible.
+@example
viola = \notes \relative c' \context Voice = viola @{
@end example
In this example, you can see multiple parts on a staff. Each part is
@code{Voice}. For each part we have to make sure that there is
precisely one Voice context@footnote{If @code{\context} would not
have been specified explicitly, three @code{Voice} contexts would be
-created: one for each note in the first chord.}.@example
+created: one for each note in the first chord.}.
+@example
<c4-\f g' c>
@end example
@code{<} and @code{>} are short hands for @code{\simultaneous @{} and
@code{@}}. So the expression enclosed in @code{<} and @code{>} is a
-chord. @code{\f} places a forte symbol under the chord.@example
+chord. @code{\f} places a forte symbol under the chord.
+@example
\property Voice.verticalDirection = \down
@end example
@code{verticalDirection} is a property of the voice context. It
symbols.
If @code{verticalDirection} is set to @code{\down}
(identifier for the integer -1) the stems go down,
-@code{\up} (identifier for the integer 1) makes the stems go up.@example
+@code{\up} (identifier for the integer 1) makes the stems go up.
+@example
g'8. b,16
@end example
Relative octaves work a little differently with chords. The starting
s1 s2. r4
@end example
@code{s} is a `spacer' rest. It does not print anything, but it does
-have the duration of a rest. @example
+have the duration of a rest.
+@example
oboes = \notes \relative c'' \context Voice = oboe @{
@end example
Now comes a part for two oboes. They play homophonically, so we
print the notes as one voice that makes chords. Again, we insure that
these notes are indeed processed by precisely one context with
-@code{\context}.@example
+@code{\context}.
+@example
\stemup s4 g8. b,16 c8 r <e'8.-\p g> <f16 a>
@end example
@code{\stemup} is an identifier reference. It is shorthand for
arguments: a fraction and a piece of music. The duration of the
second argument is multiplied by the first argument. Triplets make
notes occupy 2/3 of their notated duration, so in this case the
-fraction is 2/3. @example
+fraction is 2/3.
+@example
@{ <d8 \< f> <e g> <f a> @}
@end example
The piece of music to be `tripletted' is sequential music containing
three notes. On the first chord (the @code{d}), a crescendo is started
-with @code{\<}.@example
+with @code{\<}.
+@example
<
@end example
At this point, the homophonic music splits into two rhythmically
different parts. We can't use a sequence of chords to enter this, so
we make a `chord' of sequences to do it. We start with the upper
-voice, which continues with upward stems: @example
+voice, which continues with upward stems:
+@example
@{ \times 2/3 @{ a8 g c @} \! c2 @}
@end example
The crescendo is ended at the half note by the escaped exclamation
-mark `@code{\!}'. @example
+mark `@code{\!}'.
+@example
\context Voice = oboeTwo @{
\stemdown
@end example
We can't share stems with the other voice, so we have to create a new
@code{Voice} context. We give it the name @code{oboeTwo} to distinguish
-it from the other context. Stems go down in this voice. @example
+it from the other context. Stems go down in this voice.
+@example
\grace @{
@end example
When a grace section is processed, a @code{Grace} context is
created. This context acts like a miniature score of its own. It has
its own time bookkeeping, and you can make notes, beams, slurs
etc. Here fiddle with a property and make a beam. The argument of
-@code{\grace} is sequential music.@example
+@code{\grace} is sequential music.
+@example
\property Grace.verticalDirection = \down
[f,16 g] @}
@end example
f8 e e2
@} >
@end example
-This ends the two-part section. @example
+This ends the two-part section.
+@example
\stemboth
\grace <c,8( e> <)b8. d8.-\trill> <c16 e> |
@end example
positioned as if it were single part music.
The bass has a little hoom-pah melody to demonstrate parts switching
-between staffs. Since it is repetitive, we use identifiers:@example
+between staffs. Since it is repetitive, we use identifiers:
+@example
hoomPah = \notes \transpose c' @{
@end example
Transposing can be done with @code{\transpose}. It takes two
without having to worry about getting the motive in a wrong
octave@footnote{@code{hoomPah = \relative @dots{}} would be more
intuitive to use, but that would not let me plug @code{\transpose}
-:-).}.@example
+:-).}.
+@example
c8 \translator Staff = top \stemdown
@end example
We assume that the first note will be put in the lower staff. After
precise, this @code{\translator} entry switches the current voice to a
@code{Staff} named @code{top}. So we have to name the upper staff
`@code{top}'. Stem directions are set to avoid interfering with the
-oboe voices. @example
+oboe voices.
+@example
c'8 \translator Staff = bottom \stemup @}
@end example
Then a note is put on the upper staff, and we switch again. We have
-to name the lower staff `@code{bottom}'. @example
+to name the lower staff `@code{bottom}'.
+@example
hoomPahHoomPah = @{ [\hoomPah \hoomPah] @}
@end example
Put two of these fragments in sequence, and beam them.@example
\hoomPahHoomPah
@end example
Entering the bass part is easy: the hoomPahHoomPah variable is
-referenced four times.@example
+referenced four times.
+@example
\context Voice = reallyLow @{\stemdown g2 ~ | g4 c8 @} >
@end example
-After skipping some lines, we see @code{~}. This mark makes ties.@example
+After skipping some lines, we see @code{~}. This mark makes ties.
+@example
\context PianoStaff
@end example
For piano music, a special context is needed to get cross staff
-beaming right. It is called @code{PianoStaff}.@example
+beaming right. It is called @code{PianoStaff}.
+@example
\context Staff = bottom < \time 2/2; \clef bass;
@end example
-The bottom staff must have a different clef.@example
+The bottom staff must have a different clef.
+@example
indent = 0.0;
@end example
To make some more room on the line, the first (in this case the only)
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=3
-PATCH_LEVEL=41
-MY_PATCH_LEVEL=jcn4
+PATCH_LEVEL=42
+MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
+dnl WARNING WARNING WARNING WARNING
+dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
dnl aclocal.m4 -*-shell-script-*-
dnl StepMake subroutines for configure.in
gzip -f bash
gzip -f cygpath
+
+
+
fi
stepmake=`echo ${stepmake} | sed "s!\\\${prefix}!$presome!"`
+ # urg, how is this supposed to work?
+ if test "$program_prefix" = "NONE"; then
+ program_prefix=
+ fi
+ if test "$program_suffix" = "NONE"; then
+ program_suffix=
+ fi
+
echo $ac_n "checking Package""... $ac_c" 1>&6
-echo "configure:623: checking Package" >&5
+echo "configure:631: checking Package" >&5
if test "x$PACKAGE" = "xSTEPMAKE"; then
echo "$ac_t""Stepmake package!" 1>&6
fi
echo $ac_n "checking for stepmake""... $ac_c" 1>&6
-echo "configure:675: checking for stepmake" >&5
+echo "configure:683: checking for stepmake" >&5
# Check for installed stepmake
if test -d $stepmake; then
echo "$ac_t""$stepmake" 1>&6
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:797: checking host system type" >&5
+echo "configure:805: checking host system type" >&5
host_alias=$host
case "$host_alias" in
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:822: checking for $ac_word" >&5
+echo "configure:830: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:857: checking for $ac_word" >&5
+echo "configure:865: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:894: checking for $ac_word" >&5
+echo "configure:902: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:929: checking for $ac_word" >&5
+echo "configure:937: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:969: checking for $ac_word" >&5
+echo "configure:977: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_SHELL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1006: checking for $ac_word" >&5
+echo "configure:1014: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "${PYTHON:-python}", so it can be a program name with args.
set dummy ${PYTHON:-python}; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1047: checking for $ac_word" >&5
+echo "configure:1055: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
LN=cp # hard link does not work under cygnus-nt
LN_S='cp -r' # symbolic link does not work for native nt
ZIP="zip -r -9" #
- DOTEXE=.exe
+ program_suffix=.exe
# urg
# DIRSEP='\\'
# PATHSEP=';'
+
cat >> confdefs.h <<EOF
#define DIRSEP '${DIRSEP}'
EOF
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1271: checking for $ac_word" >&5
+echo "configure:1280: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1301: checking for $ac_word" >&5
+echo "configure:1310: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1352: checking for $ac_word" >&5
+echo "configure:1361: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1384: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1393: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
cat > conftest.$ac_ext << EOF
-#line 1395 "configure"
+#line 1404 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1426: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1435: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1431: checking whether we are using GNU C" >&5
+echo "configure:1440: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1440: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1449: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1459: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1468: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:1531: checking how to run the C++ preprocessor" >&5
+echo "configure:1540: checking how to run the C++ preprocessor" >&5
if test -z "$CXXCPP"; then
if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
CXXCPP="${CXX-g++} -E"
cat > conftest.$ac_ext <<EOF
-#line 1544 "configure"
+#line 1553 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1549: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1558: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1586: checking for $ac_word" >&5
+echo "configure:1595: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1618: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1627: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
cat > conftest.$ac_ext << EOF
-#line 1629 "configure"
+#line 1638 "configure"
#include "confdefs.h"
int main(){return(0);}
EOF
-if { (eval echo configure:1634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cxx_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
{ echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1660: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1669: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1665: checking whether we are using GNU C++" >&5
+echo "configure:1674: checking whether we are using GNU C++" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
yes;
#endif
EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1674: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1683: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gxx=yes
else
ac_cv_prog_gxx=no
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1693: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1702: checking whether ${CXX-g++} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
-echo "configure:1727: checking for FlexLexer.h" >&5
+echo "configure:1736: checking for FlexLexer.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1732 "configure"
+#line 1741 "configure"
#include "confdefs.h"
#include <FlexLexer.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6
-echo "configure:1788: checking whether explicit instantiation is needed" >&5
+echo "configure:1797: checking whether explicit instantiation is needed" >&5
if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1793 "configure"
+#line 1802 "configure"
#include "confdefs.h"
template <class T> struct foo { static int baz; };
return foo<int>::baz;
; return 0; }
EOF
-if { (eval echo configure:1803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
lily_cv_need_explicit_instantiation=no
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1830: checking for $ac_word" >&5
+echo "configure:1839: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1873: checking for $ac_word" >&5
+echo "configure:1882: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1908: checking for $ac_word" >&5
+echo "configure:1917: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1976: checking for $ac_word" >&5
+echo "configure:1985: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2009: checking for $ac_word" >&5
+echo "configure:2018: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking language""... $ac_c" 1>&6
-echo "configure:2065: checking language" >&5
+echo "configure:2074: checking language" >&5
case "$language" in
En* | en* | Am* | am* | US* | us*)
lang=English;;
echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:2101: checking for gettext in -lintl" >&5
+echo "configure:2110: checking for gettext in -lintl" >&5
ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2109 "configure"
+#line 2118 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
gettext()
; return 0; }
EOF
-if { (eval echo configure:2123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
for ac_func in gettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2153: checking for $ac_func" >&5
+echo "configure:2162: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2158 "configure"
+#line 2167 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:2184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2216: checking for $ac_word" >&5
+echo "configure:2225: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
test -n "$MSGFMT" || MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh "
echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6
-echo "configure:2247: checking whether msgfmt accepts -o" >&5
+echo "configure:2256: checking whether msgfmt accepts -o" >&5
msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`"
if test "$msgfmt_output" = ""; then
echo "$ac_t""yes" 1>&6
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2275: checking for $ac_word" >&5
+echo "configure:2284: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_METAFONT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2311: checking for $ac_word" >&5
+echo "configure:2320: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MFONT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2349: checking for $ac_word" >&5
+echo "configure:2358: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_METAPOST'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2385: checking for $ac_word" >&5
+echo "configure:2394: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MPOST'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2424: checking for $ac_word" >&5
+echo "configure:2433: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_INIMETAFONT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2460: checking for $ac_word" >&5
+echo "configure:2469: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_INIMFONT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2498: checking for $ac_word" >&5
+echo "configure:2507: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_INIMETAPOST'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2534: checking for $ac_word" >&5
+echo "configure:2543: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_INIMPOST'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
echo $ac_n "checking for working metafont mode""... $ac_c" 1>&6
-echo "configure:2568: checking for working metafont mode" >&5
+echo "configure:2577: checking for working metafont mode" >&5
modelist='ljfour lj4 lj3 lj2 ljet laserjet'
for MFMODE in $modelist; do
$METAFONT "\mode:=$MFMODE; mode_setup; end." > /dev/null 2>&1
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2614: checking for $ac_word" >&5
+echo "configure:2623: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_KPSEWHICH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
test -n "$KPSEWHICH" || KPSEWHICH="no"
echo $ac_n "checking for TeX TFM directory""... $ac_c" 1>&6
-echo "configure:2645: checking for TeX TFM directory" >&5
+echo "configure:2654: checking for TeX TFM directory" >&5
if test "x$TFMDIR" = xauto ; then
if test "x$TEX_TFMDIR" = "x" ; then
if test "x$KPSEWHICH" != "xno" ; then
## First, let's just see if we can find Guile at all.
echo $ac_n "checking "for guile-config"""... $ac_c" 1>&6
-echo "configure:2666: checking "for guile-config"" >&5
+echo "configure:2675: checking "for guile-config"" >&5
for guile_config in guile-config $target-guile-config $build-guile-config; do
echo "$ac_t"""$guile_config"" 1>&6
if ! $guile_config --version > /dev/null 2>&1 ; then
echo "configure: warning: "cannot execute $guile_config"" 1>&2
echo $ac_n "checking "if we are cross compiling"""... $ac_c" 1>&6
-echo "configure:2672: checking "if we are cross compiling"" >&5
+echo "configure:2681: checking "if we are cross compiling"" >&5
guile_config=error
else
break
exit 1
fi
echo $ac_n "checking "Guile version"""... $ac_c" 1>&6
-echo "configure:2683: checking "Guile version"" >&5
+echo "configure:2692: checking "Guile version"" >&5
need_guile_version="1.3.4"
guile_version=`expr "\`$guile_config --version 2>&1\`" : ".*\($need_guile_version\).*"`
echo "$ac_t"""$guile_version"" 1>&6
## The GUILE_FLAGS macro.
echo $ac_n "checking for Guile""... $ac_c" 1>&6
-echo "configure:2696: checking for Guile" >&5
+echo "configure:2705: checking for Guile" >&5
if ! $guile_config link > /dev/null ; then
echo "$ac_t"""cannot execute $guile_config"" 1>&6
{ echo "configure: error: "cannot find guile-config; is Guile installed?"" 1>&2; exit 1; }
# Extract the first word of "guile", so it can be a program name with args.
set dummy guile; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2711: checking for $ac_word" >&5
+echo "configure:2720: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GUILE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:2749: checking for 8-bit clean memcmp" >&5
+echo "configure:2758: checking for 8-bit clean memcmp" >&5
if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_func_memcmp_clean=no
else
cat > conftest.$ac_ext <<EOF
-#line 2757 "configure"
+#line 2766 "configure"
#include "confdefs.h"
#ifdef __cplusplus
extern "C" void exit(int);
}
EOF
-if { (eval echo configure:2770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_memcmp_clean=yes
else
test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:2788: checking for vprintf" >&5
+echo "configure:2797: checking for vprintf" >&5
if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2793 "configure"
+#line 2802 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vprintf(); below. */
; return 0; }
EOF
-if { (eval echo configure:2819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_vprintf=yes"
else
if test "$ac_cv_func_vprintf" != yes; then
echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:2843: checking for _doprnt" >&5
+echo "configure:2852: checking for _doprnt" >&5
if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2848 "configure"
+#line 2857 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char _doprnt(); below. */
; return 0; }
EOF
-if { (eval echo configure:2874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func__doprnt=yes"
else
for ac_func in memmem snprintf vsnprintf gettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2901: checking for $ac_func" >&5
+echo "configure:2910: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2906 "configure"
+#line 2915 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:2932: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2971: checking for $ac_word" >&5
+echo "configure:2980: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "perl", so it can be a program name with args.
set dummy perl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3004: checking for $ac_word" >&5
+echo "configure:3013: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
s%@TAR@%$TAR%g
s%@BASH@%$BASH%g
s%@PYTHON@%$PYTHON%g
-s%@DOTEXE@%$DOTEXE%g
+s%@program_prefix@%$program_prefix%g
+s%@program_suffix@%$program_suffix%g
s%@ZIP@%$ZIP%g
s%@LN@%$LN%g
s%@LN_S@%$LN_S%g
+lilypond1.3 (1.3.41-1) frozen unstable; urgency=low
+
+ * New upstream development release.
+ * [debian/postinst]: Fixed the pathname to README.Debian. Thanks to
+ Olivier Abad for the bug report (closes: Bug#58674).
+ * [debian/rules]: Now configure with --enable-optimise again.
+ Yes, it appears that LilyPond and glibc2.1.3 finally get along
+ nicely even with optimisation turned on. Hurray! :-)
+ * [Documentation/user/*]: Fixed some formatting bugs in the texinfo files.
+ * [debian/control]: Modified description to hint that 1.3.41 is better
+ than 1.2.17. :-)
+ * [debian/{rules,emacsen-startup}]: Added an Emacs startup file
+ /etc/emacs/site-start.d/50lilypond1.3.el so that lilypond-mode is
+ automatically loaded for *.ly files.
+
+ -- Anthony Fok <foka@debian.org> Sat, 1 Apr 2000 03:49:31 -0700
+
lilypond1.3 (1.3.24-1) frozen unstable; urgency=low
* New upstream development release with lots of bug fixes. :-)
Section: tex
Priority: optional
Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.1.0
+Standards-Version: 3.1.1
Package: lilypond1.3
Architecture: any
using a high level description file as input. LilyPond is part of
the GNU Project.
.
- This is the unstable 1.3 branch of LilyPond. It is not intended for
- use with stable projects!
+ This is the developmental 1.3 branch of LilyPond. It is not intended for
+ use with stable projects, although arguably 1.3.41 is less buggy and much
+ more featureful than then the "stable" 1.2.17.
.
URLs: http://www.cs.uu.nl/~hanwen/lilypond/
http://www.xs4all.nl/~jantien/lilypond/
on Tue, 9 Nov 1999 22:30:32 -0700
It was downloaded from
- ftp://ftp.lilypond.org/pub/LilyPond/v1.3/lilypond-1.3.24.tar.gz
+ ftp://ftp.lilypond.org/pub/LilyPond/v1.3/lilypond-1.3.41.tar.gz
It is also available at:
- ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/v1.3/lilypond-1.3.24.tar.gz
+ ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/v1.3/lilypond-1.3.41.tar.gz
For more information about GNU LilyPond, please visit:
http://www.cs.uu.nl/~hanwen/lilypond/
Section: tex
Priority: optional
Maintainer: Anthony Fok <foka@debian.org>
-Standards-Version: 3.1.0
+Standards-Version: 3.1.1
Package: lilypond1.3
Architecture: any
using a high level description file as input. LilyPond is part of
the GNU Project.
.
- This is the unstable 1.3 branch of LilyPond. It is not intended for
- use with stable projects!
+ This is the developmental 1.3 branch of LilyPond. It is not intended for
+ use with stable projects, although arguably 1.3.41 is less buggy and much
+ more featureful than then the "stable" 1.2.17.
.
URLs: http://www.cs.uu.nl/~hanwen/lilypond/
http://www.xs4all.nl/~jantien/lilypond/
# postinst script for the Debian GNU/Linux lilypond package
# by Anthony Fok <foka@debian.org>
# Initial release: Sun, 26 Oct 1997 03:23:00 -0700
-# Last modified: Wed, 7 Jul 1999 19:36:36 -0600
+# Last modified: Sun, 26 Mar 2000 02:18:41 -0700
set -e
echo
echo " $pkg_name configuration completed."
-echo " Please read /usr/doc/$package/README.Debian to get started."
+echo " Please read /usr/share/doc/lilypond1.3/README.Debian to get started."
dh_testdir
./configure --disable-checking --disable-debugging \
- --enable-printing --prefix=/usr --disable-optimise \
+ --enable-printing --prefix=/usr --enable-optimise \
--enable-shared \
--infodir='$${prefix}/share/info' \
--mandir='$${prefix}/share/man'
$(MAKE) all
$(MAKE) -C Documentation
-# $(MAKE) -C Documentation/programmer ps
$(MAKE) -C Documentation/user ps
$(MAKE) -C Documentation/pictures pngs
dh_testroot
dh_clean -k
dh_installdirs usr/share/doc/texmf \
- usr/share/emacs/site-lisp \
$(d)/examples \
+ usr/share/emacs/site-lisp \
usr/share/texmf/tex \
usr/share/texmf/fonts/source/public \
usr/share/texmf/fonts/afm/public \
binary-arch: build install
dh_testdir
dh_testroot
- cp -av lilypond-mode.el $(r)/usr/share/emacs/site-lisp
+ cp -av lilypond-mode.el $(r)/usr/share/emacs/site-lisp/
dh_installdocs DEDICATION TODO *.txt \
Documentation/pictures/out/*.png \
Documentation/out/*.txt \
Documentation/*/out/[a-z]*.dvi \
Documentation/*/out/*.ps
mkdir $(r)/$(d)/bibliography $(r)/$(d)/misc
- cp -a Documentation/bibliography/*.bib $(r)/$(d)/bibliography
- cp -a Documentation/misc/[ACN]* $(r)/$(d)/misc
+ cp -a Documentation/bibliography/*.bib $(r)/$(d)/bibliography/
+ cp -a Documentation/misc/[ACN]* $(r)/$(d)/misc/
# dh_installexamples input
cp -aP `find input mutopia \( -name '*.*ly' -o -name '*.abc' -o -name '*.tex' -o -name 'TODO' \)` \
$(r)/$(d)/examples
for i in `find $(r)/$(d)/examples/ -type d -name out`; do \
mv -fv $$i/* $$i/..; rmdir $$i; done
# dh_installmenu
-# dh_installemacsen
+ dh_installemacsen
# dh_installcron
# dh_installmanpages
# dh_undocumented
\translator { \ScoreContext
%textVerticalAlignment = #0
}
-\translator { \StaffContext \consists "Staff_margin_engraver"; }
-\translator { \PianoStaffContext \consists "Staff_margin_engraver"; }
+%\translator { \StaffContext \consists "Staff_margin_engraver"; }
+%\translator { \PianoStaffContext \consists "Staff_margin_engraver"; }
+\translator { \StaffContext \consists "New_staff_margin_engraver"; }
+\translator { \PianoStaffContext \consists "New_staff_margin_engraver"; }
}}
\score {
\context StaffGroup <
\context Staff=upper \notes\relative c{
- \key F;
+ \key f;
\time 3/4;
r8^"Moderato" %\pp
<g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.> |
r8 <as-. c-.> <c-. es-.>
}
\context Staff=lower \notes\relative c{
- \key F;
+ \key f;
\time 3/4;
\clef "bass";
<c,2 c'> r4
\notes
\relative c{
\clef "bass";
- \key D;
+ \key d;
<a2\ppp\cr d> <gis\rc\p\decr d'> | <a2\rced d> ~ <a8 d> r8 r4 |
a2\ppp\cr a2\rc\p\decr | <a2\rced d> ~ <a8 d> r8 r4 |
a2\pppp ~ a8 r8 r4 | a2\ppppp ~ a8 r8 r4 | r4 a8_"pizz"
\notes
\relative c{
\clef "bass";
- \key C;
+ \key c;
<e1\sff cis'^\downbow> | <cis\sff a'^\downbow> |
<d,\ffff\decr g> ~ <d2 g> ~ <d8\p\rced g> |
}
\score {
\context PianoStaff \notes <
- \context Staff = top { \key D; \time 4/4;
+ \context Staff = top { \key d; \time 4/4;
\soprano
}
- \context Staff = bottom < \key D; \time 4/4; \clef bass;
+ \context Staff = bottom < \key d; \time 4/4; \clef bass;
\context Voice = up { \tenor }
\context Voice = down { \bass }
>
return 0.0;
}
+
+Real
+Align_interface::center_on_element (Dimension_cache const *c)
+{
+ Score_element *me = c->element_l ();
+ Score_element *cent = unsmob_element (me->get_elt_property ("group-center-element"));
+
+ if (cent)
+ {
+ Real r = cent->relative_coordinate (me, c->axis ());
+ return -r;
+ }
+ return 0;
+}
+
/*
Hairy function to put elements where they should be. Can be tweaked
from the outside by setting minimum-space and extra-space in its
return elt_l_->dim_cache_[a]->extent_callback_l_ == group_extent_callback;
}
+Interval
+Axis_group_interface::relative_group_extent (Axis a, Score_element *common, SCM elts)
+{
+ Interval r;
+ for (SCM s = elts; gh_pair_p (s); s = gh_cdr (s))
+ {
+ Score_element * se = unsmob_element (gh_car (s));
+ Interval dims = se->extent (a);
+ if (!dims.empty_b ())
+ r.unite (dims + se->relative_coordinate (common, a));
+ }
+ return r;
+}
+
Interval
Axis_group_interface::group_extent_callback (Dimension_cache const *c)
{
Axis a = c->axis ();
Score_element * me = c->element_l ();
+ Score_element * common = me;
- Interval r;
for (SCM s = me->get_elt_property ("elements"); gh_pair_p (s); s = gh_cdr (s))
{
- SCM e=gh_car (s);
- Score_element * se = SMOB_TO_TYPE (Score_element, e);
-
- Interval dims = se->extent (a);
- if (!dims.empty_b ())
- r.unite (dims + se->relative_coordinate (me, a));
+ Score_element * se = unsmob_element (gh_car (s));
+ common = se->common_refpoint (common, a);
}
- return r;
-}
+ Real my_coord = me->relative_coordinate (common, a);
+ Interval r (relative_group_extent (a, common, me->get_elt_property ("elements")));
+ return r - my_coord;
+}
void
Axis_group_interface::set_interface ()
if (!has_interface_b ())
{
elt_l_->set_elt_property ("elements", SCM_EOL);
- elt_l_->set_elt_property ("transparent", SCM_BOOL_T);
+ elt_l_->set_elt_property ("transparent", SCM_BOOL_T); // junk this?
elt_l_->set_elt_property ("axes" , SCM_EOL);
group (elt_l_, "interfaces").add_thing (ly_symbol2scm ("Axis_group"));
}
if (!bar_p_)
{
bar_p_ = new Staff_bar;
- bar_p_->set_elt_property ("break-aligned", SCM_BOOL_T);
+ bar_p_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Staff_bar"));
// urg: "" != empty...
SCM default_type = get_property ("defaultBarType");
if (gh_string_p (s))
{
String str =ly_scm2string (s);
- if (str == "bracket")
- return staff_bracket (get_bar_size ());
- else if (str == "brace")
- return staff_brace (get_bar_size ());
- else
- return compound_barline (str, get_bar_size ());
+ return compound_barline (str, get_bar_size ());
}
return Molecule ();
}
-Molecule
-Bar::staff_bracket (Real height) const
-{
- Paper_def* p= paper_l ();
- Real arc_height = p->get_var("bracket_arch_height");
- SCM at = gh_list (ly_symbol2scm ("bracket"),
- gh_double2scm (p->get_var("bracket_arch_angle")),
- gh_double2scm (p->get_var("bracket_arch_width")),
- gh_double2scm (arc_height),
- gh_double2scm (p->get_var("bracket_width")),
- gh_double2scm (height),
- gh_double2scm (p->get_var("bracket_arch_thick")),
- gh_double2scm (p->get_var("bracket_thick")),
- SCM_UNDEFINED);
-
- Real staff_space = p->get_var ("interline");
- Real h = height + 2 * arc_height;
- Box b (Interval (0, 1.5 * staff_space), Interval (-h/2, h/2));
- Molecule mol (b, at);
-
- mol.translate_axis (- mol.dim_[X_AXIS].length () / 2, X_AXIS);
- return mol;
-}
-
Molecule
Bar::compound_barline (String str, Real h) const
{
}
else if (str == ":|:")
{
-// m.add_at_edge (X_AXIS, LEFT, thick, thinkern);
-// m.add_at_edge (X_AXIS, LEFT, colon, kern);
-// m.add_at_edge (X_AXIS, RIGHT, thick, kern);
-// m.add_at_edge (X_AXIS, RIGHT, colon, kern);
- m.add_at_edge (X_AXIS, RIGHT, thick, 0);
- m.add_at_edge (X_AXIS, RIGHT, thin, kern);
- m.add_at_edge (X_AXIS, RIGHT, colon, kern);
- m.add_at_edge (X_AXIS, LEFT, thin, kern);
+ m.add_at_edge (X_AXIS, LEFT, thick, thinkern);
m.add_at_edge (X_AXIS, LEFT, colon, kern);
- }
- else if (str == ";|;")
- {
- m.add_at_edge (X_AXIS, RIGHT, thick, 0);
- m.add_at_edge (X_AXIS, RIGHT, thin, kern);
- m.add_at_edge (X_AXIS, LEFT, thin, kern);
+ m.add_at_edge (X_AXIS, RIGHT, thick, kern);
+ m.add_at_edge (X_AXIS, RIGHT, colon, kern);
}
else if (str == ".|.")
{
return m;
}
-/*
- ugh. Suck me plenty.
- */
-Molecule
-Bar::staff_brace (Real y) const
-{
- Real staffht = paper_l ()->get_var ("staffheight");
- int staff_size = int (rint (staffht ));
-
- // URG
- Real step = 1.0;
- int minht = 2 * staff_size;
- int maxht = 7 * minht;
- int idx = int (((maxht - step) <? y - minht) / step);
- idx = idx >? 0;
-
- SCM l = scm_eval (gh_list (ly_symbol2scm ("style-to-cmr"),
- ly_str02scm ("brace"),
- SCM_UNDEFINED));
-
- String nm = "feta-braces";
- if (l != SCM_BOOL_F)
- nm = ly_scm2string (gh_cdr (l));
- nm += to_str (staff_size);
- SCM e =gh_list (ly_symbol2scm ("char"), gh_int2scm (idx), SCM_UNDEFINED);
- SCM at = (e);
-
- at = fontify_atom (all_fonts_global_p->find_font (nm), at);
-
- Box b (Interval (0,0), Interval (-y/2, y/2));
-
- return Molecule(b, at);
-}
-
Molecule
Bar::simple_barline (Real w, Real h) const
+++ /dev/null
-/*
- span-bar-grav.cc -- implement Base_span_bar_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "dimension-cache.hh"
-#include "lily-guile.hh"
-#include "span-bar.hh"
-#include "base-span-bar-engraver.hh"
-
-Base_span_bar_engraver::Base_span_bar_engraver()
-{
- spanbar_p_ =0;
- use_priority_b_ = true;
-}
-
-Span_bar*
-Base_span_bar_engraver::get_span_bar_p() const
-{
- return new Span_bar;
-}
-
-
-void
-Base_span_bar_engraver::acknowledge_element (Score_element_info i)
-{
- int depth = i.origin_trans_l_arr (this).size();
- if (depth > 1
- && dynamic_cast<Bar *> (i.elem_l_))
- {
- bar_l_arr_.push (dynamic_cast<Bar *> (i.elem_l_));
-
- if (bar_l_arr_.size() >= 2 && !spanbar_p_)
- /*
- hmm, i do want a bracket with one staff some times, but not always
- if (bar_l_arr_.size() >= 1 && !spanbar_p_)
-
- --jcn
- */
-
- /*
-
- use a property? get_property ("singleStaffBracket"); ?
-
- --hwn
- */
- {
- spanbar_p_ = get_span_bar_p();
- spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS);
-
- /*
- UGH. UGH UUHGK GUHG G
- */
- String visnam = String(name()) + "-visibility";
-
- spanbar_p_->set_elt_property ("visibility-lambda",
- scm_eval (ly_symbol2scm (visnam.ch_C())));
-
- if (use_priority_b_)
- {
- spanbar_p_->set_elt_property ("break-aligned", SCM_BOOL_T);
- }
- else
- {
- spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS);
- }
-
- announce_element (Score_element_info (spanbar_p_,0));
- if (!gh_string_p (spanbar_p_->get_elt_property ("glyph")))
- spanbar_p_-> set_elt_property ("glyph",
- bar_l_arr_[0]->get_elt_property ("glyph"));
- }
- }
-}
-
-void
-Base_span_bar_engraver::do_pre_move_processing()
-{
- if (spanbar_p_)
- {
- for (int i=0; i < bar_l_arr_.size() ; i++)
- spanbar_p_->add_bar (bar_l_arr_[i]);
- typeset_element (spanbar_p_);
- spanbar_p_ =0;
- }
- bar_l_arr_.set_size (0);
-}
-
-
-
-ADD_THIS_TRANSLATOR(Base_span_bar_engraver);
-
#include "break-align-item.hh"
#include "align-interface.hh"
#include "axis-group-interface.hh"
+#include "dimension-cache.hh"
class Break_align_engraver : public Engraver
{
if (!breakable)
return ;
- SCM al = item_l->remove_elt_property ("break-aligned");
- if (!gh_boolean_p (al ) || !gh_scm2bool (al))
+ SCM align_name = item_l->remove_elt_property ("break-align-symbol");
+ if (!gh_symbol_p (align_name))
return ;
-
if (!align_l_)
{
align_l_ = new Break_align_item;
align_l_->set_elt_property ("breakable", SCM_BOOL_T);
announce_element (Score_element_info (align_l_,0));
+
+
+ Item * edge = new Item;
+ SCM edge_sym = ly_symbol2scm ("Left_edge_item");
+ edge->set_elt_property ("break-align-symbol", edge_sym);
+
+ /*
+ If the element is empty, it will be ignored in the break
+ alignment stuff.
+
+ TODO: switch off ignoring empty stuff?
+ */
+ edge->dim_cache_[X_AXIS]->set_extent_callback (Dimension_cache::point_dimension_callback);
+
+ align_l_->set_elt_property ("group-center-element", edge->self_scm_);
+
+ announce_element (Score_element_info(edge, 0));
+ column_alist_ = scm_assoc_set_x (column_alist_, edge_sym, edge->self_scm_);
}
- SCM name = ly_str02scm (inf.elem_l_->name());
- SCM s = scm_assoc (name, column_alist_);
+ SCM s = scm_assoc (align_name, column_alist_);
Item * group = 0;
Axis_group_interface (group).set_interface ();
Axis_group_interface (group).set_axes (X_AXIS,X_AXIS);
- group->set_elt_property ("origin", name);
+ group->set_elt_property ("break-align-symbol", align_name);
group->set_parent (align_l_, Y_AXIS);
announce_element (Score_element_info (group, 0));
- column_alist_ = scm_assoc_set_x (column_alist_, name, group->self_scm_);
+ column_alist_ = scm_assoc_set_x (column_alist_, align_name, group->self_scm_);
}
Axis_group_interface (group).add_element (item_l);
}
void
Break_align_item::before_line_breaking ()
{
- Direction ad = (break_status_dir() == LEFT) ? RIGHT : LEFT;
- Real interline= paper_l ()->get_var ("interline");
-
- set_elt_property ("self-alignment-X", gh_int2scm (ad));
+ if (break_status_dir() == LEFT)
+ {
+ set_elt_property ("self-alignment-X", gh_int2scm (RIGHT));
+ }
+ else
+ {
+ add_offset_callback (Align_interface::center_on_element, X_AXIS);
+ }
+
+ Real interline= paper_l ()->get_var ("interline");
Link_array<Score_element> elems;
Link_array<Score_element> all_elems
= Group_interface__extract_elements (this, (Score_element*)0,
SCM symbol_list = SCM_EOL;
Array<Real> dists;
- SCM current_origin = ly_str02scm ("");
+ SCM current_origin = ly_symbol2scm ("none");
for (int i=0; i <= elems.size (); i++)
{
Score_element *next_elt = i < elems.size ()
if (next_elt)
{
- next_origin = next_elt->get_elt_property ("origin");
+ next_origin = next_elt->get_elt_property ("break-align-symbol");
next_origin =
(next_origin == SCM_UNDEFINED)
- ? ly_str02scm ("")
+ ? ly_symbol2scm ("none")
: next_origin;
}
else
- next_origin = ly_str02scm ("begin-of-note");
+ next_origin = ly_symbol2scm ("begin-of-note");
SCM extra_space
= scm_eval (scm_listify (ly_symbol2scm ("break-align-spacer"),
- current_origin, next_origin, SCM_UNDEFINED));
+ ly_quote_scm (current_origin),
+ ly_quote_scm (next_origin),
+ SCM_UNDEFINED));
SCM symbol = gh_car (extra_space);
Real spc = gh_scm2double (SCM_CADR(extra_space));
spc *= interline;
/*
Hint the spacing engine how much space to put in.
-
The pairs are in the format of an interval (ie. CAR < CDR).
*/
column_l ()->set_elt_property ("extra-space",
if(breathing_sign_req_l_)
{
breathing_sign_p_ = new Breathing_sign;
- breathing_sign_p_->set_elt_property ("break-aligned", SCM_BOOL_T);
+ breathing_sign_p_->set_elt_property ("break-align-symbol",
+ ly_symbol2scm ("Breathing_sign"));
Staff_symbol_referencer_interface st (breathing_sign_p_);
st.set_interface ();
{
Clef_item *c= new Clef_item;
c->set_elt_property ("breakable", SCM_BOOL_T);
- c->set_elt_property ("break-aligned", SCM_BOOL_T);
+ c->set_elt_property ("break-align-symbol", ly_symbol2scm ("Clef_item"));
announce_element (Score_element_info (c, clef_req_l_));
Staff_symbol_referencer_interface si(c);
int get_count (Score_element*)const;
void set_interface ();
bool has_interface_b ();
+ static Real center_on_element (Dimension_cache const *c);
};
#endif /* ALIGN_INTERFACE_HH */
Axis_group_interface (Score_element*);
static Interval group_extent_callback (Dimension_cache const*);
+ static Interval relative_group_extent (Axis, Score_element * common, SCM list);
void add_element (Score_element*);
void set_axes (Axis,Axis);
Link_array<Score_element> get_children ();
bool has_interface_b ();
void set_interface ();
+
};
#endif /* AXIS_GROUP_INTERFACE_HH */
VIRTUAL_COPY_CONS(Score_element);
Bar();
- Molecule staff_bracket (Real height) const;
- Molecule staff_brace (Real height) const;
Molecule compound_barline (String, Real height) const;
Molecule simple_barline (Real wid, Real height) const;
+++ /dev/null
-/*
- base-span-bar-engraver.hh -- declare Span_bar_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef SPAN_BAR_GRAV_HH
-#define SPAN_BAR_GRAV_HH
-
-#include "engraver.hh"
-class Axis_align_spanner;
-/**
-
- Make bars that span multiple "staffs". Catch bars, and span a
- Span_bar over them if we find more than 2 bars. Vertical alignment
- of staffs changes the appearance of spanbars. It is up to the
- aligner (Vertical_align_engraver, in this case, to add extra
- dependencies to the spanbars.
-
- */
-class Base_span_bar_engraver : public Engraver
-{
- Span_bar * spanbar_p_;
- Array<Bar*> bar_l_arr_;
-
-public:
- VIRTUAL_COPY_CONS(Translator);
-
-
- Base_span_bar_engraver();
-protected:
- /**
- Do we use break priorities? If true, use break_priority_i_ as
- horizontal alignment priority, otherwise, hang the spanbar on the
- acknowledged bar. */
- bool use_priority_b_;
-
- virtual void acknowledge_element (Score_element_info);
- virtual void do_pre_move_processing();
- virtual Span_bar* get_span_bar_p() const;
-};
-
-#endif // SPAN_BAR_GRAV_HH
#include "item.hh"
-/// align breakable items (clef, bar, etc.)
+/**
+ align breakable items (clef, bar, etc.)
+
+ Properties:
+
+ break-align-symbol -- the index in the spacing table (symbol) of
+ the to be aligned item.
+
+
+ TODO: remove this as a class, and make interface.
+ */
+
class Break_align_item : public Item
{
protected:
void evaluate_empty ();
static Interval width_callback(Dimension_cache const*) ;
- static Interval height_callback(Dimension_cache const*) ;
virtual Real get_bar_size () const;
virtual void before_line_breaking ();
--- /dev/null
+/*
+ System-start-delimiter.hh -- declare System_start_delimiter
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef SYSTEM_START_DELIMITER_HH
+#define SYSTEM_START_DELIMITER_HH
+
+#include "spanner.hh"
+
+/*
+ Braces/brackets across staffs.
+ */
+class System_start_delimiter : public Spanner
+{
+public:
+ System_start_delimiter ();
+ VIRTUAL_COPY_CONS (Score_element);
+protected:
+ virtual Molecule do_brew_molecule () const;
+ Molecule staff_bracket (Real) const;
+ Molecule staff_brace (Real) const;
+ Molecule simple_bar (Real) const;
+};
+
+#endif /* SYSTEM_START_DELIMITER_HH */
+
public:
SCM get_property (SCM name_sym) const;
void set_property (String var_name, SCM value);
-
+ Translator_group *where_defined (SCM name_sym) const;
String id_str_;
void add_last_element (String s);
--- /dev/null
+/*
+ new-staff-margin-engraver.cc -- implement Instrument_name_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "engraver.hh"
+#include "text-item.hh"
+#include "bar.hh"
+#include "span-bar.hh"
+
+class Instrument_name_engraver : public Engraver
+{
+ Text_item *text_;
+
+ void create_text (SCM s);
+public:
+ VIRTUAL_COPY_CONS(Translator);
+ Instrument_name_engraver ();
+
+ virtual void acknowledge_element (Score_element_info);
+ virtual void do_pre_move_processing ();
+};
+
+ADD_THIS_TRANSLATOR(Instrument_name_engraver);
+
+Instrument_name_engraver::Instrument_name_engraver ()
+{
+ text_ = 0;
+}
+
+
+void
+Instrument_name_engraver::do_pre_move_processing ()
+{
+ if (text_)
+ {
+ typeset_element (text_);
+ text_ = 0;
+ }
+}
+
+void
+Instrument_name_engraver::create_text (SCM txt)
+{
+ if(!text_)
+ {
+ text_ = new Text_item;
+ text_->set_elt_property ("text", txt);
+ text_->set_elt_property ("breakable", SCM_BOOL_T);
+
+ /*
+ TODO: use more lispish names for break-align-symbols
+ */
+ text_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Instrument_name"));
+ text_->set_elt_property ("visibility-lambda",
+ scm_eval (ly_symbol2scm ("begin-of-line-visible")));
+
+ announce_element (Score_element_info (text_,0));
+ }
+}
+
+void
+Instrument_name_engraver::acknowledge_element (Score_element_info i)
+{
+ SCM s = get_property ("instrument");
+
+ if (now_mom () > Moment (0))
+ s = get_property ("instr");
+
+ if (gh_string_p (s))
+ {
+ if (Bar* b= dynamic_cast<Bar*> (i.elem_l_))
+ {
+ create_text (s);
+ if (Span_bar* s= dynamic_cast<Span_bar*> (b))
+ {
+ text_->set_parent (s, Y_AXIS);
+ }
+ }
+ }
+}
+
+
+
+
item_p_ = new Key_item;
Staff_symbol_referencer_interface st (item_p_);
st.set_interface ();
+
- item_p_->set_elt_property ("break-aligned", SCM_BOOL_T); // ugh
-
+ item_p_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Key_item"));
item_p_->set_elt_property ("multi-octave",
gh_bool2scm (key_.multi_octave_b_));
return 0.0;
}
+
+
Real
directed_round (Real f, Direction d)
{
if (rc->musical_b () && to_boolean (rc->get_elt_property ("contains-grace")))
right_dist *= paper_l ()->get_var ("before_grace_spacing_factor");
-
- s.distance_f_ = left_distance + right_dist;
+ s.distance_f_ = left_distance + right_dist;
Real stretch_dist = 0.;
if (gh_number_p (stretch_hint))
-#include "base-span-bar-engraver.hh"
+/*
+ span-bar-grav.cc -- implement Span_bar_engraver
+ source file of the GNU LilyPond music typesetter
-class Span_bar_engraver : public Base_span_bar_engraver
+ (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "dimension-cache.hh"
+#include "lily-guile.hh"
+#include "span-bar.hh"
+#include "engraver.hh"
+
+/**
+
+ Make bars that span multiple "staffs". Catch bars, and span a
+ Span_bar over them if we find more than 2 bars. Vertical alignment
+ of staffs changes the appearance of spanbars. It is up to the
+ aligner (Vertical_align_engraver, in this case, to add extra
+ dependencies to the spanbars.
+
+ */
+class Span_bar_engraver : public Engraver
{
+ Span_bar * spanbar_p_;
+ Link_array<Bar> bar_l_arr_;
+
public:
- Span_bar_engraver ();
- VIRTUAL_COPY_CONS (Translator);
+ VIRTUAL_COPY_CONS(Translator);
+ Span_bar_engraver();
+protected:
+ virtual void acknowledge_element (Score_element_info);
+ virtual void do_pre_move_processing();
+ virtual Span_bar* get_span_bar_p() const;
};
-Span_bar_engraver::Span_bar_engraver ()
+Span_bar_engraver::Span_bar_engraver()
+{
+ spanbar_p_ =0;
+}
+
+Span_bar*
+Span_bar_engraver::get_span_bar_p() const
+{
+ return new Span_bar;
+}
+
+
+void
+Span_bar_engraver::acknowledge_element (Score_element_info i)
{
- use_priority_b_ = false;
+ int depth = i.origin_trans_l_arr (this).size();
+ if (depth > 1
+ && dynamic_cast<Bar *> (i.elem_l_))
+ {
+ bar_l_arr_.push (dynamic_cast<Bar *> (i.elem_l_));
+
+ if (bar_l_arr_.size() >= 2 && !spanbar_p_)
+ {
+ spanbar_p_ = get_span_bar_p();
+ spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS);
+
+ /*
+ UGH. UGH UUHGK GUHG G
+ */
+ String visnam = String(name()) + "-visibility";
+
+ spanbar_p_->set_elt_property ("visibility-lambda",
+ scm_eval (ly_symbol2scm (visnam.ch_C())));
+
+ spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS);
+ announce_element (Score_element_info (spanbar_p_,0));
+ if (!gh_string_p (spanbar_p_->get_elt_property ("glyph")))
+ spanbar_p_-> set_elt_property ("glyph",
+ bar_l_arr_[0]->get_elt_property ("glyph"));
+ }
+ }
+}
+
+void
+Span_bar_engraver::do_pre_move_processing()
+{
+ if (spanbar_p_)
+ {
+ for (int i=0; i < bar_l_arr_.size() ; i++)
+ spanbar_p_->add_bar (bar_l_arr_[i]);
+ typeset_element (spanbar_p_);
+ spanbar_p_ =0;
+ }
+ bar_l_arr_.set_size (0);
}
+
+
ADD_THIS_TRANSLATOR(Span_bar_engraver);
+
+
+
#include "paper-def.hh"
#include "molecule.hh"
#include "warn.hh"
+#include "axis-group-interface.hh"
#include "group-interface.hh"
-
void
Span_bar::add_bar (Score_element*b)
{
Span_bar* s= dynamic_cast<Span_bar*> (c->element_l ());
String gl = ly_scm2string (s->get_elt_property ("glyph"));
- /*urg.
+ /*
+ urg.
*/
Molecule m = s->compound_barline (gl, 40 PT);
void
Span_bar::before_line_breaking ()
{
- evaluate_empty ();
-
Bar::before_line_breaking ();
- // set_empty (false, Y_AXIS); // a hack to make mark scripts work.
+ evaluate_empty ();
}
void
Span_bar::after_line_breaking ()
{
Bar::after_line_breaking ();
- SCM s = get_elt_property ("collapse-height");
- if (gh_number_p (s)
- && get_spanned_interval ().length () < gh_scm2double (s))
- {
- set_elt_property ("transparent", SCM_BOOL_T);
- set_empty (X_AXIS);
- set_empty (Y_AXIS);
- }
-
Interval i (get_spanned_interval ());
translate_axis (i.center (), Y_AXIS);
}
}
else if (type_str== ":|:")
{
- type_str= ";|;";
+ type_str= ".|.";
}
- set_elt_property ("glyph", ly_str02scm (type_str.ch_C ()));
}
+
+ /*
+ uhh. should do something with type_str ?!!
+ */
}
Interval
Span_bar::get_spanned_interval () const
{
- Interval y_int;
-
- for (SCM s = get_elt_property ("elements"); gh_pair_p (s); s = gh_cdr (s))
- {
- Score_element *bar = unsmob_element ( gh_car (s));
-
- if (!bar)
- continue;
-
- Score_element*common = common_refpoint (bar, Y_AXIS);
-
- Interval iv (bar->extent(Y_AXIS));
- if (!iv.empty_b ())
- {
- Real y = bar->relative_coordinate (common, Y_AXIS)
- - relative_coordinate (common, Y_AXIS);
-
- y_int.unite (y + iv);
- }
- }
-
- return y_int;
+ return Axis_group_interface::group_extent_callback (dim_cache_[Y_AXIS]);
}
-Interval
-Span_bar::height_callback (Dimension_cache const *c)
-{
- Span_bar * s= dynamic_cast<Span_bar*> (c->element_l ());
- return s->get_spanned_interval ();
-}
Real
Span_bar::get_bar_size () const
{
group (this).set_interface ();
dim_cache_[X_AXIS]->set_extent_callback (width_callback);
- dim_cache_[Y_AXIS]->set_extent_callback (height_callback);
+ dim_cache_[Y_AXIS]->set_extent_callback (Axis_group_interface::group_extent_callback);
}
-/*
- span-score-bar-engraver.cc -- implement Span_score_bar_engraver,
- Piano_bar_engraver and Staff_group_bar_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "span-bar.hh"
-#include "span-score-bar-engraver.hh"
-#include "paper-def.hh"
-#include "dimension-cache.hh"
-
-Span_bar*
-Span_score_bar_engraver::get_span_bar_p () const
-{
- Span_bar*s = new Span_bar;
- s->set_elt_property ("glyph", gh_str02scm ("scorebar"));
- s->set_elt_property ("break-aligned",SCM_BOOL_T);
-
- return s;
-}
-
-
-Span_score_bar_engraver::Span_score_bar_engraver ()
-{
- use_priority_b_ = true;
-}
-
-Span_bar*
-Piano_bar_engraver::get_span_bar_p () const
-{
- Span_bar *s= new Span_bar;
- s->set_empty (X_AXIS);
- s->set_elt_property ("glyph", gh_str02scm ("brace"));
- return s;
-}
-
-Span_bar*
-Staff_group_bar_engraver::get_span_bar_p () const
-{
- Span_bar *s= new Span_bar;
- s->set_empty (X_AXIS);
- s->set_elt_property ("glyph", gh_str02scm ("bracket"));
-
- SCM collapse = get_property ("bracketCollapseHeight");
- if (gh_number_p (collapse))
- s->set_elt_property ("collapse-height", collapse);
- else
- s->set_elt_property ("collapse-height", gh_double2scm (1));
-
- return s;
-}
-
-void
-Staff_group_bar_engraver::acknowledge_element (Score_element_info i)
-{
- Base_span_bar_engraver::acknowledge_element (i);
-
- /*
- UGH. This has to go into the backend.
- */
- if (Span_bar * b = dynamic_cast<Span_bar *> (i.elem_l_))
- {
- SCM gl = b->get_elt_property ("glyph");
- if (gh_string_p (gl) && ly_scm2string (gl) == "brace")
- b->translate_axis ( -paper_l ()->get_var ("interline"),
- X_AXIS); // ugh
- }
-}
-
-ADD_THIS_TRANSLATOR (Piano_bar_engraver);
-ADD_THIS_TRANSLATOR (Staff_group_bar_engraver);
-ADD_THIS_TRANSLATOR (Span_score_bar_engraver);
-
* merge with/derive from/add functionality to Bar_script_engraver
*/
-/**
- Hang on left edge of staff to provide suppor for simple items.
- */
-class Left_edge_item : public Item
-{
-public:
- VIRTUAL_COPY_CONS (Score_element);
-};
/**
put (instrument) text to left of line
private:
String type_;
Text_item* text_p_;
- Left_edge_item* left_edge_p_;
+ Item* left_edge_p_;
void create_text (SCM);
};
create_text (s);
if (Span_bar* s= dynamic_cast<Span_bar*> (b))
{
- assert (text_p_);
text_p_->set_parent (s, Y_AXIS);
}
}
if (!text_p_)
{
assert (!left_edge_p_);
- Left_edge_item* l = new Left_edge_item;
-
- l->set_elt_property ("breakable", SCM_BOOL_T);
- l->set_elt_property ("break-aligned", SCM_BOOL_T);
+ left_edge_p_ = new Item;
+ left_edge_p_->set_elt_property ("breakable", SCM_BOOL_T);
+ left_edge_p_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Left_edge_item"));
- announce_element (Score_element_info (l, 0));
+ announce_element (Score_element_info (left_edge_p_, 0));
- Staff_symbol_referencer_interface sl (l);
+ Staff_symbol_referencer_interface sl (left_edge_p_);
sl.set_interface ();
- left_edge_p_ = l;
Text_item* t = new Text_item;
t->set_elt_property ("self-alignment-Y", gh_int2scm (0));
t->add_offset_callback (Side_position_interface::aligned_on_self, Y_AXIS);
- t->set_parent (l, X_AXIS);
- t->set_parent (l, Y_AXIS);
+ t->set_parent (left_edge_p_, X_AXIS);
+ t->set_parent (left_edge_p_, Y_AXIS);
// 'just to be sure': see Clef_item::do_add_processing
- l->add_dependency (t);
+ left_edge_p_->add_dependency (t);
/*
else
{
side_position (t).set_axis (X_AXIS);
- side_position (t).add_support (l);
+ side_position (t).add_support (left_edge_p_);
Direction d;
if (isdir_b (s))
scm_eval (ly_symbol2scm ("begin-of-line-visible")));
typeset_element (text_p_);
text_p_ = 0;
- assert (left_edge_p_);
+
typeset_element (left_edge_p_);
left_edge_p_ = 0;
}
--- /dev/null
+/*
+ system-start-delimiter-engraver.cc -- implement System_start_delimiter_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+
+#include "system-start-delimiter.hh"
+#include "engraver.hh"
+#include "staff-symbol.hh"
+#include "group-interface.hh"
+#include "paper-column.hh"
+#include "paper-def.hh"
+
+/*
+ TODO: rename this to system-open-engraver (or whatever.)
+
+ */
+class System_start_delimiter_engraver : public Engraver
+{
+public:
+ VIRTUAL_COPY_CONS(Translator);
+ System_start_delimiter_engraver();
+
+ Spanner * spanbar_;
+protected:
+
+ virtual void acknowledge_element (Score_element_info);
+ virtual void do_creation_processing ();
+ virtual void do_removal_processing ();
+};
+
+ADD_THIS_TRANSLATOR(System_start_delimiter_engraver);
+
+
+void
+System_start_delimiter_engraver::acknowledge_element (Score_element_info inf)
+{
+ if (dynamic_cast<Staff_symbol*> (inf.elem_l_))
+ {
+ /*
+ don't add as Axis_group_interface (spanbar_).add_element (),
+ because that would set the parent as well */
+
+ Group_interface (spanbar_).add_element (inf.elem_l_);
+ }
+ else if (System_start_delimiter * b = dynamic_cast<System_start_delimiter *> (inf.elem_l_))
+ {
+ SCM gl = b->get_elt_property ("glyph");
+ SCM my_gl = get_property ("spanBarGlyph");
+
+ /*
+ UGH UGH
+ */
+ if (gh_symbol_p (gl) && gl == ly_symbol2scm ("brace")
+ && gh_symbol_p (my_gl) && my_gl == ly_symbol2scm ("bracket"))
+ b->translate_axis ( -paper_l ()->get_var ("interline"), X_AXIS); // ugh
+ }
+
+}
+
+System_start_delimiter_engraver::System_start_delimiter_engraver()
+{
+ spanbar_ = 0;
+}
+
+void
+System_start_delimiter_engraver::do_creation_processing()
+{
+ spanbar_ = new System_start_delimiter;
+ spanbar_->set_bound (LEFT, get_staff_info ().command_pcol_l ());
+ announce_element (Score_element_info (spanbar_,0));
+}
+
+void
+System_start_delimiter_engraver::do_removal_processing ()
+{
+ SCM s = get_property ("systemStartDelimiterGlyph");
+ if (gh_symbol_p (s))
+ {
+ spanbar_->set_elt_property ("glyph", s);
+ }
+
+ // ugh, should have naming without bracket
+ SCM collapse = get_property ("bracketCollapseHeight");
+ if (gh_number_p (collapse))
+ spanbar_->set_elt_property ("collapse-height", collapse);
+ else
+ spanbar_->set_elt_property ("collapse-height", gh_double2scm (1));
+
+ spanbar_->set_bound (RIGHT, get_staff_info ().command_pcol_l ());
+ typeset_element (spanbar_);
+}
+
--- /dev/null
+/*
+ system-start-delimiter.cc -- implement System_start_delimiter
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+#include <math.h>
+
+#include "system-start-delimiter.hh"
+#include "paper-def.hh"
+#include "molecule.hh"
+#include "axis-group-interface.hh"
+#include "lookup.hh"
+#include "all-font-metrics.hh"
+
+Molecule
+System_start_delimiter::staff_bracket (Real height) const
+{
+ Paper_def* p= paper_l ();
+ Real arc_height = p->get_var("bracket_arch_height");
+ SCM at = gh_list (ly_symbol2scm ("bracket"),
+ gh_double2scm (p->get_var("bracket_arch_angle")),
+ gh_double2scm (p->get_var("bracket_arch_width")),
+ gh_double2scm (arc_height),
+ gh_double2scm (p->get_var("bracket_width")),
+ gh_double2scm (height),
+ gh_double2scm (p->get_var("bracket_arch_thick")),
+ gh_double2scm (p->get_var("bracket_thick")),
+ SCM_UNDEFINED);
+
+ Real staff_space = p->get_var ("interline");
+ Real h = height + 2 * arc_height;
+ Box b (Interval (0, 1.5 * staff_space), Interval (-h/2, h/2));
+ Molecule mol (b, at);
+
+ mol.translate_axis (- mol.dim_[X_AXIS].length () / 2, X_AXIS);
+ return mol;
+}
+
+System_start_delimiter::System_start_delimiter ()
+{
+ set_empty (Y_AXIS);
+}
+
+Molecule
+System_start_delimiter::simple_bar (Real h) const
+{
+ Real w = paper_l ()->get_var ("barthick_score");
+ return lookup_l ()->filledbox (Box (Interval(0,w), Interval(-h/2, h/2)));
+}
+
+
+Molecule
+System_start_delimiter::do_brew_molecule ()const
+{
+ Interval ext = Axis_group_interface::group_extent_callback (dim_cache_[Y_AXIS]);
+ Real l = ext.length ();
+ Molecule m;
+
+ SCM s = get_elt_property ("collapse-height");
+ if (gh_number_p (s) && l < gh_scm2double (s))
+ {
+ System_start_delimiter * me = (System_start_delimiter*)this;
+ me->set_elt_property ("transparent", SCM_BOOL_T);
+ me->set_empty (X_AXIS);
+ me->set_empty (Y_AXIS);
+ return m;
+ }
+
+
+ s = get_elt_property ("glyph");
+ if (gh_symbol_p (s) && s == ly_symbol2scm ("bracket"))
+ m = staff_bracket (l);
+ else if (gh_symbol_p (s) && s == ly_symbol2scm ("brace"))
+ m = staff_brace (l);
+ else
+ m = simple_bar (l);
+
+
+ m.translate_axis (ext.center (), Y_AXIS);
+ return m;
+}
+
+/*
+ ugh. Suck me plenty.
+ */
+Molecule
+System_start_delimiter::staff_brace (Real y) const
+{
+ Real staffht = paper_l ()->get_var ("staffheight");
+ int staff_size = int (rint (staffht ));
+
+ // URG
+ Real step = 1.0;
+ int minht = 2 * staff_size;
+ int maxht = 7 * minht;
+ int idx = int (((maxht - step) <? y - minht) / step);
+ idx = idx >? 0;
+
+ SCM l = scm_eval (gh_list (ly_symbol2scm ("style-to-cmr"),
+ ly_str02scm ("brace"),
+ SCM_UNDEFINED));
+
+ String nm = "feta-braces";
+ if (l != SCM_BOOL_F)
+ nm = ly_scm2string (gh_cdr (l));
+ nm += to_str (staff_size);
+ SCM e =gh_list (ly_symbol2scm ("char"), gh_int2scm (idx), SCM_UNDEFINED);
+ SCM at = (e);
+
+ at = fontify_atom (find_font (nm), at);
+
+ Box b (Interval (0,0), Interval (-y/2, y/2));
+
+ return Molecule(b, at);
+}
+
time_signature_p_->set_elt_property ("fraction",
gh_cons (gh_int2scm (req->beats_i_),
gh_int2scm (req->one_beat_i_)));
- time_signature_p_->set_elt_property ("break-aligned", SCM_BOOL_T);
+ time_signature_p_->set_elt_property ("break-align-symbol", ly_symbol2scm( "Time_signature"));
}
{
bar_req_l_ = 0;
Timing_translator::do_post_move_processing ();
+
}
bool
return Timing_translator::do_try_music (m);
}
+#if 0
+String
+Timing_engraver::do_process_music ()
+{
+ if (gh_string_p (get_property ("barType")))
+ ;
+ else if (!now_mom ())
+ {
+ daddy_trans_l_->set_property ("barType", ly_str02scm ("|"));
+ }
+ else
+
+ {
+ }
+}
+#endif
String
}
}
+Translator_group*
+Translator_group::where_defined (SCM sym) const
+{
+ if (properties_dict_.elem_b (sym))
+ {
+ return (Translator_group*)this;
+ }
+
+ return (daddy_trans_l_) ? daddy_trans_l_->where_defined (sym) : 0;
+}
+
SCM
Translator_group::get_property (SCM sym) const
{
{
properties_dict_.set (ly_symbol2scm (id.ch_C()), val);
}
+
%{
- The Staff_margin_engraver puts the name of the instrument
+ The Instrument_name_engraver puts the name of the instrument
(\property Staff.instrument; Staff.instr for subsequent lines)
to the left of a staff.
Usually, you only want this in the full score, not in the parts.
- \consists "Staff_margin_engraver";
+ \consists "Instrument_name_engraver";
%}
defaultClef = #"treble"
\translator {
\type "Engraver_group_engraver";
\name ChoirStaff;
- alignmentReference = \center;
- \consists "Staff_group_bar_engraver";
+ alignmentReference = \center;
+ \consists "System_start_delimiter_engraver";
+ systemStartDelimiterGlyph = #'bracket
+
\accepts "Staff";
\type "Engraver_group_engraver";
\name GrandStaff;
\consists "Span_bar_engraver";
- \consists "Piano_bar_engraver";
+ \consists "System_start_delimiter_engraver";
+ systemStartDelimiterGlyph = #'brace
+
\consists "Property_engraver";
Generic_property_list = #generic-grand-staff-properties
\accepts "Staff";
\type "Engraver_group_engraver";
\consists "Span_bar_engraver";
\consists "Output_property_engraver";
- \consists "Staff_group_bar_engraver";
+ \consists "System_start_delimiter_engraver";
+ systemStartDelimiterGlyph = #'bracket
+
+
+ \consistsend "Axis_group_engraver" ;
+
\name StaffGroup;
\accepts "Staff";
\StaffContext
\remove "Axis_group_engraver";
\consistsend "Hara_kiri_engraver";
- \consists "Staff_margin_engraver";
+ \consists "Instrument_name_engraver";
\accepts "Voice";
};
%{
\consists "Output_property_engraver";
%bracketCollapseHeight = #10 % \pt
- \consists "Span_score_bar_engraver";
+ \consists "System_start_delimiter_engraver";
+
% \consists "Score_priority_engraver";
\consists "Break_align_engraver";
breakAlignOrder = #'(
- "Left_edge_item"
- "Span_bar"
- "Breathing_sign"
- "Clef_item"
- "Key_item"
- "Staff_bar"
- "Time_signature"
+ Instrument_name
+ Left_edge_item
+ Span_bar
+ Breathing_sign
+ Clef_item
+ Key_item
+ Staff_bar
+ Time_signature
)
\consists "Spacing_engraver";
\consists "Vertical_align_engraver";
markVisibilityFunction = #end-of-line-invisible
barNumberVisibilityFunction = #begin-of-line-visible
- marginVisibilityFunction = #begin-of-line-visible
};
\translator { \ScoreContext }
Begin3
Title: LilyPond
-Version: 1.3.41
-Entered-date: 30MAR00
+Version: 1.3.42
+Entered-date: 03APR00
Description:
Keywords: music notation typesetting midi fonts engraving
Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 1000k lilypond-1.3.41.tar.gz
+ 1000k lilypond-1.3.42.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 1000k lilypond-1.3.41.tar.gz
+ 1000k lilypond-1.3.42.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 1.3.41
+Version: 1.3.42
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.41.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.42.tar.gz
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
# Icon: lilypond-icon.gif
%prep
%setup
+
%build
-#./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --disable-optimise --enable-shared
+
%{configure} --disable-checking --disable-debugging --enable-printing --prefix=%{_prefix} --disable-optimise --enable-shared
+
make all
+
ln -s %{_prefix}/share/texmf/fonts/tfm/public/cm/ tfm
# urg
mkdir -p out/examples/
tar -cf - input/ | tar -C out/examples/ -xf- || true
+%ifos cygwin
+%{fix_suffixes}
+%endif
+
%post
touch /tmp/.lilypond-install
# hairy to hook it in (possibly non-existing) emacs
%doc mudela-mode.el
+%ifnos cygwin
%{_prefix}/bin/abc2ly
%{_prefix}/bin/convert-mudela
%{_prefix}/bin/mudela-book
%{_prefix}/bin/ly2dvi
%{_prefix}/bin/lilypond
%{_prefix}/bin/midi2ly
+%else
+%{_prefix}/bin
+%endif
+
%{_prefix}/man/man1/midi2ly.1
%{_prefix}/man/man1/lilypond.1
%{_prefix}/man/man1/mudela-book.1
%\notes \context Voice=clarinetti <
\notes \context Staff=clarinetti <
\time 4/4;
- \key F;
+ \key f;
\skip 1*341; \bar "|.";
\context VoiceOne=clarinettoi
\$clarinetto1
%{
Tested Features: multivoice accents lyrics chords piano music
multiple \paper{}s in one \score
-Note: Original key F.
+Note: Original key f.
%}
\version "1.3.4";
global = \notes {
\time 2/2;
\property Staff.timeSignatureStyle = "C"
- \key E;
+ \key e;
}
$upper_staff = \context Staff = upper {
global=\notes{
\time 4/4;
\property Staff.timeSignatureStyle="C"
- \key G;
+ \key g;
\skip 1*4; \bar "||";
\skip 1*4; \bar "||";
\skip 1*4; \bar "||";
global=\notes {
\time 6/4;
- \key Bes;
+ \key bes;
\skip 1.*12;
\bar "|.";
}
$global_i = \notes{
\time 12/8;
- \key G;
+ \key g;
}
global = \notes{
\time 4/4;
- \key D;
+ \key d;
}
\score{
global = \notes{
\time 3/4;
- \key F;
+ \key f;
}
\score{
global = \notes{
\time 4/4;
- \key F;
+ \key f;
}
\score{
;; Score_span_bars are only visible at start of line
;; i.e. if break_dir == RIGHT == 1
(define Span_bar_engraver-visibility begin-of-line-invisible)
-(define Base_span_bar_engraver-visibility begin-of-line-invisible)
(define mark-visibility end-of-line-invisible)
-(define Span_score_bar_engraver-visibility begin-of-line-visible)
-(define Piano_bar_engraver-visibility begin-of-line-visible)
-(define Staff_group_bar_engraver-visibility begin-of-line-visible)
;; Spacing constants for prefatory matter.
;;
;; (Measured in staff space)
(define space-alist
'(
- (("" "Left_edge_item") . (extra-space -15.0))
- (("" "Clef_item") . (minimum-space 1.0))
- (("" "Staff_bar") . (minimum-space 0.0))
- (("" "Clef_item") . (minimum-space 1.0))
- (("" "Key_item") . (minimum-space 0.5))
- (("" "Span_bar") . (extra-space 0.0))
- (("" "Time_signature") . (extra-space 0.0))
- (("" "begin-of-note") . (minimum-space 1.5))
- (("Clef_item" "Key_item") . (minimum-space 4.0))
- (("Key_item" "Time_signature") . (extra-space 1.0))
- (("Clef_item" "Time_signature") . (minimum-space 3.5))
- (("Staff_bar" "Clef_item") . (minimum-space 1.0))
- (("Clef_item" "Staff_bar") . (minimum-space 3.7))
- (("Time_signature" "Staff_bar") . (minimum-space 2.0))
- (("Key_item" "Staff_bar") . (extra-space 1.0))
- (("Span_bar" "Clef_item") . (extra-space 1.0))
- (("Clef_item" "Span_bar") . (minimum-space 3.7))
- (("Time_signature" "Span_bar") . (minimum-space 2.0))
- (("Key_item" "Span_bar") . (minimum-space 2.5))
- (("Staff_bar" "Time_signature") . (minimum-space 1.5)) ;double check this.
- (("Time_signature" "begin-of-note") . (extra-space 2.0)) ;double check this.
- (("Key_item" "begin-of-note") . (extra-space 2.5))
- (("Staff_bar" "begin-of-note") . (extra-space 1.0))
- (("Clef_item" "begin-of-note") . (minimum-space 5.0))
- (("" "Breathing_sign") . (minimum-space 0.0))
- (("Breathing_sign" "Key_item") . (minimum-space 1.5))
- (("Breathing_sign" "begin-of-note") . (minimum-space 1.0))
- (("Breathing_sign" "Staff_bar") . (minimum-space 1.5))
- (("Breathing_sign" "Clef_item") . (minimum-space 2.0))
+ ((none Instrument_name) . (extra-space 1.0))
+ ((Instrument_name Left_edge_item) . (extra-space 1.0))
+ ((Left_edge_item Clef_item) . (extra-space 1.0))
+ ((none Left_edge_item) . (extra-space 0.0))
+ ((Left_edge_item Staff_bar) . (extra-space 0.0))
+; ((none Left_edge_item) . (extra-space -15.0))
+; ((none Left_edge_item) . (extra-space -15.0))
+ ((none Clef_item) . (minimum-space 1.0))
+ ((none Staff_bar) . (minimum-space 0.0))
+ ((none Clef_item) . (minimum-space 1.0))
+ ((none Key_item) . (minimum-space 0.5))
+ ((none Time_signature) . (extra-space 0.0))
+ ((none begin-of-note) . (minimum-space 1.5))
+ ((Clef_item Key_item) . (minimum-space 4.0))
+ ((Key_item Time_signature) . (extra-space 1.0))
+ ((Clef_item Time_signature) . (minimum-space 3.5))
+ ((Staff_bar Clef_item) . (minimum-space 1.0))
+ ((Clef_item Staff_bar) . (minimum-space 3.7))
+ ((Time_signature Staff_bar) . (minimum-space 2.0))
+ ((Key_item Staff_bar) . (extra-space 1.0))
+ ((Staff_bar Time_signature) . (minimum-space 1.5)) ;double check this.
+ ((Time_signature begin-of-note) . (extra-space 2.0)) ;double check this.
+ ((Key_item begin-of-note) . (extra-space 2.5))
+ ((Staff_bar begin-of-note) . (extra-space 1.0))
+ ((Clef_item begin-of-note) . (minimum-space 5.0))
+ ((none Breathing_sign) . (minimum-space 0.0))
+ ((Breathing_sign Key_item) . (minimum-space 1.5))
+ ((Breathing_sign begin-of-note) . (minimum-space 1.0))
+ ((Breathing_sign Staff_bar) . (minimum-space 1.5))
+ ((Breathing_sign Clef_item) . (minimum-space 2.0))
)
)
-
+
+;; (define (ly-warn s) (error s))
(define (break-align-spacer this next)
- (let ((entry (assoc `(,this ,next) space-alist)))
+ (let ((entry (assoc (list this next) space-alist)))
(if entry
(cdr entry)
(begin (ly-warn (string-append "Unknown spacing pair `" this "', `" next "'"))
(define (break-barline glyph dir)
(let ((result (assoc glyph
'((":|:" . (":|" . "|:"))
- (";|;" . ("|." . ".|"))
("|" . ("|" . ""))
("|s" . (nil . "|"))
("|:" . ("|" . "|:"))
- (".|" . ("|" . ".|"))
("|." . ("|." . nil))
(":|" . (":|" . nil))
("||" . ("||" . nil))
fi
stepmake=`echo ${stepmake} | sed "s!\\\${prefix}!$presome!"`
+ # urg, how is this supposed to work?
+ if test "$program_prefix" = "NONE"; then
+ program_prefix=
+ fi
+ if test "$program_suffix" = "NONE"; then
+ program_suffix=
+ fi
+
echo $ac_n "checking Package""... $ac_c" 1>&6
-echo "configure:609: checking Package" >&5
+echo "configure:617: checking Package" >&5
if test "x$PACKAGE" = "xSTEPMAKE"; then
echo "$ac_t""Stepmake package!" 1>&6
fi
echo $ac_n "checking for stepmake""... $ac_c" 1>&6
-echo "configure:661: checking for stepmake" >&5
+echo "configure:669: checking for stepmake" >&5
# Check for installed stepmake
if test -d $stepmake; then
echo "$ac_t""$stepmake" 1>&6
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:783: checking host system type" >&5
+echo "configure:791: checking host system type" >&5
host_alias=$host
case "$host_alias" in
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:808: checking for $ac_word" >&5
+echo "configure:816: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:843: checking for $ac_word" >&5
+echo "configure:851: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:880: checking for $ac_word" >&5
+echo "configure:888: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:915: checking for $ac_word" >&5
+echo "configure:923: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:955: checking for $ac_word" >&5
+echo "configure:963: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_SHELL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:992: checking for $ac_word" >&5
+echo "configure:1000: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "${PYTHON:-python}", so it can be a program name with args.
set dummy ${PYTHON:-python}; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1033: checking for $ac_word" >&5
+echo "configure:1041: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
LN=cp # hard link does not work under cygnus-nt
LN_S='cp -r' # symbolic link does not work for native nt
ZIP="zip -r -9" #
- DOTEXE=.exe
+ program_suffix=.exe
# urg
# DIRSEP='\\'
# PATHSEP=';'
+
cat >> confdefs.h <<EOF
#define DIRSEP '${DIRSEP}'
EOF
echo $ac_n "checking language""... $ac_c" 1>&6
-echo "configure:1199: checking language" >&5
+echo "configure:1208: checking language" >&5
case "$language" in
En* | en* | Am* | am* | US* | us*)
lang=English;;
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1234: checking for $ac_word" >&5
+echo "configure:1243: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
s%@TAR@%$TAR%g
s%@BASH@%$BASH%g
s%@PYTHON@%$PYTHON%g
-s%@DOTEXE@%$DOTEXE%g
+s%@program_prefix@%$program_prefix%g
+s%@program_suffix@%$program_suffix%g
s%@ZIP@%$ZIP%g
s%@LN@%$LN%g
s%@LN_S@%$LN_S%g