3/5/97 12:00 AM
Subject: MAX Digest - 3 Mar 1997 to 4 Mar
1997To: Recipients of MAX digests 

There are 11 messages totalling 486 lines in this issue.

Topics of the day:

  1. Libswitch question
  2. Newbie Maxer delurks....
  3. Museums and the Web
  4. MAX Digest - 2 Mar 1997 to 3 Mar 1997
  5. Version 3.5 in the UK
  6. [HELP] MAX on System 7.6
  7. Max Bug?
  8. Stack overflows
  9. unlimited CAPTURE
 10. Max Development Question
 11. REALAUDIO/MAX Algorithmic Music Stream


Date:    Mon, 3 Mar 1997 21:38:19 -0800
From:    Tod Fiste 
Subject: Re: Libswitch question


I didn't get the message here at home, but I saw it at work (unless I'm

The question was, I believe, what would I do with the set to libswitch
if it worked the way the 3.5 manual says.

I'm writing a librarian/editor, and I wanted to use it to create a
function that displays, compares, and/or copies locations of one patch
with another.  So I will be displaying (using dials, sliders, numbers,
etc.) a number of location values from one patch on the top half of the
screen, with an exact copy below it.  By using the set with libswitch I
could set the 1st patch location, then send bang to libtofrom to
populate the 1st patch's controls, then use set to set libswitch to the
2nd patch and bang on the 2nd libtofrom to populate it.  Without the set
to libswitch, every time I change libswitch BOTH sets of libtofrom
objects are automatically banged, so I can never have 2 different sets
of patch data displayed at the same time.  There are many ways to
approach this, but the set libswitch seemed to be the easiest and most
straightforward that I could see.

(Was this explanation understandable?)




Date:    Tue, 4 Mar 1997 06:27:18 -0800
From:    Tod Fiste 
Subject: Re: Newbie Maxer delurks....

>I've just gotten into programming with Max - I've made it through the
>tutorial and I'd like to be able to implement sysex commands thru Max
>patches. I have a grasp of hex.   Can anyone recommend a book(s) that
>can walk me through the "logic" of sysex messages? Thanks in

I haven't seen any responses to this one, so I'll give it a try.

I have a book called "The MIDI Resource Book" by Steve De Furia & Joe
Scacciaferro.  It contains general formats for sysex messages for
various manufacturers, but anything definitive on the "logic" of sysex
will be hard to come by, I think, due to the nature of the beast. Sysex
is short for System Exclusive, which means messages that are exclusive
to a particular system or device.  Sysex messages by definition have no
common format (or "logic") except for the header, which consists of F0
and the 1 byte manufacturer ID; the rest of the sysex message is up to
the manufacturer of the equipment sending and receiving the sysex.  Some
manufacturers use a similar format for sysex in all their gear, but for
the most part the sysex messages will be different for every device.
This makes working with sysex messages a potentially very tricky

One aspect of working with sysex that makes me a little crazy is the
variety of schemes for converting the data.  For example, Lexicon and
some others chop a byte of data into 2 nibbles (4 bits) and send each
nibble in a separate byte.  Example: 4B could become 04 0B or 0B 04 or
even flip the bits around.  The Max lib script has ways to help you deal
with some of the common ways this is done.

Sysex messages can be used for various things, but the most common use I
am familiar with is dumping and/or loading patches (or banks of patches,
or entire contents of memory) for storage in external librarians,
sequencers, etc.  When used for this purpose it seems fairly common to
have the sysex contain some kind of patch number and name.  Max actually
has some very nice objects for building librarians and editors for this
kind of sysex data.  Please note, however, there are some bugs in the
3.5 objects that are used for the librarian functions (libtofrom,
libfrom, etc.), so get the revised versions before using them.  I think
there might be a problem with the sxformat object too, although I'm not

If you are trying to do anything with sysex messages, the best source of
information is usually going to be the manufacturer(s) of the device(s)
that you are trying to work with.  In my experience this will produce
highly variable results.  For example, Alesis has sent me very good,
complete info on their MIDI implementations including sysex specs, as
has Lexicon (at least for the PCM90).  On the other hand, Roland has
been unable to give me any specs for the VG-8 whatsoever, and Eventide's
tech support was pretty useless as well.  You just have to ask;
sometimes you receive.  Of course, this is technical documentation that
is often not written for consumption by the general public, so it's not
always very well written or easy to understand.

Hope this helps.



Date:    Tue, 4 Mar 1997 10:30:18 -0500
From:    "David A. Wallace" 
Subject: Museums and the Web

Please excuse cross-postings


There is still time to register for the Museums and the Web Conference. But
time is quickly running out.

Conference details, including the full program, workshop descriptions,
social events, exhibitors, and session abstracts and papers are always
available at the conference Web site:

The hotel has agreed to honor the conference room rate, as long as they have
space available. Make your reservation today to ensure this special rate.


Museums and the Web: An International Conference
March 16-19, 1997
Los Angeles, California

Sponsored by the Getty Information Institute
Organized by Archives & Museum Informatics

An International Conference devoted exclusively to Museums and the Web

March 16-19, 1997

Omni Los Angeles Hotel & Centre
930 Wilshire Boulevard
Los Angeles, California  90017, USA
Telephone: 1-213-688-7777
Reservations Telephone: 1-800-843-6664 (1-800-THE-OMNI)
Reservations Fax: 1-213-612-3987

A block of rooms for the conference have been reserved from Sunday, March 16
to Wednesday March 19, 1997. The hotel will offer the special conference
room rate as long as they have rooms available.

Conference Room Rates: (All rates are in US dollars and rooms are subject to
prevailing state and local occupancy taxes, which currently stand at 14%.)

Single/Double Rooms: ($25 extra person charge)
$119 (Standard) $129 (Deluxe)   $139 (Club)

(The hotel's normal rate for a Standard single/double room is $169/$189)


Travel, Hotel, and Car Rental arrangements at special discounts can be made
        Forum Travel, Ltd.
        4608 Winthrop Street
        Pittsburgh, PA 15213
        Telephone: 1-412-681-4099 or 1-800-888-4099
        Fax: 1-412-687-6766

Air Transportation
     American Airlines is the official carrier for the conference. For
discounted airfares, cite American Star #S0237AC
     USAIR is also offering discounted fares for registrants who cite USAIR
Gold File #GF19380212.

COSTS: (all costs are in US dollars)

Late registration (after February 15, 1997) - $495
Single Day and Student registration         - $175

Workshops:      Half day - $100 Full day - $180

Exhibits: (March 17 & 18 only)
Single (8'x10')  -   $900
Double (8'x20')  - $1,650
Quad  (16'x20')  - $3,000

All booth space includes electrical and table/chair set-up
and can include any number of network connections (10 base T
to a T1 line) at $100 each. One-half the space rental fee
must accompany the signed Exhibitors Contract. The remaining
half of the rental fee will be invoiced and be due February
1, 1997. Contracts received after  February 1, 1997 must be
accompanied by full payment of the rental fee.

David A. Wallace
Archives & Museum Informatics
5501 Walnut Street, Suite 203
Pittsburgh, PA 15232-2311  USA
voice: +1-412-683-9775
fax:   +1-412-683-7366


Date:    Tue, 4 Mar 1997 11:41:22 -0500
From:    Dafna Naphtali 
Subject: Re: MAX Digest - 2 Mar 1997 to 3 Mar 1997

Paul Dresher, composer
Tuesday March 4  7 p.m.
Pleiss Hall
82 Washington Square East  2nd floor

In collaboration with NYU's Music Technology Department and the Interactive
Performance Group is pleased to present composer Paul Dresher in a
behind-the-scenes discussion about his current work with the Paul Dresher
Ensemble Electric Chamber Band. A concert of theis new work will be
presented at Merkin Hall on March 6th as part of the World Music
Institute/Interpretations series called "Guitarnight."

Paul Dresher (composer, artistic director of the Paul Dresher Ensemble) is
a composer pursuing music interests in many media, including experimental
opera and music theater, live instrumental electronic music performances,
and electro-acoustic tapes and scores for theater, dance, video, radio and
film. His performances utilize progressive contemporary music technology
and the theatrical works use the resources of experimental theater to
examine diverse issues in contemporary American culture. He has guided the
creation of the "American Trilogy," a set of music theater works which
address different facets of American culture, in collaboration with
writer/performer Rinde Eckert. Dreshers' commissions have included works
for the St. Paul Chamber Orchestra, Spoleta Festival USA, Kronos String
Quartet and the American Music Theater Festival. His work has bee n
performed at the Munich State Opera, the New York Philharmonic, the BAM
Next Wave Festival, the Minnesota Opera, the Cal Arts Festival, and in
several New Music America Festivals.

Harvestworks Digital Media Arts
596 Broadway, Suite 602
NYC 10012


Date:    Tue, 4 Mar 1997 09:30:03 +0000
From:    Jem Finer 
Subject: Version 3.5 in the UK

Hello again,

Last time I inquired as to the whereabouts of v3.5 in the UK someone posted
the name of THE person to contact at MCMXMMC or whatever its called -
unfortunatley I managed to bin all my incoming email.
Anychance of letting me know the persons name again.


Jem Finer

Kentish Town
London NW5


Date:    Wed, 5 Mar 1997 02:17:28 +0900
From:    Takahiko Suzuki 
Subject: [HELP] MAX on System 7.6


I have problem with MAX 3.5 on System 7.6.

The problem happened on me is very serious.
I installed MAX from CD-ROM with its installer. Installation and
authorization was finished successfully. After installation, I played with
MAX for about 2 hours. In those 2 hours, I had a several crash and
suddenly MAX shows a message as follows.

    Your MaxFAT3.5 master diskette is required at this
    time. Please insert the diskette into any available

Then, I put a master disk in floppy drive. But MAX told me as follows.

    Error while varidating the authorization count. The
    authorization count on your master disk has been
    corrupted. You may use this master as a key disk, but
    you can't perform any installations or removals.

    Result code: 105

What happened on my diskette? I had a same problem with MAX 3.0 on System
7.5. But this time is more terrible, diskette doesn't work as a key disk.
So, MAX 3.* doesn't work on my machine. I'm STILL using 2.5.2, though I
upgraded MAX for 2 times.

If someone using MAX 3.5 on system 7.6 without problem, please let me
know. I can't figure out the problem.

To Opcode:
Please stop using SOFTWARE copy protection and please consider Hardware
copy protection. I don't want to waste a time with needless trouble, and
also money.

               Takahiko Suzuki

                  mail :
                   WWW :



Date:    Tue, 4 Mar 1997 10:25:21 -0800
From:    Fred Malouf 
Subject: Max Bug?

Is this the correct forum for bugs?

I am developing on an 8500 and I am using Max 3.5. I have an object that
uses the window calls.

Issue 1: A call to wind_new puts up a window with scroll bars by
default.  I don't know how to get rid of them (I am not setting the
flags - the only flag I use is WCLOSE).  PPC only.  Even my old 68K
object does the same thing, whereas before there were no scroll bars.

Issue 2: 68K only - When I double click on my object the window does not
become visible although the object apears to be functional (running


Fred Malouf           
NetSource Communications, Inc.


Date:    Tue, 4 Mar 1997 11:42:08 -0800
From:    Peter Elsea 
Subject: Stack overflows

About defer, Nick Rothewell notes:

>I thought it deferred activity out of interrupt and into the Toolbox event
>loop, so with a menu held down that could be a long time. Or are deferred
>events just entered after any interrupt event? (Overdrive assumed in this

This seems to be correct. A deferred action will hold off until menus are
released, file operations finish, and so forth.
Here's an experiment to find out- write a patcher that uses notein and
stripnote to trigger three events, such as the messages 1 2 3 (left to
right). Connect message 2 to a defer, then to a button and a capture (by
the way, you can make capture larger with an argument and dump it with the
dump messge- see the help file.) Also connect 1 and 3 to buttons and the
capture. Finally, stick a menu object in the patcher somewhere.
With overdrive off:
Hitting a note will flash all the buttons and produce the sequence 321 in
the capture.
if you hold the menu open and hit a note, the same things happen, but not
until you let go the button.

With Overdrive on:
Hitting the note will produce the sequence 312 in the capture.
If the menu is held open, the two undeferred buttons will flash
immediately, and the deferred one will wait until you let go.

What we have here is three levels of priority. Max keeps all pending
operations in a list called a queue. Normal user actions are put at the end
of the queue. In the normal course of things, Max works its way through the
queue, so what's at the front of the queue has a higher priority than
what's at the end.  When there are two consequences  to an action (a
branch) Max executes the right hand one, and stores the left one on the
stack. When the last right hand consequence is executed, Max takes the most
recent message from the stack and executes that. Eventually, the stack is
depleted ( most of it occurring backwards) and Max takes the next item from
the queue. The stack has higher priority than the queue.

Some events get put at the front of the queue, and they and all their
consequences are executed before anything from the queue but it still after
the stack.

If overdrive is on, certain events will be exectued right away,
interrupting the stack execution. These are the ones to watch for.
Generally, that includes MIDI input and its consequences. If something at
the end of a right branch retriggers that same path, the stack will fill up
with unexecuted messages and if you are lucky, you'll get the stack
overflow error. More likely, the Mac crashes.

Defer puts its triggering message at the end of the queue. Defer will not
cure all looping ills- race conditions are still race conditions. But it
will help in the situation where you have a loop terminator that is somehow
being tested after the feedback.

Peter Elsea
Electronic Music Studios
University of California, Santa Cruz


Date:    Tue, 4 Mar 1997 14:39:50 -0600
From:    Steve Galante 
Subject: Re: unlimited CAPTURE

>Date:    Mon, 3 Mar 1997 11:04:30 +0000
>From:    "Gregg Wagstaff, University of Dundee,
>         Scotland." 
>Subject: unlimited CAPTURE
>Can anyone point me in the direction of an object which will perform like
>'CAPTURE' without the restriction of 512 ints.

If you're just dealing with integers, try either _funbuff or _coll. You can
use pack to index each number to itself, or (if you want multiple copies of
numbers) add a counter to index. If you're inputting lists, just _iter them


Date:    Tue, 4 Mar 1997 13:04:52 -0800
From:    David Zicarelli 
Subject: Re: Max Development Question

Fred Malouf  asks:

>I am using the Mac Devleopers Kit to upgrade a patch I wrote
>about three years ago.  I am using CodeWarrior 8.  The 68K
>version compiled just fine. The PPC compiler kept complaining
>about the second argument in my call to preset_store.  The second
>argument is the object that gets passed in.  It was trying to
>cast it to a struct 'b100' which is how it's defined in
>ext_proto.h.  What is this struct?  Why does it compile for the
>68K and not the PPC?

Change the prototype for preset_store in ext_proto.h to the following:

void preset_store(char *fmt, ...);

I just made an external to test this and it works fine, although
as has been discussed before, passing PowerPC floating point numbers
on the stack in this way won't always produce the results you want.
Here's what I did that worked:

void dial_preset(Dial *x)
    //preset_int(x,x->d_val); the usual way
    preset_store("ossl",x,ob_sym(x),gensym("int"),x->d_val); // same thing

David Z.


Date:    Tue, 4 Mar 1997 14:15:30 -0800
From:    Fred Malouf 
Subject: REALAUDIO/MAX Algorithmic Music Stream

Maurice Methot (Brown University) and Julian Richards (Rhode Island
School of Design) have set up a RealAudio server that streams
MAX-generated algorithmic music continuously ("all algorithmic -- all
the time -- no commercial interruptions "). The URL is -- Check it out! The plan, once we are past the
proof-of-concept phase, is to include outside programming in the form of
MAX patches that can generate music without realtime human interaction.
You will need RealAudio Player 3.0 to hear the stream, which is availble
without charge from Inquiries and feedback should be
sent to

Posted for Maurice Methot (he's having trouble posting to the group)


End of MAX Digest - 3 Mar 1997 to 4 Mar 1997