Pianocorder Data Format

The Pianocorder Data Format defines the format of Pianocorder serial data frames. This subsequently defines the base frame format as used in the Rock-afire Explosion Control System, as the data decoding in the control system is handled by original Pianocorder playback boards.

In contrast with the original Pianocorder which only used one channel of data, the Rock-afire Explosion Control System uses two channels, decoded entirely independently. The only difference between the channels is the assignment of data bit to controlled show element.

Biphase data format
Pianocorder data is a 4500 bps stream of biphase-encoded serial data. It is often said that biphase data is somehow "encoded as audio", but this is a misconception -- it's simply serial data running at a rate that happens to align with the range of frequencies commonly reproducible by standard audio equipment.

Biphase data is a self-clocking format, encoding a clock signal and the data payload in one signal. Essentially, the data is encoded in the zero-crossings, or transitions between a high and low state. Each bit transmitted has its own time slot. A transition marks the start of each time slot, and the presence or abscence of an additional transition within that timeslot (at the halfway point) determines whether the bit is a 0 or 1.

Biphase offers some advantages over other similar encoding techniques that make it uniquely suited to being stored on audio tape. It is not sensitive to polarity reversal, useful as it's not uncommon to find polarity reversals as an audio signal passes through equipment, which is otherwise of no consequence as human hearing cannot discern absolute phase. Furthermore, there is no consistent DC component to the signal. Audio equipment commonly has capacitor-coupled input and output stages which will slowly cause any DC component to drift to zero, as a consistent DC component is not audible, reduces available headroom, and can damage speakers. As biphase guarantees a zero-crossing at the start of each bit's time slot, this effect is rendered irrelevant.

Pianocorder frame format
Pianocorder frames are 128 bits in length and transmitted continuously at a nominal 35.15625 frames per second. Since the base biphase format has no concept of framing, the last byte of each 128-bit sequence is set to a fixed value, used to delimit each frame in the stream. Consequently, 120 bits per frame are available to the user.

TODO

 * elaborate on the format's use for animatronics control. explain how each frame encodes the entire state, in contrast with other command-based systems. etc
 * elaborate on how this can be read and processed in modern digital audio formats and code.