Feedback Loop in Signal Flow

In order to achieve complex reverb processing implementation, you can provide feedback of one audio object to another audio object, this can be achieved by adding feedback connections in signal flow. You can add one or more feedback connections in a signal flow.

On adding any audio connection, if loop detected in signal flow, following prompt will appear. On clicking “Yes”, the connection will be changed as feedback connection. On clicking “No”, the connection will be added as a normal connection.

An existing audio connection can be changed to feedback connection using context menu option “Set as Feedback Connection”.

An existing feedback connection can be changed to normal connection using context menu option “Set as Normal Connection”.

The keyboard shortcut “Ctrl+Alt+F” can be used to set a normal connection as feedback connection or vice versa. You can select one or more connections and use this keyboard shortcut.

The feedback connection will be shown as dashed yellow line as below,

You can mark any audio connection as feedback connection. But remember that, the feedback connections will be ignored/skipped during execution order calculation.

If any loop connection detected on save or if a legacy signal flow already has a loop connection, the designer will indicate this and an error with the compiler will be reported. In order to save the signal flow, you must first remove any existing loops or set the loop connections as feedback connections.

Feedback connections are supported inside CAO and on connections of CAO.

Self-loop is not allowed on an audio object.

The execution order of audio objects will not be changed on adding new feedback connections in a signal flow. But changing an existing connection to a feedback connection can affect execution order because the feedback connections will be ignored during execution order calculation.

InPlaceComputation will be disabled on audio objects with feedback loop connection. This includes audio objects which are source and target of feedback connection.

Separate stream indexes will be allocated for feedback connections. Same index will be allocated for input and output streams of feedback connection. These indexes when in use, will not be reused for other connection.

There is no restriction to add loops in control connections.

Overview Of Signal Flow Designer

The Signal Flow Designer allows you to create a visual representation of a signal flow. The process of creating a signal flow involves dragging and dropping audio objects onto a virtual canvas, connecting them using virtual connections, and adjusting the settings for each component. Once the signal flow is defined, it can then be sent to the amplifier or other devices in the signal chain to process the audio and control signals according to the defined flow.

Additionally, you can create and modify signal flows in real time, which is particularly useful in live tuning. Live tuning can be dynamic and unpredictable, and signal flow designers can help audio professionals to make real-time changes to the signal chain to ensure the best possible sound quality and performance.

Relative Topics

Components of Signal Flow Designer

The Signal Flow Designer enables you to create and modify signal flow architecture. It includes a variety of components that you can use to design a signal flow. The components in the Signal Flow Designer are represented as blocks, and you can connect them using virtual connections to create a signal path. You can also adjust various parameters of each component to customize the signal flow according to your needs.

Signal Flow Designer includes the following components:

  1. Toolbox
  2. Design Operations
  3. Properties View
  4. Audio Object Operations

Toolbox


The toolbox is a library of audio objects. In SFD, you can create compound audio objects by combining multiple audio objects into a signal audio object. These compound audio objects can be saved and reused in the same and other signal flow designs. Additionally, you can import compound audio objects into SFD using the import option.

Use the search option to locate the audio object in the toolbox. To find the desired audio object, enter the first three or more characters in the toolbox’s search bar.

The audio objects displayed in the toolbox are based on the default device audio library version.

Regardless of the audio Library, two objects are always available in the Toolbox by default. The objects “Frame” and “Textbox” can be found in the Shapes category in the toolbox. These are not audio objects, and they are not considered when tuning or sending the signal flow to the device.

The frame object is used to highlight certain blocks in the signal flow designer. Whereas the Textbox object is used to provide additional information to the user of the Signal Flow.

When importing a Compound Audio Object (CAO), if a CAO with the same name already exists, you will see the following confirmation message:
 – Yes: To override the existing CAO and update its name.
 – No: To create a new copy of the CAO.
 – Abort: To cancel the action and prevent the CAO from being imported.

The toolbox will filter audio objects based on the core type of the physical core where this Framework instance is added.
The audio object will be marked with an exclamation mark to indicate that it cannot be used for building signal flow. You can hover over it to see which core types are supported.

For more information about various audio objects, refer to the Audio Object Description Guide.

Design Operations


This section contains several operations you can perform in a signal flow design.

The following are operations you can perform in a signal flow design.

  • Reset a Processing state(s): In the signal flow designer, you can reset all audio objects processing state to ‘Normal’ by using the “Reset” button.
  • Connect Audio Blocks: When designing a signal flow for processing audio signals, there are different types of audio objects that are used to create the audio signal. To create a meaningful audio signal, you need to connect these blocks in a signal flow. This concept is called routing.
    Routing is the process of directing an audio signal from one block to another. In a typical signal flow, various audio objects are connected from input to output using virtual connections to route the audio signal from one block to another.
    You can connect all audio objects with a single click using the “Connect Block” option. Later, you can modify the connections as per your requirements.
  • Saving Signal Flow Designer: When working with a signal flow designer, it’s important to save your work regularly to prevent data loss. This ensures that you can return to your project at a later time. Click on the “Save” option to save the changes in the signal flow design.
  • Extracting Audio Object: The Extract can be performed only when valid audio objects are selected. Currently, the GTT does not support FIR MIMO, EOC, RNC, Audio IO, Control IN, or Compound Audio Object extraction.

     Extract will be enabled only if Signal Flow is saved.

    For extracting audio objects, you need to select one or more audio objects from an existing signal flow and extract audio objects into a Compound Audio Object. The application will replace the extracted audio objects with the Compound Audio Object in the signal flow.

    For more details about compound audio objects, refer to Compound Audio Object.

  • Search Audio Object: Using the search option, you can locate specific audio objects in the signal flow designer. The located audio object is highlighted in yellow color.
    You can use the “<<” and “>>” buttons to move between the highlighted audio objects. When you click the “<<” or “>>” search buttons, the highlighted audio object will be repositioned to the center of the screen.
  • Redo/Undo: The redo and undo options allow you to redo or undo the changes that you have made to your audio project.
    Press Ctrl+Z to perform the Undo operation, and Press Ctrl+Y to perform the Redo operation.
  • Compiler Report: The compiler report displays a warning or error message entry item for each invalid audio object.A picture containing graphical user interface Description automatically generated

The following are a few factors responsible for invalid signal flow design:

  • If the audio object tuning version differs from the existing audio object type in the Device Associated Audio Library.
  • Due to the addition or modification of parameters of an audio object, it might mismatch with the signal flow design state.

To resolve the issue, you need to upgrade the audio object; refer to Upgrade Audio Object for more details.

Properties View


You can view the properties of an audio object used in the signal flow design through the Properties view. This allows you to configure the properties of the audio object to suit your requirements. The properties can be viewed by selecting a specific audio object.

Audio Object Modes

Some audio blocks support multiple configuration modes. For instance, the AudioIO block can function as both an audio input and an audio output block. Similarly, the Biquads block can operate either as a parameter-based or a coefficients-based Biquad.

In previous versions of the Signal Flow Designer, each mode of an audio block was displayed as a separate audio block. However, in the latest version of the tool, it is assumed that every block can support at least one configuration mode.

For those blocks that support multiple modes, an extra drop-down field is now shown on the properties view. By selecting an appropriate value from the drop-down, you can modify the mode.
Graphical user interface, application Description automatically generated

Control Configuration

In the latest version of GTT, the Signal Flow Designer supports control routing from the control hub (Master Control) to xAF framework instances.

The ControlIn object does not support control id configurations from “Y-Release” onwards. The control id configuration is now available on the device level of the Master Control entity. For more information, please refer Master Control.

Mapping Custom Panel

Open any audio object property view, enable the “Is Custom Panel” option, and select the appropriate custom panel from the drop-down list.
For details about creating a custom panel in GTT, refer to the link Create a Custom Panel in GTT.
Graphical user interface, application Description automatically generated

Audio Object Operations


You can access these operations by right-clicking on any audio object and selecting them from the context menu. Below are the options available in the context menu.

A screenshot of a phone Description automatically generated with medium confidence

Operations in Signal Flow Designer

In the Signal Flow Designer window, you perform the following operations.

Help

The Help tab provides quick access to information on AudioworX which include GTT and other modules, as well as detailed descriptions of its features and functionalities.

  • Keyboard Shortcuts: A link to keyboard shortcuts for RTA module that can be used to perform various actions quickly and efficiently.
  • Release Notes: A summary of changes, improvements, and bug fixes included in recent software updates.
  • View Help: Explore AudioworX and how to use the AudioworX and its modules to fine-tune audio signal and many more.

Clicking on any of the options within the Help tab will redirect you to a dedicated documentation page that provides detailed information on the selected topic.

When GTT project is open, press the F1 key on your keyboard to open AudioworX documentation page.

Handling Dual Responses from Device

When the “Load Slot” command is sent to the device, the device can respond with the following options.

Option 1

  1. Slot loading in progress > Slot can be loaded > Loading in progress
  2. Slot loaded successfully.

Two responses one after the other.

Option 2

  1. Slot loading in progress > Slot can be loaded > Loading in progress >
  2. Slot loading failed.

Single Error response – Slot loading failed.

In the first two cases, between the first response and the second response, you will be blocked from taking any action in GTT.
The following progress dialogue box will be displayed.

If the second reply is not received within 15 seconds, GTT will unblock itself and report an error.

Loading Slots on the Device

If a set of files and slot map files are already available on the device.

  1. Click on the column header of the slot and select the slot, which has to be loaded to the device. Selected Slot Id is displayed in a text box under the DSP commands section.
  2. Click on the Load Slot button.

    By default, the first valid slot in the table is loaded. If the device is offline, it will be automatically connected to it.

The GTT sends a slot load request to the device and waits for a response. If the device is successfully loaded into the slot, a success message is displayed on the screen.
An error message will be displayed on the screen if the device has failed to load into the slot.

If a slot does not exist in the table but is present on the device, it is also possible to load it. In this case, the user can manually enter the slot ID and click on the “Load slot” button.

Maintain Folder Structure

When the “Maintain Folder Structure” option is checked, then all the set files will be generated within a folder named after the Presets Group name, using the format “Presets Group name_SetNamePresetIds”. This applies when performing operations such as Export Set Files, Export All Files, and Export Slot. On the other hand, if this option is unchecked, all the set files will be stored in the chosen path directly.

So for above Preset Group (Set Group 1) and sets (Set 1[0], Set2[1]) below folders and file will be created under selected path.

Maintain Folder Structure flag will be persisted while exporting/importing projects and reopening the preset controller window.

Exporting Preset Configurations

You can export Preset Configuration using the following methods:

  • Export Slot Map: To save the flash files of the slot map in the selected path with the provided name.
  • Export Set Files: To save all the set files of the map in the selected path.
  • Export All Files: To save all the set files of the map, along with the flash file and preset size information file in the selected path.

Right-click or click on “Export Options” to select the type of export.

To export a slot map set file, all files should contain at least one valid slot; otherwise, the options Export Slot Map, Export Set Files, Export All Files, and Export Slot will be disabled.

Exporting human readable flash file: The exported flash file can be helpful in case any slot gets accidentally deleted. You can reconfigure Preset Controller values using the slot map table details mentioned in the exported flash file.

Once you have configured all parameters of the Preset Controllers, it is recommended that you export the flash file.

Steps to export human human-readable flash file:

  1. Open Preset Controller, add and configure the slots.
  2. Click on the Configure and enable or disable “Ramp Setting”.
  3. Click on Export All Files, browse the desired location, and click Ok.                                                                 
    This action creates a set map file, human-readable set map file in the CSV format, a preset size information file, and set files at the specified path.
    The name of the CSV file is determined by the name of the flash file, which is the original file.
    Example: The flash file name in the example below screenshot is Map.flash, so the created readable CSV file name is Map.flashr.
  4. Click on Export Slot Map, browse the desired location, enter the file name, and click Save.


    This action creates two files, one human-readable CSV file and another flash file with the specified name at the specified path.

    Open the CSV file to see the slot details.
    In the below image, the Ramp Setting details for “1: Core 0” column is “0:0 Disabled 1:0 Enabled 1:1 Enabled”, which is “Core Id : Instance ID : State” .

    The image below explains the “Ramp Setting” configuration for “0:0 Enabled 0:1 Enabled 0:1 Disabled” in the GTT.
    Similarly, all ramp settings details will be exported in this format.
  5. Click on Export Set Files, browse the desired location, and click Ok.                                                                 
    This action automatically creates folder(s) with the set group name at the specified path.

    This set group folder contains exported set files.

Custom Actions Settings

The Preset Controller allows you to configure a “Custom Action” option. Choosing this option opens a dedicated configuration window where you can define custom actions, as shown in the below image.

In Preset controller, there is an option to configure what actions have to be performed when a slot is loaded.  Currently this feature supports the following actions.

  • Custom xTP command
  • Custom xTP command (External)
  • Set master control pin
  • Set Audio object processing state
  • Set control pin refresh.

These custom actions can be configured at different stages of slot load.  There are 4 stage that can be configured as listed below.

  1. Before slot load
  2. After fade out but before preset load
  3. After preset load but before fade in
  4. After slot load

Steps to configure custom actions:

  1. On the Custom action configuration window, click Add to add an action that you can configure.
  2. Once the action is added, select the “Stage” from the drop-down options.
  3. Similarly, select the “Action” from the drop-down actions.
  4. Click on Configure to configure the Action.

The data configuration option depend on the type of “Action” you choose from the drop-down. Below are the configurations for each supported action type.

Custom xTP command This action sends an xTP message of your choice into the device (as if it received it from GTT).

The commands which go to the core may send a response to the network after processing.  These responses may not cause a GTT update depending on the command.  The same limitation applies to read commands, for example reading a control value won’t cause GTT to update the value in the explorer.

You can select a xTP command from the drop-down. If the command is not available (perhaps in that case you are using a custom command), you can enter command Id in the text box.  Then you can enter the command data in the box provided.

This window lets you enter data in hexadecimal format. As you enter the data, the count at the bottom keeps track of the characters, helping you ensure the correct length.
To prevent mistakes, the system checks if the data is valid when you click “OK.” For your reference, the window also shows the current slot, stage, and specific action you are configuring.

The system automatically generates a clear description to help you understand the configured custom action.

Custom xTP command (External) This sends a command from the system to the extrenal device or any connected tool from the context of the xTP Interpreter.

You can select a xTP command from the drop-down. If the command is not available, you can enter command Id in the text box.  Then you can enter the command data in the box provided.

This window lets you enter data in hexadecimal format. As you enter the data, the count at the bottom keeps track of the characters, helping you ensure the correct length.
To prevent mistakes, the system checks if the data is valid when you click “OK.”
For your reference, the window also shows the current slot, stage, and specific action you are configuring.

The system automatically generates a clear description to help you understand the configured custom action.

Set master control pin This is equivalent to sending the control and value from GTT or from any other xTP source.

This window appears when you choose “Set master control pin” as the action in the main custom action configuration window.
It will list the control pins configured in the signal flow.  You can select a control pin and enter value for the control pin.
Click “Ok” to save the configuration.The system automatically generates a clear description to help you understand the configured custom action.

Set Audio object processing state (beta) Sets the selected audio object to the chosen state.

This window appears when you choose “Set audio object processing state” as the action in the main custom action configuration window.

This window will show where you can configure the processing state of the audio object. Once the values are selected, Click “Ok” to save the processing state information.
The system automatically generates a clear description to help you understand the configured custom action.

Set control pin refresh Select the action -> Set control pin refresh in the action dropdown.

When the slot is loaded, select the control pin that needs to be refreshed.

This data will be sent to device as part of slot map. When the slot with this data is loaded, the configured custom action will be executed on the set control pin.

Once all the slots are configured with set of actions, the custom action window will appear as per below image.  You can override the default descriptions yourself after you configure the action.

The custom action data configured will be saved only when “Save and close” button is clicked in main custom action window.