--- /dev/null
+import sys
+
+
+copyright = """copyright 1992. Peter Wallin. Verbatim redistribution
+permitted """
+
+
+
+"""
+
+This file produces the Score for CLA(O)P II -- a piece by
+Peter Wallin (pwallin@post8.tele.dk).
+
+The score produced by this file is
+copyright 1992. Peter
+Wallin. Verbatim redistribution permitted
+
+
+
+
+From: Rune Zedeler <rune@zedeler.dk>
+Sender: lilypond-devel-admin@gnu.org
+To: LilyPond Devel <lilypond-devel@gnu.org>
+Subject: CLA(O)P II
+Date: Wed, 12 Jun 2002 02:14:05 +0200
+
+The concert went well.
+I talked to the composer and he agreed to include the score in lilypond
+as long as his name was maintained and as long as he kept the copyrights
+- that is people are not allowed to make changes to the score.
+
+I think including CLA(O)P II is a Good Thing because it stress tests
+lilypond very well. This is also why I think that including only an
+excerpt from it is stupid.
+I am not sure how the inclusion should be.
+The raw lilypond file is 750k; gzip'ed 40k.
+Alternatively one could include the generating c-file into lilypond.
+Or perhaps we should just wait till I manage to redo it in scheme... :-)
+
+-Rune
+
+"""
+
+
+
+#//set to 1, 385 to typeset the whole score
+start_measure =1
+no_measures = 385
+voices = 48
+
+durs = ["16","8","8.","4"]
+grund = [
+ "x x x x xx x",
+ "x x xx xx x xx x",
+ "xx xx x xx xx x xx xx x ",
+
+ "x x x xx xx ",
+ "x xx xx x xx xx ",
+ "x xx x xx xx x xx xx x x",
+
+ "x x xx xx x ",
+ "xx xx x xx xx x ",
+ "xx x xx xx x xx xx x xx ",
+
+ "x xx xx x x ",
+ "x xx x xx xx x x",
+ "x x xx xx x xx xx x xx x",
+
+ "xx xx x x x ",
+ "xx x xx xx x xx ",
+ "x xx xx x xx xx x xx xx ",
+
+ "x xx x x x x",
+ "x x xx xx x xx x",
+ "xx xx x xx xx x xx xx x ",
+
+ "xx x x x xx ",
+ "x xx xx x xx xx ",
+ "x xx x xx xx x xx xx x x",
+
+
+ "x x x x xx x",
+ "xx xx x xx xx x ",
+ "xx x xx xx x xx xx x xx ",
+
+ "x x x xx xx ",
+ "x xx x xx xx x x",
+ "x x xx xx x xx xx x xx x",
+
+ "x x xx xx x ",
+ "xx x xx xx x xx ",
+ "x xx xx x xx xx x xx xx ",
+
+ "x xx xx x x ",
+ "x x xx xx x xx x",
+ "xx xx x xx xx x xx xx x ",
+
+ "xx xx x x x ",
+ "x xx xx x xx xx ",
+ "x xx x xx xx x xx xx x x",
+
+ "x xx x x x x",
+ "xx xx x xx xx x ",
+ "xx x xx xx x xx xx x xx ",
+
+ "xx x x x xx ",
+ "x xx x xx xx x x",
+ "x x xx xx x xx xx x xx x",
+
+ "x x x x xx x",
+ "xx x xx xx x xx ",
+ "x xx xx x xx xx x xx xx ",
+
+ "x x x xx xx ",
+ "x x xx xx x xx x",
+ "xx xx x xx xx x xx xx x "
+]
+
+accents = ''
+accstr = ''
+
+
+def stemme(st) :
+ adr = [0] * (385*16)
+ pos = st*48+44
+
+ for i in range(0,100):
+ adr[384*16-i*28] = ord ('X')
+
+ for k in range(0,48):
+ if k:
+ for j in range(0,8):
+ adr[pos] = 0
+ pos += 1
+
+ for j in range(0,4):
+ for c in grund[k]:
+ if c ==' ' :
+ adr[pos] = 0
+ else:
+ adr[pos] = 3-j+ord ('a')
+ pos += 1
+
+ for i in range(0,385*16):
+ ac = accents[48*4+i-((48+24-st)%48)*4]
+ if ac:
+ adr[i]=ac
+
+ return adr
+
+
+def print1(ch) :
+ accstr=""
+ if ch >= ord('A') and ch <=ord('D'):
+ ch += ord('a')-ord('A')
+ accstr="->"
+
+ namestr = ''
+ cr = chr (ch)
+
+ if cr=='a':
+ namestr="a"
+ elif cr=='b':
+ namestr="b"
+ elif cr=='c':
+ namestr="d'"
+ elif cr=='d':
+ namestr="e'"
+ elif cr=='X':
+ namestr="\\property Staff.NoteHead \\override #'style = #'cross c'"
+ accstr="-^ \\property Staff.NoteHead \\revert #'style"
+ else:
+ print 'foo', cr, chr(ch), ch == 'd', "A%sA" % cr
+ raise 'foo'
+
+ return (namestr,accstr)
+
+
+namestr = ''
+accstr = ''
+
+def print4(ptr):
+ val = reduce (lambda x,y : x|y, ptr)
+# sys.stderr.write ('%d ' % val)
+ if not val:
+ sys.stdout.write ("r4 ")
+ else:
+ dur=-1
+
+ global namestr
+ global accstr
+ if ptr[0]==0:
+ sys.stdout.write ("~")
+ (namestr, accstr) = print1(val)
+
+ for c in ptr:
+ if c==0:
+ dur += 1
+ else:
+ if dur>=0:
+ sys.stdout.write( "%s%s%s " % (namestr,durs[dur],accstr))
+ (namestr, accstr) = print1(c)
+ dur=0
+
+ sys.stdout.write( "%s%s%s "% (namestr,durs[dur],accstr))
+
+
+
+def print8(ptr) :
+ val = reduce (lambda x,y : x|y, ptr)
+ if val:
+ print4(ptr[0:4])
+ print4(ptr[4:8])
+ else:
+ sys.stdout.write ("r2 ")
+
+
+def print16(ptr):
+ val = reduce (lambda x,y : x|y, ptr)
+ if val:
+ print8(ptr[0:8])
+ print8(ptr[8:16])
+ else:
+ sys.stdout.write("R1 ")
+
+accents = [0] *(500*16)
+for i in range(0,32):
+ pos=i*12*16+4*48
+ accents[pos]=ord('D')
+ if(i<31) :
+ if(i>0):
+ accents[pos+4*12]=ord('A')
+ accents[pos+4*23]=ord('C')
+ accents[pos+4*35]=ord('B' )
+
+
+sys.stdout.write ('%%{\n %s \n %%}' % copyright)
+sys.stdout.write (r"""
+\include "paper11.ly"
+
+\header {
+ title = "CLA(O)P II"
+ composer = "Peter Wallin (1992-93)"
+ copyright = "Copyright (1992-93) Peter Wallin, verbatim redistribution permitted"
+}
+
+
+""")
+
+
+
+
+
+for st in range(1,voices+1):
+ str=stemme(st)
+ ststr=chr((st-1)/24+ord('A')) + chr ((st-1)%24+ord('A'))
+ sys.stdout.write( """
+
+stemme%s = \\notes {\n\\clef percussion
+\\property Staff.instrument = \"%d\"\n
+\\property Staff.instr = \"%d\"\n
+\\property Score.currentBarNumber = #%d\n""" % (ststr,st,st,start_measure))
+
+ for i in range(start_measure-1, start_measure-1+no_measures):
+ print16(str[i*16:i*16+16])
+ sys.stdout.write (" |\n")
+
+ sys.stdout.write ("\\bar\"|.\" }\n")
+
+
+sys.stdout.write (r"""
+\score {
+ \notes <
+ \property Score.BarNumber \override #'padding = #2.5
+ \property Score.autoBeamSettings \override
+ #'(end * * * *) = #(make-moment 1 4)
+ \property Score.skipBars = ##t
+ \context StaffGroup <
+ \property StaffGroup.Stem \override #'direction = #1
+""")
+
+
+for st in range(1,voices+1):
+ ststr=chr((st-1)/24+ord('A')) + chr ((st-1)%24+ord('A'))
+ ststr = 'stemme' + ststr
+ sys.stdout.write (r"""\context Staff="%s" \%s
+""" % (ststr,ststr))
+
+sys.stdout.write (r""">
+ >
+ \paper {
+ linewidth = 26.0\cm
+ indent = 0
+ textheight = 38.0\cm
+ %hsize = 30.0 \cm
+ %vsize = 42.0 \cm
+
+ \translator {
+ \StaffContext
+ StaffSymbol \override #'line-count = #3
+ minimumVerticalExtent = '(-3 . 3)
+ }
+ }
+}
+""")