C O M M O N M U S I C N O T A T I O N This directory contains the cmn source and documentation. cmn is built on Common Lisp, CLOS (pcl), PostScript, and the Adobe Sonata font. In this version, I've put everything in the cmn package. Please send bug reports and suggestions to bil@ccrma.stanford.edu. You can substitute the Petrucci-Medium font for the Sonata font, but it is not as good a font. There's a mailing list for CMN news: cmdist@ccrma.stanford.edu. To get your address added to or removed from this list, send the request to cmdist-request@ccrma.stanford.edu. (Common Music and CLM use this same mailing list). This software is available to anyone who is interested, free gratis for nothing, without warranties of any kind. Documentation is in cmn.wn (or cmn.rtfd). The examples are: carl.cmn from "Archibald Douglas" by Karl Loewe franz.cmn from a piano trio by Schubert fred.cmn from a piano concerto by Chopin fux.cmn part of a paper on automatic counterpoint gus.cmn opening of last mvt of Mahler's 3rd henry.cmn opening of "Thoreau" mvt of Ives' "Concord Sonata" joh.cmn from Brahms' "A German Requiem" mir.cmn from "Mir ist so wunderbar" in Beethoven's "Fidelio" moz.cmn opening of a piano sonata by Mozart cmn-ex.lisp some cmn code to do various useful things cmnt.lisp the examples in cmn.wn duke.cmn Archduke Trio excerpt wedge.lisp code to make wedged beams like Bartok used for the bouncing ball rhythm pedal.lisp code to display all three piano pedals accent.lisp various 20th century articulation marks percussion.lisp random symbols said to be useful in percussion scores The following describes how to get cmn going on: A NeXT with Allegro CL 3.1.20 and PCL, or Allegro CL 4.1 An SGI Indigo with Allegro CL 4.1 A NeXT with KCL (version 615 or later) and PCL (March 92 or later) A Mac II (system 7) with MCL 2.0 or any computer with Common Lisp. ------------------------- In Franz Allegro CL, in a shell or terminal, type NeXT: cc nxtcmn.c -c -O Indigo: cc nxtcmn.c -c -G 0 and (if necessary) fix the pathname pointing to this .o file in cmn0.lisp -- it's at the start of the file in the line (load (merge-pathnames "nxtcmn.o" excl::*source-pathname*) ...) pcl and cmn assume you're running a case-insensitive lisp (I use case-insensitive-upper in ACL). Except in ACL 4.1, if loop has not been compiled, :cl loop If not in ACL 4.1,get CLOS going, (CLOS is available free at the anonymous ftp site parcftp.xerox.com as /pub/pcl/tarfile-rev-4b or something like that -- at ccrma-ftp, pub/pcl.tar.Z is the same file). To get PCL compiled: :cl defsys.lisp (pcl::compile-pcl) Thereafter, you load it with: :ld defsys (pcl::load-pcl) Once CLOS or PCL is loaded, (pushnew :Petrucci-Medium *features*) or (pushnew :Sonata *features*) and if you're running NeXT 3.0, (pushnew :Next-3.0 *features*) then, if you're running ACL 4.1, (load "nxtcmn.o") and :cl cmn0 :cl cmn1 :cl cmn2 :cl cmn3 :cl cmn4 :pa cmn It takes a long time (ca 30 minutes) to compile, load, and run cmn the first time, but after that it seems to be ok. The files buildcmn and build.lisp do all this for you and save the resultant lisp image. If not in ACL 4.1, you need pcl from May-90 or later -- the "Victoria Day" version does not work, but the "May Day" version does (cmn expects defgeneric to be more than just a documentation no-op). There is a rudimentary previewer/editor in nps.lisp,cmned.lisp and nps.c. To try it out, cc nps.c -c and load nps into cmn. This is only for good sports. I stopped work on this mouse-driven editor because the connection from lisp to the Display Postscript system on the Next was too primitive. I'm staring at various versions of X windows and CLX currently, and may take that route. If you have ACL that worked on NeXT 2.1, and want it to run on NeXT 3.0, see the file ACL3.1-on-NeXT3.0. ------------------------- In akcl (available free at sonata.cc.purdue.edu as pub/next/2.0-release/binary/AKCL-1-586.bin.tar.Z, or at rascal.ics.utexas.edu (128.83.138.20) as: pub/NeXT-akcl-1-605.tar.Z, pub/kcl.tar.Z, and pub/akcl-1-605.tar.Z): First get the latest pcl (the one mentioned above -- earlier versions don't compile), and in defsys.lisp (in the pcl directory) change the file extensions in the table *pathname-extensions* (I change the KCL line to "lisp" and "o"). You also need the loop facility -- it's included in the cmn release just in case you don't have it. Also, you have to increase kcl's process size: before making kcl, change BIG_HEAP_SIZE in kcl/akcl/h/NeXT.h to #x2000000, then run add-defs and so on). Fire up kcl in the pcl directory, and: (compile-file "defsys.lisp") (load "defsys.o") (pcl::compile-pcl) Now exit kcl, change to the cmn directory, restart kcl, and: (system:allocate 'SYMBOL 400) (system:allocate 'CONS 4000) (compile-file "loop.lisp") (load "loop.o") (load "<pcl-directory>/defsys.o") (pcl::load-pcl) (setf pcl::*defmethod-times* '(compile load eval)) (setf pcl::*defclass-times* '(compile load eval)) (setf pcl::*defgeneric-times* '(compile load eval)) then, (pushnew :Petrucci-Medium *features*) or (pushnew :Sonata *features*) and, (compile-file "cmn0.lisp") (compile-file "cmn1.lisp") (compile-file "cmn2.lisp") (compile-file "cmn3.lisp") (compile-file "cmn4.lisp") Now exit and restart Kcl, and: (system:allocate-contiguous-pages 1000) (load "loop.o") (load "<pcl-directory>/defsys.o") (pcl::load-pcl) (load "cmn0.o") (load "cmn1.o") (load "cmn2.o") (load "cmn3.o") (load "cmn4.o") (in-package "CMN") and you're ready to go. You can save this image with the kcl function save. This process takes a VERY long time (i.e. measured in hours). I've noticed that the kcl version of cmn makes odd line/page break decisions -- I don't know why. On a NeXT 3.0 system, you have to make the following changes to the 615 kcl version: In akcl/c/NeXTunixsave.c, the declaration: extern struct section *getsectbyname(char *, char *); causes a fatal compiler error. The new declaration (in /NextDeveloper/Headers/bsd/lib.h) is: extern const struct section *getsectbyname( const char *segname, const char *sectname); Also, the library /usr/lib/libg.a is not included in the 3.0 release, so remove the -lg switch from the LIBS statement in akcl/h/NeXT.defs. (Do this before running add-defs and making kcl). ------------------------- In MCL on a Mac II, fix the pathname in mac-cmn.lisp to point to the directory that has the cmn sources, then load mac-cmn. This process takes about a half hour. In system 6.<something>, simple calls on the cmn function work fine (turning out Postscript code, of course), but larger examples (like moz.cmn) apparently run out of memory causing Lisp to die. I'm told that gnu's ghostscript runs on the Mac.
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.