From:
                                                             6/3/97 11:00 PM
Subject: MAX Digest - 2 Jun 1997 to 3 Jun
1997To: Recipients of MAX digests 

There are 2 messages totalling 277 lines in this issue.

Topics of the day:

  1. =====HELP: Any FTP site(s) with example MAX edtors/librarians ? ====
  2. Chord Recog corrected

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

Date:    Tue, 3 Jun 1997 01:08:08 -0700
From:    ai 
Subject: =====HELP: Any FTP site(s) with example MAX edtors/librarians ?
====

Hello,

I'm trying to find out if there are any FTP sites where I
can look at or download example MAX editor/librian code
for controlling MIDI devices (synths or effects).

If you know of any site (or have written editors or
librarians for MAX), I'd greatly appreciate hearing
from you:

 ai@wco.com

Thanks.

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

Date:    Tue, 3 Jun 1997 20:14:06 +0100
From:    dudas 
Subject: Chord Recog corrected

Dear Maxers (and Amanda Pehlke in particular):

I just found a nasty bug (with a little bit of help) with the chord recog
patch which I posted a while ago, so I'm sending the revised version.  The
problem was with the 3rd chord recognition option: I didn't re-initialize
the change object for each new incoming chord, which can cause problems
when playing repeated single notes or certain chords sharing a common note.
There is also a first step toward recognizing functional harmony at the
bottom of the same example... very basic, but it seems to work.

Have fun. (Sorry it's such a long patch.)

-Richard

------------------------------------------------------------
------------------------------------------------------------
max v2;
#N vpatcher 9 40 917 622;
#P message 648 190 35 196617 set -1;
#P newex 593 131 65 196617 t l b;
#P message 673 87 50 196617 60 64 67;
#P number 800 437 38 9 0 0 0 3;
#P newex 800 414 38 196617 % 786;
#P message 673 69 50 196617 59 63 66;
#P number 759 437 38 9 0 0 0 3;
#P newex 759 396 27 196617 -;
#P newex 776 374 38 196617 Bucket;
#P message 673 123 50 196617 62 66 69;
#P message 673 105 50 196617 61 65 68;
#P newex 72 130 27 196617 sort;
#P newex 72 156 43 196617 t b l b;
#P newex 72 293 43 196617 accum;
#P newex 105 208 66 196617 counter;
#P newex 105 230 27 196617 * 7;
#P newex 88 254 27 196617 <<;
#P newex 88 179 25 196617 iter;
#P message 104 274 14 196617 0;
#P newex 313 130 27 196617 sort;
#P newex 313 156 43 196617 t b l b;
#P number 313 316 135 9 0 0 0 3;
#P newex 313 360 45 196617 == 1856;
#P newex 313 109 52 196617 thresh 50;
#P newex 313 65 40 196617 notein;
#P newex 313 89 49 196617 stripnote;
#P toggle 313 385 15 0;
#P message 1 123 50 196617 67 72 76;
#P message 1 140 50 196617 72 76 79;
#P message 1 106 50 196617 64 67 72;
#P message 1 89 50 196617 60 64 67;
#P newex 72 109 52 196617 thresh 50;
#P newex 72 89 49 196617 stripnote;
#P newex 72 65 40 196617 notein;
#P number 72 316 135 9 0 0 0 3;
#P newex 329 209 35 196617 % 12;
#P newex 368 210 66 196617 counter;
#P newex 368 232 27 196617 * 4;
#P newex 313 295 43 196617 accum;
#P newex 329 256 27 196617 <<;
#P newex 329 181 25 196617 iter;
#P message 345 276 14 196617 0;
#P comment 288 402 224 196617 this recognises a C Major triad in root
position \, 1st and 2nd inversions respectively \, regardless of their
octave transposition.;
#P comment 2 44 222 196617 recognise chords made up of specific midi notes;
#P toggle 359 385 15 0;
#P newex 359 360 41 196617 == 116;
#P toggle 401 385 15 0;
#P newex 401 360 45 196617 == 1031;
#P message 244 109 50 196617 55 60 64;
#P message 244 92 50 196617 52 55 60;
#P message 244 126 50 196617 60 64 67;
#P message 244 143 50 196617 64 67 72;
#P message 244 177 50 196617 72 76 79;
#P message 244 160 50 196617 67 72 76;
#P number 593 356 135 9 0 0 0 3;
#P newex 609 219 40 196617 change;
#P newex 593 175 43 196617 t b l b;
#P newex 609 198 25 196617 iter;
#P message 625 316 14 196617 0;
#P newex 609 296 27 196617 <<;
#P newex 593 335 43 196617 accum;
#P newex 648 272 27 196617 * 4;
#P newex 648 250 66 196617 counter;
#P newex 593 46 40 196617 notein;
#P newex 593 69 49 196617 stripnote;
#P newex 556 68 25 196617 iter;
#P newex 593 89 35 196617 % 12;
#P newex 593 109 52 196617 thresh 50;
#P newex 593 153 27 196617 sort;
#P comment 539 20 173 196617 recognises a chord regardless of inversion \,
octave \, or whatever;
#P newex 677 378 27 196617 >> 4;
#P toggle 593 425 15 0;
#P newex 593 402 45 196617 == 1856;
#P newex 642 402 32 196617 % 16;
#P number 642 425 30 9 0 0 0 3;
#P newex 677 402 32 196617 % 16;
#P newex 711 402 27 196617 >> 4;
#P number 677 425 30 9 0 0 0 3;
#P number 711 425 30 9 0 0 0 3;
#P newex 539 449 203 196617 match 1856 2384 1856 2930 46930 2657;
#P comment 393 155 105 196617 V 4 3 (C)/ Aug 6 (F#);
#P comment 464 173 33 196617 I (F#);
#P message 499 171 50 196617 58 61 66;
#P comment 465 104 11 196617 I;
#P comment 465 121 32 196617 IV 6 4;
#P comment 465 138 32 196617 V 6 3;
#P comment 465 53 24 196617 I (C);
#P comment 465 70 32 196617 I 6 3;
#P comment 465 88 32 196617 I 6 4;
#P message 499 120 50 196617 60 65 69;
#P message 499 137 50 196617 59 62 67;
#P message 499 154 65 196617 59 62 65 67;
#P message 499 86 50 196617 67 72 76;
#P message 499 103 50 196617 72 76 79;
#P message 499 69 50 196617 64 67 72;
#P message 499 52 50 196617 60 64 67;
#P comment 583 472 173 196617 this "match" recognises the chord sequence CM
\, FM \, CM \, GM \, G7 \, F#M in any inversion!;
#P button 539 472 40 0;
#P toggle 72 394 15 0;
#P comment 71 412 162 196617 toggle is on if a specific C Major triad (60
\, 64 \, 67) is recognised.;
#P newex 72 369 65 196617 == 1105980;
#P comment 83 338 152 196617 ***big numbers limit maximum chord size to 4
notes...;
#P message 244 196 50 196617 63 67 70;
#P comment 193 198 38 196617 Eb Maj;
#P comment 193 93 49 196617 CMaj 6 3;
#P comment 193 110 49 196617 CMaj 6 4;
#P comment 193 145 49 196617 CMaj 6 3;
#P comment 193 163 49 196617 CMaj 6 4;
#P comment 193 127 31 196617 CMaj;
#P comment 193 180 31 196617 CMaj;
#P comment 7 15 255 196626 Richard's Chord Recognition;
#P comment 270 34 167 196617 recognise a specified inversion of a chord
regardless of octave;
#P comment 463 210 132 196617 This last example using "match" should
explain the usefullness of my strange number packing instead of list
comparing... remember: these cryptic numbers can be used as funbuff or coll
indexes (whereas lists...)!;
#P comment 4 73 48 196617 C Major:;
#P comment 759 456 100 196617 recognize functional harmony;
#P comment 686 183 100 196617 BUG FIXED!!!!!!;
#P connect 115 0 60 0;
#P connect 114 0 47 0;
#P connect 114 1 115 0;
#P connect 113 0 50 0;
#P connect 111 0 112 0;
#P connect 110 0 50 0;
#P connect 108 0 109 0;
#P connect 107 0 108 1;
#P connect 108 0 111 0;
#P connect 106 0 50 0;
#P connect 104 0 103 0;
#P connect 105 0 50 0;
#P connect 103 0 102 0;
#P connect 103 2 97 0;
#P connect 103 1 98 0;
#P connect 103 2 101 2;
#P connect 102 0 81 0;
#P connect 101 0 100 0;
#P connect 100 0 99 1;
#P connect 99 0 102 1;
#P connect 98 0 99 0;
#P connect 98 0 101 0;
#P connect 97 0 102 2;
#P connect 96 0 95 0;
#P connect 95 0 77 0;
#P connect 95 1 75 0;
#P connect 95 2 74 0;
#P connect 95 2 79 2;
#P connect 94 0 93 0;
#P connect 94 0 70 0;
#P connect 94 0 68 0;
#P connect 93 0 89 0;
#P connect 92 0 96 0;
#P connect 91 1 90 1;
#P connect 91 0 90 0;
#P connect 90 0 92 0;
#P connect 87 0 103 0;
#P connect 88 0 103 0;
#P connect 86 0 103 0;
#P connect 84 0 104 0;
#P connect 85 0 103 0;
#P connect 83 0 84 0;
#P connect 82 0 83 0;
#P connect 82 1 83 1;
#P connect 81 0 15 0;
#P connect 80 0 76 0;
#P connect 78 0 76 1;
#P connect 79 0 78 0;
#P connect 76 0 77 1;
#P connect 75 0 79 0;
#P connect 77 0 94 0;
#P connect 74 0 77 2;
#P connect 70 0 71 0;
#P connect 75 0 80 0;
#P connect 68 0 69 0;
#P connect 67 0 95 0;
#P connect 66 0 95 0;
#P connect 65 0 95 0;
#P connect 64 0 95 0;
#P connect 62 0 95 0;
#P connect 63 0 95 0;
#P connect 61 0 36 0;
#P connect 61 0 42 0;
#P connect 61 0 43 0;
#P connect 61 0 45 0;
#P connect 61 0 107 0;
#P connect 61 0 108 0;
#P connect 60 0 56 0;
#P connect 60 0 53 0;
#P connect 59 0 55 0;
#P connect 59 1 58 0;
#P connect 59 2 53 2;
#P connect 58 0 60 0;
#P connect 59 2 57 0;
#P connect 57 0 55 2;
#P connect 55 0 61 0;
#P connect 56 0 55 1;
#P connect 54 0 56 1;
#P connect 52 0 51 0;
#P connect 53 0 54 0;
#P connect 52 1 51 1;
#P connect 51 0 49 0;
#P connect 50 0 49 0;
#P connect 49 0 48 0;
#P connect 48 0 114 0;
#P connect 45 0 40 0;
#P connect 47 0 59 0;
#P connect 45 0 39 0;
#P connect 42 0 41 0;
#P connect 43 0 44 0;
#P connect 40 0 38 0;
#P connect 36 0 18 0;
#P connect 39 0 37 0;
#P connect 33 0 50 0;
#P connect 25 0 50 0;
#P connect 26 0 50 0;
#P connect 24 0 50 0;
#P connect 22 0 50 0;
#P connect 23 0 50 0;
#P connect 21 0 50 0;
#P connect 20 0 50 0;
#P connect 15 0 17 0;
#P connect 13 0 95 0;
#P pop;
------------------------------------------------------------
------------------------------------------------------------

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

End of MAX Digest - 2 Jun 1997 to 3 Jun 1997
********************************************