new release of cm

Rick Taube hkt@cmp-nxt1.music.uiuc.edu
Fri, 12 Jan 1996 11:54:00 -0600


Ive placed a new release of CM on ccrma-ftp.stanford.edu and ftp.zkm.de.
The most important new change is the complete rewriting of all
documentation in HTML format, and the introduction of the CM home page. The
home page is  incuded with the sources: cm/doc/cm.html.  It has pointers to
all documentation,  lets you download the latest sources automatically,
has links to related topics, etc

 See doc/changes.text for more information

CLM users:
In the next release of CLM ,  all.lisp generates a "load-all.cl" file in
the clm-bin-directory.  This "load-all.cl"  is the file that CM now uses to
load  CLM, so when you build CM, the make-cm.lisp script now prompts you
for the CLM _binary_ directory rather than the  source directory  (of
course, these directories might be the same).  If you want to build the new
relase of CM with your current version, put the following form at the end
of clm/all.lisp , boot lisp, load all.lisp as you normally would and then
quit  once all.lisp is finished.  This will create the load-all.cl file for
CM .  Then  build CM as you normally would.

; put at end of clm/all.lisp and reload.

(with-open-file (ofil (concatenate 'string clm-bin-directory "load-all.cl")
                      :direction :output
                      :if-does-not-exist :create
                      :if-exists :supersede)
  (format ofil ";;; load all.lisp from saved directory info~%~
                (setf clm-directory ~S)~%~
                (setf clm-bin-directory ~S)~%~
                (load (concatenate 'string clm-directory \"all.lisp\"))~%"
          clm-directory
          clm-bin-directory))


Date: Fri, 12 Jan 96 10:05:03 GMT-0800
From: bil (To: cmdist)
To: cmdist
Subject: Re: new release of cm (and CLM news)

The current version of CLM at ccrma-ftp has the change
mentioned by Rick.  Other changes include a port to
Linux in GCL 2.1, ACL/PC (just-lisp currently) in
Windows, and the CMU-CL and CLisp ports run about
100 times faster if you use the no-ffi switch.  


Date: Mon, 22 Jan 1996 10:40:30 -0600
To: everyone@ccrma.Stanford.EDU, alle@zkm.de
From: hkt@cmp-nxt1.music.uiuc.edu (Rick Taube)
Subject: ANNOUNCEMENT: Common Music Home Page
Cc: hkt@cmp-nxt.music.uiuc.edu, cmdist@ccrma.Stanford.EDU

Check it out:
        http://ccrma-www.stanford.edu/CCRMA/Software/cm/cm.html
System documentation is in html format and available from the home page.
---
Rick Taube
Theory/Composition -- School of Music -- University of Illinois
hkt@cmp-nxt1.music.uiuc.edu, hkt@ccrma.stanford.edu


Date: Mon, 22 Jan 1996 10:46:43 -0600
To: cmdist@ccrma.Stanford.EDU
From: hkt@cmp-nxt1.music.uiuc.edu (Rick Taube)
Subject: updated html docs and examples

ive placed new archives on  ccrma-ftp and ftp.zkm.de that contain many
fixes and improvements to tghe html documentation and examples.  very
little system source code changed so if you dont want to install the whole
thing just take cmpatches.tar.gz or cmpatches.sea.bin instead.  be sure to
read the accompanying cmpatches.README.


Date: Fri, 26 Jan 1996 09:27:36 -0600
To: cmdist@ccrma.Stanford.EDU
From: hkt@cmp-nxt1.music.uiuc.edu (Rick Taube)
Subject: bad  CM->CLM bug

Elizabeth Purswell pointed out a bad CM bug dealing with CLM ouput.  The
problem was due to a misunderstanding on my part of :class allocated slots.
I belive that I have fixed the problem, but the fix necessitates
recompiling your clm definstruments.  I wont be able to update the archives
for a few days so if anyone wants the new clm.lisp file now  send me a note
and ill email it to you.
-hkt



From: "Tobias Kunze" <tkunze@cmsgia.Stanford.EDU>
Date: Sat, 27 Jan 1996 18:56:43 -0800
X-Mailer: Z-Mail (3.2.1 6apr95 MediaMail)
To: haible@ma2s2.mathematik.uni-karlsruhe.de, cmdist@ccrma.Stanford.EDU,
        cook@candiru.engr.sgi.com, pichej@ERE.UMontreal.CA
Subject: CM Runtime (CLISP) for SGI 
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii


FYI--


I'm starting to make a precompiled runtime version of Common
Music available for SGI Workstations.  The image has been built
in the most recent version (1995-12-08) of CLISP and runs
happily in 6MB of memory.

The URL is:

   ftp://kunze/pub/cm_clisp-sgi-bin.tgz     (1457987 Bytes)

Please read the file README contained in the archive for more
details regarding the configuration of the system.  The README
is also accessible online as

   ftp://kunze/pub/README                      (3197 Bytes)



-Tobias Kunze
________________________________________________________________
             Center for Computer Research in Music and Acoustics
     660 Lomita Dr, Stanford University, Stanford, CA 94305-8180
                        Vox: (415) 723-4971, Fax: (415) 723-8468
                                       Net: t@kunze.stanford.edu
                            Web: http://www.stanford.edu/~tkunze

From: "Ludger Bruemmer" <ludi@folkwang.uni-essen.de>
Date: Fri, 2 Feb 1996 11:48:22 +0100
X-Mailer: Z-Mail (3.2.2 10apr95 MediaMail)
To: cmdist@ccrma.Stanford.EDU
Subject: clm, dlocsig, with gcl or cmucl on SGI
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii

could anyone get the dlocsig running on the SGI? I tried it with gcl2.1 and pcl
and could not get it to load the clm inside the pcl package.
I as well tried to run clm on cmucl but the compilation died very early.

If anyone get it to work, tell me how.

thanks

ludi

-- 
=================================================================
Ludger Bruemmer
Hohenzollernstr. 66
45128 Essen Germany

++ 49 201 787823	Have a nice day!

ludi@zkm.de
ludi@ccrma.stanford.edu
ludi@folkwang.uni-essen.de
==================================================================

From: "Tobias Kunze" <tkunze@cmsgia.Stanford.EDU>
Date: Fri, 2 Feb 1996 05:40:56 -0800
In-Reply-To: "Ludger Bruemmer" <ludi@folkwang.uni-essen.de>
        "clm, dlocsig, with gcl or cmucl on SGI" (Feb  2, 11:48am)
References: <9602021148.ZM964@terant.folkwang.uni-essen.de>
X-Mailer: Z-Mail (3.2.1 6apr95 MediaMail)
To: cmdist@ccrma.Stanford.EDU
Subject: Runtime CM/CLM for SGIs (IRIX5.3)
Cc: t@cmsgia.Stanford.EDU
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii



On Feb 2, 11:48am, Ludger Bruemmer wrote:
> Subject: clm, dlocsig, with gcl or cmucl on SGI
>
> could anyone get the dlocsig running on the SGI?
>
>-- End of excerpt from Ludger Bruemmer



I've placed new archives on ftp://kunze.stanford.edu/pub/:


-rw-r--r--    1 root     sys         6059 Feb  2 05:26 CM-RUNTIME.README
-rw-r--r--    1 root     sys      1075486 Feb  2 05:26 cm+clm_clisp-sgi.bin.tgz
-rw-r--r--    1 root     sys       733247 Feb  2 05:26 cm_clisp-sgi.bin.tgz
-rw-r--r--    1 root     sys       908888 Feb  2 05:26 cm_clisp-sgi.common.tgz


Grab either image (with or without CLM) plus the common archive and follow
the three or four steps in the file CM-RUNTIME.README.

This is a runtime version of Common Music (as opposed to the full
source distribution) and has been compiled in CLISP (version
1996-01-29) on an IRIX 5.3 Indy and with the following Common Music
syntaxes included:

          :MIDI            yes
          :CLM             optional
          :CMN             no         (not yet available)
          :CSound          yes
          :MusicKit        yes
          :CMix            yes
          :CMusic          yes
          :RT              yes
          :SGIMix          yes

It also includes all necessary support files as well as the complete
documentation set for Common Music.  The archive cm+clm_clisp-sgi.bin.tgz
includes also the CLM Manual in html format.

Email me if you would like to be notified of smaller updates and I'll
put you on an automatic mailing list.


Date: Fri, 2 Feb 1996 13:46:51 -0600
To: cmdist@ccrma.Stanford.EDU
From: hkt@cmp-nxt1.music.uiuc.edu (Rick Taube)
Subject: CM in DOS now working
Cc: <lt@cloud9.net>, fishwick@cis.ufl.edu, hkt@cmp-nxt.music.uiuc.edu

The lastest archives  on ccrma-ftp are now working in CLISP/DOS.  Be sure
to take  cm.zip , otherwise you will have to rename all the file extensions
by hand.  Ignore  compiler warnings when you build.  I tested CM
(minimally) on a Pentium -- I was very pleased with the speed.  If anybody
knows how to get CLISP running under Windows, please let me know so I can
get this port working as well.  Within the next few weeks I will start
providing CM  binaries for CLISP in DOS and NextStep.  I  need a little
help understanding DOS .bat files and what if any MIDI drivers are
available for DOS... if anyone knows about these matters I would be
grateful to hear from you.
-hkt


Date: Fri, 2 Feb 1996 15:52:30 -0500 (EST)
X-Sender: lt@cloud9.net (Unverified)
To: hkt@cmp-nxt1.music.uiuc.edu (Rick Taube), cmdist@ccrma.Stanford.EDU
From: lt@cloud9.net (Larry Troxler)
Subject: Re: CM in DOS now working
Cc: fishwick@cis.ufl.edu, hkt@cmp-nxt.music.uiuc.edu

At 01:46 PM 2/2/96 -0600, Rick Taube wrote:
>The lastest archives  on ccrma-ftp are now working in CLISP/DOS. 

Thanks! I'll try it tonight.


>I  need a little
>help understanding DOS .bat files 

Good news  - there's not that much to understand; they're not very powerfull :-)

If you type >HELP at the DOS prompt you will get interactive help, and one
of the topics is batch files. If more convenient, I could capture the
relevant text and send it to you.  

Do you have any specific questions?

>and what if any MIDI drivers are
>available for DOS... 

There's no "standard" and/or device-independent MIDI driver for DOS.

There's probably some public-domain code for the Roland MPU-401 interface
around, but I don't remember what or where. Hopefully someone else will be
of more help.

Programming for MIDI is much easier in Windows, where there's a useable,
device-independent API for MIDI.

Larry Troxler
lt@cloud9.net


Date: Fri, 2 Feb 1996 16:57:36 -0500 (EST)
X-Sender: lt@cloud9.net
To: Paul Fishwick <fishwick@cis.ufl.edu>
From: lt@cloud9.net (Larry Troxler)
Subject: Re: CM in DOS now working
Cc: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>, cmdist@ccrma.Stanford.EDU,
        hkt@cmp-nxt.music.uiuc.edu

ftp.zkm.de/pub/cm/cm.zip

But I seem to be having some problems with access speed right now...

Larry

At 04:48 PM 2/2/96 -0500, Paul Fishwick wrote:
>Can you tell me where to get the "latest archive" for CM (as per
>your message)? I forget the exact URL. Thanks. I have the right
>CLISP, I suppose.
>
>-paul
>
>-- 
>Paul A. Fishwick               E-Mail: fishwick@cis.ufl.edu
>Dept. of Computer Science      Phone & FAX: (352) 392-1414
>University of Florida          WWW: http://www.cis.ufl.edu/~fishwick
>CSE 301, Gainesville, FL 32611


Date: Mon,  5 Feb 96 07:14:33 GMT-0800
From: bil (To: cmdist)
To: cmdist
Subject: CLM news

I've rewritten the fft-related portions of clm, added a Hartley
transform, removed the fft-data structure (see initmus.lisp for
details on how to update instruments), removed the type
field in the various noise generators, fixed an aiff-related
bug that broke mix on sgi's, added *clm-beg-offset* to make
it easy to shift blocks of notes around in a notelist, added
an example of fasmix+reverb (useful.lisp) -- if this is
used a lot, I'll embed it in fasmix, added a section to
README.clm about CLOS in clm (for dlocsig), and completely
revamped clm.html.

In CMN, I added gif files for cmn.html, so it now has pictures,
and removed cmn.rtfd.


From: "Tobias Kunze" <tkunze@cmsgia.Stanford.EDU>
Date: Fri, 9 Feb 1996 21:43:43 -0800
X-Mailer: Z-Mail (3.2.1 6apr95 MediaMail)
To: cmdist@ccrma.Stanford.EDU
Subject: CM, CM+CLM Binaries
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii


i've placed new archives on ftp://kunze.stanford.edu/pub/.
Pathname conflicts have been (hopefully) eliminated and the
clm version has been put in working order again.
Thanks to everybody who helped!

We only provide binaries for SGIs at the moment, but NeXT and
DOS/Windows binaries are in the works in Illinois, I believe.

You have the choice between either ftp'ing the whole package
at a whopping 2.2 MBytes or get the "common" and either the
"cm" or the "cm+clm" subsystem (or both).  Installation has
been cut down to a matter of one or two shell commands.  Refer
to the file CM-RUNTIME.README for details and hints.

Here are the (sub)systems:

-rw-r--r--    1 root     sys      1216859 Feb  9 15:49 cm+clm_clisp-sgi.bin.tgz
-rw-r--r--    1 root     sys      2193145 Feb  9 18:49 cm+clm_clisp-sgi.tgz
-rw-r--r--    1 root     sys       733523 Feb  9 15:49 cm_clisp-sgi.bin.tgz
-rw-r--r--    1 root     sys       975512 Feb  9 15:49 cm_clisp-sgi.common.tgz

-----------------------------------------------------------------------------

cm_clisp-sgi.common.tgz      - Common Music Runtime support file archive

cm_clisp-sgi.bin.tgz         - Common Music Runtime executable for clisp on
                               SGI workstations.
                               Requires cm_clisp-sgi.common.tgz.

cm+clm_clisp-sgi.bin.tgz     - Common Music Runtime executable for clisp on
                               SGI workstations (includes CLM).
                               Requires cm_clisp-sgi.common.tgz.
                               Requires also a C compiler.

cm+clm_clisp-sgi.tgz         - Complete package (the cm_clisp-sgi.common
                               and cm+clm_clisp-sgi.bin subsystems in one
                               archive).


Date: Mon, 19 Feb 1996 18:28:37 -0800
From: tkunze@cmsgia.Stanford.EDU (Tobias Kunze)
To: cmdist@ccrma.Stanford.EDU
Subject: binaries update


I've updated the archives on ftp://cmsgia.stanford.edu/pub/ to sport the 
newest (18-Feb-96) clm release, including direct-to-dac output on SGI's.

Available archives:
-rw-r--r--    1 root     sys      1219559 Feb 19 18:17 cm+clm_clisp-sgi.bin.tgz
-rw-r--r--    1 root     sys      2194216 Feb 19 18:18 cm+clm_clisp-sgi.tgz
-rw-r--r--    1 root     sys       733491 Feb 19 18:17 cm_clisp-sgi.bin.tgz
-rw-r--r--    1 root     sys       975533 Feb 19 18:17 cm_clisp-sgi.common.tgz


Date: Mon,  1 Apr 96 07:15:49 GMT-0800
From: bil (To: cmdist)
To: cmdist
Subject: CLM news

CLM improvements since my last note include def-clm-var for
parallel instrument communication, clm-open-input*, with-psound
for direct-to-DAC output (and associated pfasmix, preverb,
etc) -- on the 132MHz SGI I can run 6 to 8 fm-violins in
"real-time" or reverb+3 violins without interruptions,
default-sound-file-data-format for Linux, green.cl (bounded
brownian noise), several new instruments including cross-
synthesis and hello-dentist, and various other small things.
One other new file: ins is a list of all the instruments
currently included in clm.tar.gz.



From: "Tobias Kunze" <tkunze@cmsgia.Stanford.EDU>
Date: Thu, 18 Apr 1996 01:50:21 -0700
X-Mailer: Z-Mail (3.2.1 6apr95 MediaMail)
To: cmdist@ccrma.Stanford.EDU
Subject: (Fwd) clisp-1996-04-17
Cc: Marcus Daniels <marcus@sysc.pdx.edu>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii


I've updated the binaries on ftp://kunze.stanford.edu/pub/
to reflect this latest clisp release.  the clm parts reflect
the version as of April, 15th.

-t


--- Forwarded mail from clisp-list
<clisp-list@ma2s2.mathematik.uni-karlsruhe.de>

Date: Thu, 18 Apr 96 08:23:09 +0200
Reply-To: clisp-list <clisp-list@ma2s2.mathematik.uni-karlsruhe.de>
From: Marcus Daniels <marcus@sysc.pdx.edu>
To: Multiple recipients of list <clisp-list@ma2s2.mathematik.uni-karlsruhe.de>
Subject: clisp-1996-04-17


A new release of CLISP is available for FTP at
ma2s2.mathematik.uni-karlsruhe.de in /pub/lisp/clisp.

There are no significant new features in this release.
All changes were either for bugs or for portability.

Binaries have been prepared for:
  Mips / Irix 5.3
  m68k / NEXTSTEP 3.2
  Sparc / SunOS 4.1.3, Solaris 2.4
  x86 / DOS, Linux a.out & ELF


17 April 1996
================

User visible changes
--------------------

* EXECUTE now returns the exit status of the subprocess.  Thanks to
  Bruno Haible and Brian F. Dennis <xjam@CS.Berkeley.EDU>.

* Fixed a bug in the compiler:  MULTIPLE-VALUE-BIND failed to work when
  given non-function forms.  Thanks to Paul Graham <pg@das.harvard.edu>.

* TRANSLATE-LOGICAL-PATHNAME now accepts logical-pathname namestrings.
  Thanks to Don Cohen <don@nichimen.com>

* Logical-pathname translation was broken under DOS.
  Thanks to Don Cohen <don@nichimen.com>.

* Cross compiler was non-functional.
  Thanks to Don Cohen <don@nichimen.com>.

* Fix for bug introduced in last loop macro change.
  Thanks to Ken Olum <kdo@mit.edu> for reporting this right away.

Other modifications
-------------------

* Upgraded to autoconf 2.9.

* Upgraded to gettext-0.10.12.

Portability
-----------

* cygwin32 support updated for gnu-win32-b14.

* SINIX support updated.  Thanks to Michael Becker <mb12@coconet.de>.




---End of forwarded mail from clisp-list
<clisp-list@ma2s2.mathematik.uni-karlsruhe.de>


Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date: Wed, 22 May 1996 13:53:19 -0600
To: cmdist@ccrma.Stanford.EDU, local-users@ccrma.Stanford.EDU
From: hkt@cmp-nxt1.music.uiuc.edu (Rick Taube)
Subject: ANNOUNCEMENT: Common Lisp Music for PPC available
Cc: taube@uiuc.edu, bil@ccrma.Stanford.EDU

We are happy to announce the first native release of Bill Schottstaedt's
Common Lisp Music for the Macintosh PowerPC. Common Lisp Music (CLM) is a
signal processing/music synthesis language in the Music V tradition
implemented in Common Lisp and C.  The Macintosh port uses Apple Events to
automate the cross-language compilation process between Macintosh Common
Lisp 3.9 (MCL-PPC) and Code Warrior C 8.0.

Sources to Common Lisp Music are available free of charge via anonymous FTP
from ftp://ccrma-ftp.stanford.edu/pub/Lisp/clm.tar.gz.  If you don't have
gzip or tar for the Mac, take
ftp://ccrma-ftp.stanford.edu/pub/Lisp/MacUtils.sea.bin as well.  After
installing CLM sources see README.clm for more information, or visit the
CLM home page at http://ccrma-www.stanford.edu/CCRMA/Software/clm/clm.html.

The Macintosh port of CLM requires a PowerPC, MCL-PPC (3.9) and Code
Warrior 8.0.  MCL-PPC is available from Digitool at
http://www.digitool.com.
Code Warrior 8.0 is available from Metrowerks at http://www.metrowerks.com.

---
Rick Taube
Composition/Theory  School of Music  University of Illinois
taube@uiuc.edu



Date: Thu, 23 May 96 06:18:43 PDT
From: bil (To: cmdist)
To: cmdist
Subject: other clm news

Since my last clm news message, there have been a variety of
changes, not all backwards compatible.  Taking them in chronological
order, I added restart cases and fancier debugging stuff under
the new *clm-debug* and *clm-history* switches; replaced fm.wn
with fm.html despite the silly-looking math formulas that HTML
produces; removed/changed various argument names in the make-<gen>
functions to try to rationalize everything -- main change here
was the &optional-key argument parsing, and the removal of
start-time, duration, and restartable from make-env; gcl-c56.lisp
deleted (I'm slowly winding down the 56000 support, and trying to
remove 56000-specific stuff from clm); AIFC mulaw/alaw output,
vax floats input; major optimization of fasmix with the new
mix function (replacing the old mix macro that overlapped too
much with with-mix); removed table-interp; and (to be more 
compatible with ANSI C), changed the C-side variable names --
writers of unit generators need to change references to
_datar_ and _datai_ to clm_float_data and clm_int_data.
Also added a sound file data base (snd-info); on the
SGI added a clm status window running as a subjob of clm; 
made various improvements (I hope) to the run macro to speed
up instrument compilation; ported clm to NeXTStep 4.0 in
Clisp; and added *clm-eat-raw-sound*.


Date: Tue, 18 Jun 1996 15:05:38 -0600
To: cmdist@ccrma.Stanford.EDU
From: hkt@cmp-nxt1.music.uiuc.edu (Rick Taube)
Subject: 1 er Concours Internationaux de Musique et de Logiciels

I just heard that Common Music took 1st Prize in the Computer-assisted
Composition category at the 1 er Concours Internationaux de Musique et de
Logiciels (First International Music Software Competition) at Bourge,
France.
-hkt


Date: Wed, 19 Jun 1996 17:37:21 +0500 (GMT)
From: Juan Reyes <jreyes@cdcnet.uniandes.edu.co>
To: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
Cc: cmdist@ccrma.Stanford.EDU
Subject: Re: 1 er Concours Internationaux de Musique et de Logiciels

On Tue, 18 Jun 1996, Rick Taube wrote:

> I just heard that Common Music took 1st Prize in the Computer-assisted
> Composition category at the 1 er Concours Internationaux de Musique et de
> Logiciels (First International Music Software Competition) at Bourge,
> France.
> -hkt
> 
Congaratulations Rick  you deserve this and more

Juan Reyes
Department of Music
Universidad de Los Andes
Santafe de Bogota - Colombia


Date: Fri, 21 Jun 1996 07:22:43 GMT
From: Anders Vinjar <anders.vinjar@notam.uio.no>
To: cmdist@ccrma.Stanford.EDU
Subject: 1 er Concours Internationaux de Musique et de Logiciels

  rt>  I just heard that Common Music took 1st Prize in the
  rt> Computer-assisted Composition category at the 1 er Concours
  rt> Internationaux de Musique et de Logiciels (First International
  rt> Music Software Competition) at Bourge, France.  -hkt

Bravo!

It doesnt come as a very big surprise though.

The winners and mentions of the various other categories of this
competition can be gleaned on

   <http://www.gmeb.fr/palmareslog96.html>

-anders


To: cmdist@ccrma.Stanford.EDU
Subject: clm on sunos
Date: Mon, 01 Jul 1996 01:47:46 +0900
From: Shunichiro Okada <shun@slab.sfc.keio.ac.jp>

Hello.
I am trying to build CLM on a Sparc with SunOS 4.1.3.
I want to know if someone has ever done this before.
I have access to CLISP but if gcl is better, that can be 
arranged. I am new to this list as well as to CLM and other
Common Lisp based Audio Synthesis.
Any kind of help is greatly appreciated.
Thank you.

                                $B&O&J&+&D&A(B <Shunichiro Okada>
                                  Keio University SFC
                                    Faculty of Environmental Information   
                                    shun@slab.sfc.keio.ac.jp
                                    okashun@cmlab.sfc.keio.ac.jp
                                    t95807so@sfc.keio.ac.jp
 
Content-Type: text/plain
Mime-Version: 1.0 (NeXT Mail 3.3 v118.2)
From: Igor Binsbergen <igor@phonos.upf.es>
Date: Fri,  5 Jul 96 13:32:21 +0100
To: cmdist@ccrma.Stanford.EDU
Subject: CLM for PowerMac

Hello,

if anyone has worked with the new version of CLM for the PowerMac, that is to say, the version that is build on MCL-ppc 3.9 and uses Codewarrior 8.0 for compilation processes, please can he or she tell me something about his or her experiences.
Fastness, bugs, relation CLM with CM,... etc.

I've worked a lot with the older versions (not PPC) of CLM/CM and before adquiring Codewarrior etc. I would like to know if this new version has made a (big) progress in respect to the earlier ones.

Thanks,

Igor Binsbergen
e-mail: igor@phonos.upf.es


From: Rick Taube <hkt@ccrma.Stanford.EDU>
Date: Fri, 26 Jul 96 06:44:49 -0700
To: cmdist@ccrma.Stanford.EDU
Subject: anyone using ACL for WIndows?

Is there anyone out there with an active support license for ACL for Windows?
Last week I ported Common Music to it (no real time midi becuase I cant figure out the C compiler...) The basic system seems to work fine, but CM's build script doesnt work because of what i think is a bug in their implementation of read-line. I sent them a question about this and they told me to pay them $650 before they would answer it!

>is not covered under the maintenance contract. If you wish to purchase
>support for this license then you must send us a purchase order for $655.
>Please let me know if you have further questions.

I'm not going to do this but would nevertheless like to get things running. So -- does anyone out there have a support contract for Franz and would be willing to email them a question for me?

-hkt


Date: Fri, 9 Aug 1996 12:31:52 -0600
To: cmdist@ccrma.Stanford.EDU
From: hkt@cmp-nxt1.music.uiuc.edu (Rick Taube)
Subject: ANNOUNCEMENT:  New release of Common Music

A new version of Common Music is available via anonymous ftp  from

        ccrma-ftp.stanford.edu:/pub/Lisp/cm/cm.*
        ftp.zkm.de:/pub/cm/cm.*

This release contains several  new machine ports and some major new
functionality:

New machine ports:

o   Mac: PPC-native MCL 3.9. Includes a new shared library MIDI interface
by Tobias Kunze.
o   SGI: Allegro Common Lisp 4. 3.
o   Intel: ACL 3.0 for Windows.  (No direct MIDI connection but the glue
code (C and Lisp)
    is there for someone with a C compiler and enough interest.)

Major new features:

o  Non-consing scheduler and two clock modes to support real-time algorithmic
    composition.  A new tutorial chapter explains this basic new functionality:
    http://www-ccrma.stanford.edu/CCRMA/Software/cm/tutorials/stella/s14.html
o   32 logical channels MIDI I/O (Mac, NeXT, SGI)
o   IO processing now handled asynchronously wherever possible
o   See doc/changes.text for a complete listing of new features and changes.

To learn about Common Music, visit the home page at:

        http://www-ccrma.stanford.edu/CCRMA/Software/cm/cm.html

Source code is available free of charge at:

        http://www-ccrma.stanford.edu/CCRMA/Software/cm/install.html

---
Rick Taube
taube@uiuc.edu




From: "Tobias Kunze" <tkunze@ulysses.Stanford.EDU>
Date: Sat, 7 Sep 1996 02:00:44 -0700
Reply-To: t@ulysses.Stanford.EDU
To: cmdist@ccrma.Stanford.EDU
Subject: cm 1.0 for sgi binaries available
Cc: Doug Cook <cook@candiru.engr.sgi.com>

I've put a new set of binaries on ftp://kunze.stanford.edu/pub/.

Here are the details:

  |
  |  06-Sep-96
  |  ---------
  |     Released new binaries.
  |
  |     VERSION INFORMATION:
  |        Common Music              1.0
  |        Common Lisp Music         03-Sep-96
  |        CLISP                     17-Apr-96
  |
  |     PROBLEMS:
  |        - MIDI realtime will not be implemented in IRIX 5.3 due to bugs in
  |          the 5.3 MIDI driver.  Future binaries with MIDI realtime support
  |          will be built in IRIX 6.2 instead.
  |


Enjoy!


Date: Mon,  9 Sep 96 06:47:59 PDT
From: bil (To: cmdist)
To: cmdist
Subject: a sound editor, or How I Spent My Summer Vacation

There's a new member of the Common Music package -- snd,
a sound editor, currently running only on the SGI in
X/Motif.  Sources and documentation at ccrma-ftp,
pub/Lisp/snd.tar.gz. 


Date: Mon,  9 Sep 96 07:48:01 PDT
From: bil (To: cmdist)
To: cmdist
Subject: CLM news: piano physical model added

I forgot to mention also that Scott van Duyne has
very generously donated a version of his physical
model of a piano -- in clm, piano.ins.

CLM now runs in GCL 2.2 in Linux thanks to Marco
Trevisani.


Date: Fri,  4 Oct 96 06:25:32 PDT
From: bil (To: cmdist)
To: cmdist
Subject: clm filters/graphics

Is anyone using the lattice or ladder filters in clm?
I'm thinking they were a mistake from the start and should
be moved to some auxiliary optional file. 

Also I've started integrating the sound editor and clm,
and would be interested in hearing what kinds of debugging
or graphical display tools people would like
to have.  On my list: run-time display of
instrument locals as floats or waveforms (steppable),
marks at note onsets (saved in the clm database for
subsequent use), moveable/rescalable notes (i.e. go to
note x, make it louder); in the editor, M-x with-sound
call to let clm add to or edit the current sound;
eventually a way to add handles for "widgets" in 
instruments, giving arbitrary real-time controls.


Date: Fri, 4 Oct 1996 20:19:01 +0200
From: Anders Vinjar <anders.vinjar@notam.uio.no>
To: cmdist@ccrma.Stanford.EDU
Subject: Re: clm filters/graphics

  Bill> On my list: run-time display of instrument locals as floats or
  Bill> waveforms (steppable), marks at note onsets (saved in the clm
  Bill> database for subsequent use), moveable/rescalable notes (i.e. go
  Bill> to note x, make it louder); in the editor, M-x with-sound call to
  Bill> let clm add to or edit the current sound; eventually a way to add
  Bill> handles for "widgets" in instruments, giving arbitrary real-time
  Bill> controls.

This looks good.

A thing I miss many times each day (mostly because ive hacked sort of a
replacement which is SOOOOOO slow) is to have sort of a plotter function
integrated well enough to be useful.  This is a fine aid in debugging.

lisp 1> (setf a (make-fft-window bartlett-parzen-3-window 1024))
lisp 2> (snd-show-data a)    ; show a plot

 - would display a wonderful sight of the beast, together with ffts and
all that.

lisp 3> (dotimes (k 1024) (filter fl (aref a k)))
lisp 4> (snd-show-data a)    ; updating the plot.  possibly adding a new
                             ; one beneath 

The thought here would be to be able to step through parts of a run-loop
interactively displaying this and that, maybe together with surrounding
samples. 

Ill send more notes, have to come up with contents first!  Im really
looking forward to this!

(The thing in use now is gnuplot coupled with at least 2 temporary files
shuffling arrays or lists around.  Somewhat slow, but useful.  If anyones
interested ill dist the code.)

-anders


From: Ludger Brummer <ludi@guido.zkm.de>
Date: Sun, 13 Oct 96 17:01:34 +0100
To: cmdist@ccrma.Stanford.EDU
Subject: ideas for visualisation 

Hi bil,

you encouraged to give some comments onto the visual concept of the snd or the clm - snd interaction.

My ideas are very simple:
1. Would it be possible that the xy axis would only be shown several times in a multichannel sound only in that case that the sync is switched on. The picture for example in sgi's soundeditor is much more compact and better to evaluate since the sound represantations are much closer to each other. When  the sync is off i.e. for editing single channels on a multichannel file, the existing visualisation is perfect.

2. Is it possible to see a cursor showing the actual playing position?

3. a representation of the note onset like you wrote would be very helpful, could that include also a represatation of the note duration?

4. Did you see the CECILIA interface for csound? what do you think of that interaction device with rubberband for manipulating or visualizing envelopes and other types of input data? I think this way of generating data for the note input can be much faster than writing eacht envelope. At least it is a good tool to represent or check the parameters of a soundfile.




Regarding clm:
dax dies at my machine. Did I forgot to load something or to set something? It did not work in earlier versions too:

Error: Received signal number 10 (Bus error)
  [condition type: SYNCHRONOUS-OPERATING-SYSTEM-SIGNAL]
   :zoom
   (ERROR SYNCHRONOUS-OPERATING-SYSTEM-SIGNAL :FORMAT-CONTROL ...)
 ->(CLM::C-DAX "/snd/piece/snd/aug15.6m.snd" 0.0 ...)
   (DAX "/snd/piece/snd/aug15.6m.snd")
   (EVAL (DAX "/snd/piece/snd/aug15.6m.snd"))
   (TPL:TOP-LEVEL-READ-EVAL-PRINT-LOOP)
   (TPL:START-INTERACTIVE-TOP-LEVEL
      #<BIDIRECTIONAL-TERMINAL-STREAM [initial terminal io] fd 0/1 @
        #x1007e2ba>
      #<Function TOP-LEVEL-READ-EVAL-PRINT-LOOP> ...)




having a good time mixing down

ludi

P.S. my new piece is on the way to be finished. And I must say what a new world with the speed of the SGI and the fancyness of the new clm utilities compared to the earlier versions.
=================================================
Ludger Bruemmer
Hohenzollernstr. 66
45128 Essen Germany

++ 49 201 787823
ludi@zkm.de
ludi@folkwang.uni-essen.de
==================================================


Date: Wed, 16 Oct 1996 08:53:50 -0600
To: cmdist@ccrma.Stanford.EDU
From: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
Subject: Common Music Lite (ppc)

If you are interested in trying out Common Music in the upcoming MCL 4.0
release (PPC) I've placed a premade, runtime version of the system on
ccrma-ftp.stanford.edu/pub/Lisp/cm/binaries/cm-lite-ppc.sea.bin.  Just
unpack and double-click the Common Music Lite app. Its "lite" because it is
built from the new, freely distributable demo version of MCL 4.0 from
Digitool. Their demo Lisp includes all development tools including their
compiler but restricts each session to a 15 minute limit. As I understand
it, if you email digitool they will unlock the demo for a month -- hey
thats enough time to write a piece!

-rick


References: <v03007800ae8aa3f32d62@[128.174.92.150]> from "Rick Taube" at
 Oct 16, 96 08:53:50 am
Date: Wed, 16 Oct 1996 13:36:16 -0600
To: Philip Lewis <lewispsc@leland.Stanford.EDU>
From: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
Subject: Re: Common Music Lite (ppc)
Cc: cmdist@ccrma.Stanford.EDU

>The Macintosh interface is so nice that I have been wondering about
>switching from the Next. Is CM on the Macintosh confined to MIDI
>instruments, or does CLM now work on the Macintosh, or at least on the
>PowerPC?
>Philip Lewis


yes clm is now running on the ppc but the cm lite that i saved was without
clm included because one needs code warrior to compile clm insturments.
however, i would be willing to make a new demo version with clm included IF
people would give me a reasonable list of which clm instruments (your own
included) you want to see precomplied into a demo. i could also include
clm's codewarrior project so in the event that you own code warrior 8 you
can add any instruments you want since the lisp compiler works in the free
demo version.
so if you mail me instruments that you want to try on the ppc ill see what
i can do.
-rick



Date: Tue, 22 Oct 1996 00:38:27 -0400
From: Charles Shehadi <cshehadi@panix.com>
To: cmdist@ccrma.Stanford.EDU
Subject: won't work anymore...

Hello all...

I just built the new version of Common Music with Capella, using MCL
3.9p1v2, and am having trouble getting it to work...

I can create objects, but their names don't show up in the Capella
window.  

Even though their names are not listed, you can still select them (by
clicking where they ought to be in the window, or typing [1] or *, etc.)
and you can inspect them as well.

Also, I haven't been able output any objects I've created. I don't if
the two problems are connected or not.

I've tried bypassing Capella, and using Lisp code in the Fred editor to
create and listen to objects but I get the same results...

...if I evaluate this code:

(thread *the-thread* ()
  (object midi-note note 'c3
          rhythm 1
          duration 1
          amplitude 1))

I get the same problem.  A "phantom" thread is created: it's not listed
in the Capella window, but you can click where it ought to be and select
it, inspect it etc. (but I can't output it).

The code:

(listen-object #!*the-thread* 0.5)

gives me this error:

> Error: Class named NIL not found.
> While executing: FIND-CLASS

I'm not an expert at Common Music or Lisp, so there's always a chance
I've forgotten something obvious, but...

Any help would be appreciated.

-Charlie Shehadi


Date: Tue, 22 Oct 96 07:09:23 PDT
From: bil (To: cmdist)
To: cmdist
Subject: porting news

CMN runs in Clisp in Linux and in MCL-PPC on a Mac.
CLM runs in GCL and Clisp in Linux.  Snd runs in
Linux with the Metrolink Motif and 4Front OSS sound
support, but has a few ragged edges still.
I'm told CMN runs in CMU-CL.

Craig Sapp has donated ring-modulate.ins to CLM.



From: "Ross Palmer Mohn" <rpmohn@panix.com>
To: "Common Music mailing list" <cmdist@ccrma.Stanford.EDU>
Subject: Compiling with ACL Lite on WinNT/95
Date: Thu, 24 Oct 1996 10:42:16 -0400
X-Mailer: Microsoft Internet Mail 4.70.1155

I'm new to both Lisp and Common Music, but very anxious to learn about
both. I've been fooling around for several weeks now trying to compile CM
with both CLISP and now ACL Lite. I've come close with ACL Lite, but still
nothing. Can anyone give me some advice, please! I'd settle for
pre-compiled versions, but they seem to still be temporarily unavailable.
Thanks.


In-Reply-To: <199610241449.KAA26051@mail1.panix.com>
Date: Thu, 24 Oct 1996 10:11:04 -0600
To: "Ross Palmer Mohn" <rpmohn@panix.com>
From: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
Subject: Re: Compiling with ACL Lite on WinNT/95
Cc: cmdist@ccrma.Stanford.EDU

>I'm new to both Lisp and Common Music, but very anxious to learn about
>both. I've been fooling around for several weeks now trying to compile CM
>with both CLISP and now ACL Lite. I've come close with ACL Lite, but still
>nothing. Can anyone give me some advice, please! I'd settle for
>pre-compiled versions, but they seem to still be temporarily unavailable.
>Thanks.

What are the limitations of ACL Lite?? If LOAD and COMPILE-FILE work then
you should be able to build the system as is. If only LOAD works, it still
might be possible to just load cm's source files since I believe ACL/PC
automatically compiles lisp expressions as it reads them.

I could release a CLISP binary of CM for DOS no problem but probably wont
have any time on a PC for a week or two.

-rick



Date: Thu, 31 Oct 1996 12:05:43 -0500
From: Jim Ravan <Jim_Ravan@avid.com>
Reply-To: Jim_Ravan@avid.com
Organization: Avid Technology, Inc.
To: CM/CLM/CMN <cmdist@ccrma.Stanford.EDU>
Subject: Which Lisp?
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

All,

I'm going to try to compile CM on the new MkLinux port of Linux on Power
Macintosh hardware. But first, I need a Lisp. My question is "Which
one?"

I've tried to compile CLISP, but it doesn't work right out of the box.
My big problem with it is that it's written in German, and I don't read
German. I could also use GCL. At least that one's written in English.

But which one *should* I use? Is one better than the other for
CM/CLM/CMN?

regards,
-jim


From: "Tobias Kunze" <tkunze@ulysses.Stanford.EDU>
Date: Thu, 31 Oct 1996 09:57:20 -0800
In-Reply-To: Jim Ravan <Jim_Ravan@avid.com>
        "Which Lisp?" (Oct 31, 12:05pm)
Reply-To: t@ulysses.Stanford.EDU
X-Url: http://www.stanford.edu/~tkunze
To: Jim_Ravan@avid.com
Subject: Re: Which Lisp?
Cc: cmdist@ccrma.Stanford.EDU

  |  But which one *should* I use? Is one better than the other
  |  for CM/CLM/CMN?

clisp is better and you should better be reading German anyway.

No, seriously, gcl is better for clm, but sucks for cm (you need to
use pcl as a clos for gcl and as for MkLinux that might involve some
porting; even worse, it "gazonks" all the time (compile-loads
intermediate files) which is sort of nice on Halloween, but repulsive
otherwise).  Clm doesn't need clos, so it's fine there.

Bottom line: for both packages, use clisp.


Date: Thu, 31 Oct 1996 12:18:47 -0600
To: Jim_Ravan@avid.com, CM/CLM/CMN <cmdist@ccrma.Stanford.EDU>
From: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
Subject: Re: Which Lisp?

clisp docs should be in english and german. try getting the latest clisp from

 http://sayre.sysc.pdx.edu:8001/clisp


ive never compiled cm on linux but it should (almost)  worksince it already
runs in clisp on nextstep, sgi and dos.

clm works in both clisp and gcl but i think gcl still might be better for
clm.  but i dont really know how well sound is supported on linux or if it
has a midi driver -- these may limit the functionality of clm and or cm.


From: bil@ccrma.Stanford.EDU (Bill Schottstaedt)
Date: Fri, 1 Nov 96 06:28:32 -0800
To: cmdist@ccrma.Stanford.EDU
Subject: Re:Which Lisp?

CLM in Linux uses the :no-ffi switch for both Clisp and GCL,
so there's no real difference in that regard. The built-in
Linux sound support is minimal -- 8 bit mulaw via /dev/audio.
One alternative is 4Front's OSS (Voxware-derived, I believe),
but I doubt it works on the Mac since it's based on various
PC-style sound cards.

By the way, I finally fixed a long-standing bug in CLM, so
you no longer have to use loop as the first thing in run.


Date: Fri,  8 Nov 96 08:57:28 PST
From: bil (To: cmdist)
To: cmdist
Subject: clm news

All 56000-related code (including the QP support) has
been removed from CLM.  A farewell ode to the DSP can be found
in cmus1.lisp.  Envelope "stick point" examples added
to ug.ins, as well as read-position of an envelope.


Date: Mon, 11 Nov 1996 12:59:19 -0500
From: Jim Ravan <Jim_Ravan@avid.com>
Reply-To: Jim_Ravan@avid.com
Organization: Avid Technology, Inc.
To: CM/CLM/CMN <cmdist@ccrma.Stanford.EDU>
Subject: Event recording in CM

I am currently running CM on a 68k Mac IIci.

How does one record a performance? I would like to be able to compose in
CM and save various versions of output for processing or mixing with
other event streams. Am I at all clear? Can this be done?

My apologies if this is obvious. I am a neophyte in both Lisp and CM.
And I find the MCL development environment lacking when compared to
Metrowerks CodeWarrior. As a result I am having a hard time
understanding the overall structure and operation of CM.

regards,
-jim


From: "Tobias Kunze" <tkunze@ulysses.Stanford.EDU>
Date: Mon, 11 Nov 1996 11:11:02 -0800
In-Reply-To: Jim Ravan <Jim_Ravan@avid.com>
        "Event recording in CM" (Nov 11, 12:59pm)
Reply-To: t@ulysses.Stanford.EDU
X-Url: http://www.stanford.edu/~tkunze
To: Jim_Ravan@avid.com, CM/CLM/CMN <cmdist@ccrma.Stanford.EDU>
Subject: Re: Event recording in CM

The receive command receives incoming midi for storage, processing, or
display.  See "help receive" on the stella prompt.

You can archive your sessions using the archive command.  you can't really
archive algorithms, though, since LISP doesn't provide for a portable
way to save closures, but then again, you'll probably still have your
source code, right?  If you want to keep multiple runs of an algorithm
around, I'd redefine it as a generator, run it, copy/paste it to top-level
(or wherever) unfreeze the generator, run it again, etc...

Actually, I find the Mac lacking, but i *really* like MCL.  :)
Similarly, CodeWarrior is ok for me, but Xemacs is muchos better.
______________________________________________________________________

Tobias Kunze                       t@kunze.stanford.edu
CCRMA, Stanford University         http://www.stanford.edu/~tkunze


Date: Tue, 12 Nov 96 18:52:50 -0500
From: michael theodore <michaelt@alice.music.yale.edu>
To: cmdist@ccrma.Stanford.EDU
Subject: Windows 95 binary?

Hi - much as I love the Indy at school (where the cm package runs
just fine), I'm only able
to afford a PC for home use. Perhaps it's because I haven't
fooled with it enough, but the copy of clisp I have seems to
want to run in ms-dos mode (ie., I can't just have a shell prompt
in Windows, I need to restart the machine in dos mode). Any chance
of a Windows 95 binary?? I for one would be very happy, and it
could only serve to increase the possible user base. Hope this ain't
a FAQ.
cheers,
Michael


Date: Tue, 12 Nov 1996 19:40:05 -0500 (EST)
X-Sender: lt@westnet.com (Unverified)
X-Mailer: Windows Eudora Version 1.4.3
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
To: cmdist@ccrma.Stanford.EDU
From: lt@westnet.com (Larry Troxler)
Subject: Difference between parameters and slots? / Csound

I have two questions, first an easy one, and then a more involved one.

First, after looking over the kernel code for a while, I'm still not sure
what the real difference is between the "note" class slots, and parameters.
In particular, when subclassing notes, in what cases would you want slots
that are not in the parameter list? The documentation describes parameters
as slots that directly contribute to an event's output, but what does this
mean in practice?

I have another question which comes up because I would like to define
classes for the Csound function "GEN" routines. (The distribution has a base
class for instrument statements (csound-note), but not for the GEN calls).
As a quick hack, I could simply inherit the "gen" classes from
"csound-note", using "f1", etc, as the name, but the problem is that the
GENs can take a large and variable number of parameters, which are typically
x/y data pairs or something similar.  So from CM's point of view, these
parameter lists would IMO best be represented as single parameters whose
value is a LISP list. Then, when the object is written, then the list would
be flattened to individual output fields.

So, can anyone suggest in general terms, a good way to do this?  I can
probably figure out the details if I just know what generic functions I need
to look at. I also would like to know if the use of lists as parameters (or
would they be slots - see above), would be usefull at a more general level
in the inheritance tree - If so please advise.

Thanks!

Larry Troxler
lt@westnet.com


Date: Tue, 12 Nov 1996 19:57:38 -0500 (EST)
X-Sender: lt@westnet.com
To: michael theodore <michaelt@alice.music.yale.edu>,
        cmdist@ccrma.Stanford.EDU
From: lt@westnet.com (Larry Troxler)
Subject: Re: Windows 95 binary?

>At 06:52 PM 11/12/96 -0500, michael theodore wrote:[...]

It was my understanding that there is indeed a Win 32 binary of CLISP. I
thought it was on one of the two sites linked-to in the CM Web pages.
Personally I can't vouch for it since I'm still using 16-bit windows.

Larry Troxler
lt@westnet.com


Date: Tue, 12 Nov 1996 17:14:15 -0800 (PST)
From: Richard Karpen <karpen@u.washington.edu>
To: Larry Troxler <lt@westnet.com>
Cc: cmdist@ccrma.Stanford.EDU
Subject: Re: Difference between parameters and slots? / Csound

An answer for the first question: It's true that these two lists (the
slots and the parameters) are often declaring the same items. But if
you're using "algorithm", for example, and want to have slots available
for use with a particular instrument which will be local to each
algorithm, and which may not be parameters (meaning that they're not going
to be printed out to the note-list), then it's useful to have these as
separate entities.  I like this flexibility even if it means declaring
extra stuff. I'm not sure this is a good explanation for you, but I'm
rushing a bit right now. I'm sure others can add more details and correct
me if I'm not saying the right thing.

Second question: Use the "header" and "fheader" functions to print out
F-Cards. If you don't know how, I can send you an example.

Richard Karpen


Date: Tue, 12 Nov 1996 20:27:54 -0500 (EST)
X-Sender: lt@westnet.com
To: Richard Karpen <karpen@u.washington.edu>
From: lt@westnet.com (Larry Troxler)
Subject: Re: Difference between parameters and slots? / Csound
Cc: cmdist@ccrma.Stanford.EDU

At 05:14 PM 11/12/96 -0800, Richard Karpen wrote:
>
>An answer for the first question: It's true that these two lists (the
>slots and the parameters) are often declaring the same items. But if
>you're using "algorithm", for example, and want to have slots available
>for use with a particular instrument which will be local to each
>algorithm, and which may not be parameters (meaning that they're not going
>to be printed out to the note-list), then it's useful to have these as
>separate entities.  I like this flexibility even if it means declaring
>extra stuff. I'm not sure this is a good explanation for you, but I'm
>rushing a bit right now. I'm sure others can add more details and correct
>me if I'm not saying the right thing.
>

Sorry, I'm still not clear on this.

>Second question: Use the "header" and "fheader" functions to print out
>F-Cards. If you don't know how, I can send you an example.
>
>Richard Karpen
>

Ordinarily, this would work; however, I would like to re-use function tables
during the course of the score. According to the CSOUND doc you can do this.
So I would like to add F-cards <sic - just how long have you been using
Csound :-)> to the score dynamically, just like notes. I think of the
function tables as simply extensions to the note parameters. 

Larry Troxler
lt@westnet.com


In-Reply-To: <199611130040.TAA27737@westnet.com>
Date: Tue, 12 Nov 1996 19:51:49 -0600
To: lt@westnet.com (Larry Troxler)
From: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
Subject: Re: Difference between parameters and slots? / Csound
Cc: cmdist@ccrma.Stanford.EDU

>I have two questions, first an easy one, and then a more involved one.
>
>First, after looking over the kernel code for a while, I'm still not sure
>what the real difference is between the "note" class slots, and parameters.
>In particular, when subclassing notes, in what cases would you want slots
>that are not in the parameter list? The documentation describes parameters

it would be overly restrictive to insist that all user slots contribute a
value to the output event, even though this will be the case for many
"terminal classes". so in practice most defobjects will add slots that are
also parameters this need not be the case.

>>x/y data pairs or something similar.  So from CM's point of view, these
>parameter lists would IMO best be represented as single parameters whose
>value is a LISP list. Then, when the object is written, then the list would
>be flattened to individual output fields.

this is already supported by the &rest parameter declaration --
unfortunately, i just looked at the code and only clm-note currently makes
use of this! so until i can add this feature to csound in the next release,
you can implement a method for write-event yourself and use the
formatting-slots macro, which allows you to customize the output printing.

in the next release, ill make &rest possible in the parameter declaration
of defobject itself.

(defobject i2 (csound-note)
  (bar baz)
  (:parameters ins time &rest baz))

would print

i2 1.23 56 89 233 1223

if time was 1.23 and baz held the list (56 89 233 1223)

note that its only possible to have ONE &rest parameter. if you want to
flatten more that one list, you will have to use formatting-slots in any
event.


In-Reply-To: <199611130127.UAA01265@westnet.com>
Date: Tue, 12 Nov 1996 20:15:02 -0600
To: lt@westnet.com (Larry Troxler)
From: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
Subject: Re: Difference between parameters and slots? / Csound
Cc: cmdist@ccrma.Stanford.EDU

Here is a cound example of formatting-slots to output the contents of a
slot called 'stuff' as an &rest parameter:

(defobject i2 (csound-note)
  (dur freq stuff))

(defmethod write-event ((object i2 ) (stream csound-score-file))
  (formatting-slots (object (slot-value stream 'stream)  :eol t )
     ins time dur freq &rest stuff)))

; test it out

(algorithm foo i2 (length 10)
  (setf rhythm (between .1 1))
  (setf dur (interpl count 0 .2 9 10))
  (setf freq (item (pitches c4 d ef f g in heap)))
  (setf stuff (list 1 (pick '(a b c) ) (between 10 20))))

Stella [Top-Level]: open test.sco
Stella [Top-Level]: mix foo 0

;------------------------------

; Common Music output of 12-Nov-96 20:7:57

s
I2 0 0.2 391.995 1 A 16
I2 0.702 1.2 261.625 1 C 16
I2 1.297 2.3 311.126 1 A 14
I2 1.990 3.466 349.228 1 A 16
I2 2.904 4.555 293.664 1 A 14
I2 3.084 5.644 349.228 1 A 14
I2 3.548 6.733 311.126 1 A 12
I2 4.065 7.822 391.995 1 C 16
I2 4.469 8.911 261.625 1 B 13
I2 4.738 10 293.664 1 A 18
e



Date: Wed, 13 Nov 1996 08:55:41 -0500
From: Jim Ravan <Jim_Ravan@avid.com>
Reply-To: Jim_Ravan@avid.com
Organization: Avid Technology, Inc.
X-Mailer: Mozilla 3.0 (Macintosh; I; PPC)
To: CM/CLM/CMN <cmdist@ccrma.Stanford.EDU>
Subject: CM rebuild bug?

I was trying to build CM last night and ran into a problem. I'm using
MCL 3.0p2 on a Mac IIci.

First I compiled everything. Then, because I didn't really understand
what to do next, I said "Save" and then I quit MCL. Well, the save
actually only saved the listener output text and not the image. So then
I tried to rebuild by executing the build script again. Note that this
time, all the .fasl files exist. I got the following output:

----------------------------------------------------------------
*** Make CM (Type ? for help, EXIT to exit)

Where is the Common Music source directory?: (<cr>=Craft:MCL:Additional
MCL Source Code:CCL 3.0p2:) Craft:Jim:cm:
*** Source directory set to Craft:Jim:cm:.

Directory for compiled files: (<cr>=Craft:Jim:cm:) Craft:Jim:cm:bin:
*** Binary directory set to Craft:Jim:cm:bin:.

Directory for local site files: (<cr>=Craft:Jim:cm:site:) 
*** Site directory set to Craft:Jim:cm:site:.

Save Common Music? (<cr>=If-No-Compile) no
*** Will not save Common Music.

List of syntaxes to use: (<cr>=(:MIDI :CSOUND)) 
*** Syntaxes set to (:MIDI :CSOUND).

Build Common Music with Capella? (y or n) (<cr>=y) 
*** Will include Capella.

Extensions to be added:
    Add (<cr>=done) 
*** No extensions.

*** End Setup.
*** Building Common Music with parameters:

    :CM-DIRECTORY                       "Craft:Jim:cm:"
    :CM-IMAGE-NAME                      NIL
    :SITE-DIRECTORY                     "Craft:Jim:cm:site:"
    :BIN-DIRECTORY                      "Craft:Jim:cm:bin:"
    :CLM-DIRECTORY                      NIL
    :CMN-DIRECTORY                      NIL
    :SAVE?                              NIL
    :SYNTAXES                           '(:MIDI :CSOUND)
    :CAPELLA                            T
    :EXTENSIONS                         NIL
Save these values to a local configuration script? (y or n) (<cr>=y) n

*** Ready to go!  Type <cr> to proceed or EXIT to exit: (<cr>=proceed) 

*** Starting build process, this may take a while...
;Loading #P"Craft:Jim:cm:bin:walk.fasl"...
> Error: File "ccl:library;loop" does not exist.
> While executing: CCL::%LOAD
> Type Command-. to abort.
See the Restarts… menu item for further choices.
1 > 
Aborted
? 
----------------------------------------------------------------

So why can't MCL find "loop". It exists in the library folder.
I also tried skipping the load and continuing, but it had the same
problem trying to find "ff" later on.

Does anyone have any idea what the problem might be?

I'm trying to get a cm image that I can debug and make additions to.
If I let the build script save the image, I don't get any debug
information.

regards,
-jim


Date: Wed, 13 Nov 1996 09:18:51 -0500
From: Jim Ravan <Jim_Ravan@avid.com>
Reply-To: Jim_Ravan@avid.com
Organization: Avid Technology, Inc.
To: CM/CLM/CMN <cmdist@ccrma.Stanford.EDU>
Subject: Re: Event recording in CM

> >I am currently running CM on a 68k Mac IIci.
> >
> >How does one record a performance? I would like to be able to compose in
> >CM and save various versions of output for processing or mixing with
> >other event streams. Am I at all clear? Can this be done?
> 
> what do you mean by "record a performance"? what kind of performance? what
> exactly are you trying to do?

Let me try to be clearer. By "performance" I mean the result of mix. For
example, consider if I had one stream that was note data I had typed in.
Another stream was the result of a complex generator that includes lots
of heaps and random events. And a third stream was a sequence of three
algorithms that also includes lots of heaps and random events. I would
like to be able to save the result of a particular mix in case I like
it. Then I could do further processing on a saved mix, like transpose
it, for instance.

Is that more understandable?

regards,
-jim


In-Reply-To: <3289D35A.6DC1@avid.com>
Date: Wed, 13 Nov 1996 09:02:25 -0600
To: Jim_Ravan@avid.com
From: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
Subject: Re: CM rebuild bug?
Cc: cmdist@ccrma.Stanford.EDU

>
>So why can't MCL find "loop". It exists in the library folder.
>I also tried skipping the load and continuing, but it had the same
>problem trying to find "ff" later on.
>
>Does anyone have any idea what the problem might be?

maybe the logical host ccl: is no longer pointing to the true MCL 3.0p2
folder. try booting the base mcl image, then doing (ccl:require :loop)  if
that breaks then the problem is definately that mcl cant find its library.
if it works then cm should find it  as well.
perhaps the second time you loaded make-cm.lisp you were not using the same
base mcl image you used in the first pass?? also, you should definately
type Y to save a local build script, that way you can load/save cm without
answering any questions.

>I'm trying to get a cm image that I can debug and make additions to.
>If I let the build script save the image, I don't get any debug
>information.


i dont understand. mcl's debugger should work in any case. you should
always save an image.



In-Reply-To: <3289D8C5.1F08@avid.com>
Date: Wed, 13 Nov 1996 10:14:11 -0600
To: Jim_Ravan@avid.com
From: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
Subject: Re: Event recording in CM
Cc: cmdist@ccrma.Stanford.EDU

yes, i think i understand now. there are couple answers. it seems what you
are  after is to be able to capture a time-lined performance into a thread
with the thread containing copies of all the objects touched by the
performance but with their rhythmic values reset according to the merged
time line of the performance. so when the thread is played back the
timeline of the merge is heard. first, the RUN command can alreay copy the
output of any object into a thread, so
	run foo into bar
will run foo (an algo, merge, thread, doesnt matter) and capture its output
into a thread Bar that it will create or update. but run simply copies the
data, it wont overwrite time and rhythm slot values in the copies to
reflect a merged performance, so the thread wont correctly capture the
merged rhythm of the performance. but what you want is a perfectly
reasonable thing to do, in fact its been on my todo list for some time.  i
can add this feature for you without any real difficulty, i think its just
a few small methods. the cleanest way would be to allow you to OPEN a
thread just like a stream and then mix or sequence to it:
	Stella [Top-Level]: open foo
	Stream: #<THREAD foo>
	Stella [Top-Level]: mix bar,bax 0,2
	Stella [Top-Level]: open test.clm
	Stream: #<File: "test.clm">
	Stella [Top-Level]: mix foo,whatever 1,3
but for now your alternatives are to RUN each time-line indivdually and
then mix the results, or else MIX to a file and then IMPORT the file.
another possiblity (upcoming release) will be to mix outputs to seperate
files, then use the new infile object to manipulate the file as a cross
between a thread and an algorithm, like PLA's good old FILE feature.

-hkt



In-Reply-To: <3289D8C5.1F08@avid.com>
Date: Wed, 13 Nov 1996 12:21:34 -0600
To: Jim_Ravan@avid.com
From: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
Subject: Re: Event recording in CM
Cc: cmdist@ccrma.Stanford.EDU

Here is the implementatin of a new copy-stream as i mentioned in my last
message -- 5 methods and one patch so the open command does not insist on
files.  An example of recording a performance is at the end of the message.
hope this helps!
-hkt


(in-package :cm)

(defclass copy-stream (event-stream)
  ((container :initform nil)
   (previous :initform nil)))

(defmethod print-object ((object copy-stream) stream)
  (format stream "#<Copy: to ~:(~A~)>" (slot-value object 'name)))

(defmethod open-event-stream ((stream copy-stream)
                              &optional (mode ':default) &rest args)
  (declare (ignore args))
  (unless (or (eq mode ':default) (eq mode ':initialize))
    ;; make sure the container is a thread.
    (unless (typep (slot-value stream 'container) 'thread)
      (let ((name (intern (string-upcase (slot-value stream 'name)))))
        (setf (slot-value stream 'container)
              (make-object `(thread ,name)))))
    ;; mark stream as 'opened'.
    (setf (slot-value stream 'stream)
          (slot-value stream 'container)))
  stream)

(defmethod initialize-stream-for-processing :after ((stream copy-stream))
  ;; throw out current contents unless user explicitly freezes it
  (unless (frozenp (slot-value stream 'container))
    (remove-all-objects (slot-value stream 'stream)))
  (setf (slot-value stream 'previous) nil))

(defmethod write-event ((object element) (stream copy-stream))
  (let ((copy (copy-object object)))
    (add-object copy (slot-value stream 'stream))
    (setf (slot-value stream 'previous) copy)))

(defmethod write-event :before ((object rhythmic-element)
                                (stream copy-stream))
  ;; reset rhythm to reflect the time line of the performance.
  (let ((last (slot-value stream 'previous)))
    (when last
      (setf (slot-value last 'rhythm)
            (- (slot-value object 'time)
               (slot-value last 'time))))))
;;;
;;; patch main open-event-stream to allow object names.

(defmethod open-event-stream ((object string)
                              &optional (mode ':default) &rest args)
  (let ((stream (find-stream object)))
    (if stream
      (apply #'open-event-stream stream mode args)
      (multiple-value-bind (syntax class)
                           (pathname-syntax object)
        (declare (ignore syntax))
        (unless class
          ;; allow user to specify object names for copy streams
          ;(error "Can't determine stream class for ~S." object)
          (setf class (find-class 'copy-stream))
          )
        (apply #'open-event-stream class mode 'name object args)))))


#|

(algorithm hoo midi-note (length 5 rhythm 1 duration 1.5)
  (setf note (item (notes c5 d e f g))))

(algorithm doo midi-note (length 15 rhythm .333 duration .5)
  (setf note (item (notes c4 d e f g))))

Stella [Top-Level]: open recording
Stream: #<Copy: to Recording>
Stella [Top-Level]: mix hoo,doo 0
Stella [Top-Level]: tlist recording 0
Recording
    0.00    1. #<MIDI-NOTE | C5|     0| 1.500| 64| 0|>
            2. #<MIDI-NOTE | C4| 0.333| 0.500| 64| 0|>
    0.33    3. #<MIDI-NOTE | D4| 0.333| 0.500| 64| 0|>
    0.67    4. #<MIDI-NOTE | E4| 0.333| 0.500| 64| 0|>
    1.00    5. #<MIDI-NOTE | F4| 0.001| 0.500| 64| 0|>
    1.00    6. #<MIDI-NOTE | D5| 0.332| 1.500| 64| 0|>
    1.33    7. #<MIDI-NOTE | G4| 0.333| 0.500| 64| 0|>
    1.67    8. #<MIDI-NOTE | C4| 0.333| 0.500| 64| 0|>
    2.00    9. #<MIDI-NOTE | D4| 0.002| 0.500| 64| 0|>
    2.00   10. #<MIDI-NOTE | E5| 0.331| 1.500| 64| 0|>
    2.33   11. #<MIDI-NOTE | E4| 0.333| 0.500| 64| 0|>
    2.66   12. #<MIDI-NOTE | F4| 0.333| 0.500| 64| 0|>
    3.00   13. #<MIDI-NOTE | G4| 0.003| 0.500| 64| 0|>
    3.00   14. #<MIDI-NOTE | F5| 0.330| 1.500| 64| 0|>
    3.33   15. #<MIDI-NOTE | C4| 0.333| 0.500| 64| 0|>
    3.66   16. #<MIDI-NOTE | D4| 0.333| 0.500| 64| 0|>
    4.00   17. #<MIDI-NOTE | E4| 0.004| 0.500| 64| 0|>
    4.00   18. #<MIDI-NOTE | G5| 0.329| 1.500| 64| 0|>
    4.33   19. #<MIDI-NOTE | F4| 0.333| 0.500| 64| 0|>
    4.66   20. #<MIDI-NOTE | G4| 0.333| 0.500| 64| 0|>

Stella [Top-Level]: open midi
Stella [Top-Level]: mix recording

|#


From: "Tobias Kunze" <tkunze@ulysses.Stanford.EDU>
Date: Wed, 13 Nov 1996 11:00:52 -0800
In-Reply-To: Jim Ravan <Jim_Ravan@avid.com>
        "Re: Event recording in CM" (Nov 13,  9:18am)
X-Url: http://www.stanford.edu/~tkunze
X-Mailer: Z-Mail (3.2.3 08feb96 MediaMail)
To: Jim_Ravan@avid.com, CM/CLM/CMN <cmdist@ccrma.Stanford.EDU>
Subject: Re: Event recording in CM

  |  Let me try to be clearer. By "performance" I mean the
  |  result of mix. For example, consider if I had one stream
  |  that was note data I had typed in.  Another stream was the
  |  result of a complex generator that includes lots of heaps
  |  and random events. And a third stream was a sequence of
  |  three algorithms that also includes lots of heaps and
  |  random events. I would like to be able to save the result
  |  of a particular mix in case I like it. Then I could do
  |  further processing on a saved mix, like transpose it, for
  |  instance.
  |
  |  Is that more understandable?

yes.  use the run command, i.e,

  run foo,bar,baz 0,5,3.5 into test

puts all generated output in a thread "Test" which you then can listen
to.  I know, it should be possible to listen to the thing while it records,
but stream multiplexing is not yet there, although i'd really like to
see it, for instance to mix MIDI and Csound output.

Tobias Kunze                       t@kunze.stanford.edu
CCRMA, Stanford University         http://www.stanford.edu/~tkunze


From: "Tobias Kunze" <tkunze@ulysses.Stanford.EDU>
Date: Wed, 13 Nov 1996 11:46:44 -0800
In-Reply-To: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
        "Re: CM rebuild bug?" (Nov 13,  9:02am)
References: <v03007802aeaf918a30af@[128.174.92.150]>
Reply-To: t@ulysses.Stanford.EDU
X-Url: http://www.stanford.edu/~tkunze
X-Mailer: Z-Mail (3.2.3 08feb96 MediaMail)
To: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>, Jim_Ravan@avid.com
Subject: Re: CM rebuild bug?
Cc: cmdist@ccrma.Stanford.EDU

  |  maybe the logical host ccl: is no longer pointing to the
  |  true MCL 3.0p2 folder. try booting the base mcl image, then
  |  doing (ccl:require :loop)  if that breaks then the problem
  |  is definately that mcl cant find its library.  if it works
  |  then cm should find it  as well.

The way MCL works is a bit different.  the logical host "ccl:" is set
to wherever the spinning up image happens to be. So, if you start MCL
by itself, "ccl:" will be set right.

The only way to cure the problem is to set up a file
"pathname-translations.lisp" and load this from your site-wide cminit.lisp
(which has to be in the same directory as the cm image).  Make sure
you set at least the ccl: and home: logical hosts.  I had some neat code
that automated the process which I can send you if you like.


  |  Well, the save actually only saved the listener output text
  |  and not the image.

That's a hall-of-famer :)


  |  If I let the build script save the image, I don't get any
  |  debug information.

You mean the sources?  Not true, if you (setf ccl::*save-definitions* T).
The definitions will be in the new image.  Happy swapping, though!



Date: Wed, 13 Nov 1996 21:08:13 -0500 (EST)
X-Sender: lt@westnet.com
X-Mailer: Windows Eudora Version 1.4.3
To: cmdist@ccrma.Stanford.EDU
From: lt@westnet.com (Larry Troxler)
Subject: Problem running example file in DOS CLISP

Any idea what I could be doing wrong here? I've been having problems getting
the "linked-to" item-stream option to work, and I find I have the same
problem with an example file in the CM distribution. I'm using CLISP in DOS,
installed as per the web page instructions. Here's what happens:

---------------
> (stella)
Hang on a second...

Type ? for help.

Stella [Top-Level]: load \cm\doc\examples\linked-t.cm
;; Loading file \CM\DOC\EXAMPLES\LINKED-T.CM ...
;; Loading of file \CM\DOC\EXAMPLES\LINKED-T.CM is finished.
Stella [Top-Level]: open temp.mid
Stream: #<File: "TEMP.MID">
Stella [Top-Level]: list
Top-Level:
     1. #<MERGE: Mode>
     2. #<ALGORITHM: Bass>
     3. #<ALGORITHM: Chords>

Stella [Top-Level]: go 1

Focus:     Mode
Type:     Merge
Status:   Normal
Objects:  2
Start:    unset

Stella [Mode]: mix
Mix objects: (<cr>=Mode)
Start time offset:(<cr>=None)

*** - #<RANDOM-NOTE-STREAM Bass-Line> is not a named item stream.
The following restarts are available:
R1 = Return to Top-Level.
R2 = Exit Top-Level.
1. Break>


From: "Tobias Kunze" <tkunze@ulysses.Stanford.EDU>
Date: Wed, 13 Nov 1996 20:09:42 -0800
In-Reply-To: lt@westnet.com (Larry Troxler)
        "Problem running example file in DOS CLISP" (Nov 13,  9:08pm)
References: <199611140208.VAA15866@westnet.com>
Reply-To: t@ulysses.Stanford.EDU
X-Url: http://www.stanford.edu/~tkunze
X-Mailer: Z-Mail (3.2.3 08feb96 MediaMail)
To: lt@westnet.com (Larry Troxler), cmdist@ccrma.Stanford.EDU
Subject: Re: Problem running example file in DOS CLISP

  |  Any idea what I could be doing wrong here? I've been having
  |  problems getting the "linked-to" item-stream option to
  |  work, and I find I have the same problem with an example
  |  file in the CM distribution.

You do nothing wrong, the example is wrong.  8-|  This was fixed a while
ago, but seems to have crept back in.

The linked-to option expects a quoted symbol (a "name"), not the
actual lisp object ("#<RANDOM-NOTE-STREAM Bass-Line>") as given by
the result of the read-time expansion of "#@bass-line".


    (setf note (item (intervals [28 31 35 36] [29 33 36 38]
                                ...
                                in heap linked-to 'bass-line)))

is correct.


Date: Fri, 15 Nov 1996 22:41:26 -0500 (EST)
X-Sender: lt@westnet.com (Unverified)
X-Mailer: Windows Eudora Version 1.4.3
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
To: cmdist@ccrma.Stanford.EDU
From: lt@westnet.com (Larry Troxler)
Subject: Critique a beginner's code!

Thanks Rick,Tobias, and the other list members for helping this beginner so
far. Unfortunately for you,  I am paying you back by offering the following
code for you to critique :-). At this stage, I have a number of questions,
mostly minor details, and I thought it would make the most sense simply to
post some code, with my questions embedded in the comments. So, if anyone
has the time to look through this, I would welcome any suggestions, either
specifically regarding the questions I raise, or more generally, pointing to
ways I should be doing things differently. Thanks in advance, everyone!

Also let me know if the line-formatting gets mangled in transit - if so I
will repost.

Larry Troxler
lt@westnet.com

-----------

;;; A first stab at MIDI creation in CM. Please read through questions in
comments below
;;; and critique! Thanks!

(setf opus-len 60) ; quit after a minute

;;; The following is so we can use names instead of numbers for MIDI program
changes.
(setf patches 
   '((Org400 8)
     (Vulcan-Harp 21)))

;;; This maintains the current MIDI program (patch) for each channel, should
probably 
;;; be local to the "pnote" class below - Suggestions, anyone?
(setf cur-chan-pat (make-array 16 :initial-element nil))    

;;; "pnote" is a MIDI note which includes a patch parameter. If the "patch"
parameter is 
;;;  different from
;;; the patch currently being played on a given channel, then write-event
will send the
;;; new program change before the note. What I don't know how to do is to
schedule the 
;;; the program change a couple ticks in advance of the note, for synths
that require it.

(defobject pnote (midi-note)
  ((patch :initarg :patch :initform nil :accessor pnote-patch)))

;;; modeled after the detuned MIDI note class - the guts haven't been tested
thuroughly but 
;;; hopefully you understand the concept here.
(defmethod write-event ((me pnote ) file)
  (let ((patchnum (second (assoc (pnote-patch me) patches)))) ; symbol -> number
    (unless 
     (eql patchnum (aref cur-chan-pat (slot-value me 'channel))) ; unless
same patch on this channel,
     (setf (aref cur-chan-pat (slot-value me 'channel)) patchnum) ; register
new patch.
     (let ((obj (object midi-message                              ; send the
program change.
                        message (make-program-change 
                                 (slot-value me 'channel)
                                 patchnum))))
       (setf (slot-value obj 'time) (slot-value me 'time))
       (write-event obj file))))
  (call-next-method))  ; Always send the original midi-note (obviously)

;;; Now for the specific task at hand.
;;; Following are the two algorithms that will be run for this experiment.

;;; The "Org400" part
(defun do-Org400 (chan)
 (algorithm
  Org400 pnote ( 
                 patch 'Org400 
                 start 0 
                 channel chan 
                 end (- opus-len 1)
                 amplitude (amplitude 'mf) ; syntax is a bit awkward - why
can't symbolic values
                 duration (rhythm '32))    ; be directly used in algo inits?
  (setf 
   note 
   (item 
    (intervals 
     7 2 0      ; would be nicer to us symbolic intervals here - how do i do
that?
     linked-to 'root)))
  (setf 
   rhythm  ; variations on a 7/8 rhythm
   (item      
     (rhythms 
      e.
      (rhythms 
       ((rhythms e. e e) min 4 max 4)  ; there's got to be a better way than
the mix/max
       ((rhythms e  e. e) min 4 max 4) ; bit. What I really want is to
choose a new subseq
       ((rhythms e e e.) min 4 max 4)  ; at a rythmic rate of E*7*2*2 = once
every 'root 
       in random for 1)                ; cycle (see 'root stream below). How
should I do that?
      e
      e)))))


;; The "Vulcan-Harp" part
(defun do-Vulcan-Harp (chan)
 (algorithm
  Vulcan-Harp pnote (
                     patch 'Vulcan-Harp
                     start 0 
                     channel chan
                     end (- opus-len 1)
                     duration (rhythm '32))
 (setf amplitude (item (amplitudes mp pp pp pp p pp pp)))  ; emphasize the
7/8 meter
 (setf rhythm (rhythm 'e))
 (setf 
  note
  (transpose
   (item 
    (intervals 0 5 10 linked-to 'root)) ; again, symbolic intervals would be
nicer - how?
   -12))))
   
     
;;; Now, ladies and gentlemen, whithout further adieu(sp?), here's the music!
;;; 
;;; One problem with this merge is that the 'root  item selection seems to
;;; happen *after* the item selections of the two threads, making the change
of root hapen
;;; after the beat instead of on it. What determines the order of evaluation
and how should
;;; I fix this problem?
(in-tempo 120 'q)    
(merge 
 merge-1 ()
 (mute ; "root-selector" sets the root note for the two defun'd algos below.
  root-selector (start 0 end opus-len rhythm (rhythm 'e*7*2)) ; 2 7/8
measures per root
  (item (notes c4 b3 named 'root))) ; thus, 4 7/8 measures per cycle
 ; The two parts for this creation:
 (do-Org400 1)        ; The argument is a MIDI channel #. Eventually it
would be nice
 (do-Vulcan-Harp 2))  ; to have a channel allocate/free setup. Any prior art
in this area?
     
;; the end

  
                     



From: "Tobias Kunze" <tkunze@ulysses.Stanford.EDU>
Date: Sat, 16 Nov 1996 17:45:26 -0800
In-Reply-To: lt@westnet.com (Larry Troxler)
        "Critique a beginner's code!" (Nov 15, 10:41pm)
References: <199611160341.WAA10485@westnet.com>
Reply-To: t@ulysses.Stanford.EDU
X-Url: http://www.stanford.edu/~tkunze
X-Mailer: Z-Mail (3.2.3 08feb96 MediaMail)
To: lt@westnet.com (Larry Troxler), cmdist@ccrma.Stanford.EDU
Subject: Re: Critique a beginner's code!
Mime-Version: 1.0
Content-Type: multipart/mixed;
	boundary="PART-BOUNDARY=.19611161745.ZM18107.stanford.edu"

--
--PART-BOUNDARY=.19611161745.ZM18107.stanford.edu
Content-Type: text/plain; charset=us-ascii


Here is "larry.cm".

Enjoy!




--PART-BOUNDARY=.19611161745.ZM18107.stanford.edu
X-Zm-Content-Name: larry.cm
Content-Description: Text
Content-Type: text/plain ; name="larry.cm" ; charset=us-ascii

;;;
;;;
;;; File:         larry.cm
;;;
;;; Summary:      corrected version of Larry Troxler's linked-to code
;;;
;;; Author:       Tobias Kunze
;;; e-Mail:       t@kunze.stanford.edu
;;; Org:          CCRMA, Stanford University
;;;
;;; orig-Date:    16-Nov-96 at 16:12:24
;;; Last-Mod:     16-Nov-96 at 17:44:22 by Tobias Kunze
;;;
;;; Revision:     
;;;
;;; Description:  (see comment below)
;;;
;;; Changes:
;;;   16-Nov-96   tk 

#|
Date: Fri, 15 Nov 1996 22:41:26 -0500 (EST)
To: cmdist@ccrma
From: lt@westnet.com (Larry Troxler)
Subject: Critique a beginner's code!


Thanks Rick,Tobias, and the other list members for helping this beginner so
far. Unfortunately for you,  I am paying you back by offering the following
code for you to critique :-). At this stage, I have a number of questions,
mostly minor details, and I thought it would make the most sense simply to
post some code, with my questions embedded in the comments. So, if anyone
has the time to look through this, I would welcome any suggestions, either
specifically regarding the questions I raise, or more generally, pointing to
ways I should be doing things differently. Thanks in advance, everyone!

Also let me know if the line-formatting gets mangled in transit - if so I
will repost.

Larry Troxler
lt@westnet.com

|#


(defparameter *opus-len* 60)		; quit after a minute

;;; The following is so we can use names instead of numbers for MIDI program
;;; changes.

(defparameter *patches* '((Org400 8) (Vulcan-Harp 21)))

;;; This maintains the current MIDI program (patch) for each channel

(defparameter *cur-chan-pat* (make-array 16 :initial-element nil))    

;;; "pnote" is a MIDI note which includes a patch parameter. If the "patch"
;;; parameter is different from the patch currently being played on a given 
;;; channel, then write-event will send the new program change before the 
;;; note. 

(defobject pnote (midi-note)
  ((patch :initarg :patch :initform nil :accessor pnote-patch)))


;;; modeled after the detuned MIDI note class - the guts haven't been tested
;;; thuroughly but hopefully you understand the concept here.

(defmethod write-event ((me pnote) file)
  (let ((patchnum (second (assoc (pnote-patch me) *patches*))))
    ;; unless same patch on this channel,
    (unless (eql patchnum (aref *cur-chan-pat* (slot-value me 'channel)))
      ;; register new patch
      (setf (aref *cur-chan-pat* (slot-value me 'channel)) patchnum)
      ;; and send the program change, 100ms ahead of time (this assumes 
      ;; scheduling is in ms mode (as opposed to floats).
      (let ((obj (object midi-message	
			 message (make-program-change (slot-value me 'channel)
						      patchnum))))
	(setf (slot-value obj 'time) (- (slot-value me 'time) 100))
	(write-event obj file))))
  (call-next-method))  ; Always send the original midi-note (obviously)


;;; Now for the specific task at hand.
;;; Following are the two algorithms that will be run for this experiment.

#|
QUESTIONS

Q. syntax is a bit awkward - why can't symbolic values be directly used in
   algo inits? 
A. because there is no way for the algorithm expander to know how to 
   convert the data.  Hence, it's always unconverted ("raw").
Q. would be nicer to us symbolic intervals here - how do i do that?
A. symbolic intervals make only sense in a chromatic scale.  intervals
   etc, however, operates on any scale.
Q. there's got to be a better way than the mix/max bit. What I really want is
   to choose a new subseq at a rythmic rate of E*7*2*2 = once every 'root 
   cycle (see 'root stream below). How should I do that?
A. use the for option as shown below
|#

;;; The "Org400" part

(defun do-Org400 (chan)
  (algorithm Org400 pnote (end (- *opus-len* 1) patch 'Org400 channel chan
			       amplitude (amplitude 'mf) duration (rhythm '32))
    (setf note (item (intervals 7 2 0 linked-to 'root)))
    ;; variations on a 7/8 rhythm.
    (setf rhythm (item (rhythms e.
				(rhythms (rhythms e. e e for 12)
					 (rhythms e  e. e for 12)
					 (rhythms e e e. for 12)
					 in random for 1)
				e e)))))


;; The "Vulcan-Harp" part

(defun do-Vulcan-Harp (chan)
  (algorithm Vulcan-Harp pnote (patch 'Vulcan-Harp channel chan
				      rhythm (rhythm 'e) end (- *opus-len* 1)
				      duration (rhythm '32))
    ;; emphasize the 7/8 meter
    (setf amplitude (item (amplitudes mp pp pp pp p pp pp)))  
    (setf note (transpose (item (intervals 0 5 10 linked-to 'root)) -12))))
   
     
;;; Now, ladies and gentlemen, whithout further adieu(sp?), here's the music!

(in-tempo 120 'q)    

(merge merge-1 ()
  ;; "root-selector" sets the root note for the two defun'd algos below.
  (mute root-selector (end *opus-len* 
			   rhythm (rhythm 'e*7*2)) ; 2 7/8 measures per root
    (item (notes c4 b3 named 'root))) ; thus, 4 7/8 measures per cycle
  ;; The two parts for this creation:
  ;; The argument is a MIDI channel #.
  (do-Org400 1)
  (do-Vulcan-Harp 2))
     
#|
QUESTIONS

Q. Eventually it would be nice to have a channel allocate/free setup. Any
   prior art in this area? 
A. I don't understand the question.
Q. One problem with this merge is that the 'root item selection seems to
   happen *after* the item selections of the two threads, making the change
   of root hapen after the beat instead of on it. What determines the order 
   of evaluation and how should I fix this problem?
A. your rhythm stream in Org400 starts with an initial offset of "e.", and 
   then intersperses two more "e"'s after each inner cycle.  I like it
   though.  This example shows you that it works:

Stella [Top-Level]: (merge foo ()
		      (mute bar-1 (rhythm 1)
			(item (items 0 1 2 3 named 'eek) 
                              :kill t))
		      (mute bar-2 (rhythm .5)
			(print (item (intervals 3 5 linked-to 'eek)
                                     :kill 5))))

#<MERGE: Foo>
Stella [Top-Level]: run foo 0

3 
5 
4 
6 
5 
7 
6 
8 
6 
8 
Stella [Top-Level]: 

|#


;;;
;;; -*- EOF -*-


--PART-BOUNDARY=.19611161745.ZM18107.stanford.edu--


Date: Sat, 16 Nov 1996 21:54:53 -0500 (EST)
X-Sender: lt@westnet.com (Unverified)
X-Mailer: Windows Eudora Version 1.4.3
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
To: t@ulysses.Stanford.EDU, cmdist@ccrma.Stanford.EDU
From: lt@westnet.com (Larry Troxler)
Subject: Re: Critique a beginner's code!

>
>Q. syntax is a bit awkward - why can't symbolic values be directly used in
>   algo inits? 
>A. because there is no way for the algorithm expander to know how to 
>   convert the data.  Hence, it's always unconverted ("raw").

Yes, on giving it a second's thought this is obvious - algorithm parameters
aren't "typed".

>Q. would be nicer to us symbolic intervals here - how do i do that?
>A. symbolic intervals make only sense in a chromatic scale.  intervals
>   etc, however, operates on any scale.

Yes, I think I need to investigate how scales work. I assume you can define
as many scales as you need and use them locally on specific streams. I'll
look into it. Sounds like a better way of working, anyway.


>Q. there's got to be a better way than the mix/max bit. What I really want is
>   to choose a new subseq at a rythmic rate of E*7*2*2 = once every 'root 
>   cycle (see 'root stream below). How should I do that?
>A. use the for option as shown below
>|#
>
>;;; The "Org400" part
>
>(defun do-Org400 (chan)
>  (algorithm Org400 pnote (end (- *opus-len* 1) patch 'Org400 channel chan
>			       amplitude (amplitude 'mf) duration (rhythm '32))
>    (setf note (item (intervals 7 2 0 linked-to 'root)))
>    ;; variations on a 7/8 rhythm.
>    (setf rhythm (item (rhythms e.
>				(rhythms (rhythms e. e e for 12)
>					 (rhythms e  e. e for 12)
>					 (rhythms e e e. for 12)
>					 in random for 1)
>				e e)))))
>

Nope, sorry. This doesn't give the same output as my original example. The
intent was that the rhythm cycle always covered a 7/8 measure (the three
randomly choosen subsequences are of the same length). On listening to your
revision, I hear something different.

>Q. Eventually it would be nice to have a channel allocate/free setup. Any
>   prior art in this area? 
>A. I don't understand the question.

I meant that instead of needing to specify specific MIDI channels, that
there could be a system where an algorithm "allocates" a free channel, and
"frees" it when it is done with it. Basically, I have a synth which is
pretty good about dynamic voice allocation and patch changes (Korg
Wavestation), and hence it would be nice to have some sort of MIDI
housekeeping layer which handles the patch changes (above) and assigning
parts to an unused channel on a dynamic basis.


>Q. One problem with this merge is that the 'root item selection seems to
>   happen *after* the item selections of the two threads, making the change
>   of root hapen after the beat instead of on it. What determines the order 
>   of evaluation and how should I fix this problem?
>A. your rhythm stream in Org400 starts with an initial offset of "e.", and 
>   then intersperses two more "e"'s after each inner cycle.  I like it
>   though.  This example shows you that it works:
>

I haven't yet ran your example, but on further investigation, the problem
isn't with the Org400, but with the Vulcan-Harp algo. (see above wrt. your
Org400 revision resulting in different output). 

The strange problem I am having turns out to be only with the "Vulcan-harp"
part. The Org400 part does in fact switch transpositions on the 7/8 meter
boundaries. But the Vulcan-Harp is one note late in switching. I tried a few
modifications to no avail. I supposed it must be some sort of rhythm
round-off problem, where the Vulcan downbeat actually is schedulled slightly
before the "root" change. So as an experiment I tried delaying the Vulcan
algorithm's  "start" parameter to 0.01 to ensure that the Vulcan part was
always scheduled slightly after the corresponding beats of 'root. 
But this didn't work!

I'm completely stumped on this one.

To make things even more confusing, when I play your revision, the Vulcan
part works correctly! So what's different??

Larry


Date: Sat, 16 Nov 1996 22:02:48 -0500 (EST)
X-Sender: lt@westnet.com (Unverified)
X-Mailer: Windows Eudora Version 1.4.3
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
To: t@ulysses.Stanford.EDU, cmdist@ccrma.Stanford.EDU
From: lt@westnet.com (Larry Troxler)
Subject: Re: Critique a beginner's code! - sorry, forgot one!

I'm sorry but I fogot to ask something in my post a few minutes ago.

You suggest this in the redefined write-event for pnote (inherited from
midi-note):

>	(setf (slot-value obj 'time) (- (slot-value me 'time) 100))
>	(write-event obj file))))
>  (call-next-method))  ; Always send the original midi-note (obviously)

I thought about this at first, but I wasn't sure that I could do that. I was
worried about what happens if this throws the output out of time-increasing
order. For example, what if there was already a midi event written starting
at (- (slot-value me 'time) 50) ?

Larry Troxler
lt@westnet.com




From: "Tobias Kunze" <tkunze@ulysses.Stanford.EDU>
Date: Sun, 17 Nov 1996 19:44:39 -0800
In-Reply-To: lt@westnet.com (Larry Troxler)
        "Re: Critique a beginner's code!" (Nov 16,  9:54pm)
References: <199611170254.VAA27412@westnet.com>
Reply-To: t@ulysses.Stanford.EDU
X-Url: http://www.stanford.edu/~tkunze
X-Mailer: Z-Mail (3.2.3 08feb96 MediaMail)
To: lt@westnet.com (Larry Troxler)
Subject: Re: Critique a beginner's code!
Cc: cmdist@ccrma.Stanford.EDU
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii

 | Nope, sorry. This doesn't give the same output as my
 | original example. The intent was that the rhythm cycle
 | always covered a 7/8 measure (the three randomly choosen
 | subsequences are of the same length). On listening to your
 | revision, I hear something different.

Oops, I misread your example.  But your pattern will still be offset by
an "e." pick-up:

Converted to plain item streams (for better readability) my suggestion
would read:

> (setf x #icx(e.
               #irx((#icx(e. e e) min 4 max 4)
                    (#icx(e e. e) min 4 max 4)
                    (#icx(e e e.) min 4 max 4)
                    for 1)
               e e))
#<CYCLIC-ITEM-STREAM @ #x107e3f62>
> (read-items x 61)
(E.	E E. E		E E               ; group 1 of four (inner stream 2)
 E. 	E E. E 		E E
 E. 	E E. E 		E E
 E. 	E E. E 		E E

 E. 	E. E E 		E E               ; group 2 of four (inner stream 1)
 E. 	E. E E 		E E
 E. 	E. E E 		E E
 E. 	E. E E 		E E

 E. 	E E E. 		E E               ; group 3 of four (inner stream 3)
 E. 	E E E. 		E E
 E. 	[...]
)




If all your random measures should be repeated 4 times, there is a
slightly simpler version using the "repeat" macro:

> (setf y #icx(a
               (repeat #irx(#icx(x1 x2 x3)
                            #icx(y1 y2 y3)
                            #icx(z1 z2 z3)
                            for 1)
               b c))
#<CYCLIC-ITEM-STREAM @ #x107ec82a>
> (read-items y 61)
(A 	Y1 Y2 Y3 	B C
 A 	Y1 Y2 Y3 	B C
 A 	Y1 Y2 Y3 	B C
 A 	Y1 Y2 Y3 	B C

 A 	Z1 Z2 Z3 	B C
 A 	Z1 Z2 Z3 	B C
 A 	Z1 Z2 Z3 	B C
 A 	Z1 Z2 Z3 	B C

 A 	Y1 Y2 Y3 	B C
 A 	Y1 Y2 Y3 	B C
 A	[...]
)


But it is less general.


 | I meant that instead of needing to specify specific MIDI
 | channels, that there could be a system where an algorithm
 | "allocates" a free channel, and "frees" it when it is done
 | with it.

I think you can easily code up such a midi channel wrapper yourself.
just call it in each algorithm when you set the channel slot.  There
is no way to implement something like that to be effective at a later
point in time, since everything has to be a midi message with fixed
channel.  Allocating and freeing channels is further complicated by
the fact that midi messages are queued in the future, ie, the allocation
map at evaluation time doesn't necessarily have be the same at event time.
The only clean way of doing that would be on the synthesizer side, ie,
AFTER the midi bottleneck.

But it's easy to implement channel management that works for all other
cases.


 | To make things even more confusing, when I play your
 | revision, the Vulcan part works correctly! So what's
 | different??

It was coded by me :)


 | You suggest this in the redefined write-event for pnote (inherited from
 | midi-note):
 |
 | >	(setf (slot-value obj 'time) (- (slot-value me 'time) 100))
 | >	(write-event obj file))))
 | >  (call-next-method))  ; Always send the original midi-note (obviously)
 |
 | I thought about this at first, but I wasn't sure that I could do that. I was
 | worried about what happens if this throws the output out of time-increasing
 | order. For example, what if there was already a midi event written starting
 | at (- (slot-value me 'time) 50) ?

You can do that as long as your calculations keep 50ms (or whatever) ahead of
the midi output.  If not, your message will be overdue and output instantly.

Your concept of output is wrong.  The driver actually time-sorts data, and
where not, we have code that does so.  Almost every note written schedules
its note-off at a later time than the next note-on, thus violating the
time order of the output, for instance.  It doesn't matter whether two
messages are sent at the same time, the driver puts merges them such that
they don't overrun the midi interface.


-Tobias


Date: Thu, 21 Nov 1996 23:36:09 +0200 (EET)
X-Sender: mjkoskin@sci.fi
X-Mailer: Windows Eudora Version 1.4.4
Content-Type: text/plain; charset="us-ascii"
To: cmdist@ccrma.Stanford.EDU
From: mjkoskin@sci.fi (Matti Koskinen)
Subject: Newbie question

Hello

I ran into problems when trying the examples in the documentation. I wrote
the first algorithm, but then when I try to write the midi-file, I get
error message that function between is undefined. Apropos shows there exists
such function. This happens also with rescale and interpl and maybe others
too. I'm using the dos version of CM with Clisp for dos under Windows95.
When making CM, I get lots of warnigs, is this normal? What to do, so that
these functions
can be found?

Thanks

Matti

mjkoskin@sci.fi


From: "Tobias Kunze" <tkunze@ulysses.Stanford.EDU>
Date: Thu, 21 Nov 1996 13:53:08 -0800
In-Reply-To: mjkoskin@sci.fi (Matti Koskinen)
        "Newbie question" (Nov 21, 11:36pm)
References: <199611212136.XAA11824@id4.sci.fi>
Reply-To: t@ulysses.Stanford.EDU
X-Url: http://www.stanford.edu/~tkunze
X-Mailer: Z-Mail (3.2.3 08feb96 MediaMail)
To: mjkoskin@sci.fi (Matti Koskinen)
Subject: Re: Newbie question
Cc: cmdist@ccrma.Stanford.EDU

make sure you evaluate in the package "cm".

start every file you load into cm with:

  (in-package :cm)

or, if you work in the listener, evaluate the in-package.
if you do an apropos and it shows you stuff like

  CM::between   Function (defined)

you are in the wrong package.


Date: Sun, 1 Dec 1996 21:19:51 -0500 (EST)
X-Sender: lt@westnet.com
X-Mailer: Windows Eudora Version 1.4.3
To: cmdist@ccrma.Stanford.EDU
From: lt@westnet.com (Larry Troxler)
Subject: delete events while maintaining other start-times?

I couldn't figure out a way to describe my question clearly in the subject,
but what I am asking for is a good way to delete objects from a thread while
maintaining the start times of the remaining objects.

To put it another way, I want the rhythm of the object being deleted to be
added to the rhythm of the object just before the deleted object, so that
after a RUN or MIX, the following start-times won't be changed. This is what
you want when deleting "bad notes" , for example.

I couldn't find in the documentation, a built-in way to do this. 

Larry Troxler
lt@westnet.com


From: "Tobias Kunze" <tkunze@ulysses.Stanford.EDU>
Date: Sun, 1 Dec 1996 19:43:40 -0800
In-Reply-To: lt@westnet.com (Larry Troxler)
        "delete events while maintaining other start-times?" (Dec  1,  9:19pm)
References: <199612020219.VAA17649@westnet.com>
Reply-To: t@ulysses.Stanford.EDU
X-Url: http://www.stanford.edu/~tkunze
X-Mailer: Z-Mail (3.2.3 08feb96 MediaMail)
To: lt@westnet.com (Larry Troxler), cmdist@ccrma.Stanford.EDU
Subject: Re: delete events while maintaining other start-times?
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii

 | To put it another way, I want the rhythm of the object
 | being deleted to be added to the rhythm of the object just
 | before the deleted object, so that after a RUN or MIX, the
 | following start-times won't be changed. This is what you
 | want when deleting "bad notes" , for example.

This is a bit against the way CM deals with time, which is relational
as opposed to absolute.

Depending on your current syntax, you could

  1) CHANGE the event to a rest object, throwing away everything except
     the rhythm information
  2) fake a mute event (for instance by setting the amplitude in Midi
     to 0), loosing the slot's information
  3) use HIDE and MAP as shown below (ugly, ugly)

Maybe Rick could think about a better solution?


 : Stella [Bar]: list
 : Bar:
 :      1. #<MIDI-NOTE | 60| 0.500| 0.500| 0.500| 0|>
 :      2. #<MIDI-NOTE | 61| 0.500| 0.500| 0.500| 0|>
 :      3. #<MIDI-NOTE | 62| 0.500| 0.500| 0.500| 0|>
 :      4. #<MIDI-NOTE | 63| 0.500| 0.500| 0.500| 0|>
 :      5. #<MIDI-NOTE | 64| 0.500| 0.500| 0.500| 0|>
 : Stella [Bar]: tlist bar 0
 : Bar
 :     0.00    1. #<MIDI-NOTE | 60| 0.500| 0.500| 0.500| 0|>
 :     0.50    2. #<MIDI-NOTE | 61| 0.500| 0.500| 0.500| 0|>
 :     1.00    3. #<MIDI-NOTE | 62| 0.500| 0.500| 0.500| 0|>
 :     1.50    4. #<MIDI-NOTE | 63| 0.500| 0.500| 0.500| 0|>
 :     2.00    5. #<MIDI-NOTE | 64| 0.500| 0.500| 0.500| 0|>
 : Stella [Bar]: hide 3
 : Stella [Bar]: map [2:3::2] set rhythm[1] (+ $rhythm[1] $rhythm[2])
 : Stella [Bar]: tlist bar 0
 : Bar
 :     0.00    1. #<MIDI-NOTE | 60| 0.500| 0.500| 0.500| 0|>
 :     0.50    2. #<MIDI-NOTE | 61| 1.000| 1.000| 0.500| 0|>
 :     1.50    3. #<MIDI-NOTE | 63| 0.500| 0.500| 0.500| 0|>
 :     2.00    4. #<MIDI-NOTE | 64| 0.500| 0.500| 0.500| 0|>
 : Stella [Bar]: lsit
 : "LSIT" is not a command.
 : Stella [Bar]: list
 : Bar:
 :      1. #<MIDI-NOTE | 60| 0.500| 0.500| 0.500| 0|>
 :      2. #<MIDI-NOTE | 61| 1.000| 1.000| 0.500| 0|>
 :      3. #<MIDI-NOTE | 62| 0.500| 0.500| 0.500| 0|> (Hidden)
 :      4. #<MIDI-NOTE | 63| 0.500| 0.500| 0.500| 0|>
 :      5. #<MIDI-NOTE | 64| 0.500| 0.500| 0.500| 0|>
 : Stella [Bar]:


In-Reply-To: <199612020219.VAA17649@westnet.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date: Mon, 2 Dec 1996 07:12:01 -0600
To: lt@westnet.com (Larry Troxler)
From: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
Subject: Re: delete events while maintaining other start-times?
Cc: cmdist@ccrma.Stanford.EDU

>but what I am asking for is a good way to delete objects from a thread while
>maintaining the start times of the remaining objects.

>Maybe Rick could think about a better solution?

i added this feature only about a week ago --  i was finishing a disklavier
piece and needed to eliminate some notes in the final mix, which at that
point was a single thread holding more than 24,000 notes (the piece is for
watercooled disklavier with overhead cams...) anyway the new feature is
called "muting".   muted objects act like rests, ie they dont contribute
sound but they do occupy rhythmic space.
however, if you want to  delete and expunge objects and still maintain the
other objects in their original time relations then that would actually
mean changing their time data and I would have to think about that some
more. in the meantime ill send you the patch to implement muting. if
anybody else needs it please let me know.

>I couldn't figure out a way to describe my question clearly in the subject,
>but what I am asking for is a good way to delete objects from a thread while
>maintaining the start times of the remaining objects.
>
>To put it another way, I want the rhythm of the object being deleted to be
>added to the rhythm of the object just before the deleted object, so that
>after a RUN or MIX, the following start-times won't be changed. This is what
>you want when deleting "bad notes" , for example.
>
>I couldn't find in the documentation, a built-in way to do this.
>
>Larry Troxler
>lt@westnet.com


Date: Mon, 2 Dec 1996 07:55:23 -0600
To: lt@westnet.com (Larry Troxler)
From: Rick Taube <hkt@cmp-nxt1.music.uiuc.edu>
Subject: Re: delete events while maintaining other start-times?

this function will delete and expunge muted objects and update times in the
remaining objects. you need to install the mute.lisp patch before using.

(defun flush-muted (thread &aux last)
  (run-object thread 0)
  (map-object #'(lambda (o)
                  (if (mutedp o) (delete-object o)
                    (if last
                      (setf (object-rhythm last)
                            (- (object-time o) (object-time last))
                            last o)
                      (setf last o))))
              thread)
  (expunge-object thread)
  thread)

;;;-------------

Stella [Top-Level]: tlist aaa 0
Aaa
    0.00    1. #<MIDI-NOTE | 60|     1|     1| 64| 0|>
    1.00    2. #<MIDI-NOTE | 61|     1|     1| 64| 0|>
    2.00    3. #<MIDI-NOTE | 62|     1|     1| 64| 0|>
    3.00    4. #<MIDI-NOTE | 63|     1|     1| 64| 0|>
    4.00    5. #<MIDI-NOTE | 64|     1|     1| 64| 0|>
    5.00    6. #<MIDI-NOTE | 65|     1|     1| 64| 0|>
    6.00    7. #<MIDI-NOTE | 66|     1|     1| 64| 0|>
    7.00    8. #<MIDI-NOTE | 67|     1|     1| 64| 0|>
    8.00    9. #<MIDI-NOTE | 68|     1|     1| 64| 0|>
    9.00   10. #<MIDI-NOTE | 69|     1|     1| 64| 0|>

Stella [Top-Level]: map aaa[::2] mute $

Stella [Top-Level]: (flush-muted #!aaa)
#<THREAD: Aaa>
Stella [Top-Level]: tlist aaa 0
Aaa
    0.00    1. #<MIDI-NOTE | 61|     2|     2| 64| 0|>
    2.00    2. #<MIDI-NOTE | 63|     2|     2| 64| 0|>
    4.00    3. #<MIDI-NOTE | 65|     2|     2| 64| 0|>
    6.00    4. #<MIDI-NOTE | 67|     2|     2| 64| 0|>
    8.00    5. #<MIDI-NOTE | 69|     1|     1| 64| 0|>

Stella [Top-Level]:



Date: Mon, 09 Dec 1996 20:56:21 +0200
From: Matti Koskinen <mjkoskin@sci.fi>
Organization: Scifi International Communications
To: cmdist@ccrma.Stanford.EDU
Subject: linux cm

Hi

After getting to know with cm, i tried to use it under linux and gcl, 
but
the build crashes in utils2.lisp in setf-find-object line: setf 
(slot-value
element 'id) id), that SETF form can't be expanded.
CLisp and dos version works fine. The source is cm.tar.gz from ccrma.

Another question. Is it hard to put midi-output also in linux? Next code 
might
be as an example.

Any help appreciated.

- Matti


From: "Tobias Kunze" <tkunze@ulysses.Stanford.EDU>
Date: Mon, 9 Dec 1996 12:59:12 -0800
In-Reply-To: Matti Koskinen <mjkoskin@sci.fi>
        "linux cm" (Dec  9,  8:56pm)
Reply-To: t@ulysses.Stanford.EDU
To: Matti Koskinen <mjkoskin@sci.fi>, cmdist@ccrma.Stanford.EDU
Subject: Re: linux cm

 | After getting to know with cm, i tried to use it under
 | linux and gcl, but the build crashes in utils2.lisp in
 | setf-find-object line: setf (slot-value element 'id) id),
 | that SETF form can't be expanded.  CLisp and dos version
 | works fine. The source is cm.tar.gz from ccrma.

I don't know what the problem with the setf method is, but
in general you don't want to use gcl.  cm requires CLOS,
which gcl does not have.  As a result, you have to use pcl,
which is a pain.  But since you are running Linux, you
might as well get the free ACL as soon as it's available
later this month.  See http://www.franz.com for information.


 | Another question. Is it hard to put midi-output also in
 | linux? Next code might be as an example.

We are rewriting large parts of the midi code right now and
will tackle Linux real soon, I believe.


X-Sender: taube@ux1.cso.uiuc.edu
Date: Tue, 10 Dec 1996 08:26:57 -0600
To: cmdist@ccrma.Stanford.EDU
From: Rick Taube <taube@uiuc.edu>
Subject: Linux/ACL 4.3 

Franz Inc. recently announced that their Linux port of Allegro Common Lisp
4.3 will be FREE to educational users. Although CLM, CMN and CM already run
in ACL 4.3 there are still some issues that remain unclear (at least to
me...), for example Linux sound drivers and MIDI support under Linux.  But
i think its safe to say that Linux/ACL is very good news for people
interested in music, lisp and public domain software!

See http://www.franz.com/  for more information on their free offer.

-hkt


From: "Ludger Bruemmer" <ludi@folkwang.uni-essen.de>
Date: Wed, 11 Dec 1996 00:27:34 +0100
X-Mailer: Z-Mail (3.2.2 10apr95 MediaMail)
To: cmdist@ccrma.Stanford.EDU

Is the current cm Version not working on MCL 4.0?
I compiled cm on a PPC with 81 Mb Ram dying with the message
"out of memory" while only the OS was consuming 8 Mb.

Is there a workaround this?

The other problem is, that that Stella is not able to run RT directly on SGIs
since there is no rt.driver available like in the Next App. Of course it is no
problem to load the printed test.rt file and run rt by the guy. Is there a way
to run it directly?


ludi

=================================================================
Ludger Bruemmer
Hohenzollernstr. 66
45128 Essen Germany

++ 49 201 787823	Have a nice day!

ludi@zkm.de
ludi@ccrma.stanford.edu
ludi@folkwang.uni-essen.de
==================================================================


From: "Tobias Kunze" <tkunze@ulysses.Stanford.EDU>
Date: Tue, 10 Dec 1996 17:43:19 -0800
In-Reply-To: "Ludger Bruemmer" <ludi@folkwang.uni-essen.de> "" (Dec 11, 12:27am)
To: "Ludger Bruemmer" <ludi@folkwang.uni-essen.de>
Cc: cmdist@ccrma.Stanford.EDU

 | Is the current cm Version not working on MCL 4.0?

it is working.  maybe you have to assign more memory to the
mcl image itself (Cmd-i).

 | The other problem is, that that Stella is not able to run
 | RT directly on SGIs since there is no rt.driver available
 | like in the Next App. Of course it is no problem to load
 | the printed test.rt file and run rt by the guy. Is there a
 | way to run it directly?

not that I know of.  rt doesn't seem to accept cmdline options
either.  but why not ask Paul Lansky himself?  :)


From: michael theodore <michaelt@alice.music.yale.edu>
Subject: Windows binary?
To: cmdist@ccrma.Stanford.EDU
Date: Wed, 11 Dec 1996 16:34:38 -0500 (EST)

Hello again. The last time I tried to ask this I guess it
wasn't very clear. So, here it is:

*****************************************
Is there now, or are there any plans for in the future, a
binary for windows 95?
*****************************************

I hate Bill as much as the next guy, but it's not worth
it for me to install Linux on the family beast...
thanks,
Michael


Date: Thu, 12 Dec 1996 23:46:30 +0200 (MDT)
From: Anders Vinjar <anders.vinjar@notam.uio.no>
To: cmdist@ccrma.Stanford.EDU
Subject: CLM filter-design package
Mime-Version: 1.0

Wonderful aid found in 'fltdes.lisp'.  However, i have trouble with a
program which could prove to be very useful: 'design-IIR-9'.  I want this
to design good Butterworth bandpass-filters.

When trying this out with various arguments to the parameters, it just
gives me NIL back.  Has anyone a clue as to whats happening?  I dont have
any source of Parks&Burros around, and im not able to catch anything from
stepping through the thing.  

Btw., there were some minor typos in the file, Ive changed it according
to intuition in the diffs included below :)  Needs a look-over by some
qualified personell.


-anders

clm/fltdes.lisp

1314c1314
< 				       (- 1.0 (sqrt elp1-dn sm)))))
---
> 				       (- 1.0 (sqr (elp1-dn sm))))))
1316c1316
< 				    (- 1.0 (sqrt elp1-dn sm))))
---
> 				    (- 1.0 (sqr (elp1-dn sm)))))
1481c1481
<     (if (and (oddp parm-n2) (= parm-kf 3)) (setf k 1))
---
>     (if (and (odd parm-n2) (= parm-kf 3)) (setf k 1))



Date: Mon, 16 Dec 96 07:42:40 PST
From: bil (To: cmdist)
To: cmdist
Subject: CLM/Snd news

CLM and Snd can now communicate sounds (snd-sound and snd-edit
in CLM); with-sound :marks argument can set up marks for Snd;
CLM data can be displayed (even animated after a fashion) in
Snd with display and undisplay; break and trace work better
in CLM instruments; just-lisp versions can read RIFF files and
alaw data; peaks, info, save-marks commands added in Snd; also 
many minor Linux-related bugs fixed, etc.

dlocsig.html courtesy Anders Vinjar; an automatic accidental
bug fixed in CMN by Jin Choi; fltdes.lisp bugs fixed by
Anders Vinjar.


Date: Mon, 23 Dec 1996 20:08:57 +0200 (EET)
From: Matti Koskinen <root@sci.fi>
X-Sender: root@fingerprint
To: cmdist@ccrma.Stanford.EDU
Subject: Problems with linux common music & clisp

Hello

I changed to Linux and tried to use cm, but there seems to be a
small bug in either cm or clisp. cm uses clos::std-allocate-instance
and in my clisp there is no such function, but allocate-std-instance
instead. I changed the call in pkg.lisp to it, but then clisp gives
an error, that there are too few arguments. What is wrong?

- matti


Date: Mon, 30 Dec 1996 21:53:33 +0000
From: Charles Shehadi <cshehadi@panix.com>
To: cmdist <cmdist@ccrma.Stanford.EDU>
Subject: some questions

Hello, and thanks for your help in the past...

I have a three questions:

1.) Each time I boot Common Music, I have to load the
"pathname-translations.lisp" file which tells Common Music where on my
hard disk the "ccl" interfaces are.  Is there any way to have this file
load automatically when I boot up Common Music?  (likewise, there are
other files that I'd like to have loaded automatically when I boot).


2.) I borrowed some code that lets me display a picture in a
tool-palette window.  Here it is:

(defclass color-palette (ccl:windoid)
  ((pict-hdl :initarg :pict-hdl :initform nil :reader pict-hdl)))

(defun show-color-palette ()
  (let* ((pict-hdl (ignore-errors
                    (ccl:with-open-resource-file (refnum
"Files:Schoolwork:Thesis:Prototype:proto.rsrc"
                                                        
:if-does-not-exist nil)
                      (let ((pict-hdl (#_Get1Resource :|PICT| 129)))
                        (unless (or (ccl:%null-ptr-p pict-hdl)
                                    (ccl:%null-ptr-p (ccl:%get-ptr
pict-hdl)))
                          (#_DetachResource pict-hdl)
                          pict-hdl)))))
         (height (if pict-hdl 64 10)))
    (make-instance 'color-palette
      :view-size (ccl:make-point 104 height)
      :pict-hdl pict-hdl)))

It works fine as long as I'm in the "ccl" package.  If I try it in the
"cm" package, I get no errors and it displays the windoid, but doesn't
load the PICT resource (the palette shows up with no picture in it).

Why would changing packages prevent my PICT resource from loading?


3.) Is there any way around writing "ccl:" before every call to a mcl
interface function.  I tried (use-package 'ccl) but I got an error that
there are too many conflicting symbols.


-Charlie


X-Sender: taube@ux1.cso.uiuc.edu
Date: Tue, 31 Dec 1996 15:50:44 -0800
To: Charles Shehadi <cshehadi@panix.com>
From: taube@uiuc.edu (Rick Taube)
Subject: Re: some questions
Cc: cmdist@ccrma.Stanford.EDU


>1.) Each time I boot Common Music, I have to load the
>"pathname-translations.lisp" file which tells Common Music where on my
>hard disk the "ccl" interfaces are.  Is there any way to have this file
>load automatically when I boot up Common Music?  (likewise, there are
>other files that I'd like to have loaded automatically when I boot).

Yes. CM will autoload a file called "cminit.lisp" or "cminit.fasl" if you
put it in the same directory as the CM Image.  If you dont want to put it
there, you can specify some other directory for "site" files  when you
build CM using make-cm.lisp

>Why would changing packages prevent my PICT resource from loading?

dunno off hand. make sure that the listener and the edit buffer are set to
CM. then prefix all the ccl functions with their package prefix and it
should work since that is what cm itself does. or send me a small buggy
version and ill send you the fix. see the next answer for more info.

>3.) Is there any way around writing "ccl:" before every call to a mcl
>interface function.  I tried (use-package 'ccl) but I got an error that
>there are too many conflicting symbols.

Yes, you can import just the set of symbols you need in one call to IMPORT.
see common lisp's documentation on IMPORT. Make sure you import the symbols
BEFORE you use them in your code.  it might be good to add this to your
cminit.lisp file, for example.