SUBDIRS=man tex pictures topdocs ntweb
STEPMAKE_TEMPLATES=documentation
README_TOP_FILES=NEWS DEDICATION TODO ANNOUNCE-0.1
+# INFO_FILES = $(wildcard $(outdir)/$(package).info*)
EXTRA_DIST_FILES = gnu-music-history TODO
BLURBS=BLURB COPERTINA FLAPTEKST
-OUTTEXINFO_FILES = $(outdir)/topinfo.texinfo $(outdir)/mutopia.texinfo
include $(depth)/make/stepmake.make
default: do-doc
-# INFO_FILES = $(outdir)/$(package).info
-
-texinfo: $(OUTTEXINFO_FILES)
+texinfo: $(outdir)/$(package).info
It can be done! Occasionally, the Cygnus b19.1 cross compiler and
utilities under GNU/Linux are used to make the binary file(.exe.zip)
releases (some makefile hacking was needed to build this stuff). Jeffrey
-Reed tries to keep-up with LilyPond development, and is doing quite well.
+Reed tries to keep-up with LilyPond development, and is doing quite
+well. His latest release is available on
+lurl(http://www.realtime.net/~daboys/lilypond/).
subsect(UNPACKING)
$realinstall $args
)
-I place this in script file(~/bin). Having said that here is how one
-might build the em(gettext) package.
+I place this in script file(~/bin). The LilyPond configure, build,
+and install process handles this with it's own install script. In
+addition there are patches to the cygnus install command that also
+deals with this problem. Having said that, here is how one
+might build the em(gettext) package.
itemize(
it() download the package from one of the ftp sites.
subsubsect(Yodl Document Language)
lurl(http://www.xs4all.nl/~jantien/yodl/)
-Yodl for documentation in Lilypond. It is currently being updated by
+Yodl for documentation in LilyPond. It is currently being updated by
Jan Nieuwenhuizen. The development methodology of em(Yodl) as well as
em(LilyPond) relies on a the following directory structure:
that em(yodl) is not yet installed. This is normal and shouldn't be a
problem.
-subsubsect(Lilypond) label(lilybuild)
+subsubsect(LilyPond) label(lilybuild)
itemize(
it() download the package from
lurl(http://www.cs.uu.nl/people/hanwen/lilypond/) to
)
subsect(Running lilypond on Windows-NT) label(run)
-
-label(binary)
+
+We are now distributing a formated binary distribution for
+Windows-NT. Please refer to
+lurl(http://www.realtime.net/~daboys/lilypond/) for current news,
+download, installation, and running information.
Jeffrey B. Reed email(daboys@bga.com)
sect(RUNNING LILYPOND -- by Dominique Cretel)
+You may want to refer to section ref(run), for more current
+information about downloading, installing, and running the Windows-NT
+binary distribution.
+
enumerate(
-eit() First, I have download tha 0.1.64 version of Lilypond music software.
+eit() First, I have download tha 0.1.64 version of LilyPond music software.
eit() Then I extract it in a temp directory, and I move the directory
"lilypond-0.1.64" to the root directory of my D drive.
# Documentation/TODO
- * write toplevel info file
-
- * yodl2texinfo: automatic nodes and menus?
+ * overview and index of features
* get rid of pod manpage layout legacy
-
-
includefile(../stepmake/Documentation/layout.yo)
)
-~/usr/src/bin is in the PATH, and contains symlinks to the
-compiled executables.
+~/usr/src/bin is in the PATH, and contains symbolic links to the
+compiled executables.
question(Is there an emacs mode?)
you have an rpm it is in /usr/doc/lilypond-X/. You have to install it
yourself.
+question(How do i create the file(.tfm) files?)
+
+You don't. The file(.tfm) files should be generated automatically by
+Metafont when you run TeX(). Check your TeX() installation, or ask
+your local TeX() guru. The supplied file(.afm) files are intended to
+be used by LilyPond, not by any other programs.
+
+
+sect(Documentation)
+
+question(Why is the documentation/website/etc. so lousy?)
+
+LilyPond development is moving quite fast, documentation will often
+lag a bit behind. We must always make a choice between writing more
+doco, writing more code and answering email.
+
+If you think you can make a correction, or devised a solution that
+should be documented, please do so and send in a patch.
+
sect(Language: mudela)
question(Why can't you type code(#c) in stead of code(cis) ?)
default: do-doc
+$(outdir)/%.html: %.yo
+ $(sed-version) < $< > $<.out
+ $(YODL2HTML) -doutdir=$(outdir) --live-data=3 -o $@ $<.out
+ rm -f $<.out
+ $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) \
+ --index=http://www.cs.ruu.nl/people/hanwen/lilypond/index.html \
+ --news=$(depth)/NEWS $@
+
local-WWW:
mailto(daboys@bga.com)
article(LilyPond Windows NT 4.0 Distribution)(nemail(Jeffrey B. Reed)(daboys@bga.com))(label(contents))
-sect(Windows NT Distribution)
+sect(Windows NT Binary Distribution)
subsect(Introduction) label(introduction)
-This web page is dedicated to the distrubution of LilyPond for Windows
-NT 4.0. This package is covered under the GNU General Public License
-and all of the source and documentation are available on the official
-url(LilyPond
-Homepage)(http://www.cs.ruu.nl/people/hanwen/lilypond/index.html).
+This page is dedicated to the distribution of precompiled and preformatted
+LilyPond binaries for Windows NT 4.0 . This package is covered under the
+GNU General Public License and all of the source and documentation are
+available on the official
+url(LilyPond Homepage)(http://www.cs.ruu.nl/people/hanwen/lilypond/index.html).
-LilyPond is the GNU Project music typesetter. This program can print
-beautiful sheet music from a music definition file. It can also play
-mechanical performances to a MIDI file. Features include multiple
-staffs, meters, clefs, keys, lyrics, versatile input language,
-cadenzas, beams, slurs, triplets, formatting scores, part
-extraction. It includes a nice font of musical symbols.
+includefile(../BLURB.in)
link(Back to top)(contents)
clearpage()
subsect(NEWS) label(news)
-
-Version 1.0.3 is available
+This is what the version @TOPLEVEL_VERSION@ brings:
+verb(
+top_of_NEWS
+)
link(Back to top)(contents)
clearpage()
subsect(Download) label(download)
itemize(
- it()lurl(lilypond-1.0.3.zip)
+ it()lurl(lilypond-@TOPLEVEL_VERSION@.bin.zip)
)
link(Back to top)(contents)
it()Set your path variable for lilypond and TeX
description(
dit(batch file)
- In a batch file you can add the following entry: nl()
- bf(set path=%path%em(LilyPond-dir)\bin;em(MiKTeX-dir)\miktex\bin)
- dit(Windows Environment)
+ In a batch file you can add the following entries: nl()
+ bf(set LILYPOND=em(LilyPond-dir)) nl()
+ bf(set path=%path%%LILYPOND%\bin;em(MiKTeX-dir)\miktex\bin) nl()
+ bf(set TEXINPUTS=%LILYPOND%\texmf\tex\lilypond;;) nl()
+ bf(set MFINPUTS=%LILYPOND%\texmf\mf\public\lilypond;;) nl()
+COMMENT( dit(Windows Environment)
In the Windows environment you can select
properties menu of the My Computer icon. Click on
the environment tag and add the following to the user
variables path entry. nl()
- bf(em(LilyPond-dir)\bin;em(MiKTeX-dir)\miktex\bin)
+ bf(em(LilyPond-dir)\bin;em(MiKTeX-dir)\miktex\bin))
) nl()
it() The first installation of LilyPond also requires these
additional steps:
subsect(Running LilyPond) label(running)
+
+itemize(
+ it()Take a look at url(angles.ly)(angles.ly)
+ it()Save angles.ly to your local disk
+ it()From a Command Prompt run: nl()
+ bf(ly2dvi.py angles.ly) nl()
+ bf(dvips angles.dvi) nl()
+ bf(cmd /c angles.ps) nl()
+)
+
link(Back to top)(contents)
clearpage()
link(Back to top)(contents)
clearpage()
+
sect(Properties)
-By default the same accidentals are valid for all octaves, but
- this can be changed with the property code(specialaccidentals).
+By default the same key signature is valid for all octaves, but
+ this can be changed with the property code(keyoctaviation).
The identifier code(\specialkey) sets the property for the Staff. A
-key with two flats in one octave and three
- sharps in the next can be declared with verb(\specialkey
-\accidentals bes es fis' cis' gis';)
+key with two flats in one octave and three sharps in the next can be
+declared with verb(\specialkey \keysignature bes es fis' cis' gis';)
sect(Music fragments)
label(tutorial:music-fragments)
TODO
+need to rethink paper size stuff?
+
+pipethrough(date) sucks.
+
+paragraphs have too much space.
+
in stead <-> instead
)
+COMMENT(
+ Mainly written by Han-Wen Nienhuys,
+
+ with help of (among others)
+
+ * Jan Nieuwenhuizen
+
+ * Lambert Meertens,
+
+ * Adrian Mariano
+
+ * Mats Bengtsson
+
+)
+
htmlbodyopt(bgcolor)(white)
htmlcommand(<font color=black>)
-latexpackage()(a4wide)
latexlayoutcmds(
-%\usepackage[latin1]{inputenc}
-\input mudela-book
+ \topmargin -0.25in
+ \textheight 53\baselineskip
+ \advance\textheight by \topskip
+ \marginparwidth 1 in % Width of marginal notes.
+ \oddsidemargin 0.25 in % Note that \oddsidemargin = \evensidemargin
+ \evensidemargin 0.25 in
+ \marginparwidth 0.75 in
+ \textwidth 5.875 in % Width of text line.
+ \input mudela-book
)
whenlatex(notableofcontents())
(Han-Wen Nienhuys and Jan Nieuwenhuizen)
(nop()PIPETHROUGH(date "+%B %d, %Y")()()nop())
-COMMENT(
-
-* paragraphs have too much space.
-
-)
-
latexcommand(\def\interexample{})
latexcommand(\def\preexample{\par})
should consult bind(Appendix)ref(glossary): it contains a glossary
of musical terms along with translations in some other languages.
-If you want to try the examples given here, you should have look a
+If you want to try the examples given here, you should have a
look at bind(Section)ref(sec:running-lilypond) first.
sect(Music copying, music definition and music entry)
\melodic { X Y Z }
\paper {}
})
-We will continue to leave out the red tape this, until the time is fit to explain what the
-above it means.
+We will continue to leave out the red tape this, until the time is right to explain what
+it means.
Because LilyPond uses a language, it is a so called em(batch)
This means, that you use a
text editor (such as code(emacs) or code(vi)) to create an input
file. When you are done editing your input file, you save it, and you
-run LilyPond on the file. If Lily finds any errors in your input file
+run LilyPond on the file. If LilyPond finds any errors in your input file
then nop(she)footnote(We're sure that if computer programs could have
gender, LilyPond would be a female computer program. So we will
refer to the program as a she. This gender-bending is not to tease
you can process further to view or print.
Using LilyPond to print or view some music is a four-step procedure.
-To get you started we'll run down the full procedure for you once.
+To get you started we'll run down the full procedure for you.
enumerate(
it()
If you entered this, you probably made some little errors with the
right amount of quotes as well. To remedy this, mudela has another
-feature called `relative octaves', which reduces the amount of quotes
+feature called `relative octaves', which reduces the number of quotes
needed. If you want to enter large pieces of music em(now) we
recommend you make an excursion to
bind(Section)ref(sec:relativeoctaves) and learn about relative
is the name of the corresponding major key. The key of C-minor can
thus be specified as `code(\key es)'.
-dit(code(\accidentals) var(pitchlist))
+dit(code(\keysignature) var(pitchlist))
-This command changes the current key signature. The signature is
-given in the form of a list of accidentals, which can be useful for
-unconventional keys. The key of C-minor can be specified as
-`code(\accidentals bes es as)'. The command `code(\accidentals fis es
-bis)' provides a more exotic example.
+This command changes the current key signature. Unlike the
+`code(\key)' command, this command can produce arbitrary key
+signatures, which can be useful for unconventional keys or modes. The
+key signature is given in the form of a list of notes. The notes will
+be printed in the key signature in the order that they appear on the list.
+For example, the key
+of C-minor can be specified as `code(\accidentals bes es as)'. The
+command `code(\accidentals fis es bis)' provides a more exotic
+example.
dit(code(\time) var(numerator)code(/)var(denominator))
- This command chages the current time signature. LilyPond uses the
+ This command changes the current time signature. LilyPond uses the
time signature to
calculate where to place the bars that start a measure. These bars
in turn are the places where a system can be broken into lines.
measure.
dit(code(\bar) var(bartype))
- This command lets you print special bar lines, such as repeats. You
- can also use it to allow line breaks when entering cadenzas. The
- argument var(bartype) is a string that describes what kind of bar line to print.
+ This command lets you print special bar
+ lines and repeat symbols. You can also use it to allow line breaks
+ when entering cadenzas. The argument var(bartype) is a string that
+ describes what kind of bar line to print.
mudela(fragment,verbatim)(
\bar "|:"; c'4 \bar ":|:"; c'4 \bar ":|"; c'4 \bar "||";
c'4 \bar "empty"; c'4 \bar "|.";
)
The command `code(\bar "empty")' does not create any visible bar
- line, but it does tells LilyPond to allow a linebreak
- at that position.
+ line, but it does tells LilyPond to allow a linebreak
+ at that position. The `code(\bar)' command prints the specified
+ symbol immediately. If you give a `code(\bar)' command at the end
+ of a measure then
+ the specified symbol replaces the automatic bar line; otherwise
+ the specified symbol appears in the middle of the measure. The
+ code(\bar) command does not affect metric structure.
+
+
dit(code(\partial) var(duration)) some music starts with a measure that
isn't fully filled, a so-called upstep. The code(\partial) command
allows you to make
upsteps. The argument is a duration similar to the duration of a note.
+The `code(\partial)' command cannot be used to generate partial
+measures in the middle of the music.
Example:
mudela(fragment,verbatim)(
\time 4/4;
and an edited edition from em(one source). We will use the first few
bars of bind(J.)bind(S.)Bach's lovely Cello suite bind(no.)I to
demonstrate this. The example makes heavy use of space rests: a space
-rest is a like a rest that doesn't print anything. It can be used as
-a placeholder, to attach articulation marks to. It is entered as a
-note with the name code(s).
+rest takes up time, like a rest does, but it doesn't print anything.
+It can be used as a placeholder, to attach articulation marks to. It
+is entered as a note with the name code(s).
mudela(verbatim)(
bach = \melodic { [c16 g e' d'] [e' g e' g] }
article(AUTHORS - who did what on GNU LilyPond?)()()
-This file lists authors of GNU LilyPond, and what they wrote.
-This list is alphabetically ordered.
+This file lists authors of GNU LilyPond, and what they wrote. This
+list is alphabetically ordered.
itemize(
it()nemail(Mats Bengtsson)(matsb@s3.kth.se),
it()nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl),
lurl(http://www.cs.uu.nl/~hanwen)
nl()
- Main author.
+ Main author (initials: HWN).
it()nemail(Jan Nieuwenhuizen)(janneke@gnu.org),
lurl(http://www.xs4all.nl/~jantien)
nl()
- Main author
+ Main author (initials: JCN).
it()nemail(Alexandre Oliva)(oliva@dcc.unicamp.br),
lurl(http://sunsite.unicamp.br/~oliva)
testing
(PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and
Solaris.
+it()Lots of disk space: LilyPond takes between 50 and 100 mb to
+compile if you use debugging information. If you are short on
+disk-space run configure with code(--disable-debugging).
+
Although we recommend to use Unix, LilyPond is known to run on Windows
NT/95/98 as well. See Section ref(w32).
it() GNU C++ version 2.7 or newer (2.8 and egcs are also fine).
-it() Python 1.5
+it() Python 1.5 (Strictly speaking, you shouldn't need Python for
+ compiling and installing, but you'll need it to regenerate the font
+ tables, e.g.).
)
sect(RUNNING)
itemize(
it()GNU make.
+Check out lurl(ftp://ftp.gnu.org)
+or any mirror of this site.
+
it()Flex (version 2.5.4 or newer).
+Check out lurl(ftp://ftp.gnu.org)
+or any mirror of this site.
it()Bison (version 1.25 or newer).
-it()Python (version 1.5 or newer).
+Check out lurl(ftp://ftp.gnu.org)
+or any mirror of this site.
+
+it()Python (version 1.5 or newer). Check out
+lurl(ftp://ftp.python.org) or lurl(ftp://ftp.cwi.nl/pub/python).
+
it()Yodl. All documentation will be in Yodl. (1.30.17)
lurl(ftp://pcnov095.win.tue.nl/pub/yodl)
lurl(http://www.cs.uu.nl/~hanwen/yodl)
it()Texinfo. (version 3.12 or newer)
it()GNU find
+Check out lurl(ftp://ftp.gnu.org)
+or any mirror of this site
+
+
it() A fast computer (a full page of music typically takes 1 minute on my
486/133, using the bf(--enable-checking) compile. It's lot slower than
most MusiXTeX preprocessors)
verb(
configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking
- make configuration=optprof
- make configuration=optprof install
+ make config=optprof
+ make config=optprof install
)
Most of the items are marked in the code as well, with full explanation.
grep for TODO and ugh/ugr/urg
- * add ex-dimension to feta-params.
+ * use streambufs to provide IO handling for TeX stream, mudela stream,
+data-file.
+ * seriously buffer TeX output (do profile of writing .5 mb TeX file.)
* strip EXEs before installing
+ * zip target for binary windows dist (JBR)
+
+ * repeat bars: need distance after ":|" and before "|:"
+
+ * doco should not depend on a4
+
* text continuationss
* fix plain tex footer line.
- * portable libs for flowerlib/lilylib
-
* install TeX stuff into tex/generic directory.
* preformatted .info stuff.
* make new VoiceOne, VoiceTwo, VoiceThree contexts with
ydirection and hshift preset
- * StepMake install
- - /usr/bin/make-patch?
-
* *.yo: fix pod manpage layout legacy
* text-items clash with stems/beams
- plet -> tuplet
- measure -> bar
- abbreviation-beam -> (measured/unmeasured) tremolo
+ - partial -> anacrouse
* libtoolize flowerlib
* clefs (AG): The "8" should appear closer to the actual clef,
touching it.
- * give Items/Spanners access to unbroken originals
-
* scoping for properties?
{ c4
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=0
-PATCH_LEVEL=4
+PATCH_LEVEL=6
MY_PATCH_LEVEL=
-# use the above to send patches, always empty for released version:
-# please don't move these comments up; the patch should fail if
+# use the above to send patches: MY_PATCH_LEVEL is always empty for a
+# released version.
+#
+# Please don't move these comments up; the patch should fail if
# the previous version was wrong.
+dnl WARNING WARNING WARNING WARNING
+dnl do not edit! this is aclocal.m4, generated from stepmake/stepmake/../aclocal.m4
dnl aclocal.m4 -*-shell-script-*-
dnl StepMake subroutines for configure.in
AC_DEFUN(AC_STEPMAKE_COMPILE, [
# -O is necessary to get inlining
- OPTIMIZE="-O"
+ OPTIMIZE=""
+ CXXFLAGS=${CXXFLAGS:-""}
checking_b=yes
- optimise_b=tja
+ optimise_b=no
profile_b=no
debug_b=yes
[checking_b=$enableval] )
# actually, the default is: tja='-O' to get inlining...
- # off=''
+ # off='' --jcn
+
+ #actually, that sucks.
+ # tja looks like a typo. Default is optimisation off. --hwn
+
AC_ARG_ENABLE(optimise,
[ enable-optimise use maximal speed optimisations. Default: off],
[optimise_b=$enableval])
fi
if test "$optimise_b" = yes; then
- DEFINES="$DEFINES -finline-functions"
- OPTIMIZE="-O2"
+ OPTIMIZE="-O2 -finline-functions"
fi
if test "$optimise_b" = no; then
if test $profile_b = yes; then
EXTRA_LIBES="-pg"
- DEFINES="$DEFINES -pg"
+ OPTIMIZE="$OPTIMIZE -pg"
fi
if test $debug_b = yes; then
- DEFINES="$DEFINES -g"
+ OPTIMIZE="$OPTIMIZE -g"
fi
# however, C++ support in mingw32 v 0.1.4 is still flaky
AC_CHECK_HEADER(FlexLexer.h, true,
AC_STEPMAKE_WARN(can"\'"t find flex header. Please install Flex headers correctly))
- CXXFLAGS="$DEFINES $OPTIMIZE"
+ CPPFLAGS="$CPPFLAGS $DEFINES"
+ CXXFLAGS="$CXXFLAGS $OPTIMIZE"
LDFLAGS=$EXTRA_LIBES
AC_SUBST(CXXFLAGS)
AC_DEFUN(AC_STEPMAKE_END, [
AC_OUTPUT($CONFIGFILE.make:config.make.in)
- rm -f Makefile
- cp make/toplevel.make.in ./Makefile
- chmod 444 Makefile
+ rm -f GNUmakefile
+ cp make/toplevel.make.in ./GNUmakefile
+ chmod 444 GNUmakefile
])
AC_DEFUN(AC_STEPMAKE_GXX, [
stepmake=stepmake
AC_SUBST(stepmake)
+ STATE_VECTOR=`ls make/STATE-VECTOR 2>/dev/null`
+ if test "x$STATE_VECTOR" != "x"; then
+ STATE_VECTOR="\$(depth)/$STATE_VECTOR"
+ fi
+ AC_SUBST(STATE_VECTOR)
+
CONFIGSUFFIX=
AC_ARG_ENABLE(config,
[ enable-config=FILE put configure settings in config-FILE.make],
AC_CHECK_SEARCH_RESULT($PYTHON, python, You should install Python)
if test "x$OSTYPE" = "xcygwin32" || test "x$OSTYPE" = "xWindows_NT"; then
- LN=cp # hard link does not work under cygnus-nt (yet?)
+ LN=cp # hard link does not work under cygnus-nt
+ LN_S=cp # symbolic link does not work for native nt
ZIP="zip -r -9" #
DOTEXE=.exe
- INSTALL="\$(stepdir)/../bin/install-dot-exe.sh -c"
+ DIRSEP='\\'
+ PATHSEP=';'
+ INSTALL="\$(stepdir)/../bin/install-dot-exe.sh -c"
else
+ DIRSEP='/'
+ PATHSEP=':'
LN=ln
+ LN_S='ln -s'
ZIP="zip -r -9"
INSTALL="\$(stepdir)/../bin/install-sh -c"
fi
AC_SUBST(DOTEXE)
AC_SUBST(ZIP)
AC_SUBST(LN)
+ AC_SUBST(LN_S)
AC_SUBST(INSTALL)
-
+ AC_DEFINE_UNQUOTED(DIRSEP, '${DIRSEP}')
+ AC_DEFINE_UNQUOTED(PATHSEP, '${PATHSEP}')
+
+
AC_STEPMAKE_DATADIR
])
/* define if explicit instantiation is needed */
#undef NEED_EXPLICIT_INSTANTIATION
+/* define directory and path separators */
+#define DIRSEP '@DIRSEP@'
+#define PATHSEP '@PATHSEP@'
package = @package@
PACKAGE_NAME = @PACKAGE_NAME@
stepmake = @stepmake@
+state-vector = @STATE_VECTOR@
CONFIGSUFFIX = @CONFIGSUFFIX@
MAKEINFO = @MAKEINFO@
ICFLAGS = @ICFLAGS@
FIND = @FIND@
FLEX = @FLEX@
LN = @LN@
+LN_S = @LN_S@
MSGFMT = @MSGFMT@
PERL = @PERL@
PYTHON = @PYTHON@
path.cc - manipulation of paths and filenames.
*/
#include <stdio.h>
+#include "config.hh"
#include "file-path.hh"
#include "flower-debug.hh"
% Toplevel initialisation file.
-\version "1.0.0";
+\version "1.0.1";
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.0.0";
+\version "1.0.1";
\include "declarations.ly";
% Toplevel initialisation file.
-\version "1.0.0";
+\version "1.0.1";
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.0.0";
+\version "1.0.1";
\include "declarations.ly"
--- /dev/null
+%{
+ abbreviations of english names for notes
+
+ %}
+
+\notenames {
+ cff = \musicalpitch { -1 0 -2 }
+ cf = \musicalpitch { -1 0 -1 }
+ c = \musicalpitch { -1 0 0 }
+ cs = \musicalpitch { -1 0 1 }
+ css = \musicalpitch { -1 0 2 }
+ dff = \musicalpitch { -1 1 -2 }
+ df = \musicalpitch { -1 1 -1 }
+ d = \musicalpitch { -1 1 0 }
+ ds = \musicalpitch { -1 1 1 }
+ dss = \musicalpitch { -1 1 2 }
+ eff = \musicalpitch { -1 2 -2 }
+ ef = \musicalpitch { -1 2 -1 }
+ e = \musicalpitch { -1 2 0 }
+ es = \musicalpitch { -1 2 1 }
+ ess = \musicalpitch { -1 2 2 }
+ fff = \musicalpitch { -1 3 -2 }
+ ff = \musicalpitch { -1 3 -1 }
+ f = \musicalpitch { -1 3 0 }
+ fs = \musicalpitch { -1 3 1 }
+ fss = \musicalpitch { -1 3 2 }
+ gff = \musicalpitch { -1 4 -2 }
+ gf = \musicalpitch { -1 4 -1 }
+ g = \musicalpitch { -1 4 0 }
+ gs = \musicalpitch { -1 4 1 }
+ gss = \musicalpitch { -1 4 2 }
+ aff = \musicalpitch { -1 5 -2 }
+ af = \musicalpitch { -1 5 -1 }
+ a = \musicalpitch { -1 5 0 }
+ as = \musicalpitch { -1 5 1 }
+ ass = \musicalpitch { -1 5 2 }
+ bff = \musicalpitch { -1 6 -2 }
+ bf = \musicalpitch { -1 6 -1 }
+ b = \musicalpitch { -1 6 0 }
+ bs = \musicalpitch { -1 6 1 }
+ bss = \musicalpitch { -1 6 2 }
+
+
+ %
+ % upper case: 1 octave lower.
+ %
+
+
+ Cff = \musicalpitch { -2 0 -2 }
+ Cf = \musicalpitch { -2 0 -1 }
+ C = \musicalpitch { -2 0 0 }
+ Cs = \musicalpitch { -2 0 1 }
+ Css = \musicalpitch { -2 0 2 }
+ Dff = \musicalpitch { -2 1 -2 }
+ Df = \musicalpitch { -2 1 -1 }
+ D = \musicalpitch { -2 1 0 }
+ Ds = \musicalpitch { -2 1 1 }
+ Dss = \musicalpitch { -2 1 2 }
+ Eff = \musicalpitch { -2 2 -2 }
+ Ef = \musicalpitch { -2 2 -1 }
+ E = \musicalpitch { -2 2 0 }
+ Es = \musicalpitch { -2 2 1 }
+ Ess = \musicalpitch { -2 2 2 }
+ Fff = \musicalpitch { -2 3 -2 }
+ Ff = \musicalpitch { -2 3 -1 }
+ F = \musicalpitch { -2 3 0 }
+ Fs = \musicalpitch { -2 3 1 }
+ Fss = \musicalpitch { -2 3 2 }
+ Gff = \musicalpitch { -2 4 -2 }
+ Gf = \musicalpitch { -2 4 -1 }
+ G = \musicalpitch { -2 4 0 }
+ Gs = \musicalpitch { -2 4 1 }
+ Gss = \musicalpitch { -2 4 2 }
+ Aff = \musicalpitch { -2 5 -2 }
+ Af = \musicalpitch { -2 5 -1 }
+ A = \musicalpitch { -2 5 0 }
+ As = \musicalpitch { -2 5 1 }
+ Ass = \musicalpitch { -2 5 2 }
+ Bff = \musicalpitch { -2 6 -2 }
+ Bf = \musicalpitch { -2 6 -1 }
+ B = \musicalpitch { -2 6 0 }
+ Bs = \musicalpitch { -2 6 1 }
+ Bss = \musicalpitch { -2 6 2 }
+
+
+}
% Toplevel initialisation file.
-\version "1.0.0";
+\version "1.0.1";
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.0.0";
+\version "1.0.1";
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.0.0";
+\version "1.0.1";
\include "declarations.ly";
-\version "1.0.0";
+\version "1.0.1";
paper_sixteen = \paper {
staffheight = 16.0\pt;
\include "table13.ly";
\include "table16.ly";
-\version "1.0.0";
+\version "1.0.1";
paper_twenty = \paper {
staffheight = 20.0\pt;
ydirection 1 force stem up \stemup
pletvisibility 0 show nothing
pletvisibility 1 show number
-pletvisibility 2 show number, and bracket-if-no-beam
+pletvisibility 2 show (number and bracket)-if-no-beam
+pletvisibility 3 show number, and bracket-if-no-beam
pletvisibility 4 show number, and bracket
slurdash 0 normal slurs
beamquantisation 2 quantise avoide wedge2) \beampostraditional
[Staff]
-specialaccidentals 0 Accidental for all octaves \normalkey
-specialaccidentals 1 Accidental only for specified octave \specialkey
+keyoctaviation 0 Key signature only for specified octave \specialkey
+keyoctaviation 1 Key signature for all octaves \normalkey
[Staff?]
\property Voice.pletvisibility = 0
}
pleton = {
- \property Voice.pletvisibility = 2
+ \property Voice.pletvisibility = 3
}
tiny = {
\property Voice.fontsize= "-2"
ecarg = \melodic {
\property Voice.pletvisibility = 0
\]
- \property Voice.pletvisibility = 2
+ \property Voice.pletvisibility = 3
}
%}
normalkey = {
- \property Staff.specialaccidentals = 0
+ \property Staff.keyoctaviation = 1
}
specialkey = {
- \property Staff.specialaccidentals = 1
+ \property Staff.keyoctaviation = 0
}
-\version "1.0.0";
+\version "1.0.1";
blah = \melodic {
\transpose c'' {
\time 4/4;
- \accidentals es;
+ \keysignature es;
[cis8 d e f] [e! a b cis'] |
es e f e a a' a a' |
\clef "bass"; }
[es16 c' b a] [g f es d] [c d es d] [c Bes As G] |
\clef "violin";
- \accidentals c;
+ \keysignature c;
cis4 c cis cis |
<cis dis eis fes ges> cis dis2 ~ |
\time 2/4 ;
Tested Features: example file with comments
%}
-\version "1.0.0";
+\version "1.0.1";
% the % is a comment.
% \lbheel \lbheel \lfheel \lftoe
% \rbheel \rbtoe \rfheel \rftoe
-\version "1.0.0";
+\version "1.0.1";
\score{
\melodic {
* organ staff...
%}
-\version "1.0.0";
+\version "1.0.1";
-\version "1.0.0";
+\version "1.0.1";
ritme = \melodic\transpose c'' {
\partial 8;
% scales with accents.
%
-\version "1.0.0";
+\version "1.0.1";
blah = \melodic {
\time 6/8;
\transpose c {
-\version "1.0.0";
+\version "1.0.1";
blah = \melodic{ \transpose c'' {
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.0";
+\version "1.0.1";
shortlong = \melodic\transpose c'{
c4()c( c c |
TestedFeatures = "beams and beamflags";
}
-\version "1.0.0";
+\version "1.0.1";
\score{
<
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.0";
+\version "1.0.1";
shortlong = \melodic{
c4()c( c c |
copyright = "public domain";
Tested = "test the Collision resolution ";
}
-\version "1.0.0";
+\version "1.0.1";
\include "paper20.ly"
-\version "1.0.0";
+\version "1.0.1";
oden = \lyric{
O8 |
-\version "1.0.0";
+\version "1.0.1";
FontBody= \melodic\transpose c''{
\bar "|:";
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.0";
+\version "1.0.1";
\include "font-body.ly"
\score{
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.0";
+\version "1.0.1";
\include "font-body.ly"
\score{
TestedFeatures = "This file tests some nasty Gourlay spacings";
}
-\version "1.0.0";
+\version "1.0.1";
%{
-\version "1.0.0";
+\version "1.0.1";
\score{
\melodic\relative c'{
[c16 \stemdown c'' \stemboth c,, d]
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.0";
+\version "1.0.1";
shortlong = \melodic{
c4()c( c c |
% test damping
-\version "1.0.0";
+\version "1.0.1";
\score{
\melodic\relative c'{
-\version "1.0.0";
+\version "1.0.1";
\score{
\melodic\transpose c'{
TestedFeatures = "This file tests various spacings";
}
-\version "1.0.0";
+\version "1.0.1";
multipart = \melodic{
\type StaffGroup <
}
-\version "1.0.0";
+\version "1.0.1";
beamintervals = \melodic{
\time 7/4;
instrument= "Instrument";
}
-\version "1.0.0";
+\version "1.0.1";
\score{
\melodic
Hi all,
I have extend Mats' patches to allow accidental transposition:
- \accidentals bes es fis;
+ \keysignature bes es fis;
= \transpose d =>
- \accidentals gis;
+ \keysignature gis;
As you can see in output the example file "test.ly" there are a few problems left:
- key undo (already in the Todo)
}
-\version "1.0.0";
+\version "1.0.1";
vOne = \melodic \relative c''{
\clef"violin";
vThree = \melodic \relative c''{
\clef"violin";
- \accidentals fis cis;
+ \keysignature fis cis;
\time 2/4 ;
d4 d |
- \accidentals bes es fis;
+ \keysignature bes es fis;
fis4 fis |
- \accidentals fis cis gis dis ais eis;
+ \keysignature fis cis gis dis ais eis;
cis4 ais4 |
}
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.0";
+\version "1.0.1";
\score{
\melodic{
Tested Features lyrics and chords
%}
-\version "1.0.0";
+\version "1.0.1";
melodie = \melodic\relative c {
\clef"violin";
Tested Features: lyrics, interleaving lyrics and staffs
%}
-\version "1.0.0";
+\version "1.0.1";
melody = \melodic \relative c'' {
\clef violin;
$(outdir)/my-lily-parser.o: $(outdir)/parser.hh
$(outdir)/my-lily-lexer.o: $(outdir)/parser.hh
$(outdir)/lexer.o: $(outdir)/parser.hh
-
-
$(outdir)/lily-version.o: $(outdir)/version.hh
-
$(outdir)/main.o: $(outdir)/BLURB.hh $(outdir)/COPERTINA.hh $(outdir)/FLAPTEKST.hh
--- /dev/null
+#include "horizontal-group-element.hh"
+#include "interval.hh"
+#include "item.hh"
+#include "debug.hh"
+
+
+IMPLEMENT_IS_TYPE_B1(Horizontal_group_element, Axis_group_element);
+
+Horizontal_group_element::Horizontal_group_element ()
+ : Axis_group_element (X_AXIS,X_AXIS)
+{
+}
+
+Interval
+Horizontal_group_element::do_width() const
+{
+ return Graphical_axis_group::extent (X_AXIS);
+}
+
--- /dev/null
+
+#include "horizontal-vertical-group-element.hh"
+#include "interval.hh"
+#include "item.hh"
+#include "debug.hh"
+
+Horizontal_vertical_group_element::Horizontal_vertical_group_element()
+{
+ axis1_ = X_AXIS;
+ axis2_ = Y_AXIS;
+}
+
+
+
+IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group_element, Horizontal_group_element, Vertical_group_element);
class Horizontal_vertical_group_item : public Axis_group_item, public Horizontal_vertical_group_element {
protected:
virtual void do_print() const;
- virtual void do_unlink () { Horizontal_vertical_group_element::do_unlink (); }
+ virtual void do_unlink () {
+ Axis_group_item::do_unlink ();
+ }
SCORE_ELEMENT_CLONE(Horizontal_vertical_group_item);
public:
Horizontal_vertical_group_item ();
public:
Link_array<Spanner> attached_span_l_arr_;
Drul_array<Item*> broken_to_drul_;
+ Item *unbroken_original_l_;
/// should be put in a breakable col.
bool breakable_b_;
struct Atom;
struct Symtable;
struct Symtables;
-struct Super_elem;
+struct Super_element;
struct Translation_property;
struct Tempo_req;
struct Tex_stream;
struct Text_req;
struct Text_spanner;
struct Tie;
+struct Tex_outputter;
struct Tie_engraver;
struct Tie_req;
struct Time_description;
/*
- scoreline.hh -- part of GNU LilyPond
+ line-of-score.hh -- part of GNU LilyPond
(c) 1996--1998 Han-Wen Nienhuys
*/
#include "colhpos.hh"
#include "spanner.hh"
+#include "super-element.hh"
/// the columns of a score that form one line.
-class Line_of_score : public Spanner
+class Line_of_score : public Spanner , public Super_element
{
public:
Link_array<Paper_column> cols;
bool contains_b (Paper_column const *c) const;
Link_array<Line_of_score> get_lines() const;
- void set_breaking (Array<Column_x_positions> const&);
+ Line_of_score * set_breaking (Array<Column_x_positions> const&, int j) const;
protected:
virtual Link_array<Score_element> get_extra_dependencies () const;
virtual void do_unlink ();
virtual void do_junk_links ();
- virtual void break_into_pieces (bool);
+
virtual Interval do_width() const;
virtual void do_print() const;
SCORE_ELEMENT_CLONE(Line_of_score);
*/
class Paper_score : public Music_output {
- void tex_output ();
+ Tex_outputter *open_tex_outputter (Tex_stream*);
+ Tex_stream *open_output_stream ();
+
public:
Paper_def *paper_l_;
Pointer_list<Score_element*> elem_p_list_;
Outputter *outputter_l_;
- Super_elem *super_elem_l_;
-
+ Line_of_score * line_l_;
+
Paper_score ();
- /// add a line to the broken stuff. Positions given in #config#
- void set_breaking (Array<Column_x_positions> const &);
/// add to bottom of pcols
virtual ~Paper_score();
protected:
+
+
/* MAIN ROUTINES */
virtual void process();
// can't instantiate template with cygnus' gcc...
// virtual ~Paper_score();
private:
+
+ void remove_line (Line_of_score*);
/// before calc_breaking
void preprocess();
void calc_idealspacing();
/// calculate where the lines are to be broken, and use results
- void calc_breaking();
+ Array<Column_x_positions> calc_breaking();
/// after calc_breaking
void postprocess();
virtual void print () const;
Paper_def *paper () const;
- Lookup * lookup_l () const;
+ Lookup const *lookup_l () const;
virtual ~Score_element ();
DECLARE_MY_RUNTIME_TYPEINFO;
protected:
/**
- Administration: Where are we?. This is mainly used by Super_elem and
+ Administration: Where are we?. This is mainly used by Super_element and
Score_element::calcalute_dependencies ()
0 means ORPHAN,
*/
class Spanner : public virtual Score_element {
public:
-
Drul_array<Item*> spanned_drul_;
void set_bounds (Direction d, Item*);
DECLARE_MY_RUNTIME_TYPEINFO;
virtual Spanner* access_Spanner ();
Spanner ();
+ Spanner (Spanner const &);
bool broken_b () const;
virtual Array<Rod> get_rods () const;
Spanner* find_broken_piece (Line_of_score*) const;
virtual void break_into_pieces ();
Link_array<Spanner> broken_into_l_arr_;
+ Spanner * unbroken_original_l_;
virtual void do_unlink ();
virtual void do_junk_links ();
/*
- super-element.hh -- declare Super_elem
+ super-element.hh -- declare Super_element
source file of the LilyPond music typesetter
*/
-#ifndef SUPER_ELEM_HH
-#define SUPER_ELEM_HH
+#ifndef Super_element_HH
+#define Super_element_HH
#include "score-element.hh"
/** The toplevel element. The Paper_score contains this element, and any
element shoud be a dependency for the super element.
*/
-class Super_elem : public Score_element {
+class Super_element : public virtual Score_element {
public:
- Link_array<Line_of_score> lines_arr_;
- Line_of_score * line_of_score_l_;
- void add_broken_line (Line_of_score*);
- Super_elem();
+ Super_element();
void space_processing ();
void pre_processing();
void unlink_all ();
protected:
- virtual void do_substitute_dependency (Score_element*,Score_element*);
- virtual void handle_broken_dependencies();
-
- virtual void do_add_processing();
DECLARE_MY_RUNTIME_TYPEINFO;
};
-#endif // SUPER_ELEM_HH
+#endif // Super_element_HH
Item::Item ()
{
+ unbroken_original_l_ =0;
break_priority_i_ = 0;
breakable_b_ = false;
break_status_dir_ = CENTER;
do {
if (s->spanned_drul_[d] == this)
s->set_bounds (d, 0);
-
- } while ( flip (&d) != LEFT);
+ if (unbroken_original_l_
+ && unbroken_original_l_-> broken_to_drul_[d] == this)
+ unbroken_original_l_->broken_to_drul_[d] = 0;
+ } while (flip (&d) != LEFT);
}
attached_span_l_arr_.set_size (0);
+ unbroken_original_l_ =0;
}
Paper_column *
Item::Item (Item const &s)
: Score_element (s)
{
+ unbroken_original_l_ = &s;
/* do not copy attached_span_l_arr_ */
breakable_b_ = s.breakable_b_;
broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] =0;
{
old_accidental_idx_arr_ = accidental_idx_arr_;
key_.clear ();
- Scalar prop = get_property ("specialaccidentals");
+ Scalar prop = get_property ("keyoctaviation");
if (prop.length_i () > 0)
{
- key_.multi_octave_b_ = prop.to_bool ();
+ key_.multi_octave_b_ = ! prop.to_bool ();
}
accidental_idx_arr_.clear ();
source file of the LilyPond music typesetter
- (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1996,1997 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
return cols.find_l ((Paper_column*)c);
}
-void
-Line_of_score::set_breaking (Array<Column_x_positions> const &breaking)
+Line_of_score*
+Line_of_score::set_breaking (Array<Column_x_positions> const &breaking, int j) const
{
- for (int j=0; j < breaking.size(); j++)
- {
- const Array<Paper_column*> &curline (breaking[j].cols);
- const Array<Paper_column*> &errors (breaking[j].error_col_l_arr_);
- const Array<Real> &config (breaking[j].config);
+ const Array<Paper_column*> &curline (breaking[j].cols);
+ const Array<Paper_column*> &errors (breaking[j].error_col_l_arr_);
+ const Array<Real> &config (breaking[j].config);
- for (int i=0; i < errors.size(); i++)
- errors[i]->error_mark_b_ = true;
+ for (int i=0; i < errors.size(); i++)
+ errors[i]->error_mark_b_ = true;
- Line_of_score *line_l=0;
- Line_of_score *line_p =0;
+ const Line_of_score *line_l=0;
- if (breaking.size() >1)
- {
- line_p = (Line_of_score*)clone()->access_Spanner ();
- line_l = line_p;
- }
- else
- line_l = this;
+ if (breaking.size() >1)
+ {
+ line_l = (Line_of_score*)clone()->access_Spanner ();
+ }
+ else
+ line_l = this;
- ((Array<Paper_column*> &)line_l->cols) = curline;
- line_l->set_bounds(LEFT,curline[0]);
+ ((Array<Paper_column*> &)line_l->cols) = curline;
+ line_l->set_bounds(LEFT,curline[0]);
- line_l->set_bounds(RIGHT,curline.top());
+ line_l->set_bounds(RIGHT,curline.top());
- if (line_p)
- {
- pscore_l_->typeset_broken_spanner (line_p);
- broken_into_l_arr_.push (line_p);
- }
-
- for (int i=0; i < curline.size(); i++)
- {
- curline[i]->translate_axis (config[i],X_AXIS);
- curline[i]->line_l_ = (Line_of_score*)line_l;
- }
+ for (int i=0; i < curline.size(); i++)
+ {
+ curline[i]->translate_axis (config[i],X_AXIS);
+ curline[i]->line_l_ = (Line_of_score*)line_l;
}
-}
-
-void
-Line_of_score::break_into_pieces (bool)
-{
-
+ return line_l;
}
-Link_array<Line_of_score>
-Line_of_score::get_lines() const
-{
- Link_array<Line_of_score> ret;
- if (broken_into_l_arr_.size())
- for (int i=0; i < broken_into_l_arr_.size(); i++)
- {
- ret.push ((Line_of_score*)broken_into_l_arr_[i]);
- }
- else
- ret.push ((Line_of_score*)this); // ugh
-
- return ret;
-}
+
void
Line_of_score::do_print() const
int
main (int argc, char **argv)
{
+ // facilitate binary distributions
+ char const *env_lily = getenv ("LILYPONDPREFIX");
+ String prefix_directory;
+ if (env_lily)
+ prefix_directory = env_lily;
#if HAVE_GETTEXT
setlocale (LC_ALL, "");
// setlocale (LC_MESSAGES, "");
+ String lily_locale_dir;
String name (PACKAGE);
name.to_lower ();
- bindtextdomain (name.ch_C (), DIR_LOCALEDIR);
+ if (!prefix_directory.empty_b())
+ {
+ lily_locale_dir = prefix_directory + "/share/locale";
+ bindtextdomain (name.ch_C (), lily_locale_dir.ch_C());
+ }
+ else
+ bindtextdomain (name.ch_C (), DIR_LOCALEDIR);
textdomain (name.ch_C ());
#endif
if (env_sz)
global_path.parse_path (env_sz);
+ if (!prefix_directory.empty_b())
+ {
+ global_path.add (prefix_directory + "/share/lilypond/init/");
+ global_path.add (prefix_directory + "/share/lilypond");
+ }
+
global_path.add (String (DIR_DATADIR) + "/init/");
global_path.push (DIR_DATADIR);
/*
urg: make input file name:
+
input: file name
+
output: file name with added default extension. "" is stdin.
- in reference argument: the extention. ".ly" if none
+ in reference argument: the extension. ".ly" if none
*/
-
String
distill_inname_str (String name_str, String& ext_r)
{
static Keyword_ent the_key_tab[]={
{"absdynamic", ABSDYNAMIC},
{"accepts", ACCEPTS},
- {"accidentals", ACCIDENTALS},
{"bar", BAR},
{"cadenza", CADENZA},
{"clear", CLEAR},
{"in", IN_T},
{"lyric", LYRIC},
{"key", KEY},
+ {"keysignature", KEYSIGNATURE},
{"mark", MARK},
{"melodic" , MELODIC},
{"musicalpitch", MUSICAL_PITCH},
*/
#include "main.hh"
-#include "super-element.hh"
#include "debug.hh"
#include "lookup.hh"
#include "spanner.hh"
Paper_score::Paper_score ()
{
outputter_l_ =0;
- super_elem_l_ = new Super_elem;
- typeset_element (super_elem_l_);
+ Line_of_score * line_p = new Line_of_score;
+ typeset_unbroken_spanner (line_p);
+
+ line_l_ = line_p;
}
Paper_score::~Paper_score ()
{
- super_elem_l_->unlink_all ();
+#if 0
+ for (int i=0; i< line_l_arr_.size (); i++)
+ line_l_arr_[i]->unlink_all ();
+
for (PCursor<Score_element*> i(elem_p_list_.top()); i.ok(); i++)
- assert(!i->linked_b());
+ {
+
+ if (i->linked_b())
+ i->unlink ();
+ assert (! i->linked_b ());
+ }
+#endif
}
void
{
elem_p_list_.bottom ().add (elem_p);
elem_p->pscore_l_ = this;
-
elem_p->add_processing ();
}
}
+#if 0
void
Paper_score::set_breaking (Array<Column_x_positions> const &breaking)
{
- super_elem_l_->line_of_score_l_->set_breaking (breaking);
- super_elem_l_->break_processing ();
-
for (iter (span_p_list_.top (),i); i.ok ();)
{
Spanner *span_p = i.remove_p ();
i++;
}
}
+#endif
-void
+
+Array<Column_x_positions>
Paper_score::calc_breaking ()
{
Break_algorithm *algorithm_p=0;
sol = algorithm_p->solve ();
delete algorithm_p;
}
- set_breaking (sol);
+ return sol;
}
void
clean_cols ();
print ();
*mlog << _ ("Preprocessing elements...") << " " << flush;
- super_elem_l_->breakable_col_processing ();
- super_elem_l_->pre_processing ();
+ line_l_->breakable_col_processing ();
+ line_l_->pre_processing ();
- *mlog << '\n' << _ ("Calculating column positions...") << " " << flush;
- super_elem_l_->space_processing ();
- calc_breaking ();
- print ();
- *mlog << _ ("Postprocessing elements...") << " " << endl;
- super_elem_l_->post_processing ();
- tex_output ();
+ *mlog << '\n' << _ ("Calculating column positions...") << " " << flush;
+ line_l_->space_processing ();
+
+ Array<Column_x_positions> breaking = calc_breaking ();
+ Tex_stream *tex_stream_p = open_output_stream ();
+ outputter_l_=open_tex_outputter (tex_stream_p);
+
+ Link_array<Line_of_score> lines;
+ for (int i=0; i < breaking.size (); i++)
+ {
+ Line_of_score *line_l = line_l_->set_breaking (breaking, i);
+ lines.push (line_l);
+ if (line_l != line_l_)
+ typeset_broken_spanner (line_l);
+
+ }
+
+ *mlog << "\nLine ... ";
+ for (int i=0; i < lines.size (); i++)
+ {
+ *mlog << '[' << flush;
+
+ Line_of_score *line_l = lines[i];
+ line_l->break_processing ();
+ line_l->post_processing ();
+ *mlog << i << flush;
+ line_l->output_all ();
+ *mlog << ']' << flush;
+ remove_line (line_l);
+
+ }
+ *tex_stream_p << "\n\\EndLilyPondOutput";
+ delete outputter_l_;
+ delete tex_stream_p;
+ outputter_l_ = 0;
}
void
-Paper_score::tex_output ()
+Paper_score::remove_line (Line_of_score *l)
+{
+ Link_array<Score_element> to_remove;
+ for (PCursor<Score_element*> i(elem_p_list_.top ()); i.ok (); )
+ {
+ if (i->line_l () == l)
+ to_remove.push (i.remove_p ());
+ else
+ i++;
+ }
+
+ for (PCursor<Spanner*> i (span_p_list_.top ()); i.ok (); )
+ {
+ Score_element *e = i.ptr ();
+ if (e->line_l () == l)
+ to_remove.push (i.remove_p ());
+ else
+ i++;
+ }
+
+ // l->unlink_all ();
+ for (int i=0; i < to_remove.size (); i++)
+ {
+ to_remove[i]->unlink ();
+ assert (!to_remove[i]->linked_b ());
+ delete to_remove [i];
+ }
+}
+
+Tex_stream *
+Paper_score::open_output_stream ()
{
// output
String base_outname = paper_l_->outfile_str_ ;
*mlog << _f ("TeX output to %s...",
outname == "-" ? String ("<stdout>") : outname ) << endl;
- Tex_stream tex_out (outname);
- Tex_outputter interfees (&tex_out);
+ return new Tex_stream (outname);
+}
+
- outputter_l_ = &interfees;
+
+Tex_outputter *
+Paper_score::open_tex_outputter (Tex_stream *tex_out_p)
+{
+ Tex_outputter *interfees_p= new Tex_outputter (tex_out_p);
if (header_global_p)
{
- tex_out << header_global_p->TeX_string ();
+ *tex_out_p << header_global_p->TeX_string ();
}
- tex_out << _ ("% outputting Score, defined at: ") << origin_str_ << '\n';
+ *tex_out_p << _ ("% outputting Score, defined at: ") << origin_str_ << '\n';
if (header_l_)
{
- tex_out << header_l_->TeX_string();
+ *tex_out_p << header_l_->TeX_string();
}
- tex_out << paper_l_->TeX_output_settings_str ();
+ *tex_out_p << paper_l_->TeX_output_settings_str ();
if (experimental_features_global_b)
- tex_out << "\\turnOnExperimentalFeatures%\n";
+ *tex_out_p << "\\turnOnExperimentalFeatures%\n";
- tex_out << "\\turnOnPostScript%\n";
- super_elem_l_->output_all ();
- tex_out << "\n\\EndLilyPondOutput";
- outputter_l_ = 0;
+ *tex_out_p << "\\turnOnPostScript%\n";
+ return interfees_p;
}
/** Get all breakable columns between l and r, (not counting l and r). */
%{ // -*-Fundamental-*-
/*
- parser.yy -- YACC -> C++ parser for mudela
+ parser.yy -- Bison/C++ parser for mudela
source file of the GNU LilyPond music typesetter
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997 Han-Wen Nienhuys <hanwen@cs.uu.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
*/
// mmm
-Mudela_version oldest_version ("1.0.0");
-Mudela_version version ("1.0.0");
+Mudela_version oldest_version ("1.0.1");
+Mudela_version version ("1.0.1");
// needed for bison.simple's malloc() and free()
/* tokens which are not keywords */
-%token ACCIDENTALS
%token ALIAS
%token BAR
%token BEAMPLET
%token IN_T
%token LYRIC
%token KEY
+%token KEYSIGNATURE
%token MARK
%token MUSIC
%token MUSICAL_PITCH
$$ = key_p;
delete $2;
}
- | ACCIDENTALS pitch_list {
+ | KEYSIGNATURE pitch_list {
Key_change_req *key_p= new Key_change_req;
key_p->pitch_arr_ = *$2;
key_p->ordinary_key_b_ = false;
;
text_def:
- STRING {
+ string {
Text_def *t = new Text_def;
$$ = t;
t->text_str_ = *$1;
}
-Lookup *
+Lookup const *
Score_element::lookup_l () const
{
return pscore_l_->paper_l_->lookup_l (size_i_);
void
Score_engraver::do_creation_processing()
{
- scoreline_l_ = pscore_p_->super_elem_l_->line_of_score_l_;
+ scoreline_l_ = pscore_p_->line_l_;
scoreline_l_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
command_column_l_->breakable_b_ = true;
Engraver_group_engraver::do_creation_processing();
for (int i=1; i < break_cols.size(); i++)
{
Spanner* span_p = clone()->access_Spanner ();
- left = break_cols[i-1];
- right = break_cols[i];
+ Item *left = break_cols[i-1];
+ Item *right = break_cols[i];
if (!right->line_l())
right = right->find_prebroken_piece(LEFT);
if (!left->line_l())
{
break_into_pieces ();
for (int i=0; i < broken_into_l_arr_.size(); i++)
- broken_into_l_arr_[i]->handle_broken_dependencies();
+ {
+ broken_into_l_arr_[i]->handle_broken_dependencies();
+ }
}
else
{
Spanner::Spanner ()
{
+ unbroken_original_l_ =0;
spanned_drul_[LEFT]=0;
spanned_drul_[RIGHT]=0;
}
+Spanner::Spanner (Spanner const &s)
+ :Score_element (s)
+{
+ spanned_drul_[LEFT] = spanned_drul_[RIGHT] =0;
+ unbroken_original_l_ = &s;
+}
+
void
Spanner::do_brew_molecule ()
{
{
set_bounds (LEFT, 0);
set_bounds (RIGHT, 0);
+
+ if (unbroken_original_l_)
+ {
+ unbroken_original_l_->broken_into_l_arr_.substitute (this, 0);
+ unbroken_original_l_ =0;
+ }
}
void
--- /dev/null
+/*
+ super-elem.cc -- implement Super_elem
+
+ source file of the LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "super-element.hh"
+#include "line-of-score.hh"
+#include "p-score.hh"
+#include "string.hh"
+#include "tex-outputter.hh"
+
+
+Super_element::Super_element()
+{
+}
+
+IMPLEMENT_IS_TYPE_B1(Super_element,Score_element);
+
+
+/**
+ for administration of what was done already
+ */
+enum Score_element_status {
+ ORPHAN=0, // not yet added to pstaff
+ VIRGIN, // added to pstaff
+ PREBROKEN,
+ PRECALCING,
+ PRECALCED, // calcs before spacing done
+ SPACING,
+ SPACED,
+ BROKEN,
+ POSTCALCING, // busy calculating. This is used to trap cyclic deps.
+ POSTCALCED, // after spacing calcs done
+ BREWING,
+ BREWED,
+ UNLINKING,
+ UNLINKED,
+};
+
+void
+Super_element::pre_processing ()
+{
+ calcalute_dependencies (PRECALCING, PRECALCED, &Score_element::do_pre_processing);
+}
+
+void
+Super_element::space_processing ()
+{
+ calcalute_dependencies (SPACING, SPACED, &Score_element::do_space_processing);
+}
+
+/* for break processing, use only one status, because copies have to
+ have correct status. (Previously,
+ Score_element::handle_[pre]broken_dependencies assigned to status_i_
+ */
+void
+Super_element::breakable_col_processing ()
+{
+ calcalute_dependencies (PREBROKEN, PREBROKEN, &Score_element::do_breakable_col_processing);
+}
+
+void
+Super_element::break_processing ()
+{
+ calcalute_dependencies (BROKEN, BROKEN, &Score_element::do_break_processing);
+}
+void
+Super_element::post_processing ()
+{
+ calcalute_dependencies (POSTCALCING, POSTCALCED, &Score_element::do_post_processing);
+}
+
+void
+Super_element::output_all ()
+{
+ pscore_l_->outputter_l_->start_line ();
+ calcalute_dependencies (BREWING, BREWED, &Score_element::do_brew_molecule);
+ pscore_l_->outputter_l_->stop_line ();
+}
+
+
+
+void
+Super_element::unlink_all ()
+{
+ calcalute_dependencies (UNLINKING, UNLINKED, &Score_element::junk_links);
+}
+
$(PYTHON) $(buildscripts)/mf-to-table.py --package=$(topdir) --outdir=$(outdir) --dep $(outdir)/$(<F:.log=.dep) --ly $(outdir)/$(<F:.log=.ly) --afm $(outdir)/$(<F:.log=.afm) --tex $(outdir)/$(<F:.log=.tex) $<
+
+
TEXINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(TEXDIR)/lilypond depth=.. INSTALLATION_OUT_FILES="$(TEXTABLES)" -f $(stepdir)/install-outfiles.sub.make $@
AFMINSTALL=$(MAKE) depth=.. INSTALLATION_OUT_DIR=$(datadir) INSTALLATION_OUT_FILES="$(AFM_FILES)" -f $(stepdir)/install-outfiles.sub.make $@
% input feta-toevallig;
% input feta-schrift;
% input feta-schrift;
- input feta-haak;
+% input feta-haak;
fi
test:=0;
input feta-autometric;
+input feta-macros;
+
+blot_diameter# = .4pt#;
+
fet_beginfont("feta-nummer", size);
mode_setup;
-input feta-macros;
-input feta-params;
height#:=designsize;
+
save b,h; 4h+b=1.15; 10h+b=1;
fatten:=designsize*h+b;
save b,h; 4h+b=1.05; 10h+b=1;
interline#:=staffsize#/(stafflines-1);
% URG!
-% font_x_height ( interline# );
+font_x_height interline# ;
%
% [D.K.Roush & J.S.Gourlay] say this should be 0.072
boogje:=boogje rotated angle(dxs,dys);
pickup pencircle scaled sleur_pen;
filldraw boogje;
- show z1;
- show z2;
- show z3;
- show z4;
- show z5;
- show z6;
enddef;
-def slurchar(expr dxs,dys,hs,d) =
- beginchar(0,0,0,0) "Embedded mf";
- draw_slur(dxs,dys,hs,d);
- endchar;
-enddef;
-
-% drawslur(10,10,0,1);
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
\include "violoncello.ly"
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
\include "clarinetti.ly"
}
-\version "1.0.0";
+\version "1.0.1";
\include "clarinetto-1.ly"
\include "clarinetto-2.ly"
}
-\version "1.0.0";
+\version "1.0.1";
clarinetto1 = \melodic \relative c {
R1 *2 | d''4-.\ff r r2 | R1 *3 | e4-. r r2 | R1 *3 |
}
-\version "1.0.0";
+\version "1.0.1";
clarinetto2 = \melodic \relative c {
R1*2 bes''4-.\ff r r2 | R1*3 | cis4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
\include "contrabasso.ly"
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
contrabasso = \melodic \relative c {
% \translator Staff=violoncello
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
\include "corni.ly"
}
-\version "1.0.0";
+\version "1.0.1";
\include "corno-1.ly"
\include "corno-2.ly"
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
corno1 = \melodic \relative c {
R1 *2 | f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
corno2 = \melodic \relative c {
R1 *2 | d''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
\include "fagotti.ly"
}
-\version "1.0.0";
+\version "1.0.1";
\include "fagotto-1.ly"
\include "fagotto-2.ly"
}
-\version "1.0.0";
+\version "1.0.1";
fagotto1 = \melodic \relative c {
R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
fagotto2 = \melodic \relative c {
R1 *2 | f4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
\include "flauti.ly"
}
-\version "1.0.0";
+\version "1.0.1";
\include "flauto-1.ly"
\include "flauto-2.ly"
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
flauto1 = \melodic \relative c {
R1 *2 | c'''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
flauto2 = \melodic \relative c {
R1 *2 | as'''4-.\ff r r2 | R1 *3 | b4-. r r2 | R1 *3 |
}
-\version "1.0.0";
+\version "1.0.1";
global = \melodic {
\time 4/4;
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
oboe1 = \melodic \relative c'' {
R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
}
-\version "1.0.0";
+\version "1.0.1";
oboe2 = \melodic \relative c{
R1 *2| f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
\include "oboi.ly"
}
-\version "1.0.0";
+\version "1.0.1";
\include "oboe-1.ly"
\include "oboe-2.ly"
}
-\version "1.0.0";
+\version "1.0.1";
timpani = \melodic \relative c {
R1 *2 | c4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
\include "trombe.ly"
}
-\version "1.0.0";
+\version "1.0.1";
\include "trombo-1.ly"
\include "trombo-2.ly"
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
trombo1 = \melodic \relative c {
R1 *2 | c''4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
trombo2 = \melodic \relative c {
R1 *2 | c'4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
viola1 = \melodic \relative c {
\type Voice=one
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
viola2 = \melodic \relative c {
% starts on (actualy, most part is on) same staff as viola1
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
\include "viola-1.ly"
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
\include "violino-1.ly"
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
violino1 = \melodic \relative c {
c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
\include "violino-2.ly"
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
violino2 = \melodic \relative c {
c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
\include "global.ly"
\include "violoncello.ly"
}
-\version "1.0.0";
+\version "1.0.1";
violoncello = \melodic \relative c {
c1\ff ~ | c | f,4-. r r2 | r1 | c'1\ff ~ | c | f,4-. r r2 |
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
one = \melodic\relative c {
\property Voice . textstyle = "italic"
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
one = \melodic\relative c{
\property Voice . textstyle = "italic"
r8\mf [c'-1( e-2 g-4] [e-2 c-1 bes'-5 g-3] |
enteredby = "jcn";
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
one = \melodic\relative c{
\property Voice . textstyle = "italic"
enteredby = "jcn";
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
one = \melodic\relative c{
enteredby = "jcn";
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
one = \melodic\relative c{
filename = "allemande-cello.ly";
title = "Solo Cello Suites";
subtitle = "Suite II";
-piece = "Allemande";
+%piece = "Allemande";
% opus = "BWV 1008";
opus = "";
composer = "Johann Sebastian Bach (1685-1750)";
dotted slurs
%}
-\version "1.0.0";
+\version "1.0.1";
\include "allemande-urtext.ly";
\$allemande_cello_staff
\include "scs-paper.ly";
\midi{ \tempo 4 = 45; }
+ \header{ piece = "Allemande"; }
}
--- /dev/null
+\header{
+filename = "allemande-viola.ly";
+title = "Solo Cello Suites";
+subtitle = "Suite II";
+% piece = "Allemande";
+% opus = "BWV 1008";
+opus = "";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents,
+ dotted slurs
+%}
+
+\version "1.0.1";
+
+\include "allemande-urtext.ly";
+
+allemande_viola_global = \melodic{
+ \time 4/4;
+ \key f;
+ \partial 16;
+ \clef alto;
+ \skip 1*11;
+ s2. s8.
+ \bar ":|:";
+ \skip 1*11;
+ s2. s4 s8
+ \bar ":|";
+}
+
+allemande_viola_scripts = \melodic{
+}
+
+allemande_viola_staff = \type Staff <
+ \melodic \transpose c'' \$allemande
+ \$allemande_viola_global
+ \$allemande_viola_scripts
+>
+
+\score{
+ \$allemande_viola_staff
+ \include "scs-paper.ly";
+ \midi{ \tempo 4 = 45; }
+ \header{ piece = "Allemande"; }
+}
+
filename = "courante-cello.ly";
title = "Solo Cello Suites";
subtitle = "Suite II";
-piece = "Courante";
+% piece = "Courante";
% opus = "BWV 1008";
opus = "";
composer = "Johann Sebastian Bach (1685-1750)";
dotted slurs
%}
-\version "1.0.0";
+\version "1.0.1";
\include "courante-urtext.ly";
\$courante_cello_staff
\include "scs-paper.ly";
\midi{ \tempo 4 = 55; }
+ \header{ piece = "Courante"; }
}
--- /dev/null
+\header{
+filename = "courante-viola.ly";
+title = "Solo Cello Suites";
+subtitle = "Suite II";
+% piece = "Courante";
+% opus = "BWV 1008";
+opus = "";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents,
+ dotted slurs
+%}
+
+\version "1.0.1";
+
+\include "courante-urtext.ly";
+
+courante_viola_global = \melodic{
+ \time 3/4;
+ \key f;
+ \partial 16;
+ \clef alto;
+ \skip 2.*15;
+ s2 s8.
+ \bar ":|:";
+ \skip 2.*15;
+ s2 s8.
+ \bar ":|";
+}
+
+courante_viola_scripts = \melodic{
+}
+
+courante_viola_staff = \type Staff <
+ \melodic \transpose c' \$courante
+ \$courante_viola_global
+ \$courante_viola_scripts
+>
+
+\score{
+ \$courante_viola_staff
+ \include "scs-paper.ly";
+ \midi{ \tempo 4 = 55; }
+ \header{ piece = "Courante"; }
+}
+
filename = "gigue-cello.ly";
title = "Solo Cello Suites";
subtitle = "Suite II";
-piece = "Pr\\'elude"; % duh
+% piece = "Gigue";
% opus = "BWV 1008";
opus = "";
composer = "Johann Sebastian Bach (1685-1750)";
dotted slurs
%}
-\version "1.0.0";
+\version "1.0.1";
\include "gigue-urtext.ly";
\$gigue_cello_staff
\include "scs-paper.ly";
\midi{ \tempo 4 = 60; }
+ \header{ piece = "Gigue"; }
}
--- /dev/null
+\header{
+filename = "gigue-cello.ly";
+title = "Solo Cello Suites";
+subtitle = "Suite II";
+% piece = "Gigue";
+% opus = "BWV 1008";
+opus = "";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents,
+ dotted slurs
+%}
+
+\version "1.0.1";
+
+\include "gigue-urtext.ly";
+
+gigue_cello_global = \melodic{
+ \time 3/8;
+ \key f;
+ \clef bass;
+ \partial 8;
+ \skip 4.*31;
+ s4
+ \bar ":|:";
+ \skip 4.*44;
+ s4
+ \bar ":|";
+}
+
+gigue_cello_scripts = \melodic{
+}
+
+gigue_cello_staff = \type Staff <
+ \melodic \transpose c' \$gigue
+ \$gigue_cello_global
+ \$gigue_cello_scripts
+>
+
+\score{
+ \$gigue_cello_staff
+ \include "scs-paper.ly";
+%broken
+ \midi{ \tempo 4 = 60; }
+ \header{ piece = "Gigue"; }
+}
+
filename = "menuetto-cello.ly";
title = "Solo Cello Suites";
subtitle = "Suite II";
-piece = "Menuetto I";
+%piece = "Menuetto I";
source = "?";
% opus = "BWV 1008 no. 5";
opus = "";
dotted slurs
%}
-\version "1.0.0";
+\version "1.0.1";
\include "menuetto-urtext.ly";
\$menuetto_i_cello_staff
\include "scs-paper.ly";
\midi{ \tempo 4 = 110; }
+ \header{ piece = "Menuetto I"; }
}
menuetto_ii_cello_global = \melodic{
% \$menuetto_ii_cello_scripts
>
-\header{
-piece = "Menuetto II";
-opus = "";
-}
\score{
\$menuetto_ii_cello_staff
\include "scs-paper.ly";
\midi{ \tempo 4 = 130; }
+ \header{ piece = "Menuetto II"; }
}
--- /dev/null
+\header{
+filename = "menuetto-viola.ly";
+title = "Solo Cello Suites";
+subtitle = "Suite II";
+% piece = "Menuetto I";
+description = "Transcribed for Viola";
+source = "?";
+% opus = "BWV 1008 no. 5";
+opus = "";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents,
+ dotted slurs
+%}
+
+\version "1.0.1";
+
+\include "menuetto-urtext.ly";
+
+menuetto_i_viola_global = \melodic{
+ \time 3/4;
+ \key f;
+ \clef alto;
+ \skip 2.*8;
+ \bar ":|:";
+ \clef violin;
+ \skip 2.*1;
+ \slurdotted
+ \skip 2.*3;
+ \clef alto;
+ \skip 2.*11;
+ s2._"Fine"
+ \bar ":|";
+}
+
+menuetto_i_viola_scripts = \melodic{
+ s2.
+ s8^"~"^1_2_4 s8*5
+ s2.*5
+ s4 s-\upbow s-\downbow
+ s2.-\upbow
+ s2.*5
+ s2 s4-\upbow
+ s4-\downbow s2
+ s2.*1
+ s2^0 s4
+ s2.*1
+ s4-\downbow s4-\upbow
+}
+
+menuetto_i_viola_staff = \type Staff <
+ \melodic \transpose c' \$menuetto_i
+ \$menuetto_i_viola_global
+% \$menuetto_i_viola_scripts
+>
+
+\score{
+ \$menuetto_i_viola_staff
+ \include "scs-paper.ly";
+ \midi{ \tempo 4 = 110; }
+ \header{ piece = "Menuetto I"; }
+}
+
+menuetto_ii_viola_global = \melodic{
+ \time 3/4;
+ \key D;
+ \clef alto;
+ \skip 2.*8;
+ \bar ":|:";
+ \skip 2.*1;
+ \slurdotted
+ \skip 2.*14;
+ s2._"Menuetto I da Capo"
+ \bar ":|";
+}
+
+menuetto_ii_viola_staff = \type Staff <
+ \melodic \transpose c' \$menuetto_ii
+ \$menuetto_ii_viola_global
+% \$menuetto_ii_viola_scripts
+>
+
+\score{
+ \$menuetto_ii_viola_staff
+ \include "scs-paper.ly";
+ \midi{ \tempo 4 = 130; }
+ \header{ piece = "Menuetto II"; }
+}
+
filename = "prelude-cello.ly";
title = "Solo Cello Suites";
subtitle = "Suite II";
-piece = "Pr\\'elude"; % duh
+%piece = "Pr\\'elude"; % duh
opus = "BWV 1008";
% opus = "";
composer = "Johann Sebastian Bach (1685-1750)";
dotted slurs
%}
-\version "1.0.0";
+\version "1.0.1";
\include "prelude-urtext.ly";
\$prelude_cello_staff
\include "scs-paper.ly";
\midi{ \tempo 4 = 40; }
+ \header{ piece = "Pr\\'elude"; }
}
--- /dev/null
+\header{
+filename = "prelude-viola.ly";
+title = "Solo Cello Suites";
+subtitle = "Suite II";
+% piece = "Pr\\'elude"; % duh
+opus = "BWV 1008";
+% opus = "";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents,
+ dotted slurs
+%}
+
+\version "1.0.1";
+
+\include "prelude-urtext.ly";
+
+prelude_viola_global = \melodic{
+ \time 3/4;
+ \key f;
+ \clef alto;
+ \skip 2.*63;
+ \bar "|.";
+}
+
+prelude_viola_scripts = \melodic{
+}
+
+prelude_viola_staff = \type Staff <
+ \melodic \transpose c' \$prelude
+ \$prelude_viola_global
+ \$prelude_viola_scripts
+>
+
+\score{
+ \$prelude_viola_staff
+ \include "scs-paper.ly";
+ \midi{ \tempo 4 = 40; }
+ \header{ piece = "Pr\\'elude"; }
+}
+
filename = "sarabande-cello.ly";
title = "Solo Cello Suites";
subtitle = "Suite II";
-piece = "Sarabande";
+% piece = "Sarabande";
% opus = "BWV 1008";
opus = "";
composer = "Johann Sebastian Bach (1685-1750)";
dotted slurs
%}
-\version "1.0.0";
+\version "1.0.1";
\include "sarabande-urtext.ly";
\$sarabande_cello_staff
\include "scs-paper.ly";
\midi{ \tempo 4 = 40; }
+ \header{ piece = "Sarabande"; }
}
--- /dev/null
+\header{
+filename = "sarabande-viola.ly";
+title = "Solo Cello Suites";
+subtitle = "Suite II";
+% piece = "Sarabande";
+% opus = "BWV 1008";
+opus = "";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "JCN";
+copyright = "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents,
+ dotted slurs
+%}
+
+\version "1.0.1";
+
+\include "sarabande-urtext.ly";
+
+sarabande_viola_global = \melodic{
+ \time 3/4;
+ \key f;
+ \clef alto;
+ \skip 2.*12;
+ \bar ":|:";
+ \skip 2.*16;
+ \bar ":|";
+}
+
+sarabande_viola_scripts = \melodic{
+}
+
+sarabande_viola_staff = \type Staff <
+ \melodic \transpose c' \$sarabande
+ \$sarabande_viola_global
+ \$sarabande_viola_scripts
+>
+
+\score{
+ \$sarabande_viola_staff
+ \include "scs-paper.ly";
+ \midi{ \tempo 4 = 40; }
+ \header{ piece = "Sarabande"; }
+}
+
%{
%}
-\version "1.0.0";
+\version "1.0.1";
global =
Tested Features: stem direction, multivoice, forced accidentals.
%}
-\version "1.0.0";
+\version "1.0.1";
\include "nederlands.ly" % for correct parsing of note names
global = \melodic {
\time 4/4;
- \accidentals bes es as;
+ \keysignature bes es as;
\skip 1*31;
\bar "|."; |
}
copyright = "Public Domain";
}
-\version "1.0.0";
+\version "1.0.1";
global =
\melodic {
Ugh.. Wish we had grace notes.... It adds another dimension to this
piece of music. %}
-\version "1.0.0";
+\version "1.0.1";
cad = \melodic \relative c' {
}
-\version "1.0.0";
+\version "1.0.1";
allegro =
\melodic
definition below. --MB
%}
-\version "1.0.0";
+\version "1.0.1";
vi1=\melodic \relative c'' {
\time 4/4;
copyright = "public domain";
latexheaders= "headers";
}
-\version "1.0.0";
+\version "1.0.1";
%{
Silly latex file dropped; use ly2dvi
copyright = "public domain";
}
-\version "1.0.0";
+\version "1.0.1";
\include "standchen.ly"
description = "A schubert song in 20 pt";
}
-\version "1.0.0";
+\version "1.0.1";
% fool make-website
% \include "standchen.ly";
multiple \paper{}s in one \score
%}
-\version "1.0.0";
+\version "1.0.1";
$vocal_verse1 = \melodic\relative c{
% ugh: treble/bass
#: ineq-constrained-qp.cc:222
msgid "didn't converge!"
-msgstr "ik convederde niet!"
+msgstr "ik convergederde niet!"
#: ineq-constrained-qp.cc:224
msgid "Too much degeneracy. "
((1,0,0), conv, '0.1.21 -> 1.0.0 '))
+if 1: # need new a namespace
+ def conv (lines):
+ newlines = []
+ for x in lines:
+ x = regsub.gsub ('\\\\accidentals',
+ '\\\\keysignature',x)
+ x = regsub.gsub ('specialaccidentals *= *1',
+ 'keyoctaviation = 0',x)
+ x = regsub.gsub ('specialaccidentals *= *0',
+ 'keyoctaviation = 1',x)
+ newlines.append (x)
+ return newlines
+
+
+ conversions.append (
+ ((1,0,1), conv, '\\accidentals -> \\keysignature, ' +
+ 'specialaccidentals -> keyoctaviation\n'))
+
############################
+pl 47
+ - bf: patch in website after 'make release'
+ - windows ln -> cp
+ - bf: texinfo build
+
+pl 46
+ - bf: versioning typo: topleveL_MAJOR
+ - bf: reincluded optional STATE-VECTOR
pl 45
- Foo_rules.make -> foo-rules.make
PACKAGE_NAME=StepMake
MAJOR_VERSION=0
MINOR_VERSION=1
-PATCH_LEVEL=45
+PATCH_LEVEL=47
MY_PATCH_LEVEL=
# use the above to send patches, always empty for released version:
AC_DEFUN(AC_STEPMAKE_COMPILE, [
# -O is necessary to get inlining
- OPTIMIZE="-O"
+ OPTIMIZE=""
+ CXXFLAGS=${CXXFLAGS:-""}
checking_b=yes
- optimise_b=tja
+ optimise_b=no
profile_b=no
debug_b=yes
[checking_b=$enableval] )
# actually, the default is: tja='-O' to get inlining...
- # off=''
+ # off='' --jcn
+
+ #actually, that sucks.
+ # tja looks like a typo. Default is optimisation off. --hwn
+
AC_ARG_ENABLE(optimise,
[ enable-optimise use maximal speed optimisations. Default: off],
[optimise_b=$enableval])
fi
if test "$optimise_b" = yes; then
- DEFINES="$DEFINES -finline-functions"
- OPTIMIZE="-O2"
+ OPTIMIZE="-O2 -finline-functions"
fi
if test "$optimise_b" = no; then
if test $profile_b = yes; then
EXTRA_LIBES="-pg"
- DEFINES="$DEFINES -pg"
+ OPTIMIZE="$OPTIMIZE -pg"
fi
if test $debug_b = yes; then
- DEFINES="$DEFINES -g"
+ OPTIMIZE="$OPTIMIZE -g"
fi
# however, C++ support in mingw32 v 0.1.4 is still flaky
AC_CHECK_HEADER(FlexLexer.h, true,
AC_STEPMAKE_WARN(can"\'"t find flex header. Please install Flex headers correctly))
- CXXFLAGS="$DEFINES $OPTIMIZE"
+ CPPFLAGS="$CPPFLAGS $DEFINES"
+ CXXFLAGS="$CXXFLAGS $OPTIMIZE"
LDFLAGS=$EXTRA_LIBES
AC_SUBST(CXXFLAGS)
AC_DEFUN(AC_STEPMAKE_END, [
AC_OUTPUT($CONFIGFILE.make:config.make.in)
- rm -f Makefile
- cp make/toplevel.make.in ./Makefile
- chmod 444 Makefile
+ rm -f GNUmakefile
+ cp make/toplevel.make.in ./GNUmakefile
+ chmod 444 GNUmakefile
])
AC_DEFUN(AC_STEPMAKE_GXX, [
stepmake=stepmake
AC_SUBST(stepmake)
+ STATE_VECTOR=`ls make/STATE-VECTOR 2>/dev/null`
+ if test "x$STATE_VECTOR" != "x"; then
+ STATE_VECTOR="\$(depth)/$STATE_VECTOR"
+ fi
+ AC_SUBST(STATE_VECTOR)
+
CONFIGSUFFIX=
AC_ARG_ENABLE(config,
[ enable-config=FILE put configure settings in config-FILE.make],
AC_CHECK_SEARCH_RESULT($PYTHON, python, You should install Python)
if test "x$OSTYPE" = "xcygwin32" || test "x$OSTYPE" = "xWindows_NT"; then
- LN=cp # hard link does not work under cygnus-nt (yet?)
+ LN=cp # hard link does not work under cygnus-nt
+ LN_S=cp # symbolic link does not work for native nt
ZIP="zip -r -9" #
DOTEXE=.exe
- INSTALL="\$(stepdir)/../bin/install-dot-exe.sh -c"
+ DIRSEP='\\'
+ PATHSEP=';'
+ INSTALL="\$(stepdir)/../bin/install-dot-exe.sh -c"
else
+ DIRSEP='/'
+ PATHSEP=':'
LN=ln
+ LN_S='ln -s'
ZIP="zip -r -9"
INSTALL="\$(stepdir)/../bin/install-sh -c"
fi
AC_SUBST(DOTEXE)
AC_SUBST(ZIP)
AC_SUBST(LN)
+ AC_SUBST(LN_S)
AC_SUBST(INSTALL)
-
+ AC_DEFINE_UNQUOTED(DIRSEP, '${DIRSEP}')
+ AC_DEFINE_UNQUOTED(PATHSEP, '${PATHSEP}')
+
+
AC_STEPMAKE_DATADIR
])
--- /dev/null
+#!/bin/sh
+# package-zip32.sh --- make a windoze formated distribution
+
+set -x
+
+if [ $# -lt 1 ]; then
+ echo "Usage: $0 PACKAGE_SOURCEDIR"
+ exit 2
+fi
+
+srcdir=$1
+shift
+
+. $srcdir/VERSION
+
+VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+if [ "x$MY_PATCH_LEVEL" != "x" ]; then
+ VERSION=$VERSION.$MY_PATCH_LEVEL
+fi
+
+package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
+name=$package-$VERSION
+ZIP_CMD="zip -r -9"
+
+here=`pwd`
+cd $srcdir/..
+PACKAGE_ROOTDIR=`pwd`
+export PACKAGE_ROOTDIR
+cd $here
+
+RELEASE_DIR="$PACKAGE_ROOTDIR/bin.releases/winnt"
+ZIP_FILE="$RELEASE_DIR/$name.bin.zip"
+
+
+if [ ! -e $RELEASE_DIR ]; then
+ mkdir -p $RELEASE_DIR
+fi
+
+distdir=/tmp/${name}
+
+rm -f ${srcdir}/config.cache
+${srcdir}/configure --prefix=${distdir} \
+ --srcdir=${srcdir} \
+ --enable-tex-prefix=${distdir}/texmf \
+ --enable-tex-dir=${distdir}/texmf/tex \
+ --enable-mf-dir=${distdir}/texmf/mf
+
+if ! make ; then
+ echo "make failed"
+ exit 1
+fi
+
+if ! make install ; then
+ echo "make install failed"
+ exit 1
+fi
+
+#
+# Post install clean up
+#
+CYGWIN_LIB=$PACKAGE_ROOTDIR/distfiles/winnt/cygwinb19.dll
+if [ ! -e $CYGWIN_LIB ]; then
+ echo "Unable to locate $CYGWIN_LIB"
+ exit 1
+fi
+
+cd $distdir/bin
+cp $CYGWIN_LIB .
+mv ly2dvi32 ly2dvi.py
+cd $distdir/..
+$ZIP_CMD $ZIP_FILE $name
+echo "Wrote $ZIP_FILE"
+exit 0
+
+
package = @package@
PACKAGE_NAME = @PACKAGE_NAME@
stepmake = @stepmake@
+state-vector = @STATE_VECTOR@
CONFIGSUFFIX = @CONFIGSUFFIX@
MAKEINFO = @MAKEINFO@
ICFLAGS = @ICFLAGS@
FIND = @FIND@
FLEX = @FLEX@
LN = @LN@
+LN_S = @LN_S@
MSGFMT = @MSGFMT@
PERL = @PERL@
PYTHON = @PYTHON@
--- /dev/null
+
+LINECOMMENT=\#
+
+default:
+ chmod +w $(OUTFILE)
+ echo "$(LINECOMMENT) WARNING WARNING WARNING WARNING" > $(OUTFILE)
+ echo "$(LINECOMMENT) do not edit! this is $(OUTFILE), generated from $(INFILE)" >> $(OUTFILE)
+ cat $(INFILE) >> $(OUTFILE)
+ chmod -w $(OUTFILE)
doc: do-doc
+$(outdir)/$(package).info: $(outdir)/topinfo.texinfo $(OUTTEXINFO_FILES)
+ $(MAKEINFO) -o $@ $(outdir)/topinfo.texinfo
+
# what to do here?
ifneq ($(strip $(INFO_FILES)),)
INFOINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(infodir) depth=$(depth) INSTALLATION_OUT_FILES="$(INFO_FILES)" -f $(stepdir)/install-outfiles.sub.make $@
-$(outdir)/$(package).info: check-texinfo-deps $(OUTTEXINFO_FILES)
- $(MAKEINFO) -o $@ $(outdir)/topinfo.texinfo
-
localinstall: # $(INFO_FILES)
-$(INSTALL) -d $(infodir)
$(INFOINSTALL)
(cd $(outdir); sh ../$(step-bindir)/tar-docxx.sh $(package)-$(TOPLEVEL_VERSION).tar.gz)
-
-
+update-state-vector:
+ifneq ($(strip $(state-vector)),)
+ if [ "`tail -1 $(state-vector)`" != "$(TOPLEVEL_VERSION)" ]; then\
+ echo $(TOPLEVEL_VERSION) >> $(state-vector); \
+ fi
+endif
local-dist: $(DIST_FILES) $(OUT_DIST_FILES) $(NON_ESSENTIAL_DIST_FILES)
mkdir -p $(distdir)/$(localdir)
@echo "configure changed! You should probably reconfigure manually."
@echo "**************************************"
(cd $(depth); ./config.status)
+ touch $@ # do something for multiple simultaneous configs.
mv $(@F) $@
rm $(basename $< ).*gf
+
+$(outdir)/%.tfm: %.mf
+ mf '\mode:=ljfour; input $<;'
+ mv $(@F) $(outdir)
+ rm $(basename $<).*{gf,log}
-#empty
+
+
+tfm: $(TFM_FILES)
+
+dvi: $(DVI_FILES)
+
-MF_FILES = $(wildcard *.mf)
+MF_FILES := $(wildcard *.mf)
FONT_FILES = $(wildcard *[0-9].mf)
EXTRA_DIST_FILES += $(MF_FILES)
+MF_TFM_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.tfm))
+MF_DVI_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.dvi))
+MF_LOG_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.log))
+DVI_FILES += $(MF_DVI_FILES)
+TFM_FILES += $(MF_TFM_FILES)
+
+
update:
$(PYTHON) $(step-bindir)/update.py --package=$(topdir) $(makeflags)
-zip:
+xzip:
$(SHELL) $(step-bindir)/package-zip.sh $(topdir) $(prefix:/%=%)
+zip:
+ $(SHELL) $(step-bindir)/package-zip32.sh $(topdir)
+
rm -f configure
GNUmakefile: make/toplevel.make.in
- chmod +w $@
- echo "# WARNING WARNING WARNING WARNING" > $@
- echo "# do not edit! this is generated from make/Toplevel.make.in" >> $@
- cat $< >> $@
- chmod -w $@
+ $(MAKE) INFILE=$< OUTFILE=$@ -f $(stepdir)/automatically-generated.sub.make
aclocal.m4: $(stepdir)/../aclocal.m4
- cp $< $@
+ $(MAKE) INFILE=$< OUTFILE=$@ LINECOMMENT=dnl -f $(stepdir)/automatically-generated.sub.make
+
local-WWW: #index.html
WWW-clean:
$(MAKE) CONFIGSUFFIX='www' clean
-dist:
+dist:
+ $(MAKE) update-state-vector
rm -rf $(distdir)
$(MAKE) local-dist $(distdir)
chmod -R a+r $(distdir)
$(MAKE) CONFIGSUFFIX='www' -C Documentation WWW
rm -f `find . -name \*.html~ -print`
find `find Documentation -type d -name 'out-www'` -not -name '*dvi' -not -name '*ly' -not -name '*tex' -not -name '*.ps' -not -name 'out-www' > wwwlist
+ -ln -f $(patch-dir)/$(distname).diff.gz out-www
-ln -f $(depth)/$(distname).diff.gz out-www
tar cfz $(outdir)/htmldoc.tar.gz `cat wwwlist` `ls *.gif out-www/$(distname).diff.gz $(ERRORLOG)` index.html