NATO.0+55+3d modular, page 03/14
Let's Get Wet / Display Objects
Let's Get Wet
I'm going to demonstrate NATO modular by doing a run-down of the major object classes, and by showing some quick and dirty usage examples. If you're not familiar with Max programming keep in mind, when reading the screenshots, that the events move from right to left and from bottom to top. Data flows through objects from the top -- the `inlets` -- to the bottom -- the `outlets`. I'll try to make the examples as clear as possible, but don't get too caught up in trying to decipher the screenshots.
Most of the NATO objects take NATO image data and commands in through one or more inlets, process/analyze the data, and output it from one or more outlets. Exceptions to this rule are image generators, which don't take any NATO image data in, and display/recording objects, which generally don't send image data out. NATO image data flows along the same patch cords that regular Max data does. SIDE NOTE: MSP has a special patch cord color which identifies audio data flow, to distinguish it from the regular Max data. It would be lovely if NATO did the same, but my understanding is that this is an accommodation which Cycling '74 would have to make -- 0f0003.MACHIN3NKUNST can't incorporate this feature on its own.
Display Objects
Since seeing your QuickTime media is the most basic application of NATO, we're going to start with the display objects. The display objects in NATO are referred to as `ekran`s. NATO's object-naming convention places a `242.` before the name of each object. Currently, there are six display objects -- `242.ekran`, `242.ekran02`, `242.ekran04`, `242.ekran07`, `242.ekran08` and `242.ekran09`. The screen shot below shows three of them.

The image on the bottom left is being displayed in a `242.ekran` window. The object itself is contained within the Max patch (on the left). When image information is sent to this object, and the object is `opened`, a window is created containing the image data. `242.ekran` has numerous features, including masking and matting, a variety of transfer mode settings (images may interact with the foreground, background, or opcolor of the window), clear mode settings, and several scaling modes (so that image data is properly sized -- or not -- to fit the window). It can be resized via commands (note the `dim.set` message attached to the object), or manually, by command-click-dragging on the lower right corner. It will report its size, fill the screen, hide the cursor or menubar, and will register mouse activity above it.
The big image in the top left is being displayed by `242.ekran02`. Although it appears to be just another `242.ekran` window, it's significantly different. Like `242.ekran`, `242.ekran02` is an object in the Max patch (on the right). However, `242.ekran02` permits images to be displayed directly on the Macintosh Desktop. If I put Max in the background, the image is still playing on my Desktop, covering up everything else. It also has a huge variety of commands available to control placement, size and most of the other options available to the basic `242.ekran` object. `242.ekran02` will also output a specified portion of the Macintosh Desktop (through its outlet), which can then be recorded to a file (using the `242.rekord` object).
Finally, within the Max patch itself, you can see `242.ekran04`. In this case, the in-patch image is both the object and the screen (Max calls this a user interface object). `242.ekran04` is useful for previewing images onscreen, or monitoring image output (if, for example, you're sending your video out to an external display, you can keep your eyes on your computer screen, and still know what's going on).
Although not shown, `242.ekran07` is just a simplified and optimized version of `242.ekran`. If you don't need masking and matting and can live without a few other features, you'll benefit from a faster display window. `242.ekran08` is an expanded version of `242.ekran04` which supports masks. `242.ekran09` adds transfer mode support to the `242.ekran04` family.
Display objects can be placed at any screen coordinates, which means that if you've got multiple displays attached to your computer, you can place your `242.ekran` window on the second or third display (which might be a projector, for instance) and tell it to fill the screen. There's even a NATO object (`242.monitor`) which will report the number of attached displays and their screen coordinates. Nice.
For the remainder of this article, I'll be using `242.ekran04` exclusively in the screenshots.
all materials on this site (text, images, etc.) © 2000-2001 Jeremy Bernstein