]> git.donarmstrong.com Git - lilypond.git/commitdiff
claop
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 19 Jun 2002 11:02:08 +0000 (11:02 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 19 Jun 2002 11:02:08 +0000 (11:02 +0000)
mutopia/GNUmakefile
mutopia/claop.py [new file with mode: 0644]

index 15a002caf5df4ff1b4359ae90219500783a6123e..63bda702839a172836b1c53cfe501de4d96f7d32 100644 (file)
@@ -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 (file)
index 0000000..02f4b2d
--- /dev/null
@@ -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 <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)
+       }
+    }
+}
+""")