]> git.donarmstrong.com Git - lilypond.git/commitdiff
patch::: 1.3.136.jcn1
authorJan Nieuwenhuizen <janneke@gnu.org>
Sat, 10 Mar 2001 14:53:39 +0000 (15:53 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sat, 10 Mar 2001 14:53:39 +0000 (15:53 +0100)
1.3.136.jcn1
============

* Bugfix: install gettext.py into @datadir@/python and use that path
from ly2dvi.  Debian or RedHat installs could/should move gettext.py
into /usr/share/lib/python/1.x/site-packages or so.

* Bugfix: move the making of \makelilypondpiecetitle to actually
included part of lilyponddefs.tex.

* Bugfix: ly2dvi, tex.scm: set empty tex definitions to \relax.  This
fixes ly2dvi'ing of scsii.

* Bugfix: completed renaming of `cautionary' to `reminder' for broken
tie accidental feature.  (`Cautionary' is reserved for parenthised
accidentals.).  This fixes all tie and accidentals bugs.

* Bugfix: added dynamic-interface to DynamicText grob.  This fixes
loose dynamics.

* Bugfix: enable Voice_devnull_engraver.  This fixes loose scripts and
double dynamics.

* Bugfix: don't dump core on some programming errors (2x).

* Grand Coriolan revision after copyright free reprint of a 1862-1865
original edition.  This revision also revealed fair amount of bugs.
Previous versions arguably might have worn some small stains of
editorial decisions dated 1936.  Arguably, because most of these small
changes can be found in other editions, some of which even are
commonplace modernisations.

55 files changed:
CHANGES
VERSION
buildscripts/GNUmakefile
buildscripts/gettext.py
buildscripts/gettext.py.in [new file with mode: 0644]
input/bugs/mmrest-collide.ly [new file with mode: 0644]
input/bugs/pc-rest-collide.ly [new file with mode: 0644]
input/bugs/tie-break-accidental.ly
input/test/coriolan-margin.ly
lily/a2-engraver.cc
lily/dynamic-engraver.cc
lily/local-key-item.cc
lily/my-lily-parser.cc
lily/paper-score.cc
lily/score.cc
lily/script.cc
lily/side-position-interface.cc
lily/thread-devnull-engraver.cc
lily/voice-devnull-engraver.cc
mutopia/Coriolan/bassi.ly
mutopia/Coriolan/clarinetti.ly
mutopia/Coriolan/clarinetto-1.ly
mutopia/Coriolan/clarinetto-2.ly
mutopia/Coriolan/contrabasso.ly
mutopia/Coriolan/coriolan-paper.ly
mutopia/Coriolan/coriolan-part-paper.ly
mutopia/Coriolan/corni.ly
mutopia/Coriolan/corno-1.ly
mutopia/Coriolan/corno-2.ly
mutopia/Coriolan/fagotti.ly
mutopia/Coriolan/fagotto-1.ly
mutopia/Coriolan/fagotto-2.ly
mutopia/Coriolan/flauti.ly
mutopia/Coriolan/flauto-1.ly
mutopia/Coriolan/flauto-2.ly
mutopia/Coriolan/header.ly
mutopia/Coriolan/oboe-1.ly
mutopia/Coriolan/oboe-2.ly
mutopia/Coriolan/oboi.ly
mutopia/Coriolan/timpani.ly
mutopia/Coriolan/trombe.ly
mutopia/Coriolan/viola-1.ly
mutopia/Coriolan/viola-2.ly
mutopia/Coriolan/violino-1.ly
mutopia/Coriolan/violino-2.ly
mutopia/Coriolan/violoncello.ly
mutopia/J.S.Bach/Petites-Preludes/header.ly
mutopia/J.S.Bach/Solo-Cello-Suites/GNUmakefile
mutopia/J.S.Bach/Solo-Cello-Suites/header.ly
scm/chord-name.scm
scm/grob-description.scm
scm/tex.scm
scripts/ly2dvi.py
tex/lilyponddefs.tex
tex/titledefs.tex

diff --git a/CHANGES b/CHANGES
index 8b72892a426dce2a70b8aad552b185a548df3427..a48bc18d5b387bec17e723215fcdd3958dde262e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,35 @@
+1.3.136.jcn1
+============
+
+* Bugfix: install gettext.py into @datadir@/python and use that path
+from ly2dvi.  Debian or RedHat installs could/should move gettext.py
+into /usr/share/lib/python/1.x/site-packages or so.
+
+* Bugfix: move the making of \makelilypondpiecetitle to actually
+included part of lilyponddefs.tex.
+
+* Bugfix: ly2dvi, tex.scm: set empty tex definitions to \relax.  This
+fixes ly2dvi'ing of scsii.
+
+* Bugfix: completed renaming of `cautionary' to `reminder' for broken
+tie accidental feature.  (`Cautionary' is reserved for parenthised
+accidentals.).  This fixes all tie and accidentals bugs.
+
+* Bugfix: added dynamic-interface to DynamicText grob.  This fixes
+loose dynamics.
+
+* Bugfix: enable Voice_devnull_engraver.  This fixes loose scripts and
+double dynamics.
+
+* Bugfix: don't dump core on some programming errors (2x).
+
+* Grand Coriolan revision after copyright free reprint of a 1862-1865
+original edition.  This revision also revealed fair amount of bugs.
+Previous versions arguably might have worn some small stains of
+editorial decisions dated 1936.  Arguably, because most of these small
+changes can be found in other editions, some of which even are
+commonplace modernisations.
+
 1.3.136
 =======
 
diff --git a/VERSION b/VERSION
index 967c6ccf872c3ec490c585156961f7f6f137e45b..a31bf24784a1bd8c575189113ac945dbdb5ef730 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
 PATCH_LEVEL=136
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=jcn1
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index 3a24a75973699ffc209482192809327337f33fe5..875833e44791cc0c511c348397aad28f98386f5a 100755 (executable)
@@ -1,10 +1,14 @@
 # bin/Makefile
 
 depth = ..
-STEPMAKE_TEMPLATES=script
+STEPMAKE_TEMPLATES=script install
 
 include $(depth)/make/stepmake.make 
 
+INSTALLATION_FILES=$(outdir)/gettext.py
+INSTALLATION_DIR=$(datadir)/python
+
+all: $(outdir)/gettext.py
 
 
 
index e34cc77a2edff481f5858dfdee7548ab9eda8ad3..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,329 +0,0 @@
-"""This module allows python programs to use GNU gettext message catalogs.
-
-Author: James Henstridge <james@daa.com.au>
-(This is loosely based on gettext.pl in the GNU gettext distribution)
-
-The best way to use it is like so:
-    import gettext
-    gettext.bindtextdomain(PACKAGE, LOCALEDIR)
-    gettext.textdomain(PACKAGE)
-    _ = gettext.gettext
-    print _('Hello World')
-
-where PACKAGE is the domain for this package, and LOCALEDIR is usually
-'$prefix/share/locale' where $prefix is the install prefix.
-
-If you have more than one catalog to use, you can directly create catalog
-objects.  These objects are created as so:
-    import gettext
-    cat = gettext.Catalog(PACKAGE, localedir=LOCALEDIR)
-    _ = cat.gettext
-    print _('Hello World')
-
-The catalog object can also be accessed as a dictionary (ie cat['hello']).
-
-There are also some experimental features.  You can add to the catalog, just
-as you would with a normal dictionary.  When you are finished, you can call
-its save method, which will create a new .mo file containing all the
-translations:
-    import gettext
-    cat = Catalog()
-    cat['Hello'] = 'konichiwa'
-    cat.save('./tmp.mo')
-
-Once you have written an internationalized program, you can create a .po file
-for it with "xgettext --keyword=_ fillename ...".  Then do the translation and
-compile it into a .mo file, ready for use with this module.  Note that you
-will have to use C style strings (ie. use double quotes) for proper string
-extraction.
-"""
-import os, string
-
-prefix = '/usr/local'
-localedir = prefix + '/share/locale'
-
-def _expandLang(str):
-       langs = [str]
-       # remove charset ...
-       if '.' in str:
-               langs.append(string.split(str, '.')[0])
-       # also add 2 character language code ...
-       if len(str) > 2:
-               langs.append(str[:2])
-       return langs
-
-lang = []
-for env in 'LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG':
-       if os.environ.has_key(env):
-               lang = string.split(os.environ[env], ':')
-               lang = map(_expandLang, lang)
-               lang = reduce(lambda a, b: a + b, lang)
-               break
-if 'C' not in lang:
-       lang.append('C')
-
-# remove duplicates
-i = 0
-while i < len(lang):
-       j = i + 1
-       while j < len(lang):
-               if lang[i] == lang[j]:
-                       del lang[j]
-               else:
-                       j = j + 1
-       i = i + 1
-del i, j
-
-if os.environ.has_key('PY_XGETTEXT'):
-       xgettext = os.environ['PY_XGETTEXT']
-else:
-       xgettext = None
-
-del os, string
-
-error = 'gettext.error'
-
-def _lsbStrToInt(str):
-       return ord(str[0]) + \
-              (ord(str[1]) << 8) + \
-              (ord(str[2]) << 16) + \
-              (ord(str[3]) << 24)
-def _msbStrToInt(str):
-       return (ord(str[0]) << 24) + \
-              (ord(str[1]) << 16) + \
-              (ord(str[2]) << 8) + \
-              ord(str[3])
-def _intToLsbStr(int):
-       return chr(int         & 0xff) + \
-              chr((int >> 8)  & 0xff) + \
-              chr((int >> 16) & 0xff) + \
-              chr((int >> 24) & 0xff)
-
-def _getpos(levels = 0):
-       """Returns the position in the code where the function was called.
-       The function uses some knowledge about python stack frames."""
-       import sys
-       # get access to the stack frame by generating an exception.
-       try:
-               raise RuntimeError
-       except RuntimeError:
-               frame = sys.exc_traceback.tb_frame
-       frame = frame.f_back # caller's frame
-       while levels > 0:
-               frame = frame.f_back
-               levels = levels - 1
-       return (frame.f_globals['__name__'],
-               frame.f_code.co_name,
-               frame.f_lineno)
-
-class Catalog:
-       def __init__(self, domain=None, localedir=localedir):
-               self.domain = domain
-               self.localedir = localedir
-               self.cat = {}
-               if not domain: return
-               for self.lang in lang:
-                       if self.lang == 'C':
-                               return
-                       catalog = "%s//%s/LC_MESSAGES/%s.mo" % (
-                               localedir, self.lang, domain)
-                       try:
-                               f = open(catalog, "rb")
-                               buffer = f.read()
-                               del f
-                               break
-                       except IOError:
-                               pass
-               else:
-                       return # assume C locale
-
-               strToInt = _lsbStrToInt
-               if strToInt(buffer[:4]) != 0x950412de:
-                       # catalog is encoded with MSB offsets.
-                       strToInt = _msbStrToInt
-                       if strToInt(buffer[:4]) != 0x950412de:
-                               # magic number doesn't match
-                               raise error, 'Bad magic number in %s' % (catalog,)
-
-               self.revision = strToInt(buffer[4:8])
-               nstrings = strToInt(buffer[8:12])
-               origTabOffset  = strToInt(buffer[12:16])
-               transTabOffset = strToInt(buffer[16:20])
-               for i in range(nstrings):
-                       origLength = strToInt(buffer[origTabOffset:
-                                                    origTabOffset+4])
-                       origOffset = strToInt(buffer[origTabOffset+4:
-                                                    origTabOffset+8])
-                       origTabOffset = origTabOffset + 8
-                       origStr = buffer[origOffset:origOffset+origLength]
-               
-                       transLength = strToInt(buffer[transTabOffset:
-                                                     transTabOffset+4])
-                       transOffset = strToInt(buffer[transTabOffset+4:
-                                                     transTabOffset+8])
-                       transTabOffset = transTabOffset + 8
-                       transStr = buffer[transOffset:transOffset+transLength]
-                       
-                       self.cat[origStr] = transStr
-
-       def gettext(self, string):
-               """Get the translation of a given string"""
-               if self.cat.has_key(string):
-                       return self.cat[string]
-               else:
-                       return string
-       # allow catalog access as cat(str) and cat[str] and cat.gettext(str)
-       __getitem__ = gettext
-       __call__ = gettext
-
-       # this is experimental code for producing mo files from Catalog objects
-       def __setitem__(self, string, trans):
-               """Set the translation of a given string"""
-               self.cat[string] = trans
-       def save(self, file):
-               """Create a .mo file from a Catalog object"""
-               try:
-                       f = open(file, "wb")
-               except IOError:
-                       raise error, "can't open " + file + " for writing"
-               f.write(_intToLsbStr(0x950412de))    # magic number
-               f.write(_intToLsbStr(0))             # revision
-               f.write(_intToLsbStr(len(self.cat))) # nstrings
-
-               oIndex = []; oData = ''
-               tIndex = []; tData = ''
-               for orig, trans in self.cat.items():
-                       oIndex.append((len(orig), len(oData)))
-                       oData = oData + orig + '\0'
-                       tIndex.append((len(trans), len(tData)))
-                       tData = tData + trans + '\0'
-               oIndexOfs = 20
-               tIndexOfs = oIndexOfs + 8 * len(oIndex)
-               oDataOfs = tIndexOfs + 8 * len(tIndex)
-               tDataOfs = oDataOfs + len(oData)
-               f.write(_intToLsbStr(oIndexOfs))
-               f.write(_intToLsbStr(tIndexOfs))
-               for length, offset in oIndex:
-                       f.write(_intToLsbStr(length))
-                       f.write(_intToLsbStr(offset + oDataOfs))
-               for length, offset in tIndex:
-                       f.write(_intToLsbStr(length))
-                       f.write(_intToLsbStr(offset + tDataOfs))
-               f.write(oData)
-               f.write(tData)
-
-_cat = None
-_cats = {}
-
-if xgettext:
-       class Catalog:
-               def __init__(self, domain, localedir):
-                       self.domain = domain
-                       self.localedir = localedir
-                       self._strings = {}
-               def gettext(self, string):
-                       # there is always one level of redirection for calls
-                       # to this function
-                       pos = _getpos(2) # get this function's caller
-                       if self._strings.has_key(string):
-                               if pos not in self._strings[string]:
-                                       self._strings[string].append(pos)
-                       else:
-                               self._strings[string] = [pos]
-                       return string
-               __getitem__ = gettext
-               __call__ = gettext
-               def __setitem__(self, item, data):
-                       pass
-               def save(self, file):
-                       pass
-               def output(self, fp):
-                       import string
-                       fp.write('# POT file for domain %s\n' % (self.domain,))
-                       for str in self._strings.keys():
-                               pos = map(lambda x: "%s(%s):%d" % x,
-                                         self._strings[str])
-                               pos.sort()
-                               length = 80
-                               for p in pos:
-                                       if length + len(p) > 74:
-                                               fp.write('\n#:')
-                                               length = 2
-                                       fp.write(' ')
-                                       fp.write(p)
-                                       length = length + 1 + len(p)
-                               fp.write('\n')
-                               if '\n' in str:
-                                       fp.write('msgid ""\n')
-                                       lines = string.split(str, '\n')
-                                       lines = map(lambda x:
-                                                   '"%s\\n"\n' % (x,),
-                                                   lines[:-1]) + \
-                                                   ['"%s"\n' % (lines[-1],)]
-                                       fp.writelines(lines)
-                               else:
-                                       fp.write('msgid "%s"\n' % (str,))
-                               fp.write('msgstr ""\n')
-                               
-       import sys
-       if hasattr(sys, 'exitfunc'):
-               _exitchain = sys.exitfunc
-       else:
-               _exitchain = None
-       def exitfunc(dir=xgettext, _exitchain=_exitchain):
-               # actually output all the .pot files.
-               import os
-               for file in _cats.keys():
-                       fp = open(os.path.join(dir, file + '.pot'), 'w')
-                       cat = _cats[file]
-                       cat.output(fp)
-                       fp.close()
-               if _exitchain: _exitchain()
-       sys.exitfunc = exitfunc
-       del sys, exitfunc, _exitchain, xgettext
-
-def bindtextdomain(domain, localedir=localedir):
-       global _cat
-       if not _cats.has_key(domain):
-               _cats[domain] = Catalog(domain, localedir)
-       if not _cat: _cat = _cats[domain]
-
-def textdomain(domain):
-       global _cat
-       if not _cats.has_key(domain):
-               _cats[domain] = Catalog(domain)
-       _cat = _cats[domain]
-
-def gettext(string):
-       if _cat == None: raise error, "No catalog loaded"
-       return _cat.gettext(string)
-
-_ = gettext
-
-def dgettext(domain, string):
-       if domain is None:
-               return gettext(string)
-       if not _cats.has_key(domain):
-               raise error, "Domain '" + domain + "' not loaded"
-       return _cats[domain].gettext(string)
-
-def test():
-       import sys
-       global localedir
-       if len(sys.argv) not in (2, 3):
-               print "Usage: %s DOMAIN [LOCALEDIR]" % (sys.argv[0],)
-               sys.exit(1)
-       domain = sys.argv[1]
-       if len(sys.argv) == 3:
-               bindtextdomain(domain, sys.argv[2])
-       textdomain(domain)
-       info = gettext('')  # this is where special info is often stored
-       if info:
-               print "Info for domain %s, lang %s." % (domain, _cat.lang)
-               print info
-       else:
-               print "No info given in mo file."
-
-if __name__ == '__main__':
-       test()
-
diff --git a/buildscripts/gettext.py.in b/buildscripts/gettext.py.in
new file mode 100644 (file)
index 0000000..e34cc77
--- /dev/null
@@ -0,0 +1,329 @@
+"""This module allows python programs to use GNU gettext message catalogs.
+
+Author: James Henstridge <james@daa.com.au>
+(This is loosely based on gettext.pl in the GNU gettext distribution)
+
+The best way to use it is like so:
+    import gettext
+    gettext.bindtextdomain(PACKAGE, LOCALEDIR)
+    gettext.textdomain(PACKAGE)
+    _ = gettext.gettext
+    print _('Hello World')
+
+where PACKAGE is the domain for this package, and LOCALEDIR is usually
+'$prefix/share/locale' where $prefix is the install prefix.
+
+If you have more than one catalog to use, you can directly create catalog
+objects.  These objects are created as so:
+    import gettext
+    cat = gettext.Catalog(PACKAGE, localedir=LOCALEDIR)
+    _ = cat.gettext
+    print _('Hello World')
+
+The catalog object can also be accessed as a dictionary (ie cat['hello']).
+
+There are also some experimental features.  You can add to the catalog, just
+as you would with a normal dictionary.  When you are finished, you can call
+its save method, which will create a new .mo file containing all the
+translations:
+    import gettext
+    cat = Catalog()
+    cat['Hello'] = 'konichiwa'
+    cat.save('./tmp.mo')
+
+Once you have written an internationalized program, you can create a .po file
+for it with "xgettext --keyword=_ fillename ...".  Then do the translation and
+compile it into a .mo file, ready for use with this module.  Note that you
+will have to use C style strings (ie. use double quotes) for proper string
+extraction.
+"""
+import os, string
+
+prefix = '/usr/local'
+localedir = prefix + '/share/locale'
+
+def _expandLang(str):
+       langs = [str]
+       # remove charset ...
+       if '.' in str:
+               langs.append(string.split(str, '.')[0])
+       # also add 2 character language code ...
+       if len(str) > 2:
+               langs.append(str[:2])
+       return langs
+
+lang = []
+for env in 'LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG':
+       if os.environ.has_key(env):
+               lang = string.split(os.environ[env], ':')
+               lang = map(_expandLang, lang)
+               lang = reduce(lambda a, b: a + b, lang)
+               break
+if 'C' not in lang:
+       lang.append('C')
+
+# remove duplicates
+i = 0
+while i < len(lang):
+       j = i + 1
+       while j < len(lang):
+               if lang[i] == lang[j]:
+                       del lang[j]
+               else:
+                       j = j + 1
+       i = i + 1
+del i, j
+
+if os.environ.has_key('PY_XGETTEXT'):
+       xgettext = os.environ['PY_XGETTEXT']
+else:
+       xgettext = None
+
+del os, string
+
+error = 'gettext.error'
+
+def _lsbStrToInt(str):
+       return ord(str[0]) + \
+              (ord(str[1]) << 8) + \
+              (ord(str[2]) << 16) + \
+              (ord(str[3]) << 24)
+def _msbStrToInt(str):
+       return (ord(str[0]) << 24) + \
+              (ord(str[1]) << 16) + \
+              (ord(str[2]) << 8) + \
+              ord(str[3])
+def _intToLsbStr(int):
+       return chr(int         & 0xff) + \
+              chr((int >> 8)  & 0xff) + \
+              chr((int >> 16) & 0xff) + \
+              chr((int >> 24) & 0xff)
+
+def _getpos(levels = 0):
+       """Returns the position in the code where the function was called.
+       The function uses some knowledge about python stack frames."""
+       import sys
+       # get access to the stack frame by generating an exception.
+       try:
+               raise RuntimeError
+       except RuntimeError:
+               frame = sys.exc_traceback.tb_frame
+       frame = frame.f_back # caller's frame
+       while levels > 0:
+               frame = frame.f_back
+               levels = levels - 1
+       return (frame.f_globals['__name__'],
+               frame.f_code.co_name,
+               frame.f_lineno)
+
+class Catalog:
+       def __init__(self, domain=None, localedir=localedir):
+               self.domain = domain
+               self.localedir = localedir
+               self.cat = {}
+               if not domain: return
+               for self.lang in lang:
+                       if self.lang == 'C':
+                               return
+                       catalog = "%s//%s/LC_MESSAGES/%s.mo" % (
+                               localedir, self.lang, domain)
+                       try:
+                               f = open(catalog, "rb")
+                               buffer = f.read()
+                               del f
+                               break
+                       except IOError:
+                               pass
+               else:
+                       return # assume C locale
+
+               strToInt = _lsbStrToInt
+               if strToInt(buffer[:4]) != 0x950412de:
+                       # catalog is encoded with MSB offsets.
+                       strToInt = _msbStrToInt
+                       if strToInt(buffer[:4]) != 0x950412de:
+                               # magic number doesn't match
+                               raise error, 'Bad magic number in %s' % (catalog,)
+
+               self.revision = strToInt(buffer[4:8])
+               nstrings = strToInt(buffer[8:12])
+               origTabOffset  = strToInt(buffer[12:16])
+               transTabOffset = strToInt(buffer[16:20])
+               for i in range(nstrings):
+                       origLength = strToInt(buffer[origTabOffset:
+                                                    origTabOffset+4])
+                       origOffset = strToInt(buffer[origTabOffset+4:
+                                                    origTabOffset+8])
+                       origTabOffset = origTabOffset + 8
+                       origStr = buffer[origOffset:origOffset+origLength]
+               
+                       transLength = strToInt(buffer[transTabOffset:
+                                                     transTabOffset+4])
+                       transOffset = strToInt(buffer[transTabOffset+4:
+                                                     transTabOffset+8])
+                       transTabOffset = transTabOffset + 8
+                       transStr = buffer[transOffset:transOffset+transLength]
+                       
+                       self.cat[origStr] = transStr
+
+       def gettext(self, string):
+               """Get the translation of a given string"""
+               if self.cat.has_key(string):
+                       return self.cat[string]
+               else:
+                       return string
+       # allow catalog access as cat(str) and cat[str] and cat.gettext(str)
+       __getitem__ = gettext
+       __call__ = gettext
+
+       # this is experimental code for producing mo files from Catalog objects
+       def __setitem__(self, string, trans):
+               """Set the translation of a given string"""
+               self.cat[string] = trans
+       def save(self, file):
+               """Create a .mo file from a Catalog object"""
+               try:
+                       f = open(file, "wb")
+               except IOError:
+                       raise error, "can't open " + file + " for writing"
+               f.write(_intToLsbStr(0x950412de))    # magic number
+               f.write(_intToLsbStr(0))             # revision
+               f.write(_intToLsbStr(len(self.cat))) # nstrings
+
+               oIndex = []; oData = ''
+               tIndex = []; tData = ''
+               for orig, trans in self.cat.items():
+                       oIndex.append((len(orig), len(oData)))
+                       oData = oData + orig + '\0'
+                       tIndex.append((len(trans), len(tData)))
+                       tData = tData + trans + '\0'
+               oIndexOfs = 20
+               tIndexOfs = oIndexOfs + 8 * len(oIndex)
+               oDataOfs = tIndexOfs + 8 * len(tIndex)
+               tDataOfs = oDataOfs + len(oData)
+               f.write(_intToLsbStr(oIndexOfs))
+               f.write(_intToLsbStr(tIndexOfs))
+               for length, offset in oIndex:
+                       f.write(_intToLsbStr(length))
+                       f.write(_intToLsbStr(offset + oDataOfs))
+               for length, offset in tIndex:
+                       f.write(_intToLsbStr(length))
+                       f.write(_intToLsbStr(offset + tDataOfs))
+               f.write(oData)
+               f.write(tData)
+
+_cat = None
+_cats = {}
+
+if xgettext:
+       class Catalog:
+               def __init__(self, domain, localedir):
+                       self.domain = domain
+                       self.localedir = localedir
+                       self._strings = {}
+               def gettext(self, string):
+                       # there is always one level of redirection for calls
+                       # to this function
+                       pos = _getpos(2) # get this function's caller
+                       if self._strings.has_key(string):
+                               if pos not in self._strings[string]:
+                                       self._strings[string].append(pos)
+                       else:
+                               self._strings[string] = [pos]
+                       return string
+               __getitem__ = gettext
+               __call__ = gettext
+               def __setitem__(self, item, data):
+                       pass
+               def save(self, file):
+                       pass
+               def output(self, fp):
+                       import string
+                       fp.write('# POT file for domain %s\n' % (self.domain,))
+                       for str in self._strings.keys():
+                               pos = map(lambda x: "%s(%s):%d" % x,
+                                         self._strings[str])
+                               pos.sort()
+                               length = 80
+                               for p in pos:
+                                       if length + len(p) > 74:
+                                               fp.write('\n#:')
+                                               length = 2
+                                       fp.write(' ')
+                                       fp.write(p)
+                                       length = length + 1 + len(p)
+                               fp.write('\n')
+                               if '\n' in str:
+                                       fp.write('msgid ""\n')
+                                       lines = string.split(str, '\n')
+                                       lines = map(lambda x:
+                                                   '"%s\\n"\n' % (x,),
+                                                   lines[:-1]) + \
+                                                   ['"%s"\n' % (lines[-1],)]
+                                       fp.writelines(lines)
+                               else:
+                                       fp.write('msgid "%s"\n' % (str,))
+                               fp.write('msgstr ""\n')
+                               
+       import sys
+       if hasattr(sys, 'exitfunc'):
+               _exitchain = sys.exitfunc
+       else:
+               _exitchain = None
+       def exitfunc(dir=xgettext, _exitchain=_exitchain):
+               # actually output all the .pot files.
+               import os
+               for file in _cats.keys():
+                       fp = open(os.path.join(dir, file + '.pot'), 'w')
+                       cat = _cats[file]
+                       cat.output(fp)
+                       fp.close()
+               if _exitchain: _exitchain()
+       sys.exitfunc = exitfunc
+       del sys, exitfunc, _exitchain, xgettext
+
+def bindtextdomain(domain, localedir=localedir):
+       global _cat
+       if not _cats.has_key(domain):
+               _cats[domain] = Catalog(domain, localedir)
+       if not _cat: _cat = _cats[domain]
+
+def textdomain(domain):
+       global _cat
+       if not _cats.has_key(domain):
+               _cats[domain] = Catalog(domain)
+       _cat = _cats[domain]
+
+def gettext(string):
+       if _cat == None: raise error, "No catalog loaded"
+       return _cat.gettext(string)
+
+_ = gettext
+
+def dgettext(domain, string):
+       if domain is None:
+               return gettext(string)
+       if not _cats.has_key(domain):
+               raise error, "Domain '" + domain + "' not loaded"
+       return _cats[domain].gettext(string)
+
+def test():
+       import sys
+       global localedir
+       if len(sys.argv) not in (2, 3):
+               print "Usage: %s DOMAIN [LOCALEDIR]" % (sys.argv[0],)
+               sys.exit(1)
+       domain = sys.argv[1]
+       if len(sys.argv) == 3:
+               bindtextdomain(domain, sys.argv[2])
+       textdomain(domain)
+       info = gettext('')  # this is where special info is often stored
+       if info:
+               print "Info for domain %s, lang %s." % (domain, _cat.lang)
+               print info
+       else:
+               print "No info given in mo file."
+
+if __name__ == '__main__':
+       test()
+
diff --git a/input/bugs/mmrest-collide.ly b/input/bugs/mmrest-collide.ly
new file mode 100644 (file)
index 0000000..7457807
--- /dev/null
@@ -0,0 +1,15 @@
+%
+% multi-measure-rests should collide with notes, just as normal rests.
+%
+\score {
+  \notes\context Staff <
+     \context Voice=one \relative c''{
+       d d d d
+       d d d d
+     } 
+     \context Voice=two {
+       r1
+       R
+     } 
+  >
+}
\ No newline at end of file
diff --git a/input/bugs/pc-rest-collide.ly b/input/bugs/pc-rest-collide.ly
new file mode 100644 (file)
index 0000000..1818d1a
--- /dev/null
@@ -0,0 +1,24 @@
+%
+% when part-combining, rests should collide as in normal case
+%
+\score {
+  \notes <
+    \context Staff <
+       \context Voice=one \relative c''{
+        d4 d d d
+        d d d d
+       } 
+       \context Voice=two {
+        r1
+        R
+       } 
+    >
+    \context Staff = Viole <
+       \context Voice=one \partcombine Voice
+               \context Thread=one \relative c''{ d4 d d d  d d d d }
+               \context Thread=two { r1 R1 }
+    >
+  >
+  \paper {
+  }
+}
\ No newline at end of file
index 88a35de6d4e3fb1dbe5a8c4f324fef9c5652e889..94b7e3d3b6b5322fb12049861668bb7d0b42417c 100644 (file)
@@ -8,6 +8,8 @@ should get an accidental, but others should not";
   \notes {
     bes1 ~ | \break
     bes2 ~ bes4 ~ bes4 ~ | bes1
+    \key  f\major;
+    bes1 ~|bes2 b ~|b ~ b ~|b1
   }
   \paper {
     linewidth = 40*\staffspace;
index f16b1dce13ee89cd089718e34c9066709f75549d..ce54cc16fd870bb3cb2e63c1098af2a0924cad99 100644 (file)
@@ -30,7 +30,8 @@ oboi = \notes \relative c' {
 }
 
 clarinetti = \notes \relative c' {
-  \property Staff.instrument   = #`(lines "2 Clarinetti" (rows "(B" ,raisedflat ")"))
+   \property Staff.instrument = #`("Clarinetti in B" ,text-flat)
+%  \property Staff.instrument  = #`(lines "2 Clarinetti" (rows "(B" ,raisedflat ")"))
   \property Staff.instr                = #`(lines "Cl." (rows "(B" ,raisedflat ")"))
 
   c1 c
index b6958618bc6d4cb8dd7e617389904f5956139dc2..55d6c45d95479e857ecb71c09c6c7f8ac6727059 100644 (file)
@@ -137,15 +137,18 @@ A2_engraver::acknowledge_grob (Grob_info i)
          || Slur::has_interface (i.elem_l_)
          // || Tie::has_interface (i.elem_l_)
          || i.elem_l_->has_interface (ly_symbol2scm ("tie-interface"))
+         
          /*
            Usually, dynamics are removed by *_devnull_engravers for the
            second voice.  On the one hand, we don't want all dynamics for
            the first voice to be placed above the staff.  On the other
-           hand, colliding of scripts may be worse */
-#if 0
-         || i.elem_l_->has_interface (ly_symbol2scm ("dynamic-interface"))
-         || i.elem_l_->has_interface (ly_symbol2scm ("text-interface"))
-#endif
+           hand, colliding of scripts may be worse.
+           So, we don't set directions for these when we're playing solo.
+         */
+         || (i.elem_l_->has_interface (ly_symbol2scm ("dynamic-interface"))
+             && state_ != SOLO)
+         || (i.elem_l_->has_interface (ly_symbol2scm ("text-interface"))
+             && state_ != SOLO)
          ))
     {
       /*
index ae16fb9aaf0ce848f861ad68238df9efd8b6db26..24a3cef14a72548969e38aaa4cb8f0b64c40bf6b 100644 (file)
@@ -253,6 +253,7 @@ Dynamic_engraver::process_music ()
          else
            {
              cresc_p_  = new Spanner (get_property ("TextSpanner"));
+             cresc_p_->set_interface (ly_symbol2scm ("dynamic-interface"));
              cresc_p_->set_grob_property ("type", s);
              
              daddy_trans_l_->set_property (start_type
index 03434be4a24a918652c6a2dfde0c1a0c1158f0a6..422d82b9907e57afe9a4d89e146b64ba080e3cd4 100644 (file)
@@ -36,7 +36,7 @@ ADD_SCM_INIT_FUNC(lkpitch,init_pitch_funcs);
 
 void
 Local_key_item::add_pitch (Grob*me, Pitch p, bool cautionary, bool natural,
-                          Grob* tie_break_cautionary)
+                          Grob* tie_break_reminder)
 {
   SCM acs = me->get_grob_property ("accidentals");
   SCM pitch = p.smobbed_copy ();
@@ -45,11 +45,11 @@ Local_key_item::add_pitch (Grob*me, Pitch p, bool cautionary, bool natural,
     opts = gh_cons (ly_symbol2scm ("cautionary"), opts);
   if (natural)
     opts = gh_cons (ly_symbol2scm ("natural"), opts);
-  if (tie_break_cautionary)
+  if (tie_break_reminder)
     {
       /* Ugh, these 'options' can't have a value, faking... */
-      opts = gh_cons (tie_break_cautionary->self_scm (), opts);
-      opts = gh_cons (ly_symbol2scm ("tie-break-cautionary"), opts);
+      opts = gh_cons (tie_break_reminder->self_scm (), opts);
+      opts = gh_cons (ly_symbol2scm ("tie-break-reminder"), opts);
     }
 
   pitch = gh_cons (pitch, opts);
index 846d4bd2affbe1e4600fa0d355d2f75668474a5c..821f49f4b2356e2a94f64b736ac1ed28c9504485 100644 (file)
@@ -50,6 +50,8 @@ My_lily_parser::parse_file (String init, String s)
   lexer_p_->new_input (init, source_l_);
   do_yyparse ();
 
+  progress_indication ("\n");
+  
   if (!define_spot_array_.empty())
     {
       define_spot_array_.top ().warning (_ ("Braces don't match"));
index 734b56d005179a180e06c17b832908dd485c6605..82f275a0988e9bbacb115dff9b95f09b54f056a3 100644 (file)
@@ -97,6 +97,7 @@ Paper_score::process ()
   outputter_l_->output_header ();
   outputter_l_->output_version ();
 
+  progress_indication ("\n");
 
   if (global_header_p)
     {
@@ -126,7 +127,6 @@ Paper_score::process ()
 
   progress_indication ("\n");
 
-
   // huh?
   delete outputter_l_;
   outputter_l_ = 0;
index f80ef7b2ea84a6555c033bfe8d390addbf14d9aa..f864b58433f09b7543269905a402660ecc2beb20 100644 (file)
@@ -75,7 +75,7 @@ Score::run_translator (Music_output_def *odef_l)
       programming_error ("no toplevel translator");
       return ;
     }
-  progress_indication ("\n" + _("Interpreting music..."));
+  progress_indication (_("Interpreting music..."));
   Music * music = unsmob_music (music_);
   
   trans_p->final_mom_ = music->length_mom ();
index b19724f6b18ef2f367ea9cb4612e0482ff7f0c6c..78fbff9db13ce8678631b6ea453822a993b1b0bf 100644 (file)
@@ -57,12 +57,18 @@ Script::brew_molecule (SCM smob)
 {
   Grob *me= unsmob_grob (smob);
 #if 0
-   Direction dir = DOWN;
+  
    SCM d = me->get_grob_property ("direction");
    if (isdir_b (d))
      dir = to_dir (d);
 #endif
   Direction dir = Side_position_interface::get_direction(me);
+  if (!dir)
+    {
+      programming_error ("Script direction not known, but molecule wanted.");
+      dir= DOWN;
+    }
+  
   return get_molecule (me, dir).smobbed_copy();
 }
 
index 701e415feef054c06d0f821cde6341706f90860d..273ad4a88ac500ef1d4280e405be3f077f05194a 100644 (file)
@@ -224,12 +224,18 @@ Side_position_interface::aligned_side (SCM element_smob, SCM axis)
   Axis a = (Axis) gh_scm2int (axis);
   
   Direction d = Side_position_interface::get_direction (me);
+  
   Real o = gh_scm2double (aligned_on_support_extents (element_smob,axis));
 
   Interval iv =  me->extent (me, a);
 
   if (!iv.empty_b ())
     {
+      if (!d)
+       {
+         programming_error ("Direction unknown, but aligned-side wanted.");
+         d = DOWN;
+       }
       o += - iv[-d];
 
       SCM pad = me->get_grob_property ("padding");
index 3ab759ed818162ed7aa152b3da7ef361512d7d77..58aa56cb3d468d9cf0183c0c1c85f4851722c35a 100644 (file)
@@ -28,11 +28,11 @@ Thread_devnull_engraver::acknowledge_grob (Grob_info i)
   SCM s = get_property ("devNullThread");
 #if 0
   /* No need */
-  if (gh_equal_p (s, ly_symbol2scm ("never")))
+  if (s == ly_symbol2scm ("never"))
     return;
 #endif
 
-  if (gh_equal_p (s, ly_symbol2scm ("allways"))
+  if (s == ly_symbol2scm ("allways")
       || (s == SCM_EOL
          && daddy_trans_l_->id_str_.left_str (3) == "two"
          && (to_boolean (get_property ("unison"))
index 6ad506a92595fd50709b0ffbb2ffec6fe7faac17..4f82c4f4e8ea679481ae7d08958376085828cbf7 100644 (file)
@@ -64,15 +64,18 @@ Voice_devnull_engraver::try_music (Music *m)
 }
   
 static char const *junk_interfaces[] = {
-#if 0
+#if 1
   "beam-interface",
 #endif
+  "script-interface",
   "slur-interface",
   "tie-interface",
+  "text-interface",
   "text-item-interface",
   "text-script-interface",
   "dynamic-interface",
-  "crescendo-interface",
+  "hairpin-interface",
+  "text-spanner-interface",
   0
 };
 
@@ -82,12 +85,12 @@ Voice_devnull_engraver::acknowledge_grob (Grob_info i)
   SCM s = get_property ("devNullVoice");
 #if 0
   /* No need */
-  if (gh_equal_p (s, ly_symbol2scm ("never")))
+  if (s == ly_symbol2scm ("never"))
     return;
 #endif
 
-  if (gh_equal_p (s, ly_symbol2scm ("allways"))
-      || (gh_equal_p (s, ly_symbol2scm ("unisolo"))
+  if (s == ly_symbol2scm ("allways")
+      || (s == SCM_EOL
          && daddy_trans_l_->id_str_.left_str (3) == "two"
          && (to_boolean (get_property ("unison"))
              || to_boolean (get_property ("unisilence")))))
index 9dbd9eda37e8ee6e433a291ada002b893972ae69..9053f3cdf49a337c5d93347940b6e54e425c6935 100644 (file)
@@ -38,7 +38,7 @@ bassiGroup =  \context PianoStaff = bassi_group \notes <
 bassiGroup =  \context PianoStaff = bassi_group \notes <
        \context Staff=violoncelloStaff <
                \property Staff.midiInstrument = #"cello"
-               \property Staff.instrument = #"Violoncello  "
+               \property Staff.instrument = #"Violoncello   "
                \property Staff.instr = #"Vc.  "
                \clef "bass";
                \global
@@ -46,7 +46,7 @@ bassiGroup =  \context PianoStaff = bassi_group \notes <
        >
        \context Staff=contrabassoStaff <
                \property Staff.midiInstrument = #"contrabass"
-               \property Staff.instrument = #"Contrabasso  "
+               \property Staff.instrument = #"Contrabasso   "
                \property Staff.instr = #"Cb.  "
                \property Staff.transposing = #-12
                \clef "bass"; 
index d1a656133d7b995c8b0325819127b312d73c47e2..f0b2be8559df41c4443466a40c47795f4efbbbf1 100644 (file)
@@ -7,8 +7,7 @@
 clarinettiStaff = \context Staff = clarinetti <
        \property Staff.midiInstrument = #"clarinet"
 
-       \property Staff.instrument = #`(lines
-         "2 Clarinetti" (rows "(B" ,text-flat ")"))
+       \property Staff.instrument = #`("Clarinetti in B" ,text-flat)
        
        \property Staff.instr = #`(lines "Cl."  (rows "(B" ,text-flat ")"))
        \property Staff.transposing = #-2
index 907ee9bb5d8ca94b361c14704adf79675431e819..6f7317eccac97565d91a24bc11e1cc849071f85d 100644 (file)
@@ -163,14 +163,14 @@ clarinettoI =  \notes \relative c {
        cis2.\ff()d4|
        cis(d cis)d|
        es2.()d4|
-       c(bis c)bes|
+       c(bes c)bes|
        es2.()d4|
-       c(bis c)bes|
+       c(bes c)bes|
        r2 es4\sf()d|
        r2 es4\sf()d|
        r2 es4\sf()d|
        r2 es4\sf()d|
-       es2 bis|
+       es2 cis|
        d b|
        cis d|
        e d|
index 795abe0ce936214efa04e1259346c881c5ae7680..204ef819aad8b323e7ce59941688e4f0ad368338 100644 (file)
@@ -25,15 +25,12 @@ clarinettoII =  \notes \relative c {
        cis\sf r|
        c1\sf|
        b|
-       g2. as4\sf(|
-       )g2. as4\sf(|
-       )g2. as4\sf(|
-       )g2. as4\sf(|
-       )g4 r r2|
-       R1*9|
-       %a deux; urg: copied clarinetto-1(60,61)|
-       a'2.(bes4|
-       a g e)c|
+       g2. as4\sf|
+       g2. as4\sf|
+       g2. as4\sf|
+       g2. as4\sf|
+       g4 r r2|
+       R1*11|
        c2\ff es,|
        d1~|
        d\p~|
index b2b60555d37ac5663beb29afdc29a8bab23286b3..e8669deb5695a965039740becb6df728b98ae7f5 100644 (file)
@@ -3,15 +3,15 @@
 
 contrabasso =  \notes \relative c {
        % copied 21 from cello
-       c1\ff ~|
+       c1\ff~|
        c|
        f,4-. r r2|
        R1|
-       c'1\ff ~|
+       c'1~|
        c|
        f,4-. r r2|
        R1|
-       c'1\ff ~|
+       c'1~|
        c|
        fis,4-. r r2|
        R1|
@@ -57,17 +57,17 @@ contrabasso =  \notes \relative c {
        %40
        fis2\sf r|
        fis2\sf r|
-       f!2\sf r|
+       f2\sf r|
        f2\sf r|
        e2\sf r|
        %45
-       es!2\sf r|
-       des2. es4\sf(|
-       )d2. es4\sf(|
-       )d2. es4\sf(|
-       )d2. es4\sf(|
+       es2\sf r|
+       des2. es4\sf|
+       d2. es4\sf|
+       d2. es4\sf|
+       d2. es4\sf|
        % 50
-       )d4 r r2|
+       d4 r r2|
        R1
        es'4\p r r r8 es(|
        )as,4 r r r8 as(|
@@ -122,7 +122,7 @@ contrabasso =  \notes \relative c {
        a(g a)g|
        c2.()bes4|
        a(g a)g|
-       f!2.()es4|
+       f2.()es4|
        d(c d)c|
        %90
        f2.()es4|
@@ -150,7 +150,7 @@ contrabasso =  \notes \relative c {
        % copied 8 from cello
        %110
        [g'8:8 bes d es][f, a cis d]|
-       [es,8: g: b: c!:][d,: f: a: bes:]|
+       [es,8: g: b: c:][d,: f: a: bes:]|
        [c,: es: g: a:][cis,: e: g: bes:]|
        [d,: g: bes: d:][d,: fis: a: d:]|
        g,,2 ~ g4. g8|
@@ -160,7 +160,7 @@ contrabasso =  \notes \relative c {
        g4. g8 g4 r8 g|
        g4\p r r2|
        % urg, this is *rest*, not skip: 
-       % need own staff for rests, mustn't collapse to one cello staff!
+       % need own staff for rests, mustn't collapse to one cello staff
        %120 - 1
        R1*21|
        % copied 4 frorm cello
@@ -230,18 +230,16 @@ contrabasso =  \notes \relative c {
 
        %195
        )g,4 r r r8 g(|
-%%     \!)d2\ff e'|
-%%     dis b|
-       \!)d2\ff e|
-       dis b'|
-       es4\p r r r8 es(|
+       \!)d2\ff e'|
+       dis b|
+       e4\p r r r8 es(|
        )a,4 r r r8 a(|
        )g1|
 
        %200
        f|
        % copied 18 from cello
-       es'!4\fp r e r|
+       es'4\fp r e r|
        f r g r|
        as r g r|
        f r fis r|
@@ -291,10 +289,10 @@ contrabasso =  \notes \relative c {
        R1*3|
 
        %copied 59 from cello
-       [c8\f e g as][bes, d fis g]|
+       [c8\f es g as][bes, d fis g]|
 
        %240
-       [as, c e f!][g, bes d es]|
+       [as, c e f][g, bes d es]|
        f4 r r2|
        R1*3|
        c4\p r r r8 c(|
@@ -319,7 +317,7 @@ contrabasso =  \notes \relative c {
        \!ges\f|
        f\p|
        as\f|
-       g!\p|
+       g\p|
        bes\f|
 
        %260
@@ -339,7 +337,7 @@ contrabasso =  \notes \relative c {
        b,4. b'8 b2\sf|
        
        %270
-       [c,8-"sempre"\ff b c d][es\ff d es c]|
+       [c,8-"sempre"\ff b c d][es d es c]|
        [b c d c][b c b g]|
        [c8 b c d][es d es c]|
        [b c d c][b c b g]|
@@ -349,15 +347,15 @@ contrabasso =  \notes \relative c {
        [c b c g][c b c g]|
        c1 ~|
        c|
-       f4-. r r2|
+       f,4-. r r2|
        R1|
 
        %280
-       c1 ~|
+       c'1 ~|
        c|
-       f4-. r r2|
+       f,4-. r r2|
        R1|
-       c1 ~|
+       c'1 ~|
 
        %285
        c|
@@ -378,24 +376,24 @@ contrabasso =  \notes \relative c {
        %295
        R1|
        c4 r r2|
-       r2 r4 f,|
-       c' r r2|
-       r2 r4 f,|
+       r2 r4 g|
+       c r r2|
+       r2 r4 g|
 
        %300
-       c' r r2|
+       c r r2|
        R1|
-       f,4 r r2|
+       g4 r r2|
        R1|
-       c'4 r r2|
+       c4 r r2|
 
        %305
        R1|
-       f,4 r r2|
+       g4 r r2|
        R1*3|
 
        %310
-       c'4\pp r r2|
+       c4\pp r r2|
        R1|
        c4 r r2|
        c4 r r2|
index b281667604e12f3441f981c216bd2e8e3013e746..56d271a8f29c400ad5431fa30b60c2b60b4f96c2 100644 (file)
@@ -9,6 +9,7 @@
        % Mandatory Mutopia settings:
        textheight = 270.0\mm;
        linewidth = 180.0\mm;
+       indent = 30.\mm;
 
        \translator {
                \ThreadContext
                
                %% devNullThread = #'never
                \consists "Thread_devnull_engraver";
+
+               %\remove "Dynamic_engraver";
+               %\remove "Text_engraver";
        }
        \translator {
                \HaraKiriStaffContext
+               
+               %\consists "Dynamic_engraver";
+               %\consists "Text_engraver";
+
                \consists "Mark_engraver";
                MultiMeasureRest \override #'minimum-width = #6
        }
index e5ff529fe09f10c3b692e638ec52a7df93f6f972..6eca4d7b2e7f7267228546fc3fbed2bda1a81799 100644 (file)
                
                %% devNullThread = #'never
                \consists "Thread_devnull_engraver";
+
+               %\remove "Dynamic_engraver";
+               %\remove "Text_engraver";
        }
        % We need the HaraKiri staff for Staff Combining,
        % but we better remove the Instrument_name_engraver.
        \translator {
                \HaraKiriStaffContext
+               
+               %\consists "Dynamic_engraver";
+               %\consists "Text_engraver";
+
                \consists "Mark_engraver";
                \remove "Instrument_name_engraver";
        }
index b4fe792cc642cac05b41888069cdfdcc24a84021..d04a79cd33a11b238b591da305c0eb35c933fdac 100644 (file)
@@ -7,8 +7,7 @@
 corniStaff = \context Staff = corni <
        \property Staff.midiInstrument = #"french horn"
 
-       \property Staff.instrument = #`(lines
-         "2 Corni" (rows "(E" ,text-flat ")"))
+       \property Staff.instrument = #`(rows "Corni in E" ,text-flat)
        
        \property Staff.instr = #`(lines "Cor."  (rows "(E" ,text-flat ")"))
        \property Staff.transposing = #3
index 4ca1482ccfdfae2dcafd3d4e86d241af5496f5a4..814517d8716d99323384b29332d039d93a44f6a9 100644 (file)
@@ -122,11 +122,13 @@ cornoI =  \notes \relative c {
        R1*17|
        r4 r8 e,8 e4. e8|
        r4 r8 e8 e4. e8|
+       \property Voice.crescendoText = #"cresc."
+       \property Voice.crescendoSpanner = #'dashed-line
+       r4 r8 e8\< e4. e8|
        r4 r8 e8 e4. e8|
        r4 r8 e8 e4. e8|
        r4 r8 e8 e4. e8|
-       r4 r8 e8 e4. e8|
-       f'2. e4|
+       \!f'2.\ff e4|
        d e d e|
        f2. e4|
        d e d e|
index f718a3ebabdf021a21ffde99a8f4d9bf0f91e9c8..53e5f5f58bbf4e596062957196b8aa358a3f0d35 100644 (file)
@@ -94,7 +94,7 @@ cornoII =  \notes \relative c {
        R1*3|
        d4\ff r c r|
        d r c r|
-       e, r d' r|
+       g r d' r|
        d r e r|
        d4 r r2|
        R1|
index a5226850a4f6b03a90bc26d1a240565bb238bd50..f8f6e2c467f5f7372fc49eab91d3abfe47c4838c 100644 (file)
@@ -6,7 +6,7 @@
 
 fagottiStaff =  \context Staff = fagotti <
        \property Staff.midiInstrument = #"bassoon"
-       \property Staff.instrument = #"Fagotti"
+       \property Staff.instrument = #"Fagotti"
        \property Staff.instr = #"Fg."
        \clef "bass";
        %\property Staff.clefGlyph = #"clefs-F"
index 61d3bbf3ba4abe49c3c84069802486e8fca8da02..578da4ab7158d26709a15292a64a4edf63bbc74e 100644 (file)
@@ -37,11 +37,11 @@ fagottoI =  \notes \relative c {
        f\sf r|
        f\sf r|
        e1\sf es\sf|
-       d2. es4\sf(|
-       )d2. es4\sf(|
-       )d2. es4\sf(|
-       )d2. es4\sf(|
-       )d4 r r2|
+       d2. es4\sf|
+       d2. es4\sf|
+       d2. es4\sf|
+       d2. es4\sf|
+       d4 r r2|
        R1*9|
        
        \clef "tenor";
@@ -108,7 +108,7 @@ fagottoI =  \notes \relative c {
        %% 110|
        % copied from cello, copied from viola|
        [g8 bes d es][f, a cis d]|
-       [es,8:8 g: b: c!:][d,: f: a: bes:]|
+       [es,8:8 g: b: c:][d,: f: a: bes:]|
        [c,: es: g: a:][cis,: e: g: bes:]|
        [d,: g: bes: d:][d,: fis: a: d:]|
        g,2 ~ g4. g8|
@@ -189,13 +189,15 @@ fagottoI =  \notes \relative c {
        g~|
        g~|
        g|
-       e''2.(f4|
+       \property Voice.crescendoText = #"cresc."
+       \property Voice.crescendoSpanner = #'dashed-line
+       e''2.(\<f4|
        e d b)g|
        g'2.(a4|
        g2)f|
        e2.(f4|
        e d b)g|
-       g2\ff f|
+       \!g2\ff f|
        e a~|
        a1\p~|
        a~|
@@ -257,8 +259,8 @@ fagottoI =  \notes \relative c {
        R1*7|
 
        %%238 copied from cello from viola|
-       [c8\f e g as][bes, d fis g]|
-       [as, c e f!][g, bes d es]|
+       [c8\f es g as][bes, d fis g]|
+       [as, c e f][g, bes d es]|
 
        f4 r r2|
 
@@ -291,7 +293,7 @@ fagottoI =  \notes \relative c {
        r4 r8 d d2\sf|
 
        %% 270 copied from cello|
-       [c,8-"sempre"\ff b c d][es\ff d es c]|
+       [c,8-"sempre"\ff b c d][es d es c]|
        [b c d c][b c b g]|
        [c8 b c d][es d es c]|
        [b c d c][b c b g]|
index 59b624f56b89e64371df0679e2e682f735403457..691af797daaaa5f269a655894fdbdb9ce03e64df 100644 (file)
@@ -28,11 +28,11 @@ fagottoII =  \notes \relative c {
        f\sf r|
        e1\sf|
        es\sf|
-       d2. es4\sf(|
-       )d2. es4\sf(|
-       )d2. es4\sf(|
-       )d2. es4\sf(|
-       )d4 r r2|
+       d2. es4\sf|
+       d2. es4\sf|
+       d2. es4\sf|
+       d2. es4\sf|
+       d4 r r2|
        R1*9|
        
        \clef "tenor";
@@ -107,7 +107,7 @@ fagottoII =  \notes \relative c {
        %% 110|
        % copied from cello, copied from viola|
        [g8 bes d es][f, a cis d]|
-       [es,8:8 g: b: c!:][d,: f: a: bes:]|
+       [es,8:8 g: b: c:][d,: f: a: bes:]|
        [c,: es: g: a:][cis,: e: g: bes:]|
        [d,: g: bes: d:][d,: fis: a: d:]|
        g,,2 ~ g4. g8|
@@ -223,13 +223,12 @@ fagottoII =  \notes \relative c {
        \property Voice.crescendoSpanner = #'dashed-line
        r4 r8 c\< c4. c8|
        r4 r8 c c4. c8|
-
+       
+       r4 r8
        \clef "tenor";
        %\property Staff.clefGlyph = #"clefs-C"
        %\property Staff.clefPosition = #2
-
-       
-       r4 r8 d d4. d8|
+       d d4. d8|
        r4 r8 es es4. es8|
        
        \clef "bass";
@@ -266,8 +265,8 @@ fagottoII =  \notes \relative c {
 
        %a deux|
        %%238 copied from cello from viola|
-       [c8\f e g as][bes, d fis g]|
-       [as, c e f!][g, bes d es]|
+       [c8\f es g as][bes, d fis g]|
+       [as, c e f][g, bes d es]|
 
        f4 r r2|
 
@@ -293,7 +292,7 @@ fagottoII =  \notes \relative c {
 
        % a deux|
        %% 270 copied from cello|
-       [c,8-"sempre"\ff b c d][es\ff d es c]|
+       [c,8-"sempre"\ff b c d][es d es c]|
        [b c d c][b c b g]|
        [c8 b c d][es d es c]|
        [b c d c][b c b g]|
index d0994194f6ed581ea0a6aa4425661b44db3583bb..7cb233b198dea7bac771af24320b509eba1d6523 100644 (file)
@@ -6,7 +6,7 @@
 
 flautiStaff =  \notes \context Staff = flauti <
        \property Staff.midiInstrument = #"flute"
-       \property Staff.instrument = #"Flauti"
+       \property Staff.instrument = #"Flauti"
        \property Staff.instr = #"Fl."
        \global
        \context Voice=one \partcombine Voice
index 8f813bb7bea9e30a981290734548701ce1778051..d990aa3944892329eb07fe1127412ea05d5c4928 100644 (file)
@@ -41,10 +41,10 @@ flautoI =  \notes \relative c {
        as\sf r|
        g1\sf|
        ges\sf|
-       f2. ges4\sf (|
-       )f2. ges4\sf (|
-       )f2. ges4\sf (|
-       )f2. ges4\sf|
+       f2. ges4\sf|
+       f2. ges4\sf|
+       f2. ges4\sf|
+       f2. ges4\sf|
        f4 r r2|
        R1*9|
        \property Voice.crescendoText = #"cresc."
@@ -83,9 +83,9 @@ flautoI =  \notes \relative c {
        fis(g fis)g|
        es2.()d4|
        fis(g fis)g|
-       a2.()g4|
+       as2.()g4|
        b,(c b)c|
-       a'2.()g4|
+       as'2.()g4|
        b,(c b)c|
        r2 es\sf|
        r es\sf|
index e134aa1160bc354f995465a1a92deed201910eee..5f5ec2801e4331180cb9f1d846229481f8869605 100644 (file)
@@ -74,9 +74,9 @@ flautoII =  \notes \relative c {
        bes4 r8 bes' bes4 r8 bes|
        bes4 r8 bes bes4 r8 bes|
        R1*4|
-       as,4\ff r8 des c4 r8 g|
+       as4\ff r8 des c4 r8 g|
        f4 r8 bes as4 r8 es|
-       des4 r8 g f4 r8 as'|
+       des4 r8 g f4 r8 as|
        g4 r8 g g4 r8 g|
        as4 r r2|
        R1|
index 004a4de362f10ae65d3034d37e78d1a6dd956eac..1c061cefcdbb64b0b44e0ce06aad5f50e36a2692 100644 (file)
@@ -1,10 +1,10 @@
 % Ugh, we need to override some LaTeX titling stuff
 \header {
-  title =      "Ouverture\\vrule width0pt height 0pt depth 1ex";
+  title =      "Ouvertüre\\vrule width0pt height 0pt depth 1ex";
   subtitle =   "\\normalsize Zu Heinrich Joseph v. Collins Trauerspiel\\vrule width0pt height 0pt depth 1ex";
   subsubtitle =        "\\Large\\bf Coriolan";
   opus =  "Op. 62";
-  piece = "\\normalfont\\large Allegro con brio";
+  piece = "\\hspace*{30mm}\\normalfont\\large Allegro con brio";
   composer =    "Ludwig van Beethoven (1770-1827)";
   enteredby =   "JCN";
   instrument = \instrument;
   mutopiainstrument = \instrument;
   date = "1807";
 
+  source = "Six Great Overtuers in Full Score, Ludwig van Beethoven; Dover
+   Publications INC, New York (1985).  Unabridged republication of
+   Beethoven's Werke, Ouverturen fuer Orchester:  No. 18-21, 26-27;
+   Breitkopf and Haertel, Leipzig, n.d. [1862-1865].";
+
   %{
 
-  From Ouverture Coriolan is no Urtext edition available, although
-  there are Urtext editions of Beethoven's symphonys.  The Eulenburg
-  edition is commonly regarded as the Coriolan Urtext.
+  i.  Six Great Overtuers in Full Score, Ludwig van Beethoven; Dover
+      Publications INC, New York (1985).  Free of copyright and
+      copyright marks.  Reprint.  Originally published: Breitkopf and
+      Haertel, n.d. [1862-1865] (Ludwig van Beethoven's Werke; Ser 3)
+      No. 18-21, 26-27.
+      M1004.B4097
+      ISBN 0-486-24789-9
+
+  Differences of Mutopia score
+
+  The printed output of this Mutopia score exhibits a number of
+  differences to the original source i.  These differences fall into
+  two catogaries: changes made by the editor (enteredby), and
+  automatic changes made by the GNU LilyPond typesetting mechanism.
+
+    a. Changes by the editor
+
+      1. The old notation of dotted quarter notes on the fourth beat
+         are modernised to a quarter note, a tie, and an eight note,
+         ie:
+
+            \partial 4; c4.  ->  c4 ~ | c8
+
+        GNU LilyPond 1.3.136 can not handle the old notation.  When
+        this old notation will be supported, it should be fairly
+        straightforward to find and change these instances.  It would
+        be advisable, however, to keep the current, modern printout,
+        and document this as a change in b.
+        
+      2. Notes are entered by their name, no efforts were made to
+         force the printing of reminder accidentals to mimic the
+         original edition, see b.2,3.
+      
+      3. Empty staffs are removed through the Hara-kiri-staff
+         mechanism.  This change can be undone very easily.
+
+      4. Margins are changed to Mutopia dictated values.  This change
+         can be undone very easily, however, see b.7.
+            
+    b. Automatic changes by the GNU LilyPond typesetting mechanism
+
+      1. Bar lines are not connected between staff groups.
+
+      2. Accidentals are not repeated within one bar, in
+
+           \key es\major; b2 b
+
+        only the first b gets an accidental.  Note that not in all
+        cases these accidentals are consistently repeated, however,
+        they are printed in most cases where the two notes are
+        more than one note apart.
+
+      3. Reminder accidentals are not printed, in
+
+           \key es\major; b1 | bes
+
+        no flat is printed with the bes.
+
+      4. Stem.default-neutral-direction and
+         Beam.default-neutral-direction are 1 (up).
+
+      5. Beam-dir-algorithm is 'majority.
+
+      6. The part combiner prints "I.", "II." and "`a 2." strings
+         where appropriate.
+
+      7. Line breaks are calculated.
+
+      8. GNU LilyPond has bugs that affect the Coriolan, see test
+         sources in input/bugs/*.ly.
+
+      
+  Other editions.
+    
+  ii.  Edition Eulenburg No.626 Coriolan, Overture for Orchestra
+       Op. 62; Ernst Eulenburg LTD, (not dated).  Edited 1936 by
+       dr. Max Unger from and following score autograph and original
+       published parts, ie, Stimmen-Drucke N.Simrock Bonn (most
+       probably from 1807) and Industriekontor Vienna (1807).
+  
+  iii.  Beethoven's Werke -- Ouverturen fuer Orchester; Breitkopf
+        u. Haertel, Leipzig (not dated, but very old and worn).
+  
+  iv.  Beethoven Werke II,1 -- Ouverturen und Wellingtons Sieg;
+       G. Henle Verlag, Muenchen (1974).  Veroeffentlichung des
+       Beethovenhauses in Bonn.  Die ausgabe wurde durch die
+       Unterstuetzung des Landes Nordrhein-Westfalen ermoeglicht.
+
+
+  Background.
+  
+  From Overture Coriolan is no Urtext edition available, although
+  there are Urtext editions of Beethoven's symphonies.
   
   Edition Eulenburg is the ``first after many years'' that tries to
   stay as close to the original text as possible.  During the 1900s,
   it was customary for editors not to respect the original text and
   make any changes they thought necessary.  Unger made corrections for
-  a few ``small and obvious'' inaccuracies.  This is the only score
-  edition to abbreviate (LilyPond source notation)
+  a few ``small and obvious'' inaccuracies.  Together with Breitkopf
+  and Haertel, this is the only score edition to abbreviate (LilyPond
+  source notation)
 
       [es16 es g g] [b b c c]
   
   
       [es8:16 g: b: c:]
 
-  however, editions of individual parts by Breitkopf and Haertel use
-  this common practice abbreviation too.
+  editions of individual parts by Breitkopf and Haertel use this
+  common practice abbreviation too.
   
   Edition Beethoven's Werke by Breitkopf and Haertel comes without any
   commentary, copyright mark or date.  There are no significant
   not from the autograph itself), and that Simrock's is a bit closer
   to the original autograph.  This edition is supposed to deviate from
   the autograph only in using `modernised notation' for the following
-  cases (LilyPond source notation).
+  cases (GNU LilyPond source notation), as described by the foreword.
 
-  i. Use dots instead of ties for sustaining of notes when there's no
-  measure break:
+  a. Use dots instead of ties for sustaining of notes when there's no
+     measure break:
   
-      c4 ~ c8  ->  c4.
+       c4 ~ c8  ->  c4.
+
+     We very much doubt this, as the 1862 edition already has this,
+     but in contrast, has a different change, see i.a.1 above.
 
-  ii. Don't repeat accidentals within the same measure:
+  b. Don't repeat accidentals within the same measure:
   
-      \key es \major; b4 c b! c |   ->   \key es \major; b4 c b c
+       \key es \major; b4 c b! c |   ->   \key es \major; b4 c b c
 
-  iii. Start slurring from first tied note, not from second:
+     We think that also other changes may have been made, see i.b.3
+     above.
+  
+  c. Start slurring from first tied note, not from second:
 
-      c4 ~ c8 ( d ) e   ->   c4 ( ~ c8 d ) e
+       c4 ~ c8 ( d ) e   ->   c4 ( ~ c8 d ) e
 
   From these deviations, the third is the only one unique to this
   edition, but these are easy to spot and mostly parenthesed; the
 
   %}
     
-  source = "i. Ed. Eulenburg, edited by dr. Max Unger 1936 from and
-  following score autograph and original published parts, ie,
-  Stimmen-Drucke N.Simrock Bonn (most probably from 1807) and
-  Industriekontor Vienna (1807).\\\\
-  ii. Beethoven's Werke -- Ouverturen fuer Orchester; Breitkopf u. Haertel,
-  Leipzig (not dated, but very old and worn).\\\\
-  iii.  Beethoven Werke II,1 -- Ouverturen und Wellingtons Sieg; G. Henle
-  Verlag, Muenchen (1974).
-  Veroeffentlichung des Beethovenhauses in Bonn.
-  Die ausgabe wurde durch die Unterstuetzung des Landes Nordrhein-Westfalen
-  ermoeglicht.";
-  
   style = "Classical";
   copyright = "Public Domain";
   maintainer = "Jan Nieuwenhuizen";
     \\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset
     and placed in the public domain by " + \maintainer +
     ".\\\\Unrestricted modification and redistribution is permitted
-    and encouraged---copy this music and share it!}";
+    and encouraged---copy this music and share it.}";
  tagline = \mutopiapublicdomain;
  footer = "pre-Mutopia-200y/mm/dd-nr";
 }
index 5da1133ee6726bed9505e3cbbbc723b2a71c5ea5..72cf4b454f5a0a4e88dcc5f4806563480611ebcf 100644 (file)
@@ -41,11 +41,11 @@ oboeI =  \notes \relative c'' {
        as\sf r|
        g1\sf|
        ges\sf|
-       f2. ges4(|
-       )f2. ges4(|
-       )f2. ges4(|
-       )f2. ges4(|
-       )f4 r r2|
+       f2. ges4|
+       f2. ges4|
+       f2. ges4|
+       f2. ges4|
+       f4 r r2|
        R1*9|
        \property Voice.crescendoText = #"cresc."
        \property Voice.crescendoSpanner = #'dashed-line
@@ -168,8 +168,8 @@ oboeI =  \notes \relative c'' {
        f2.\<( g4|
        f e cis)a|
        \!a'2\ff c|
-       b1\p~|
-       b~|
+       b1~|
+       b\p~|
        b~|
        b~|
        b|
index ac8e9c3bb0ccd6fbd8b01de4893085c0245ec705..ee98acea4a6be0729d397091533fe3b701595f54 100644 (file)
@@ -65,15 +65,9 @@ oboeII =  \notes \relative c{
        bes4. bes8 bes4 r8 bes|
        bes4 r8 bes bes4 r8 bes|
        bes4\p r r2|
-       R1*15|
-       \property Voice.crescendoText = #"cresc."
-       \property Voice.crescendoSpanner = #'dashed-line
-       r4 r8 as'\< ges4 r8 des|
-       es4 r8 bes' as4 r8 es|
-       f4 r r2|
-       R1*3|
+       R1*21|
        %a deux; urg copied ...|
-       \!f4\f r r r8 es|
+       \!f'4\f r r r8 es|
        des4 r r r8 c|
        bes4 r8 bes bes4 r8 bes|
        bes4 r8 bes bes4 r8 bes|
@@ -183,6 +177,6 @@ oboeII =  \notes \relative c{
        R1|
        b4 r r2|
        R1|
-       c4 r r2\pp|
+       c4\pp r r2|
        R1*18|
 }
index 2db87494384a0bd2a84e8a691547f42b2b45a808..ffbb68bd86eb781f0084f2d6b30d78de06efa852 100644 (file)
@@ -6,7 +6,7 @@
 
 oboiStaff =  \context Staff = oboi <
        \property Staff.midiInstrument = #"oboe"
-       \property Staff.instrument = #"Oboi"
+       \property Staff.instrument = #"Oboi"
        \property Staff.instr = #"Ob."
        \global
        \context Voice=one \partcombine Voice
index 1e91be78b4906e2577a8f8e786c817b6d4eb3738..e49ee5d5f9305796cada555160623c06fe010817 100644 (file)
@@ -59,6 +59,7 @@ timpani =  \notes \relative c {
        g4 r8 g g4 r8 g|
        g4 r8 g g4 r8 g|
        R1|
+       % should extend over two bars tr ~~~~~~
        g1\trill~|
        g|
        g4 r8 g g4 r8 g|
@@ -137,8 +138,7 @@ timpani =  \notes \relative c {
 
 timpaniStaff =  \context Staff = timpani <
        \property Staff.midiInstrument = #"timpani"
-       \property Staff.instrument = #'(lines
-         "2 Timpani" "(C-G)")
+       \property Staff.instrument = #"Timpani in C-G  "
        \property Staff.instr = #"Timp."
        \clef "bass";
        \Time
index 775dd7fe3f731f0689440b4e9ad51ccbe3b93387..cf414bb1315470f2f732df5132349c4d18c76ad6 100644 (file)
@@ -8,7 +8,7 @@ trombeStaff =  \context Staff = trombe <
        \context Staff=trombe {
                \property Staff.midiInstrument = #"trumpet"
 
-               \property Staff.instrument = #`(lines "2 Trombe" (rows "(C)"))
+               \property Staff.instrument = #"Trombe in C"
                \property Staff.instr = #`(lines "Tbe." (rows "(C)"))
 
                \notes { \key c \major; }
index 779e50be683de881241720f90325b8280caa0e3e..641196037c1975578959613b178cb9a2ca7308e2 100644 (file)
@@ -116,14 +116,14 @@ violaI =  \notes \relative c {
        [d8\< d-.] es4. es8-. d4 ~|
        [d8 d-.] es4. es8-. d4 ~|
        [d8 d-.] es4. es8-. d4 ~|
-       [d8 d-.] es4. es8-. d4 (|
-       \!)fis,2:\ff fis4: g:|
+       [d8 d-.] es4. es8-. d4|
+       \!fis2:\ff fis4: g:|
        %85
        d2: d:|
        fis: fis4: g:|
        c,: d: c: d:|
        b2: b4: c:|
-       f': es: f: es:|
+       f: es: f: es:|
        %90
        b2: b4: c:|
        d: c: d: c:|
@@ -155,7 +155,7 @@ violaI =  \notes \relative c {
        %110
        % cello has eighth notes here...
        [g,16 g bes bes][d d es es][f, f a a][cis cis d d]|
-       [es,8: g: b: c!:][d,: f: a: bes:]|
+       [es,8: g: b: c:][d,: f: a: bes:]|
        [c,: es: g: a:][cis,: e: g: bes:]|
        [d,: g: bes: d:][d,: fis: a: d:]|
        d2: d:
@@ -282,7 +282,7 @@ violaI =  \notes \relative c {
        )d4 r r r8 d8(|
        %195
        )g4 r r r8 g8|
-       [\!a16\ff a' a a]a4: a2:|
+       [\!a16\ff a' a a]a4: g2:|
        fis: dis:|
        
        e,4\p r r r8 e8(|
@@ -316,7 +316,7 @@ violaI =  \notes \relative c {
        bes,: c: bes: c:|
        
        e2:16\ff e4: f:|
-       b,: c: b: c:|
+       bes,: c: bes: c:|
        
        %220
        r4 r8 as as2\sf|
@@ -331,8 +331,8 @@ violaI =  \notes \relative c {
        [g8 g]g4. as8 as4 ~|
        [as8 as]f4. f8 g4|
        %230
-       c\p r r2|
-       r r4 r8 b\f|
+       c,\p r r2|
+       r r4 r8 b'\f|
        c4 r r2|
        r r4 r8 b\f|
        c4 r r2|
@@ -402,7 +402,7 @@ violaI =  \notes \relative c {
        R1|
        c,4 r r2|
        R1*15|
-       c4\pp r r2|
+       c4-#'((font-shape . upright) "pizz.") r r2|
        c4 r r2|
        c4 r r2|
 }
index 7ba0e2c04614e0ff02e2e0ea48337fbefb8362ea..23508b874f42e25586a831a9cbd34536ec9b98b1 100644 (file)
@@ -117,23 +117,20 @@ violaII =  \notes \relative c {
        [d8 d-.] es4. es8-. d4 ~|
        [d8 d-.] es4. es8-. d4 ~|
        [d8 d-.] es4. es8-. d4 (|
-       \!)fis,2:\ff fis4: g:|
+       \!)fis2:\ff fis4: g:|
        %85
        d2: d:|
        fis: fis4: g:|
        c,: d: c: d:|
        b2: b4: c:|
-       f': es: f: es:|
+       f: es: f: es:|
        %90
        b2: b4: c:|
        d: c: d: c:|
        c,4 r8 c' c4\sf()des|
        r r8 c c4\sf()des|
-       
        r r8 c c4\sf()des|
-       
        r r8 c c4\sf()des|
-       
        [c16 es es es]es4:[es16 fis fis fis]fis4:|
        [b,16 d d d]d4:[bes16 e e e]e4:|
        [as,16 c c c ]c4:[g16 c c c]c4:|
@@ -155,7 +152,7 @@ violaII =  \notes \relative c {
        %110
        % cello has eighth notes here...
        [g,16 g bes bes][d d es es][f, f a a][cis cis d d]|
-       [es,8: g: b: c!:][d,: f: a: bes:]|
+       [es,8: g: b: c:][d,: f: a: bes:]|
        [c,: es: g: a:][cis,: e: g: bes:]|
        [d,: g: bes: d:][d,: fis: a: d:]|
        g,2: g:
@@ -282,9 +279,8 @@ violaII =  \notes \relative c {
        )d4 r r r8 d8(|
        %195
        )g4 r r r8 g8|
-       [\!f16\ff f' f f]f4: f2:|
+       [\!f16\ff f' f f]f4: e2:|
        dis: b:|
-       
        e,4\p r r r8 e8(|
        )a4\< r r r8 a8(|
        %200
@@ -307,17 +303,13 @@ violaII =  \notes \relative c {
        [g8 g-.] as4. as8-. g4 (|
        \!)b,2:16\ff b4: c:|
        g'2: g:|
-       
        %214
        b,2:16\ff b4: c:|
        g'2: g:|
-       
        bes,2:16\ff bes4: as:|
        g: f: g: f:|
-       
        bes2:16\ff bes4: as:|
        g: f: g: f:|
-       
        %220
        r4 r8 f f4\sf()ges|
        r4 r8 f f4\sf()ges|
@@ -331,8 +323,8 @@ violaII =  \notes \relative c {
        [g8 g]g4. as8 as4 ~|
        [as8 as]f4. f8 g4|
        %230
-       c\p r r2|
-       r r4 r8 b\f|
+       c,\p r r2|
+       r r4 r8 b'\f|
        c4 r r2|
        r r4 r8 b\f|
        c4 r r2|
@@ -370,7 +362,7 @@ violaII =  \notes \relative c {
        r4 r8 e g4.\sf()f8|
        r4 r8 f as4.\sf()g8|
        %270
-       g2:16-"sempre" g:\ff|
+       g2:16-"sempre"\ff g:|
        g: g:|
        g: g:|
        g: g:|
@@ -402,7 +394,7 @@ violaII =  \notes \relative c {
        R1|
        c,4 r r2|
        R1*15|
-       c4\pp r r2|
+       c4-#'((font-shape . upright) "pizz.") r r2|
        c4 r r2|
        c4 r r2|
 }
index 97ba5f5bcf757954f46d36c38607f860b850b5a4..10b5a45043a33df214b0d1fac6f9e35542b95fde 100644 (file)
@@ -26,9 +26,9 @@ violinoI =  \notes \relative c {
        %20
        [g8 fis] fis4 ~ fis \!g-.\f|
        R1|
-       [bes,,!8\p-. des-.][des()c][c-. f-.]f4-"ten."|
-       [bes,!8\p-. des-.][des()c][c-. f-.]f4-"ten."|
-       [bes,!8\p-. des-.][des()c][c-. ges'-.][ges()f]|
+       [bes,,8\p-. des-.][des()c][c-. f-.]f4-"ten."|
+       [bes,8\p-. des-.][des()c][c-. f-.]f4-"ten."|
+       [bes,8\p-. des-.][des()c][c-. ges'-.][ges()f]|
        %25
        [f-. bes-.][bes()a][a-. es'-.][es()des]|
        \property Voice.crescendoText = #"cresc."
@@ -48,25 +48,25 @@ violinoI =  \notes \relative c {
        %35
        [f16 f f f][es es es es][des des des des][c c c c]|
        b2:16 c:|
-       d!: es:|
+       d: es:|
        e: f:|
        g: as:|
        %40
        a2\sf [c,,8-. es-.][es()d]|
        a''2\sf [c,,8-. es-.][es()d]|
-       as''!2\sf [b,,8-. d-.][d()c]|
+       as''2\sf [b,,8-. d-.][d()c]|
        as''2\sf [b,,8-. d-.][d()c]|
        g''1\sf|
        
        %45
        ges\sf|
        
-       f2. ges4\sf(|
-       )f2. ges4\sf(|
-       )f2. ges4\sf(|
-       )f2. ges4\sf(|
+       f2. ges4\sf|
+       f2. ges4\sf|
+       f2. ges4\sf|
+       f2. ges4\sf|
        %50
-       )f1\>~|
+       f1\>~|
        f4 d( bes)as|
        \!g2.\p( as4|
        g f d ) bes|
@@ -115,8 +115,8 @@ violinoI =  \notes \relative c {
        [a8 bes-.] bes4. bes8-. bes4~|
        [bes8 bes-.] bes4. bes8-. bes4~|
        [bes8 c-.] c4. c8-. c4~|
-       [c8 d-.] d4. d8-. d4(|
-       )es2:16\ff es4: d:|
+       [c8 d-.] d4. d8-. d4|
+       es2:16\ff es4: d:|
        %85
        fis: g: fis: g:|
        es2: es4: d:|
@@ -135,8 +135,8 @@ violinoI =  \notes \relative c {
        %95
        r8 es' as,4\sf~as()g|
        r8 es' as,4. fis8 es'4~|
-       [es8 d] g,4. e8 d'4~|
-       [d8 c] f,4. c'8 es,4 ~|
+       [es8 d] g,4. e8 des'4~|
+       [des8 c] f,4. c'8 es,4 ~|
        
        [es8 c'] a4. c8 g4 ~|
        %100
@@ -173,7 +173,7 @@ violinoI =  \notes \relative c {
        
        %120
        bes4 r8 es des4 r8 bes|
-       as!4 r8 es' des4 r8 as|
+       as4 r8 es' des4 r8 as|
        g4 r r2|
        r4 r8 es' des4 r8 as|
        g4 r r2|
@@ -204,7 +204,7 @@ violinoI =  \notes \relative c {
        f4\f r8 bes as4 r8 es|
        des4 r8 ges f4 r8 c|
        bes4 r8 e f4 r8 bes,|
-       bes4 r8 g'! e4 r8 bes'|
+       bes4 r8 g' e4 r8 bes'|
        \property Voice.crescendoText = #"cresc."
        \property Voice.crescendoSpanner = #'dashed-line
        as4\p r8 des\< c4 r8 g|
@@ -228,7 +228,7 @@ violinoI =  \notes \relative c {
        f,,1 ~|
        f|
        
-       <f'2\sf d'!> [f,8-. as-.][as()g]|
+       <f'2\sf d'> [f,8-. as-.][as()g]|
        <f'2\sf d'> [f,8-. as-.][as()g]|
        %160
        [f8-.\p as-.][as()g] [g-. c-.][c()b]|
@@ -319,31 +319,21 @@ violinoI =  \notes \relative c {
        %225
        r8 g c,4. a8 f'4 ~|
        [f8 f] b,4. f'8 as,4 ~|
-       [as8 f'] d!4. f8 c4 ~|
+       [as8 f'] d4. f8 c4 ~|
        [c8 b] g,4. as8 as'4 ~|
        [as8 as] f4. f8 g4|
        %230
        c,4\p r8 as' g4 r8 es|
-       
+       d4 r8 as' g4 r8 d\f|
+       es4 r8 as\p g4 r8 es|
        d4\p r8 as' g4 r8 d\f|
-       
-       es4\p r8 as\p g4 r8 es|
-       
-       d4\p r8 as' g4 r8 d\f|
-       
        es4\p r8 as'\p g4 r8 d|
-       
        %235
        c4 r8 f es4 r8 bes|
-       
        as4 r8 d c4 r8 g|
-       
        f4 r8 c' b4 r8 f'|
-       
        es4\f r8 as g4 r8 d|
-       
-       c4\f r8 f es4 r8 bes|
-       
+       c4 r8 f es4 r8 bes|
        %240
        as4-. des-. r2|
        R1*3|
@@ -408,7 +398,7 @@ violinoI =  \notes \relative c {
        \property Voice.decrescendoSpanner = #'dashed-line
        f4\> r d r|
        R1|
-       \!es!4\p r r2|
+       \!es4\p r r2|
        R1|
        d,4-#'((font-shape . upright) "pizz.") r r2|
        
@@ -449,7 +439,7 @@ violinoI =  \notes \relative c {
 violinoIStaff =  \context Staff = violino1 <
        \property Staff.midiInstrument = #"violin"
        \property Staff.instrument = #"Violino I  "
-       \property Staff.instr = #"Vl. I   "
+       \property Staff.instr = #"Vl. I    "
        \notes< 
                \global
                \context Voice=violinoi
index e075b63aacdec9135ee55c1a8b836080d4d5ca95..fc9e15a4eb03e35c8bb24d4527f146e2043b4a69 100644 (file)
@@ -46,7 +46,7 @@ violinoII =  \notes \relative c {
        %35
        [f16 f f f][es es es es][des des des des][c c c c]|
        b2:16 c:|
-       d!: es:|
+       d: es:|
        e: f:|
        
        <g: c,:> <as: c,:>|
@@ -150,7 +150,7 @@ violinoII =  \notes \relative c {
        g4 r r r8 f|
        es4 r r r8 d|
        
-       c4 r8 g fis4 r8 c'|
+       c4 r8 g' fis4 r8 c'|
        
        % looks lot like violino-1 110-113
        %110
@@ -158,7 +158,7 @@ violinoII =  \notes \relative c {
        
        g4 r8 c bes4 r8 f|
        
-       es4 r8 a g4 r8 cis|
+       es4 r8 a g4 r8 cis,|
        <[d16 s> <bes g'> <bes g'> <bes g'>] <a4:16 fis':> <a2:16 fis':>|
        <bes: g':> <bes: g':>|
        <bes: g':> <bes: g':>|
@@ -166,28 +166,10 @@ violinoII =  \notes \relative c {
        <bes: g':> <bes: g':>|
        <bes4\p g'> r r2|
        
-       % copied... urg: *same* as violino-1(119,128)
-       % URG: or is this R1*10??
-       % should hara-kiri like viola-1/2...
-              a'4 r8 es' d4 r8 a|
-       
-       %120
-       bes4 r8 es des4 r8 bes|
-       as!4 r8 es' des4 r8 as|
-       g4 r r2|
-       r4 r8 es' des4 r8 as|
-       g4 r r2|
-       %125
-       r4 r8 c bes4 r8 e,|
-       
-       as4 r8 des c4 r8 as|
-       
-       g4 r8 des' c4 r8 g|
-       as4 r8 es' des4 r8 as|
-       R1*3
+       R1*13
        %131
        % copied from viola(131,140)
-       [as,8 as c es][f es c as]|
+       [as8 as c es][f es c as]|
        [a c es f][ges f c a]|
        [bes des f ges][as ges des bes]|
 
@@ -195,7 +177,7 @@ violinoII =  \notes \relative c {
        [c es g as][bes as es c]|
        [des\p f a bes][c, es g as]|
 
-       % urg, copied, but nog ges, f, on violino!
+       % urg, copied, but nog ges, f, on violino.
        [bes, des f ges][as, c e f]|r [bes, d es]r[as, c des]|
        % [es, ges bes des][as c es as,]|
        r[bes bes des][as c es ges]|
@@ -205,7 +187,7 @@ violinoII =  \notes \relative c {
        f4\f r8 bes as4 r8 es|
        des4 r8 ges f4 r8 c|
        bes4 r8 e f4 r8 bes,|
-       bes4 r8 g'! e4 r8 bes'|
+       bes4 r8 g' e4 r8 bes'|
        \property Voice.crescendoText = #"cresc."
        \property Voice.crescendoSpanner = #'dashed-line
        as4\p r8 des\< c4 r8 g|
@@ -230,7 +212,7 @@ violinoII =  \notes \relative c {
        f1 ~|
        f|
        
-       <d2\sf d'!> [f8-. as-.][as()g]|
+       <d2\sf d'> [f8-. as-.][as()g]|
        <d2\sf d'> [f8-. as-.][as()g]|
        %160
        R1|
@@ -353,7 +335,7 @@ violinoII =  \notes \relative c {
        %copied violino-1(238,243)
        es'4\f r8 as g4 r8 d|
        
-       c4\f r8 f es4 r8 bes|
+       c4 r8 f es4 r8 bes|
        
        %240
        as4-. des-. r2|
@@ -364,18 +346,20 @@ violinoII =  \notes \relative c {
        [g8( d' b d][g d b )g~]|
        [g8( e' c e][g e c )g~]|
        [g8( f' d f][g f d )g,~]|
-       [g8( es'! c es][g es c )g~]|
+       [g8( es' c es][g es c )g~]|
        [g8( d' b d][g d b )g~]|
 
        %250
        [g8( es' c es][g es c )g~]|
        [g8( f' d f][g f d )g,~]|
-       [g8( es' c es][g es c )g~]|
+       \property Voice.crescendoText = #"cresc."
+       \property Voice.crescendoSpanner = #'dashed-line
+       [g8(\< es' c es][g es c )g~]|
        [g8( d' b d][g d b )g~]|
        [g8( es' c es][g es c )g]|
 
        %255
-       <c2:16\f es:> <c: es:>|
+       <\!c2:16\f es:> <c: es:>|
        [as8\p( f' des f][as f des )as]|
        <d2:16\f f:> <d: f:>|
        [bes8\p( g' es g][bes g es )bes]|
@@ -399,7 +383,7 @@ violinoII =  \notes \relative c {
        r4 r8 f as4.\sf()g8|
 
        %270
-       g2:16-"sempre" g:\ff|
+       g2:16-"sempre"\ff g:|
        g: g:|
        g: g:|
        g: g:|
@@ -445,7 +429,7 @@ violinoIIStaff =  \context Staff = violino2 <
        % eerste en tweede viool ;-)
        \property Staff.midiInstrument = #"violin"
        \property Staff.instrument = #"Violino II  "
-       \property Staff.instr = #"Vl. II   "
+       \property Staff.instr = #"Vl. II    "
        \notes< 
                \global
                \context Voice=violinoii
index b7f970ab684eb8268eaa9d9b6c1bff6515cf70c9..30db8710a2781239f8a520c6dfb8e3ac73e8cfeb 100644 (file)
@@ -2,15 +2,15 @@
 \version "1.3.120";
 
 violoncello =  \notes \relative c {
-       c1\ff ~|
+       c1\ff~|
        c|
        f,4-. r r2|
        R1|
-       c'1\ff ~|
+       c'1~|
        c|
        f,4-. r r2|
        R1|
-       c'1\ff ~|
+       c'1~|
        c|
        fis,4-. r r2|
        R1|
@@ -28,9 +28,9 @@ violoncello =  \notes \relative c {
        as4. as8 \!g4\f r4|
        R1|
        % 4 bars same as violino-1...
-       [bes,!8\p-. des-.][des()c][c-. f-.]f4-"ten."|
-       [bes,!8\p-. des-.][des()c][c-. f-.]f4-"ten."|
-       [bes,!8\p-. des-.][des()c][c-. ges'-.][ges()f]|
+       [bes,8\p-. des-.][des()c][c-. f-.]f4-"ten."|
+       [bes,8\p-. des-.][des()c][c-. f-.]f4-"ten."|
+       [bes,8\p-. des-.][des()c][c-. ges'-.][ges()f]|
 
        %25
        [f-. bes-.][bes()a][a-. es'-.][es()des]|
@@ -56,19 +56,19 @@ violoncello =  \notes \relative c {
        %40
        fis2\sf [c'8-. es-.][es()d]
        fis,2\sf [c'8-. es-.][es()d]
-       f,!2\sf [b8-. d-.][d()c]
        f,2\sf [b8-. d-.][d()c]
-       e,2\sf [bes'!8-. des-.][des()c]
+       f,2\sf [b8-. d-.][d()c]
+       e,2\sf [bes'8-. des-.][des()c]
 
        %45
-       es,!2\sf [a!8-. c-.][c()bes]|
-       d,4 [a'!8-. c-.][c()bes] es,4\sf(|
-       )d4 [a'!8-. c-.][c()bes] es,4\sf(|
-       )d4 [a'!8-. c-.][c()bes] es,4\sf(|
-       )d4 [a'!8-. c-.][c()bes] es,4\sf(|
+       es,2\sf [a8-. c-.][c()bes]|
+       d,4 [a'8-. c-.][c()bes] es,4\sf|
+       d4 [a'8-. c-.][c()bes] es,4\sf|
+       d4 [a'8-. c-.][c()bes] es,4\sf|
+       d4 [a'8-. c-.][c()bes] es,4\sf|
 
        %50
-       )d4 r r2|
+       d4 r r2|
        R1|
        [bes'8\p(g'es g][bes g es)bes~]|
        [bes(f'd f][bes f d)bes~]|
@@ -93,7 +93,7 @@ violoncello =  \notes \relative c {
        [c(as'f as][c as f)c~]|
        [c(bes'g bes][c bes g)c,~]|
        [c(as'f as][c as f)c~]|
-       [c(g'e g][c g e)bes]|
+       [c(g'e g][bes g e)bes]|
 
        %70
        as2\ff g|
@@ -102,7 +102,7 @@ violoncello =  \notes \relative c {
        \property Voice.crescendoSpanner = #'dashed-line
        [g8\p\<(bes' g bes][d bes g)d~]|
        [d8(a' fis a][d a fis)d]|
-       [\!f!8\sf\>(as f as][f g d)g]|
+       [\!f8\sf\>(as f as][f g d)g]|
 
        %75
        \!c,4\p r d r|
@@ -123,7 +123,7 @@ violoncello =  \notes \relative c {
        a(g a)g|
        c2.()bes4|
        a(g a)g|
-       f!2.()es4|
+       f2.()es4|
        d(c d)c|
 
        %90
@@ -163,7 +163,7 @@ violoncello =  \notes \relative c {
        % [g,16 g bes bes][d d es es][f, f a a][cis cis d d]|
        % see if this:8 neat trick works...
        [g,:8 bes d es][f, a cis d]|
-       [es,8: g: b: c!:][d,: f: a: bes:]|
+       [es,8: g: b: c:][d,: f: a: bes:]|
        [c,: es: g: a:][cis,: e: g: bes:]|
        [d,: g: bes: d:][d,: fis: a: d:]|
        g,,2 ~ g4. g8|
@@ -196,10 +196,10 @@ violoncello =  \notes \relative c {
        %131
        [g bes d es][f es bes g]|
        % shared with viola until here
-       as1 (|
+       as1|
        a|
        bes|
-       )c|
+       c|
        \!des2\p( c|
        bes as|
        ges f|
@@ -249,7 +249,7 @@ violoncello =  \notes \relative c {
 
        %160
        R1*3|
-       bes,!2\ff [e8-. g-.][g()f]|
+       bes,2\ff [e8-. g-.][g()f]|
        bes,2\sf [e8-. g-.][g()f]|
 
        %165
@@ -284,32 +284,30 @@ violoncello =  \notes \relative c {
        [g(e' c d][g e c )g~]|
        [g(f' d f][g f d )g,~]|
        [g(e' c d][g e c )g~]|
-       [g(d' b d][g d b )g(]|
+       [g(d' b d][g d b )g]|
 
        %190
-       \!)e2\ff d'|
+       \!e2\ff d'|
        cis a ~|
-       [a8( f' d f][a f d )a!~]|
-       [a( e' cis e][a e c )a!~]|
-       [a8( f' d f][a f d )a!~]|
-       [a( g' e g][a g e )a,!~]|
+       [a8( f' d f][a f d )a~]|
+       [a( e' cis e][a e cis )a~]|
+       [a8( f' d f][a f d )a~]|
+       [a( g' e g][a g e )a,~]|
 
        %195
        \property Voice.crescendoText = #"cresc."
        \property Voice.crescendoSpanner = #'dashed-line
-       [a8\<( f' d f][a f d )a!~]|
-       [a( e' cis e][a e c )g]|
-%%     \!f2\ff e|
-%%     dis b'~|
-       \!f2\ff e'|
-       dis b~|
-       [b8\p( g' e g][b g e )b!~]|
+       [a8\<( f' d f][a f d )a~]|
+       [a( e' cis e][a e cis )g]|
+       \!f2\ff e|
+       dis b'~|
+       [b8\p( g' e g][b g e )b~]|
 
        %200
-       [b8\<( fis' dis fis ][b fis dis )b!~]|
+       [b8\<( fis' dis fis ][b fis dis )b~]|
        [b8( g' e g][e g e )g]|
        [f(g f g][f g f)g]|
-       \!es!4\fp r e r|
+       \!es4\fp r e r|
        f r g r|
        
        %205
@@ -358,13 +356,13 @@ violoncello =  \notes \relative c {
 
        %235
        [c es g\p as][bes, d fis g]|
-       [as, c e f!][g, bes d es]|
+       [as, c e f][g, bes d es]|
        [f, as c d][es g b c]|
        [d, f as c][g, b d g]|
-       [c,\f e g as][bes, d fis g]|
+       [c,\f es g as][bes, d fis g]|
 
        %240
-       [as, c e f!][g, bes d es]|
+       [as, c e f][g, bes d es]|
        f4 r r2|
        R1*3|
        c4\p r r r8 c(|
@@ -389,7 +387,7 @@ violoncello =  \notes \relative c {
        \!ges\f|
        f\p|
        as\f|
-       g!\p|
+       g\p|
        bes\f|
 
        %260
@@ -409,7 +407,7 @@ violoncello =  \notes \relative c {
        b,4. b'8 b2\sf|
        
        %270
-       [c,8-"sempre"\ff b c d][es\ff d es c]|
+       [c,8-"sempre"\ff b c d][es d es c]|
        [b c d c][b c b g]|
        [c8 b c d][es d es c]|
        [b c d c][b c b g]|
@@ -419,15 +417,15 @@ violoncello =  \notes \relative c {
        [c b c g][c b c g]|
        c1 ~|
        c|
-       f4-. r r2|
+       f,4-. r r2|
        R1|
 
        %280
-       c1 ~|
+       c'1 ~|
        c|
-       f4-. r r2|
+       f,4-. r r2|
        R1|
-       c1 ~|
+       c'1 ~|
 
        %285
        c|
@@ -454,7 +452,7 @@ violoncello =  \notes \relative c {
        % urg, "" is assumed to be hairpin...
        %\property Voice.decrescendoSpanner = #""
        \property Voice.decrescendoSpanner = #'dashed-line
-       \times 2/3 {  c,4\> ( es c ~ } \times 2/3 {  c as' )g }|
+       \times 2/3 {  c,4\> ( es d ~ } \times 2/3 { d as' )g }|
 
        %300
        r2 r4 c,(|
index 21cf4ae11525453267f23de54f0bf205bfb0e5be..6a0f0a35188afd985066ba675c8d2c56f1c110f9 100644 (file)
@@ -34,7 +34,7 @@ instrument = "Piano"
     \\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset
     and placed in the public domain by " + \maintainer +
     ".\\\\Unrestricted modification and redistribution is permitted
-    and encouraged---copy this music and share it!}";
+    and encouraged---copy this music and share it.}";
  tagline = \mutopiapublicdomain;
  footer = "pre-Mutopia-200y/mm/dd-nr";
 }
index 7671f8003b6833e008cefbd4c515f0d46bdde070..9a412fa1148126df2e761dcd784a5172a795e475 100644 (file)
@@ -13,6 +13,3 @@ tarball=solo-cello-suite-ii
 mutopia-examples=scsii-cello scsii-viola
 mutopia-letter=$(mutopia-examples:%=out-letter/%.ps.gz)
 
-mutopia:
-       $(MAKE) examples="$(mutopia-examples)" PAPERSIZE=letter local-WWW $(mutopia-letter)
-
index fb551846dbc7b416cf868a20994a45a04bca55b5..537082799acc9e9f045022e07c06a2ca7eb82550 100644 (file)
@@ -35,7 +35,7 @@ information is taken to the extreme.
     \\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset
     and placed in the public domain by " + \maintainer +
     ".\\\\Unrestricted modification and redistribution is permitted
-    and encouraged---copy this music and share it!}";
+    and encouraged---copy this music and share it.}";
  tagline = \mutopiapublicdomain;
  footer = "Mutopia-2001/01/31-2";
 }
index 7597413dede0a08af0e08848927fdea621ef84c9..bcdf7aaa1f928e754eb0020f261a770582fc97a8 100644 (file)
@@ -9,10 +9,9 @@
 
 (use-modules
    (ice-9 debug)
-   ;; urg, these two only to guess if a '/' is needed to separate
-   ;; user-chord-name and additions/subtractions
    (ice-9 format)
    (ice-9 regex)
+   (ice-9 string-fun)
    )
 
 ;;
index c1f3258b2ce8e12ffbfc9f871e19ad173f1c588b..43c809c8655650d2db293bd8eeedf27331244dee 100644 (file)
                (dash-length . 4.0)
                (self-alignment-Y . 0)
                (Y-offset-callbacks . (,Side_position_interface::aligned_on_self))
-               (meta . ,(grob-description "Hairpin" hairpin-interface))
+               (meta . ,(grob-description "Hairpin" hairpin-interface dynamic-interface))
        ))
 
        (DotColumn . (
                (font-family . dynamic)
                (font-shape . italic)
                (self-alignment-Y . 0)
-               (meta . ,(grob-description "DynamicText" font-interface  text-interface ))
+               (meta . ,(grob-description "DynamicText" font-interface text-interface dynamic-interface))
        ))
        
        (DynamicLineSpanner . (
index aad55f430ceeb0d587df06046811e6ad0ac44fed..44cf91f0fa569a7d47a8f153d8c01170e7811a04 100644 (file)
          s))
       
   (define (lily-def key val)
-    (string-append
-     "\\def\\"
-     (if use-regex
-        ;; fixed in 1.3.4 for powerpc -- broken on Windows
-        (regexp-substitute/global #f "_"
-                                  (output-tex-string key) 'pre "X" 'post)
-        (output-tex-string key))
-     "{" (output-tex-string val) "}\n"))
-
+    (let ((tex-key
+          (if use-regex
+              ;; fixed in 1.3.4 for powerpc -- broken on Windows
+              (regexp-substitute/global
+               #f "_" (output-tex-string key) 'pre "X" 'post)
+              (output-tex-string key)))
+         (tex-val (output-tex-string val)))
+      (if (equal? (sans-surrounding-whitespace tex-val) "")
+         (string-append "\\let\\" tex-key "\\undefined\n")
+         (string-append "\\def\\" tex-key "{" tex-val "}\n"))))
+               
   (define (number->dim x)
     (string-append
      ;;ugh ly-* in backend needs compatibility func for standalone output
index 042cf07ba4cc88aa988d5b1106ae0802d6d4e081..522800c78a09f734682f3e87a9c4179e9140b296 100644 (file)
@@ -19,6 +19,7 @@ import __main__
 import operator
 import tempfile
 
+sys.path.append ('@datadir@/python')
 import gettext
 gettext.bindtextdomain ('lilypond', '@localedir@')
 gettext.textdomain('lilypond')
@@ -321,9 +322,14 @@ def find_tex_files (files, extra):
        return tfiles
 
 def one_latex_definition (defn, first):
-       s = ''
+       s = '\n'
        for (k,v) in defn[1].items ():
-               s = r'''\def\the%s{%s}''' % (k,open (v).read ())
+               val = open (v).read ()
+               if (string.strip (val)):
+                       s = s + r'''\def\lilypond%s{%s}''' % (k, val)
+               else:
+                       s = s + r'''\let\lilypond%s\relax''' % k
+               s = s + '\n'
 
        if first:
                s = s + '\\def\\mustmakelilypondtitle{}\n'
index 0536b3c333679b3e0146c012dd30dfacc40dd2ff..bf471d812274ce8d56b3e35b2699956b1991ab99 100644 (file)
@@ -8,6 +8,10 @@
 % TeXbook ex 7.7
 \def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
 %
+% If we must make titles, do so, before we're Skipped.
+\ifx\mustmakelilypondtitle\undefined\else\makelilypondtitle\fi
+\ifx\mustmakelilypondpiecetitle\undefined\else\makelilypondpiecetitle\fi
+%
 % skip if included already
 \def\SkipLilydefs{\endinput}
 \ifundefined{EndLilyPondOutput}
         nolilyfooter\texsuffix\endcsname
 \fi
 
-% If we must make titles, do so
-\ifx\mustmakelilypondtitle\undefined\else\makelilypondtitle\fi
-\ifx\mustmakelilypondpiecetitle\undefined\else\makelilypondpiecetitle\fi
-
 % fix chord.cc::banter_str before removing these
 \input fetdefs
 
index 7e33f301902ff266f246eb1da46d4723e9bdadfe..92e3747de496574ef465dca179be9c87836a4da2 100644 (file)
@@ -1,26 +1,33 @@
-%
-% LilyPond titling for LaTeX
-%
+%%
+%% LilyPond titling for LaTeX
+%%
+%% Note
+%%
+%%    Defining a value, but leaving it empty:
+%%        \def\lilypondfoo{}
+%%    makes LaTeX break on the \\ in:
+%%        \ifx\lilypondfoo\undefined\else{\lilypondfoo\\}\fi
+%%
 \def\makelilypondtitle
 {
   \begin{center}
         \bfseries
-        \ifx\lilypondtitle\undefined\else{\huge\lilypondtitle}\\ \fi
-        \ifx\lilypondsubtitle\undefined\else{\Large\lilypondsubtitle}\\ \fi
-        \ifx\lilypondsubsubtitle\undefined\else{\large\lilypondsubsubtitle}\\ \fi
+        \ifx\lilypondtitle\undefined\else{\huge\lilypondtitle\\}\fi
+        \ifx\lilypondsubtitle\undefined\else{\Large\lilypondsubtitle\\}\fi
+        \ifx\lilypondsubsubtitle\undefined\else{\large\lilypondsubsubtitle\\}\fi
   \end{center}
   \bigskip
   % urg
   \edef\saveparskip{\parskip}\parskip-5mm
   \begin{minipage}[t]{0.45\textwidth}
-        \ifx\lilypondpoet\undefined\else{\lilypondpoet}\\ \fi
-        \ifx\lilypondmeter\undefined\else{\lilypondmeter}\\ \fi
+        \ifx\lilypondpoet\undefined\else{\lilypondpoet\\}\fi
+        \ifx\lilypondmeter\undefined\else{\lilypondmeter\\}\fi
   \end{minipage}\hspace*{\fill}
   \begin{minipage}[t]{0.45\textwidth}
       \begin{flushright}
-          \ifx\lilypondcomposer\undefined\else{\large\normalfont\scshape\lilypondcomposer}\\ \fi
-          \ifx\lilypondopus\undefined\else{\lilypondopus}\\ \fi
-          \ifx\lilypondarranger\undefined\else{\lilypondarranger}\\ \fi
+          \ifx\lilypondcomposer\undefined\else{\large\normalfont\scshape\lilypondcomposer\\}\fi
+          \ifx\lilypondopus\undefined\else{\lilypondopus\\}\fi
+          \ifx\lilypondarranger\undefined\else{\lilypondarranger\\}\fi
         \end{flushright}%
   \end{minipage}\par
   \parskip\saveparskip
@@ -29,6 +36,7 @@
 %  \leavevmode
   \global\let\lilypondopus\relax%
   \global\let\lilypondpiece\relax%
+  \global\let\mustmakelilypondtitle\undefined%
 }
 %
 \def\makelilypondpiecetitle
@@ -39,6 +47,7 @@
   \nopagebreak%
   \global\let\lilypondopus\relax%
   \global\let\lilypondpiece\relax%
+  \global\let\mustmakelilypondpiecetitle\undefined%
 }
 \endinput