Programming Philosophy – Outside In

When programming a DSP system, it is often helpful to follow an “Outside In” workflow. This means that inputs and outputs are created and wired to processing objects before the internal signal routing is added to the design.


Most commonly, this begins with the inputs needed for the system. Each input to the system should be placed and all individual channels should be labeled first. Once the inputs have all been defined, any required input processing is added and each processing object is labeled. Labeling each processing object is a simple process and can greatly reduce confusion and errors when commissioning the system.

When multiple objects need to be given similar names with an incrementing number, select all of the objects and press F2. This will open the Rename Selection dialog which allows objects to be renamed using a wildcard to represent the incrementing number. 


All system outputs are placed next. Each output is labeled and named to indicate its purpose and then output signal processing is added to each output and labeled to indicate which signals are being processed by each object.

In many cases, it is useful to create analog outputs as multiple objects. Even though the outputs for speakers, recording, and codec are all analog outputs, making each stereo pair an independent object can make the project file easier to read and understand.

Mixing and Routing

The final step when creating a project file is the required mixing and routing between the inputs and outputs. For a teleconference room with multiple microphones, an Automatic Microphone Mixer (AMM) will be needed as well as a Conference Room Router (CRR). Both the AMM and CRR should have all inputs and outputs labeled to match the inputs and outputs of the system. With everything labeled, the inputs and outputs can be quickly wired to the AMM and CRR.


After all of the inputs and outputs have been wired to the AMM and CRR, the readability of the project file can be improved by adjusting the port spacing on the AMM and CRR inputs and outputs. It may also be useful to move inputs or outputs up or down in the Project View to make wiring simpler to follow.