\usepackage{a4wide}
\title{Mudela}
\author{Jan Nieuwenhuizen \& Han-Wen Nienhuys}
-\date{March 2, 1998}
\def\file#1{\verb+#1+}
\chapter{A tutorial}
-\emph{\Large ***Under construction***}
+\emph{\Large ***Under construction: april 98***}
\section{Introduction}
how to combine these elements to express a piece of music in the
language that LilyPond understands. In other words, we try to explain
how to use LilyPond, and not how LilyPond works. For want of a better
-name we call this language Mudela (short for Music Description
+name we call the language Mudela (short for Music Description
Language).
This document does not cover all of Mudela. Due to technical details,
\section{Handy input}
-% \subsection{Durations}
-However, having only quarter notes may get a bit dull.
+\chapter{Features}
+
Durations are entered as their reciproce values
% a1 a2 a4 a a8 a a16 a a32 a a64 a a a a
\begin{mudela}[fragment,verbatim,center]
--- /dev/null
+#!@PYTHON@
+import os
+import sys
+import getopt
+import __main__
+
+lilypath =''
+try:
+ lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
+except KeyError:
+ print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
+ sys.exit(1)
+
+lilypath = lilypath + '/bin/'
+sys.path.append(lilypath)
+
+from lilypython import *
+
+lilyversion= ''
+mailaddress = "unknown"
+fullname = "unknown"
+news_file = ''
+
+def set_vars():
+ __main__.lilyversion = version_tuple_to_str(lilydirs.version_tuple())
+ os.environ["CONFIGSUFFIX"] = 'www';
+ __main__.mailaddress= os.environ['MAILADDRESS']
+ pw = pwd.getpwuid (os.getuid());
+
+ __main__.fullname= pw[4];
+
+
+backstr = '\n<hr>Please take me <a href=%s>back to the index</a>\n\
+of LilyPond -- The GNU Project Music typesetter\n\
+<hr><font size=-1>\n\
+This page was built using from lilypond-%s by <p>\n\
+<address><br>%s <a href=mailto:%s><<!bla>%s</a>></address>\n\
+<p></font>'
+set_vars ()
+banner_file = ''
+news_file=''
+news =''
+(options, files) = getopt.getopt(sys.argv[1:], '', ['news='])
+
+for opt in options:
+ o = opt[0]
+ a = opt[1]
+ if o == '--news':
+ news_file = a
+
+def footstr(index):
+ return backstr % (index, lilyversion, fullname, mailaddress, mailaddress)
+
+index_file='../../out-www/index.html'
+banner = footstr (index_file)
+banner_id = '<! banner_id >'
+
+
+if news_file:
+ news = gulp_file (news_file)
+ i = regex.search ('^\*\*', news)
+ news = news[:i]
+
+
+for f in files:
+ s = gulp_file (f)
+ if news_file:
+ s = regsub.sub ('top_of_NEWS', '<XMP>\n'+ news + '\n</XMP>\n', s)
+
+ if regex.search (banner_id, s) == -1:
+ s = regsub.sub ('</body>', '</BODY>', s)
+ s = regsub.sub ('</BODY>', banner_id + banner + '</BODY>', s)
+
+ dump_file (f, s)