+2004-07-15 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * lily/slur.cc: Add quant-score to interface. Fixes web build.
+
+ * python/SConscript:
+ * python/vim:
+ * input/mutopia/*SConscript: New file.
+
+ * input/mutopia/W.A.Mozart/: Use .ily suffix for includes.
+
+ * scm/define-grobs.scm (all-grob-descriptions): Use ,Slur::height,
+ fixes web build.
+
+ * make/stepmake.make (scons): re-route to SCONS if user has been
+ running scons in this tree.
+
+ * SConstruct (config_vars): Add CPPDEFINES.
+ (env): Set checksums type to "content".
+ (save_config_cache): Do not exit after configuring when using
+ checksums (the default) instead of timestamps.
+
2004-07-15 Jan Nieuwenhuizen <janneke@gnu.org>
* SConstruct: Further development.
-
+
* input/test/SConscript:
* input/template/SConscript:
* input/regression/SConscript:
telys = env['glob'] (env, '*.tely')
pngs = env['glob'] (env, '*.png')
-env.Depends ('lilypond.texi', env['LILYPOND_BIN'])
+# We need lily and mf to build these.
+env.Depends ('lilypond.texi', ['#/lily', '#/mf'])
+env.Depends ('music-glossary.texi', ['#/lily', '#/mf'])
+
env.Depends ('lilypond.texi', 'lilypond-internals.texi')
epss = map (env.Png2eps, pngs)
h.close ()
e['usersrc'] = Dir ('.').srcnode ().abspath
+e['userout'] = Dir ('.').abspath
def url_fixup (target, source, env):
file_subst (str (target[0]),
'../lilypond-internals', 'lilypond-internals/')
-a = ['$MAKEINFO -I$srcdir/Documenation/user -I${SOURCE.dir} --html \
---css-include=$srcdir/Documentation/texinfo.css $__verbose \
---output=${TARGET.dir} $SOURCE',
- '$MAKEINFO -I$srcdir/Documentation/user -I${SOURCE.dir} --html \
+
+a = ['$MAKEINFO -I$usersrc -I${SOURCE.dir} --html \
+ --css-include=$srcdir/Documentation/texinfo.css $__verbose \
+ --output=${TARGET.dir} $SOURCE',
+ '$MAKEINFO -I$usersrc -I${SOURCE.dir} --html \
--no-split --no-headers \
- --css-include=$srcdir/Documentation/../texinfo.css $__verbose \
+ --css-include=$srcdir/Documentation/texinfo.css $__verbose \
--output=$TARGET $SOURCE',
url_fixup,
- 'ln -f ${SOURCE.dir}/*.png ${SOURCE.dir}/*.ly ${TARGET.dir}/']
-
+ 'ln -f ${SOURCE.dir}/*.png ${SOURCE.dir}/*.ly ${TARGET.dir}/',]
+
e.Command ('lilypond/lilypond.html', 'lilypond.texi', a)
e.Command ('lilypond-internals/lilypond-internals.html',
- 'lilypond-internals.texi', a)
+ 'lilypond-internals.texi', a)
#Hmm -- why not just mv ./Documentation/{*,*/*} ./doc :-)
env.Alias ('doc', texis)
scons build=DIR # clean scrdir build, output below DIR
scons out=DIR # write output for alterative config to DIR
+Debugging
+ scons --debug=dtree
+ scons --debug=explain
+ scons verbose=1
+
Optional custom.py
import os
# TODO:
-# * add missing dirs:
-# - input/mutopia
-# - vim
+# * install doc
+
# * more program configure tests (mfont, ...?)
+# * split doc target: doc input examples mutopia?
+
# * more fine-grained config.hh -- move lilypondprefix to version.hh?
# - config.hh: changes after system upgrades, affects all files
# - version.hh: prefix, version etc? affects few
+# - what about GUILE_*_VERSION, seems to be the major culprit,
+# for config.hh dependency escalation. Is the lily-guile.hh
+# workaround necessary at all for GUILE > 1.5?
+
# * grep FIXME $(find . -name 'S*t')
# duh, we need 0.95.1
EnsureSConsVersion (0, 95)
-# SConscripts are only needed in directories where something needs
-# to be done, building or installing
-subdirs = ['flower', 'lily', 'mf', 'scm', 'ly',
- 'scripts', 'elisp', 'buildscripts', 'po',
- 'Documentation', 'Documentation/user', 'Documentation/topdocs',
- 'Documentation/bibliography',
- 'input', 'input/regression', 'input/test', 'input/template',
- 'cygwin', 'debian',
- ]
-
-
usage = r'''Usage:
scons [KEY=VALUE].. [TARGET|DIR]..
'''
-config_cache = 'config.cache'
+config_cache = 'scons.cache'
-config_vars = (
+config_vars = [
'BASH',
- 'CFLAGS',
+ 'CCFLAGS',
'CPPPATH',
+ 'CPPDEFINES',
'CXXFLAGS',
'DEFINES',
'LIBS',
'METAFONT',
'PERL',
'PYTHON',
- )
+ ]
# Put your favourite stuff in custom.py
opts = Options ([config_cache, 'custom.py'], ARGUMENTS)
env = Environment (
ENV = ENV,
-
+
BASH = '/bin/bash',
- MAKEINFO = 'LANG= makeinfo',
PERL = '/usr/bin/perl',
PYTHON = '/usr/bin/python',
SH = '/bin/sh',
-
+
+ MAKEINFO = 'LANG= makeinfo',
ABC2LY_PY = srcdir + '/scripts/abc2ly.py',
LILYPOND_BOOK = srcdir + '/scripts/lilypond-book.py',
LILYPOND_BOOK_FLAGS = '',
'usr/pkg/gnome/lib'),
os.path.join (os.environ['HOME'],
'usr/pkg/pango/lib')],
+ GZIP='-9v',
MFMODE = 'ljfour',
TEXINFO_PAPERSIZE_OPTION = '-t @afourpaper',
TOPLEVEL_VERSION = version,
)
-Help (usage + opts.GenerateHelpText (env))
-
# Add all config_vars to opts, so that they will be read and saved
# together with the other configure options.
map (lambda x: opts.AddOptions ((x,)), config_vars)
+
+Help (usage + opts.GenerateHelpText (env))
+
opts.Update (env)
-env['checksums'] = 1
+# Using content checksums prevents rebuilds after [re]configure if
+# config.hh has not changed.
if env['checksums']:
SetOption ('max_drift', 0)
+ TargetSignatures ("content")
absbuild = Dir (env['build']).abspath
outdir = os.path.join (Dir (env['build']).abspath, env['out'])
)
if env['debugging']:
- env.Append (CFLAGS = '-g')
- env.Append (CXXFLAGS = '-g')
+ env.Append (CCFLAGS = ['-g', '-pipe'])
if env['optimising']:
- env.Append (CFLAGS = '-O2')
- env.Append (CXXFLAGS = ['-O2', '-DSTRING_UTILS_INLINED'])
+ env.Append (CCFLAGS = '-O2')
+ env.Append (CXXFLAGS = ['-DSTRING_UTILS_INLINED'])
if env['warnings']:
- env.Append (CFLAGS = ['-W', '-Wall'])
- # CXXFLAGS = $CFLAGS ...
- env.Append (CXXFLAGS = ['-W', '-Wall', '-Wconversion'])
+ env.Append (CCFLAGS = ['-W', '-Wall'])
+ env.Append (CXXFLAGS = ['-Wconversion'])
+
+# ugr,huh?
env.Append (LINKFLAGS = ['-Wl,--export-dynamic'])
+
if env['verbose']:
env['__verbose'] = ' --verbose'
env['set__x'] = 'set -x;'
if os.path.exists (config_cache):
os.unlink (config_cache)
Exit (s)
-
-# Without target arguments, build lily only
-if not COMMAND_LINE_TARGETS:
- env.Default ('lily')
-env.Alias ('all', '.')
+
+# Declare SConscript phonies
+env.Alias ('minimal', config_cache)
+env.Alias ('mf-essential', config_cache)
+
+env.Alias ('minimal', ['lily', 'mf-essential'])
+env.Alias ('all', ['minimal', 'mf', '.'])
+# Do we want the doc/web separation?
env.Alias ('doc',
['Documentation',
'Documentation/user',
- 'Documentation/topdocs'])
+ 'Documentation/topdocs',
+ 'Documentation/bibliography',
+ 'input'])
-env.Depends ('doc', ['lily', 'mf'])
-env.Depends ('input', ['lily', 'mf'])
+# Without target arguments, do minimal build
+if not COMMAND_LINE_TARGETS:
+ env.Default (['minimal'])
+# GNU Make rerouting compat:
+env.Alias ('web', 'doc')
def list_sort (lst):
sorted = lst
lst.append ((description, package, minimal, program,
string.join (actual, '.')))
+ for i in ['bash', 'perl', 'python', 'sh']:
+ sys.stdout.write ('Checking for %s... ' % i)
+ c = WhereIs (i)
+ key = string.upper (i)
+ if c:
+ env[key] = c
+ sys.stdout.write (c)
+ else:
+ sys.stdout.write ('not found: %s (using: %s)' \
+ % (c, env[key]))
+ # Hmm? abort?
+ sys.stdout.write ('\n')
+
required = []
test_program (required, 'gcc', '2.8', 'GNU C compiler', 'gcc')
test_program (required, 'g++', '3.0.5', 'GNU C++ compiler', 'g++')
: CheckYYCurrentBuffer })
defines = {
- 'DIRSEP' : "'/'",
- 'PATHSEP' : "':'",
+ 'DIRSEP' : "'%s'" % os.sep,
+ 'PATHSEP' : "'%s'" % os.pathsep,
'TOPLEVEL_VERSION' : '"' + version + '"',
'PACKAGE': '"' + package.name + '"',
'DATADIR' : '"' + sharedir + '"',
n -= 1
return lst
+def uniquify_config_vars (env):
+ for i in config_vars:
+ if env.has_key (i) and type (env[i]) == type ([]):
+ env[i] = uniquify (env[i])
def save_config_cache (env):
## FIXME: Is this smart, using option cache for saving
## config.cache? I cannot seem to find the official method.
- for i in config_vars:
- if env.has_key (i) and type (env[i]) == type ([]):
- env[i] = uniquify (env[i])
+ uniquify_config_vars (env)
opts.Save (config_cache, env)
- ## FIXME: Something changes in the ENVironment that triggers
- ## rebuild of everything if we continue after configuring.
- ## Maybe there's a variable missing from config_vars?
-
- ## How to print and debug the reasons scons has for rebuilding
- ## a target (make --debug)?
-
- ## heet van de naald:
- ## - Add a --debug=explain option that reports the reason(s) why SCons
-
if 'config' in COMMAND_LINE_TARGETS:
sys.stdout.write ('\n')
sys.stdout.write ('LilyPond configured')
sys.stdout.write (' scons [TARGET|DIR]...')
sys.stdout.write ('\n')
Exit (0)
- elif 1: #not env['checksums']:
+ elif not env['checksums']:
+ # When using timestams, config.hh is NEW. The next
+ # build triggers recompilation of everything. Exiting
+ # here makes SCons use the actual timestamp for config.hh
+ # and prevents recompiling everything the next run.
command = sys.argv[0] + ' ' + string.join (COMMAND_LINE_TARGETS)
sys.stdout.write ('Running %s ... ' % command)
sys.stdout.write ('\n')
> os.stat (config_cache)[stat.ST_MTIME]):
env = configure (None, None, env)
save_config_cache (env)
+elif env['checksums']:
+ # just save everything
+ save_config_cache (env)
env.Command (version_hh, '#/VERSION',
'$PYTHON ./stepmake/bin/make-version.py VERSION > $TARGET')
LILYPONDPREFIX = os.path.join (run_prefix, 'share/lilypond'),
LIBPATH = [os.path.join (absbuild, 'flower', env['out']),],
- CPPPATH = [outdir, '#',],
+ ##CPPPATH = [outdir, '#',], # do not read auto*'s header
+ CPPPATH = [outdir, ],
LILYPOND_BIN = os.path.join (absbuild, 'lily', env['out'],
'lilypond-bin'),
LILYPOND_BOOK_PATH = ['.', '#/input', '#/input/regression',
files = map (lambda x: x[1:x[1:].index ('/')+1], file_entries)
return map (lambda x: os.path.join (dir, x), files)
-#subdirs = reduce (lambda x, y: x + y, cvs_dirs ('.'))
-#print `subdirs`
+def flatten (tree, lst):
+ if type (tree) == type ([]):
+ for i in tree:
+ if type (i) == type ([]):
+ flatten (i, lst)
+ else:
+ lst.append (i)
+ return lst
+
+subdirs = flatten (cvs_dirs ('.'), [])
readme_files = ['AUTHORS', 'README', 'INSTALL', 'NEWS']
foo = map (lambda x: env.TXT (x + '.txt',
os.path.join ('Documentation/topdocs', x)),
env.Depends (patch_name, dist_ball)
env.Alias ('release', patch)
+#### web
+web_base = os.path.join (outdir, 'web')
+web_ball = os.path.join (web_base, '.tar.gz')
+env['footify'] = 'MAILADDRESS=bug-lilypond@gnu.org $PYTHON stepmake/bin/add-html-footer.py --name=lilypond --version=$version'
+env['web_ext'] = ['.html', '.ly', '.midi', '.pdf', '.png', '.ps.gz', '.txt',]
+
+# compatible make heritits
+# fixme: generate in $outdir is cwd/builddir
+env.Command (web_ball, 'doc',
+ ['$PYTHON buildscripts/mutopia-index.py -o examples.html ./',
+ 'cd $absbuild && $footify $$ (find . -name "*.html" -print)',
+ # uhg?
+ 'cd $absbuild && rm -f $$(find . -name "*.html~" -print)',
+ 'cd $absbuild && find Documentation input \
+ -path foo $web_path -false \
+ > $outdir/weblist',
+ '''echo '<META HTTP-EQUIV="refresh" content="0;URL=Documentation/out-www/index.html">' > $absbuild/index.html''',
+ '''echo '<html><body>Redirecting to the documentation index...</body></html>' >> $absbuild/index.html''',
+ # UGHR? all .html cruft in cwd goes into the web ball?
+ 'cd $absbuild && ls *.html >> $outdir/weblist',
+ 'cat $outdir/weblist | (cd $absbuild; \
+ GZIP=-9v tar -czf $web_ball -T -)',])
+env.Alias ('web', web_ball)
+
+#### tags
env.Append (
ETAGSFLAGS = ["""--regex='{c++}/^LY_DEFINE *(\([^,]+\)/\1/'""",
"""--regex='{c++}/^LY_DEFINE *([^"]*"\([^"]+\)"/\1/'"""])
# filter-out some files?
env.Command ('TAGS', src_files, 'etags $ETAGSFLAGS $SOURCES')
+
+# Note: SConscripts are only needed in directories where something needs
+# to be done, building or installing
for d in subdirs:
if os.path.exists (os.path.join (d, 'SConscript')):
b = os.path.join (env['build'], d, env['out'])
if os.path.abspath (b) != os.path.abspath (d):
env.BuildDir (b, d, duplicate = 0)
SConscript (os.path.join (b, 'SConscript'))
+
return x
return string.join (map (lambda x: prefix + dir (x), path), infix)
+env['join_path'] = join_path
+
env['MAKEINFO_INCLUDES'] = join_path (env['MAKEINFO_PATH'], '', ' -I')
a = '$MAKEINFO $__verbose $MAKEINFO_INCLUDES --no-split --no-headers \
--output=$TARGET $SOURCE'
return (target + [base + '.ps'], source)
a = '${set__x}LILYPONDPREFIX=$LILYPONDPREFIX \
-$PYTHON $LILYPOND_PY${__verbose}\
+$PYTHON $LILYPOND_PY${__verbose} \
--include=${TARGET.dir} \
---output=${TARGET.base} $SOURCE'
+--output=${TARGET.base} $SOURCE'
lilypond = Builder (action = a, suffix = '.pdf', src_suffix = '.ly')
## emitter = add_ps_target)
env.Append (BUILDERS = {'LilyPond': lilypond})
--name=${TARGET.base} --title="$TITLE" $SOURCES'
LYS2TELY = Builder (action = a, suffix = '.tely', src_suffix = '.ly')
env.Append (BUILDERS = {'LYS2TELY': LYS2TELY})
+
+
+def mutopia (ly = None, abc = None):
+ if not abc:
+ abc = env['glob'] (env, '*.abc')
+ if not ly:
+ ly = env['glob'] (env, '*.ly') + map (env.ABC, abc)
+ pdf = map (env.LilyPond, ly)
+ # We need lily and mf to build these.
+ env.Depends (pdf, ['#/lily', '#/mf'])
+ env.Alias ('doc', pdf)
+
+env['mutopia'] = mutopia
+
+
+def collate (title = 'collated files'):
+ ly = env['glob'] (env, '*.ly')
+ e = env.Copy (
+ TITLE = title,
+ LILYPOND_BOOK_FLAGS = '''--process="lilypond-bin --header=texidoc -I$srcdir/input/test -e '(ly:set-option (quote internal-type-checking) #t)'"''',
+ __verbose = ' --verbose',
+ )
+ #
+ tely = e.LYS2TELY ('collated-files', ly)
+ texi = e.TEXI (tely)
+ # We need lily and mf to build these.
+ env.Depends (texi, ['#/lily', '#/mf'])
+ dvi = e.Texi2dvi (texi)
+ pdf = e.Dvi2pdf (dvi)
+ html = e.HTML (texi)
+
+ env.Alias ('doc', pdf)
+ env.Alias ('doc', html)
+
+env['collate'] = collate
# -*-python-*-
-import os
-
Import ('env')
-sources = env['src_glob'] (env, '*.el') + ['lilypond-words']
-#gen_files = map (lambda x: os.path.splitext (x)[0], sources)
-#gens = map (env.AT, sources)
+sources = env['src_glob'] (env, '*.el') + ['lilypond-words.el']
e = env.Copy ()
a = '$PYTHON $srcdir/buildscripts/lilypond-words.py --el --dir=${TARGET.dir}'
-e.Command ('lilypond-words.el', '#/lily/my-lily-lexer.cc', a)
+e.Command ('lilypond-words.el',
+ ['#/lily/my-lily-lexer.cc',
+ '#/buildscripts/lilypond-words.py',
+ '#/scm/new-markup.scm',
+ '#/ly/engraver-init.ly',],
+ a)
dir = env['sharedir_package_version'] + '/elisp'
env.Install (dir, sources)
# -*-python-*-
Import ('env')
-abcs = env['glob'] (env, '*.abc')
-lys = env['glob'] (env, '*.ly') + map (env.ABC, abcs)
-pdfs = map (env.LilyPond, lys)
-env.Alias ('doc', pdfs)
+env['mutopia'] ()
--- /dev/null
+# -*-python-*-
+
+Import ('env')
+env['mutopia'] ()
--- /dev/null
+# -*-python-*-
+
+Import ('env')
+env['mutopia'] ()
--- /dev/null
+# -*-python-*-
+
+Import ('env')
+env['mutopia'] ()
--- /dev/null
+# -*-python-*-
+
+Import ('env')
+env['mutopia'] ()
--- /dev/null
+# -*-python-*-
+
+Import ('env')
+env['mutopia'] ()
--- /dev/null
+# -*-python-*-
+
+Import ('env')
+env['mutopia'] (ly = ['mozart-hrn-3'])
\version "2.3.4"
-\include "mozart-hrn3-defs.ly"
-\include "mozart-hrn3-allegro.ly"
-\include "mozart-hrn3-romanze.ly"
-\include "mozart-hrn3-rondo.ly"
+\include "mozart-hrn3-defs.ily"
+\include "mozart-hrn3-allegro.ily"
+\include "mozart-hrn3-romanze.ily"
+\include "mozart-hrn3-rondo.ily"
--- /dev/null
+\version "2.3.4"
+\include "mozart-hrn3-defs.ily"
+
+allegro =
+
+ \relative c'
+{
+ \time 4/4
+ \key c \major
+ \partial 4
+ r4
+ |
+ R1*4
+ c'2^"Tutti" g
+ c, r
+ R1*1
+ r8 g' g g g g e c
+ g'4 g, r2
+ R1*18
+ r2 r4^"Solo" g'4 |
+ \mark "A"
+ e'4. ( c8) f[ (d c b) ]
+ b[( c)] g4 r8 g[ c e]
+ g2. g16[( f e f)]
+ dis4 ( e4) r8 c8[-. c-. c-.]
+ c4.( d16[ e] f4 e)
+ a,( d g, c)
+ d-. d-. \grace {
+ \override Stem #'stroke-style = #"grace"
+ e16(
+ \revert Stem #'stroke-style }
+ d8.[) c16 d8. e16]
+ c4 r r2
+ R1*3
+ c,2 ~ c8[ e g c]
+ c[ b ] b4 r2
+ c,8[ ( e) g c] e[( g) e c]
+ c[( b)] b4 r2
+ c4.( g8 e'4. c8)
+ g'[( d) ] d4 r4 d
+ d8[ ( c)] c4.( d16[ e] d8[ c)]
+ c8[(\trill b)] b4 r2 |
+ d2( ~ d8[ e16 d] c8[ b)] |
+ b[( a)] a4 r8 a[ a a]
+ a4( cis e g)
+ \grace {
+ \override Stem #'stroke-style = #"grace"
+ \longgrace g16( \endlonggrace
+ \revert Stem #'stroke-style }
+
+ fis8[)( e16 d)] d4-. r2 |
+ \mark "B"
+ R1*3
+ r2 r4 d8[(_\markup { \italic \bold "con espressione" } b) ]
+ a[( g) d'( b)] a[( g) e'( c) ]
+ b8[( a)] a4 r4 a8[ a]
+ a[( \< b c cis\!\> ] d4 c\!)
+ ais8[( b)] r8 \cresc b b[( c)] r c
+ cis[ ( d)] r4 r2
+ \endcresc g,1\f ~ g2 ~ g8[ a16 b] c[( d) e c]
+ %% 64
+ f4-. d-. b-. g-.
+ R1
+
+ c,2\p e4 g c \cresc e g4. e8 |
+ \endcresc d4.\f e16[ fis] g[ ( fis) e d] c[( b) a g]
+
+ << a1(\trill
+ { s2 \grace {
+ \override Stem #'stroke-style = #"grace"
+ g16[ a]
+ \revert Stem #'stroke-style }
+ } >>
+ \mark "C"
+ g4) r r2
+ R1*15
+ \mark "D"
+ bes2\mf d4 f
+ g,2~ g8[ g' es c]|
+ bes4( a4.) c8[( d es)]
+ cis4( d) r8 bes[ (c d)]
+ es2 ( d4) r
+ es2 ( d4) r
+ c8[( g' es c)] bes4( c)
+ c4.( cis8 d4) r
+ R1*2
+ es1~es1|
+ e!
+ d
+ c
+ c,
+ e'
+ e,
+ c'2 b8[( a gis a)]
+ gis8[ e gis b ] e4 r |
+ r8 e,[ a c] dis4 r
+ r8 e,[ a c] dis4 r
+ r8 e,[ g b] e4 r
+ r8 fis,[ b dis] fis4 r
+ r8 gis,[ b d] f4 r
+ r8 g,[ b d_\ritenuto ] f4 r
+ \mark "E"
+ R1*8
+ r2 r8 g,[ g g]
+ e'4.( c8) f[( d c b)]
+ b[( c)] g4 r8 g[ c e] |
+ g2. g16[( f e f)]
+ dis4( e) r8 c[-. c-. c-.]
+ c4.( d16[ e] f4 e)
+ a, ( d g, c)
+ d d
+ \grace {
+ \override Stem #'stroke-style = #"grace"
+ e8(
+ \revert Stem #'stroke-style }
+
+ d8.[) c16 d8. e16]
+ c4 r r2
+ \mark "F"
+ R1*3
+ c,2~ c8[ e g c]
+ c8[( b)] b4 r2
+ c,8[ e g c ] e[ ( g) e c]
+ c[( b)] b4 r2
+ c2 (bes a) a8[(b c cis)]
+ d2( ~ d8[ e16 d] \grace {
+ \override Stem #'stroke-style = #"grace"
+ \longgrace d16( \endlonggrace
+ \revert Stem #'stroke-style }
+ c8[) b16 c)]
+ \grace {
+ \override Stem #'stroke-style = #"grace"
+ \longgrace c16 \endlonggrace
+ \revert Stem #'stroke-style }
+ b8[( a16 g)] g4 r2 |
+ R1*3
+ r2 r4 g'8[( e)]
+ \mark "G"
+ d[( c) g'( e)] d[( c) a'( f)]
+ e[( d)] d4 r d8[ d]
+ d4(~ d16[ e d e)] g8[( f) e d] |
+ c4 r r2
+ R1
+ c1 ~
+ c |
+ c8[-. c-.] r c-. cis[( d)] r\cresc d-. |
+ dis[( e)] r e-. e[( f)] r f-. |
+ g4-.\f\endcresc e-. c-. bes-. |
+ g-.\ff e-. c-. r |
+ a'2 ~ a8[_""_\markup { \bold \italic "sempre " \dynamic "f" } b16 c] d[( e d e)]
+
+
+ f4. ( d8) f8[ ( d) f d]
+ c[ (e] g2) \grace {
+ \override Stem #'stroke-style = #"grace"
+ \longgrace f16( \endlonggrace
+ \revert Stem #'stroke-style }
+ e8[)( d16 c)]
+
+ << d1\trill (
+ { s2 \grace {
+ \override Stem #'stroke-style = #"grace"
+ c16[ d]
+ \revert Stem #'stroke-style }
+ } >>
+
+ c4) r r2
+ R1 |
+ \mark "H"
+ \times 2/3 { c8[ b a ] } \times 2/3 { g[ a b] }
+ \times 2/3 { c[ d e] } \times 2/3 { f[ e d] } |
+ \times 2/3 { c[ b a ] } \times 2/3 { g[ a b] }
+ \times 2/3 { c[ d e] } \times 2/3 { f[ e d] }|
+ c4 \times 2/3 { r8 g'[( e)]} c4 \times 2/3 { r8 e[ ( c)]} |
+ g4 \times 2/3 { r8 c8[( g)] } \times 2/3 { e[ ( g) e-. ] } \times 2/3 { c[ ( e) c-.] }|
+ g4 r8 g'\f a[ b c d]|
+
+ << d1(\trill
+ { s2 \grace {
+ \override Stem #'stroke-style = #"grace"
+ c16[ d]
+ \revert Stem #'stroke-style }
+ } >>
+ c4) r r2
+ R1*3
+
+ c4.^\fermata_"Cadenza ad lib." ( d8) d4.\trill^\fermata ( c16[ d)]
+ c4 r r2
+ R1*8
+ r4 c8.[^"tutti"\f c16] c4 c
+ c c,8.[ c16] c4 c|
+ c2 r2 \bar "|."
+
+}
+
+++ /dev/null
-\version "2.3.4"
-\include "mozart-hrn3-defs.ly"
-
-allegro =
-
- \relative c'
-{
- \time 4/4
- \key c \major
- \partial 4
- r4
- |
- R1*4
- c'2^"Tutti" g
- c, r
- R1*1
- r8 g' g g g g e c
- g'4 g, r2
- R1*18
- r2 r4^"Solo" g'4 |
- \mark "A"
- e'4. ( c8) f[ (d c b) ]
- b[( c)] g4 r8 g[ c e]
- g2. g16[( f e f)]
- dis4 ( e4) r8 c8[-. c-. c-.]
- c4.( d16[ e] f4 e)
- a,( d g, c)
- d-. d-. \grace {
- \override Stem #'stroke-style = #"grace"
- e16(
- \revert Stem #'stroke-style }
- d8.[) c16 d8. e16]
- c4 r r2
- R1*3
- c,2 ~ c8[ e g c]
- c[ b ] b4 r2
- c,8[ ( e) g c] e[( g) e c]
- c[( b)] b4 r2
- c4.( g8 e'4. c8)
- g'[( d) ] d4 r4 d
- d8[ ( c)] c4.( d16[ e] d8[ c)]
- c8[(\trill b)] b4 r2 |
- d2( ~ d8[ e16 d] c8[ b)] |
- b[( a)] a4 r8 a[ a a]
- a4( cis e g)
- \grace {
- \override Stem #'stroke-style = #"grace"
- \longgrace g16( \endlonggrace
- \revert Stem #'stroke-style }
-
- fis8[)( e16 d)] d4-. r2 |
- \mark "B"
- R1*3
- r2 r4 d8[(_\markup { \italic \bold "con espressione" } b) ]
- a[( g) d'( b)] a[( g) e'( c) ]
- b8[( a)] a4 r4 a8[ a]
- a[( \< b c cis\!\> ] d4 c\!)
- ais8[( b)] r8 \cresc b b[( c)] r c
- cis[ ( d)] r4 r2
- \endcresc g,1\f ~ g2 ~ g8[ a16 b] c[( d) e c]
- %% 64
- f4-. d-. b-. g-.
- R1
-
- c,2\p e4 g c \cresc e g4. e8 |
- \endcresc d4.\f e16[ fis] g[ ( fis) e d] c[( b) a g]
-
- << a1(\trill
- { s2 \grace {
- \override Stem #'stroke-style = #"grace"
- g16[ a]
- \revert Stem #'stroke-style }
- } >>
- \mark "C"
- g4) r r2
- R1*15
- \mark "D"
- bes2\mf d4 f
- g,2~ g8[ g' es c]|
- bes4( a4.) c8[( d es)]
- cis4( d) r8 bes[ (c d)]
- es2 ( d4) r
- es2 ( d4) r
- c8[( g' es c)] bes4( c)
- c4.( cis8 d4) r
- R1*2
- es1~es1|
- e!
- d
- c
- c,
- e'
- e,
- c'2 b8[( a gis a)]
- gis8[ e gis b ] e4 r |
- r8 e,[ a c] dis4 r
- r8 e,[ a c] dis4 r
- r8 e,[ g b] e4 r
- r8 fis,[ b dis] fis4 r
- r8 gis,[ b d] f4 r
- r8 g,[ b d_\ritenuto ] f4 r
- \mark "E"
- R1*8
- r2 r8 g,[ g g]
- e'4.( c8) f[( d c b)]
- b[( c)] g4 r8 g[ c e] |
- g2. g16[( f e f)]
- dis4( e) r8 c[-. c-. c-.]
- c4.( d16[ e] f4 e)
- a, ( d g, c)
- d d
- \grace {
- \override Stem #'stroke-style = #"grace"
- e8(
- \revert Stem #'stroke-style }
-
- d8.[) c16 d8. e16]
- c4 r r2
- \mark "F"
- R1*3
- c,2~ c8[ e g c]
- c8[( b)] b4 r2
- c,8[ e g c ] e[ ( g) e c]
- c[( b)] b4 r2
- c2 (bes a) a8[(b c cis)]
- d2( ~ d8[ e16 d] \grace {
- \override Stem #'stroke-style = #"grace"
- \longgrace d16( \endlonggrace
- \revert Stem #'stroke-style }
- c8[) b16 c)]
- \grace {
- \override Stem #'stroke-style = #"grace"
- \longgrace c16 \endlonggrace
- \revert Stem #'stroke-style }
- b8[( a16 g)] g4 r2 |
- R1*3
- r2 r4 g'8[( e)]
- \mark "G"
- d[( c) g'( e)] d[( c) a'( f)]
- e[( d)] d4 r d8[ d]
- d4(~ d16[ e d e)] g8[( f) e d] |
- c4 r r2
- R1
- c1 ~
- c |
- c8[-. c-.] r c-. cis[( d)] r\cresc d-. |
- dis[( e)] r e-. e[( f)] r f-. |
- g4-.\f\endcresc e-. c-. bes-. |
- g-.\ff e-. c-. r |
- a'2 ~ a8[_""_\markup { \bold \italic "sempre " \dynamic "f" } b16 c] d[( e d e)]
-
-
- f4. ( d8) f8[ ( d) f d]
- c[ (e] g2) \grace {
- \override Stem #'stroke-style = #"grace"
- \longgrace f16( \endlonggrace
- \revert Stem #'stroke-style }
- e8[)( d16 c)]
-
- << d1\trill (
- { s2 \grace {
- \override Stem #'stroke-style = #"grace"
- c16[ d]
- \revert Stem #'stroke-style }
- } >>
-
- c4) r r2
- R1 |
- \mark "H"
- \times 2/3 { c8[ b a ] } \times 2/3 { g[ a b] }
- \times 2/3 { c[ d e] } \times 2/3 { f[ e d] } |
- \times 2/3 { c[ b a ] } \times 2/3 { g[ a b] }
- \times 2/3 { c[ d e] } \times 2/3 { f[ e d] }|
- c4 \times 2/3 { r8 g'[( e)]} c4 \times 2/3 { r8 e[ ( c)]} |
- g4 \times 2/3 { r8 c8[( g)] } \times 2/3 { e[ ( g) e-. ] } \times 2/3 { c[ ( e) c-.] }|
- g4 r8 g'\f a[ b c d]|
-
- << d1(\trill
- { s2 \grace {
- \override Stem #'stroke-style = #"grace"
- c16[ d]
- \revert Stem #'stroke-style }
- } >>
- c4) r r2
- R1*3
-
- c4.^\fermata_"Cadenza ad lib." ( d8) d4.\trill^\fermata ( c16[ d)]
- c4 r r2
- R1*8
- r4 c8.[^"tutti"\f c16] c4 c
- c c,8.[ c16] c4 c|
- c2 r2 \bar "|."
-
-}
-
--- /dev/null
+% #(ly:set-point-and-click 'line-column)
+
+longgrace = \override Stem #'stroke-style = #'()
+endlonggrace = \revert Stem #'stroke-style
+ritenuto = \markup { \italic "rit." }
+
+\version "2.3.4"
+
+cresc = {
+ #(ly:export (make-event-chord (list (make-span-event 'CrescendoEvent START))))
+ \set crescendoText = \markup { \italic \bold "cresc." }
+ \set crescendoSpanner = #'dashed-line
+}
+
+%%
+%% TODO: a better mechanism for tweaking Grace settings.
+%%
+
+startGraceMusic = \sequential {
+ \startGraceMusic
+ \override Beam #'space-function
+ = #(lambda (beam mult) (* 0.8 0.8))
+ \override Beam #'thickness = #(* 0.384 (/ 0.6 0.48))
+}
+
+stopGraceMusic= \sequential {
+ \revert Beam #'thickness
+ \revert Beam #'space-function
+ \stopGraceMusic
+}
+
+\paper{
+ \context {
+ \Score
+ skipBars = ##t
+ midiInstrument = #"french horn"
+ %% try to mimic Breitkopf
+ \override RehearsalMark #'padding = #1
+ \override MultiMeasureRest #'padding = #0.5
+ restNumberThreshold = #1
+
+ \override RehearsalMark #'font-series = #'bold
+ \override RehearsalMark #'font-size = #6
+
+ \override Beam #'thickness = #0.6
+ \override Beam #'space-function = #(lambda (beam mult) 0.8)
+ \override Slur #'beautiful = #0.3
+ }
+ \context {
+ \Staff
+ minimumVerticalExtent = #'(-4.5 . 4.5)
+ }
+ % #(define fonts my-sheet)
+ #(define page-breaking ly:optimal-page-breaks)
+
+ % stress page breaking on a6 paper:
+ % linewidth = 80 \mm
+ % hsize = 105 \mm
+ % vsize = 149 \mm
+
+ indent = 10. \mm
+ linewidth = 189. \mm
+
+}
+
+++ /dev/null
-% #(ly:set-point-and-click 'line-column)
-
-longgrace = \override Stem #'stroke-style = #'()
-endlonggrace = \revert Stem #'stroke-style
-ritenuto = \markup { \italic "rit." }
-
-\version "2.3.4"
-
-cresc = {
- #(ly:export (make-event-chord (list (make-span-event 'CrescendoEvent START))))
- \set crescendoText = \markup { \italic \bold "cresc." }
- \set crescendoSpanner = #'dashed-line
-}
-
-%%
-%% TODO: a better mechanism for tweaking Grace settings.
-%%
-
-startGraceMusic = \sequential {
- \startGraceMusic
- \override Beam #'space-function
- = #(lambda (beam mult) (* 0.8 0.8))
- \override Beam #'thickness = #(* 0.384 (/ 0.6 0.48))
-}
-
-stopGraceMusic= \sequential {
- \revert Beam #'thickness
- \revert Beam #'space-function
- \stopGraceMusic
-}
-
-\paper{
- \context {
- \Score
- skipBars = ##t
- midiInstrument = #"french horn"
- %% try to mimic Breitkopf
- \override RehearsalMark #'padding = #1
- \override MultiMeasureRest #'padding = #0.5
- restNumberThreshold = #1
-
- \override RehearsalMark #'font-series = #'bold
- \override RehearsalMark #'font-size = #6
-
- \override Beam #'thickness = #0.6
- \override Beam #'space-function = #(lambda (beam mult) 0.8)
- \override Slur #'beautiful = #0.3
- }
- \context {
- \Staff
- minimumVerticalExtent = #'(-4.5 . 4.5)
- }
- % #(define fonts my-sheet)
- #(define page-breaking ly:optimal-page-breaks)
-
- % stress page breaking on a6 paper:
- % linewidth = 80 \mm
- % hsize = 105 \mm
- % vsize = 149 \mm
-
- indent = 10. \mm
- linewidth = 189. \mm
-
-}
-
--- /dev/null
+\version "2.3.4"
+\include "mozart-hrn3-defs.ily"
+
+romanze = \relative c' {
+ \key f \major
+ \time 2/2
+ \set Score.skipBars = ##t
+
+ c'4.( _\markup { \dynamic "p" \italic { "" con molto espressione } }
+ f8) a,4 a
+ bes8[( c d bes] g4) r8 g
+ a r bes r c r d[( bes)]
+ a2( g8[) a( bes b)]
+ c4. ( f8) a,4 a |
+ % 6
+ bes8[ (c d bes)] g4 r8 c,
+ c8[( e g bes)] a[( c f d)]
+ c r e r f r r4
+ \mark "A"
+ R1*8
+ g4.\mf f8 e[ d c bes]
+ % 18
+ bes[( a d c)] c4 r
+ R1*2
+ g'4. f8 e[ d c bes]
+ bes[ (a d c)] c4 r
+ R1
+ % 25
+ c16[ ( d c d)] e[ ( f e f)] g[( e) c-. c-.] f[( d) b-. b-.]
+ c16[\p ( d c d)] e[ ( f e f)] g[( e) c-. c-.] f[( d) b-. b-.]
+ c8[ \< c, c c] c[ c c c\!]
+ \mark "B"
+ c1\f
+ R1*9
+ f'4.(\p d8) b4 r8 g
+ g'4.( e8) c4 r8 cis |
+ % 39
+ d4(~ d16[ e d e)] f8[ ( d) f( d)]
+ c2( b4) r
+ R1*4
+ e4. ( g8) c,4 ( cis)
+ d8[( e f d)] b4 r8 g
+ c[ ( e) g g] g[( f e d)]
+ c4(
+ \grace {
+ \override Stem #'stroke-style = #"grace"
+ \longgrace e16 \endlonggrace
+ \revert Stem #'stroke-style }
+
+ d8.[ c16) \< ] c8[ c-.( c-. c)-.]\!
+ \mark "C"
+
+ %% this is a trick to get the sfp-s to align.
+ \override Hairpin #'transparent = ##t
+ des1\sfp \>
+ g,1\sfp\! \>
+ c\sfp \! \>
+ c,\sfp\!
+ \revert Hairpin #'transparent
+ R1*3
+ r8 c[\p c c] c2~
+ c8[ c' c c] c2~
+ c8[ \< e( g f] e[ d\!\> c bes]
+ \mark "D"
+ a4\!) r r2
+ R1*3
+ c4.\p ( f8) a,4 a |
+ bes8[ (c d bes)] g4 r8 c,
+ c8[( e g bes)] a[( c f d)]
+ c r e r f4 r4
+ R1*3
+ r2 r4 r8 c,8
+ c8[( e g bes)] a[( c f d)]
+ c r e r f4 r4
+ g,1
+ c,2 c4. c8
+ c8[( e g bes)] a[( c f d)]
+ c r e r f4 r4 % -. ?
+
+ R1
+ c8-. r e-. r f4 r4
+
+ % Finish with F if played separately
+ c8-.( r c,-. r c4) r4|
+ \bar "|."
+}
+
+
+++ /dev/null
-\version "2.3.4"
-\include "mozart-hrn3-defs.ly"
-
-romanze = \relative c' {
- \key f \major
- \time 2/2
- \set Score.skipBars = ##t
-
- c'4.( _\markup { \dynamic "p" \italic { "" con molto espressione } }
- f8) a,4 a
- bes8[( c d bes] g4) r8 g
- a r bes r c r d[( bes)]
- a2( g8[) a( bes b)]
- c4. ( f8) a,4 a |
- % 6
- bes8[ (c d bes)] g4 r8 c,
- c8[( e g bes)] a[( c f d)]
- c r e r f r r4
- \mark "A"
- R1*8
- g4.\mf f8 e[ d c bes]
- % 18
- bes[( a d c)] c4 r
- R1*2
- g'4. f8 e[ d c bes]
- bes[ (a d c)] c4 r
- R1
- % 25
- c16[ ( d c d)] e[ ( f e f)] g[( e) c-. c-.] f[( d) b-. b-.]
- c16[\p ( d c d)] e[ ( f e f)] g[( e) c-. c-.] f[( d) b-. b-.]
- c8[ \< c, c c] c[ c c c\!]
- \mark "B"
- c1\f
- R1*9
- f'4.(\p d8) b4 r8 g
- g'4.( e8) c4 r8 cis |
- % 39
- d4(~ d16[ e d e)] f8[ ( d) f( d)]
- c2( b4) r
- R1*4
- e4. ( g8) c,4 ( cis)
- d8[( e f d)] b4 r8 g
- c[ ( e) g g] g[( f e d)]
- c4(
- \grace {
- \override Stem #'stroke-style = #"grace"
- \longgrace e16 \endlonggrace
- \revert Stem #'stroke-style }
-
- d8.[ c16) \< ] c8[ c-.( c-. c)-.]\!
- \mark "C"
-
- %% this is a trick to get the sfp-s to align.
- \override Hairpin #'transparent = ##t
- des1\sfp \>
- g,1\sfp\! \>
- c\sfp \! \>
- c,\sfp\!
- \revert Hairpin #'transparent
- R1*3
- r8 c[\p c c] c2~
- c8[ c' c c] c2~
- c8[ \< e( g f] e[ d\!\> c bes]
- \mark "D"
- a4\!) r r2
- R1*3
- c4.\p ( f8) a,4 a |
- bes8[ (c d bes)] g4 r8 c,
- c8[( e g bes)] a[( c f d)]
- c r e r f4 r4
- R1*3
- r2 r4 r8 c,8
- c8[( e g bes)] a[( c f d)]
- c r e r f4 r4
- g,1
- c,2 c4. c8
- c8[( e g bes)] a[( c f d)]
- c r e r f4 r4 % -. ?
-
- R1
- c8-. r e-. r f4 r4
-
- % Finish with F if played separately
- c8-.( r c,-. r c4) r4|
- \bar "|."
-}
-
-
--- /dev/null
+\version "2.3.4"
+
+% \include "mozart-hrn3-defs.ily"
+
+rondotheme = \relative c' {
+ c'8[ c c] c[ c c]
+ c4( cis8 d) r g,
+ d'8[ d d] d[ d d]
+ d4( dis8 e) r c |
+ c[( d) e] f[ g a]
+ g[ ( e) c] c4 d8
+ e4( d8) e4( f8)
+ e4.( d8) r r |
+}
+
+lipbreaker = \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]
+}
+
+rightsixteenth = { \set stemLeftBeamCount = 1
+ \set stemRightBeamCount = 2 }
+leftsixteenth = { \set stemLeftBeamCount = 2
+ \set stemRightBeamCount = 1 }
+bothsixteenth = { \set stemLeftBeamCount = 2
+ \set stemRightBeamCount = 2 }
+
+rondo = \relative c'
+{
+ \partial 8
+ \time 6/8
+ \key c \major
+
+ g'8\p |
+
+ \rondotheme
+
+ R2.*13 |
+ r8 r^\fermata d' d[ e f]
+ g[ ( e) c-.] d[( e) d-.]
+ c4 c8 d[ e f]
+ g[( e) c-.] d[( e) d-.]
+ c4 r8 r4 r8 |
+ R2.*7
+ \mark "A"
+ c4.\p \grace {
+ \override Stem #'stroke-style = #"grace"
+ e16(
+ \revert Stem #'stroke-style }
+ d8[) c d]
+ c4 r8 r4 r8
+ e4. \grace {
+ \override Stem #'stroke-style = #"grace"
+ g16(
+ \revert Stem #'stroke-style }
+ f8[) e f]
+ e4 r8 r4 r8
+ g4. e4 c8
+ g2.~
+ g8[ a b] c[ d e ]
+ e4.( d8) r r
+ R2.*4
+ e2.~ |
+ e8[ d c] c[ b a]
+ d2.~
+ d8[ c b] b[ a g]
+ g'4( e8) b4( cis8)
+ \mark "B"
+ d4 r8 r4 r8
+ R2.*3 |
+ r8 d[-. d-.] d[( g) d-.]
+ d[( g) d-.] d[ d d]
+ d[( g)] r r4 r8
+ R2.*1
+ \lipbreaker
+ c,,4 r8 c'[ d e]
+ d4( g8) c,[ d e]
+ d4 r8 r4 r8
+ R2. |
+ r4 r8 c[-. d-. e-.]
+ d4( g8) c,[ d e]
+ d[( g) fis] e[ d c]
+ b[ ( e) d] c[ b a]
+ \mark "C"
+ g4 r8 r4 r8
+ R2. |
+ %
+ r8 g[\f g] g[( b) b-.]
+ b[( d) d-.] d[( g) g-.]
+ g2.~
+ g8[ \> a g] f[ e d]
+ << \rondotheme
+ { s8\!\p } >>
+
+ 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.[ \rightsixteenth e16( \bothsixteenth d c)]
+ bes4 g8 e4 g8
+ c,4. ~ c8 r r
+ R2.*3|
+ r4 r8 r4 c'8
+ b4( c8) b4( c8)
+ bes4. ~ bes4 g8
+ a4 ( c8) f4 ( b,8)
+ d4. ( 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
+ c,8[ c' c] c4.~
+ c8[ c d] e[ e fis]
+ g4 r8 r4 r8
+ R2.
+ r8 g,[ g] g[ g g] |
+ es'4. ~ es8[ d c]
+ b4 r8 r4 r8
+ R2. |
+ r8 g[ g] g[ g g]
+ es'4. ~ es8[ d c]
+ \cresc b4. c4. d4. e4.
+ \mark "F"
+ \endcresc
+
+ f2.\f ~ |
+ f4 r8 r4 r8
+ r8 g,[\> g] g[ g g]
+
+ % Edition breitkopf says a-flat (silly!)
+ fis[ g gis]
+ a[ bes b]\!
+
+ %% EB does the slur in the Rondo differently from the 1st adn 2nd time.
+ %% why. Should check with MS.
+ << \rondotheme
+ { s8\p } >>
+ 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"
+ \cresc g'2. bes,2.
+ a4. b16[ c d e f g]
+ a4. f4 d8
+ \endcresc c8[\f g' e] c[ g e]
+ c[ e' c] g[ e c]
+ g4 r8 g''8[ e c]
+
+
+ << d2.(\trill
+ { s2 \grace {
+ \override Stem #'stroke-style = #"grace"
+ c16[ d]
+ \revert Stem #'stroke-style }
+ } >>
+
+
+ c4) r8 r4 r8
+ R2.*5
+ r8 r8^\fermata d8\p d[ e f]
+ g[ ( e) c] d[( e) d]
+ \cresc c[ c c] d[ e f]
+ g[( e) c] d[( e) d]
+ \endcresc c4\f r8 r4 r8
+ R2.*5
+ c8[\f c, c] c[ c c]
+ c4 r8 c4 r8
+
+ %This is technically incorrect, since we started with an 8th
+ % upstep, but both eulenburg and EB do this as well.
+ c4 r8 r4 r8 \bar "|."
+}
+
+++ /dev/null
-\version "2.3.4"
-
-% \include "mozart-hrn3-defs.ly"
-
-rondotheme = \relative c' {
- c'8[ c c] c[ c c]
- c4( cis8 d) r g,
- d'8[ d d] d[ d d]
- d4( dis8 e) r c |
- c[( d) e] f[ g a]
- g[ ( e) c] c4 d8
- e4( d8) e4( f8)
- e4.( d8) r r |
-}
-
-lipbreaker = \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]
-}
-
-rightsixteenth = { \set stemLeftBeamCount = 1
- \set stemRightBeamCount = 2 }
-leftsixteenth = { \set stemLeftBeamCount = 2
- \set stemRightBeamCount = 1 }
-bothsixteenth = { \set stemLeftBeamCount = 2
- \set stemRightBeamCount = 2 }
-
-rondo = \relative c'
-{
- \partial 8
- \time 6/8
- \key c \major
-
- g'8\p |
-
- \rondotheme
-
- R2.*13 |
- r8 r^\fermata d' d[ e f]
- g[ ( e) c-.] d[( e) d-.]
- c4 c8 d[ e f]
- g[( e) c-.] d[( e) d-.]
- c4 r8 r4 r8 |
- R2.*7
- \mark "A"
- c4.\p \grace {
- \override Stem #'stroke-style = #"grace"
- e16(
- \revert Stem #'stroke-style }
- d8[) c d]
- c4 r8 r4 r8
- e4. \grace {
- \override Stem #'stroke-style = #"grace"
- g16(
- \revert Stem #'stroke-style }
- f8[) e f]
- e4 r8 r4 r8
- g4. e4 c8
- g2.~
- g8[ a b] c[ d e ]
- e4.( d8) r r
- R2.*4
- e2.~ |
- e8[ d c] c[ b a]
- d2.~
- d8[ c b] b[ a g]
- g'4( e8) b4( cis8)
- \mark "B"
- d4 r8 r4 r8
- R2.*3 |
- r8 d[-. d-.] d[( g) d-.]
- d[( g) d-.] d[ d d]
- d[( g)] r r4 r8
- R2.*1
- \lipbreaker
- c,,4 r8 c'[ d e]
- d4( g8) c,[ d e]
- d4 r8 r4 r8
- R2. |
- r4 r8 c[-. d-. e-.]
- d4( g8) c,[ d e]
- d[( g) fis] e[ d c]
- b[ ( e) d] c[ b a]
- \mark "C"
- g4 r8 r4 r8
- R2. |
- %
- r8 g[\f g] g[( b) b-.]
- b[( d) d-.] d[( g) g-.]
- g2.~
- g8[ \> a g] f[ e d]
- << \rondotheme
- { s8\!\p } >>
-
- 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.[ \rightsixteenth e16( \bothsixteenth d c)]
- bes4 g8 e4 g8
- c,4. ~ c8 r r
- R2.*3|
- r4 r8 r4 c'8
- b4( c8) b4( c8)
- bes4. ~ bes4 g8
- a4 ( c8) f4 ( b,8)
- d4. ( 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
- c,8[ c' c] c4.~
- c8[ c d] e[ e fis]
- g4 r8 r4 r8
- R2.
- r8 g,[ g] g[ g g] |
- es'4. ~ es8[ d c]
- b4 r8 r4 r8
- R2. |
- r8 g[ g] g[ g g]
- es'4. ~ es8[ d c]
- \cresc b4. c4. d4. e4.
- \mark "F"
- \endcresc
-
- f2.\f ~ |
- f4 r8 r4 r8
- r8 g,[\> g] g[ g g]
-
- % Edition breitkopf says a-flat (silly!)
- fis[ g gis]
- a[ bes b]\!
-
- %% EB does the slur in the Rondo differently from the 1st adn 2nd time.
- %% why. Should check with MS.
- << \rondotheme
- { s8\p } >>
- 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"
- \cresc g'2. bes,2.
- a4. b16[ c d e f g]
- a4. f4 d8
- \endcresc c8[\f g' e] c[ g e]
- c[ e' c] g[ e c]
- g4 r8 g''8[ e c]
-
-
- << d2.(\trill
- { s2 \grace {
- \override Stem #'stroke-style = #"grace"
- c16[ d]
- \revert Stem #'stroke-style }
- } >>
-
-
- c4) r8 r4 r8
- R2.*5
- r8 r8^\fermata d8\p d[ e f]
- g[ ( e) c] d[( e) d]
- \cresc c[ c c] d[ e f]
- g[( e) c] d[( e) d]
- \endcresc c4\f r8 r4 r8
- R2.*5
- c8[\f c, c] c[ c c]
- c4 r8 c4 r8
-
- %This is technically incorrect, since we started with an 8th
- % upstep, but both eulenburg and EB do this as well.
- c4 r8 r4 r8 \bar "|."
-}
-
# -*-python-*-
Import ('env')
-#lys = env['src_glob'] (env, '*.ly')
-lys = env['glob'] (env, '*.ly')
-
-e = env.Copy (
- TITLE = 'LilyPond Regression Tests',
- LILYPOND_BOOK_FLAGS = '''--process="lilypond-bin --header=texidoc -I$srcdir/input/test -e '(ly:set-option (quote internal-type-checking) #t)'"''',
- __verbose = ' --verbose',
- )
-
-tely = e.LYS2TELY ('collated-files', lys)
-texi = e.TEXI (tely)
-pdf = e.PDF (texi)
-html = e.PDF (texi)
-
-env.Alias ('doc', pdf)
-env.Alias ('doc', html)
-
-
+env['collate'] (title = 'LilyPond Regression Tests')
# -*-python-*-
Import ('env')
-#lys = env['src_glob'] (env, '*.ly')
-lys = env['glob'] (env, '*.ly')
-
-e = env.Copy (
- TITLE = 'LilyPond Template Files',
- LILYPOND_BOOK_FLAGS = '''--process="lilypond-bin --header=texidoc -I$srcdir/input/test -e '(ly:set-option (quote internal-type-checking) #t)'"''',
- __verbose = ' --verbose',
- )
-
-tely = e.LYS2TELY ('collated-files', lys)
-texi = e.TEXI (tely)
-pdf = e.PDF (texi)
-html = e.PDF (texi)
-
-env.Alias ('doc', pdf)
-env.Alias ('doc', html)
-
-
+env['collate'] (title = 'LilyPond Template Files')
# -*-python-*-
Import ('env')
-#lys = env['src_glob'] (env, '*.ly')
-lys = env['glob'] (env, '*.ly')
-
-e = env.Copy (
- TITLE = 'LilyPond Tips and Tricks',
- LILYPOND_BOOK_FLAGS = '''--process="lilypond-bin --header=texidoc -I$srcdir/input/test -e '(ly:set-option (quote internal-type-checking) #t)'"''',
- __verbose = ' --verbose',
- )
-
-tely = e.LYS2TELY ('collated-files', lys)
-texi = e.TEXI (tely)
-pdf = e.PDF (texi)
-html = e.PDF (texi)
-
-env.Alias ('doc', pdf)
-env.Alias ('doc', html)
-
-
+env['collate'] (title = 'LilyPond Tips and Tricks')
+
+%{
+
+breaks web
\paper {
raggedright = ##t
}
+%}
\relative {
+%{ broken
+
\override Slur #'after-line-breaking-callback = #New_slur::after_line_breaking
\override Slur #'print-function = #New_slur::print
\override Slur #'height = ##f
+%}
f'=''16( e) d( c)
c'=''2(~c8 d16 c b8 a)
f='4
c,,^( c')
}
+
e.Append (LIBS = ['flower'])
e.ParseConfig ('guile-config link')
+
name = 'lilypond-bin'
lily = e.Program (name, sources)
env.Install (env['bindir'], lily)
ADD_INTERFACE (Slur,"slur-interface",
"A slur",
- "attachment attachment-offset beautiful control-points dashed details de-uglify-parameters direction extremity-function extremity-offset-alist height-limit note-columns ratio slope-limit thickness y-free");
+ "attachment attachment-offset beautiful control-points dashed details de-uglify-parameters direction extremity-function extremity-offset-alist height-limit note-columns ratio slope-limit thickness y-free quant-score");
# make/Stepmake.make
+# If not m (make m=m), reroute to scons if user is using that.
+ifndef m
+
+SCONS_USER = $(wildcard $(depth)/.sconsign)
+ifeq ($(SCONS_USER),)
+SCONS_USER = $(wildcard $(depth)/.sconf_temp)
+endif
+ifneq ($(SCONS_USER),)
+
+ifeq ($(strip $(depth)),..)
+here = $(notdir $(CURDIR))
+else
+ifeq ($(strip $(depth)),../..)
+# ZUCHT?
+# here = $(notdir $(dir $(CURDIR)))/$(notdir $(CURDIR))
+here = $(shell basename $$(dirname $(CURDIR)))/$(notdir $(CURDIR))
+endif
+endif
+
+MAKE_TARGETS = config deb diff dist distclean doc release po \
+po-replace po-update all clean check default exe help install lib web \
+web-install web-clean TAGS
+
+$(MAKE_TARGETS): scons
+
+# To make this trickery complete, we could have ./configure remove
+# traces of scons configuration.
+scons:
+ @echo "warning: $(SCONS_USER) detected, rerouting to scons"
+ cd $(depth) && scons $(here) $(MAKECMDGOALS)
+ false
+endif
+endif
+
include $(depth)/make/toplevel-version.make
# Use alternate configurations alongside eachother:
import os
Import ('env')
-#sources = env['src_glob'] (env, '*.mf')
sources = env['glob'] (env, '*.mf')
fonts = reduce (lambda x, y: x + y,
'feta-nummer*[0-9].mf',
'parmesan[0-9]*.mf',)))
-env.Depends ('mf', 'mf-essential')
-stems = fonts #map (lambda x: os.path.splitext (x)[0], fonts)
+t = map (env.TFM, fonts)
+a = map (env.AFM, fonts)
+p = map (env.PFA, fonts)
-t = map (env.TFM, stems)
-a = map (env.AFM, stems)
-p = map (env.PFA, stems)
-
-map (lambda x: env.Depends (x + '.pfa', x + '.enc'), stems)
+map (lambda x: env.Depends (x + '.pfa', x + '.enc'), fonts)
mf_essential = ['feta16', 'feta20', 'parmesan16', ]
pfa_essential = map (env.PFA, mf_essential)
-env.Alias ('mf-essential', pfa_essential)
-
-env.Alias ('mf', 'mf-essential')
-
env.Command ('cmr.enc', 'cmr.enc.in', 'cp $SOURCE $TARGET')
+env.Alias ('mf-essential', pfa_essential)
env.Alias ('mf', 'cmr.enc')
-env.Alias ('mf', p)
+
+# build essential stuff first, that's friendlier
+#env.Depends (mf', pfa_essential)
+env.Alias ('mf', pfa_essential + p)
tfmdir = os.path.join (env['lilypondprefix'], 'fonts/tfm')
afmdir = os.path.join (env['lilypondprefix'], 'afm')
(extremity-offset-alist . ,default-slur-extremity-offset-alist)
(de-uglify-parameters . (1.5 0.8 -2.0))
(Y-extent-callback .
- ; ,#f)
- Slur::height)
+ ;; ,#f)
+ ;; must be of type procedure
+ ,Slur::height)
(height-limit . 2.0)
(ratio . 0.333)
(beautiful . 0.5)
--- /dev/null
+# -*-python-*-
+
+Import ('env')
+sources = env['src_glob'] (env, '*.vim') + ['lilypond-words.vim']
+
+e = env.Copy ()
+a = '$PYTHON $srcdir/buildscripts/lilypond-words.py --words --vim --dir=${TARGET.dir}'
+e.Command ('lilypond-words.vim',
+ ['#/lily/my-lily-lexer.cc',
+ '#/buildscripts/lilypond-words.py',
+ '#/scm/new-markup.scm',
+ '#/ly/engraver-init.ly',],
+ a)
+
+dir = env['sharedir_package_version'] + '/vim'
+env.Install (dir, sources)