Subject: MAX Digest - 14 Jan 1999 to 15 Jan 1999 (#1999-15)
Date: Sat, 16 Jan 1999 00:00:07 -0500
From: Automatic digest processor 
Reply-To: MAX - Interactive Music/Multimedia Standard Environments
To: Recipients of MAX digests 

There are 13 messages totalling 459 lines in this issue.

Topics of the day:

  1. curriculum development (2)
  2. All my objects now PPC-native (2)
  3.  (2)
  4. MAX Digest - 13 Jan 1999 to 14 Jan 1999 (#1999-14)
  5. Advice on new project
  6. your mail
  7. Bug in MAX "IF"?
  8. sfplay~ and sfrecord~/search path
  9. Checksum
 10. Opps!

Email to MAX should now be sent to
LISTSERV commands should be sent to
Information is available on the WEB at


Date:    Fri, 15 Jan 1999 00:19:51 -0800
From:    dudas 
Subject: Re: curriculum development

In response to Luke DuBois' mail:

>hey all.  so i've been given the task of teaching a semester-length class
>on max/msp at columbia this semester and i'm having a bit of writer's
>block with the syllabus and so i thought i'd appeal for some last-minute
[ . . . ]

I think this IS an appropriate discussion for the list.

>From my Max/MSP teaching experience at IRCAM and elsewhere, I can say that
it is NOT EASY to put to gether a Max curriculum! I'm not saying this to
scare you off, I'm just saying it so you will realize that you actually did
a great job, all things considered, when it is all over. The first time I
had to teach a small Max course, I was filling in at short notice, and I
was very confident: "Oh, I know this program well, so it will be a cinch to
teach."  WRONG! Things that I thought would be simple turned out to provoke
questions which often had very complicated explanations behind them.
Granted, the whole class was rather improvised, and that did not help
matters... it is so easy to stray from the subject as you open up help
patch upon help patch.  A few years down the road, I still haven't
perfected the order in which to teach things... I think it depends to some
extent on the individuals you're teaching.

I'm going to start rambling about Max all by itself:

The first objects I learned to use in Max (when Joel Chadabe introduced it
to us at some Summer workshops in Lugano back 1990) were notein, noteout,
stripnote and makenote. If you start there, you are already teaching
"applied" max.  For me, one of the big problems with the Max tutorial is
that it starts with "bang means do it" - the whole bang thing and this
message business is actually difficult for beginners to grasp without
having a "feel" for the whole Max environment in the first place. Once they
have MIDI notes going in and out, it's pretty easy to discover things to do
with them (transposition, delays using 'pipe', etc.) Once they've played
around and made some simple "compositions" or improv machines, they're
probably ready to understand that everything is a message, and there are a
lot of different useful messages...

Maybe I'm just really old fashioned, but I would stay away from teaching
the "unsupported objects" as much as possible.  There are a lot of cool 3rd
party externals, but once upon a time, when Tom Mays and I came up with the
scenario of being stranded on a desert island with only the standard
install of Max and the choice of just 10 unsupported externals, we could
only think of 7 that we absolutely couldn't live without! You CAN do pretty
much anything you need to with the standard set of Max objects (although
sometimes it can get pretty twisted).

My 2-3 day Max crash course basically begins with the notein/out thing and
ends with the construction of a MIDI sequencer using the table object (with
the simplification that note duration = note delta time). When they've seen
what it takes to make a simple sequencer, they have the basic Max knowledge
required to do almost anything. Once they can use and understand the midi
objects, table (and/or funbuff and/or coll), match&select, seq, metro,
delay and pipe, they already have enough fuel to use Max for a composition.
And I don't just mean a trivial composition, but a potentially serious and
effective interactive composition. (Remember that there are quite a few
pieces from the early days of Max (1988-90) which were written with such a
limited set of objects - you can do wonders with match and seq!)

The application of this knowledge for the students' own interactive music
is a highly personal matter, although it does help if you show examples of
what others have done. This is not easy, because it means spending time
trudging through other peoples' patches (sometimes like taking a journey
through their brain) to figure out how they work so you can show them and
explain them.

Now the MSP connection:

When I first had to teach MSP alongside Max, I simply did the Max crash
course then did an MSP crash course right afterward. If I ever have the
opportunity to teach Max/MSP again, I think I will use the strategy
suggested by David Wessel which was used the Max/MSP night school last
summer at CNMAT: start with MSP - oscillators, envelopes, delay lines,
etc.... This gets people immediately playing with sound and is like
learning to use an old modular analog synth.  Afterward, begin introducing
notein and mtof - thus integrating the Max part (events) which are used to
control the MSP audio (continuous flow of data).

I know it's really lame that I did a lengthy little blah blah about Max and
I'm not going to say more about MSP, but I think the MSP tutorial is VERY
appropriate as a basis for a course curriculum.

As far as other resources go, Peter Elsea at UC Santa Cruz has some
tutorial files called "Max Tutors" which might help give you ideas.  There
is a lot of useful practical information in these files, as well as more
general Max methodology. I must admit that I don't always share his
viewpoint for my own teaching (there are probably as many Max methodologies
as there are Max users!), but nonetheless these are very worthwhile to
read, if you don't already know them.

They can be found at:

It would be interesting to hear from other people about their teaching
methods and experiences conveying Max to others.  Especially those
nightmare stories about the courses where everything went wrong, so I won't
feel alone.



Date:    Fri, 15 Jan 1999 00:11:45 -0800
From:    Richard Zvonar 
Subject: Re: All my objects now PPC-native

At 12:40 PM -0800 01/14/99, Eric Singer wrote:
>I have just uploaded new versions of all of my public Max objects.

Uploaded to where?

Richard Zvonar, PhD                   
(818) 788-2202 voice                  
(818) 788-2203 fax                    



Date:    Fri, 15 Jan 1999 09:42:27 +0100
From:    Jeffrey Burns 

to all videoheads:

The Max movie object works great with the Miro DC20 or Miro DC30. Someone
told me that the Targa card is also fine. Using these cards doesn't burden
your CPU. You just need a fast harddisc.

Jeff Burns


Date:    Fri, 15 Jan 1999 15:14:44 +0200
From:    Trond Lossius 
Subject: Re: MAX Digest - 13 Jan 1999 to 14 Jan 1999 (#1999-14)

Michael Seta wrote:

> 1.  Could someone briefly and quickly translate (to english)
>     the following statement:
>  The error checking process uses a checksum that provides a bit pattern
>  where the least significant 7 bits are zero when values for an
>  address, size, and that checksum are summed.
> (this comes from the Roland GR-50 SysEx section)

Stephen Kays explanation is correct. The reason why check-sums only bothers
about the 7 last bits
is that it has to be a data byte itself, and hence is limited to seven bytes

If you need to calculate Check Sums in Max, here's a patch to do so:

max v2;
#N vpatcher 346 225 703 481;
#N comlet int: Check Sum;
#P outlet 9 150 15 0;
#P newex 9 123 152 196617 expr (128 - ($i1 % 128))%128;
#P newex 9 97 31 196617 Lsum;
#N comlet List: byte count \, address \, data;
#P inlet 9 73 15 0;
#P comment 5 8 100 297402380 XGCheckSum:;
#P comment 27 74 276 196617 list: byte count (2 bytes) \, address (3 bytes)
\, data (x bytes);
#P comment 27 151 100 196617 int: Check Sum value;
#P comment 181 93 149 196617 Calculation Rule: The sum of   *Byte Count
bytes          *Address
Bytes            *Data Bytes &             *Check Sum Byte         has the
last 7 bits equal to
#P comment 5 10 337 131137548                                  Calculate
Check Sum value for a
received list consisting of Byte Count \, Address and Data bytes.;
#P comment 5 40 308 196617 (For preparation of a XG Bulk Dump System
Exclusive Message.);
#P comment 5 185 305 196617 XGCheckSum makes use of the following 3rd Part
external Object:
Elsea/Lobject "Lsum".;
#P comment 5 219 109 196617 ©Trond Lossius 1998;
#P connect 10 0 11 0;
#P fasten 9 0 10 0 14 118 14 118;
#P connect 8 0 9 0;
#P pop;

The patch mainly consist of documentation of itself   ;-)    , but you'll
need the Lsum object
from the Elsea/Lobjects package to run it. It's available on the Max 3.5
CD-ROM and from the Ircam
FTP site. The number of bytes referd to in the comments are related to the
Yamaha XG Parameter
Dump format, and might be different for Roland.

Anyway the clue is that you pack all bytes that check sum depends on into a
list, input to this
patch and get the proper check sum in return.

Good luck!

Trond L.


Date:    Fri, 15 Jan 1999 13:43:14 +0000
From:    Thomas Gardner 
Subject: Advice on new project

Dear world of Max,
I am sending my first epistle to the list and this is my reason:
I am  longstanding fancier of Max and casual peruser of the program. After
several years of waiting the opportunity has arisen to install a series of
temporary sound sculptures/ sonic amusements in some UK dance clubs.

These are my plans -
Use the 'soundbeam' (an ultra sonic sensor) as input, an old Mac classic
(System 6.0.7 running Max 2.5.2) and a good sampler and PA system for
The sorts of musical activity I had in mind were
1) A Steve Reich like phasing, where the mobile part of the pattern shifts
according to the position of the nearest person.
2) Different harmonic regions played according to the position of the
nearest person.
3) Assorted effects and surprises triggered by someone getting nearer the

I have about a month to get this off the ground.
Are my plans over ambitious,  are there unforeseen and unresolveable
technical problems ahead?
Any hints of good patches to use...

Dear world of Max,
Thanks for your advice

(I am a celllist and have experience of computer programming)


Date:    Fri, 15 Jan 1999 08:14:00 -0600
From:    =cw4t7abs 

>IMPORTANT: This list is confidential. You should not publicly mention its
>existence, or forward copies of information  you have obtained from it to
>third parties.

kould 1 plz klar!f! dze mean!ng ov abov +?

>More  information on  LISTSERV  commands  can be  found  in the  LISTSERV
>reference  card, which  you can  retrieve  by sending  an "INFO  REFCARD"


Date:    Fri, 15 Jan 1999 11:04:12 -0500
From:    Christopher Murtagh 
Subject: Re: your mail

On Fri, 15 Jan 1999, =cw4t7abs wrote:
> >IMPORTANT: This list is confidential. You should not publicly mention its
> >existence, or forward copies of information  you have obtained from it to
> >third parties.
> kould 1 plz klar!f! dze mean!ng ov abov +?

 This is a good question, and actually I don't have the answer. I'm
guessing that (since McGill is supposed to use its listserv for internal
discussions only) this is for internal lists at McGill, and so the person
who wrote this up (definitely not me) assumed this to be the case for all

I also wish Listserv would change their terminology... I'm not
particularly fond of the term 'Listserv Owner'. I much prefer admin, or
something less authoritative. Ahh well.



Christopher Murtagh
MAX listserv owner, admin, whatever


Date:    Fri, 15 Jan 1999 11:26:55 -0500
From:    David Durlach 
Subject: Bug in MAX "IF"?

Does anyone know if this is a bug, or instead, that we are confused?

 In a very specific case the MAX 'IF' object appears to malfunctioning.
The IF box has two inlets.  The exact text of the object box is 'if
$f2>0 then $f1'.  I believe that when a single float data is received in
the first inlet of this object, the value in the second inlet is
tested.  If it is greater than zero, then the float data from inlet 1
should be output to the if object's single outlet.  Otherwise no data
should be output by the if object.
 Instead of outputing the float data as expected when the condition is
true, the IF box outputs a large integer.

A comment box in the enclosed patcher gives a detailed example of the
problem including specific input and output data.

max v2;
#N vpatcher 50 40 450 340;
#P newex 77 184 30 196617 print;
#P flonum 188 74 35 9 0 0 0 3;
#P flonum 113 184 81 9 0 0 0 3;
#P flonum 113 74 35 9 0 0 0 3;
#P newex 113 121 85 196617 if $f2>0 then $f1;
#P comment 231 122 100 196617 when right inlet of IF box contains 1
(condition true) and 5. is received in left inlet of same IF box \, the
IF box outputs 1084227584 instead of the expected  5.0.;
#P connect 1 0 5 0;
#P connect 2 0 1 0;
#P connect 1 0 3 0;
#P connect 4 0 1 1;
#P pop;


Date:    Fri, 15 Jan 1999 14:10:02 -0500
From:    Eric Singer 
Subject: Re: All my objects now PPC-native

At 3:11 AM -0500 1/15/99, Richard Zvonar wrote:
>At 12:40 PM -0800 01/14/99, Eric Singer wrote:
>>I have just uploaded new versions of all of my public Max objects.
>Uploaded to where?

Good point...I was kind of spaced when I wrote that.  They are available
from my web page:



Date:    Fri, 15 Jan 1999 16:16:42 -0000
From:    Kurt Ralske 
Subject: sfplay~ and sfrecord~/search path

hi, sorry if this should be obvious....

with sfplay~ and sfrecord~:
how to specify search path/destination disk?
is it only done manually?
is it possible to change path, from within max,
while patch is running?

thanks for your help


Date:    Fri, 15 Jan 1999 14:26:33 -0800
From:    Simon Gatrall 
Subject: Re: curriculum development

A while ago the book "Composing Interactive Music: Techniques and Ideas
Using Max" was announced to the list.  While I personally didn't get a
whole lot out of the book, it seems like it might fit your requirements as
a textbook for your course.



Date:    Fri, 15 Jan 1999 18:53:54 EST
From:    JohnBrit@AOL.COM
Subject: Re: Checksum

In a message dated 1/14/99 21:00:05, you wrote:

Subject: SysEx basics. 2 questions

1.  Could someone briefly and quickly translate (to english)
    the following statement:
 The error checking process uses a checksum that provides a bit pattern
 where the least significant 7 bits are zero when values for an
 address, size, and that checksum are summed.

Add the address and size (data length) together. The number which needs to
added to this sum to create a number whose 7 least significant bits are zero
will be your checksum.


Date:    Fri, 15 Jan 1999 20:14:24 -0500
From:    Otto Henry 
Subject: Opps!


 I left out   "   /recent/ "      in the following  ftp://  download files
of my pieces,

  Sorry for the trouble!   Otto

"Often wrong but never in doubt" Thanxs Rumble


End of MAX Digest - 14 Jan 1999 to 15 Jan 1999 (#1999-15)