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.
- A computer can "play" the Chroma's keyboard and performance controls.
- A computer can record what a human plays on the keyboard and performance controls.
- A computer can change sounds, or modify parameters in existing sounds.
- A computer can record the changes made to a sound by a human manipulating the panel controls of the Chroma.
- A computer can load or save packets of information using the cassette interface.
- A computer can temporarily alter the workings of the Chroma by changing the firmware of the Chroma's internal computer. This facility is not likely to be very useful to anyone outside Rhodes, but may be used in future products designed to enhance the Chroma.
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:
- The Polaris has a different set of parameters and a different number of programs.
- The Polaris has no latch footswitch or effects pedal.
- When a computer is recording from the Polaris, the Polaris can generate three streams of notes. The first two come from the keyboard, as in the Chroma, and the third comes from the Polaris' internal sequencer.
- The Polaris only has six voices. Even so, eight sounds can be set up at one time. The Polaris, unlike the Chroma, dynamically allocates voices to the different sounds as notes are played.
- In the Polaris, each program may or may not exist. In the Chroma, all programs always exist.
- The Polaris has some additional interface commands that allow access to sequence objects as well as program objects.
- The Polaris doesn't support a few of the commands understood by the Chroma.