From:
                                                             2/8/97 12:00 AM
Subject: MAX Digest - 6 Feb 1997 to 7 Feb
1997To: Recipients of MAX digests 

There are 5 messages totalling 290 lines in this issue.

Topics of the day:

  1. Behaviour of *counter*
  2. 
  3. MMC installment 4
  4. MIDI System sw (2)

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

Date:    Fri, 7 Feb 1997 15:40:08 +0100
From:    Georg Hajdu 
Subject: Behaviour of *counter*

Hallo MAX users-

I haven't been able to follow the list for a few weeks and I am not updated
about the recent bug reports. Maybe, my observations are obsolete.

Anyway, I tried to use MAX 3.5 for the performance of a piece of mine and
suddenly realized during the dress rehearsal that a patch wasn't doing
what's supposed to do. It took me quite some time to figure out that the
MAX 3.5-counter object behaved differently (compared to 3.0).
For instance, if you set direction, minimum and maximum and you send the
"resets counter to number on next clock" message, counter will return to
minimum instead of going to the number set! :-(
It shouldn't be doing that, right?

Any help is appreciated.

-Georg

***********************************************
* Georg Hajdu                                 *
*                                             *
* Hochschule fuer Musik Detmold,              *
* Abteilung Muenster                          *
* Ludgeriplatz 1                              *
* D-48151 Muenster                            *
*                                             *
* e-mail: hajdu@uni-muenster.de               *
* http://www.uni-muenster.de/Musikhochschule/ *
* Dozenten/Hajdu/home.html                    *
***********************************************

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

Date:    Fri, 7 Feb 1997 10:28:57 -0500
From:    Garth Blair 
Subject: 

"SIGNOFF MAX"

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

Date:    Fri, 7 Feb 1997 12:17:52 -0800
From:    Peter Elsea 
Subject: MMC installment 4

MMC micro tutorial continues. --Reading and writing information fields.
So far we have dealt with open loop MMC operations. You send a command to
the machine and it responds (or doesn't). More sophisticated control
requires a closed loop with MIDI output from the deck returning to your
application. Information can be returned as a result of an inquiry,
automatically when things change, or steadily at a desired rate.

The MMC spec defines the kinds of information that may be available. The
information is organized in "fields", which may include up to 60 bytes of
information. In many cases, the information is packed into odd groups of
bits within a byte, and you have to do some masking and shifting to extract
the information.

(review of some basic stuff: a byte contains 8 bits. A bit is numbered
according to the power of 2 it represents- so bit 0 is the least
significant or rightmost bit, bit 5 has a value of 32, etc. To extract bit
6, the object [& 64] will yield 64 if the bit is set and 0 if it is not. To
read the value represented by bits 0-3, use [& 15]. (That's the same as &1
+ &2 + &4 + &8). To read the value coded in bits 4-6, use [>> 4] followed
by [& 7].)

You can get the data in  a field with the read command:
{240 127 ID 6 66 1 fn 247}
The 66 indicates a read command.
The 1 indicates there is 1 request in this message (You can string requests
together- the total number goes in this spot)
fn is the number of the field you want to read.

For instance [sxformat 270 127 0 6 66 1 72 247] will generate a message
that tells if the deck is stopped, playing or in fast motion. The message
will look like this:
{240 127 ID 7 72 3 ms  mp  ss 247}
The header and ID are followed by 7 for response,  the field you are
getting, and the length of the following data.

   ms is the motion control state. These numbers are the same as the motion
commands. Notably missing is 6 for recording. To find out if the deck is
recording or not, you have to read another field.

  mp is Motion Control Process. A process is a series of actions, such as
rewind and play.  Some defined codes are 11= chasing,  68 = locating, 127 =
no process

  ss is status and success level.  In other words, if a deck takes a while
to get up to speed, this tells if it's ready yet.  Status for commands is
in bits 0 - 2:  0 means "in progress", 1 means "finished" and 2 means it
didn't work. Status for processes is in bits 4-7, with the same meanings

To find out about recording, ask for field 77. The response is
{240 127 ID 7 77 1 rs 247}
where rs has bits set to indicate various things. Decode by masking:
bits 0-3  give
0 = not recording or rehearsing
1 = recording
4 = rehearsing
6 = record pause
bit 5 means record inhibited (a protected cassette, for instance)
bit 6 means rehearse inhibited
bit 7 means no tracks armed

Before I go any farther, I should point out that the response
{240 127 ID 7 66 1 nn 247}
is always possible. It means field nn is not available for viewing.

There are about 70 fields defined in the MMC spec so I can't go through
them all. One of the most interesting is field 1, which contains the
current tape location. The response string will be
{240 127 ID 7 1 hr mn ss fr st 247}
with the hours and seconds including time code format and status flags as I
mentioned in an earlier installment.

If you are using the ADAT-Cooper system, you may be surprised by what you
see. Right out of the box, the Cooper Datamaster reports location as if the
00 00 on the ADAT was 1:00:00:00. It is common practice to start time code
just before the 1 hour mark, with the action beginning at the hour. This is
because time code has to preroll a few seconds to allow machines time to
lock up, and the time before 00:00:00:00 is 23:59:59:29. When decks see
that, they zing into fast forward. You can set other offsets in the
Datamaster for time code, but the MMC commands seem to keep the extra hour.
However, if you locate to 1:00:00:00, it will run off the end of the tape.

You can also write to some fields within a MMC device. Some of the most
useful are 8 to 15, the general purpose location registers. These give you
8 locate points that are independent of Loc 1 or any other panel control.
To use them, you first write the location wanted, then send a locate
command.

To write to a GP register send the string {240 127 ID 6 64 6 fn hr mn ss fr
st 247} where fn is the field number.

To go there, use the locate command with 0 as the subcommand:
{240 127 ID 6 68 2 0 fn 247 }
 Next week I'll talk about arming tracks-
Here's today's example:

max v2;
#N vpatcher 20 42 557 476;
#P newex 8 41 164 196617 sxformat 240 127 0 6 66 1 1 247;
#P button 8 21 15 0;
#P comment 27 21 63 196617 Get Location;
#P newex 221 89 131 196617 unpack 0 1 2 3 4 5 6 7 8 9;
#P newex 221 59 194 196617 match 240 127 nn 7 1 nn nn nn nn nn 247;
#P newex 221 25 43 196617 sysexin;
#P number 221 139 35 9 0 0 0 3;
#P newex 221 116 31 196617 & 31;
#P number 260 139 35 9 0 0 0 3;
#P number 300 139 35 9 0 0 0 3;
#P number 343 139 35 9 0 0 0 3;
#P newex 343 117 31 196617 & 31;
#P comment 222 155 14 196617 H;
#P comment 262 155 16 196617 M;
#P comment 301 155 14 196617 S;
#P comment 345 155 13 196617 F;
#P newex 21 183 170 196617 sxformat 240 127 0 6 66 1 72 247;
#P button 21 157 15 0;
#P newex 198 208 131 196617 unpack 0 1 2 3 4 5 6 7 8 9;
#P newex 198 183 185 196617 match 240 127 nn 7 72 3 nn nn nn 247;
#P number 331 242 62 9 0 0 2048 3;
#P number 287 242 35 9 0 0 0 3;
#P number 243 242 35 9 0 0 0 3;
#P comment 242 261 70 196617 Motion Status;
#P comment 41 157 88 196617 Get Motion Status;
#P number 230 295 35 9 0 0 0 3;
#P newex 251 345 136 196617 sxformat 240 127 0 6 68 2 0 / is $i2 + 8 / 247;
#P button 251 322 15 0;
#P comment 270 323 71 196617 Locate to GPx;
#P number 164 324 33 9 0 0 64 3;
#P comment 157 309 42 196617 Seconds;
#P comment 30 309 66 196617 Write to GPx;
#P comment 97 308 42 196617 Minutes;
#P number 97 323 33 9 0 0 64 3;
#P newex 35 345 197 196617 sxformat 240 127 0 6 64 6 / is $i4 + 8 / 96 / is
$i2 / is $i3 / 0 0 247;
#P button 36 324 15 0;
#P newex 21 386 41 196617 midiout;
#P comment 202 296 26 196617 GPx;
#P fasten 34 5 30 0 291 111 226 111;
#P fasten 34 6 29 0 304 122 265 122;
#P fasten 34 7 28 0 317 129 305 129;
#P fasten 34 8 26 0 330 111 348 111;
#P connect 33 0 34 0;
#P fasten 32 0 18 0 226 50 203 50;
#P connect 32 0 33 0;
#P connect 30 0 31 0;
#P connect 26 0 27 0;
#P fasten 19 6 15 0 281 233 248 233;
#P fasten 19 7 16 0 294 233 292 233;
#P fasten 19 8 17 0 307 233 336 233;
#P connect 18 0 19 0;
#P fasten 37 0 1 0 13 296 26 296;
#P fasten 3 0 1 0 40 383 26 383;
#P connect 20 0 21 0;
#P fasten 11 0 1 0 256 383 26 383;
#P connect 21 0 1 0;
#P connect 36 0 37 0;
#P connect 10 0 11 0;
#P connect 2 0 3 0;
#P fasten 12 0 3 3 235 315 226 315;
#P fasten 12 0 11 1 235 315 382 315;
#P connect 8 0 3 2;
#P connect 4 0 3 1;
#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:    Fri, 7 Feb 1997 17:30:00 -0500
From:    David Crandall 
Subject: MIDI System sw

(Apologies to those who get duplicates of this.  On my mailreader, the
correct key is "D")

Now that I have my shiny new 7600 at home, I'm going round again on the
question of the best setup in terms of MIDI drivers, etc. for use with
Max, Deck and an to-be-determined new MIDI sequencer (still using
MidiPaint, for Pete's sake!!), as well as ultimately ProTools/DAE
PowerMix.

So once again: Is there an information resource, article, whatever out
there that discusses the ins and outs of combining MidiMangler/Patchbay vs
OMS vs MidiShare, FreeMidi, whatever (including known extension conflicts
since I also use the machine for graphics and authoring)? I'll also now
need to ship QuickTime time code around as well as MTC, so I need to get
up on understanding that.  I posted this question a couple of years back
when I had to set up a machine at school and got no replies, so I assume
there were no resources available.  Any updates?  Basically I'm trying to
figure out a way to get back the kind of data-handling I used to get with
my Jambox (which I'm not using since nothing but MidiPaint will talk to it
anymore).

All replies, (war stories, bibliographic cites, etc.) are welcome,
including direct email replies.  BTW, I'm also kicking around the idea of
a Midi Time Piece AV versus one of the new MOTU ones with SMPTE, which I
don't know much about yet.

Thanks in advance,

David Crandall
dcrand1@umbc.edu

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

Date:    Fri, 7 Feb 1997 22:10:28 -0600
From:    "Brian K. Shepard" 
Subject: Re: MIDI System sw

>BTW, I'm also kicking around the idea of
>a Midi Time Piece AV versus one of the new MOTU ones with SMPTE, which I
>don't know much about yet.
>
Be aware that the MIDI TimePiece AV does not have a Modem/through port like
the MIDI TimePiece II does.  Thus you have to have an A/B Through switch if
you want to connect your Modem and MIDI to the same Modem port.  Good luck!

-Brian

Dr. Brian K. Shepard
University of Oklahoma
School of Music
bkshepard@ou.edu
http://www.ou.edu/music/BKS

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

End of MAX Digest - 6 Feb 1997 to 7 Feb 1997
********************************************