[CM] translating spirals into music CLM

Landspeedrecord landspeedrecord@gmail.com
Tue, 24 Jul 2007 20:56:23 -0400


I don't know if it is moot at this point, but I have been thinking
about music spiraling and shephard tones were the first thing I
thought of, but I rejected it as an analog because I felt they aren't
really a spiral any more than watching the stripes on a barber pole
twist around is.

Since then I have not come up with much except that it could be done
using panning and volume/reverb (with a little doppler effect to add
spice?) - this would simulate a circular motion through the listening
field in front of the listener with the volume rising on on pass from
left to right and falling on the trip back from right to left.  Reverb
would rise as the volume fell to simulate distance from the listener
as the sound was "receeding".

The problem is there are lots of musical parameters that can be
assigned to x and y axes but very few that together imply
"directionality" which seems to me to be a necessary component of
visually perceiving a spiral.  As a spiral is drawn in 2D the eye
doesn't see it as two seperate orthagonal vectors but as one
contracting circular movement around a central point.

Blah blah blah.  I'm done ranting.  I am just bugged because I haven't
made much headway on the idea.  Any thoughts or ideas anyone can throw
my way?
On 7/12/07, Juan I Reyes <juanig@ccrma.stanford.edu> wrote:
>
> > There's also an example of shepard tones in the ws.scm section
> > of sndscm.html, complete with a purty picture that took me about 10
> > times longer to make than the sound.
>
> Here is my CLM rendition of Shepard Tones based on Bill's ws.scm and
> from Charles Dodge's  Computer Music text.
>
> (definstrument shepard (beg dur amp &key
>                             (incr .000001)
>                             )
>   (let* ((start (floor (* beg *srate*)))
>          (end (+ start (floor (* dur *srate*))))
>          (x 0.0)
>          (arr (make-array 12))) ;; we'll create  a 12 oscil bank
>     ;;
>     (do ((i 0 (1+ i)))          ;; initialize oscils
>         ((= i 12))
>       (setf (aref arr i) (make-oscil :frequency 0.0)) )
>     ;;
>     (run
>      (loop for i from start to end do
>        (let ((y 0.00)
>              (oscbank 0.0))
>          ;; sum signal of twelve oscillators
>          (do ((i 0 (1+ i)))
>              ((= i (length arr)))
>            ;; get amplitude and oscillator phase offset
>            (let ((phoffset (+ x (/ i 12))))
>              (if (> phoffset 1) (setf phoffset (- phoffset 1)))
>              (setf y (- 4.0 (* 8.0 phoffset)))
>              (incf oscbank (* (exp (* -0.5 y y))
>                           (oscil (aref arr i)
>                                  (hz->radians (expt 2.0 (*  (- 1 phoffset) 12.0))))))
>                                   ;; to go up        ;;;(*  phoffset 12.0)
>              ))
>          (incf x incr)
>          (outa i (* amp oscbank)) )))
>     ))
>
> ;;;(with-sound () (shepard 0 10 0.1))
>
> _______________________________________________
> Cmdist mailing list
> Cmdist@ccrma.stanford.edu
> http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist
>