[CM] a current CM class hierarchy?

Han Shin Kim manseh1@yahoo.de
Tue, 7 Dec 2004 00:04:40 +0100


I appreciate your detailed answer.
It is very helpful.

2004. 12. 06, Montag, 09:42 Uhr, Rick Taube ۼ:

>>
>> Where can one find the current CM class hierarchy tree?
>>
>> I have one but it seems too old.
>
> The reason that I dont include one is because its dynamic -- the class 
> tree is augmented depending o nwhat software you have loaded. for 
> example, every time you load a clm insrument you get a new class, same 
> with cmn, midishare and so on. It also depends on what version of cm 
> you are using.
>
> Here is a function you can use to return a list of subclasses.  The 
> CAR of every list is a superclass of the rest of the classes in that 
> list:
> ;---
> (in-package :cm)
>
> (defun class-tree (root)
>   (let ((subs #+clisp (clos::class-direct-subclasses root)
>               #+openmcl (ccl::class-direct-subclasses root)
>               #+sbcl (sb-mop:class-direct-subclasses root))
>         (name (class-name root)))
>     (if (null subs)
>       name
>       (cons name
>             (loop for c in subs
>                collect (class-tree c))))))
> ;---
>
> The three main root classes in cm are EVENT, CONTAINER and 
> EVENT-STREAM. This is what it looks like in cm-2.5.0/openmcl with 
> nothing special laoded:
>
> ? (class-tree (find-class 'event))
> (EVENT CMN MIDI (MIDI-EVENT (MIDI-META-EVENT MIDI-SEQUENCER-EVENT 
> MIDI-KEY-SIGNATURE MIDI-TIME-SIGNATURE MIDI-SMPTE-OFFSET 
> MIDI-TEMPO-CHANGE MIDI-EOT MIDI-TEXT-EVENT MIDI-SEQUENCE-NUMBER) 
> MIDI-SYSTEM-EVENT (MIDI-CHANNEL-EVENT MIDI-PITCH-BEND 
> MIDI-CHANNEL-PRESSURE MIDI-PROGRAM-CHANGE MIDI-CONTROL-CHANGE 
> MIDI-KEY-PRESSURE MIDI-NOTE-OFF MIDI-NOTE-ON)) F I)
>
> ? (class-tree (find-class 'container))
> (CONTAINER (EVENT-STREAM CMN-STREAM (MIDI-STREAM (MIDISHARE-STREAM 
> PLAYER-STREAM MIDI-PORT) MIDI-FILE-STREAM) CLM-AUDIO-STREAM CLM-STREAM 
> SCO-STREAM) TRANSPOSER (PATTERN COPIER JOIN CHORD RANGE REWRITE 
> FUNCALL ACCUMULATION GRAPH MARKOV RANDOM LINE PALINDROME (CYCLE 
> ROTATION HEAP)) (SCALE MODE TUNING) SEQ)
>
> ? (class-tree (find-class 'event-stream))
> (EVENT-STREAM CMN-STREAM (MIDI-STREAM (MIDISHARE-STREAM PLAYER-STREAM 
> MIDI-PORT) MIDI-FILE-STREAM) CLM-AUDIO-STREAM CLM-STREAM SCO-STREAM)
>
> ?
> _______________________________________________
> Cmdist mailing list
> Cmdist@ccrma.stanford.edu
> http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist
>
>
---------------------------------------------------------------------
A korean community for Software Synthesizer & Programming
http://cafe.daum.net/klangsynthese

DOT.