ReWire - Technical information

Background Information

ReWire is system for streaming audio from one application to another. The API, which is written in ANSI C, also has support for positioning information, making it possible to press play, shuttle, set loop points etc. in either program. ReWire 2 has been extended with more functionality such as MIDI streaming and a toolkit for communication between the applications.

Terminology

A Device is the audio generating part of the ReWire system. It's a Dynamic Link Library (DLL under Windows, Shared library under MacOS).

A ReWire Device exports the RWDEF (ReWire Device Exported Functions) which the ReWire system calls, and uses the RWD interface (ReWire Device interface) of the ReWire system. A ReWire Device does not have any user interface; this is provided by the Panel application.

The Mixer application is the application that asks the ReWire Device to generate audio. To start the ReWire system it loads the ReWire shared library/DLL and queries the system for available Devices. It can at this point query for channel count and names for the channels. The Mixer application only interacts with the ReWire shared library/DLL that in turn is responsible for loading/unloading the ReWire Devices. Writing a ReWire Mixer application is fairly straightforward with only a few function calls to implement.

The Device DLL:s are loaded into the address space of the Mixer application to allow the Mixer application to do direct function calls into the ReWire Device DLL.

A ReWire Mixer application uses the RWM interface (ReWire Mixer interface) of the ReWire system.

The Panel application is the user interface application for the ReWire Device. When running in ReWire mode, the ReWire panel application is not in the same address space as its corresponding ReWire Device, making it impossible to do direct calls into the ReWire Device DLL.

The Audio Mixer application and Panel application are two separate applications, therefore the Panel application can never rely on being in the same address-space as the Device. The ReWire SDK provides a toolkit for doing communication across process boundaries.

The Panel application talks only to the ReWire Device and is unaware of the Mixer application.

A ReWire Panel application uses the RWP interface (ReWire Panel interface) of the ReWire system.

Technical specifications

  • Virtually unlimited number of simultaneous Devices, both installed and running.
  • Each Device has 0 to 256 audio channels.
  • Signal information is a 32-bit floating point number with a signal range from -1.0 to +1.0, inclusive.
  • The protocol supports any sample rate, although a Device may be limited to specific sample rates.
  • High-precision (near sample accurate) synchronization.
  • The protocol includes transport information making it possible to control the playback from both the Mixer application as well as the Device.
  • Positioning and loop-point information is transmitted between the Device and Mixer application.
  • Cross-platform. (Mac OS 10.5 and later 32/64 bits, Windows XP 32 bits, Windows Vista and later 32/64 bits)
  • MIDI input/output to and from Devices with up to 4080 individual MIDI channels per device, 255 MIDI bus/16 channel per bus.
  • MIDI implementation querying. Ability for the Mixer application to find out a device's MIDI implementation details such as which and what ranges of controllers the device supports.
  • Several Mixer applications can be installed but only one Mixer application can be running.
  • An application can act as both a Mixer application and a Panel application at the same time.