[To be published in Computer Music Journal 18:4 (Winter 94)] A Summary of the ZIPI Network Keith McMillen*, David Simon&, and Matthew Wright*&& *Zeta Music/Gibson Western Innovation Zone 2560 9th St. Suite 212 Berkeley, California 94710 USA &Probitas Corporation 2570 El Camino Real, Suite 310 Mountain View, CA 94040 &&Center for New Music and Audio Technologies (CNMAT) Department of Music, University of California, Berkeley 1750 Arch St. Berkeley, California 94720 USA McMillen, Matt@CNMAT.Berkeley.edu The ZIPI network specification defines a collection of communication protocols intended for musical instruments and other similar devices. The network is laid out as a star-shaped token-passing ring with a hub in the center. One device, typically the hub, monitors the general health of the network. The protocols constitute a stack that conforms to the open systems interconnection (OSI) model. This is a technical introduction to the ZIPI network, summarizing the capabilities of the protocols and the full specification. We explain briefly what the ZIPI network does, how it works, how a network of ZIPI devices is connected, and what is involved in building instruments to run in conjunction with ZIPI networks. Body and Soul ============= The key feature of ZIPI, in our opinion, is our definition of the Music Parameter Description Language (MPDL), an application-level protocol for sending musical information. A complete network standard must of course define a physical layer as well as the application layer, so this article describes an appropriate physical layer that can handle the bandwidth and determinacy required for a real-time interface. Great strides are being made in networking technology with regards to performance, cost, and features. Ethernet (Tanenbaum 1989, section 3.4.1) is now common on many personal computers, and there are fast, deterministic versions of it. In fact, our first prototype MPDL implementation is based on IP/UDP (Tanenbaum 1989) and Ethernet. We are carefully keeping the nature of the physical implementation separate from our specification of the MPDL to allow the MPDL to run on other networks such as Apple's announced 150 MBaud serial protocol Firewire (Teener 1994) and Lone Wolf's Medialink (Lacas, Moses, and Warman 1993). Unfortunately, all of these physical layers are currently much more expensive than the US$ 5 that ZIPI interface hardware costs. We cannot imagine that ZIPI will gain widespread acceptance if manufacturers must add hundreds of dollars to the price of an instrument to make it ZIPI-compatible. Therefore, we have chosen a physical layer that has acceptable performance at a very low cost. OSI === "OSI" stands for "Open Systems Interconnection." It was developed by the International Standards Organization as model for how to divide computer networks into various conceptual layers (Tanenbaum 1989). ZIPI's organization conforms to this model. OSI's seven layers and their functionality are shown in Figure 1. [Figure 1 would go here if this weren't the ASCII version] A possible physical layer and data link layer have been fully defined. In addition, a network-layer naming service is specified and various application-layer protocols have been defined. Routing, transport, session, and presentation protocols are not specified, as we see no immediate need for them, but hooks have been left to allow the inclusion of such protocols. Features of the ZIPI Protocols ============================== The following features of the ZIPI protocols are the most notable. - Peer-to-peer architecture: Any device can send frames directly to any other device on the ring, or to all devices at once. Up to 253 devices can be on the ring. - Low per-node cost: The hardware required to implement the network on a node consists of a serial controller chip, a small PAL, and a dual opto-isolator. The total cost is under US$ 5. - Low development cost: We will provide sample schematics for the hardware, the PAL equations or already-programmed PALS, and most of the software needed to implement the lower network layers and much of the MPDL. A manufacturer need only provide software to deal with the hardware-dependent aspects of its node. - Serial Communications Chip: Most of ZIPI's lower levels are taken care of by the 8530 serial communications chip (SCC), an inexpensive, plentiful chip found in Apple Macintosh and Silicon Graphics computers. It is a dual device and can support both MIDI and ZIPI at the same time. - Compatibility: The protocol works with other protocols. Specific provision has been made to carry MIDI data over the ZIPI data-link protocol. Hooks have been left to run other protocols as the market requires. - Open architecture: We have published the draft specifications for the protocols and will continue to publish revised specifications. - Efficiency: The protocols allow the most common information to be passed in very small frames. The token-passing network scheme uses most of the network bandwidth for transmitting data. Typical applications would be on the order of 95% efficient. - Determinism: The token-passing ring guarantees that each node will get a chance to send data whenever the token comes around the ring. Once a device has the token, the data that it transmits is guaranteed to arrive before a certain time, since no device has permission to talk while another holds the token. - Fault tolerance: The network does not fail if one of the nodes fails; protection in the hubs will simply remove a failed node from the ring. - OSI: The protocols conform to the OSI model, allowing ZIPI to interface with other networks such as Ethernet or FDDI. - Expandability: ZIPI has been designed to allow adding new features to existing protocols or adding entirely new protocols. - Speed: The network operates at speeds from 250 kHz and up. (Presently available hardware will support up to 20 MHz.) The data rate is variable depending on the capability and requirements of the devices on the network. Initial turn-on baud rate is 250 kBaud, but there is a software protocol for bringing the baud rate up to any speed that all devices can handle. Another protocol allows two high-speed nodes to temporarily increase the network speed beyond the limits of slower devices. - Small Processor Load: Each host processor is interrupted only when it receives a frame addressed to it. Only the monitor device must see every frame. - Minimal Cabling Required: Each ZIPI device needs only one cable to connect it to the network. ZIPI cables will be inexpensive. Network Functionality Overview ============================== The ZIPI protocols are divided into layers according to the OSI model. The following sections summarize network operations at the various layers. Physical Layer -------------- Logically, ZIPI devices are connected in a ring, in which each device passes data to the next one around the ring. Physically, the devices are connected in a star-shaped configuration in which each device is connected to an active "hub" at the center of the star, as shown in Figure 2. The hub maintains the logic of a ring by sending the data coming from each device out to the next device in the star, as shown in Figure 3. Each connector on each hub has a set of relays to bypass that connector if no instrument is attached or if the attached instrument has failed or been turned off. [Figure 2 would go here if this weren't the ASCII version] [Figure 3 would go here if this weren't the ASCII version] Devices are connected to the hub by a 7-wire cable with two directions of ZIPI data flowing through it. Each direction has a clock, data, and current line; the seventh wire is for shielding the entire cable. Each cable end is terminated with a 7-pin DIN plug; the pin-out for 7-pin ZIPI plugs is shown in Figure 4. ZIPI cables can also be terminated with an eight pin mini-DIN connector to allow ZIPI interfaces to be built into laptop computers. In that case, the pin-out is as shown in Figure 5. [Figure 4 would go here if this weren't the ASCII version] [Figure 5 would go here if this weren't the ASCII version] By having one cable carry ZIPI information in two directions, each device will need only one female 7-pin DIN connector. ZIPI hubs will have multiple female 7-pin DIN connectors, all equivalent. A device can be attached to a hub using a male-to-male 7-pin DIN cable. Hubs can be attached to one another simply by cabling any connector on one to any connector on the other. ZIPI hubs will have two LEDs per ZIPI plug, with the following meanings: - A device is connected and sending a clock. - The connected device is sending data. These LEDs should make it very easy for musicians to debug problems in their ZIPI setup, such as malfunctioning devices, bad cables, or loose connections. Figure 6 shows a typical hub configuration. [Figure 6 would go here if this weren't the ASCII version] ZIPI uses an opto-isolated current loop, like MIDI. Up to 253 devices can be connected on a single ring. The total distance from one device to the hub can be up to 300 meters. The preferred implementation of a ZIPI network device is based on the 8530, an inexpensive serial communications controller chip available from Zilog and from AMD, or on one of its close relatives (Zilog 1992). The 8530 running in "SDLC Loop Mode" implements most of the ZIPI physical layer protocol as well as some of the ZIPI data link layer protocol. The 8530 automatically handles most of the SDLC protocol (Tanenbaum 1989, section 4.7.1): device addressing, host processor interrupts only for matched addresses, data framing, CRC error checking, and hardware arbitration of who gets to talk when. It has a 4-byte FIFO buffer and supports DMA ("direct memory access"). Data is sent packaged in SDLC frames. A token circulates around the ring; devices are allowed to transmit only when they receive the token. When a device has completed its transmission, it must pass the token on to the next device on the ring. Since each device gives up the token as soon as possible, the token goes all the way around the ring many times in a second, ensuring that it is never very long before any particular device gets a chance to talk. Each ZIPI network must also have one device that implements a monitoring function to keep the network running smoothly. (Initially, ZIPI hubs will be capable of this monitoring function, and other devices will not, since each network must have a hub anyway, just for connectivity. Putting monitor functionality in the hub keeps the cost down for other devices.) First, the monitor provides a clock for all ring communications; devices on the ring can negotiate the speed of the clock. Second, the hub monitors the ring to ensure that the token is circulating and that no garbage circulates on the ring. It is possible to have multiple monitor-capable devices; the software protocols elect a single monitor from among the qualified devices. It is also possible to have passive hubs that provide connectivity with no monitor capabilities. When a ring of ZIPI devices is formed, an automatic start-up sequence begins. First, the ring monitor is elected. The clock rate is determined, and all the other network setup happens automatically within a second of connecting the ring. From the user's point of view, just turn everything on and plug everything in and ZIPI will work fine. Data Link Layer --------------- The data link layer provides the following services in addition to sending and receiving frames: It ensures that data has been received correctly by checking the CRC included with each frame and discarding frames in which the CRC is bad. It sends acknowledgments of received frames (at the option of the sender). It establishes an address for its device that is unique among devices on the network. It negotiates with the other devices on the network to determine the clock speed at which the network runs. The data link layer in the device monitoring the ring also ensures that there is a token on the ring and that no garbage is on the ring, and notifies other devices when the clock speed is changing. It synchronizes the real-time clocks of all devices on the ring to within 50 msec. Network Layer ------------- ZIPI includes a network-layer naming protocol to allow devices on the network to find one another either by name or by any of a large and expandable list of characteristics. For example, the naming protocol allows a device to search the network for "synthesizers that can accept data at 1.0 Mb per second or faster and that run ZIPI protocol version 1.1 or later." Application Layer(s) -------------------- ZIPI will contain multiple application layer protocols. They include the following: - The Music Parameter Description Language: The MPDL is a language for describing music. It delivers musical parameters (such as articulation, brightness, etc.) to notes or groups of notes. This language is fully described in another article earlier in this issue of *Computer Music Journal*. - MIDI: The MIDI protocol can be sent through the ZIPI network, converted back to the MIDI physical layer, and used to control a MIDI device on the other end. - Patch Dumps: Patch dump messages will include the manufacturer ID, instrument ID, patch name, and patch number, in a universal format, followed by any arbitrary amount of manufacturer-specific binary data. This allows any patch librarian to work with any ZIPI synthesizer, without knowing the patch data format. - Sample Dumps: There will be a standard format for sending digital audio over ZIPI, with a file format to be determined. - Data Dump Protocol: A format will be defined for transferring unrestricted binary data, such as memory dumps, inter-computer communication, compiled software, etc. over ZIPI. - Error messages: ZIPI devices with limited user interfaces can send ASCII-encoded error messages, which will be picked up and displayed to the user by another device, e.g., a computer. - Other Application Layer Protocols: Other application layer protocols may include: mixer automation, lighting, and effects control (yet undefined); machine control/synchronization (yet undefined); and images, sound, and gestures for virtual reality (yet undefined). There is room to add potentially thousands of more application layers in the future. Other Layers ------------ Hooks have been left for other OSI protocol layers, but these protocols are not currently defined. Building a ZIPI-Capable Device ============================== A ZIPI device needs the capabilities of the 8530 SCC running in SDLC loop mode. In general terms, a ZIPI device must be able to send and receive SDLC frames and to recognize and capture the token as it circulates around the ring. A sample schematic for the ZIPI network hardware is in Figure 7. The required parts for a network device are: an 8530 SCC or equivalent; an inexpensive 22V10 PAL (the equations for which are available from Zeta Music); a fast dual opto-isolator (e.g., the Texas Instruments HCPL2630) for the receive data and receive clock lines; and miscellaneous resistors, capacitors, and diodes. [Figure 7 would go here if this weren't the ASCII version] We will provide the source code in C for the data link layer and some useful routines for implementing the upper layer protocols. The following software must be provided by the manufacturer: an interrupt routine for the 8530 that pushes the necessary registers, calls the routines provided by us, and resets any interrupt control hardware other than that in the 8530; and software to set up a timer, handle the timer interrupt, push the registers, and call the pre-defined routine. In addition, our source code must be configured with such items as the address of the 8530 SCC and the frequency of the timer interrupt. Building a ZIPI Monitor ----------------------- In addition to the functionality required of every ZIPI device, the monitor must implement the following: a 16-bit delay in the ring in order to float the token (although in practice this delay may be somewhat longer); re-synchronization of the data to deal with the problem that the clock the monitor uses to send data might not be in phase with the clock it uses to receive data; recognition that the token has been lost and the ability to then put a new token on the ring; the protocol for electing a ring monitor when several monitor-capable devices are connected to the ring; and the protocol for picking a clock speed. For more information ==================== For a detailed specification of the network described here, please contact the authors. References ========== Lacas, M., B. Moses, and D. Warman. 1993. *The MediaLink Real-Time Multimedia Network*. Conference Preprint #3736. New York: Audio Engineering Society. *SCC User's Manual*. 1992. Campbell, California: Zilog Corp. Tanenbaum, A. S. 1989. *Computer Networks*. Englewood Cliffs, New Jersey: Prentice Hall. Teener, M., ed. 1994. *High Performance Serial Bus*. P1394/Draft 6.8v1. New York: The Institute of Electrical and Electronic Engineers.