Subject: MAX Digest - 2 Feb 1999 to 3 Feb 1999 - Special issue (#1999-40)
Date: Wed, 3 Feb 1999 14:11:41 -0500
From: Automatic digest processor 
Reply-To: MAX - Interactive Music/Multimedia Standard Environments
     
To: Recipients of MAX digests 

There are 13 messages totalling 712 lines in this issue.

Topics in this special issue:

  1. MSP recording to disk yields audible pops and clicks (2)
  2. shepard tones (2)
  3. Max and graphics and teaching and programming
  4. MAX Digest - 1 Feb 1999 to 2 Feb 1999 (#1999-39) (3)
  5. Copyright of MAX Patches and Objects
  6. Possible bug in pow~
  7. MSP-FM
  8. begin~ again..?
  9. count range, copyright, shephard tones

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

Date:    Tue, 2 Feb 1999 21:44:19 -0800
From:    David Zicarelli 
Subject: Re: MSP recording to disk yields audible pops and clicks

Philip Galanter  writes:

>When the patch is not recording to disk it works just fine.  When it is
>recording to disk I get tiny pops and clicks along with the expected signal
>in both the audio out and the soundfile.  The distortions are unpredictable
>and infrequent, maybe one every 15-20 seconds.  I've put Max into
>Overdrive, turned off Appletalk, and the Mac in question is not on a
>network.

Adjusting the buffer size of the sfrecord~ object (using the
optional second argument) may help. Perhaps a size of 32768 or
65536.

Another thing is that the interrupt latency of IDE hard drives
is horrible, on the order of a couple of milliseconds. It might
be that the same patch using a SCSI drive wouldn't have these
clicks.

David Z.

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

Date:    Wed, 3 Feb 1999 02:46:43 +0000
From:    rb 
Subject: Re: shepard tones

david stevens  wrote:

> does anyone have a ready-made simple shepard tone generator?
>

"th0nk II" will do shepard tones

(but i'm not sure if it's released yet.)

contact:

arjen van der schoot @ www.audioease.com

for more details.

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

Date:    Wed, 3 Feb 1999 00:11:41 -0800
From:    dudas 
Subject: Max and graphics and teaching and programming

regarding Elliot Anderson's and Jeff Burns' graphics and teaching and
programming thread:

All of the necessary info to make a really cool graphics manipulation
system for Max is available for a potentially interested programmer to
begin. Furthermore, there is even a good point of departure in the form of
Mark Danks' GEM (for Pd and previously for Max0.26 on the SGI).

A year or so ago, I met someone who was teaching graphics programming at a
university in Paris, and who seemed quite interested in using max as a kind
of "shell" to teach graphical dsp.(It certainly would be easier, not to
mention more pedagogical, for students to concentrate on a specific task if
the additional complication of creating an entire application around this
task were removed.) This was a great idea, but I don't know if he ever
managed to get it off the ground.

I don't want to seem like a Max evangelist, but it would be nice if those
in academia could attempt to spread the word of Max beyond the music
department in the vain hope that maybe someone would get interested in
possible visual development...

-R

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

Date:    Wed, 3 Feb 1999 10:48:24 +0100
From:    Georg Hajdu 
Subject: Re: MAX Digest - 1 Feb 1999 to 2 Feb 1999 (#1999-39)

>------------------------------
>
>Date:    Tue, 2 Feb 1999 15:19:42 +0000
>From:    david stevens 
>Subject: shepard tones
>
>hi all,
>
>does anyone have a ready-made simple shepard tone generator?
>
>or can anyone tell me what i need to know to go about making one?
>
>
>thanks
>
>david

Here's a simple Shepard-tone generator for MSP. Feel free to modify it
according to your own needs.

Georg

max v2;
#N vpatcher 45 42 722 658;
#P message 163 170 27 196617 stop;
#P message 151 538 65 196617 startwindow;
#P message 596 438 48 196617 1. \, 0. 30;
#P newex 211 79 48 196617 t 1 b b;
#P message 547 439 48 196617 0. \, 1. 30;
#P newex 547 459 30 196617 line~;
#P newex 151 518 48 196617 del 1000;
#P newex 151 498 45 196617 loadbang;
#P message 117 105 14 196617 1;
#P newex 117 80 57 196617 t b b b;
#P newex 117 58 104 196617 sel 1;
#P toggle 117 12 42 0;
#P newex 117 132 27 196617 gate;
#P message 117 153 78 196617 1200 \, 0 10000;
#P newex 117 210 38 196617 / 100.;
#P newex 117 190 48 196617 line 0 50;
#P flonum 117 232 35 9 0 0 0 3;
#P newex 255 189 43 196617 s Kurve;
#P user umenu 215 166 50 131111 1 64;
#X add Glocke;
#X add Glocke2;
#N vtable 150 532 160 777 315 16 100 Glocke;
#T set 0 1 1 1 1 1 1 1 1 1 2 2 3 3 3 3 4 4 4 4 5 5 5 5 5 6 6 7 7 7 7 8 9 10
10 12 13 15 16 18 19 21 25 27 33 35 37 41 44 52 56 61 64 66 67 68 70 71 72
73 74 74 75 75 76 76 77 77 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78
77 77 77 77 76 76 75 74 74 73 72 70 68 66 65 62 59 55 51 47 43 41 37 35 32
29 27 27 25 23 21 20 17 16 14 13 12 11 11 10 8 8 7 6 6;
#T set 128 6 5 5 4 4 4 4 3 2 2 2 1 1 1 0 0 0 0 0 0 0 0;
#P newobj 216 210 62 196617 table Glocke;
#N vtable 150 528 350 766 499 16 100 Glocke2;
#T set 0 1 2 3 4 5 7 9 11 12 15 17 19 21 25 28 31 35 48 50 53 55 57 61 64
66 68 70 72 74 75 75 77 77 77 78 79 80 80 81 81 81 81 81 81 81 81 81 81 80
80 80 80 78 78 77 76 74 74 74 72 71 69 68 67 65 64 63 61 60 58 55 53 52 50
50 49 46 45 44 43 41 40 40 37 37 36 34 34 33 31 31 30 30 29 29 28 27 26 25
24 22 22 21 21 20 20 19 19 18 18 18 18 17 17 16 16 16 15 15 14 14 13 13 13
12 12 12 11;
#T set 128 11 11 11 10 10 10 9 9 9 8 8 8 8 8 7 7 6 6 5 5 5 5;
#P newobj 216 235 68 196617 table Glocke2;
#P newex 289 538 33 196617 *~ 1.;
#P newex 487 424 45 196617 route 11;
#P newex 487 462 29 196617 osc~;
#P newex 450 439 29 196617 osc~;
#P newex 413 461 29 196617 osc~;
#P newex 376 440 29 196617 osc~;
#P newex 339 468 29 196617 osc~;
#P newex 302 441 29 196617 osc~;
#P newex 265 461 29 196617 osc~;
#P newex 228 439 29 196617 osc~;
#P newex 191 465 29 196617 osc~;
#P newex 154 425 29 196617 osc~;
#P newex 117 451 29 196617 osc~;
#P newex 117 257 40 196617 t b b 1.;
#P newex 117 310 27 196617 - 1;
#P newex 117 375 49 196617 pack 1 1.;
#P newex 117 333 30 196617 t 1 1;
#P newex 117 400 389 196617 route 1 2 3 4 5 6 7 8 9 10;
#P newex 156 354 115 196617 expr $f2*pow( 2\\\,$i1);
#P newex 117 285 40 196617 Uzi 11;
#P user ezdac~ 289 565 333 598 29952016;
#P newex 261 325 160 196617 expr 8.175797*pow(2\\\,$f1/12);
#P connect 31 0 32 0;
#P connect 32 0 33 0;
#P fasten 33 2 34 0 168 102 122 102;
#P fasten 39 0 30 0 216 127 122 127;
#P connect 34 0 30 0;
#P connect 30 0 29 0;
#P connect 42 0 27 0;
#P connect 29 0 27 0;
#P connect 27 0 28 0;
#P connect 28 0 26 0;
#P connect 26 0 8 0;
#P connect 8 1 2 0;
#P connect 2 2 7 0;
#P connect 7 0 5 0;
#P connect 5 0 6 0;
#P connect 6 0 4 0;
#P connect 4 0 9 0;
#P connect 27 1 30 1;
#P fasten 33 0 30 1 122 102 139 102;
#P fasten 35 0 36 0 155 515;
#P connect 36 0 41 0;
#P connect 4 1 10 0;
#P connect 5 1 3 0;
#P connect 3 0 6 1;
#P fasten 39 2 42 0 254 136 168 136;
#P connect 4 2 11 0;
#P connect 32 1 39 0;
#P connect 4 3 12 0;
#P connect 24 1 25 0;
#P connect 8 2 0 0;
#P connect 0 0 3 1;
#P connect 4 4 13 0;
#P connect 19 0 21 0;
#P connect 18 0 21 0;
#P connect 17 0 21 0;
#P connect 16 0 21 0;
#P connect 15 0 21 0;
#P connect 14 0 21 0;
#P connect 13 0 21 0;
#P connect 12 0 21 0;
#P connect 11 0 21 0;
#P connect 10 0 21 0;
#P connect 9 0 21 0;
#P connect 41 0 1 0;
#P connect 21 0 1 0;
#P connect 4 5 14 0;
#P connect 37 0 21 1;
#P connect 4 6 15 0;
#P connect 4 7 16 0;
#P connect 4 8 17 0;
#P connect 4 9 18 0;
#P connect 4 10 20 0;
#P connect 20 0 19 0;
#P fasten 33 1 38 0 145 107 552 107;
#P connect 40 0 37 0;
#P connect 38 0 37 0;
#P fasten 39 1 40 0 235 118 601 118;
#P pop;

max v2;
#N vpatcher 590 44 870 327;
#P newex 136 56 43 196617 r Kurve;
#P newex 136 77 70 196617 prepend refer;
#P newex 104 129 44 196617 / 1000.;
#P newex 104 77 29 196617 ftom;
#P newex 29 64 27 196617 t f f;
#N vtable 150 532 160 777 315 16 100 Glocke;
#T set 0 1 1 1 1 1 1 1 1 1 2 2 3 3 3 3 4 4 4 4 5 5 5 5 5 6 6 7 7 7 7 8 9 10
10 12 13 15 16 18 19 21 25 27 33 35 37 41 44 52 56 61 64 66 67 68 70 71 72
73 74 74 75 75 76 76 77 77 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78
77 77 77 77 76 76 75 74 74 73 72 70 68 66 65 62 59 55 51 47 43 41 37 35 32
29 27 27 25 23 21 20 17 16 14 13 12 11 11 10 8 8 7 6 6;
#T set 128 6 5 5 4 4 4 4 3 2 2 2 1 1 1 0 0 0 0 0 0 0 0;
#P newobj 104 106 62 196617 table Glocke;
#P outlet 29 196 15 0;
#P inlet 29 42 15 0;
#P newex 29 146 38 196617 cycle~;
#P newex 29 172 53 196617 *~ 0.1;
#P connect 2 0 5 0;
#P connect 5 0 1 0;
#P connect 1 0 0 0;
#P connect 0 0 3 0;
#P connect 7 0 0 1;
#P connect 5 1 6 0;
#P connect 8 0 4 0;
#P connect 6 0 4 0;
#P connect 4 0 7 0;
#P connect 9 0 8 0;
#P pop;

***************************************************
 Dr. Georg Hajdu

Hochschule f=FCr Musik Detmold,
Abteilung M=FCnster
Ludgeriplatz 1
D-48151 Muenster

e-mail: hajdu@uni-muenster.de
http://www.uni-muenster.de/Musikhochschule/Dozenten/Hajdu/Hajdu.html
****************************************************

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

Date:    Wed, 3 Feb 1999 11:42:14 +0100
From:    Peter Castine 
Subject: Re: Copyright of MAX Patches and Objects

On around 2-2-99 21:07, Thorsten said something like:

>What is the right behavior on using Patches and Objects (MAX and MSP)
>from other People in own Projects? (NON COMMERCIAL)
>Is there a FAQ or a Guideline?

No real guidelines other than applicable copyright law (in Thorsten's and
my case, Gesetz =FCber Urheberrecht und verwandte Schutzrechte of 9
September 1965, BGBl. I S. 1273, with amendments, etc., usw., ...).

Most patches and objects are distributed with some sort of legal notice
specifying any limitations. It would be possible for someone to upload a
patcher or external to a publically accessible FTP site and then say "all
rights reserved", but that would be rather counter-productive, nicht
wahr? I think it would be a safe assumption that anything you've found on
an FTP site is cleared for non-commercial use (and probably even for use
within commercial projects). But you should check the accompanying
documentation.

If the accompanying documentation doesn't cover usage, you _could_ argue
that the mere fact of placing software on an FTP site implies permission
to use. But it would probably be a better strategy to contact the
copyright holder (in almost all cases, the author) to make sure.

Hope this helps,

Peter

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

Date:    Wed, 3 Feb 1999 16:14:46 +0000
From:    Trond Lossius 
Subject: Re: Possible bug in pow~

The bug was confirmed by david Z., and I received a new version of pow~
this morning. According to him the revised version will be included in a
future update. Thank you very much David!

Also thanks to Manual Poletti for taking the time to check it out.

In the meantime: If someone struggles to get vibrato working when using
pow~ as suggested in the MSP manual, this won't work properly due to the
problem in pow~.

Trond L.

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

Date:    Wed, 3 Feb 1999 09:24:32 -0500
From:    "one Cointreau, on ice...." 
Subject: MSP-FM

Some backchannel mail to Bob Falesch has resulted in a project I'd like
to invite your participation in.

A portion of my life outside of the confines of this list is involved with
hosting a 2-hour program on Sunday evenings on the Madison equivalent of
KPFA/KPFK of various sorts of musics from the end of the century. I've done
so for 12 or 13 years, and have probably aired some of your work in that
time, come to think of it.

http://www.msn.fullfeed.com/~gtaylor/RTQE.html has a year of playlists
online which should give you an idea of precisely what I do. Test your own
mileage.

One of the things that my listeners have been asking for of late is a
return to the halcyon days when I was doing more "theme" programs (non
12TET stuff, interview with David Zicarelli, the "All-listener contribution
show", etc.). The specific proposals on the table right now are a show of
historical recordings of the Futurists, a John Cage show, and a program
based on the 3-disc Ground Zero "Consume Red" project.

In the middle of my note to Bob, I suddenly realized that I could put
together an all MSP program or two. Yikes, I thought....what a cool idea!

So here's the deal: I'm going to start planning an all-MSP program,
composed of as wide a variety and selection of work by as many people as I
can. Since I don't, as a general rule, spend hours blathering on on air in
ways which sell me as one of those Public Radio-style "experts," the plan
would be to introduce the program with a description of what Max/MSP *is*,
and as brief an introduction to the works as I can. I'd load the program's
web pages with the usual plethora of links to composers and stuff on
Max/MSP. Usually, I announce what people have heard *after* they hear it
(it short-circuits their expectations nicely, I find), but I might have to
make an exception. By having done the work on-air for as long as I have,
I've got an audience who are more than willing to take their questions
off-line (and a local cadre of students who have kept asking about who
might teach it locally probably wouldn't hurt). There's some local
community building in my mind here, too.

If there's enough material for more than one program (and enough variety,
natch), I'll do two programs - probably spread a month or so apart.

There are some folks who feel that airplay is a waste of time, and some
folks for whom is matters. That's your call - I'm only a curator sitting by
a mike. If you'd be interested in contributing to such an undertaking,
please contact me via email (I may already have one or more of your
recordings). This is an open-ended solicitation in terms of content *and*
style.

Thanks for your time and attention.

met vriendelijke groeten,
Greg

--
Knowledge is not enough|Science is not enough|Love is dreaming this equation
Gregory Taylor|host, RTQE|WORT-FM, Madison, WI|www.msn.fullfeed.com/~gtaylor

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

Date:    Wed, 3 Feb 1999 15:35:13 +0000
From:    david stevens 
Subject: begin~ again..?

hi

first, thanks for the response to my Shepard tone request - I now have 2
versions of a tone generator to play with. (The generosity of the people on
this
list is wonderful!)

ok - my patcher is becoming a behemoth! (isn't max/msp addictive!) There are
a
couple of patchers in the instrument that I want to have available, but not
necessarily use all the time. And I'm really at the limit of what my
processor
is capable of - so I want to use begin~ to shut off parts of the system that
are
not in use.

the two bits that i particularly want to switch in and out are both patcher
objects. one is a looper built from a record~/buffer~/groove~ combination,
and
the other is a tapin~/tapout~ combination. Each subpatch has an audio in and
out, all the rest of the controls are accessed by opening the subpatch (via
pcontrol).

i've tried putting the begin~/selector~ combination on the in and out ports
of
the subpatchs, and i've tried putting them inside the actual patchers. In
either
case, turning off the subpatch (using the selector~) has no noticeable
effect on
the amount of processor being used (in the dsp window).

it may be that you can't use begin in a discontinuous network like a
record~/buffer~ (etc) setup, or it may be that it's very important exactly
where
you connect begin~, or perhaps more than one begin~ is needed?????

anyone have any idea about this one??

thanks

david

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

Date:    Wed, 3 Feb 1999 12:50:11 -0500
From:    Philip Galanter 
Subject: Re: MSP recording to disk yields audible pops and clicks

Thanks I'll give this a try.  By the way the IDE drives work fine for
DV/firewire recording and playback, but I guess that isn't burdened with
having to deal with interrupts....

Phil

>Philip Galanter  writes:
>
>>When the patch is not recording to disk it works just fine.  When it is
>>recording to disk I get tiny pops and clicks along with the expected
signal
>>in both the audio out and the soundfile.  The distortions are
unpredictable
>>and infrequent, maybe one every 15-20 seconds.  I've put Max into
>>Overdrive, turned off Appletalk, and the Mac in question is not on a
>>network.
>
>Adjusting the buffer size of the sfrecord~ object (using the
>optional second argument) may help. Perhaps a size of 32768 or
>65536.
>
>Another thing is that the interrupt latency of IDE hard drives
>is horrible, on the order of a couple of milliseconds. It might
>be that the same patch using a SCSI drive wouldn't have these
>clicks.
>
>David Z.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Philip Galanter         New York University     phone:     212-998-3041
Associate Director      251 Mercer                fax:     212-995-4120
for Arts Technology     New York, NY 10012   internet: galanter@nyu.edu

     N Y U   A c a d e m i c   C o m p u t i n g   F a c i l i t y

Info, resources, art gallery, and more...       http://www.nyu.edu/atg/

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

Date:    Wed, 3 Feb 1999 09:38:34 -0800
From:    Jon Christopher Nelson 
Subject: Re: MAX Digest - 1 Feb 1999 to 2 Feb 1999 (#1999-39)

Please post and distribute:

No Deadline Announced

MoUNTain Music Institute, CEMI Computer Music Workshop
Intensive Csound, July 13-17, 1999
Jon Christopher Nelson, faculty

Study software synthesis, sound analysis/resynthesis techniques, and
digital signal processing through learning Csound in beautiful Crested
Butte, Colorado.  The workshop will be limited to 15 participants to
ensure ample time for hands-on experience working with Csound.  The
workshop fees are $750.00 for professionals and $500.00 for students.
Housing options range from camping at free campsites to reduced rate
housing ($75.00 per night) at the Crested Butte Mountain Resort.  For
a detailed outline of the topics covered and application information
contact:

Jon Christopher Nelson, Director
CEMI: Center for Experimental Music and Intermedia
University of North Texas College of Music
PO Box 311367
Denton, TX 76203-1367
ph. (940) 369-7531
jnelson@sndart.cemi.unt.edu
http://www.music.unt.edu/CEMI/cb

Suggested Deadline:  March 15, 1999

MoUNTain Music Institute, CEMI Computer Music Workshop
Electroacoustic Composers Conference, July 20-24, 1999
Joseph Klein, Cort Lippe, Jon Christopher Nelson, Russell Pinkston and
Phil Winsor, faculty

Selected composers will enjoy a performance of one of their
electroacoustic works by the University of North Texas NOVA
contemporary music ensemble at the Crested Butte Mountain Resort.  In
addition, participants will enjoy master classes, seminars and panel
discussions with the Electroacoustic Composers Conference faculty.
The workshop fee is $600.00.  Housing options range from camping at
free campsites to reduced rate housing ($75.00 per night) at the
Crested Butte Mountain Resort.  Although no deadline is posted,
applicants whose works include live performers are encouraged to apply
by March 15, 1999.  For more detailed Electroacoustic Composers
Conference information and application materials contact:

Jon Christopher Nelson, Director
CEMI: Center for Experimental Music and Intermedia
University of North Texas College of Music
PO Box 311367
Denton, TX 76203-1367
ph. (940) 369-7531
jnelson@sndart.cemi.unt.edu
http://www.music.unt.edu/CEMI/cb

No Deadline Announced

MoUNTain Music Institute, CEMI Computer Music Workshop
Automated Music Composition, July 27-31, 1999
Phil Winsor, faculty

Study platform-independent algorithmic composition with one of the
leading experts in automated composition amidst the splendor of
Crested Butte, Colorado.  This workshop will be limited to 15
participants who will use KYMA, MAX, and other programming
environments.  The workshop fees are $750.00 for professionals and
$500.00 for students.  Housing options range from camping at free
campsites to reduced rate housing ($75.00 per night) at the Crested
Butte Mountain Resort.  For a detailed outline of the topics covered
and application information contact:

Jon Christopher Nelson, Director
CEMI: Center for Experimental Music and Intermedia
University of North Texas College of Music
PO Box 311367
Denton, TX 76203-1367
ph. (940) 369-7531
jnelson@sndart.cemi.unt.edu
http://www.music.unt.edu/CEMI/cb

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

Date:    Wed, 3 Feb 1999 10:39:53 -0800
From:    Peter Elsea 
Subject: count range, copyright, shephard tones

>How can change the range of the counter in real time ?
If you use Lcount instead of counter, You can change the start, end,
increment and next output with a single list.

>What is the right behavior on using Patches and Objects (MAX and MSP)
>from other People in own Projects? (NON COMMERCIAL)
Since I am an employee of the University of California, the Lobjects
officially belong to the University- They may be used freely for any
research or educational purpose, but for commercial explotation, you would
have to negotiate a license with the UC office of technology transfer.

>recording to disk
Pops and clicks when recording to disk is usually a symptom of speed
problems, often caused by a fragmented or otherwise slow drive. Other
common culprits: an active network, a time grabing extension such as a
screen saver, too many active apps, and so forth. MSP seems a bit less
robust than Sound designer and the like in this respect.

>Shephard tones
Easily done in a rough way using line~, curve~ and cycle~ here's a
subpatcher that generates one component of the sound when triggered by a
bang. Set up eight of these to be triggered at 5 second intervals and mix
the outputs. The sound does not quite jell- playing with the amplitude
curve helps- it should really be a bell shape.

max v2;
#N vpatcher 24 100 617 450;
#P message 191 113 275 196617 0.1 3000 0.3 0.2 3000 -0.3 0.1 10000 0.3 0.
10000 -0.3;
#P outlet 80 289 15 0;
#P inlet 84 40 15 0;
#P message 148 113 35 196617 13.75;
#P newex 175 148 40 196617 curve~;
#P newex 80 201 30 196617 *~ 0;
#P message 80 113 65 196617 3520 40000;
#P newex 80 148 30 196617 line~;
#P newex 80 176 53 196617 cycle~ 55;
#P connect 8 0 4 0;
#P connect 6 0 5 0;
#P connect 6 0 2 0;
#P connect 6 0 8 0;
#P connect 5 0 1 0;
#P fasten 4 0 3 1 180 195 105 195;
#P connect 2 0 1 0;
#P connect 3 0 7 0;
#P connect 1 0 0 0;
#P fasten 0 0 3 0 85 200;
#P pop;
Peter Elsea
Electronic Music Studios
University of California, Santa Cruz
http://arts.ucsc.edu/EMS/Music/index.html
 elsea@cats.ucsc.edu

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

Date:    Wed, 3 Feb 1999 13:57:59 +0000
From:    Steve Smith 
Subject: Re: MAX Digest - 1 Feb 1999 to 2 Feb 1999 (#1999-39)

OK - the student is ready for the solution - heh.

How do I scramble the items in a list?  I have a list in a coll with 8
subitems in it and would like to scramble the order.  Duh

With thanks,

Steve Smith
**********

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

Date:    Wed, 3 Feb 1999 11:12:48 -0800
From:    Matt Wright 
Subject: Re: shepard tones

david stevens  asks:

> does anyone have a ready-made simple shepard tone generator?
>
> or can anyone tell me what i need to know to go about making one?

I built a Shepard tone generator in CNMAT's additive synthesizer "CAST".
(
http://cnmat.CNMAT.Berkeley.EDU/CAST/Server/timbralprotos.html#shepard_tones
)

The basic principle is fairly straightforward: a series of octave-spaced
partials (not the usual harmonic series, but rather the 1st, 2nd, 4th, 8th,
16th, 32nd... partials) underneath a spectral envelope that goes to zero at
the upper and lower limits of human hearing.  You can use a Gaussian bell
curve for the spectral envelope or half a cosine wave; my implementation
just
uses a stupid two-line-segment envelope.  All seem to produce the same
illusion.

If you want to be able to do an endless glissando (which is IMHO the coolest
thing you can do with a Shepard tone), the one tricky bit is "voice
allocation", i.e., arranging for newly emerging sinusoids to appear without
causing any discontinuity in what the other sinusoids are doing.  The naive
solution, with a fixed number of oscillators each always occupying the same
harmonic number, must at some point suddenly change all the frequencies of
all
the oscillators by almost an octave at the point when the lowest oscillator
disappears (if you're going down in pitch) or appears (if you're going up in
pitch).  This will cause an audible click.

To avoid frequency discontinuities, you have to put in a level of
indirection
somehow.  Then it's OK for a sinusoid that starts as the 1st partial to
become
the 2nd partial after glissing up an octave.  Leave yourself a spare
oscillator, amplitude zero, that you can use when you need a new one to
enter.

These have some useful info too:
http://www.music.mcgill.ca/auditory/shepscal.html
http://www.vanderbilt.edu/Blair/Courses/MUSC216/Risset.html

Post your MSP patch when you get it working!

-Matt

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

End of MAX Digest - 2 Feb 1999 to 3 Feb 1999 - Special issue (#1999-40)
***********************************************************************