Skip Navigation.
Section 0

Interface Manual: Introduction

This section should serve as an overview of the Chroma computer interface and of the topics that will be covered in detail in the subsequent sections of this manual.

Purpose of the interface

The Chroma computer interface is to allow the Chroma to be controlled by a computer. A Chroma can be controlled by another Chroma, but this is not the main intent of the interface.

Capabilities of the interface

The interface allows a number of different functions to be performed.

Physical nature of the interface

The computer interface consists of two identical 8-bit parallel ports, one for each direction. Each port consists of 8 latched data bits, a status line that tells whether there is information on the port, and an acknowledge line which is pulsed whenever a data byte is read from the port. All signals are TTL compatible, which means that interface hardware is simple and cheap. However, this also means that the interface is not designed to work over great distances or in the presence or ground differences or large amounts of noise. Each device must have a set/reset flip-flop driving the status line for its output port. This flip-flop must be set when writing a byte to the port and cleared by the acknowledge pulse received from the other end. The acknowledge pulse will normally be the read pulse used to read the data from the port.

Interface protocol

Communication in each direction is independent of communication in the other direction. The interface is best handled in an interrupt driven environment with a queue (first-in first-out list) for buffering the information in each direction (or at least in the input direction). There are two levels to the protocol, the physical and the logical. The physical level is kept simple by the fact that each byte transferred is acknowledged by the receiving end before another byte may be transferred. The logical level can be more complex because a communication that requests a response from the other end doesn't necessarily receive the response immediately. In fact, several different requests may be transmitted before the responses start coming back.

Command language

All communication issued by a computer to control a Chroma is in the form of commands. A command is a sequence of one or more bytes, where the first byte is the command code (similar to a machine language opcode) and the remaining bytes are operands. For instance, the command to set parameter 5 in program 9 to a value of 3 consists or the sequence 7, 9, 5 and 3. (7 is the command code for Write Parameter.) Certain commands require a response from the Chroma. In this case, the Chroma will respond by sending back what looks like a command that begins with the same command code. It isn't really a command, as the Chroma doesn't control the computer, but it takes a similar form. There are also commands to the Chroma that enable recording from the Chroma. When these commands are issued, the Chroma enters a mode in which it will send commands to the computer whenever a note is played or a control is moved. In a simple recording system, these commands may be played back verbatim at a later time. Thus, even though the Chroma doesn't actually tell the computer what to do, the communication in both directions is organized as commands.

The Interface view of the Chroma

The performer sitting at the Chroma "sees" a system that is capable of generating two sounds at a time using the Link capability. The computer connected to the Chroma "sees" a system that is capable of generating up to eight different sounds at a time using the "multiple instrument" capability. The reason that the performer isn't given this capability from the keyboard is that there is no easy and reliable way for a performer to "tell" the Chroma which notes go with which sounds, beyond a simple keyboard split. The computer interface doesn't have this limitation, as it can instruct the Chroma which sound to use with each note. The interface is designed to allow the performer to play one "track" at a time (or two, using a link) into a computer, and then the computer to play multiple "tracks" back as if there were multiple instruments being played.

The interface view of the Expander

A Chroma Expander looks just like a Chroma through the computer interface, except that it is not capable of generating keyboard information. It should be used for playback only.

The Interface View of the Polaris

A Polaris looks just like a Chroma, through the interface, except for the following differences: