From: Han-Wen Nienhuys Date: Wed, 19 Jun 2002 11:02:08 +0000 (+0000) Subject: claop X-Git-Tag: release/1.5.62~8 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=3e64847998f742db108a8995322e2ae6fe64784b;p=lilypond.git claop --- diff --git a/mutopia/GNUmakefile b/mutopia/GNUmakefile index 15a002caf5..63bda70283 100644 --- a/mutopia/GNUmakefile +++ b/mutopia/GNUmakefile @@ -3,6 +3,7 @@ depth = .. SUBDIRS = J.S.Bach F.Schubert E.Satie +EXTRA_DIST_FILES += claop.py LOCALSTEPMAKE_TEMPLATES=ly mutopia diff --git a/mutopia/claop.py b/mutopia/claop.py new file mode 100644 index 0000000000..02f4b2ddce --- /dev/null +++ b/mutopia/claop.py @@ -0,0 +1,305 @@ +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 +Sender: lilypond-devel-admin@gnu.org +To: LilyPond Devel +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) + } + } +} +""")