[CM] MCL 5 with CLM / openmcl plotters?

Orm Finnendahl finnendahl at folkwang-hochschule.de
Thu Oct 16 10:20:37 PDT 2003


Am 15. Oktober 2003, 12:23 Uhr (-0500) schrieb Rick Taube:
> that sounds interesting! can you post a .png what it looks like? 

I attached a couple of pngs (the ones with "n" appended to the name
are in reverse video which I prefer for online viewing).

I hope it's clear, how it works. An example how to create it is given
below the mail.

> maybe this or gunplot should become a standard output syntax in cm.

That would be great. I actually wanted to do an io class definition,
but didn't have the time to find out how to do that properly...

> On a related note, a student of mine has written a nice lisp ->
> Music XML package. xml expressions are output to files and then
> input into Finale via some shareware plugin, along the lines of what
> IRCAM does. His orchestral scores look quite nice.

I'm very interested. Can you send me some more information?  I worked
on a custom export system to Finale but didn't finish it yet. I'd be
very interested to see how it works. Is it possible to control
beaming, measure-widths, timesigs, note-expressions and such from
lisp?

Let me know if somebody is interested in the sources. It is not
exactly pretty code, but fairly readable I think...

--
Orm


-------------------------------------------------------------------------
; the events contain the parameters '(pitch time duration depth
; channel/color amp). Events can be grouped together recursively in
; lists giving nested groups of grapical objects in xfig.

(define *events* 
  '((59 0 1 1 4 76) (27.3 0.25 3.125 1 1 76) (43.7 0.5 1 1 2 76)
    (62 2.125 1 1 2 76) (46 3.25 0.25 1 3 76) (30 2.25 3.25 1 0 76)
    (68 3.75  0.5 1 0 76) (52 4.0 1.75 1 4 76) (36 4.25 1.5 1 4 76)))

; A time signature list, represented in the graphical output as vertical lines.
; Barlines are thicker than beatlines. In addition a tempomap can be 
; superimposed to keep the graphics in sync with the timeline.

(define *timesiglist* 
        (timesig-to-xfig 
          '((4 4) (3 4) (5 8) (7 8) (4 4) (4 4) (4 4) (3 4) (1 16) (1 16))))

; make a timeline of 10 seconds with ticks on every second

(define *timeline* 
 (make-zeitlinie :secs 10 :view '(#t #t #t #t #t))

; label the timeline (:view is a flaglist for the timeunits to label:
; (full_minutes half_minutes 10_seconds 5_seconds every_second)
; (#t #t #t #t #f) thus labels every five seconds

(define *timelinelabel*
 (make-zeitbeschriftung :secs 10 :view '(#t #t #t #t #f)))

; here is the procedure which generates the xfig file:

(create-xfig-file
 (format #f "~a.fig" fname)  ; filename
 (list
  *events*      ; this alone gives test-1.png
  *notensystem* ; a list containing the staff system lines (test-2.png)
  *timesiglist*  ; including this gives test-3.png
  *timeline*    ; including this gives test-4.png
  *timelinelabel* ; including this gives test-5.png
 )
 :linewidth *xfig-width*
 :dur #t
)

the second argument to create-xfig-file is a list with all items to
display. It is evaluated recursively and nested lists give nested
groups of objects in xfig (that's very handy for viewing and editing).

--------------------------------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: png-examples.tgz
Type: application/x-gtar
Size: 13622 bytes
Desc: not available
URL: <https://cm-mail.stanford.edu/pipermail/cmdist/attachments/20031016/fd1cd8cc/attachment.gtar>


More information about the Cmdist mailing list