ftp.nice.ch/pub/next/unix/audio/cmn.tar.gz

README.cmn
 
accent.lisp
 
build.lisp
 
buildcmn
 
carl.cmn
 
cm2cmn.lisp
 
cmn-ex.lisp
 
cmn.rtfd/
 
cmn.wn/
 
cmn0.lisp
 
cmn1.lisp
 
cmn2.lisp
 
cmn3.lisp
 
cmn4.lisp
 
cmned.lisp
 
cmnt.lisp
 
cmntocm.lisp
 
duke.cmn
 
franz.cmn
 
fred.cmn
 
fux.cmn
 
gus.cmn
 
henry.cmn
 
joh.cmn
 
loop.lisp
 
mac-cmn.lisp
 
mir.cmn
 
moz.cmn
 
nps.c
[View nps.c] 
nps.lisp
 
nxtcmn.c
[View nxtcmn.c] 
pedal.lisp
 
percussion.lisp
 
wedge.lisp
 

README.cmn

    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.