From:
                                                            8/11/97 11:00 PM
Subject: MAX Digest - 11 Aug
1997To: Recipients of MAX digests 

There are 4 messages totalling 263 lines in this issue.

Topics of the day:

  1. Command-Y with patch cords
  2. Subpatchers
  3. equal power
  4. panning functions

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

Date:    Mon, 11 Aug 1997 22:52:43 +0200
From:    Oeyvind Brandtsegg 
Subject: Command-Y with patch cords

Hi

I was playing  around and discovered a little nice thing that I can't
remember from the manual. Please excuse me if you all know about this
feature.
By selecting a patch cord and typing command-Y you get nice aligned
segmented cords. I had to experiment a little with the placement of
objects to make this command work as I wanted: I adjusted the objects so
that all the (ten) cables was aligned in one nice bundle, and then
readjusted the objects back to where they were in the first place.

Oeyvind Brandtsegg (Composer/Vibraphone)
Nedre Bakklandet 47 A
7014 Trondheim
Norway
mailto:obrandts@online.no

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

Date:    Tue, 12 Aug 1997 07:44:04 +1000
From:    David Rodger 
Subject: Re: Subpatchers

Ed Hartley wrote:
> I would love an option, say, in the
> OPTIONS menu that would interpret save commands as referring to the
uppermost
> parent of the active subpatcher. It seems to me that the current system
that
> calls up the "save as" dialog  box is counterintuitive. Why should it be
> easier to save subpatchers than their parent patchers ? Thoughts?
Comments?

Presumably, this would only work for "p..." and not patches instantiated as
objects, as the latter are not editable in that context.  Also, there are
times
when one wishes to save a subpatch as a separate patch.  I've done this a
number of times when I realised that the subpatch had uses elsewhere.  How
would one distinguish occasions on which the entire parent patch and its
subpatches were to be saved from those when one wishes to save the subpatch
as a separate patch?  Cmd-option-S?

Regards, David
musdr@lure.latrobe.edu.au
http://farben.latrobe.edu.au/d_rodger/

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

Date:    Tue, 12 Aug 1997 10:35:03 +1000
From:    Iain Mott 
Subject: equal power

>But now it appears that the overall energy of the source is not constant
>when moving the panorama - i.e. in the absoulte middle the sound is softer
>than if you push it towards the left or right.
>
>I recall an old wisdom of sound engineers that in this case the linear
>function has to be replaced by a - cosine? I don't remember...
>
Karlheinz

I use a patch which contains two look up tables for equal power panning. It
works for input values of between 0 & 127. The patch that generated the
tables is based on an equation in John Chowning's "Simulation of Moving
Sound Sources" paper. From my notes this should be:

% signal CH1 =3D =881- 1/2 [1 + tan(=8F - =8Fmax/2)]
% signal CH2 =3D =881/2 [1 + tan(=8F - =8Fmax/2)]

where =8F =3D angle and =8Fmax =3D 90degrees

Here's the look up table patch:

max v2;
#N vpatcher 30 70 430 370;
#N vtable 128 96 123 306 290 16 128 EQ-Power1;
#T set 0 0 14 20 24 28 31 33 36 38 40 42 44 46 47 49 50 52 53 55 56 57 58
59 60 61 62 63 64 65 66 67 68 69 70 71 71 72 73 74 74 75 76 77 77 78 79 79
80 81 81 82 83 83 84 84 85 86 86 87 87 88 88 89 90 90 91 91 92 92 93 93 94
94 95 95 96 97 97 98 98 99 99 100 100 101 101 102 102 103 103 104 104 105
106 106 107 107 108 108 109 109 110 111 111 112 112 113 113 114 115 115 116
117 117 118 118 119 120 120 121 122 123 123 124 125 125 126 127;
#P newobj 238 181 84 196617 table EQ-Power1;
#N vtable 128 49 40 259 207 16 128 EQ-Power2;
#T set 0 127 126 125 125 124 123 123 122 121 120 120 119 118 118 117 117
116 115 115 114 113 113 112 112 111 111 110 109 109 108 108 107 107 106 106
105 104 104 103 103 102 102 101 101 100 100 99 99 98 98 97 97 96 95 95 94
94 93 93 92 92 91 91 90 90 89 88 88 87 87 86 86 85 84 84 83 83 82 81 81 80
79 79 78 77 77 76 75 74 74 73 72 71 71 70 69 68 67 66 65 64 63 62 61 60 59
58 57 56 55 53 52 50 49 47 46 44 42 40 38 36 33 31 28 24 20 14 0;
#P newobj 132 180 84 196617 table EQ-Power2;
#P inlet 155 123 15 0;
#P outlet 132 207 15 0;
#P outlet 238 209 15 0;
#P connect 4 0 0 0;
#P connect 3 0 1 0;
#P fasten 2 0 3 0 160 168 137 168;
#P fasten 2 0 4 0 160 168 243 168;
#P pop;

Here's the table filling patch (a bit clumsy)

max v2;
#N vpatcher 59 77 631 462;
#P number 31 165 35 9 0 0 0 3;
#P toggle 32 -4 15 0;
#P newex 66 191 48 196617 past 127;
#P message 110 84 37 196617 up;
#P newex 31 19 50 196617 metro 20;
#P number 59 60 35 9 0 0 0 3;
#P message 59 84 48 196617 goto \$1;
#P button 31 93 15 0;
#P newex 31 134 66 196617 counter 128;
#P number 390 -67 35 9 0 127 3 3;
#P number 388 242 35 9 0 0 0 3;
#P newex 388 215 27 196617 int;
#P newex 388 189 32 196617 + 0.5;
#P newex 388 163 45 196617 * 127.;
#P flonum 388 141 93 9 0 0 0 3;
#P newex 388 70 78 196617 * 0.012368;
#P flonum 388 97 159 9 0 0 0 3;
#P newex 388 121 212 196617 expr sqrt ((1 + tan ($f1 - 0.7853982)) / 2 );
#P message 327 303 35 196617 \$1 \$2;
#N vtable 128 96 123 306 290 16 128 EQ-Power1;
#T set 0 0 14 20 24 28 31 33 36 38 40 42 44 46 47 49 50 52 53 55 56 57 58
59 60 61 62 63 64 65 66 67 68 69 70 71 71 72 73 74 74 75 76 77 77 78 79 79
80 81 81 82 83 83 84 84 85 86 86 87 87 88 88 89 90 90 91 91 92 92 93 93 94
94 95 95 96 97 97 98 98 99 99 100 100 101 101 102 102 103 103 104 104 105
106 106 107 107 108 108 109 109 110 111 111 112 112 113 113 114 115 115 116
117 117 118 118 119 120 120 121 122 123 123 124 125 125 126 127;
#P newobj 327 339 84 196617 table EQ-Power1;
#P number 327 378 35 9 0 0 0 3;
#P number 258 311 35 9 0 0 0 3;
#P comment 434 342 100 196617 Fill a trig table;
#P newex 328 271 28 196617 pack;
#P newex 228 88 48 196617 * 127.;
#P newex 228 141 27 196617 int;
#P newex 228 115 32 196617 + 0.5;
#P flonum 228 67 93 9 0 0 0 3;
#P newex 228 -8 78 196617 * 0.012368;
#P flonum 228 19 159 9 0 0 0 3;
#P newex 228 43 229 196617 expr sqrt (1 - (1 + tan ($f1 - 0.7853982)) / 2 );
#P number 228 165 35 9 0 0 0 3;
#P message 164 286 35 196617 \$1 \$2;
#N vtable 128 49 40 259 207 16 128 EQ-Power2;
#T set 0 127 126 125 125 124 123 123 122 121 120 120 119 118 118 117 117
116 115 115 114 113 113 112 112 111 111 110 109 109 108 108 107 107 106 106
105 104 104 103 103 102 102 101 101 100 100 99 99 98 98 97 97 96 95 95 94
94 93 93 92 92 91 91 90 90 89 88 88 87 87 86 86 85 84 84 83 83 82 81 81 80
79 79 78 77 77 76 75 74 74 73 72 71 71 70 69 68 67 66 65 64 63 62 61 60 59
58 57 56 55 53 52 50 49 47 46 44 42 40 38 36 33 31 28 24 20 14 0;
#P newobj 164 322 84 196617 table EQ-Power2;
#P number 95 294 35 9 0 0 0 3;
#P newex 165 254 28 196617 pack;
#P inlet -3 -56 15 0;
#P outlet 177 395 15 0;
#P outlet 304 395 15 0;
#P number 141 356 35 9 0 0 0 3;
#P fasten 39 0 37 0 36 187 71 187;
#P fasten 39 0 4 0 36 240 170 240;
#P fasten 39 0 16 0 36 233 333 233;
#P fasten 39 0 30 0 36 189 23 189 23 -33 395 -33;
#P connect 38 0 35 0;
#P fasten 36 0 31 0 115 125 36 125;
#P fasten 37 0 38 0 71 221 153 221 153 -25 37 -25;
#P fasten 33 0 31 0 64 121 36 121;
#P connect 35 0 32 0;
#P connect 32 0 31 0;
#P connect 31 0 39 0;
#P connect 30 0 11 0;
#P fasten 29 0 16 1 393 264 372 264 372 234 351 234;
#P fasten 30 0 24 0 395 7 497 7 497 64 393 64;
#P connect 28 0 29 0;
#P connect 27 0 28 0;
#P connect 34 0 33 0;
#P fasten 26 0 27 0 393 182 393 182;
#P connect 25 0 26 0;
#P connect 24 0 23 0;
#P connect 23 0 22 0;
#P connect 22 0 25 0;
#P connect 21 0 20 0;
#P fasten 20 0 2 0 332 376 182 376;
#P connect 20 0 19 0;
#P connect 18 0 20 0;
#P connect 15 0 13 0;
#P connect 16 0 21 0;
#P connect 14 0 8 0;
#P connect 12 0 15 0;
#P connect 11 0 10 0;
#P connect 13 0 14 0;
#P connect 10 0 9 0;
#P connect 9 0 12 0;
#P fasten 8 0 4 1 233 206 188 206;
#P connect 6 0 0 0;
#P connect 7 0 6 0;
#P fasten 6 0 1 0 169 345 309 345;
#P connect 5 0 6 0;
#P connect 4 0 7 0;
#P fasten 3 0 6 0 2 298 169 298;
#P fasten 3 0 20 0 2 279 319 279 319 324 332 324;
#P pop;

Hope this helps.

cheers,

----------------------------------------------------------------------------
Iain Mott                                               ph      (03) 6226
73=
26
Conservatorium of Music                 Int     +61 3 6226 7326
GPO 252-63, Hobart 7001               fax     (03) 6221 7318
Tasmania                                            Int.    +61 3 6221 7318
Australia                         http://www.music.utas.edu.au/mott
----------------------------------------------------------------------------

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

Date:    Mon, 11 Aug 1997 17:47:43 -0700
From:    Alex Stahl 
Subject: Re: panning functions

Dr. K@rlheinz Essl wrote:

>I am currently working on a spatialisation patch for the "niche audio
>control module" - a neat device which allows you to control the level of 8
>audio inputs by MIDI control messages...
>
>At the first step, I wanted to achieve a simple left-right panoramisation
>of a mono signal according to the following patch:
[....]
>But now it appears that the overall energy of the source is not constant
>when moving the panorama - i.e. in the absoulte middle the sound is softer
>than if you push it towards the left or right.
>
>I recall an old wisdom of sound engineers that in this case the linear
>function has to be replaced by a - cosine? I don't remember...

Yes, a cosine law is common in mixing consoles, and is a good place to
start, but that's assuming the control is linearly adjusting signal
amplitude.  However, I believe the Niche ACM's have a modified logarithmic
response or "audio taper".

Furthermore there is some debate over which law is really "correct". Should
the level changes model a straight-line path between the two speakers, or
an arc with the listener at the origin?

I have used the Niche's extensively for film-sound panning and
site-specific spatialization installations, splitting the same source
signal into many Niche channels and sending each channel to a separate
speaker.
In practical experience, I was dissatisfied with the perceptual results of
any of the "theoretically correct" crossfade equations, and ended up
adjusting "by ear" the coefficients of a complex table-filling equation.  I
will try and dig up an example patch tomorrow.

Also, Section 4.2.2 of F. R. Moore's "Elements of Computer Music" has
further thoughts on this topic.

-Alex

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

End of MAX Digest - 11 Aug 1997
*******************************