=item *
-Xpmtoppm (from the libgr-progs package).
+xpmtoppm (from the Portable Bitmap Utilities) (included within the
+RedHat package libgr-progs).
=item *
=head1 DESCRIPTION
-Some questions that have been answered before. (note: relative paths
-are meant to be relative to the source directory)
+Q: HELP! I'm stuck!
+
+A: Please read this document carefully. If you are still at loss,
+send your questions to the B<mailing list>, and not to authors
+directly.
+
+Note: relative paths are meant to be relative to the source directory
+
=head2 Installing
Q: and where do the beams come into this picture?
-A: Beams are voicegroup-wide, and may be entered in any part of the
+A: Beams are voice-wide, and may be entered in any part of the
voicegroup:
< { [a ~ e] } { c ~ g } >
diff -urN old-directory/ new-directory/ > patch
Alternatively, you can use F<bin/make-patch.py>. Don't forget to put
-in your name and e-mail address.
+your name and e-mail address in the F<AUTHORS.pod> file.
Q: How do I learn the C++ code?
A: No. We have evaluated the standard GNU combination for compiling
programs (autoconf, automake, libtool) and found to be inadequate in
several respects. More detailed argumentation is included with
-LilyPond (see F<automake.urgh>)
+LilyPond (see F<Documentation/automake.urgh>)
+
Q: Why do I need g++ >= 2.7?
g++ (there are quite a few). Not having to support other compilers
saves us a I<lot> of trouble.
+
=head2 Running
+
Q: There are lots of warning messages for the printing, all
beginning with:
beams are PS C<\special> commands
-Q: My symbols are all messed up after I upgraded, and I get
-dvi-checksum errors!
+Q: My symbols are all messed up after I upgraded, I get the wrong
+symbols and dvi-checksum errors!
+
+A: We obviously mucked with the fonts in the upgrade. Remove I<all>
+previous fonts, including the F<.pk> and F<.tfm> fonts in
+F</var/lib/texmf>. A script automating this has been included, see
+F<bin/clean-fonts.sh>
-A: We mucked with the fonts in the upgrade. Remove I<all> previous
-fonts, including the .pk and .tfm fonts in F</var/lib/texmf>. A
-script automating this has been included, see F<bin/clean-fonts.sh>
Q: I don't get midi-output, even if I use B<-M>!
A: The MIDI output was originally put in as a proof that MIDI could be
done, and as a method of proof"reading" the input. The MIDI support
-is by no means finished.
+is by no means finished. Patches appreciated.
Q: I get
</a
>
-=item *
-<a href=docxx/index.html
->
-The DOC++ documentation of the C++ sources. [temporarily disabled]
-</a
->
-
=item *
<a href=AUTHORS.html
>
@Article {smdl-web,
author={unknown},
title = {SMDL, Standard Musical Description Language},
- HTML={ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf},
+ pdf={ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf},
note={ISO/IEC DIS 10743},
}
\chapter{A tutorial}
-\emph{\Large ***Under construction: april 98***}
+\emph{\Large ***Under construction: may 98***}
\section{Introduction}
\end{mudela}
\end{enumerate}
-[talk about ly2dvi]
+The above is quite a lot of work. Moreover, the result is pretty
+crude: the page does include prettily printed titles, composer. Jan
+Arne Fagertun wrote a tool to take the above tedious steps out of
+your hands. The tool is called ly2dvi, and it should be on your
+system if you run Unix. If you use ly2dvi, then you can do
+\begin{verbatim}
+ ly2dvi silly.ly
+\end{verbatim}
+in stead of steps 2 and 3. You feel the real win of ly2dvi when you
+add titling to the music. This is something that we will discuss in [XXX]
+
The remainder of this document is not about \TeX, and mostly not even
about LilyPond. What you entered into your text editor in step~1. and
for music notation, then you should consult XXXX [FIXME], it contains
a glossary of musical terms.
-\section{Music copying versus music definition}
+\section{Music copying versus music definition versus music entry}
If you have done music copying before, then using LilyPond may seem
awkward to you in the beginning. The purpose of LilyPond is informally
means; you just copy the symbols. With LilyPond such a thing is not
possible: we expect you to enter the meaning of the score, not the
score itself. If put more concretely: you do not enter ``black
-notehead without flag, fourth staff line'', but ``a quarter note,
-pitch d$^2$''. LilyPond will figure out from the musical info what
-kind of graphic presentation is needed.
+notehead without flag, fourth staff line, with dot'', but ``a dotted
+quarter note, pitch d$^2$''. LilyPond will figure out from the
+musical info what kind of graphic presentation is needed.
This has some drawbacks: most notably, it is difficult to enter sheet
music that you cannot read. On the other hand, any piece of music
once entered can be played and transposed automatically.
+Finally, in some spots we will cheat a bit when it comes to musical
+definition. Mudela has some entry modes that help you to make typing
+mudela pleasant. For example, the verbose phrase ``a dotted quarter
+note, pitch d$^2$'' translates to the following longhand
+\begin{verbatim}
+ \musical_pitch { 1 2 0 } \duration { 2 1}
+\end{verbatim}
+You can be conveniently abbreviate this to \verb+d''4.+, which is
+considerably shorter. There are some features that also make the
+quotes and numbers in \verb+d''4.+ superfluous in some cases.
\section{When you know the notes to print\ldots}
<e' a' d''> <a g' cis''> <d'2 f' d''>
\end{verbatim}
-[WARNING: relative octaves are still experimental!]
-
The need for quotes can also be reduced: most of the pitch intervals
in traditional music are small. Therefore, it makes sense to leave
out the quotes when the interval is small. This is called the
relative mode for octaves. You can switch it on by entering
-\verb+\octave relative+. From then on, the pitch of a note will be
-the closest to the last one, Thus, you can enter a scale without using
-octavation quotes:
+\verb+\relative+. From then on, the pitch of a note will be the
+closest to the last one. You have to specify the first pitch because
+the first note of a row obviously has no predecessor. Thus, you can
+enter a scale without using octavation quotes, eg,
+
\begin{mudela}[fragment,verbatim]
- \octave relative;
- c d e f g a b c
+ \relative c' { c d e f g a b c }
\end{mudela}
-The twinkle twinkle example reduces to the following input.
+For chords, the relative mode works slightly differently. In a
+sequence of chords, the first note of a chord gives the starting point
+for the next. We can demonstrate this with our twinkle twinkle example
\begin{verbatim}
- \octave relative;
- c'4 c <c g'> <c, e g>
- <c, e a> <b, d a'> <b,2 d g>
- <a,4 d f> <bes, d f> <bes, c e> <g, c e>
- <e, a d> <a,, g' cis'> <d,2 f d'>
+ \relative c' {
+ c4 c <c g'> <c e g>
+ <c e a> <b d a'> <b2 d g>
+ <a4 d f> <bes d f> <bes c e> <g c e>
+ <e a d> <a, g' cis'> <d2 f d'>
+ }
\end{verbatim}
+
+
\section{Finishing touch}
the LilyPond package-sources.
Note: These pages are created from the latest B<development snapshots>
-of LilyPond. You can look at the bottom if you want to know which
-version this was.
+of LilyPond, specifically, this page was made from LilyPond
+@TOPLEVEL_VERSION@.
=head2 Mirrors
top_of_NEWS
+Go get it at ftp://pcnov095.win.tue.nl/pub/lilypond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz
+
=head2 Documentation: Introduction
=over 4
</a
>
+=item *
+<a href=docxx/index.html
+>
+The DOC++ documentation of the C++ sources.
+</a
+>
+
+
=back
-*********
-pl 64
+pl 65
+ - fixes for template instantiation (AO)
+ - junked standchen-easy,
+ - mudela 0.1.15: deprecate \duration, junked \octave relative
+ - small doco fixes
+ - moved data from Melodic_req into Musical_pitch (analogous to
+ Duration and Rhythmic_req)
+ - implemented \relative c' { .. } and associated Relative_octave_music
+ - junked \octave relative;
+
+pl 64.jcn2
+ - simple compile fixes
+ - bf: beam:stemlens:knee
+ - hara-kiri-*
+ - bf: ctags
+ - preludes-3.lym4
+
+**********
+pl 64 (may 13)
pl 63.jcn3
- beam stemlength stuff runtime
- bf's: make dist, docdeps
- bf's scsii
-pl 63
+************
+pl 63 (may 11)
+
- non_fatal_error () (should use!)
- Mozart Horn concerto 3, horn part
- bf: plet-spanner
For the compilation and running of LilyPond you need some additional
packages. Please refer to the installation instructions.
+NOTE: If you downloaded a binary (.rpm or a W95/NT .zip file), then
+you don't have to compile LilyPond.
+
3. INSTALLATION
5. COMMENTS
-LilyPond is a long way from finished and polished. I do appreciate
-criticism, comments, bugreports, patches, etc. Please send e-mail to
-the mailing lists. See Documentation/links.pod for more info
+LilyPond is a long way from finished and polished. We do appreciate
+criticism, comments, bugreports, patches, etc.
+
+ Please send your e-mail to one of the MAILING LISTS
+
+(and not to us personally). See Documentation/links.pod for more info
6. DOZE
package, since it might contain more documentation
ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe)
- ftp://alpha.gnu.org/gnu/lilypond/ (US)
The website also contains the complete documentation
- http://www.stack.nl/~hanwen/lilypond/index.html
+ http://www.cs.uu.nl/~hanwen/lilypond/index.html
If you decide to build LilyPond from source, please read the INSTALL
document first, especially the Windows NT/95 section.
grep for TODO and ugh/ugr/urg
0.2:
+ * junk My_lily_parser::abbrev_beam_type_i_
+
* w32 blurb
* make sure all ex's have a mudela-version
* document use of ly2dvi more prominently
- * deprecate \duration
-
* clean up abbrev/plet/beam/abbrevbeam/duration mess in parser.
* minimum length second part broken tie
* multibar rest
- symbol(s)
- * move all hard-coded constants and staffheight dependent to runtime,
- i.e. init/params.ly. e.g.: stem length params, beam positions
-
* fix variable define/lookup parser global<->paper
* fix position of bar number
- abbreviation-beam -> (measured/unmeasured) tremolo
* libtoolize flowerlib
-
* shared lib
* robustify Beam (in case of no stems, 32nd notes)
* clefs (AG): The "8" should appear closer to the actual clef,
touching it.
-
* give Items/Spanners access to unbroken originals
* generalised scopes for Parser/identifiers.
MAJOR_VERSION=0
MINOR_VERSION=1
-PATCH_LEVEL=64
+PATCH_LEVEL=65
MY_PATCH_LEVEL=
# use the above to send patches, always empty for released version:
#!@PYTHON@
+
+"""
+Print a nice footer. add the top of the NEWS file (up to the ********)
+"""
+
+
import os
import sys
import getopt
from lilypython import *
lilyversion= ''
-mailaddress = "unknown"
fullname = "unknown"
news_file = ''
def set_vars():
__main__.lilyversion = version_tuple_to_str(lilydirs.version_tuple())
os.environ["CONFIGSUFFIX"] = 'www';
- __main__.mailaddress= os.environ['MAILADDRESS']
pw = pwd.getpwuid (os.getuid());
__main__.fullname= pw[4];
backstr = '\n<hr>Please take me <a href=%s>back to the index</a>\n\
of LilyPond -- The GNU Project Music typesetter\n\
<hr><font size=-1>\n\
-This page was built using from lilypond-%s by <p>\n\
+This page was built from lilypond-%s by <p>\n\
<address><br>%s <a href=mailto:%s><<!bla>%s</a>></address>\n\
<p></font>'
+
set_vars ()
banner_file = ''
news_file=''
news_file = a
def footstr(index):
- return backstr % (index, lilyversion, fullname, mailaddress, mailaddress)
+ return backstr % (index, lilyversion, fullname, mailaddress (), mailaddress)
index_file='../../out-www/index.html'
banner = footstr (index_file)
{
s/([ \n\t\[<>()\]])\'(\'*[a-zA-Z]+)/$1$2,/g;
}
-
}
+sub convert_0_1_14_to_0_1_15
+{
+# junked \duration last and \duration 4, 8, 16 etc.
+# junked \octave relative
+ print STDERR "Not smart enough to convert \\duration\n" if (/\\duration/) ;
+ print STDERR "Not smart enough to convert \\octave relative\n" if (/\\octave relative/) ;
+}
+
###############################################################
sub last_conversion
,"0.1.9" => \&convert_0_1_8_to_0_1_9
,"0.1.10" => \&convert_0_1_9_to_0_1_10
, "0.1.14" => \&convert_0_1_10_to_0_1_14
+ , "0.1.15" => \&convert_0_1_14_to_0_1_15
);
import os
import getopt
import time
+lilypath =''
+try:
+ lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
+except KeyError:
+ print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
+ sys.exit(1)
+
+lilypath = lilypath + '/bin/'
+sys.path.append(lilypath)
+
+from lilypython import *
class My_options:
def __init__(self):
my_options = My_options()
-def mail():
- return os.environ['MAILADDRESS']
def name():
return pwd.getpwuid(posix.getuid())[4]
headstr = '\n%s -- %s\n\nsource file of %s\n\n(c) %d %s <%s>\n' \
- %(filename, what, project_str(), time.localtime (time.time ())[0], name(), mail())
+ %(filename, what, project_str(), time.localtime (time.time ())[0], name(), mailaddress())
return headstr
# make_assign_re = regex.compile('^\([A-Z_]*\) *= *\(.*\)$')
make_assign_re = regex.compile('^\([A-Z_]*\)=\(.*\)$')
+def mailaddress():
+ try:
+ return os.environ['MAILADDRESS']
+ except KeyError:
+ return '(address unknown)'
+
def version_tuple(file):
lines = file.readlines()
--- /dev/null
+#!/bin/sh
+# mail-address
+if [ "$MAILADDRESS" != "" ]; then
+ echo $MAILADDRESS
+else
+ echo "mail-address:6: warning: \$MAILADDRESS undefined" > /dev/stderr
+ echo $USER@`hostname`
+fi
--- /dev/null
+#!/bin/sh
+
+if [ "$1" = "" ];
+then
+ echo tar-docxx tarball.tar.gz
+fi
+
+cwd=`pwd`
+TARBALL=`basename $1`
+TAROUTDIR=/tmp/tar-docxx
+mkdir $TAROUTDIR
+
+echo untarring ...
+tar -C $TAROUTDIR -zxf $1 '*cc' '*.c' '*.hh' '*.h'
+
+cd $TAROUTDIR
+DATE=`date`
+
+cat << EOF > banner.html
+ This program documentation comes from $TARBALL. It was generated by
+ $USERNAME ($MAILADDRESS) on $DATE
+EOF
+
+
+
+mkdir docxx;
+echo doc++ ...
+doc++ -pSf -B banner.html -d docxx `find -type f`
+tar -czf $cwd/progdocs.tar.gz docxx/
+# rm -rf $TAROUTDIR
/* define if you have snprintf */
#define HAVE_SNPRINTF 0
+
+/* define if explicit instantiation is needed */
+#undef NEED_EXPLICIT_INSTANTIATION
cross_compiling=$ac_cv_prog_cxx_cross
+echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6
+echo "configure:683: 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 688 "configure"
+#include "confdefs.h"
+
+template <class T> struct foo { static int baz; };
+template <class T> int foo<T>::baz = 1;
+
+int main() {
+ return foo<int>::baz;
+; return 0; }
+EOF
+if { (eval echo configure:698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+ rm -rf conftest*
+ lily_cv_need_explicit_instantiation=no
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ lily_cv_need_explicit_instantiation=yes
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$lily_cv_need_explicit_instantiation" 1>&6
+if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then
+ cat >> confdefs.h <<\EOF
+#define NEED_EXPLICIT_INSTANTIATION 1
+EOF
+
+fi
+
# Check whether --enable-printing or --disable-printing was given.
if test "${enable_printing+set}" = set; then
enableval="$enable_printing"
# 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:834: checking for $ac_word" >&5
+echo "configure:870: 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:865: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:901: 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.
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 875 "configure"
+#line 911 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; 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:899: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:935: 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:904: checking whether we are using GNU C++" >&5
+echo "configure:940: 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:913: \"$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:949: \"$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:928: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:964: 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
# 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:958: checking for $ac_word" >&5
+echo "configure:994: 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
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:995: checking for a BSD compatible install" >&5
+echo "configure:1031: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 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:1049: checking for $ac_word" >&5
+echo "configure:1085: 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 "$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:1083: checking for $ac_word" >&5
+echo "configure:1119: 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
echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:1124: checking for 8-bit clean memcmp" >&5
+echo "configure:1160: 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 1132 "configure"
+#line 1168 "configure"
#include "confdefs.h"
#ifdef __cplusplus
extern "C" void exit(int);
}
EOF
-if { (eval echo configure:1145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
ac_cv_func_memcmp_clean=yes
else
test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o"
echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:1163: checking for vprintf" >&5
+echo "configure:1199: 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 1168 "configure"
+#line 1204 "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:1194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; 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:1218: checking for _doprnt" >&5
+echo "configure:1254: 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 1223 "configure"
+#line 1259 "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:1249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func__doprnt=yes"
else
for ac_func in memmem snprintf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1276: checking for $ac_func" >&5
+echo "configure:1312: 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 1281 "configure"
+#line 1317 "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:1307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; 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:1384: checking for $ac_word" >&5
+echo "configure:1420: 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:1418: checking for $ac_word" >&5
+echo "configure:1454: 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:1452: checking for $ac_word" >&5
+echo "configure:1488: 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 "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:1484: checking for $ac_word" >&5
+echo "configure:1520: 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
# Extract the first word of "python", so it can be a program name with args.
set dummy python; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1516: checking for $ac_word" >&5
+echo "configure:1552: 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
# 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:1550: checking for $ac_word" >&5
+echo "configure:1586: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_POD2HTML'+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:1584: checking for $ac_word" >&5
+echo "configure:1620: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_POD2MAN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking TeX/MF root dir directory""... $ac_c" 1>&6
-echo "configure:1620: checking TeX/MF root dir directory" >&5
+echo "configure:1656: checking TeX/MF root dir directory" >&5
find_root_prefix="$prefix"
echo $ac_n "checking MF input directory""... $ac_c" 1>&6
-echo "configure:1661: checking MF input directory" >&5
+echo "configure:1697: checking MF input directory" >&5
find_dirdir=`(cd $find_texprefix;
$FIND ./ -type d -a -name source -print |sort|head -1|sed 's#^\./##')`
echo $ac_n "checking TeX input directory""... $ac_c" 1>&6
-echo "configure:1686: checking TeX input directory" >&5
+echo "configure:1722: checking TeX input directory" >&5
find_dirdir=`(cd $find_texprefix;
$FIND ./ -type d -a -name tex -print |sort|head -1|sed 's#^\./##')`
fi
echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:1806: checking how to run the C++ preprocessor" >&5
+echo "configure:1842: 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 1819 "configure"
+#line 1855 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1824: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
:
ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
-echo "configure:1844: checking for FlexLexer.h" >&5
+echo "configure:1880: 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 1849 "configure"
+#line 1885 "configure"
#include "confdefs.h"
#include <FlexLexer.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1890: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
AC_LANG_CPLUSPLUS
+AC_CACHE_CHECK([whether explicit instantiation is needed],
+ lily_cv_need_explicit_instantiation,
+ AC_TRY_LINK([
+template <class T> struct foo { static int baz; };
+template <class T> int foo<T>::baz = 1;
+], [ return foo<int>::baz; ],
+ lily_cv_need_explicit_instantiation=no,
+ lily_cv_need_explicit_instantiation=yes))
+if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then
+ AC_DEFINE(NEED_EXPLICIT_INSTANTIATION)
+fi
+
AC_ARG_ENABLE(printing,
[ enable-printing turn on debug printing. Default: off],
[printing_b=$enableval])
% Toplevel initialisation file.
-\version "0.1.14";
+\version "0.1.15";
\include "declarations.ly"
% have a rhythmic part too. This is the reason that we don't write 'note { .. }'
%
\notenames {
- ceses = \melodic_request { -1 0 -2 }
- ces = \melodic_request { -1 0 -1 }
- c = \melodic_request { -1 0 0 }
- cis = \melodic_request { -1 0 1 }
- cisis = \melodic_request { -1 0 2 }
- deses = \melodic_request { -1 1 -2 }
- des = \melodic_request { -1 1 -1 }
- d = \melodic_request { -1 1 0 }
- dis = \melodic_request { -1 1 1 }
- disis = \melodic_request { -1 1 2 }
- eses = \melodic_request { -1 2 -2 }
- es = \melodic_request { -1 2 -1 }
- e = \melodic_request { -1 2 0 }
- eis = \melodic_request { -1 2 1 }
- eisis = \melodic_request { -1 2 2 }
- feses = \melodic_request { -1 3 -2 }
- fes = \melodic_request { -1 3 -1 }
- f = \melodic_request { -1 3 0 }
- fis = \melodic_request { -1 3 1 }
- fisis = \melodic_request { -1 3 2 }
- geses = \melodic_request { -1 4 -2 }
- ges = \melodic_request { -1 4 -1 }
- g = \melodic_request { -1 4 0 }
- gis = \melodic_request { -1 4 1 }
- gisis = \melodic_request { -1 4 2 }
- ases = \melodic_request { -1 5 -2 }
- as = \melodic_request { -1 5 -1 }
- a = \melodic_request { -1 5 0 }
- ais = \melodic_request { -1 5 1 }
- aisis = \melodic_request { -1 5 2 }
- heses = \melodic_request { -1 6 -2 }
- b = \melodic_request { -1 6 -1 }
- h = \melodic_request { -1 6 0 }
- his = \melodic_request { -1 6 1 }
- hisis = \melodic_request { -1 6 2 }
+ ceses = \musical_pitch { -1 0 -2 }
+ ces = \musical_pitch { -1 0 -1 }
+ c = \musical_pitch { -1 0 0 }
+ cis = \musical_pitch { -1 0 1 }
+ cisis = \musical_pitch { -1 0 2 }
+ deses = \musical_pitch { -1 1 -2 }
+ des = \musical_pitch { -1 1 -1 }
+ d = \musical_pitch { -1 1 0 }
+ dis = \musical_pitch { -1 1 1 }
+ disis = \musical_pitch { -1 1 2 }
+ eses = \musical_pitch { -1 2 -2 }
+ es = \musical_pitch { -1 2 -1 }
+ e = \musical_pitch { -1 2 0 }
+ eis = \musical_pitch { -1 2 1 }
+ eisis = \musical_pitch { -1 2 2 }
+ feses = \musical_pitch { -1 3 -2 }
+ fes = \musical_pitch { -1 3 -1 }
+ f = \musical_pitch { -1 3 0 }
+ fis = \musical_pitch { -1 3 1 }
+ fisis = \musical_pitch { -1 3 2 }
+ geses = \musical_pitch { -1 4 -2 }
+ ges = \musical_pitch { -1 4 -1 }
+ g = \musical_pitch { -1 4 0 }
+ gis = \musical_pitch { -1 4 1 }
+ gisis = \musical_pitch { -1 4 2 }
+ ases = \musical_pitch { -1 5 -2 }
+ as = \musical_pitch { -1 5 -1 }
+ a = \musical_pitch { -1 5 0 }
+ ais = \musical_pitch { -1 5 1 }
+ aisis = \musical_pitch { -1 5 2 }
+ heses = \musical_pitch { -1 6 -2 }
+ b = \musical_pitch { -1 6 -1 }
+ h = \musical_pitch { -1 6 0 }
+ his = \musical_pitch { -1 6 1 }
+ hisis = \musical_pitch { -1 6 2 }
%
%
- Ceses = \melodic_request { -2 0 -2 }
- Ces = \melodic_request { -2 0 -1 }
- C = \melodic_request { -2 0 0 }
- Cis = \melodic_request { -2 0 1 }
- Cisis = \melodic_request { -2 0 2 }
- Deses = \melodic_request { -2 1 -2 }
- Des = \melodic_request { -2 1 -1 }
- D = \melodic_request { -2 1 0 }
- Dis = \melodic_request { -2 1 1 }
- Disis = \melodic_request { -2 1 2 }
- Eses = \melodic_request { -2 2 -2 }
- Es = \melodic_request { -2 2 -1 }
- E = \melodic_request { -2 2 0 }
- Eis = \melodic_request { -2 2 1 }
- Eisis = \melodic_request { -2 2 2 }
- Feses = \melodic_request { -2 3 -2 }
- Fes = \melodic_request { -2 3 -1 }
- F = \melodic_request { -2 3 0 }
- Fis = \melodic_request { -2 3 1 }
- Fisis = \melodic_request { -2 3 2 }
- Geses = \melodic_request { -2 4 -2 }
- Ges = \melodic_request { -2 4 -1 }
- G = \melodic_request { -2 4 0 }
- Gis = \melodic_request { -2 4 1 }
- Gisis = \melodic_request { -2 4 2 }
- Ases = \melodic_request { -2 5 -2 }
- As = \melodic_request { -2 5 -1 }
- A = \melodic_request { -2 5 0 }
- Ais = \melodic_request { -2 5 1 }
- Aisis = \melodic_request { -2 5 2 }
- Heses = \melodic_request { -2 6 -2 }
- B = \melodic_request { -2 6 -1 }
- H = \melodic_request { -2 6 0 }
- His = \melodic_request { -2 6 1 }
- Hisis = \melodic_request { -2 6 2 }
+ Ceses = \musical_pitch { -2 0 -2 }
+ Ces = \musical_pitch { -2 0 -1 }
+ C = \musical_pitch { -2 0 0 }
+ Cis = \musical_pitch { -2 0 1 }
+ Cisis = \musical_pitch { -2 0 2 }
+ Deses = \musical_pitch { -2 1 -2 }
+ Des = \musical_pitch { -2 1 -1 }
+ D = \musical_pitch { -2 1 0 }
+ Dis = \musical_pitch { -2 1 1 }
+ Disis = \musical_pitch { -2 1 2 }
+ Eses = \musical_pitch { -2 2 -2 }
+ Es = \musical_pitch { -2 2 -1 }
+ E = \musical_pitch { -2 2 0 }
+ Eis = \musical_pitch { -2 2 1 }
+ Eisis = \musical_pitch { -2 2 2 }
+ Feses = \musical_pitch { -2 3 -2 }
+ Fes = \musical_pitch { -2 3 -1 }
+ F = \musical_pitch { -2 3 0 }
+ Fis = \musical_pitch { -2 3 1 }
+ Fisis = \musical_pitch { -2 3 2 }
+ Geses = \musical_pitch { -2 4 -2 }
+ Ges = \musical_pitch { -2 4 -1 }
+ G = \musical_pitch { -2 4 0 }
+ Gis = \musical_pitch { -2 4 1 }
+ Gisis = \musical_pitch { -2 4 2 }
+ Ases = \musical_pitch { -2 5 -2 }
+ As = \musical_pitch { -2 5 -1 }
+ A = \musical_pitch { -2 5 0 }
+ Ais = \musical_pitch { -2 5 1 }
+ Aisis = \musical_pitch { -2 5 2 }
+ Heses = \musical_pitch { -2 6 -2 }
+ B = \musical_pitch { -2 6 -1 }
+ H = \musical_pitch { -2 6 0 }
+ His = \musical_pitch { -2 6 1 }
+ Hisis = \musical_pitch { -2 6 2 }
}
%}
\consists "Separating_line_group_engraver";
\consists "Line_group_engraver";
+% \consists "Hara_kiri_line_group_engraver";
\accepts "Voice";
}
\consists "Vertical_align_engraver";
\consists "Staff_group_bar_engraver";
\consists "Line_group_engraver";
+% \consists "Hara_kiri_line_group_engraver";
\accepts "Staff";
\accepts "Rhythmic_staff";
\accepts "Grand_staff";
% contributed by Paolo Zuliani <zuliap@easynet.it>
\notenames {
- dobb = \melodic_request { -1 0 -2 }
- dob = \melodic_request { -1 0 -1 }
- do = \melodic_request { -1 0 0 }
- dod = \melodic_request { -1 0 1 }
- dodd = \melodic_request { -1 0 2 }
- rebb = \melodic_request { -1 1 -2 }
- reb = \melodic_request { -1 1 -1 }
- re = \melodic_request { -1 1 0 }
- red = \melodic_request { -1 1 1 }
- redd = \melodic_request { -1 1 2 }
- mibb = \melodic_request { -1 2 -2 }
- mib = \melodic_request { -1 2 -1 }
- mi = \melodic_request { -1 2 0 }
- mid = \melodic_request { -1 2 1 }
- midd = \melodic_request { -1 2 2 }
- fabb = \melodic_request { -1 3 -2 }
- fab = \melodic_request { -1 3 -1 }
- fa = \melodic_request { -1 3 0 }
- fad = \melodic_request { -1 3 1 }
- fadd = \melodic_request { -1 3 2 }
- solbb = \melodic_request { -1 4 -2 }
- solb = \melodic_request { -1 4 -1 }
- sol = \melodic_request { -1 4 0 }
- sold = \melodic_request { -1 4 1 }
- soldd = \melodic_request { -1 4 2 }
- labb = \melodic_request { -1 5 -2 }
- lab = \melodic_request { -1 5 -1 }
- la = \melodic_request { -1 5 0 }
- lad = \melodic_request { -1 5 1 }
- ladd = \melodic_request { -1 5 2 }
- sibb = \melodic_request { -1 6 -2 }
- sib = \melodic_request { -1 6 -1 }
- si = \melodic_request { -1 6 0 }
- sid = \melodic_request { -1 6 1 }
- sidd = \melodic_request { -1 6 2 }
+ dobb = \musical_pitch { -1 0 -2 }
+ dob = \musical_pitch { -1 0 -1 }
+ do = \musical_pitch { -1 0 0 }
+ dod = \musical_pitch { -1 0 1 }
+ dodd = \musical_pitch { -1 0 2 }
+ rebb = \musical_pitch { -1 1 -2 }
+ reb = \musical_pitch { -1 1 -1 }
+ re = \musical_pitch { -1 1 0 }
+ red = \musical_pitch { -1 1 1 }
+ redd = \musical_pitch { -1 1 2 }
+ mibb = \musical_pitch { -1 2 -2 }
+ mib = \musical_pitch { -1 2 -1 }
+ mi = \musical_pitch { -1 2 0 }
+ mid = \musical_pitch { -1 2 1 }
+ midd = \musical_pitch { -1 2 2 }
+ fabb = \musical_pitch { -1 3 -2 }
+ fab = \musical_pitch { -1 3 -1 }
+ fa = \musical_pitch { -1 3 0 }
+ fad = \musical_pitch { -1 3 1 }
+ fadd = \musical_pitch { -1 3 2 }
+ solbb = \musical_pitch { -1 4 -2 }
+ solb = \musical_pitch { -1 4 -1 }
+ sol = \musical_pitch { -1 4 0 }
+ sold = \musical_pitch { -1 4 1 }
+ soldd = \musical_pitch { -1 4 2 }
+ labb = \musical_pitch { -1 5 -2 }
+ lab = \musical_pitch { -1 5 -1 }
+ la = \musical_pitch { -1 5 0 }
+ lad = \musical_pitch { -1 5 1 }
+ ladd = \musical_pitch { -1 5 2 }
+ sibb = \musical_pitch { -1 6 -2 }
+ sib = \musical_pitch { -1 6 -1 }
+ si = \musical_pitch { -1 6 0 }
+ sid = \musical_pitch { -1 6 1 }
+ sidd = \musical_pitch { -1 6 2 }
}
% Toplevel initialisation file.
-\version "0.1.14";
+\version "0.1.15";
\include "declarations.ly";
%}
\notenames {
- ceses = \melodic_request { -1 0 -2 }
- ces = \melodic_request { -1 0 -1 }
- c = \melodic_request { -1 0 0 }
- cis = \melodic_request { -1 0 1 }
- cisis = \melodic_request { -1 0 2 }
- deses = \melodic_request { -1 1 -2 }
- des = \melodic_request { -1 1 -1 }
- d = \melodic_request { -1 1 0 }
- dis = \melodic_request { -1 1 1 }
- disis = \melodic_request { -1 1 2 }
- eeses = \melodic_request { -1 2 -2 }
- eses = \melodic_request { -1 2 -2 }
- ees = \melodic_request { -1 2 -1 }
- es = \melodic_request { -1 2 -1 }
- e = \melodic_request { -1 2 0 }
- eis = \melodic_request { -1 2 1 }
- eisis = \melodic_request { -1 2 2 }
- feses = \melodic_request { -1 3 -2 }
- fes = \melodic_request { -1 3 -1 }
- f = \melodic_request { -1 3 0 }
- fis = \melodic_request { -1 3 1 }
- fisis = \melodic_request { -1 3 2 }
- geses = \melodic_request { -1 4 -2 }
- ges = \melodic_request { -1 4 -1 }
- g = \melodic_request { -1 4 0 }
- gis = \melodic_request { -1 4 1 }
- gisis = \melodic_request { -1 4 2 }
- aeses = \melodic_request { -1 5 -2 }
- ases = \melodic_request { -1 5 -2 }
- aes = \melodic_request { -1 5 -1 }
- as = \melodic_request { -1 5 -1 }
- a = \melodic_request { -1 5 0 }
- ais = \melodic_request { -1 5 1 }
- aisis = \melodic_request { -1 5 2 }
- beses = \melodic_request { -1 6 -2 }
- bes = \melodic_request { -1 6 -1 }
- b = \melodic_request { -1 6 0 }
- bis = \melodic_request { -1 6 1 }
- bisis = \melodic_request { -1 6 2 }
+ ceses = \musical_pitch { -1 0 -2 }
+ ces = \musical_pitch { -1 0 -1 }
+ c = \musical_pitch { -1 0 0 }
+ cis = \musical_pitch { -1 0 1 }
+ cisis = \musical_pitch { -1 0 2 }
+ deses = \musical_pitch { -1 1 -2 }
+ des = \musical_pitch { -1 1 -1 }
+ d = \musical_pitch { -1 1 0 }
+ dis = \musical_pitch { -1 1 1 }
+ disis = \musical_pitch { -1 1 2 }
+ eeses = \musical_pitch { -1 2 -2 }
+ eses = \musical_pitch { -1 2 -2 }
+ ees = \musical_pitch { -1 2 -1 }
+ es = \musical_pitch { -1 2 -1 }
+ e = \musical_pitch { -1 2 0 }
+ eis = \musical_pitch { -1 2 1 }
+ eisis = \musical_pitch { -1 2 2 }
+ feses = \musical_pitch { -1 3 -2 }
+ fes = \musical_pitch { -1 3 -1 }
+ f = \musical_pitch { -1 3 0 }
+ fis = \musical_pitch { -1 3 1 }
+ fisis = \musical_pitch { -1 3 2 }
+ geses = \musical_pitch { -1 4 -2 }
+ ges = \musical_pitch { -1 4 -1 }
+ g = \musical_pitch { -1 4 0 }
+ gis = \musical_pitch { -1 4 1 }
+ gisis = \musical_pitch { -1 4 2 }
+ aeses = \musical_pitch { -1 5 -2 }
+ ases = \musical_pitch { -1 5 -2 }
+ aes = \musical_pitch { -1 5 -1 }
+ as = \musical_pitch { -1 5 -1 }
+ a = \musical_pitch { -1 5 0 }
+ ais = \musical_pitch { -1 5 1 }
+ aisis = \musical_pitch { -1 5 2 }
+ beses = \musical_pitch { -1 6 -2 }
+ bes = \musical_pitch { -1 6 -1 }
+ b = \musical_pitch { -1 6 0 }
+ bis = \musical_pitch { -1 6 1 }
+ bisis = \musical_pitch { -1 6 2 }
%
%
- Ceses = \melodic_request { -2 0 -2 }
- Ces = \melodic_request { -2 0 -1 }
- C = \melodic_request { -2 0 0 }
- Cis = \melodic_request { -2 0 1 }
- Cisis = \melodic_request { -2 0 2 }
- Deses = \melodic_request { -2 1 -2 }
- Des = \melodic_request { -2 1 -1 }
- D = \melodic_request { -2 1 0 }
- Dis = \melodic_request { -2 1 1 }
- Disis = \melodic_request { -2 1 2 }
- Eses = \melodic_request { -2 2 -2 }
- Es = \melodic_request { -2 2 -1 }
- E = \melodic_request { -2 2 0 }
- Eis = \melodic_request { -2 2 1 }
- Eisis = \melodic_request { -2 2 2 }
- Feses = \melodic_request { -2 3 -2 }
- Fes = \melodic_request { -2 3 -1 }
- F = \melodic_request { -2 3 0 }
- Fis = \melodic_request { -2 3 1 }
- Fisis = \melodic_request { -2 3 2 }
- Geses = \melodic_request { -2 4 -2 }
- Ges = \melodic_request { -2 4 -1 }
- G = \melodic_request { -2 4 0 }
- Gis = \melodic_request { -2 4 1 }
- Gisis = \melodic_request { -2 4 2 }
- Aeses = \melodic_request { -2 5 -2 }
- Ases = \melodic_request { -2 5 -2 }
- Aes = \melodic_request { -2 5 -1 }
- As = \melodic_request { -2 5 -1 }
- A = \melodic_request { -2 5 0 }
- Ais = \melodic_request { -2 5 1 }
- Aisis = \melodic_request { -2 5 2 }
- Beses = \melodic_request { -2 6 -2 }
- Bes = \melodic_request { -2 6 -1 }
- B = \melodic_request { -2 6 0 }
- Bis = \melodic_request { -2 6 1 }
- Bisis = \melodic_request { -2 6 2 }
+ Ceses = \musical_pitch { -2 0 -2 }
+ Ces = \musical_pitch { -2 0 -1 }
+ C = \musical_pitch { -2 0 0 }
+ Cis = \musical_pitch { -2 0 1 }
+ Cisis = \musical_pitch { -2 0 2 }
+ Deses = \musical_pitch { -2 1 -2 }
+ Des = \musical_pitch { -2 1 -1 }
+ D = \musical_pitch { -2 1 0 }
+ Dis = \musical_pitch { -2 1 1 }
+ Disis = \musical_pitch { -2 1 2 }
+ Eses = \musical_pitch { -2 2 -2 }
+ Es = \musical_pitch { -2 2 -1 }
+ E = \musical_pitch { -2 2 0 }
+ Eis = \musical_pitch { -2 2 1 }
+ Eisis = \musical_pitch { -2 2 2 }
+ Feses = \musical_pitch { -2 3 -2 }
+ Fes = \musical_pitch { -2 3 -1 }
+ F = \musical_pitch { -2 3 0 }
+ Fis = \musical_pitch { -2 3 1 }
+ Fisis = \musical_pitch { -2 3 2 }
+ Geses = \musical_pitch { -2 4 -2 }
+ Ges = \musical_pitch { -2 4 -1 }
+ G = \musical_pitch { -2 4 0 }
+ Gis = \musical_pitch { -2 4 1 }
+ Gisis = \musical_pitch { -2 4 2 }
+ Aeses = \musical_pitch { -2 5 -2 }
+ Ases = \musical_pitch { -2 5 -2 }
+ Aes = \musical_pitch { -2 5 -1 }
+ As = \musical_pitch { -2 5 -1 }
+ A = \musical_pitch { -2 5 0 }
+ Ais = \musical_pitch { -2 5 1 }
+ Aisis = \musical_pitch { -2 5 2 }
+ Beses = \musical_pitch { -2 6 -2 }
+ Bes = \musical_pitch { -2 6 -1 }
+ B = \musical_pitch { -2 6 0 }
+ Bis = \musical_pitch { -2 6 1 }
+ Bisis = \musical_pitch { -2 6 2 }
}
% Toplevel initialisation file.
-\version "0.1.14";
+\version "0.1.15";
\include "declarations.ly"
-% $Id: norsk.ly,v 1.3 1998/03/26 11:07:44 fred Exp $
+% $Id: norsk.ly,v 1.4 1998/05/15 06:57:27 fred Exp $
%{
%}
\notenames {
- ceses = \melodic_request { -1 0 -2 }
- cessess = \melodic_request { -1 0 -2 }
- ces = \melodic_request { -1 0 -1 }
- cess = \melodic_request { -1 0 -1 }
- c = \melodic_request { -1 0 0 }
- cis = \melodic_request { -1 0 1 }
- ciss = \melodic_request { -1 0 1 }
- cisis = \melodic_request { -1 0 2 }
- cississ = \melodic_request { -1 0 2 }
- deses = \melodic_request { -1 1 -2 }
- dessess = \melodic_request { -1 1 -2 }
- des = \melodic_request { -1 1 -1 }
- dess = \melodic_request { -1 1 -1 }
- d = \melodic_request { -1 1 0 }
- dis = \melodic_request { -1 1 1 }
- diss = \melodic_request { -1 1 1 }
- disis = \melodic_request { -1 1 2 }
- dississ = \melodic_request { -1 1 2 }
- eeses = \melodic_request { -1 2 -2 }
- eessess = \melodic_request { -1 2 -2 }
- eses = \melodic_request { -1 2 -2 }
- essess = \melodic_request { -1 2 -2 }
- ees = \melodic_request { -1 2 -1 }
- eess = \melodic_request { -1 2 -1 }
- es = \melodic_request { -1 2 -1 }
- ess = \melodic_request { -1 2 -1 }
- e = \melodic_request { -1 2 0 }
- eis = \melodic_request { -1 2 1 }
- eiss = \melodic_request { -1 2 1 }
- eisis = \melodic_request { -1 2 2 }
- eississ = \melodic_request { -1 2 2 }
- feses = \melodic_request { -1 3 -2 }
- fessess = \melodic_request { -1 3 -2 }
- fes = \melodic_request { -1 3 -1 }
- fess = \melodic_request { -1 3 -1 }
- f = \melodic_request { -1 3 0 }
- fis = \melodic_request { -1 3 1 }
- fiss = \melodic_request { -1 3 1 }
- fisis = \melodic_request { -1 3 2 }
- fississ = \melodic_request { -1 3 2 }
- geses = \melodic_request { -1 4 -2 }
- gessess = \melodic_request { -1 4 -2 }
- ges = \melodic_request { -1 4 -1 }
- gess = \melodic_request { -1 4 -1 }
- g = \melodic_request { -1 4 0 }
- g = \melodic_request { -1 4 0 }
- gis = \melodic_request { -1 4 1 }
- giss = \melodic_request { -1 4 1 }
- gisis = \melodic_request { -1 4 2 }
- gississ = \melodic_request { -1 4 2 }
- aeses = \melodic_request { -1 5 -2 }
- aessess = \melodic_request { -1 5 -2 }
- ases = \melodic_request { -1 5 -2 }
- assess = \melodic_request { -1 5 -2 }
- aes = \melodic_request { -1 5 -1 }
- aess = \melodic_request { -1 5 -1 }
- as = \melodic_request { -1 5 -1 }
- ass = \melodic_request { -1 5 -1 }
- a = \melodic_request { -1 5 0 }
- ais = \melodic_request { -1 5 1 }
- aiss = \melodic_request { -1 5 1 }
- aisis = \melodic_request { -1 5 2 }
- aississ = \melodic_request { -1 5 2 }
- bes = \melodic_request { -1 6 -2 }
- bess = \melodic_request { -1 6 -2 }
- b = \melodic_request { -1 6 -1 }
- b = \melodic_request { -1 6 -1 }
- h = \melodic_request { -1 6 0 }
- his = \melodic_request { -1 6 1 }
- hiss = \melodic_request { -1 6 1 }
- hisis = \melodic_request { -1 6 2 }
- hississ = \melodic_request { -1 6 2 }
+ ceses = \musical_pitch { -1 0 -2 }
+ cessess = \musical_pitch { -1 0 -2 }
+ ces = \musical_pitch { -1 0 -1 }
+ cess = \musical_pitch { -1 0 -1 }
+ c = \musical_pitch { -1 0 0 }
+ cis = \musical_pitch { -1 0 1 }
+ ciss = \musical_pitch { -1 0 1 }
+ cisis = \musical_pitch { -1 0 2 }
+ cississ = \musical_pitch { -1 0 2 }
+ deses = \musical_pitch { -1 1 -2 }
+ dessess = \musical_pitch { -1 1 -2 }
+ des = \musical_pitch { -1 1 -1 }
+ dess = \musical_pitch { -1 1 -1 }
+ d = \musical_pitch { -1 1 0 }
+ dis = \musical_pitch { -1 1 1 }
+ diss = \musical_pitch { -1 1 1 }
+ disis = \musical_pitch { -1 1 2 }
+ dississ = \musical_pitch { -1 1 2 }
+ eeses = \musical_pitch { -1 2 -2 }
+ eessess = \musical_pitch { -1 2 -2 }
+ eses = \musical_pitch { -1 2 -2 }
+ essess = \musical_pitch { -1 2 -2 }
+ ees = \musical_pitch { -1 2 -1 }
+ eess = \musical_pitch { -1 2 -1 }
+ es = \musical_pitch { -1 2 -1 }
+ ess = \musical_pitch { -1 2 -1 }
+ e = \musical_pitch { -1 2 0 }
+ eis = \musical_pitch { -1 2 1 }
+ eiss = \musical_pitch { -1 2 1 }
+ eisis = \musical_pitch { -1 2 2 }
+ eississ = \musical_pitch { -1 2 2 }
+ feses = \musical_pitch { -1 3 -2 }
+ fessess = \musical_pitch { -1 3 -2 }
+ fes = \musical_pitch { -1 3 -1 }
+ fess = \musical_pitch { -1 3 -1 }
+ f = \musical_pitch { -1 3 0 }
+ fis = \musical_pitch { -1 3 1 }
+ fiss = \musical_pitch { -1 3 1 }
+ fisis = \musical_pitch { -1 3 2 }
+ fississ = \musical_pitch { -1 3 2 }
+ geses = \musical_pitch { -1 4 -2 }
+ gessess = \musical_pitch { -1 4 -2 }
+ ges = \musical_pitch { -1 4 -1 }
+ gess = \musical_pitch { -1 4 -1 }
+ g = \musical_pitch { -1 4 0 }
+ g = \musical_pitch { -1 4 0 }
+ gis = \musical_pitch { -1 4 1 }
+ giss = \musical_pitch { -1 4 1 }
+ gisis = \musical_pitch { -1 4 2 }
+ gississ = \musical_pitch { -1 4 2 }
+ aeses = \musical_pitch { -1 5 -2 }
+ aessess = \musical_pitch { -1 5 -2 }
+ ases = \musical_pitch { -1 5 -2 }
+ assess = \musical_pitch { -1 5 -2 }
+ aes = \musical_pitch { -1 5 -1 }
+ aess = \musical_pitch { -1 5 -1 }
+ as = \musical_pitch { -1 5 -1 }
+ ass = \musical_pitch { -1 5 -1 }
+ a = \musical_pitch { -1 5 0 }
+ ais = \musical_pitch { -1 5 1 }
+ aiss = \musical_pitch { -1 5 1 }
+ aisis = \musical_pitch { -1 5 2 }
+ aississ = \musical_pitch { -1 5 2 }
+ bes = \musical_pitch { -1 6 -2 }
+ bess = \musical_pitch { -1 6 -2 }
+ b = \musical_pitch { -1 6 -1 }
+ b = \musical_pitch { -1 6 -1 }
+ h = \musical_pitch { -1 6 0 }
+ his = \musical_pitch { -1 6 1 }
+ hiss = \musical_pitch { -1 6 1 }
+ hisis = \musical_pitch { -1 6 2 }
+ hississ = \musical_pitch { -1 6 2 }
%
%
- Ceses = \melodic_request { -2 0 -2 }
- Cessess = \melodic_request { -2 0 -2 }
- Ces = \melodic_request { -2 0 -1 }
- Cess = \melodic_request { -2 0 -1 }
- C = \melodic_request { -2 0 0 }
- Cis = \melodic_request { -2 0 1 }
- Ciss = \melodic_request { -2 0 1 }
- Cisis = \melodic_request { -2 0 2 }
- Cississ = \melodic_request { -2 0 2 }
- Deses = \melodic_request { -2 1 -2 }
- Dessess = \melodic_request { -2 1 -2 }
- Des = \melodic_request { -2 1 -1 }
- Dess = \melodic_request { -2 1 -1 }
- D = \melodic_request { -2 1 0 }
- D = \melodic_request { -2 1 0 }
- Dis = \melodic_request { -2 1 1 }
- Diss = \melodic_request { -2 1 1 }
- Disis = \melodic_request { -2 1 2 }
- Dississ = \melodic_request { -2 1 2 }
- Eses = \melodic_request { -2 2 -2 }
- Essess = \melodic_request { -2 2 -2 }
- Es = \melodic_request { -2 2 -1 }
- Ess = \melodic_request { -2 2 -1 }
- E = \melodic_request { -2 2 0 }
- E = \melodic_request { -2 2 0 }
- Eis = \melodic_request { -2 2 1 }
- Eiss = \melodic_request { -2 2 1 }
- Eisis = \melodic_request { -2 2 2 }
- Eississ = \melodic_request { -2 2 2 }
- Feses = \melodic_request { -2 3 -2 }
- Fessess = \melodic_request { -2 3 -2 }
- Fes = \melodic_request { -2 3 -1 }
- Fess = \melodic_request { -2 3 -1 }
- F = \melodic_request { -2 3 0 }
- Fis = \melodic_request { -2 3 1 }
- Fiss = \melodic_request { -2 3 1 }
- Fisis = \melodic_request { -2 3 2 }
- Fississ = \melodic_request { -2 3 2 }
- Geses = \melodic_request { -2 4 -2 }
- Gessess = \melodic_request { -2 4 -2 }
- Ges = \melodic_request { -2 4 -1 }
- Gess = \melodic_request { -2 4 -1 }
- G = \melodic_request { -2 4 0 }
- Gis = \melodic_request { -2 4 1 }
- Giss = \melodic_request { -2 4 1 }
- Gisis = \melodic_request { -2 4 2 }
- Gississ = \melodic_request { -2 4 2 }
- Aeses = \melodic_request { -2 5 -2 }
- Aessess = \melodic_request { -2 5 -2 }
- Ases = \melodic_request { -2 5 -2 }
- Assess = \melodic_request { -2 5 -2 }
- Aes = \melodic_request { -2 5 -1 }
- Aess = \melodic_request { -2 5 -1 }
- As = \melodic_request { -2 5 -1 }
- Ass = \melodic_request { -2 5 -1 }
- A = \melodic_request { -2 5 0 }
- A = \melodic_request { -2 5 0 }
- Ais = \melodic_request { -2 5 1 }
- Aiss = \melodic_request { -2 5 1 }
- Aisis = \melodic_request { -2 5 2 }
- Aississ = \melodic_request { -2 5 2 }
- Bes = \melodic_request { -2 6 -2 }
- Bess = \melodic_request { -2 6 -2 }
- B = \melodic_request { -2 6 -1 }
- H = \melodic_request { -2 6 0 }
- His = \melodic_request { -2 6 1 }
- Hiss = \melodic_request { -2 6 1 }
- Hisis = \melodic_request { -2 6 2 }
- Hississ = \melodic_request { -2 6 2 }
+ Ceses = \musical_pitch { -2 0 -2 }
+ Cessess = \musical_pitch { -2 0 -2 }
+ Ces = \musical_pitch { -2 0 -1 }
+ Cess = \musical_pitch { -2 0 -1 }
+ C = \musical_pitch { -2 0 0 }
+ Cis = \musical_pitch { -2 0 1 }
+ Ciss = \musical_pitch { -2 0 1 }
+ Cisis = \musical_pitch { -2 0 2 }
+ Cississ = \musical_pitch { -2 0 2 }
+ Deses = \musical_pitch { -2 1 -2 }
+ Dessess = \musical_pitch { -2 1 -2 }
+ Des = \musical_pitch { -2 1 -1 }
+ Dess = \musical_pitch { -2 1 -1 }
+ D = \musical_pitch { -2 1 0 }
+ D = \musical_pitch { -2 1 0 }
+ Dis = \musical_pitch { -2 1 1 }
+ Diss = \musical_pitch { -2 1 1 }
+ Disis = \musical_pitch { -2 1 2 }
+ Dississ = \musical_pitch { -2 1 2 }
+ Eses = \musical_pitch { -2 2 -2 }
+ Essess = \musical_pitch { -2 2 -2 }
+ Es = \musical_pitch { -2 2 -1 }
+ Ess = \musical_pitch { -2 2 -1 }
+ E = \musical_pitch { -2 2 0 }
+ E = \musical_pitch { -2 2 0 }
+ Eis = \musical_pitch { -2 2 1 }
+ Eiss = \musical_pitch { -2 2 1 }
+ Eisis = \musical_pitch { -2 2 2 }
+ Eississ = \musical_pitch { -2 2 2 }
+ Feses = \musical_pitch { -2 3 -2 }
+ Fessess = \musical_pitch { -2 3 -2 }
+ Fes = \musical_pitch { -2 3 -1 }
+ Fess = \musical_pitch { -2 3 -1 }
+ F = \musical_pitch { -2 3 0 }
+ Fis = \musical_pitch { -2 3 1 }
+ Fiss = \musical_pitch { -2 3 1 }
+ Fisis = \musical_pitch { -2 3 2 }
+ Fississ = \musical_pitch { -2 3 2 }
+ Geses = \musical_pitch { -2 4 -2 }
+ Gessess = \musical_pitch { -2 4 -2 }
+ Ges = \musical_pitch { -2 4 -1 }
+ Gess = \musical_pitch { -2 4 -1 }
+ G = \musical_pitch { -2 4 0 }
+ Gis = \musical_pitch { -2 4 1 }
+ Giss = \musical_pitch { -2 4 1 }
+ Gisis = \musical_pitch { -2 4 2 }
+ Gississ = \musical_pitch { -2 4 2 }
+ Aeses = \musical_pitch { -2 5 -2 }
+ Aessess = \musical_pitch { -2 5 -2 }
+ Ases = \musical_pitch { -2 5 -2 }
+ Assess = \musical_pitch { -2 5 -2 }
+ Aes = \musical_pitch { -2 5 -1 }
+ Aess = \musical_pitch { -2 5 -1 }
+ As = \musical_pitch { -2 5 -1 }
+ Ass = \musical_pitch { -2 5 -1 }
+ A = \musical_pitch { -2 5 0 }
+ A = \musical_pitch { -2 5 0 }
+ Ais = \musical_pitch { -2 5 1 }
+ Aiss = \musical_pitch { -2 5 1 }
+ Aisis = \musical_pitch { -2 5 2 }
+ Aississ = \musical_pitch { -2 5 2 }
+ Bes = \musical_pitch { -2 6 -2 }
+ Bess = \musical_pitch { -2 6 -2 }
+ B = \musical_pitch { -2 6 -1 }
+ H = \musical_pitch { -2 6 0 }
+ His = \musical_pitch { -2 6 1 }
+ Hiss = \musical_pitch { -2 6 1 }
+ Hisis = \musical_pitch { -2 6 2 }
+ Hississ = \musical_pitch { -2 6 2 }
}
% have a rhythmic part too. This is the reason that we don't write 'note { .. }'
%
\notenames {
- cessess = \melodic_request { -1 0 -2 }
- cess = \melodic_request { -1 0 -1 }
- c = \melodic_request { -1 0 0 }
- ciss = \melodic_request { -1 0 1 }
- cississ = \melodic_request { -1 0 2 }
- dessess = \melodic_request { -1 1 -2 }
- dess = \melodic_request { -1 1 -1 }
- d = \melodic_request { -1 1 0 }
- diss = \melodic_request { -1 1 1 }
- dississ = \melodic_request { -1 1 2 }
- essess = \melodic_request { -1 2 -2 }
- ess = \melodic_request { -1 2 -1 }
- e = \melodic_request { -1 2 0 }
- eiss = \melodic_request { -1 2 1 }
- eississ = \melodic_request { -1 2 2 }
- fessess = \melodic_request { -1 3 -2 }
- fess = \melodic_request { -1 3 -1 }
- f = \melodic_request { -1 3 0 }
- fiss = \melodic_request { -1 3 1 }
- fississ = \melodic_request { -1 3 2 }
- gessess = \melodic_request { -1 4 -2 }
- gess = \melodic_request { -1 4 -1 }
- g = \melodic_request { -1 4 0 }
- giss = \melodic_request { -1 4 1 }
- gississ = \melodic_request { -1 4 2 }
- assess = \melodic_request { -1 5 -2 }
- ass = \melodic_request { -1 5 -1 }
- a = \melodic_request { -1 5 0 }
- aiss = \melodic_request { -1 5 1 }
- aississ = \melodic_request { -1 5 2 }
- hessess = \melodic_request { -1 6 -2 }
- b = \melodic_request { -1 6 -1 }
- h = \melodic_request { -1 6 0 }
- hiss = \melodic_request { -1 6 1 }
- hississ = \melodic_request { -1 6 2 }
+ cessess = \musical_pitch { -1 0 -2 }
+ cess = \musical_pitch { -1 0 -1 }
+ c = \musical_pitch { -1 0 0 }
+ ciss = \musical_pitch { -1 0 1 }
+ cississ = \musical_pitch { -1 0 2 }
+ dessess = \musical_pitch { -1 1 -2 }
+ dess = \musical_pitch { -1 1 -1 }
+ d = \musical_pitch { -1 1 0 }
+ diss = \musical_pitch { -1 1 1 }
+ dississ = \musical_pitch { -1 1 2 }
+ essess = \musical_pitch { -1 2 -2 }
+ ess = \musical_pitch { -1 2 -1 }
+ e = \musical_pitch { -1 2 0 }
+ eiss = \musical_pitch { -1 2 1 }
+ eississ = \musical_pitch { -1 2 2 }
+ fessess = \musical_pitch { -1 3 -2 }
+ fess = \musical_pitch { -1 3 -1 }
+ f = \musical_pitch { -1 3 0 }
+ fiss = \musical_pitch { -1 3 1 }
+ fississ = \musical_pitch { -1 3 2 }
+ gessess = \musical_pitch { -1 4 -2 }
+ gess = \musical_pitch { -1 4 -1 }
+ g = \musical_pitch { -1 4 0 }
+ giss = \musical_pitch { -1 4 1 }
+ gississ = \musical_pitch { -1 4 2 }
+ assess = \musical_pitch { -1 5 -2 }
+ ass = \musical_pitch { -1 5 -1 }
+ a = \musical_pitch { -1 5 0 }
+ aiss = \musical_pitch { -1 5 1 }
+ aississ = \musical_pitch { -1 5 2 }
+ hessess = \musical_pitch { -1 6 -2 }
+ b = \musical_pitch { -1 6 -1 }
+ h = \musical_pitch { -1 6 0 }
+ hiss = \musical_pitch { -1 6 1 }
+ hississ = \musical_pitch { -1 6 2 }
%
%
- Cessess = \melodic_request { -2 0 -2 }
- Cess = \melodic_request { -2 0 -1 }
- C = \melodic_request { -2 0 0 }
- Ciss = \melodic_request { -2 0 1 }
- Cississ = \melodic_request { -2 0 2 }
- Dessess = \melodic_request { -2 1 -2 }
- Dess = \melodic_request { -2 1 -1 }
- D = \melodic_request { -2 1 0 }
- Diss = \melodic_request { -2 1 1 }
- Dississ = \melodic_request { -2 1 2 }
- Essess = \melodic_request { -2 2 -2 }
- Ess = \melodic_request { -2 2 -1 }
- E = \melodic_request { -2 2 0 }
- Eiss = \melodic_request { -2 2 1 }
- Eississ = \melodic_request { -2 2 2 }
- Fessess = \melodic_request { -2 3 -2 }
- Fess = \melodic_request { -2 3 -1 }
- F = \melodic_request { -2 3 0 }
- Fiss = \melodic_request { -2 3 1 }
- Fississ = \melodic_request { -2 3 2 }
- Gessess = \melodic_request { -2 4 -2 }
- Gess = \melodic_request { -2 4 -1 }
- G = \melodic_request { -2 4 0 }
- Giss = \melodic_request { -2 4 1 }
- Gississ = \melodic_request { -2 4 2 }
- Assess = \melodic_request { -2 5 -2 }
- Ass = \melodic_request { -2 5 -1 }
- A = \melodic_request { -2 5 0 }
- Aiss = \melodic_request { -2 5 1 }
- Aississ = \melodic_request { -2 5 2 }
- Hessess = \melodic_request { -2 6 -2 }
- B = \melodic_request { -2 6 -1 }
- H = \melodic_request { -2 6 0 }
- Hiss = \melodic_request { -2 6 1 }
- Hississ = \melodic_request { -2 6 2 }
+ Cessess = \musical_pitch { -2 0 -2 }
+ Cess = \musical_pitch { -2 0 -1 }
+ C = \musical_pitch { -2 0 0 }
+ Ciss = \musical_pitch { -2 0 1 }
+ Cississ = \musical_pitch { -2 0 2 }
+ Dessess = \musical_pitch { -2 1 -2 }
+ Dess = \musical_pitch { -2 1 -1 }
+ D = \musical_pitch { -2 1 0 }
+ Diss = \musical_pitch { -2 1 1 }
+ Dississ = \musical_pitch { -2 1 2 }
+ Essess = \musical_pitch { -2 2 -2 }
+ Ess = \musical_pitch { -2 2 -1 }
+ E = \musical_pitch { -2 2 0 }
+ Eiss = \musical_pitch { -2 2 1 }
+ Eississ = \musical_pitch { -2 2 2 }
+ Fessess = \musical_pitch { -2 3 -2 }
+ Fess = \musical_pitch { -2 3 -1 }
+ F = \musical_pitch { -2 3 0 }
+ Fiss = \musical_pitch { -2 3 1 }
+ Fississ = \musical_pitch { -2 3 2 }
+ Gessess = \musical_pitch { -2 4 -2 }
+ Gess = \musical_pitch { -2 4 -1 }
+ G = \musical_pitch { -2 4 0 }
+ Giss = \musical_pitch { -2 4 1 }
+ Gississ = \musical_pitch { -2 4 2 }
+ Assess = \musical_pitch { -2 5 -2 }
+ Ass = \musical_pitch { -2 5 -1 }
+ A = \musical_pitch { -2 5 0 }
+ Aiss = \musical_pitch { -2 5 1 }
+ Aississ = \musical_pitch { -2 5 2 }
+ Hessess = \musical_pitch { -2 6 -2 }
+ B = \musical_pitch { -2 6 -1 }
+ H = \musical_pitch { -2 6 0 }
+ Hiss = \musical_pitch { -2 6 1 }
+ Hississ = \musical_pitch { -2 6 2 }
}
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.14";
+\version "0.1.15";
shortlong = \melodic{
\octave c';
--- /dev/null
+\header{
+% should look the same
+title="symmetry";
+}
+\score{
+ \melodic{
+ \octave relative;
+ [g'8( e )c' g,]
+ [d'( f' )a, a]
+ }
+ \paper{
+ castingalgorithm = \Wordwrap;
+ linewidth = 50.0\mm;
+ }
+}
% (maybe even sooner :-)
%
-\version "0.1.14";
+\version "0.1.15";
alto1 = \melodic{
\meter 4/4;
-\version "0.1.14";
+\version "0.1.15";
blah = \melodic{
Tested Features: example file with comments
%}
-\version "0.1.14";
+\version "0.1.15";
% the % is a comment.
%}
-\version "0.1.14";
+\version "0.1.15";
\score{
\melodic
% \lbheel \lbheel \lfheel \lftoe
% \rbheel \rbtoe \rfheel \rftoe
-\version "0.1.14";
+\version "0.1.15";
\score{
\melodic {
* organ staff...
%}
-\version "0.1.14";
+\version "0.1.15";
noShift = { \property Voice.hshift = 0 }
Shift = { \property Voice.hshift = 1 }
-\version "0.1.14";
+\version "0.1.15";
ritme = \melodic{ %\octave ;
\partial 8;
% scales with accents.
%
-\version "0.1.14";
+\version "0.1.15";
blah = \melodic {
\meter 6/8;
\octave c, ;
-\version "0.1.14";
+\version "0.1.15";
blah = \melodic {
TestedFeatures = "beams and beamflags";
}
-\version "0.1.14";
+\version "0.1.15";
\score{
<
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.14";
+\version "0.1.15";
shortlong = \melodic{
c4()c( c c |
copyright = "public domain";
Tested = "test the Collision resolution ";
}
-\version "0.1.14";
+\version "0.1.15";
\include "paper20.ly"
-\version "0.1.14";
+\version "0.1.15";
oden = \lyric{
O8 |
-\version "0.1.14";
+\version "0.1.15";
FontBody= \melodic{
\octave c';
\bar "|:";
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.14";
+\version "0.1.15";
\include "font-body.ly"
\score{
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.14";
+\version "0.1.15";
\include "font-body.ly"
\score{
TestedFeatures = "This file tests some nasty Gourlay spacings";
}
-\version "0.1.14";
+\version "0.1.15";
%{
--- /dev/null
+\score{
+ \melodic{
+ c4 c c c \break
+ d d d d \break
+ R1*4 \break
+ e4 e e e \break
+ f f f f \break
+ }
+ \paper{
+ linewidth = 40.0\mm;
+
+% this is broken: edit init/engraver.ly
+%
+%{
+Staff = \translator {
+ \type "Engraver_group_engraver";
+ defaultclef = violin;
+
+ \consists "Bar_engraver";
+ \consists "Clef_engraver";
+ \consists "Key_engraver";
+ \consists "Meter_engraver";
+ \consists "Local_key_engraver";
+ \consists "Staff_sym_engraver";
+ \consists "Collision_engraver";
+ \consists "Rest_collision_engraver";
+ \consists "Bar_column_engraver";
+ \consists "Bar_number_engraver";
+
+ \consists "Separating_line_group_engraver";
+% \consists "Line_group_engraver";
+ \consists "Hara_kiri_line_group_engraver";
+%}
+ }
+ }
+}
-\version "0.1.14";
+\version "0.1.15";
\score{
\melodic{
\octave relative;
[c16 \stemdown c'' \stemboth c,, d]
+ \stemdown [d'' a \stemboth c,, g,]
+ \stemup [g c' \stemboth a'' d']
}
}
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.14";
+\version "0.1.15";
shortlong = \melodic{
c4()c( c c |
-\version "0.1.14";
+\version "0.1.15";
\score{
\melodic{\octave c';
TestedFeatures = "This file tests various spacings";
}
-\version "0.1.14";
+\version "0.1.15";
multipart = \melodic{
\multi 3 <
}
-\version "0.1.14";
+\version "0.1.15";
beamintervals = \melodic{
\meter 7/4;
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "0.1.14";
+\version "0.1.15";
\score{
\melodic{
Tested Features lyrics and chords
%}
-\version "0.1.14";
+\version "0.1.15";
melodie = \melodic {
\clef"violin";
Tested Features: lyrics, interleaving lyrics and staffs
%}
-\version "0.1.14";
+\version "0.1.15";
melody = \melodic{
\clef violin;
(c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
*/
+#include "config.hh"
#include "source-file.hh"
#include "plist.tcc"
#include "pcursor.tcc"
#include "cursor.tcc"
#include "list.tcc"
-// #if!defined(__CYGWIN32__) && __GNUC_MINOR__ < 8
-// it seems irix (-Dsgi ?) and sunos (-Dsparc ?)
-
-// see comments in lily/template1.cc mi2mu/template9.cc
-
-#if (defined(__linux__) && (__GNUC_MINOR__ < 8))
+#ifdef NEED_EXPLICIT_INSTANTIATION
LIST_INSTANTIATE (void *);
#endif
MAJOR_VERSION=0
MINOR_VERSION=1
-PATCH_LEVEL=64
+PATCH_LEVEL=65
MY_PATCH_LEVEL=
*/
{
Real dx = stems_.top ()->hpos_f () - stems_[0]->hpos_f ();
- left_y_ = sinfo[0].idealy_f_ >? sinfo.top ().idealy_f_ - slope_f_ * dx;
+ if (sinfo[0].dir_ == sinfo.top ().dir_)
+ left_y_ = sinfo[0].idealy_f_ >? sinfo.top ().idealy_f_ - slope_f_ * dx;
+ // knee
+ else
+ left_y_ = sinfo[0].idealy_f_;
}
}
delete mi;
}
}
+
+
void
Chord_iterator::do_print() const
{
/* *************** */
void
-Key_change_req::transpose (Melodic_req const * d) const
+Key_change_req::transpose (Musical_pitch d) const
{
- WARN << _("don't know how to transpose a key. \n");
- for (int i=0; i < melodic_p_arr_.size(); i++)
- {
- melodic_p_arr_[i]->transpose (d);
- }
+ WARN << _("don't know how to transpose a key. \n"); // TODO!
}
void
Key_change_req::squash_octaves()
{
- for (int i=0; i < melodic_p_arr_.size(); i++)
+ for (int i=0; i < pitch_arr_.size(); i++)
{
- melodic_p_arr_[i]->octave_i_ = 0;
+ pitch_arr_[i].octave_i_ = 0;
}
}
Key_change_req::do_print() const
{
#ifndef NPRINT
- for (int i=0; i < melodic_p_arr_.size(); i++)
+ for (int i=0; i < pitch_arr_.size(); i++)
{
- melodic_p_arr_[i]->print();
+ pitch_arr_[i].print();
}
#endif
}
{
}
-Key_change_req::Key_change_req (Key_change_req const&c)
- : Command_req (c)
-{
- for (int i=0; i < c.melodic_p_arr_.size(); i++)
- melodic_p_arr_.push (c.melodic_p_arr_[i]->clone()->musical ()->melodic ());
- minor_b_ = c.minor_b_;
- multi_octave_b_ = c.multi_octave_b_;
-}
-
-Key_change_req::~Key_change_req()
-{
- for (int i=0; i < melodic_p_arr_.size(); i++)
- delete melodic_p_arr_[i];
-}
-
int
Key_change_req::flats_i()
{
int flats_i = 0;
- for (int i = 0; i < melodic_p_arr_.size(); i++)
+ for (int i = 0; i < pitch_arr_.size(); i++)
{
- Melodic_req* mel_l = melodic_p_arr_[i]->melodic();
- assert (mel_l);
- if (mel_l->accidental_i_ < 0)
- flats_i -= mel_l->accidental_i_;
+ if (pitch_arr_[i].accidental_i_ < 0)
+ flats_i -= pitch_arr_[i].accidental_i_;
}
return flats_i;
}
Key_change_req::sharps_i()
{
int sharps_i = 0;
- for (int i = 0; i < melodic_p_arr_.size(); i++)
+ for (int i = 0; i < pitch_arr_.size(); i++)
{
- Melodic_req* mel_l = melodic_p_arr_[i]->melodic();
- assert (mel_l);
- if (mel_l->accidental_i_ > 0)
- sharps_i+= mel_l->accidental_i_;
+ if (pitch_arr_[i].accidental_i_ < 0)
+ sharps_i += pitch_arr_[i].accidental_i_;
}
return sharps_i;
}
bool check_malloc_b = false;
-// #define MEMORY_PARANOID
+//#define MEMORY_PARANOID
#ifdef MEMORY_PARANOID
--- /dev/null
+/*
+ hara-kiri-line-group-engraver.cc -- implement Hara_kiri_line_group_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+*/
+
+#include "staff-sym.hh"
+#include "command-request.hh"
+#include "p-col.hh"
+#include "hara-kiri-vertical-group-spanner.hh"
+#include "hara-kiri-line-group-engraver.hh"
+
+IMPLEMENT_IS_TYPE_B1 (Hara_kiri_line_group_engraver,Engraver);
+ADD_THIS_TRANSLATOR (Hara_kiri_line_group_engraver);
+
+void
+Hara_kiri_line_group_engraver::create_line_spanner ()
+{
+ staffline_p_ = new Hara_kiri_vertical_group_spanner;
+}
--- /dev/null
+/*
+ hara-kiri-vertical-group-spanner.cc
+ -- implement Hara_kiri_vertical_group_spanner
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+*/
+
+#include "hara-kiri-vertical-group-spanner.hh"
+#include "item.hh"
+#include "note-head.hh"
+#include "p-col.hh"
+#include "molecule.hh"
+
+IMPLEMENT_IS_TYPE_B1 (Hara_kiri_vertical_group_spanner, Vertical_group_spanner);
+
+void
+Hara_kiri_vertical_group_spanner::add_element (Graphical_element* e)
+{
+ if (e->is_type_b (Note_head::static_name ()))
+ add_dependency ((Score_elem*)e);
+ Vertical_group_spanner::add_element (e);
+}
+
+// we never get here, or indeed in axis-group-spanner::do_break_processing?
+void
+Hara_kiri_vertical_group_spanner::do_break_processing ()
+{
+ Vertical_group_spanner::do_break_processing ();
+ if (dependency_size ())
+ return;
+ transparent_b_ = true;
+}
+
+// too late ?
+void
+Hara_kiri_vertical_group_spanner::do_post_processing ()
+{
+ if (dependency_size ())
+ return;
+ transparent_b_ = true;
+}
+
+Molecule*
+Hara_kiri_vertical_group_spanner::brew_molecule_p() const
+{
+ // aaarg: go away
+ if (1) // transparent_b_)
+ return new Molecule;
+ return Vertical_group_spanner::brew_molecule_p ();
+}
+
+
announce_element (Score_elem_info (dot_p_,0));
}
- note_p_->position_i_ = note_req_l_->note()->height ();
+ note_p_->position_i_ = note_req_l_->note()->pitch_.steps ();
Staff_info inf = get_staff_info();
if (inf.c0_position_i_l_)
#include "request.hh"
#include "varray.hh"
#include "duration.hh"
+#include "musical-pitch.hh"
/** Request which are assumed to be "happening" before the
musical requests. */
*/
class Key_change_req : public Command_req {
public:
- Array<Melodic_req*> melodic_p_arr_;
+ Array<Musical_pitch> pitch_arr_;
bool minor_b_;
/// don't ignore the octaves in #melodic_p_arr_#?
bool multi_octave_b_;
Key_change_req();
- Key_change_req (Key_change_req const&);
- ~Key_change_req();
REQUESTMETHODS(Key_change_req, keychange);
/// squash the octaves to 1
/// return number of sharps in key
int sharps_i();
- void transpose (Melodic_req const * d) const;
+ void transpose (Musical_pitch d) const;
/// is minor key?
int minor_b();
};
--- /dev/null
+/*
+ hara-kiri-line-group-grav.hh -- declare Hara_kiri_line_group_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+*/
+
+
+#ifndef HARA_KIRI_LINE_GROUP_GRAV_HH
+#define HARA_KIRI_LINE_GROUP_GRAV_HH
+
+#include "line-group-grav.hh"
+
+/**
+ Just as Line_group_engraver, but won't disgrace Lily by typesetting
+ an empty line (for orchestral scores).
+ */
+class Hara_kiri_line_group_engraver : public Line_group_engraver
+{
+public:
+ TRANSLATOR_CLONE (Hara_kiri_line_group_engraver);
+ DECLARE_MY_RUNTIME_TYPEINFO;
+
+protected:
+ virtual void create_line_spanner ();
+};
+
+
+#endif // HARA_KIRI_LINE_GROUP_GRAV_HH
+
--- /dev/null
+/*
+ hara-kiri-vertical-group-spanner.hh -- declare Har_kiri_vertical_group_spanner
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+*/
+
+
+#ifndef HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
+#define HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
+
+#include "vertical-group-spanner.hh"
+
+/**
+ As Vertical_group_spanner, but keeps dependencies to notes.
+ */
+class Hara_kiri_vertical_group_spanner : public Vertical_group_spanner
+{
+public:
+ DECLARE_MY_RUNTIME_TYPEINFO;
+
+ virtual void do_post_processing ();
+ virtual void add_element (Graphical_element* e);
+
+protected:
+ SCORE_ELEM_CLONE (Hara_kiri_vertical_group_spanner);
+
+ virtual void do_break_processing ();
+ virtual Molecule* brew_molecule_p () const;
+};
+
+
+#endif // HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
*/
class Key_engraver : public Engraver {
void create_key();
- void read_req (Key_change_req * r);
+ void read_req (Key_change_req const * r);
public:
Key_engraver();
#include "varray.hh"
#include "scalar.hh"
+#include "lily-proto.hh"
/// administration of current key in one octave.
class Octave_key {
bool multi_octave_b_;
void clear ();
- Octave_key&oct (int);
+ Octave_key const& oct (int) const;
void set (int name, int acc);
- void set (int oct, int name, int acc);
+ void set (Musical_pitch);
+
+ bool different_acc (Musical_pitch) const;
+
Key();
void print () const;
};
struct General_script_def;
struct Graphical_element;
struct Music_output;
+struct Musical_pitch;
struct Music_output_def;
struct Global_translator;
struct Group_change_req;
+struct Hara_kiri_line_group_engraver;
+struct Hara_kiri_vertical_group_spanner;
struct Head_column;
struct Header;
struct Horizontal_align_item;
struct Keyword;
struct Keyword_table;
struct Lily_stream;
+struct Line_group_engraver;
struct Line_of_score;
struct Line_of_staff;
struct Line_spacer;
struct Pulk_voice;
struct Pulk_voices;
struct Rational;
+struct Music_wrapper_iterator;
+struct Music_wrapper;
+struct Relative_octave_music;
struct Engraver_group_engraver;
struct Performer;
struct Performer_group_performer;
#define LOCALKEYITEM_HH
#include "item.hh"
#include "varray.hh"
-
-struct Local_acc {
- int name_i_;
- int accidental_i_;
- int octave_i_;
- static int compare (Local_acc&, Local_acc&);
-};
+#include "musical-pitch.hh"
/**
Accidentals which can be different for each octave.
class Local_key_item : public Item {
public:
DECLARE_MY_RUNTIME_TYPEINFO;
- Array<Local_acc> accs;
+ Array<Musical_pitch> accs;
Link_array<Item> support_items_;
int c0_position;
Local_key_item (int c0position);
void add_support (Item*);
- void add (int oct, int pitch, int acc);
- void add (Melodic_req*);
+ void add (Musical_pitch);
protected:
virtual void do_pre_processing();
virtual void do_substitute_dependency (Score_elem*,Score_elem*);
/**
Music can be a list of other "Music" elements
*/
-class Music_list : public Music {
+class Music_list : public Music
+{
public:
- int multi_level_i_;
-
- Music_list (Music_list const&);
- Music_list();
- DECLARE_MY_RUNTIME_TYPEINFO;
- VIRTUAL_COPY_CONS(Music_list,Music);
- virtual void add (Music*);
- virtual void transpose (Melodic_req const *);
+ int multi_level_i_;
+
+ Musical_pitch do_relative_octave (Musical_pitch, bool);
+ Music_list (Music_list const&);
+ Music_list();
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ VIRTUAL_COPY_CONS(Music_list,Music);
+ virtual void add (Music*);
+ virtual void transpose (Musical_pitch );
- Pointer_list<Music*> music_p_list_;
+ Pointer_list<Music*> music_p_list_;
protected:
- virtual void do_print() const;
+ virtual void do_print() const;
};
/**
Chord is a list of music-elements which happen simultaneously
*/
-class Chord : public Music_list {
+class Chord : public Music_list
+{
public:
- Chord();
- DECLARE_MY_RUNTIME_TYPEINFO;
- VIRTUAL_COPY_CONS(Chord,Music);
- virtual void translate (Moment dt);
- virtual MInterval time_int() const;
+ Chord();
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ VIRTUAL_COPY_CONS(Chord,Music);
+
+ virtual Musical_pitch to_relative_octave (Musical_pitch);
+ virtual void translate (Moment dt);
+ virtual MInterval time_int() const;
};
/**
The request is a collection of Requests. A note that you enter in mudela is
one Request_chord, one syllable of lyrics is one Request_chord
*/
-class Request_chord : public Chord {
+class Request_chord : public Chord
+{
public:
- DECLARE_MY_RUNTIME_TYPEINFO;
- Request_chord();
- VIRTUAL_COPY_CONS(Request_chord,Music);
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ virtual Musical_pitch to_relative_octave (Musical_pitch);
+ Request_chord();
+ VIRTUAL_COPY_CONS(Request_chord, Music);
};
-
/**
Voice is a list of music-elements which are placed behind each other.
*/
-class Voice : public Music_list {
+class Voice : public Music_list
+{
public:
- Moment offset_mom_;
-
- Voice();
- DECLARE_MY_RUNTIME_TYPEINFO;
- VIRTUAL_COPY_CONS(Voice, Music);
- virtual void translate (Moment dt);
- virtual MInterval time_int() const;
-};
-
-/** A simple piece of music, which wishes to change the spot of its
- interpretor */
-class Change_reg : public Music {
-public:
-
- /// what kind of iterator needed to walk this music?
- String type_str_;
-
- /// what name (or look for this name)
- String id_str_;
-
- DECLARE_MY_RUNTIME_TYPEINFO;
- VIRTUAL_COPY_CONS(Change_reg, Music);
+ Moment offset_mom_;
+ virtual Musical_pitch to_relative_octave (Musical_pitch);
+ Voice();
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ VIRTUAL_COPY_CONS(Voice, Music);
+ virtual void translate (Moment dt);
+ virtual MInterval time_int() const;
};
#endif // MUSIC_LIST_HH
--- /dev/null
+/*
+ music-wrapper-iterator.hh -- declare
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+
+ */
+
+#ifndef MUSIC_WRAPPER_ITERATOR_HH
+#define MUSIC_WRAPPER_ITERATOR_HH
+
+#include "music.hh"
+#include "music-iterator.hh"
+
+class Music_wrapper_iterator : public Music_iterator
+{
+ Music_iterator *child_iter_p_;
+ Music_wrapper *music_l_;
+public:
+ Music_wrapper_iterator (Music_wrapper*);
+ ~Music_wrapper_iterator ();
+ virtual void do_print () const;
+ virtual void construct_children () ;
+ virtual void process_and_next (Moment) ;
+ virtual Moment next_moment () const;
+ virtual bool ok () const;
+ DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif /* MUSIC_WRAPPER_ITERATOR_HH */
+
+
+
--- /dev/null
+/*
+ music-wrapper.hh -- declare Music_wrapper
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+
+ */
+
+#ifndef MUSIC_WRAPPER_HH
+#define MUSIC_WRAPPER_HH
+
+#include "music.hh"
+#include "musical-pitch.hh"
+
+class Music_wrapper : public Music
+{
+public:
+ Music * element_p_;
+ Music_wrapper (Music*);
+ virtual void transpose (Musical_pitch);
+ virtual void do_print () const;
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ VIRTUAL_COPY_CONS (Music_wrapper, Music);
+ Music_wrapper (Music_wrapper const&);
+ virtual MInterval time_int () const;
+ virtual ~Music_wrapper ();
+};
+
+
+
+#endif /* MUSIC_WRAPPER_HH */
+
/// what name (or look for this name)
String translator_id_str_;
+ virtual Musical_pitch to_relative_octave (Musical_pitch);
virtual MInterval time_int() const;
virtual ~Music(){}
void print() const;
- virtual void transpose (Melodic_req const *);
+ virtual void transpose (Musical_pitch );
virtual void translate (Moment dt);
VIRTUAL_COPY_CONS(Music,Music);
DECLARE_MY_RUNTIME_TYPEINFO;
--- /dev/null
+/*
+ musical-pitch.hh -- declare Musical_pitch
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+
+ */
+
+#ifndef MUSICAL_PITCH_HH
+#define MUSICAL_PITCH_HH
+#include "lily-proto.hh"
+
+/** The pitch as it figures in diatonal western music (12 semitones in
+ an octave).
+
+ It is not Music because, it has to duration associated
+*/
+struct Musical_pitch {
+ /// 0 is c, 6 is b
+ int notename_i_;
+ /// 0 is central c
+ int octave_i_;
+
+ /// 0 natural, 1 sharp, etc
+ int accidental_i_;
+ void init () ;
+ Musical_pitch to_relative_octave (Musical_pitch);
+ void transpose (Musical_pitch);
+ static int compare (Musical_pitch const&,Musical_pitch const&);
+ /// return large part of interval from central c
+ int steps() const;
+ /// return pitch from central c (in halfnotes)
+ int semitone_pitch() const;
+ Musical_pitch ();
+ void up_to (int);
+ void down_to (int);
+ String str () const;
+ void print () const;
+};
+
+#include "compare.hh"
+INSTANTIATE_COMPARE(Musical_pitch, Musical_pitch::compare);
+
+#endif /* MUSICAL_PITCH_HH */
+
#include "lily-proto.hh"
#include "request.hh"
#include "duration.hh"
-
+#include "musical-pitch.hh"
/**
A request which is coupled to a #Request_chord#
REQUESTMETHODS(Lyric_req, lreq_l);
};
+
+
/// request which has some kind of pitch
struct Melodic_req :virtual Musical_req
{
- /// 0 is c, 6 is b
- int notename_i_;
- /// 0 is central c
- int octave_i_;
-
- /// 0 natural, 1 sharp, etc
- int accidental_i_;
-
- /// return height from central c (in halflines)
- int height() const;
-
+ Musical_pitch pitch_;
/// transpose. #delta# is relative to central c.
- virtual void transpose (Melodic_req const *delta);
- /// return pitch from central c (in halfnotes)
- int pitch() const;
+ virtual void transpose (Musical_pitch delta);
Melodic_req();
bool do_equal_b (Request*) const;
static int compare (Melodic_req const&,Melodic_req const&);
#include <FlexLexer.h>
+#include "dictionary.hh"
#include "lily-proto.hh"
#include "lily-proto.hh"
#include "fproto.hh"
#include "string.hh"
#include "includable-lexer.hh"
#include "duration.hh"
+#include "musical-pitch.hh"
bool busy_parsing();
void kill_lexer();
void * lexval_l;
Scope * toplevel_scope_p_;
- Notename_table *note_tab_p_;
+ Notename_table *note_tab_p_;
Array<Scope*> scope_l_arr_;
Keyword_table * keytable_p_;
int errorlevel_i_;
void start_main_input ();
void clear_notenames();
+ bool notename_b(String) const;
Identifier*lookup_identifier (String s);
- Melodic_req* lookup_melodic_req_l (String s);
+ Musical_pitch lookup_pitch (String s);
void push_note_state();
void push_lyric_state();
void pop_state();
~My_lily_lexer();
int yylex();
void print_declarations (bool init_b) const;
- void add_notename (String, Melodic_req*);
+ void add_notename (String, Musical_pitch);
bool note_state_b() const;
bool lyric_state_b() const;
};
#ifndef MY_LILY_PARSER_HH
#define MY_LILY_PARSER_HH
#include "lily-proto.hh"
-#include "duration.hh"
#include "string.hh"
#include "varray.hh"
#include "lily-proto.hh"
Chord* get_rest_element (String,Duration *);
Chord* get_word_element (Text_def*, Duration*);
Melodic_req* get_melodic_req (Melodic_req* melodic, int quotes);
- void set_nearest (Melodic_req* melodic);
String notename_str (Melodic_req* melodic);
-
void set_last_duration (Duration const *);
- void set_default_duration (Duration const *);
void set_abbrev_beam (int type_i);
- void set_duration_mode (String s);
- void set_octave_mode (String s);
friend int yyparse (void*);
public:
int abbrev_beam_type_i_;
int default_octave_i_;
- Melodic_req* last_melodic_;
Duration default_duration_;
Plet plet_;
Header *default_header_p_;
String textstyle_str_;
bool first_b_;
- bool last_duration_mode_b_ ;
- bool relative_octave_mode_b_;
+
Array<Request*> pre_reqs, post_reqs;
int fatal_error_i_;
Sources * source_l_;
My_lily_lexer * lexer_p_;
Moment plet_mom();
- void add_notename (String, Melodic_req* req_p);
+ void add_notename (String, Musical_pitch req_p);
Input here_input() const;
void remember_spot();
Input pop_spot();
#include "string.hh"
#include "lily-proto.hh"
#include "dictionary.hh"
+#include "musical-pitch.hh"
-class Notename_table : Dictionary< P<Melodic_req> >{
+class Notename_table : public Dictionary< Musical_pitch >{
public:
- void add (String, Melodic_req*);
- Melodic_req*get_l (String);
+ String get_name (Musical_pitch) const;
};
#endif // NOTENAME_TABLE_HH
--- /dev/null
+/*
+ relative-music-iterator.hh -- declare
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+
+ */
+
+#ifndef RELATIVE_MUSIC_ITERATOR_HH
+#define RELATIVE_MUSIC_ITERATOR_HH
+
+
+
+#error
+#endif /* RELATIVE_MUSIC_ITERATOR_HH */
+
--- /dev/null
+/*
+ relative-music.hh -- declare Relative_octave_music
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+
+ */
+
+#ifndef RELATIVE_MUSIC_HH
+#define RELATIVE_MUSIC_HH
+
+#include "music-wrapper.hh"
+
+class Relative_octave_music : public Music_wrapper
+{
+public:
+ Musical_pitch last_pitch_;
+
+ void do_print () const;
+ Relative_octave_music (Music*, Musical_pitch);
+ DECLARE_MY_RUNTIME_TYPEINFO;
+ VIRTUAL_COPY_CONS (Relative_octave_music, Music);
+ virtual Musical_pitch to_relative_octave (Musical_pitch);
+};
+
+
+#endif /* RELATIVE_MUSIC_HH */
+
VIRTUAL_COPY_CONS(Request,Music);
virtual MInterval time_int() const;
- virtual void transpose (Melodic_req const &){}
virtual Moment duration() const { return 0; }
/* accessors for children
void
-Key_engraver::read_req (Key_change_req * r)
+Key_engraver::read_req (Key_change_req const * r)
{
key_.clear ();
key_.multi_octave_b_ = r->multi_octave_b_;
accidental_idx_arr_.clear();
- for (int i = 0; i < r->melodic_p_arr_.size(); i ++)
+ for (int i = 0; i < r->pitch_arr_.size(); i ++)
{
- Melodic_req * m_l =r->melodic_p_arr_[i];
- int n_i =m_l->notename_i_;
- int a_i = m_l->accidental_i_;
- int o_i = m_l->octave_i_;
+ Musical_pitch m_l =r->pitch_arr_[i];
if (r->multi_octave_b_)
- key_.set (o_i, n_i, a_i);
+ key_.set (m_l);
else
- key_.set (n_i, a_i);
- accidental_idx_arr_.push (n_i);
+ key_.set (m_l.notename_i_, m_l.accidental_i_);
+
+ accidental_idx_arr_.push (m_l.notename_i_);
}
}
#include "key.hh"
#include "debug.hh"
+#include "musical-pitch.hh"
const int NUMBER_OF_OCTAVES=14; // ugh..
const int ZEROOCTAVE=7;
return i;
}
-Octave_key&
-Key::oct (int i)
+Octave_key const&
+Key::oct (int i) const
{
-
return octaves_[octave_to_index (i)];
}
}
void
-Key::set (int o, int n , int a)
+Key::set (Musical_pitch p)
{
- int i = octave_to_index (o);
- octaves_[i].set (n,a);
+ int i = octave_to_index (p.octave_i_);
+ octaves_[i].set (p.notename_i_,p.accidental_i_);
}
void
DOUT << "}\n";
}
}
+
+bool
+Key::different_acc (Musical_pitch p)const
+{
+ return oct (p.octave_i_).acc (p.notename_i_) == p.accidental_i_;
+}
return id->token_code_i_;
}
if (YYSTATE != notes) {
- Melodic_req * mel_l = lookup_melodic_req_l (str);
- if (mel_l) {
- DOUT << "(notename)\n";
- yylval.melreq = mel_l;
- mel_l->set_spot (Input (source_file_l (), here_ch_C ()));
- return NOTENAME_IDENTIFIER;
- }
+ if (notename_b (str))
+ {
+ yylval.pitch = new Musical_pitch (lookup_pitch (str));
+ return NOTENAME_PITCH;
+ }
}
if (check_debug)
print_declarations (true);
{
DOUT << "word: `" << str<< "'\n";
if (YYSTATE == notes){
- Melodic_req * mel_l = lookup_melodic_req_l (str);
- if (mel_l) {
+ if (notename_b (str)) {
DOUT << "(notename)\n";
- yylval.melreq = mel_l;
- mel_l->set_spot (Input (source_file_l (), here_ch_C ()));
- return NOTENAME_IDENTIFIER;
+ yylval.pitch = new Musical_pitch (lookup_pitch (str));
+
+ return NOTENAME_PITCH;
}
}
!note_l->forceacc_b_)
continue;
- if (!note_l->forceacc_b_ &&
- local_key_.oct (note_l->octave_i_).acc (note_l->notename_i_)
- == note_l->accidental_i_)
+ if (!note_l->forceacc_b_
+ && local_key_.different_acc (note_l->pitch_))
continue;
if (!key_item_p_)
{
key_item_p_ = new Local_key_item (c0_i);
announce_element (Score_elem_info (key_item_p_, 0));
}
- key_item_p_->add (note_l);
+ key_item_p_->add (note_l->pitch_);
key_item_p_->add_support (support_l);
- local_key_.oct (note_l->octave_i_)
- .set (note_l->notename_i_, note_l->accidental_i_);
- }
+ local_key_.set (note_l->pitch_);
+ }
}
}
/*
- local-key-item.cc -- implement Local_key_item, Local_acc
+ local-key-item.cc -- implement Local_key_item, Musical_pitch
source file of the GNU LilyPond music typesetter
#include "note-head.hh"
#include "misc.hh"
-
-
Local_key_item::Local_key_item (int i)
{
c0_position = i;
}
void
-Local_key_item::add (Melodic_req*m_l)
+Local_key_item::add (Musical_pitch p)
{
- add (m_l->octave_i_, m_l->notename_i_, m_l->accidental_i_);
-}
-
-void
-Local_key_item::add (int o, int p , int a)
-{
- Local_acc l;
- l.octave_i_ = o;
- l.name_i_ = p;
- l.accidental_i_ = a;
for (int i=0; i< accs.size(); i++)
- if (!Local_acc::compare (l, accs[i]))
+ if (!Musical_pitch::compare (p, accs[i]))
return;
- accs.push (l);
+ accs.push (p);
}
void
Local_key_item::do_pre_processing()
{
- accs.sort (Local_acc::compare);
+ accs.sort (Musical_pitch::compare);
}
Molecule*
octave_mol_p= new Molecule;
}
lastoct = accs[i].octave_i_;
- Real dy = (accs[i].name_i_ + c0_position) * paper()->internote_f ();
+ Real dy = (accs[i].notename_i_ + c0_position) * paper()->internote_f ();
Atom a (paper()->lookup_l ()->accidental (accs[i].accidental_i_));
a.translate_axis (dy, Y_AXIS);
return output;
}
-int
-Local_acc::compare (Local_acc&a, Local_acc&b)
-{
- if (a.octave_i_ - b.octave_i_)
- return a.octave_i_ - b.octave_i_;
- if (a.name_i_ - b.name_i_)
- return a.name_i_ - b.name_i_;
-
- return a.accidental_i_ - b.accidental_i_;
-};
-
IMPLEMENT_IS_TYPE_B1(Local_key_item,Item);
void
int
Midi_note::pitch_i () const
{
- return audio_item_l_->req_l_->musical ()->melodic ()->pitch ();
+ return audio_item_l_->req_l_->musical ()->melodic ()->pitch_.semitone_pitch ();
}
String
int
Midi_note_off::pitch_i () const
{
- return audio_item_l_->req_l_->musical ()->melodic ()->pitch ();
+ return audio_item_l_->req_l_->musical ()->melodic ()->pitch_.semitone_pitch ();
}
String
#include "change-iterator.hh"
#include "change-translator.hh"
+#include "music-wrapper.hh"
+#include "music-wrapper-iterator.hh"
+
+
IMPLEMENT_IS_TYPE_B(Music_iterator);
p = new Property_iterator((Translation_property *) m);
else if (m->is_type_b (Change_translator::static_name ()))
p = new Change_iterator((Change_translator*) m);
+ else if (m->is_type_b (Music_wrapper::static_name ()))
+ p = new Music_wrapper_iterator ((Music_wrapper *)m);
+
if (m -> translator_type_str_.length_i ())
{
first_b_ = true;
}
+
#include "music.hh"
#include "debug.hh"
#include "music-list.hh"
+#include "musical-pitch.hh"
+#include "request.hh"
+#include "musical-request.hh"
Music_list::Music_list (Music_list const&s)
: Music (s)
{
multi_level_i_ = s.multi_level_i_;
for (iter (s.music_p_list_.top(), i); i.ok (); i++)
- add (i->clone());
+ add (i->clone());
}
IMPLEMENT_IS_TYPE_B1(Music_list, Music);
{
MInterval m;
for (iter (music_p_list_.top(), i); i.ok (); i++)
- m.unite (i->time_int());
+ m.unite (i->time_int());
return m;
}
Chord::translate (Moment m)
{
for (iter (music_p_list_.top(), i); i.ok (); i++)
- i->translate (m);
+ i->translate (m);
}
Chord::Chord()
Moment last=0;
for (iter (music_p_list_.top(), i); i.ok (); i++)
{
- MInterval interval = i->time_int();
+ MInterval interval = i->time_int();
/*
- c4 <> c4
+ c4 <> c4
*/
- if (!interval.empty_b())
- last += interval.length();
+ if (!interval.empty_b())
+ last += interval.length();
}
return offset_mom_ + MInterval (0,last);
}
+Musical_pitch
+Voice::to_relative_octave (Musical_pitch p)
+{
+ return do_relative_octave (p, false);
+}
+
+Musical_pitch
+Chord::to_relative_octave (Musical_pitch p)
+{
+ return do_relative_octave (p, true);
+}
+
void
Voice::translate (Moment dt)
{
Music_list::add (Music*m_p)
{
if (!m_p)
- return;
+ return;
m_p->parent_music_l_ = this;
music_p_list_.bottom().add (m_p);
}
void
-Music_list::transpose (Melodic_req const*rq)
+Music_list::transpose (Musical_pitch rq)
{
for (iter (music_p_list_.top(),i); i.ok (); i++)
- i->transpose (rq);
+ i->transpose (rq);
}
void
{
#ifndef NPRINT
for (iter (music_p_list_.top(),i); i.ok (); i++)
- i->print();
+ i->print();
#endif
}
{
multi_level_i_ =0;
}
+
+
+Musical_pitch
+Music_list::do_relative_octave (Musical_pitch last, bool ret_first)
+{
+
+ Musical_pitch retval;
+ int count=0;
+ for (iter (music_p_list_.top(),i); i.ok (); i++)
+ {
+ last = i->to_relative_octave (last);
+ if (!count ++ )
+ retval = last;
+ }
+ if (!ret_first)
+ retval = last;
+ return retval;
+}
+
+Musical_pitch
+Request_chord::to_relative_octave (Musical_pitch last)
+{
+ for (iter (music_p_list_.top(),i); i.ok (); i++)
+ {
+ Musical_req *m =((Request*)i.ptr ())->musical ();
+ if (m && m->melodic ())
+ {
+ Musical_pitch &pit = m->melodic()->pitch_;
+ pit.to_relative_octave (last);
+ return pit;
+ }
+ }
+ return last;
+}
+
+
--- /dev/null
+/*
+ music-wrapper-iterator.cc -- implement
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+
+ */
+
+
+#include "music-wrapper-iterator.hh"
+#include "music-wrapper.hh"
+
+Music_wrapper_iterator::Music_wrapper_iterator (Music_wrapper *r)
+{
+ child_iter_p_ =0;
+ music_l_ = r;
+}
+
+IMPLEMENT_IS_TYPE_B1(Music_wrapper_iterator, Music_iterator);
+
+void
+Music_wrapper_iterator::do_print () const
+{
+ child_iter_p_->print ();
+}
+
+void
+Music_wrapper_iterator::construct_children ()
+{
+ child_iter_p_ = get_iterator_p (music_l_->element_p_);
+}
+
+Music_wrapper_iterator::~Music_wrapper_iterator ()
+{
+ delete child_iter_p_;
+}
+
+
+bool
+Music_wrapper_iterator::ok () const
+{
+ return child_iter_p_->ok ();
+}
+
+void
+Music_wrapper_iterator::process_and_next (Moment m)
+{
+ child_iter_p_->process_and_next (m);
+ Music_iterator::process_and_next (m);
+}
+
+Moment
+Music_wrapper_iterator::next_moment () const
+{
+ return child_iter_p_->next_moment ();
+}
+
--- /dev/null
+/*
+ music-wrapper.cc -- implement
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+
+ */
+
+
+#include "music-wrapper.hh"
+
+Music_wrapper::~Music_wrapper ()
+{
+ delete element_p_;
+}
+
+Music_wrapper::Music_wrapper (Music_wrapper const&s)
+ : Music (s)
+{
+ element_p_ = (s.element_p_)?s.element_p_->clone ():0;
+}
+
+
+void
+Music_wrapper::do_print () const
+{
+ element_p_->print ();
+}
+void
+Music_wrapper::transpose (Musical_pitch p)
+{
+ if (element_p_)
+ element_p_-> transpose (p);
+}
+
+
+Music_wrapper::Music_wrapper(Music*p)
+{
+ element_p_ = p;
+}
+
+IMPLEMENT_IS_TYPE_B1 (Music_wrapper, Music);
+
+MInterval
+Music_wrapper::time_int () const
+{
+ return element_p_->time_int ();
+}
#include "music.hh"
#include "music-list.hh"
#include "debug.hh"
+#include "musical-pitch.hh"
MInterval
Music::time_int() const
}
void
-Music::transpose (Melodic_req const*)
+Music::transpose (Musical_pitch )
{
}
parent_music_l_ =0;
}
-IMPLEMENT_IS_TYPE_B1(Change_reg,Music)
+Musical_pitch
+Music::to_relative_octave (Musical_pitch m)
+{
+ return m;
+}
--- /dev/null
+/*
+ musical-pitch.cc -- implement Musical_pitch
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+
+ */
+#include "musical-pitch.hh"
+#include "debug.hh"
+
+Musical_pitch::Musical_pitch ()
+{
+ init ();
+}
+
+void
+Musical_pitch::init ()
+{
+ notename_i_ = 0;
+ octave_i_ = 0;
+ accidental_i_ = 0;
+}
+
+void
+Musical_pitch::print () const
+{
+#ifndef NPRINT
+ DOUT << str();
+#endif
+}
+
+int
+Musical_pitch::compare (Musical_pitch const &m1, Musical_pitch const &m2)
+{
+ int o= m1.octave_i_ - m2.octave_i_;
+ int n = m1.notename_i_ - m2.notename_i_;
+ int a = m1.accidental_i_ - m2.accidental_i_;
+
+ if (o)
+ return o;
+ if (n)
+ return n;
+ if (a)
+ return a;
+ return 0;
+}
+
+int
+Musical_pitch::steps () const
+{
+ return notename_i_ + octave_i_*7;
+}
+
+/*
+ should be settable from input to allow "viola"-mode
+ */
+static Byte pitch_byte_a[ ] = { 0, 2, 4, 5, 7, 9, 11 };
+
+int
+Musical_pitch::semitone_pitch () const
+{
+ return pitch_byte_a[ notename_i_ % 7 ] + accidental_i_ + octave_i_ * 12;
+}
+
+void
+Musical_pitch::transpose (Musical_pitch delta)
+{
+ int old_pitch = semitone_pitch ();
+ int delta_pitch = delta.semitone_pitch ();
+ octave_i_ += delta.octave_i_;
+ notename_i_ += delta.notename_i_;
+
+
+ while (notename_i_ >= 7)
+ {
+ notename_i_ -= 7;
+ octave_i_ ++;
+ }
+
+ int new_pitch = semitone_pitch ();
+ int delta_acc = new_pitch - old_pitch - delta_pitch;
+ accidental_i_ -= delta_acc;
+}
+
+
+char const *accname[] = {"double flat", "flat", "natural",
+ "sharp" , "double sharp"};
+
+String
+Musical_pitch::str () const
+{
+ int n = (notename_i_ + 2) % 7;
+ String s (char(n + 'a'));
+ if (accidental_i_)
+ s += " " + String (accname[accidental_i_ + 2]);
+
+ if (octave_i_)
+ s += String ((octave_i_> 0)? "^": "_") + String(octave_i_);
+
+
+ return s;
+}
+
+Musical_pitch
+Musical_pitch::to_relative_octave (Musical_pitch p)
+{
+ int oct_mod = octave_i_ + 1; // account for c' = octave 1 iso. 0 4
+ Musical_pitch up_pitch (p);
+ Musical_pitch down_pitch (p);
+
+ up_pitch.accidental_i_ = accidental_i_;
+ down_pitch.accidental_i_ = accidental_i_;
+
+ up_pitch.up_to (notename_i_);
+ down_pitch.down_to (notename_i_);
+ int h = p.steps ();
+ if (abs (up_pitch.steps () - h) < abs (down_pitch.steps () - h))
+ {
+ *this = up_pitch;
+ /* this sux imnsho
+ if (oct_mod > 0) // ugh
+ oct_mod --;*/
+ }
+ else
+ {
+ *this = down_pitch;
+ /* if (oct_mod < 0)
+ oct_mod ++;*/
+ }
+
+ octave_i_ += oct_mod;
+ return *this;
+}
+
+void
+Musical_pitch::up_to (int notename)
+{
+ if (notename_i_ > notename)
+ {
+ octave_i_ ++;
+ }
+ notename_i_ = notename;
+}
+
+void
+Musical_pitch::down_to (int notename)
+{
+ if (notename_i_ < notename)
+ {
+ octave_i_ --;
+ }
+ notename_i_ = notename;
+}
+
+#if 0
+
+Musical_pitch
+My_lily_parser::get_melodic_req (Musical_pitch p, int quotes)
+{
+ if (relative_octave_mode_b_)
+ {
+ set_nearest (melodic);
+ int d = melodic->pitch () - last_melodic_->pitch ();
+ int shift = 0;
+ if (quotes && (sign (d) == sign (quotes)))
+ shift -= sign (quotes);
+ if (!quotes && (abs (d) == 6))
+ {
+ String str = _("Octave ambiguity; assuming ");
+ /*
+ [TODO]
+ figure this out.
+
+ If the distance is exactly*) half an octave, there is
+ no nearest pitch. In that case, we'll try to guess what
+ composer/ typist meant.
+ Firstly, we'll do this by comparing the 'notename distance':
+
+ f b' % name-distance: f g a b: 3
+
+ is surely a shorter notename distance than
+
+ f 'b % name-distance: b c d e f: 4
+
+ (should we give a warning at all, or can we safely assume
+ this is a positive interval up?)
+
+ *) It is conceivable that, musically speaking, the interval
+ with the greater pitch-distance is thought to be smaller?
+
+ */
+
+ int name_delta = melodic->notename_i_ - last_melodic_->notename_i_;
+ int name_near = abs (name_delta) % 7;
+ int name_wrap = (7 - abs (name_delta)) % 7;
+ if (name_near != name_wrap)
+ shift = name_near < name_wrap ? sign (name_delta) : -sign (name_delta);
+ else if (sign (last_melodic_->accidental_i_)
+ != sign (melodic->accidental_i_))
+ shift = last_melodic_->accidental_i_ - melodic->accidental_i_;
+ else
+ shift = -1;
+ String name_str = notename_str (melodic);
+ str += shift > 0 ? name_str + "'" : "'" + name_str;
+ if (sign (d) == sign (shift))
+ shift = 0;
+ melodic->warning (str);
+ }
+ melodic->octave_i_ += quotes + shift;
+ }
+ else
+ {
+ Melodic_req nearest (*melodic);
+ set_nearest (&nearest);
+ melodic->octave_i_ += quotes;
+
+ if (find_quarts_global_b)
+ {
+ int e = melodic->pitch () - nearest.pitch ();
+ if (e)
+ {
+ int d = melodic->pitch () - last_melodic_->pitch ();
+ String str = _("Interval greater than quart");
+ int n = 1 + (abs (d) - 1) / 12;
+ String quote_str ('\'', n);
+ str += _(", relative: ");
+ String name_str = notename_str (melodic);
+ str += d < 0 ? quote_str + name_str : name_str + quote_str;
+ melodic->warning (str);
+ }
+ }
+ }
+ delete last_melodic_;
+ last_melodic_ = melodic->clone ()->musical ()->melodic ();
+ return melodic;
+}
+#endif
Melodic_req::Melodic_req ()
{
- notename_i_ = 0;
- octave_i_ = 0;
- accidental_i_ = 0;
}
void
-Melodic_req::transpose (Melodic_req const * delta)
+Melodic_req::transpose (Musical_pitch delta)
{
- int old_pitch = pitch ();
- int delta_pitch = delta->pitch ();
- octave_i_ += delta->octave_i_;
- notename_i_ += delta->notename_i_;
- while (notename_i_ >= 7)
+ pitch_.transpose (delta);
+
+ if (abs (pitch_.accidental_i_) > 2)
{
- notename_i_ -= 7;
- octave_i_ ++;
- }
-
- int new_pitch = pitch ();
- int delta_acc = new_pitch - old_pitch - delta_pitch;
-
- accidental_i_ -= delta_acc;
- if (abs (accidental_i_) > 2)
- {
- delta->warning (_ ("transposition makes accidental larger than 2"));
+ warning (_ ("transposition by ") + delta.str () + _(" makes accidental larger than 2"));
}
}
int
Melodic_req::compare (Melodic_req const &m1 , Melodic_req const&m2)
{
- int o= m1.octave_i_ - m2.octave_i_;
- int n = m1.notename_i_ - m2.notename_i_;
- int a = m1.accidental_i_ - m2.accidental_i_;
-
- if (o)
- return o;
- if (n)
- return n;
- if (a)
- return a;
- return 0;
+ return Musical_pitch::compare (m1.pitch_, m2.pitch_);
}
void
Melodic_req::do_print () const
{
-#ifndef NPRINT
- DOUT << "notename: " << notename_i_
- << " acc: " <<accidental_i_<<" oct: "<< octave_i_;
-#endif
-}
-
-int
-Melodic_req::height () const
-{
- return notename_i_ + octave_i_*7;
-}
-
-/*
- should be settable from input to allow "viola"-mode
- */
-static Byte pitch_byte_a[ ] = { 0, 2, 4, 5, 7, 9, 11 };
-
-int
-Melodic_req::pitch () const
-{
- return pitch_byte_a[ notename_i_ % 7 ] + accidental_i_ + octave_i_ * 12;
+pitch_.print ();
}
/* *************** */
{"lyric", LYRIC},
{"key", KEY},
{"melodic" , MELODIC},
- {"melodic_request", MELODIC_REQUEST},
+ {"musical_pitch", MUSICAL_PITCH},
{"meter", METER},
{"midi", MIDI},
{"mm", MM_T},
{"penalty", PENALTY},
{"property", PROPERTY},
{"pt", PT_T},
+ {"relative", RELATIVE},
{"score", SCORE},
{"script", SCRIPT},
{"shape", SHAPE},
}
}
-Melodic_req*
-My_lily_lexer::lookup_melodic_req_l (String s)
+Musical_pitch
+My_lily_lexer::lookup_pitch (String s)
{
- return note_tab_p_->get_l (s);
+ return (*note_tab_p_)[s];
+}
+
+bool
+My_lily_lexer::notename_b (String s) const
+{
+ return note_tab_p_->elt_b (s);
}
void
-My_lily_lexer::add_notename (String s, Melodic_req *p)
+My_lily_lexer::add_notename (String s, Musical_pitch p)
{
- note_tab_p_->add (s,p);
+ (*note_tab_p_)[s] = p;
}
void
default_octave_i_ = 0;
textstyle_str_="roman"; // in lexer?
error_level_i_ = 0;
- last_duration_mode_b_ = true;
fatal_error_i_ = 0;
default_header_p_ =0;
-
- relative_octave_mode_b_ = false;
-
- last_melodic_ = new Melodic_req;
- last_melodic_->octave_i_ = 0; // -1; // huh?
- last_melodic_->notename_i_ = 0;
- last_melodic_->accidental_i_ = 0;
}
My_lily_parser::~My_lily_parser()
exit_status_i_ = 1;
}
-void
-My_lily_parser::set_duration_mode (String s)
-{
- s = s.upper_str();
- last_duration_mode_b_ = (s== "LAST");
-}
-
-void
-My_lily_parser::set_octave_mode (String s)
-{
- s = s.upper_str();
- if (s == "RELATIVE")
- {
- relative_octave_mode_b_ = true;
- // must reset these
- last_melodic_ = new Melodic_req;
- last_melodic_->octave_i_ = 0; // -1; // huh?
- last_melodic_->notename_i_ = 0;
- last_melodic_->accidental_i_ = 0;
- }
- else
- relative_octave_mode_b_ = false;
-}
-
void
My_lily_parser::set_abbrev_beam (int type_i)
{
abbrev_beam_type_i_ = type_i;
}
-void
-My_lily_parser::set_default_duration (Duration const *d)
-{
- last_duration_mode_b_ = false;
- default_duration_ = *d;
-}
-
void
My_lily_parser::set_last_duration (Duration const *d)
{
- if (last_duration_mode_b_)
- {
- default_duration_ = *d;
+ default_duration_ = *d;
/*
- forget plet part,
- sticky plet factor only within plet brackets
- */
- default_duration_.set_plet (1, 1);
- }
-}
-
-String
-My_lily_parser::notename_str (Melodic_req* melodic)
-{
- // ugh
- String str ((char)('a' + ((melodic->notename_i_ + 2) % 7)));
- int i = melodic->accidental_i_;
- while (i-- > 0)
- str += "is";
- i++;
- while (i++ < 0)
- str += "es";
- return str;
-}
-
-Melodic_req*
-My_lily_parser::get_melodic_req (Melodic_req* melodic, int quotes)
-{
- if (relative_octave_mode_b_)
- {
- set_nearest (melodic);
- int d = melodic->pitch () - last_melodic_->pitch ();
- int shift = 0;
- if (quotes && (sign (d) == sign (quotes)))
- shift -= sign (quotes);
- if (!quotes && (abs (d) == 6))
- {
- String str = _("Octave ambiguity; assuming ");
- /*
- [TODO]
- figure this out.
-
- If the distance is exactly*) half an octave, there is
- no nearest pitch. In that case, we'll try to guess what
- composer/ typist meant.
- Firstly, we'll do this by comparing the 'notename distance':
-
- f b' % name-distance: f g a b: 3
-
- is surely a shorter notename distance than
-
- f 'b % name-distance: b c d e f: 4
-
- (should we give a warning at all, or can we safely assume
- this is a positive interval up?)
-
- *) It is conceivable that, musically speaking, the interval
- with the greater pitch-distance is thought to be smaller?
-
- */
-
- int name_delta = melodic->notename_i_ - last_melodic_->notename_i_;
- int name_near = abs (name_delta) % 7;
- int name_wrap = (7 - abs (name_delta)) % 7;
- if (name_near != name_wrap)
- shift = name_near < name_wrap ? sign (name_delta) : -sign (name_delta);
- else if (sign (last_melodic_->accidental_i_)
- != sign (melodic->accidental_i_))
- shift = last_melodic_->accidental_i_ - melodic->accidental_i_;
- else
- shift = -1;
- String name_str = notename_str (melodic);
- str += shift > 0 ? name_str + "'" : "'" + name_str;
- if (sign (d) == sign (shift))
- shift = 0;
- melodic->warning (str);
- }
- melodic->octave_i_ += quotes + shift;
- }
- else
- {
- Melodic_req nearest (*melodic);
- set_nearest (&nearest);
- melodic->octave_i_ += quotes;
-
- if (find_quarts_global_b)
- {
- int e = melodic->pitch () - nearest.pitch ();
- if (e)
- {
- int d = melodic->pitch () - last_melodic_->pitch ();
- String str = _("Interval greater than quart");
- int n = 1 + (abs (d) - 1) / 12;
- String quote_str ('\'', n);
- str += _(", relative: ");
- String name_str = notename_str (melodic);
- str += d < 0 ? quote_str + name_str : name_str + quote_str;
- melodic->warning (str);
- }
- }
- }
- delete last_melodic_;
- last_melodic_ = melodic->clone ()->musical ()->melodic ();
- return melodic;
+ forget plet part,
+ sticky plet factor only within plet brackets
+ */
+ default_duration_.set_plet (1, 1);
}
-void
-My_lily_parser::set_nearest (Melodic_req* melodic)
-{
- melodic->octave_i_ = last_melodic_->octave_i_;
- int d = melodic->pitch () - last_melodic_->pitch ();
- if (abs (d) > 6)
- melodic->octave_i_ -= sign (d);
-}
Chord*
My_lily_parser::get_word_element (Text_def* tdef_p, Duration * duration_p)
}
void
-My_lily_parser::add_notename (String s, Melodic_req * m_p)
+My_lily_parser::add_notename (String s, Musical_pitch p)
{
- lexer_p_->add_notename (s, m_p);
+ lexer_p_->add_notename (s, p);
+
}
Paper_def*
My_lily_parser::default_paper_p ()
{
- Identifier *id = lexer_p_->lookup_identifier ("default_paper");
- return id ? id->paperdef () : new Paper_def ;
+ Identifier *id = lexer_p_->lookup_identifier ("default_paper");
+ return id ? id->paperdef () : new Paper_def ;
}
Midi_def*
My_lily_parser::default_midi_p ()
{
- Identifier *id = lexer_p_->lookup_identifier ("default_midi");
- return id ? id->mididef () : new Midi_def ;
+ Identifier *id = lexer_p_->lookup_identifier ("default_midi");
+ return id ? id->mididef () : new Midi_def ;
}
#include "notename-table.hh"
#include "pointer.tcc"
#include "musical-request.hh"
+#include "assoc-iter.hh"
-template class P<Melodic_req>;
-
-void
-Notename_table::add (String s, Melodic_req *m_p)
+String
+Notename_table::get_name (Musical_pitch m) const
{
- elem (s).set_p (m_p);
-}
-Melodic_req*
-Notename_table::get_l (String s)
-{
- if (! elt_b (s))
- return 0;
- return elem (s);
+ for (Assoc_iter<String, Musical_pitch> ai (*this); ai.ok (); ai++)
+ {
+ if (ai.val () == m)
+ return ai.key ();
+ }
+ return "r"; // rest.
}
-
#include "file-results.hh"
#include "mudela-version.hh"
#include "scope.hh"
+#include "relative-music.hh"
+
// mmm
-Mudela_version oldest_version ("0.1.14");
-Mudela_version version ("0.1.14");
+Mudela_version oldest_version ("0.1.15");
+Mudela_version version ("0.1.15");
// needed for bison.simple's malloc() and free()
%union {
Array<Interval>* intarr;
- Array<Melodic_req*> *melreqvec;/* should clean up naming */
+ Array<Musical_pitch> *pitch_arr;
Array<String> * strvec;
Array<int> *intvec;
Box *box;
Header *header;
Interval *interval;
Lookup*lookup;
- Melodic_req * melreq;
+
Musical_req* musreq;
Music_output_def * outputdef;
+ Musical_pitch * pitch;
Midi_def* midi;
Moment *moment;
Note_req *notereq;
%token CLEAR
%token CLEF
%token CONTAINS
+%token RELATIVE
%token CONSISTS
%token ACCEPTS
%token CM_T
%token IN_T
%token LYRIC
%token KEY
+%token MUSICAL_PITCH
%token MELODIC
%token MIDI
-%token MELODIC_REQUEST
+
%token METER
%token MM_T
%token MULTI
%type <i> dots
%token <i> DIGIT
-%token <melreq> NOTENAME_IDENTIFIER
+%token <pitch> NOTENAME_PITCH
%token <id> DURATION_IDENTIFIER
%token <id> IDENTIFIER
-%token <id> MELODIC_REQUEST_IDENTIFIER
+
%token <id> MUSIC_IDENTIFIER
%token <id> VOICE_IDENTIFIER
%token <id> POST_REQUEST_IDENTIFIER
%type <i> int unsigned
%type <i> script_dir
%type <id> identifier_init simple_identifier_init
-%type <duration> explicit_steno_duration notemode_duration
+%type <duration> steno_duration notemode_duration
%type <duration> entered_notemode_duration explicit_duration
%type <interval> dinterval
%type <intvec> intastint_list
%type <lookup> symtables symtables_body
-%type <melreq> melodic_request steno_melodic_req
-%type <notereq> steno_note_req
-%type <melreqvec> pitch_list
+
+%type <pitch> explicit_musical_pitch steno_musical_pitch musical_pitch absolute_musical_pitch
+%type <notereq> steno_notepitch
+%type <pitch_arr> pitch_list
%type <midi> midi_block midi_body
%type <moment> duration_length
%type <scalar> scalar
-%type <music> Music transposed_music
+%type <music> Music transposed_music relative_music
%type <music> property_def translator_change
%type <musiclist> Voice Voice_body
%type <chord> Chord Chord_body
| notenames_body CLEAR {
THIS->clear_notenames ();
}
- | notenames_body STRING '=' melodic_request {
- THIS->add_notename (*$2, $4);
+ | notenames_body STRING '=' explicit_musical_pitch {
+ THIS->add_notename (*$2, *$4);
+ delete $4;
delete $2;
}
;
| post_request {
$$ = new Request_identifier ($1, POST_REQUEST_IDENTIFIER);
}
- | melodic_request {
+/* | melodic_request {
$$ = new Request_identifier ($1, MELODIC_REQUEST_IDENTIFIER);
}
+ */
| explicit_duration {
$$ = new Duration_identifier ($1, DURATION_IDENTIFIER);
}
{ $$ = $3; THIS->lexer_p_->pop_state (); }
| property_def
| translator_change
+ | relative_music { $$ = $1; }
+ ;
+
+relative_music:
+ RELATIVE absolute_musical_pitch Music
+ {
+ $$ = new Relative_octave_music ($3, *$2);
+ delete $2;
+ }
;
translator_change:
;
transposed_music:
- TRANSPOSE steno_melodic_req Music {
+ TRANSPOSE musical_pitch Music {
$$ = $3;
- $$ -> transpose ($2);
+ $$ -> transpose (*$2);
delete $2;
}
}
| KEY pitch_list {
Key_change_req *key_p= new Key_change_req;
- key_p->melodic_p_arr_ = *$2;
+ key_p->pitch_arr_ = *$2;
$$ = key_p;
delete $2;
}
$$ = 1;
}
| sub_quotes ',' {
- $$++ ;
+ $$ ++ ;
}
;
-/*
- URG!!
+steno_musical_pitch:
+ NOTENAME_PITCH {
+ $$ = $1;
+ $$->octave_i_ += THIS->default_octave_i_;
+ }
+ | NOTENAME_PITCH sup_quotes {
+ $$ = $1;
+ $$->octave_i_ += $2 + THIS->default_octave_i_;
- Whitespace mustn't be stripped. So what?
- Python is cool, and there even the amount *and* type of whitespace
- is significant. So this is not uncool per se, maybe context-free
- just sucks for humans.
- jcn
-*/
-steno_melodic_req:
- NOTENAME_IDENTIFIER {
- Melodic_req* m = $1->clone ()->musical ()->melodic ();
- $$ = THIS->get_melodic_req (m, 0 + THIS->default_octave_i_);
}
- | NOTENAME_IDENTIFIER sup_quotes {
- Melodic_req* m = $1->clone ()->musical ()->melodic ();
- $$ = THIS->get_melodic_req (m, $2 + THIS->default_octave_i_);
+ | NOTENAME_PITCH sub_quotes {
+ $$ = $1;
+ $$->octave_i_ += THIS->default_octave_i_ - $2 ;
}
- | NOTENAME_IDENTIFIER sub_quotes {
- Melodic_req* m = $1->clone ()->musical ()->melodic ();
- $$ = THIS->get_melodic_req (m, -$2 + THIS->default_octave_i_);
+ ;
+
+explicit_musical_pitch:
+ MUSICAL_PITCH '{' int int int '}' {/* ugh */
+ $$ = new Musical_pitch;
+ $$->octave_i_ = $3;
+ $$->notename_i_ = $4;
+ $$->accidental_i_ = $5;
}
;
+musical_pitch:
+ steno_musical_pitch
+ | explicit_musical_pitch
+ ;
-steno_note_req:
- steno_melodic_req {
+steno_notepitch:
+ musical_pitch {
$$ = new Note_req;
- *(Melodic_req *) $$ = *$1;
+
+ $$->pitch_ = *$1;
delete $1;
}
- | steno_note_req '!' {
+ | steno_notepitch '!' {
$$->forceacc_b_ = ! $$->forceacc_b_;
}
- /* have to duration here. */
;
-melodic_request:
- MELODIC_REQUEST '{' int int int '}' {/* ugh */
- $$ = new Melodic_req;
- $$->octave_i_ = $3;
- $$->notename_i_ = $4;
- $$->accidental_i_ = $5;
- }
- ;
explicit_duration:
DURATION '{' int unsigned '}' {
}
;
-voice_command:
- DURATION STRING {
- THIS->set_duration_mode (*$2);
- delete $2;
- }
- | DURATION entered_notemode_duration {
- THIS->set_default_duration ($2);
- delete $2;
- }
- | OCTAVE {
- /*
- This is weird, but default_octave_i_
- is used in steno_note_req too
-
- c' -> default_octave_i_ == 1
- */
-
- /* why can't we have \oct 0 iso \oct{c'}*/
- // because that's silly.
-
- // for relative octaves, the octave setting is done
- // automatically by the parsing of steno_melodic_req!
- if (!THIS->relative_octave_mode_b_)
- THIS->default_octave_i_ = 1;
- }
- /* cont */
- steno_melodic_req {
- if (!THIS->relative_octave_mode_b_)
- THIS->default_octave_i_ = $3->octave_i_;
- delete $3;
+absolute_musical_pitch:
+ steno_musical_pitch {
+ $$ = $1;
+ $$->octave_i_ -= THIS->default_octave_i_;
}
- | OCTAVE STRING {
- THIS->set_octave_mode (*$2);
+ ;
+voice_command:
+ OCTAVE absolute_musical_pitch {
+ THIS->default_octave_i_ = $2->octave_i_;
delete $2;
}
| TEXTSTYLE STRING {
{
$$ = new Moment (0,1);
}
- | duration_length explicit_steno_duration {
+ | duration_length steno_duration {
*$$ += $2->length ();
}
;
$$->set_plet (THIS->plet_.iso_i_, THIS->plet_.type_i_);
$$->dots_i_ = $1;
}
- | explicit_steno_duration {
+ | steno_duration {
THIS->set_last_duration ($1);
$$ = $1;
}
}
;
-explicit_steno_duration:
+steno_duration:
unsigned {
$$ = new Duration;
if (!Duration::duration_type_b ($1))
| DURATION_IDENTIFIER {
$$ = $1->duration ();
}
- | explicit_steno_duration '.' {
+ | steno_duration '.' {
$$->dots_i_ ++;
}
- | explicit_steno_duration '*' unsigned {
+ | steno_duration '*' unsigned {
$$->plet_.iso_i_ = $3; /* ugh. should do *= */
}
- | explicit_steno_duration '/' unsigned {
+ | steno_duration '/' unsigned {
$$->plet_.type_i_ = $3; /* ugh. should do *= iso = */
}
;
;
+
+
music_elt:
- steno_note_req notemode_duration {
+ steno_notepitch notemode_duration {
if (!THIS->lexer_p_->note_state_b ())
THIS->parser_error ("have to be in Note mode for notes");
$1->set_duration (*$2);
UTILITIES
*/
pitch_list: {
- $$ = new Array<Melodic_req*>;
+ $$ = new Array<Musical_pitch>;
}
- | pitch_list NOTENAME_IDENTIFIER {
- $$->push ($2->clone ()->musical ()->melodic ());
+ | pitch_list NOTENAME_PITCH {
+ $$->push (*$2);
+ delete $2;
}
;
--- /dev/null
+/*
+ relative-music.cc -- implement Relative_octave_music
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+
+ */
+
+#include "relative-music.hh"
+#include "debug.hh"
+
+Musical_pitch
+Relative_octave_music::to_relative_octave (Musical_pitch)
+{
+ return last_pitch_;
+}
+
+
+Relative_octave_music::Relative_octave_music(Music*p,Musical_pitch def)
+ : Music_wrapper (p)
+{
+ last_pitch_ = element_p_->to_relative_octave (def);
+}
+
+void
+Relative_octave_music::do_print () const
+{
+ Music_wrapper::do_print ();
+ DOUT << "default pitch: " << last_pitch_.str ();
+}
+
+IMPLEMENT_IS_TYPE_B1 (Relative_octave_music, Music_wrapper);
#include "scoreline.hh"
#include "item.hh"
#include "p-col.hh"
+#include "molecule.hh"
Score_elem::Score_elem()
{
Score_elem::do_brew_molecule ()
{
if (transparent_b_)
- return ;
+ return;
Molecule *output= brew_molecule_p ();
pscore_l_->outputter_l_->output_molecule (output, absolute_offset ());
}
if (!s->spanned_drul_[d])
{
s->set_bounds(d, command_column_l_);
- warning ("Unbound spanner");
+ ::warning ("Unbound spanner (type " + String (s->name ()) + ")");
}
} while (flip(&d) != LEFT);
}
IPLC_INSTANTIATE(Score_elem);
IPLC_INSTANTIATE(Spanner);
IPLC_INSTANTIATE(Idealspacing);
-
-/* these are required at least on IRIX 5 and SunOS 4 */
-
-#if 0
-/*
- what gcc version?
- they're in lib/template.cc too, and break linux/gcc-2.7.2
- are you sure they must be here too?
-
- for now, i'll just change the switch in lib/template.cc
- jcn
- */
-
-#if defined (__linux__) && && __GNUC_MINOR__ < 8
-
-#include "list.tcc"
-
-// template class List<void *>;
-// template class Cursor<void *>;
-
-// this should work too, and
-LIST_INSTANTIATE (void *);
-
-#endif
-
-#endif
date = $(shell date '+%d%b%y'|tr a-z A-Z)
-sed-version= sed 's!@TOPLEVEL_VERSION@!${TOPLEVEL_VERSION}!g'
sed-date=sed 's!@DATE@!${date}!g'
sed-examples = sed 's!@EXAMPLE_LYS@!${rpmexamples} ${rpmmudocs}!g'
sed-docs=sed 's!@TEXT_DOCS@!${rpmdocs}!g'
TAGS:$(all-tag-sources)
ifdef all-tag-sources
-etags -CT $(all-tag-sources) $(ERROR_LOG)
- -ctags -CT $(all-tag-sources) $(ERROR_LOG)
+ -ctags -h ".h.hh.tcc.icc" $(all-tag-sources) $(ERROR_LOG)
endif
$(LOOP)
cat $< >> $@
chmod -w $@
-website: examples
+website:examples htmldoc
+
+htmldoc:
$(MAKE) CONFIGSUFFIX='www' local-WWW
$(MAKE) CONFIGSUFFIX='www' -C Documentation WWW
rm -f `find . -name \*.html~ -print`
local-WWW: index.html
index.html: Documentation/$(outdir)/topweb.html NEWS
- cp Documentation/$(outdir)/topweb.html $@
+ $(sed-version) < Documentation/$(outdir)/topweb.html > $@
add-html-footer --news=NEWS $@
Documentation/$(outdir)/topweb.html:
else
LOOP=
endif
+
+sed-version= sed 's!@TOPLEVEL_VERSION@!${TOPLEVEL_VERSION}!g'
POINTERLIST_INSTANTIATE(Mudela_voice);
POINTERLIST_INSTANTIATE(Mudela_column);
POINTERLIST_INSTANTIATE(Mudela_score);
-
-#if 0
-/*
- what gcc version?
- they're in lib/template.cc too, and break linux/gcc-2.7.2
- are you sure they must be here too?
-
- for now, i'll just change the switch in lib/template.cc
- jcn
-
- */
-
-#if defined (__linux__) && && __GNUC_MINOR__ < 8
-
-#include "list.tcc"
-
-// template class List<void *>;
-// template class Cursor<void *>;
-
-// this should work too, and
-LIST_INSTANTIATE (void *);
-
-#endif
-
-#endif
-
(let* ((keywords '(
"accepts" "break" "bar" "cadenza" "clear" "clef" "cm" "consists" "contains"
"duration" "absdynamic" "in" "translator" "type" "lyric" "key"
- "maininput" "melodic" "melodic_request" "meter" "midi" "mm" "multi" "header"
+ "maininput" "melodic" "musical_pitch" "meter" "midi" "mm" "multi" "header"
"notenames" "octave" "output" "partial" "paper" "plet" "property" "pt" "shape"
"include"
"score" "script" "skip" "staff" "table" "spandynamic" "symboltables"
depth = ../..
#
-EXTRA_DISTFILES=
+EXTRA_DISTFILES=preludes-3.lym4
# descent order into subdirectories:
#
piece = "Allemande";
% opus = "BWV 1008";
opus = "";
-composer = "Johann Sebastian Bach(1685-1750)";
+composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "JCN";
copyright = "public domain";
}
piece = "Allemande";
% opus = "BWV 1008";
opus = "";
-composer = "Johann Sebastian Bach(1685-1750)";
+composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "JCN";
copyright = "public domain";
}
piece = "Courante";
% opus = "BWV 1008";
opus = "";
-composer = "Johann Sebastian Bach(1685-1750)";
+composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "JCN";
copyright = "public domain";
}
piece = "Courante";
% opus = "BWV 1008";
opus = "";
-composer = "Johann Sebastian Bach(1685-1750)";
+composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "JCN";
copyright = "public domain";
}
source = "?";
% opus = "BWV 1008 no. 5";
opus = "";
-composer = "Johann Sebastian Bach(1685-1750)";
+composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "JCN";
copyright = "public domain";
}
source = "?";
% opus = "BWV 1008 no. 5";
opus = "";
-composer = "Johann Sebastian Bach(1685-1750)";
+composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "JCN";
copyright = "public domain";
}
title = "Solo Cello Suites";
subtitle = "Suite II";
piece = "Pr\\'elude"; % duh
-opus = "BWV 1008";
-composer = "Johann Sebastian Bach(1685-1750)";
+% opus = "BWV 1008";
+composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "JCN";
copyright = "public domain";
}
title = "Solo Cello Suites";
subtitle = "Suite II";
piece = "Pr\\'elude"; % duh
-opus = "BWV 1008";
-composer = "Johann Sebastian Bach(1685-1750)";
+% opus = "BWV 1008";
+composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "JCN";
copyright = "public domain";
}
--- /dev/null
+% URG
+
+changequote(^, @)
+define(comma, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |)
+define(s, ^comma(translit($*,^ @, ^,@))@)
+define(t, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |)
+
+\header{
+filename = "preludes-3.ly";
+title = "3";
+opus = "BWV 999";
+% piece = "\\numfont 3";
+piece = "3";
+% Pr"aludum in C Moll f"ur Laute
+% blz 16
+% Six Petits Preludes`
+% Collection Johann Peter Kellner
+% ca 1703 - 1707
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
+}
+
+one = \melodic{
+ \octave c`;
+ \textstyle "italic";
+%# s(^c@ ^es@ ^g@ ^\p(\<@ ^\!@ ^)\!@ ^\>@)
+ t(c,es,g,^\p(\<@,\!,^)\!@,\>)
+%# s(c es g ^(@ ^@ ^)@)
+ t(c,es,g,^(@,^@,^)@)
+%# s(c f as ^(@ ^@ ^)@)
+ t(c,f,as,^(@,^@,^)@)
+ s(c f as)
+ s(b` d f \< \!)
+ s(b` d f)
+ s(g` c es \> \!)
+ s(g` c es)
+ s(g` c es \< \!)
+ s(g` c es)
+ s(a` c es)
+ s(a` c es)
+ s(a` bes` d \> \!)
+ s(g` bes` d)
+ s(bes` d g)
+ s(a` es g \mf)
+ s(a` c fis)
+ s(a` c fis)
+ s(bes` d g)
+
+
+%# s(c fis a -"poco a poco cresc.")
+ t(c,fis,a,-"poco a poco cresc.")
+ s(d g bes)
+ s(d fis c`)
+
+ s(cis g bes)
+ s(c es a !-"dim.")
+ s(bes` e g)
+ s(a` c g)
+
+ s(a` c fis)
+ s(g` bes` e)
+ s(fis` a` es)
+
+ s(g` bes` d -"dim.")
+ s(g` a` c)
+ s(fis` a` c)
+ s(fis` a` c)
+ r16\p [g` a` c] [b` g` b` g`] r g` r g`
+%# s(a` c fis -"poco cresc.")
+ t(a`,c,fis,-"poco cresc.")
+ s(c fis a)
+ s(b` d g)
+ s(b` d f -"dim.")
+ s(g` c es)
+ s(fis` c es)
+ s(fis` c es)
+ r16 [g`(\< b` d] [b` g` b` d] [es c a` )\!fis] |
+ <
+ {\voiceone g2.-\fermata\mf}
+ {\voicetwo <b`2. d>}
+ >
+ \onevoice
+ \bar "|.";
+}
+
+two = \melodic{
+ \octave c;
+ \clef bass;
+ % c4 r [g8-.(\ped )es-.\*] |
+ c4 r [g8-.( )es-.] |
+ c4 r [g8-.( )es-.] |
+ c4 r [as8-.( )f-.] |
+
+ c4 r [as8-.( )f-.] |
+ c4 r [as8-.( )f-.] |
+ c4 r [as8-.( )f-.] |
+
+ c4-- r [es8 c] |
+ bes`!4-- r [es8 c] |
+ as`!4-- r [es8 c] |
+
+ g`4-- r [es8 c] |
+ fis`4-- r [es8 c] |
+ fis`4 r [fis8 d] |
+
+ g`4 r [d8 bes`] |
+ g`4 r [bes`8 g`] |
+ es`4 r [g8 es] |
+
+ c4 r [c8 a`] |
+ d`4 r [d8 a`] |
+ d`4 r [d8 a`] |
+ d`4 r [d8 bes`] |
+
+
+ d`4 r [es8 c] |
+ d`4 r [g8 d] |
+ d`4 r [a8 fis] |
+
+ d`4 r [g8 es] |
+ d`4 r [fis8 d] |
+ d`4 r [e8 cis] |
+ d`4 r [es8 c] |
+
+ d`4 r [d8 a`] |
+ d`4 r [cis8 bes`] |
+ d`4 r [c!8 a`] |
+
+ d`4 r [bes`8 g`] |
+ d`4 r [es8 c] |
+ d`4 r [d8 a] |
+
+ g`4 r [es8 c] |
+ g`4 r [d8 b`] |
+ g`4 r [es8 c] |
+
+ g`4 r [es8 c] |
+ g`4 r [g8 d] |
+ g`4 r [as8 f] |
+ g`4 r [es8 c] |
+
+ g`4 r [es8 c] |
+ g`4 r [es8 c] |
+ g`4 r r |
+ g`2._\fermata
+ \bar "|.";
+}
+
+global = \melodic{
+ \meter 3/4;
+ \key bes es as;
+}
+
+treble_staff = \type Staff = treble <
+ \global
+ \one
+>
+
+bass_staff = \type Staff = bass <
+% bass = Staff <
+ \clef "bass";
+ \global
+ \two
+>
+
+grand_staff = \type Grand_staff <
+ \treble_staff
+ \bass_staff
+>
+
+a4 = \paper{
+ linewidth= 193.\mm;
+}
+
+\score{
+ % Semplice e non troppo legato
+ \grand_staff
+ \paper{ \a4 }
+ \midi{ \tempo 4 = 100; }
+}
piece = "Sarabande";
% opus = "BWV 1008";
opus = "";
-composer = "Johann Sebastian Bach(1685-1750)";
+composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "JCN";
copyright = "public domain";
}
piece = "Sarabande";
% opus = "BWV 1008";
opus = "";
-composer = "Johann Sebastian Bach(1685-1750)";
+composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "JCN";
copyright = "public domain";
}
title = "Solo Cello Suites";
subtitle = "Suite II";
opus = "BWV 1008";
-composer = "Johann Sebastian Bach(1685-1750)";
+composer = "Johann Sebastian Bach (1685-1750)";
}
% urg
\version "0.1.14";
-cad = \melodic {
+cad = \melodic \relative c' {
\property Score.instrument = "french horn"
\type Staff {
\cadenza 1;
\grouping 1*4;
- \octave c';
\clef "violin";
c'4.\mf g8
- [e'^"accel" () d' c' b]
- [b() c'] g-\fermata
+ [e'^"accel" () d c b]
+ [b() c] g-\fermata
\bar "empty";
- c [c_"rubato" e g c']
- \octave c'';
+ c, [c_"rubato" e g c]
e4. e8 [g () f_"rit" e d]
dis4() e4
\bar "" ;
r8 [c16 d] [e f g gis]
- a4-> f,() e, g
- f-> d,() cis, e
+ a4-> f() e g
+ f-> d() cis e
d4^\fermata
\bar "" ;
- r8 a, [b, cis]
+ r8 a [b cis]
[d16 cis d e]
f4() [f16 e d c]
- b,4-\turn
- \octave c'; [2/3 d'8 c'8 a8]1/1
+ b4-\turn
+ [2/3 d8 c8 a8]1/1
g2
\bar "" ;
- [g16 c e g] [c' e g c']\octave c'';
+ [g16 c, e g] [c e, g c]
[e g, c e] g4^\fermata
\bar "" ;
[g8.(_"a tempo" e16 g8. )e16]
a4. g8 [f8 e8 d8 c8]
- g,2 d2-\trill
+ g2 d'2-\trill
c4
}}
\score {
\version "0.1.14";
-allegro = \melodic
+allegro =
+ \melodic
+ \relative c'
{
- \octave relative;
R1*18
r2 r4 g'4 |
}
-romanze = \melodic {
- \octave relative;
+romanze = \melodic \relative c' {
+
\key bes;
\meter 2/2;
c'4.() f8 a,4 a
\bar "|.";
}
-rondotheme = \melodic {
- \octave relative;
+rondotheme = \melodic \relative c' {
[c'8 c c] [c c c]
c4( cis8 )d r g,
[d'8 d d] [d d d]
e4()d8 e4()f8
e4.()d8 r r |
}
-rondo = \melodic {
+
+lipbreaker = \melodic \relative c'
+{
+ r8 [g'-. g-.] [c()e g,-.]
+ [c()e g,-.] [c()e g,-.]
+ [c c, c] [c c c]
+ [c c c] [c c c]
+}
+
+rondo = \melodic \relative c'
+{
\partial 8;
- \octave relative;
g'8 |
\meter 6/8;
\grouping 8*3 8*3;
\rondotheme
R2.*13 |
- r8 r-\fermata d' [d e f]
+ r8 r-\fermata d [d e f]
[g ()e c-.] [d()e d]
c4 c8 [d e f]
[g()e c-.] [d()e d-.]
[d()g d-.] [d d d]
[d()g] r r4 r8
R2.*1
- r8 [g,-. g-.] [c()e g,-.]
-
- [c()e g,-.] [c()e g,-.]
- [c c, c] [c c c]
- [c c c] [c c c]
+ \lipbreaker
c4 r8 [c' d e]
d4()g8 [c, d e]
d4 r8 r4 r8
[d()g fis] [e d c]
[b () e d] [c b a]
% mark C
- g4 r8 r4r r8
- R2.
-
-
-
-
+ g4 r8 r4 r8
+ r2. |
+ %
+ r8 [g g] [g( )b b]
+ [b()d d-.] [d()g g-.]
+ g2.~
+ [g8 a g] [f e d]
+ \rondotheme
+ R2.*12
+ r4 r8 r4 c8
+ % mark D
+ c4 f8 c4 a8
+ a4.~a4 a8
+ bes4 c8 d4 bes8
+ g4. ~ g8 r r
+ R2.*3
+ r4 r8 r4 c8
+ a4. c
+ f ~ [f8. e16( d )c]
+ bes4 g8 e4 g8
+ c4. ~ c8 r r
+ R2.*3|
+ r4 r8 r4 c8
+ b4()c8 b4()c8
+ bes4. ~ bes4 g8
+ a4 c8 [f () d b]
+ d4. () c8 r r
+ % mark E
+ R2.*9 |
+ \lipbreaker
+ [c8 c' c] c4.~
+ [c8 c d] [e e fis]
+ g4 r8 r4 r8
+ r2.
+ r8 [g g] [g g g] |
+ es4. ~ [es8 d c]
+ b4 r8 r4 r8
+ r2. |
+ r8 [g g] [g g g]
+ es4.\f~ [es8 d c]
+ b4. c4. d4. e4.
+ % mark F
+ f2.\f ~ |
+ f4 r8 r4 r8
+ r8 [g\> g] [g g g]
+ [fis g gis] % Edition breitkopf says as (silly!)
+ [a bes \! b]
+ \rondotheme
+ R2.*7
+ % mark G
+ R2.*4
+ c,4.\mf c4 c8
+ c4. e4 c8
+ g'4. g4 g8
+ g4. g,4 g8
+ c4 r8 r4 r8
+ r4 r8 r4 g'8
+ [c ()e g,-.] [c ()e g,-.]
+ [c ()e g,-.] [c ()e g,-.]
+ % mark H
+ g'2._"cresc." bes,2.
+ a4. [b16 c d e f g]
+ a4. f4 d8
+ [c8\f g' e] [c g e]
+ [c e' c] [g e c]
+ g4 r8 [g''8 e c]
+ d2.(-\trill % \grace { c d }
+ )c4 r8 r4 r8
+ R2.*5
+ r8 r8-\fermata d8 [d\p e f]
+ [g ()e c] [d()e d]
+ [ c c c] [d e f]
+ [g()e c] [d()e d]
+ c4\f r8 r4 r8
+ R2.*5
+ [c8\f c, c] [c c c]
+ c4 r8 c4 r8
+ c4 r8 r4 r8
}
-%{
\score
{
{ \property Score.SkipBars = 1
\allegro
}
}
-%}
-%{
+
\score
{
{ \property Score.SkipBars = 1
\romanze
}
}
-
-%}
\score
{
{ \property Score.SkipBars = 1
\rondo
}
\paper{
- castingalgorithm =\Wordwrap;
+% castingalgorithm =\Wordwrap;
}
+ \midi{}
}
definition below. --MB
%}
-\version "0.1.14";
+\version "0.1.15";
vi1=\melodic{
\meter 4/4;
copyright = "public domain";
latexheaders= "headers";
}
-\version "0.1.14";
+\version "0.1.15";
%{
Silly latex file dropped; use ly2dvi
\include "paper16.ly"
-hoboonestart = \melodic{
+hoboonestart = \melodic
+ \relative c'{
% ugh: cant copy: allegro/primo tempo
- \octave relative;
\textstyle "large";
[es''16-.^"Allegro" es-. es-. es-.] [es8-. d-.] |
\textstyle "italic";
}
-hobooneintro = \melodic{
- \octave relative;
+hobooneintro = \melodic \relative c'{
+
% \textstyle "roman";
% [es''16-.-"Allegro" es-. es-. es-.] [es8-. d-.] |
% \textstyle "italic";
[)g8 r d'] r |
}
-hoboonemid = \melodic{
- \octave relative;
+hoboonemid = \melodic \relative c'{
+
[g'16-. g-. g-. g-.] [g8-. f-.] |
as2-> |
[as16-. as-. as-. as-.] [as8-. g-.] |
}
-hoboonesecondstart = \melodic{
- \octave relative;
+hoboonesecondstart = \melodic \relative c'{
+
% ugh: cant copy: allegro/primo tempo
\textstyle "large";
[es''16-.\ff^"Tempo 1$^o$" es-. es-. es-.] [es8-. d-.] |
}
-hoboonelast = \melodic{
- \octave relative;
+hoboonelast = \melodic \relative c'{
% could transpose/copy from measure 19...
[d''16-.\p d-. d-. d-.] [d8-. c-.] |
es2-> |
copyright = "public domain";
}
-\version "0.1.14";
+\version "0.1.15";
\include "standchen.ly"
description = "A schubert song in 20 pt";
}
-\version "0.1.14";
+\version "0.1.15";
% fool make-website
% \include "standchen.ly";
multiple \paper{}s in one \score
%}
-\version "0.1.14";
+\version "0.1.15";
$vocal_verse1 = \melodic{
\octave c';
:version 4.0
+set autoindent
+set shiftwidth=2
+set tags=$LILYPOND_SOURCEDIR/flower/tags,$LILYPOND_SOURCEDIR/flower/include/tags,$LILYPOND_SOURCEDIR/lib/tags,$LILYPOND_SOURCEDIR/lib/include/tags,$LILYPOND_SOURCEDIR/lily/tags,$LILYPOND_SOURCEDIR/lily/include/tags
"
" some handy key mappings
"