[CM] Notes from the Metalevel text
Heinrich Taube
taube at uiuc.edu
Thu May 7 08:18:16 PDT 2009
is this an exe you downloaded or did you build it recently from svn
sources?
If the former i could make a "beta" of the current svn and post it on
pinhead.
On May 7, 2009, at 9:29 AM, Randolph Latimer wrote:
> Is it possible that the Windows version has bugs as far as loading scm
> progs from within cm?
>
> I'm getting strange error messages for simple files from Chap 7.
>
> For example..
> chap7.scm (I think that's an ok file name?)
>
> (define x 1)
>
> (define (scale-hz hz mul)
> (* hz (expt 2 mul))) <--- If I save this, then load (see
> below) from cm, this may work ok, but when
> I add in the next function,
> then
> resave, I may get error messages
>
> (define lowest-freq 6.875)
>
> (define (keynum->hertz knum)
> (* lowest-freq (expt 2 (/ (+ knum 3) 12))))
>
>
>
> cm>(load "chap7.scm") <--- sometimes loads ok, sometimes gives
> strange
> error messages
>
> I'm using Vim, but seems to act oddly also with xemacs
>
> I'm in Windows
>
> Do you think the cm for windows may be a little buggy, loading scm
> files
> this way? or maybe it's something I'm doing?
>
>
>
>
> On Thu, 7 May 2009 08:29:07 -0500, Heinrich Taube <taube at uiuc.edu>
> wrote:
>> On May 7, 2009, at 7:39 AM, Randolph Latimer wrote:
>>
>>> Okay, thanks for the update. I'd prefer to keep with CM3, keep
>>> current.
>>> Perhaps there are equivalent functions/variables in CM3 for CM2
>>> items,
>>> such as
>>> (pwd) -> (cwd) and (cd) -> (chdir)
>>
>> i guess maybe i should add the old names back, this wasnt intended to
>> change. for now you can do
>> (define pwd cwd)
>> (define cd chdir)
>>
>>
>>> let me know if there are equivalents to *scale*, (hertz..)
>>> (keynum...)
>>
>> in general cm3 names are terser (you want to keep typing down when
>> you
>> send things interactively )
>>
>> hertz -> hz
>> keynum -> key
>>
>> you dont need *scale* anymore, a scale is just a list of (probably
>> floating point) key numbers. if you want to define your own scales
>> you
>> can use the handy 'scale' function, for example this will define a
>> just major scale on middle C over two octaves (15 steps):
>>
>> (define just-c-major
>> (let ((just-major '(9/8 10/9 16/15 9/8 10/9 9/8 16/15)))
>> (scale 15 60 (ratio->steps just-major)))
>>
>> since a scale is list you can do anything you want with it, eg
>>
>> (list-ref just-c-major 7)
>> (pick just-c-major)
>> (make-cycle just-c-major)
>>
>>> (new...)
>>
>> there are no objects. just use lists to hold your data. to send data
>> somewhere use one of the send methods or its underlyin function, eg
>>
>> (mp:midi :key 90)
>> (send "mp:midi" :key (between 60 90))
>>
>>
>>> These are nice examples in the text, it'd be good to be able to keep
>>> similar examples, just update the syntax
>>
>>
>> its on my todo list, but unfortunately that list is infinately long.
>> ill do some this summer, if you figure things out send them to me
>> so i
>> dont have to do it
More information about the Cmdist
mailing list