Run VST3 Plugin

The VST3 plugins can be run with any tool that is compatible with 64bit VST3 SDK (Examples: Reaper, Bidule, etc.).
The two mentioned hosts are tested by the AWX team.

The current VST3 plugin version does not support multiple instances, because of an internal hard coding of the socket server port (25001).
This port is used by Amp2Srv to communicate with the Harman Global Tuning Tool when sending the signal flow or tuning the object.

Bidule

The Bidule is a 3rd party host developed by Plogue. This tool supports unequal numbers for input and output channels and can retrieve the configured number of channels automatically. Using the VST3 plugin without a sent signal flow, the plugin will start with 2 input and 2 output channels. Once you have sent the signal flow and re-added it into the patcher of the tool, the number of inputs/outputs will be updated correctly.

Bidule Patcher

Reaper

This section explains the steps to run the VST3 AudioworX Plugin in Reaper.

  1. Open the tool (Reaper).
  2. Go to Option, set the VST Plugin path to C:Program FilesCommon FilesVST3.
    It can also be set to any custom path where the VST3. AudioworX Plugin, ‘virtualAmpVST3.vst3’ is located.

    VST Plugin settings
  3. Click on Re-scan and select clear cache and re-scan.
    Adding VST3 plugin
  4. Click on Insert. New Track to insert a new track (or Press Ctrl + T).

    Insert Track
  • The Audio configuration is stereo by default in Reaper.
    To support Multichannel Signal Flows, click on the Route Button in the Track and select the number of channels in the Track channels drop-down.
    This number has to be equal to or bigger than the max value from your Device inputs and outputs configured in GTT.

    • Example: 3 Inputs, 7 outputs -> Track channels need to be set to 8
      Selection to set channel Configuration
      Selecting the Number of Channels
    • Click on the FX Button to add the AudioworX VST 3 Plugin. The plugin can be selected from the tab VST3. Search for the entry AudioEffectAWX.
      Selecting AudioworX VST Plugin

If the plugin addition is successful, the default UI for the plugin comes up. You should be able to see it.

Harman AudioworX VST3 Plugin Display

The UI controls for this GUI can be ignored for now. This engineering release drop does not support any GUI.

Controls

  1. Click on Insertà MediaFile to add an audio file to the track.
  2. Click on the play button to start audio playback.
Starting audio playback

Global Tuning Tool (GTT)

  1. Use the Global Tuning Tool (S Release version).
  2. Load the GTT DLL from the /Harman/HarmanAudioworX/AudioFrameworkDLLs/ folder.

    Select GTT Dll
  3.  Open GTT and enter port number 25001 in the AmpSrv settings to connect the device to GTT,
  4. Configure the signal flow as required and click SendSignalFlow to send the signal flow files to the VST3 device.
    Sending Signal Flow From GTT

Generate VST3.x Plugin

Refer below topics to generate the VST3.x plugin with an external audio object.

  1. Steps to add source code for external audio objects.
  2. Steps to generate the VST3 plugin.

Steps to add source code for external audio objects

Steps to add source code for external audio objects

  1. Place the source code for the new audio object under external src.
  2. Place the header file under the external.
  3. The audio object header file name should be similar to the audio object class name. For example, if the audio object name is CTemplate, the header file name should be Template.h
  4. Update externalincAudioIds.h with the pre-processor macro definition for the new audio object.

      AudioIds.h
  5. The name of the pre-processor definition should be OBJ_“header file name“.
    For example, if the name of the class is CGain, the header file name should be Gain.h and the pre-processor definition in AudioIds.h should be #define OBJ_GAIN 9002.
  6. Once the steps above are complete, proceed to generate the VST3 plugin following the steps in the next section.

Steps to generate the VST3 plugin

Pre-Requisites:

    • Python 2.7
    • Cmake version 3.21+, 3.5 confirmed NOT to work
    • Microsoft Visual Studio 2017 or later

Steps to generate the VST3 plugin

  1. Open the command prompt in Administrator mode.
  2. Browse to the external folder and run bat to clean up any previous build artifacts.
  3. Run the batch file bat.
    Once the build is successful, the library with the external audio object, the VST3 plugin, and the corresponding DLL will be copied to the path: public/lib/win64
  4. The VST3 plugin will also be generated in C: Program FilesCommon FilesVST3.
    VST3 Plugin name: vst3.
    If you are building in non-administrator mode, you might see a warning that starts like this.

    Warning when opened in Non-Admin mode

    But this can be ignored. This is a post-build script that gets executed after the Plugin and DLL are generated.

It is recommended not to have long folder names for the build path. CMAKE does not allow the total directory path name to exceed 264 characters.

Support on xAF Integration

Users who intends to integrate xAF framework into the platform, kindly contact AudioworXSupport@harman.com  for framework integration guide and expert support

Useful Commands

The following table lists some useful commands:

No. Function Command
1 Run Starter Kit hardware diagnostics python3 SKUtility.py diag
2 Reboot the Starter Kit hardware python3 SKUtility.py rmt -rbt
3 Kill and restart the AWX Amp application python3 SKUtility.py rmt -rst
4 Take a snapshot of the AWX related files on the Starter Kit hardware python3 SKUtility.py rmt -snp
5 Start the interactive audio device configuration wizard python3 SKUtility.py conf -i
6 Send a pre-made audio device configuration to the Starter Kit hardware python3 SKUtility.py conf -sndCfg <config file path>
7 Send device file (device.flash) generated from GTT to the Starter Kit hardware python3 SKUtility.py conf -df <device file path>
8 List the data files stored in the Starter Kit hardware python3 SKUtility.py conf -ls
9 Remove selected data files from the Starter Kit hardware python3 SKUtility.py conf -rm <list of files to remove or wildcards>
10 Remove all data files from the Starter Kit hardware python3 SKUtility.py conf -rm a
11 Reset all configurations and data files to original python3 SKUtility.py conf -rstAll

 

Hardware Components Setup

The central component of the Starter Kit is the Raspberry Pi 5, which functions as the audio processor running the AudioworX Amp Application. The application receives raw audio input data from and sends back processed audio data to the Creative Sound Blaster X4, USB class-compliant audio interface (requires no drivers) with a stereo analog line-input port, and 4 stereo audio output ports for 7.1 audio playback.

The Starter Kit can be used with either passive or active speaker systems. The following sections show hardware connections in both passive and active speaker setups.

For the Starter Kit to be fully operational, the PC and the Raspberry Pi must be accessible to each other through a Local Area Network (LAN) and the preferred mode is via direct ethernet connection as indicated in the block diagram in Hardware Block Diagram – Passive Speaker Setup
However, in situations where a direct ethernet connection cannot be made, the Starter Kit can be configured to connect to the PC via Wi-Fi. For more details refer to “Set a Wi-Fi for Raspberry Pi to Connect” under SKUtility Configuration section in Starter Kit Utility Tool.

Passive Speaker Setup with the JBL DSP-4086 Amplifier

For a multi-channel passive speaker setup like in a car-cabin, an additional power amplifier is required since the Creative Sound Blaster X4 audio interface can only output line-level signal (+4 dBu, approx. 2.1Vrms), which is insufficient to drive passive speakers in most cases.

For such systems, the Starter Kit includes a JBL DSP-4086 car audio amplifier, a 6-input and 8-output amplifier that can drive 4Ω or 8Ω loudspeakers up to a maximum of 40W per channel. The on-board DSP in the amplifier is deliberately bypassed and the amplifier is configured to pass-through the 6 input audio channels to the first 6 output channels (the last 2 output channels are not used), with only power amplification to drive the speakers, to fully centralize all audio DSP to the AudioworX Amp application in the Raspberry Pi 5.

The below block diagram shows the hardware connections for such systems, indicating the cables required to interface the components of the Starter Kit.

AudioworX Starter Kit Hardware Block Diagram – Passive Speaker Setup

1. Raspberry Pi Connections

At the Raspberry Pi end, the following connections need to be made:

  1. Direct ethernet connection to the PC using an ethernet cable.
  2. USB connection to the Creative Sound Blaster X4 using the USB type-A to USB type-C cable.
  3. The power supply.
A close-up of a device Description automatically generated
Raspberry Pi Connections

2. Creative Sound Blaster X4 Connections

At the Creative Sound Blaster X4 end, the following connections need to be made:

  1. USB connection from the Raspberry Pi using the USB type-A to USB type-C cable (also mentioned in the Raspberry Pi connections).
  2. Audio Outputs to the JBL DSP-4086 amplifier using 3.5 mm to RCA cables from the audio outputs ports labeled FRONT, SIDE and C/SUB.
  3. Audio Input from an audio source such as a mobile phone or PC via the 3.5 mm audio input named LINE/OPT IN (on the same side as the audio outputs).
A close up of a device Description automatically generated
Creative Sound Blaster X4 connection

3. JBL DSP-4086 Connections

At the JBL DSP-4086 end, the following connections need to be made:

  1. RCA Audio Inputs from the Creative Sound Blaster X4, using the 3.5mm to RCA stereo cables.
    1. FRONT output of the Sound Blaster X4 to Channels 1 and 2 of the JBL amplifier.
    2. C/SUB output of the Sound Blaster X4 to Channels 3 and 4 of the JBL amplifier.
    3. SIDE output of the Sound Blaster X4 to Channels 5 and 6 of the JBL amplifier.
  2. Speaker Harness to the passive speakers via speaker cables (each speaker output has a + and – terminal labelled on the JBL speaker harness wires).
    1. Channels 1 and 2 to the Front Left and Front Right speakers.
    2. Channels 3 and 4 to the Center and Sub-woofer speakers.
    3. Channels 5 and 6 to the Side Left and Side Right speakers.
  3. Power Supply from the 12V 20A SMPS Power Supply.
    1. Red wire to the +V terminal of the SMPS power supply.
    2. Black wire to the COM terminal of the SMPS power supply.
A black box with wires connected to it Description automatically generated
JBL DSP-4086 Car Amplifier Connections

Ensure that the physical switches on the JBL amplifier are set to the following states:

  1. “Input Level” switch to “Lo” (extreme left position),
  2. “Turn-on Mode” switch to “Audio” (extreme right position).

In this state, the JBL amplifier will power on only when it receives audio inputs at its input channels 1 and 2. The below figure shows the states of the switches:

A black device with red squares Description automatically generated with medium confidence
JBL Amplifier Input Level and Turn-On Mode States

The following image shows the full set of connections (the SMPS power supply and passive speakers not shown) for a passive speaker setup.

A close-up of a device Description automatically generated
Connections between Components of AudioworX Starter Kit in a Passive Speaker

This completes the connections between the components of the AudioworX Starter Kit in a passive speaker setup.

Active Speaker Setup without the JBL DSP-4086 Amplifier

For multi-channel active speaker setups in on test benches or listening rooms, where the speakers are powered, the audio output channels of the Sound Blaster X4 can be directly connected to the speakers, enabling an 8 speaker configuration compared to the 6 speaker configuration in passive speaker.

The below block diagram shows the hardware connections in an active speaker setup.

A black screen with white text Description automatically generated
AudioworX Starter Kit Hardware Block Diagram – Active Speaker Setup

The connections at the Raspberry Pi end remain the same as in passive speaker setups (see figure Hardware Block Diagram – Passive Speaker Setup) and the connections at the Creative Sound Blaster X4 are mostly the same as in the passive speakers, with the following exceptions:

  • There is an additional stereo output via the REAR output port to the physical Rear Left and Rear Right speakers.
  • The RCA end of the output audio cables (3.5mm to RCA stereo cables) cables are connected to the speakers directly.

The below image shows the full set of connections (speakers not shown) in the active speaker configuration.

A black box with a round knob and a white box with black and yellow wires Description automatically generated
Connections between Components of AudioworX Starter Kit in Active Speaker Setup

For simplicity, the rest of the documentation assumes that the connections between the Raspberry Pi 5 and the Creative Sound Blaster X4 are made as required, as they are the only essential connections for the proper functioning of the AudioworX Amp application.

The below section describes how the hardware connections can be verified using the Starter Kit Utility Tool.

Verifying Hardware Connections with the AudioworX Starter Kit Utility

Once the hardware setup is completed as described above and the software pre-requisite python libraries are installed on the PC, the connections can be verified using the diagnostics function of the AudioworX Starter Kit Utility Tool (explained in detail in SKUtility Diagnostics). The Starter Kit Utility diagnostics report identifies issues in the setup preventing proper functioning of the Starter Kit.

To validate the hardware connections, open a Command Prompt window in the “StarterKitUtility” directory of the GTT installation folder and execute the following command:

python3 SKUtility.py diag

This command generates a report as shown below. Refer to the Troubleshooting section for resolving issues that are detected by the diagnostics.

AudioworX Starter Kits received directly from Harman AudioworX contain hardware components that are pre-configured, and making hardware connections as described above are sufficient to get the Starter Kit ready for executing GTT workflows. If the components are purchased independently, write to Harman AudioworX support at AudioworXSupport@harman.com to receive detailed steps on configuring each component from ground-up.

Getting Started with the Example Project

Once the Starter Kit hardware has been set up and verified using the Starter Kit Utility diagnostics, it can interact with the Global Tuning Tool (GTT), a Windows Application for designing audio processing pipelines and signal flows, flashing them on target amplifiers (in our case, it is the Starter Kit) and tuning the Audio Objects (AO) in the signal flows in real-time.
GTT includes a sample project for the AudioworX Starter Kit that can be used a starting point for users to get familiar with the Starter Kit.

The example project for the AudioworX Starter Kit implements a simple signal flow, a custom tuning panel and some presets to showcase common AudioworX workflows that are explained in the Global Tuning Tool User Guide.

The following sections guide first-time users through the initial setup of AudioworX using the Starter Kit.

  1. Importing The Example Project
  2. Configuring AmpSrv2 Settings
  3. Sending the Device Configuration to the AudioworX Starter Kit
  4. Connecting to the Starter Kit for Tuning
  5. Tuning the Audio Processing Pipeline
  6. Saving and Recalling Tunings using Parameter Sets
  7. Managing Presets using the Preset Controller

Importing The Example Project

The Home Screen of GTT provides options such as importing a project, creating a new project, open an existing project, explore some high-level features of GTT, etc.  For more details, refer Home screen options page.

To open the Starter Kit example project:

  1. Go to the Sample Projects tab.
  2. Double click the “AWXExampleProjectStarterKit”  project.
  3. GTT may display a warning message. This warning is due to the project being similar to the default example project of GTT. Click “No” and proceed.

This opens the Device Designer window. The Device Designer is the first view of GTT that is shown on opening a GTT project. This tab shows a high-level view of the audio processing pipeline, showing the audio system/device and its abstractions as shown in the below figure.

Device View In GTT
  • The Device level abstraction (AWXExampleProject1): This represents the actual physical device or the target device with physical audio inputs and outputs. The Starter Kit can have up to 2 audio input channels and 8 audio output channels which are provided by the Creative Sound Blaster X4 audio interfact. These channels are highlighted as “Physical Audio Inputs/Outputs” in the above image.
  • The Physical core (arm64-v8a): This block represents the Digital Signal Processor (DSP) core that performs the audio processing. Although the Raspberry Pi 5 contains 4 64-bit Arm v8a Cores, currently, only one of the cores is supported for performing audio processing operations by the AudioworX Amp Application in the Starter Kit. Other AudioworX amplifiers may have more than one DSP core, each of which will be represented separately in the device designed view.
  • The Virtual Core (Entertainment Task): This block represents a single virtual core performing a specific audio task. A virtual core processes audio at a user defined sample rate and block length, which can be configured in the “Edit Device” menu at the bottom of the “Device Designer” tab (also explained in Create Device File).
    In this example, we have one virtual core that takes a stereo audio input and gives out a 7.1 channel output (8 channels in total). This block is populated with core objects that can be dragged-and-dropped from the “Toolbox” pane on the left-side of the “Device Designer” view and interfaced together to perform operations such as sample rate conversion, buffering, routing, that may be required by the main audio processing instances called the “Xaf Instance”.
    For Core Objects Toolbox details, refer Core Objects Toolbox. A physical core may have more than one virtual core, each of which will be handled by a separate OS thread.
  • The Audio Processing Instance (Xaf Instance): This block represents the core of the audio processing pipeline which is designed using the Signal flow Designer tool to implement a signal flow (Refer to Xaf Instance). 
    The rest of the Starter Kit documentation only briefly explains concepts that are relevant to a first-time user in the context of the AudioworX Starter Kit.

The Starter Kit is pre-configured with all the necessary data files to run the example project on first boot. The user may skip to the Connecting to the AudioworX Starter Kit for Tuning section for instructions on connecting to the Starter Kit. However, the following sections highlight some important steps that are specific to the Starter Kit for educational purposes before getting started with tuning of the signal flow itself.

Configuring AmpSrv2 Settings

The project’s AmpSrv2 settings must be configured for GTT to be able to communicate with the Starter Kit hardware for operations such as sending the audio processing signal flow and tuning.

Steps to configure AmpSrv2 settings:

  1. On the Device Designer tab, click on AmpSrv Settings on the top ribbon bar and click Configure.
    A screenshot of a computer Description automatically generated
  2. In the AmpSrv window, go to File > Options > Socket, and set the hostname to “raspberrypi.local” and the port to “25001”.
    A screenshot of a computer Description automatically generated
  3. Click Ok to close the AmpSrv2 settings window and minimize the AmpSrv2 window.
  4. On the Device Designer tab, click on AmpSrv Settings and click on Save from the drop-down menu to save the settings.

For AmpSrv2 Settings details, refer to the Connection page.

Sending the Device Configuration to the AudioworX Starter Kit

The device configuration contains information on how the physical and virtual cores, the Xaf instances (which contain the core of the signal processing flows) and other core AOs are interconnected to form the audio processing pipeline. As previously mentioned, the Starter Kit is pre-configured with the required data files, which includes the device configuration to run the example project on first boot.

For a different project or if any changes have been made to the example project, it is important to send the device configuration to the Starter Kit, to ensure the AudioworX Amp application can set up and execute the audio processing pipeline.

Steps to send the device configuration defined in the GTT project to the Starter Kit hardware:

  1. On the Device Designer tab, click on Send Device Config.
    A screenshot of a computer Description automatically generated
  2. Once the device configuration is sent successfully, if the new device configuration is different from the previously flashed device configuration on the Starter Kit, GTT may prompt the user to reboot the device.
    A screenshot of a computer Description automatically generated
  3. In such cases, the AudioworX Amp application running in the Raspberry Pi 5 must be reset using the Starter Kit Utility tool by running the command:

python3 SKUtility.py rmt -rst

This command is explained under Reset AudioworX Amp Application in SKUtility Remote Control. For other AudioworX based amplifiers, a full reboot may be required.

Connecting to the AudioworX Starter Kit for Tuning

Once the device configuration has been sent to the Starter Kit hardware and the AudioworX Amp application has been reset (only required if prompted by GTT), the Starter Kit can be connected to from GTT for tuning.

Steps to connect GTT to the AudioworX Starter Kit:

  1. Click the Connect Device button located in the top ribbon bar to initiate device connection.
    A screenshot of a computer Description automatically generated
  2. A “Device Synchronization” window will pop up. Click on the Send button to send the tuning data.
    A screen shot of a message Description automatically generated
  3. Once the data has been sent and the device has been connected, the audio processing pipeline and its signal flow can be tuned in real-time.
  4. To stop tuning and disconnect the Starter Kit from GTT, click the Disconnect Device button in the top ribbon bar of the Device Designer tab.
    A screenshot of a computer Description automatically generated

Tuning the Audio Processing Pipeline

The audio processing pipeline can be tuned in two ways: using the State Variables button in the top ribbon bar or by using a custom panel.

Tuning using State Variables

The State Variables explorer can be accessed from the top ribbon bar in the “Device Designer” tab as shown below.

A screenshot of a computer Description automatically generated
Tuning using the State Variable explorer

The rows in the State Variable explorer such as “Gain_1_0_0”, “Limiter_1_0_0”, etc., correspond to the names of the specific AOs in the signal flow. Expanding the row items in the tree display the tunable parameters of the AOs can be set in the right-half of the window as show in the above figure.

Tuning using the Custom Panel

GTT provides the capability to design a custom User Interface specific to the signal flow in the project using drag-and-drop methodology, allowing the user to define their own tuning interface with simple steps from the “Panel Designer” tab. For details on custom panel creation and usage, refer Create a Custom Panel in GTT.

The example project includes a custom tuning panel that is pre-designed for tuning the audio processing pipeline by exposing essential tuning parameters for the AOs in the signal flow.

To launch the custom panel, go to the “Panel Designer” tab and double-click the item named “ExampleProject1” in the “Panels” pane on the left-hand side of the view as shown below.

A screenshot of a computer Description automatically generated
Launching the Custom Panel

This custom panel window has three tabs, each tab is tailored to facilitate tuning of audio parameters at different levels of detail.

  • Main
  • Mute/Gain/Inv
  • SignalFlow

Main: The “Main” tab provides users with high-level volume and mute controls along with a global Bass and Treble control. The below image shows the “Main” tab of the Custom Panel.

A screenshot of a computer program Description automatically generated
Example Project Custom Panel – Main Tab

Mute/Gain/Inv: The second tab is the “Mute/Gain/Inv” tab, which provides users with volume and mute controls for each of the 8 output channels in the audio processing pipeline, along with polarity controls for each speaker to minimize effects of phase destruction in the listening environment. The below image shows this tab of the Custom Panel.

A screenshot of a computer Description automatically generated
Example Project Custom Panel – Mute/Gain/Inv Tab

SignalFlow: The “SignalFlow” tab, which provides more granular control of the overall signal flow, exposing controls such as individual speaker delays, EQ, limiter, noise gate, etc., which can be opened by clicking the individual blocks in the signal flow. The below image shows this tab of the Custom Panel.

A screenshot of a computer Description automatically generated
Example Project Custom Panel – SignalFlow Tab

Saving and Recalling Tunings using Parameter Sets

GTT allows users to save and recall tunings as presets from the “Parameter Sets” tab of GTT.

In the Starter Kit example project, 2 presets are created, namely “LFHighOnly” and “AllSpeakers”, where the first one mutes all speakers except for the Left-Front High speaker and the second preset enables audio outputs from all speakers.

For detailed information on the Parameter Sets tab and its features, refer to Parameter Set Overview.

A screenshot of a computer Description automatically generated
Saving and Recalling Tunings using Parameter Sets

Saving Custom Tunings

To save a tuning that you’ve made using the State Variables explorer or the custom panel, follow below steps:

  1. Go to the Parameter Sets tab.
  2. Click the New button on the top ribbon bar. This will create a new column named “Set3”.
  3. Right-click the new column and select Retrieve to populate it with the current tuning settings.

To overwrite a preset, right-click the preset column and click Retrieve. Once the preset has been written, it is automatically saved with the project.

In the example project, the presets (described above) store all tuning parameters in the signal flow. However, they can be customized to store only a sub-set of all the tuning parameters in the signal flow using “Set Group” (left-side pane in the “Parameter Sets” view).

For details on creating a new set group with a sub-set of tuning parameters, refer to Create a Parameter Set in GTT.

Applying Tunings from a Saved Preset

A preset can be applied to the target by right clicking the preset name and clicking the Apply button as shown below:

A screenshot of a computer Description automatically generated
Applying Tunings from a Saved Preset

Applying a preset sets the tuning parameters in a live signal flow running in a target device (here it is the Starter Kit), only if the device is connected. If the target device (here, the Starter Kit hardware) is not connected to the GTT session, only the local states of the parameters within GTT will be updated, which then needs to be sent while connecting the device as described in Connecting to the AudioworX Starter Kit for Tuning. 

Managing Presets using the Preset Controller

GTT provides a method for recalling and managing presets using data files stored in the target device’s flash memory using the “Preset Controller”, which is accessible from the “Device Designer” tab of GTT as shown below.

A screenshot of a computer Description automatically generated
Managing Presets using the Preset Controller

Presets made in the “Parameter Sets” tab can be mapped to slots in the “Preset Controller”, which represent preset files on the target device, for quick recall of presets.

In the Starter Kit example GTT project, there are 2 pre-made preset slots; “LFHighOnly” and “Allspeakers” (slots 1 and 2 respectively), which are mapped to the “LFHighOnly” and “AllSpeakers” presets in the “Parameter Sets” tab mentioned earlier.

The “Preset Controller” can be used to set presets by selecting the required Slot ID and clicking the “Load Slot” button at the bottom of the window. A default slot can also be selected to load on boot-up using the “Default Slot” drop-down menu. In the Starter Kit example project, the “AllSpeakers” preset is made as default.

For details on configuring the Preset Controller, refer to Configuring Preset Controller.

Creating a New Project on GTT

This section outlines the process to be followed for creating a new project with a custom device type, providing instructions for efficiently creating a project environment that supports custom audio configurations and leveraging the full capabilities of GTT with the Starter Kit.

  1. Creating a Project
  2. Adding a Device to the Project
  3. Leveraging AudioworX Audio Features

Creating a Project

Steps to create a new empty GTT project:

  1. Click the + button in the “Projects tab” of the “Home Screen” of GTT.
  2. Select Empty Template and provide project title and description.
  3. Click the Create button to create new empty project.
    A screenshot of a computer Description automatically generated

Adding a Device to the Project

The first step after creating a GTT project is to add a device to the project, either from a template or by defining a custom device, within which the audio processing pipeline will be implemented. GTT provides the capability for defining a device with a custom number of audio inputs, outputs, virtual cores processing audio data at custom sample rates and block lengths, etc., to build audio systems requiring precise audio data handling, ensuring that the audio system is fully customized to support the project’s specific audio processing needs.

GTT can also learn the capabilities of an AudioworX amplifier within which the audio processing pipeline is to be built by querying the target amplifier.

The following section provides instructions how to define a custom device that is compatible with the Starter Kit hardware.

Configuring a Custom Device Compatible with the AudioworX Starter Kit

A custom device can be defined by creating a device file that contains information on the physical cores available on the target amplifier, virtual cores configured for audio processing at custom sample rates and block lengths within each physical core, and groups of audio input and output channels to stream audio data to the virtual cores.

The device file can be customized to support complex audio workflows, enabling scalability, optimized resource usage, and the flexibility to handle different audio streams simultaneously.

Steps to create a custom device file:

  1. Click the + button in the “Devices” pane of the “Device Designer” tab.
  2. Select the Create Device File option on the right side of the window.
    A screenshot of a computer Description automatically generated
    Creating a Device File

This will open a “Device File Editor” where a user can define the high-level capabilities of the device.

First, a physical core must be created to describe the DSP core that the target amplifier is equipped with and provide details on its MIPS and core-type. An AudioworX supported amplifier hardware may have more than one DSP core that can be used for audio processing, each of which need to be separately added to the device file.

Steps to create the physical core in the device file editor for the Starter Kit:

  1. Right-click Physical cores and click Add Physical Core.
    A screenshot of a device software Description automatically generated
  2. Select Physical Core 0 choose the arm64-v8a option in the Core-type drop-down menu, which corresponds to the processor core type of the Raspberry Pi 5. This is an essential step to ensure compatibility of the GTT project with the Starter Kit.
    A screenshot of a computer

The Starter Kit currently only supports one Physical Core of type “arm64-v8a” despite the Raspberry Pi 5 having a quad-core processor.

Further steps on adding and defining “Virtual Cores” and detailed information on the “Device File Editor” can be found in Create Device File.

Device level Input and Output Groups can also be edited in the “Device File Editor” to suit the needs of the audio processing pipeline. Here, the user is expected to set the properties of audio input and output data streams that the physical device is capable of, including the number of channels, sample rate of the audio data and the format of the audio data.

The Starter Kit currently only supports the following configuration:

  1. Sample rate: 48,000 Hz
  2. Max. number of input channels: 2
  3. Max. number of output channels: 8
  4. Audio data format: Float

As a last step after editing the device file, click Save Device Template and save the device.flash file on local file system. This device.flash file must be sent to the Starter Kit hardware using the Starter Kit Utility to make the kit fully aware of the exact device defined in GTT.

For details on how to send the device.flash file refer to “Flash a Device File” in the “SKUtility Configuration” section of AudioworX Starter Kit Utility Tool – SKUtility.

Discovering the Device Properties from the AudioworX Starter Kit Hardware

GTT can learn the device capabilities using the “Discover Device” option in the “Add Device” menu. The discovered device type can then be used in the GTT project to design the audio processing pipeline.

Ensure that the AudioworX Amp application is running in the Raspberry Pi for GTT to be able to learn from the Starter Kit Hardware. Refer to the “SKUtility Diagnostics” section of AudioworX Starter Kit Utility Tool – SKUtility.

Steps to query the Starter Kit hardware to discover the device properties based on the device.flash file that has been already flashed on to the kit:

  1. Launch AmpSrv2 from the Desktop or from the Windows Start bar.
  2. Go to File > Options > Socket and set the host name as “raspberrypi.local” and port as “25001”.
  3. While keeping the AmpSrv2 window open, in the “Add Device” window of GTT, click the Discover Device button. This will get the device information from the Starter Kit hardware and display as a new device under the templates list (“Device-4” in the below figure).
  4. Select the device and click Ok to add the device into the GTT project.
    A screenshot of a computer Description automatically generated

    A screenshot of a computer Description automatically generated
    GTT Project with the Discovered Device

For the device capabilities to be discoverable from the Starter Kit hardware, the Starter Kit should have been previously flashed with a device.flash file.
By default, the Starter Kit is configured with a device.flash file that corresponds to the device type used in the example project. This file can be restored in case it was deleted using the command.
python3 SKUtility.py conf -rstAll
More details, refer to “Reset All Configurations to Default” under “SKUtility Configuration“.

Leveraging AudioworX Audio Features

GTT facilitates enhanced testing and experimentation with custom audio setups, providing flexibility and control over the audio workflow.

The GTT system includes “Xaf instances” and Core AOs using which developers can enhance audio processing systems, ensuring seamless integration and efficient handling of audio tasks. AudioworX provides a robust framework for manipulating audio data while taking full advantage of GTT’s advanced functionalities to deliver optimized performance and enhanced audio output.

The center pane of the “Device Designer” tab in GTT is the “Device View” where the audio processing pipeline is built. Refer to the “Importing The Example Project” for a detailed explanation of the device level abstractions in the Device View.

The “Toolbox” pane on the left-side provides a set of objects that can be dragged, dropped, and interconnected to complete the audio processing pipeline.

The following steps show how a simple audio processing pipeline can be developed:

  1. Connect the pins in physical core (block named “Device-4”) and virtual core (block named “Virtual Core 0”).
  2. Drag and drop an “Xaf Instance” from the left-side “Toolbox” pane to “Virtual Core 0” and set input and output channels as 8 and 8 (illustrative only), respectively.
  3. Now, connect the pins on the added “Xaf Instance” and “Virtual Core 0”.
    A screenshot of a computer Description automatically generated
  4. Double-click the Xaf Instance to edit/add the AOs and define a signal flow.
  5. Drag and drop the required AOs into the designer and connect them as required. The below figure shows a Gain object of 8 channels that is added to the signal flow.
    A computer screen shot of a computer Description automatically generated
  6. Once the connections have been made as required, click Save to save the signal flow design and click Go Back to return to the “Device view”.
  7. The audio processing pipeline or the signal flow can now be sent to the Starter Kit as described in the Sending the Device Configuration to the AudioworX Starter Kit and can be tuned there after as described in the Connecting to the Starter Kit for Tuning.

AWX Starter Kit Utility Tool – SKUtility

The Starter Kit Utility (SKUtility.py) is a python command-line tool that enables remote operation of the Starter Kit hardware. It eliminates the need for logging in to the Raspberry Pi by means of SSH or VNC server by providing a command-line interface for tasks such as running diagnostics, rebooting the Raspberry Pi, resetting the AWX Amp application, configuring the audio hardware, etc., over the network (ethernet or Wi-Fi).

The Starter Kit Utility is installed along with GTT in the default location “C:\Program Files\Harman\HarmanAudioworX\StarterKit\StarterKitUtility”. This page describes the utility tool and its usage in detail, and some common useful commands are given in Useful SKUtility Commands. Installation of its pre-requisites are covered in Required Software Applications.

The SKUtility.py script must be run in the location that it is installed in since its functioning depends on files that are in the same directory. Ensure that the commands are run in a CMD (command prompt) window in the installed location.

Utility Tool Functions/Sub-Commands

The “SKUtility.py” script is run using “python3” and takes command-line arguments as shown in the help text, which can be displayed running the following command:

python3 SKUtility.py -h

A computer screen with white text Description automatically generated
SKUtility Command-line Help Text

The script, by default, connects to a target with the hostname “raspberrypi.local” and the username and password as “awx” (default credentials for the Starter Kit). This can be changed using the “-hname” argument for the hostname, “-u” argument for the username and “-pwd” argument for the password, if they are different from the default.

The Utility tool supports operations/actions that are classified into 3 functions or sub-commands:

Sub-command Function Description
diag Diagnostics Verify if the target device is connected and is functioning as expected
rmt Remote Control Perform actions such as reboot, reset the AWX amp application, etc.
conf Configuration Configure the audio device to use and Wi-Fi to connect to

The following sub-sections describe each function in detail along with the usage.

SKUtility Diagnostics

This function runs a series of checks to verify if the Starter Kit hardware is functioning as expected. The diagnostics report can be generated by running the command:

python3 SKUtility.py diag

Following is an example report that shows a working Starter Kit setup.

A screenshot of a computer program Description automatically generated

The diagnostics only identifies issues in the configurations of the hardware that may be preventing proper operation of the AWX Amp application. If the Starter Kit is not functioning properly despite the diagnostics report showing no issues, refer the log files fetched during the diagnostics to debug. The details on debugging using the Amp log file are given in the “AWX Amp Application Logs” section of Starter Kit Troubleshooting.

The “SKUtility Diagnostics Report” section in Starter Kit Troubleshooting describes the steps in the diagnostics in detail and highlights troubleshooting steps for resolving issues detected.

SKUtility Remote Control

This function/sub-command provides actions such as rebooting the Raspberry Pi, resetting the AWX Amp application, fetching log files and taking a snapshot of the Starter Kit data files.

The following image shows the help text for this function.

A screen shot of a computer Description automatically generated
SKUtility Remote Control Command-line Help Text

Following are the actions that can be executed under the Remote-Control function:

Remote-Control Function Command
Reboot the Raspberry Pi To reboot the Raspberry Pi remotely, run the command:
python3 SKUtility.py rmt -rbtThe utility tool will then trigger reboot and wait until the Raspberry Pi is booted up and reachable by the PC. This command may take about a minute.
Reset the AWX Amp Application running in the Starter Kit Hardware To reset the AWX Amp application (required when updating the device definition on GTT), run the command:
python3 SKUtility.py rmt -rst
Stop the AWX Amp Application To stop the AWX Amp application, run the command:
python3 SKUtility.py rmt -s
Fetch Log Files To fetch the log files from target, run the command
python3 SKUtility.py rmt -flogThis will fetch two log files from the target Starter Kit hardware:

  • awx_log.txt: This file contains logs related to booting up of the Starter Kit hardware and running of the AWX Amp application
  • VirtualAmpLog.txt: This file contains logs from the xAF framework that include initialization of the audio core, core AO, xAF instances, etc., based on the signal flow flashed on the Starter Kit hardware from GTT.
Take a Snapshot of the Data Files on the Starter Kit Hardware The SKUtility.py can be used to take a snapshot of the data files in the Starter Kit hardware, either for saving the state of the Starter Kit or to send Harman AudioworX support for debugging, run the command:
python3 SKUtility.py rmt -snpThis will take a snapshot and fetch a .zip file from the Starter Kit to “C:\ProgramData\Harman\StarterKit”.

SKUtility Configuration

This function provides configuration options for the user to configure the behavior of the Starter Kit hardware and the audio interface connected. Following is the help text for this function.

Following are the actions that can be executed under the Configuration function:

SKUtility Configuration Descriptions
Interactive Audio Device Configuration The utility tool provides an interactive setup wizard for configuring the audio device to be used by the AWX Amp application. This is necessary when using a different audio interface than the Creative Sound Blaster X4.

To start the interactive setup wizard, run the command:
python3 SKUtility.py conf -i

The wizard takes the user through the following steps:

  1. Specify the name of the .json file to save the configuration locally. This is useful to avoid going through the interactive menu if the user wants to revert to a known configuration. Type the file name (default file name is if no input is provided is “config.json”) when prompted.
  2. Set the start-up mode for the Starter Kit hardware. The Starter Kit can be set to boot up in one of 2 modes.
    1. Amp Mode – In this mode AWX Amp application is automatically started on when the Raspberry Pi is booted up.
    2. Dev Mode – In this mode, the auto start of the AWX Amp application is disabled. This mode is only meant for developers.
  3. If no input is provided by the user, the default mode chosen in the “Amp” mode.
  4. Select the device for capture and playback from the displayed list of connected the audio devices with their audio capabilities. Type the IDs for capture and playback devices when prompted.
  5. Set the selected configuration on the Starter Kit hardware by sending the saved config.json file to the target hardware.

The below figure shows the interactive configuration menu where the no input is provided for the filename and the Starter Kit modes, and the sound card named “X4” (Creative Sound Blaster X4) is chosen as the device for both input and output.
A computer screen with white text Description automatically generated

Send a Previously Saved Audio Device Configuration This is used to send a previously saved audio device configuration file generated by the interactive wizard.
run the command:
python3 SKUtility.py conf -sndCfg
List Audio Devices Connected to Raspberry Pi To list the audio device connected to Raspberry Pi, run the command:
python3 SKUtility.py conf -laThis command will display all the connected audio capable devices along with their capture and playback capabilities.
Set a Wi-Fi for Raspberry Pi to Connect This command is used to configure a new Wi-Fi for the Starter Kit to connect to, by specifying the ssid (Wi-Fi name), password and optionally, the auto-connect priority for the Wi-Fi. Run the command:
python3 SKUtility.py conf -wifiConf new <SSID> <password> <priority>The below figure shows how to configure a Wi-Fi named “awx_wifi” with the password “awx_wifi_password” and an auto-connect priority of 10.

The optional “priority” parameter can be used to set the priority of the Wi-Fi connection for the Starter Kit to auto-connect on boot-up in the range (-999, 999), where higher the number, higher the priority. By default, the priority is set to 0. This parameter is useful when there are multiple Wi-Fi connections available and to prioritize them as required. The user can choose to reboot the Starter Kit to finalize changes and connect to the Wi-Fi network based on priority. The above figure shows that the Starter Kit has successfully connected to the new Wi-Fi on reboot. The user can also configure the Raspberry Pi 5 to behave as a Wi-Fi hotspot for the PC to connect to, using the following command:
python3 SKUtility.py conf -wifiConf hotspot <SSID> <password> <priority>To turn off the Wi-Fi on Raspberry Pi, use below command:
python3 SKUtility.py conf -wifiConf off

To turn on the Wi-Fi on Raspberry Pi, use below command:
python3 SKUtility.py conf -wifiConf on

Flash a Device File To flash a device file generated from GTT on to the Starter Kit hardware, run the command:
python3 SKUtility.py conf -df <device file path>The “device.flash” is necessary for a signal flow to run on the AWX Amp application. The steps for generating the “device.flash” file on GTT are illustrated in “Configuring a Custom Device Compatible with the AudioworX Starter Kit” in the “Adding a Device to the Project” section of Creating a New Project on GTT.
List Data Files on the Starter Kit To list the data files that are currently stored in the Starter Kit, run the command:
python3 SKUtility.py conf -lsThe AWX Amp application makes use of data files with the extensions “.flash”, “.set” or “.info” sent from GTT for initializing the device, signal flow, presets, etc.
Remove Data Files from the Starter Kit To delete data files (“.flash”, “.set”, “.info”) from the Starter Kit hardware, run the command:
python3 SKUtility.py conf -rm <list of files to be deleted or wildcards>It may be required by a user to delete some or all the data files to roll back actions or start afresh before flashing a new project with device definition being different than the project that the Starter Kit hardware is currently flashed with. For example, the new project may have a different number of audio inputs, outputs, xAF instances, virtual cores, etc. In such cases, the user may need to wipe out the data files from the Starter Kit and flash new data files from GTT.The files that are stored in the Starter Kit hardware can be listed by using the “-ls” argument.Alternatively, to remove all data files from the Starter Kit hardware, run the command:
python3 SKUtility.py conf -rm a

Running the “conf -rm a” command will all data files command will also delete the “device.flash” file which will have to be restored as directed in Flash a Device File or by resetting configuration (given below).

Reset All Configurations to Default To reset the Starter Kit hardware to its default state, run the command:
python3 SKUtility.py conf -rstAllThe reset all action goes through the following steps:

  1. Get confirmation from the user to reset all configurations. If confirmed, all files related to AWX will be deleted from the Starter Kit hardware and restored to default that is shipped with the Starter Kit Utility tool.
  2. Go through the interactive audio device configuration step if required by the user. For complete details of this step refer to Interactive Audio Device Configuration.
  3. Reboot the Starter Kit if required by the user.

Starter Kit Troubleshooting

The AWX Starter Kit has two mechanisms for diagnosing and debugging issues.

The following sections explains them and how to troubleshoot problems.

SKUtility Diagnostics Report

The Starter Kit diagnostics, goes through a series of steps to verify the hardware connections and configuration of the Starter Kit.

Following are the different stages:

  1. Verify that the Starter Kit hardware is reachable by the PC over the LAN.
  2. Verify that the configuration files and AWX Amp application are present in the target Starter Kit hardware.
  3. Verify that the audio hardware required by the set audio configuration are connected and verify their playback and capture capabilities.
  4. Verify that the AWX Amp application is running if the Starter Kit hardware is set to “Amp” mode.
  5. Fetch log files for further diagnosis.

The diagnostics only verifies and flags issues related to connectivity between the PC and the Starter Kit, configuration files on the Starter Kit, audio hardware connected and configured for the AWX Amp application and the status of the amp application. Harman AudioworX Support can be contacted to diagnose issues outside of these.

The following sub-sections provide instructions on how to fix the issues identified in the diagnostics report.

Issues in Connectivity

If there is a connectivity issue between the PC and the Starter Kit, it will be identified in the very first step of the diagnostics. In such cases, the diagnostics will exit soon after as shown below:

A screen shot of a computer Description automatically generated
SKUtility Diagnostics – Connectivity Issue

To fix this issue, ensure that the Starter Kit and the PC are both on the same network. As mentioned in Hardware Components Setup of this document, direct connection between the PC and the Starter Kit over ethernet is preferred due to zero network traffic. However, there may be situations where a direct connection is not possible, for example, if the PC’s ethernet port is already in use or the PC does not have an ethernet port at all.

In such cases, the Starter Kit’s hotspot feature may be used to establish connection between the PC and the Starter Kit. The Starter Kit is configured to automatically start a Wi-Fi hotspot with the following login credentials, when it is not connected to any known Wi-Fi network:

  • SSID: AP_AWXStarterKit
  • Password: starterkithotspot

Connect to this hotspot from the PC to first establish direct Wi-Fi connection to the Starter Kit and then run the diagnostics again. Step one of the diagnostics should be successful, indicating that the Starter Kit is accessible from the PC.

AWX Starter Kit Wi-Fi hotspot

The IP address of the Starter Kit starts with a number other than ”192“or ”169“, which indicates that the PC is connected to the Starter Kit’s Wi-Fi hotspot. The user must be warned that in this setup, the PC will no longer have access to the internet via Wi-Fi. For convenience, it is recommended that the Starter Kit is configured to connect to a common Wi-Fi network using the instructions in Set a Wi-Fi for Raspberry Pi to Connect in SKUtility Configuration after connecting to the Starter Kit hotspot.

Issues with Configuration Files

The second step of the diagnostics verifies if all the files that are required for functioning of the Starter Kit are present in the file system of the Starter Kit. If the diagnostic report indicates missing files, a simple brute-force solution would be to reset all files to their original states using the command python3 SKUtility.py conf -rstAll, which is described in SKUtility Configuration.

All the data files in the Starter Kit will also be restored to their original states (corresponding to the example project), which means that any changes made to the audio hardware configurations or the signal flow flashed on the device (.flash files) will be lost, and need to be reconfigured.
It is recommended to take a snapshot for back up using the command python3 SKUtility.py rmt -snp before resetting all the configurations.

The following table shows the solution to restore individual files:

Missing File Solution
/AWX/config.json Reconfigure the audio device using below command.

python3 SKUtility.py conf -i

/AWX/device.json Export device file and send it to the device (refer to Configuring a Custom Device) using the below command.

python3 SKUtility.py conf -df

All other files Restore all files using below command.

python3 SKUtility.py conf -rstAll

Issues with the Audio Device

The Starter Kit diagnostics verifies if the audio input and output devices mentioned in the “/AWX/config.json” file (the audio device configuration) are connected as expected. Below is an example diagnostic report showing an error with the audio device:

A black background with blue and white lights Description automatically generated
SKUtility Diagnostics – Audio Device Issue

If such an error is shown, verify if the required audio device is physically connected via USB and is powered on.

Two separate audio devices, one for input and the other for output, may be used simultaneously. If the input or output device is not capable of capture or playback, respectively, the diagnostic report will show a warning (in yellow).

A screen shot of a computer Description automatically generated
SKUtility Diagnostics – Audio Device Warning

If this is not intended, reconfigure the audio device using python3 SKUtility.py conf -i.

Issues in the AWX Amp Application

The AWX Starter Kit has two start up modes set via the interactive config menu described under Interactive Audio Device Configuration in SKUtility Configuration.

  • Amp mode
  • Dev mode

Step 4 in the diagnostics verifies the status of the AWX Amp application based on the mode that is configured. If the Starter Kit hardware is set to “Amp” mode, the AWX Amp application is expected to be running.

An error may be reported in this step for the following reasons:

  • Failure in any of the previous steps.
  • The expected audio interface is not available at the time of amp start-up. Ensure that the audio device (Sound Blaster X4 or any other audio interface) is plugged in and powered on (if the interface has dedicated power) before powering-on the Raspberry Pi 5.
  • Problem in starting the AudioworX Amp application due to audio device setup or framework initialization, refer to AudioworX Amp Application Logs section.

Once the issues detected are rectified, reset the AudioworX Amp application using the python3 SKUtility.py rmt -rst command and re-run the diagnostics. If problems persist, contact Harman AudioworX support by following the information given in Reporting Issues section .

AudioworX Amp Application Logs

The Starter Kit produces logs at different points showing information on boot times, the AWX Amp application start and stop times and includes logs from the AWX Amp application showing initialization and configuration statuses during the audio driver setup.

Following figure shows an example log file in the Starter Kit.

A screenshot of a computer program Description automatically generated
AWX Amp Application Logs

The above figure shows 4 parts in a log:

  1. Start Time: This part of the log shows the boot time and date if the log was generated at boot time, or the start time and date of the AWX Amp application if the amp was reset or started using the Starter Kit Utility. The first half (highlighted text) shows logs generated on boot, and the second half shows logs generated at amp reset by the user (notice the text “AWX Amp starter by user”).
  2. Amp Mode: This part shows the mode in which the Starter Kit is configured. This text is only shown at boot time and not when the amp is started using the Start Kit Utility, as shown in the second half of the figure.
  3. AWX Amp Application Logs: This part of the log shows logs generated by the AWX Amp application, which includes logs from the amp front-end, audio driver, etc. Logs related to SFD initialization from the xAF framework can be found in the other log file (VirtualAmpLog.txt), which is downloaded along with the awx_log.txt file using the command python3 SKUtility.py rmt -flog.
  4. AWX Amp Stop Time: Finally, the last part of the log indicates the stop time of the AWX Amp application. Note that this part of the log will not be printed if the Starter Kit is abruptly powered off or shutdown while the AWX Amp application is still running.

The latest logs are written to the end of the file. The above figure shows that the amp may be running since the end of the log file has logs from the AWX Amp application and not the stop time.

Running the “Reset All Configurations” command will remove all log files on the Starter Kit hardware. Before resetting configurations, it is recommended that a snapshot is taken by running the command python3 SKUtility.py rmt -snp or fetch the log files by running the command python3 SKUtility.py rmt -flog.

Reporting Issues

For reporting issues related to the AudioworX Starter Kit, write to AudioworXSupport@harman.com with the following information:

  1. Subject line — “AudioworX Starter Kit – short description of the issue faced”
  2. Detailed description of the issue.
  3. Attach the following files (if any).
    1. The GTT project file (.gttd) used, which can be exported from GTT (File > Export Project).
    2. Snapshot of the flash files on the Starter Kit hardware which can be generated using the command python3 SKUtility.py rmt -snp. The snapshot will be downloaded to “C:\ProgramData\Harman\StarterKit”.
  4. Steps for reproducing the issue.

Audioworx Starter Kit Overview

The AudioworX Starter Kit is a complete hardware setup that provides a comprehensive experience of AudioworX (AWX) and its features with minimal setup time. The Starter Kit, much like other Harman amplifiers based on AudioworX, depends on the Global Tuning Tool (GTT) Windows application for designing signal flows, sending them to the target amplifier, tuning in real-time, selecting presets, etc. The basic idea of the Starter Kit is to provide a smooth onboarding experience into AudioworX workflows by simplifying steps for integration into an audio system using commonly available hardware components and supplementary software tools.

This document offers comprehensive guidance on configuring the AudioworX Starter Kit as a target amplifier. It includes detailed instructions, connection diagrams, software installation, GTT integration for signal flow design and tuning, and troubleshooting tips. For in-depth information on GTT features like parameter sets, master preset controller, and panel design, refer to the AudioworX documentation.

Related Topics