Now, if you want to measure the audio signal output and control output of an audio object of the added device. You need to configure Streaming functionality in a signal flow design.
Go to the Device Designer window and select the virtual core of the device.
Go to the virtual core properties and select the Streaming checkbox to enable streaming functionality.
Enter the desired number of Level Meters that need to be added to the signal flow to monitor control-out connections or audio.
Click Save to save the changes and click on Send Device Config.
Double-click on the Xaf Instance to open the Signal Flow Designer window.
On the Signal Flow Designer window, right-click on the audio connections, and select Level Meter > RMS. This action adds Level Meters in the signal flow design.
Open Preset Controllers, click on Add Slot, and set Group 1 as LFHighOnly.
Similarly, add another slot and set Group 1 as AllSpeakers.
Click on Send to Device. When the preset data has been successfully sent, a completion message is displayed to indicate that the transmission was successful.
If an error occurs, an error message is displayed.
Click on Load Slot. 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. Now you can perform tuning.
Double-click on the audio object to open the native panel. On the native panel, change the value using the slider and check the level meter value.
Similarly, open the IVP RTA window, go to the native panel, change the value using the slider, and check the signal graph.
In Global Tuning Tool you can perform basic tuning using Integrated Virtual Process (IVP). In the Integrated Virtual Process (IVP) allows you to make adjustments to various aspects of the audio configuration in the signal flow designer, such as audio object mapping, parameter settings, and virtual core configurations.
For more details, you can refer video explaining basic tuning process using IVP in Global Tuning Tool.
Steps to performing basic tuning with Integrated Virtual Process (IVP)
Launch the Global Tuning Tool application.
Navigate to the Sample Project tab and click on the AWXExampleProject.
This will open the Device Designer window and display example project details.
This example project contains a single win64 core with one instance of audio processing (xAF Instance). It has 2 inputs and 8 outputs.
Double-click on the Xaf Instance to open the Signal Flow Designer window.
Navigate to the IVP RTA tab to configure the device file and input/output settings.
On the IVP RTA tab, click on Advanced Settings, under the Plugins tab, browse the xAFVirtualAmp64.dll file available in C:Program FilesHarmanHarmanAudioworXAudioFrameworkDLLs folder, and click Apply to save the plugin configuration.
Go to the Device Designer tab, click on Export > Device Template, and save the device configuration as a “.flash” file in the C:Program FilesHarmanHarmanAudioworXAudioFrameworkDLLs folder.
This will save the layout of the device (single core with 2 inputs and 8 outputs) which helps the virtual amplifier to configure itself.
Click on Send Device Config to send the changes to the device. Due to these changes, the device will go offline.
GTT will display a message “Device will go Offline. Manual Reboot of the device is required”.
Go to the IVP RTA tab and click on Reboot. Once the device is rebooted, GTT will display the message “Plugin Host has been rebooted”.Now you need to configure the input and output settings.
Open the Advanced Settings, go to the Routing tab, and under plugin host set Generator1 as input 1 and Generator2 as input 2.
Similarly, go to the Analyzer tab, under source set Generator1 as input and PlugingHost1 as output, and click Apply to save the settings.
The above settings indicate that you are using the Generator as input to the signal flow and output is displayed on the analyzer. You can also use sound card input by selecting “SoundIn1 or SoundIn2”.
Similarly, you can route the output to the sound card by choosing the Sound Out to PluginHost.
Click on Done to close the Advanced Settings window.
Click on the Design tab and click on Connect Device. This will open the Device Synchronization dialogue box.
On the Device Synchronization dialogue box, click on Send. Sending or receiving data is indicated by a progress window along with a percentage of completion of sending or receiving data. The progress bar will close automatically once the send / receive process is completed. The progress bar window title will be “Sending data” or “Receiving data” depending on your selected functionality.
Go to RTA, click on Generator, Analyzer, and PluginHost to generate input and output signals.
On the graph, the first section displays the 1st channel of the input signal from the generator, and the second section displays the 1st channel of output from the signal flow. You can choose to display multiple channels by configuring the Analyzer in IVP.
This document describes the procedure to use the VST3.X AudioworX Plugin. VST3.x AudioworX Plugin is generated by linking the plugin source code, VST3 SDK, with Win64 xAF Libraries.
To work out of the box, the VST3 AudioworX needs to be organized according to a specific folder structure. Therefore, extract the zip file into an arbitrary workspace folder (e.g. C:AWX_dev) and make sure it matches the structure below and that there are no spaces in the names.
extendable-audio-framework
external
inc: Folder to place the included files for the External AudioObject.
src: Folder to place the source files to build the External AudioObject.
vst3: VST3 wrapper files
vstProject: Satisfies interface dependencies
Build.bat: Script to build VirtualAmp.dll, required for GTT Toolbox.
Build_VST3.bat: Script to build VST3 plugin.
clean.bat: Script to clean the VST2 build artifacts.
Public
include: xAF HeaderFiles
lib: AudioworX libraries for Win32 and Win64.
Steinbergsdk
The Steinberg sdk is not part of the AWX package and needs to be downloaded manually. Please refer to option 1 or option 2 mentioned below.
VST3 (all files and folders inside this folder are part of the Steinberg SDK)
vst3sdk: VST3 sdk files and build scripts
There are two options to get the VST3 sdk.
Option 1 (External): Download directly from the Steinberg official page [1]:
With the download, you are accepting the license agreement from Steinberg.
Extract the zip file according to above mentioned folder names
Refer below topics to generate the VST3.x plugin with an external audio object.
Steps to add source code for external audio objects.
Steps to generate the VST3 plugin.
Steps to add source code for external audio objects
Steps to add source code for external audio objects
Place the source code for the new audio object under external src.
Place the header file under the external.
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
Update externalincAudioIds.h with the pre-processor macro definition for the new audio object.
AudioIds.h
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.
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
Open the command prompt in Administrator mode.
Browse to the external folder and run bat to clean up any previous build artifacts.
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
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.
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.
Step-by-Step Simulating Signal Flow using VST3
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.
Open the tool (Reaper).
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
Click on Re-scan and select clear cache and re-scan.
Adding VST3 plugin
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 ConfigurationSelecting 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
Click on Insertà MediaFile to add an audio file to the track.
Click on the play button to start audio playback.
Starting audio playback
Global Tuning Tool (GTT)
Use the Global Tuning Tool (S Release version).
Load the GTT DLL from the /Harman/HarmanAudioworX/AudioFrameworkDLLs/ folder. Select GTT Dll
Open GTT and enter port number 25001 in the AmpSrv settings to connect the device to GTT,
Configure the signal flow as required and click SendSignalFlow to send the signal flow files to the VST3 device.
Sending Signal Flow From GTT
In the AudioworX Starter Kit, the Raspberry Pi 5 functions as the audio processor running the AWX Amp Application. This application receives raw audio input streams from and sends back processed audio to HiFiBerry ADC8x add-on and DAC8x HATs via the 4 stereo input audio ports and the 4 stereo output audio ports, respectively. In the rest of the document, the Raspberry Pi 5 with the HiFiBerry HATs together (the core of the Starter Kit) is referred to as the “AudioworX Starter Kit” or simply, the “Starter Kit”.
The following sections describe the hardware connections needed for a functional AudioworX Starter Kit in detail.
The Starter Kit can be used in both active and passive speaker setups. In both cases, the Starter Kit requires the following basic hardware connections to be made:
Direct ethernet connection to the PC using an ethernet cable,
8-channel line audio input via the 4 stereo audio input ports (top row – HiFiBerry ADC8x Add-on) using 3.5mm connectors,
8-channel line audio output via the 4 stereo audio output ports (bottom row – HiFiBerry ADC8x Add-on) using 3.5mm connectors,
The power supply.
The image below shows the Starter Kit and its connection ports.
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 the active and passive speaker setup block diagrams given in the following sections.
However, in situations where a direct ethernet connection cannot be made, the Starter Kit functions as a Wi-Fi hotspot (access point) named AP_AWXStarterKit with the password “starterkithotspot” for the PC to directly connect via Wi-Fi. Refer to section “Starter Kit Configuration > Wi-Fi Config” in SKUtility Tool – Graphical Application for more details.
Hardware Connections in Active Speaker Setups
For multi-channel active speaker setups (powered speakers) on test benches or in listening rooms, the audio output channels on the Starter Kit can be directly connected to the speakers, enabling a full 7.1 speaker configuration. The below block diagram shows the hardware connections in an active speaker setup.
The Starter Kit has been configured by default to run the example project described in The Starter Kit Example Project. In this configuration, the audio output channels follow the 7.1 speaker configuration, and the speakers are expected to be connected to the 3.5 mm audio output ports as follows:
Front Left and Front Right speakers to the first port,
Center speaker and the Subwoofer to the second port,
Surround/Side Left and Surround/Side Right speakers to the third port, and,
Rear Left and Rear Right speakers to the fourth port.
The above diagram assumes 7.1 audio for the input ports as well (in line with The Starter Kit Example Project. Channels 1 and 2 (Front L and Front R) are typically used for a stereo input, and the rest of the channels may be used as deemed fit for the audio processing pipeline application, for example, microphones with pre-amp (since the inputs are line-level).
Generally, in a standard TRS (tip-ring-sleeve) 3.5 mm audio jack, the tip carries the left channel, and the ring carries the right channel audio. However, identifying them and connecting them to the correct speaker requires careful consideration. To simplify this, the Starter Kit example project has a Router audio object in its signal flow to route the signals correctly in software.
Hardware Connections in Passive Speaker Setups
The description in this section uses the JBL DSP-4086 car audio amplifier for illustrative purpose. However, an AudioworX Starter Kit package may contain a different amplifier, may be similar in usage and specification, whose integration steps may vary.
For a multi-channel passive speaker setup like in a car, an additional power amplifier is needed since the HiFiBerry DAC8x 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 package includes a JBL DSP-4086 car audio amplifier (or similar), 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, thereby fully centralizing all audio DSP functions to the AWX Amp application in the Raspberry Pi 5.
The block diagram below shows the hardware connections for such systems.
Hardware Connections for the JBL DSP-4086
The following connections are to be made at the JBL DSP-4086 amplifier end:
RCA Audio Inputs from the Starter Kit (bottom row of 3.5 mm ports), using 3.5mm to RCA stereo cables:
First output port of the Starter Kit to Channels 1 and 2 of the JBL amplifier,
Second output port of the Starter Kit to Channels 3 and 4 of the JBL amplifier,
Third output port of the Starter Kit to Channels 5 and 6 of the JBL amplifier.
Speaker Harness to the passive speakers via speaker cables (each speaker output has a + and – terminal labelled on the JBL speaker harness wires):
Channels 1 and 2 to the Front Left and Front Right speakers,
Channels 3 and 4 to the Center and Sub-woofer speakers,
Channels 5 and 6 to the Side Left and Side Right speakers.
Power from the SMPS Power Supply:
Red wire (positive power terminal) to the +V terminal of the SMPS power supply,
Black wire (negative power terminal) to the COM terminal of the SMPS power supply,
Blue thin wire (Remote In) to the +V terminal of the SMPS power supply.
JBL DSP-4086 Car Amplifier Connections
4. Ensure that the physical switches on the JBL amplifier are set to the following states:
“Input Level” switch to “LO” (extreme left position),
“Turn-on Mode” switch to “REM” (extreme left position).
JBL DSP-4086 Input Level and Turn-On Mode States
The next section describes how to verify if the Starter Kit is configured properly and is functioning as expected.
Verifying the Starter Kit Connections
The SKUtility tool’s “Diagnostics” feature can be used to verify if the Starter Kit hardware is properly configured, connected and is functioning as expected. To run diagnostics:
Ensure that the Starter Kit is powered on,
Run the SKUtilityGUI.exe from the start-menu,
Type in the user credentials to log into the Starter Kit (the default credentials are pre-filled as shown in the below figure).
Press the “Run Diagnostics” button.
This will print a log in the right-hand side pane of the SKUtilityGUI as shown below.
SKUtility Diagnostics
If the Starter Kit is properly configured, the text “Diagnostics complete. No issues detected.” will be displayed in the log as highlighted above. If the diagnostic detects issues with the Starter Kit, refer to Starter Kit Troubleshooting.
The SKUtility Diagnostics feature only verifies the basic configuration. Troubleshooting the speaker connections is out-of-scope for the diagnostic tool (including the amplifier connections and configuration). The most basic method for diagnosing audio output is to use a pair of headphones and manually plug it into each audio output port to verify audio output.
AudioworX Starter Kit packages received directly from Harman AudioworX contain hardware components that are pre-configured. The above instructions are sufficient to begin executing GTT workflows with the Starter Kit. If the components are purchased independently, write to Harman AudioworX support at AudioworXSupport@harman.com to receive detailed steps on configuring each component.
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.
Click the + button in the “Projects tab” of the “Home Screen” of GTT.
Select Empty Template and provide project title and description.
Click the Create button to create a new empty project.
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 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 on 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:
Click the + button in the “Devices” pane of the Device Designer tab.
Select the Create Device File option on the right side of the window.
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:
Right-click Physical cores and click Add Physical Core.
Select Physical Core 0 choose arm64-v8a 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 that the GTT project is compatible with the Starter Kit.
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:
Sample rate: 48,000 Hz
Max. number of input channels: 8
Max. number of output channels: 8
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.
To send the exported device.flash file, with the Starter Kit connected in the SKUtilityGUI.exe tool, go to Configuration > Send Device File, select the file to send, and click Open. For the Starter Kit to adopt the new device configuration, remove all other flash files from Configuration > Flash Files, and reset the AWX Amp application using Remote > Reset.
For more details on how to send the device.flash file refer to “Flash a Device File” in the “Starter Kit Configuration” section of SKUtility Tool – Graphical Application.
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 AWX Amp application is running in the Raspberry Pi for GTT to be able to learn from the Starter Kit Hardware. Refer to the “Running Starter Kit Diagnostics” section of SKUtility Tool – Graphical Application.
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:
Launch AmpSrv2 from the Desktop or from the Windows Start bar.
Go to File > Options > Socket and set the host name as “raspberrypi.local” and port as “25001”.
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).
Select the device and click Ok to add the device into the GTT project.
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 Configuration > Factory Reset.
More details on this can be found under “Starter Kit Configuration” in SKUtility Tool – Graphical Application.
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” section in Getting Started with 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:
Connect the pins in physical core (block named “Device-4”) and virtual core (block named “Virtual Core 0”).
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.
Now, connect the pins on the added “Xaf Instance” and “Virtual Core 0”.
Double-click the Xaf Instance to edit/add the AOs and define a signal flow.
Drag and drop the required AOs into the designer and connect them as needed. The below figure shows a Gain object of 8 channels that is added to the signal flow.
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”.
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” section of Getting Started with the Example Project and can be tuned thereafter as described in the “Connecting to the AudioworX Starter Kit for Tuning” section of Getting Started with the Example Project.
Once the Starter Kit hardware has been set up and verified using the SKUtility diagnostics, it is ready to interact with the GTT application for implementing and tuning audio processing pipelines.
GTT includes an example project for the AudioworX Starter Kit that can be used a starting point for users to get familiar with the AudioworX workflows. This project implements a simple signal flow, custom tuning panels and some presets to showcase common AudioworX workflows that are explained in the GTT user guide.
The following sections guide first-time users through the initial setup of AudioworX using the Starter Kit.
The Home Screen of GTT provides options for importing a project, creating a new project, opening an existing project, exploring some high-level features of GTT, etc. For more details, refer Home screen options page. To open the Starter Kit example project:
Go to the Sample Projects tab.
Double click the “AWXExampleProjectStarterKit” project.
On opening the example project, the first view that is shown is the Device Designer view. This tab shows a high-level view of the audio system, showing the audio device and its abstractions as shown in the below figure.
The Device Level Abstraction (AWXExampleProject1): This represents the physical device or the target device with physical audio inputs and outputs. The Starter Kit supports up to 8 audio output channels and 8 audio input channels which are provided by the HiFiBerry DAC8x and ADC8x add-on HATs. 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 has four 64-bit Arm v8a Cores, currently, only one of the cores is supported for performing audio processing operations by the AWX Amp application. Other AudioworX amplifiers may have more than one DSP core, each of which will be represented separately in the Device Designer 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, the virtual core has 8-channel 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 more details, refer to 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 in Core Objects Toolbox). 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. Users may skip to the Connecting to the AudioworX Starter Kit for Tuning section for establishing connection between GTT and the Starter Kit. However, the following sections highlight important steps that are specific to the Starter Kit and users are encouraged to read them before continuing with tuning the signal flow.
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:
On the Device Designer tab, click on AmpSrv Settings on the top ribbon bar and click Configure.
In the AmpSrv window, go to File> Options>Socket, and set the hostname to “raspberrypi.local” and the port to “25001”.
Click Ok to close the AmpSrv2 settings window and minimize the AmpSrv2 window.
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 Connectionpage.
Sending the Device Configuration to the AudioworX Starter Kit
The device configuration has information on how the physical and virtual cores, the Xaf instances (which are 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 AWX 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:
On the Device Designer tab, click on Send Device Config.
GTT may prompt the user to reboot the target amplifier (the Starter Kit) on successfully sending the device configuration.
In such cases, the AWX Amp application running in the Starter Kit must be reset from the SKUtility Tool. With the Starter Kit connected on the SKUtility tool, go to the “Remote” tab and click the Reset button.
Other AudioworX-based amplifiers may require a full reboot cycle to properly configure and run the SFD.
Connecting to the AudioworX Starter Kit for Tuning
Once the device configuration has been sent to the Starter Kit hardware and the AWX Amp application has been reset (only needed if prompted by GTT), GTT can connect with the Starter Kit for tuning.
Steps to connect GTT to the Starter Kit:
Click the Connect Device button located in the top ribbon bar to initiate device connection.
A “Device Synchronization” window will pop up. Click the Send button to send the tuning data. This synchronizes the tuning parameters of the active SFD in the Starter Kit to the states of the parameters as set in the GTT project.
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.
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.
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.
The rows in the State Variable explorer 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.
Tuning using the Custom Panel
GTT offers the capability to design custom interface panels specific to the signal flow in the project using drag-and-drop method, allowing the user to define their own tuning interfaces with simple steps from the “Panel Designer” tab. For details on custom panel creation and usage, refer to Create a Custom Panel in GTT.
The AudioworX Starter Kit example project includes three custom tuning panels designed for tuning the audio processing pipeline by exposing essential tuning parameters for the AOs in the signal flow, namely:
MainPanel – high-level tuning (volume, mute, bass, treble, preset selection and links to other sub-panels),
CarTuning – car view for system level tuning parameters that depend on locations of the speakers and their spectral characteristics,
RoomTuning – room view for system level tuning parameters that depend on locations of the speakers and their spectral characteristics for a 7.1 audio system,
To launch the panel, go to the “Panel Designer” tab and double-click the item named MainPanel in the Panels pane on the left-hand side of the view as shown below.
The panels in the Starter Kit example GTT project have “Notes” (yellow icons resembling sticky-notes) that contain special instructions or descriptions of the associated features which can be read by clicking on the icon. Additionally, the UI items, such as faders, buttons, drop-down menus, etc., have tooltips with brief descriptions that are displayed on hovering the mouse pointer over them.
The main panel has high-level tuning parameters such as volume, mute, etc., and offers capabilities to turn on and off features such as Loudness Compensation, Tone Control and System Tuning. Apart from the controls mentioned, this panel also has buttons to open sub-panels for System Tuning interfaces. Below is an image showing the main panel.
With the HiFiBerry ADC8x add-on, up to 8 input channels are supported, allowing for a variety of use cases. In the example project, 2 formats of audio input are supported which are selectable from the Main Panel:
Stereo Input: In this format, only the input channels 1 and 2 are used and the signal is up-mixed to all 8 output channels. The rest of the input channels (3 to 8) are disregarded.
7.1: In this format, the 8 input channels are assumed to be in the 7.1 channel configuration, which are processed and output through the 8 output channels. The input channel configuration is as follows:
Channel 1 -> Front Left
Channel 2 -> Front Right
Channel 3 -> Center
Channel 4 -> Subwoofer
Channel 5 -> Surround/Side Left
Channel 6 -> Surround/Side Right
Channel 7 -> Rear Left
Channel 8 -> Rear Right
The example project contains an object named “Speaker Tuning” to enable fine tuning of the audio signals sent to the physical speakers accounting for their locations from the listening position and their spectral characteristics. Two tuning panels have been included in the project, one providing the view of a room with a 7.1 speaker setup and the other providing the view of a car with 8 speakers, which can be opened by clicking the buttons named Room Interface and Car Interface, respectively.
AudioworX Starter Kit Example GTT Project – System Tuning Car View
The following are the key features of the two panels:
Gain, mute and phase invert controls for individual speakers,
LED indicators to show when audio content is playing through a given speaker (enabled by turning on the Streaming feature in GTT),
Global mute and bypass functions,
Signal flow representation at the bottom, showing the audio objects involved, whose native panels can be accessed by clicking their respective boxes for tuning.
Additionally, in the Room View, the speaker icons double-up as mute buttons to mute the individual speakers.
The Main Panel also has a “Presets” pane that lists presets stored in the Parameter Sets tab of GTT. The following section describes how to save and recall tuning presets.
Saving and Recalling Tunings using Parameter Sets
GTT enables users to save and recall tunings as presets from the “Parameter Sets” tab of GTT.
In the Starter Kit example project, 3 presets are created, namely:
“Stereo To 7.1”: In this preset, all the features are turned on, the input stereo audio is up-mixed to 7.1 channel configurations and specific tunings are applied to the individual output channels to account for the speaker positions as an example. Note that only the first two input channels are active in this preset.
“7.1 Passthrough”: In this preset, all the processing features are turned off and the 8 input channels are passed through directly to the output channels with only the volume and mute controls.
“Stereo Passthrough”: In this preset, all the processing features are turned off and the 2 input channels are passed through to the corresponding output channels. Note that although the System Tuning feature may appear to be turned on, internally, there is no gain, delay, EQ, etc., applied to the 2 input channels.
For detailed information on the Parameter Sets tab and its features, refer to Parameter Set Components.
Saving Custom Tunings
To save the values of all the parameters upon tuning into a preset:
Go to the Parameter Sets tab.
Select the “PresetGroup” on the left-side pane,
Click the New button on the top ribbon bar. This will create a new column named “Set<N>”, where N is the index of the new set. This may be overwritten as needed.
Right-click the new column and select Retrieve to populate it with the current tuning settings.
To overwrite an existing preset, right-click the preset column to be overwritten and click Retrieve.
In the example project, the presets (described above) store all tuning parameters in the signal flow. However, they may also 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:
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.
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. For more details on this feature, refer to Configure Preset Controller.
In the Starter Kit example GTT project, there is a single pre-made preset slot named “Stereo To 7.1”, which is intended as the startup configuration of the AudioworX Starter Kit upon boot-up and is set as the default slot. This slot is mapped to the “Stereo To 7.1” preset that is saved in the Parameter Sets tab, which is described in the previous section.
The AudioworX Starter Kit consists of hardware and software components which require basic setup before being able to function as a target amplifier that can interact with GTT. The following sections highlight them and provide steps for installation.
The AudioworX Starter Kit package consists of the following hardware components:
Raspberry Pi 5 8 GB RAM variant (low-cost pocket-sized Linux computer),
27 W power adapter for the Raspberry Pi (USB Type-C),
Micro SD Card with custom 64-bit Raspbian OS image (plugged into the Raspberry Pi 5),
HiFiBerry DAC8x (Includes 4-stereo 3.5mm line audio output ports) mounted on the Raspberry Pi 5,
HiFiBerry ADC8x Add-on (Includes 4-stereo 3.5mm line audio input ports) mounted on the Raspberry Pi 5,
6-channel power amplifier with power supply for passive speaker setups (JBL DSP 4086or equivalent),
Ethernet cable for connecting the Raspberry Pi 5 to the PC (recommended).
For the full Starter Kit experience, the user is expected to have access to:
Speakers for audio output (6 passive speakers or 8 active speakers),
A stereo analog audio source (PC or mobile phone with audio out).
The power amplifier is only required if the speakers being used for audio playback are passive. For active speaker setups (powered speakers), the Starter Kit can be used without the amplifier. Refer to Hardware Components Setup for more details.
Software Pre-requisites
The following is a list of software applications to be installed on a Windows PC to use the Starter Kit:
Download and install the above-mentioned pre-requisites on a Windows PC. For steps on how to install GTT and its pre-requisites, refer to Installing AudioworX Setup.
The GTT installation includes the AudioworX Starter Kit Utility tool (SKUtility), a graphical application that can be used to remotely operate the Starter Kit hardware over the network, for actions like verifying hardware connections, audio device configuration, resetting the AWX Amp application running on the Raspberry Pi, rebooting the Raspberry Pi, etc. This tool is described in detail in SKUtility Tool – Graphical Application and can be found in the following directory (default GTT installation folder):
The SKUtility tool can also be accessed directly from the Start-Menu by pressing the “Windows” key on the keyboard, followed by the keyword “SKUtilityGUI”. Below is a screenshot showing the same.
The SKUtility Tool is also available as a command-line application written in Python 3.12, installed in the same directory as the graphical application. For more information, refer to Starter Kit Utility Tool (SKUtility) Overview.
The AudioworX Starter Kit is a complete hardware setup that provides a comprehensive experience of AudioworX and its features with minimal setup time. The Starter Kit, much like other AudioworX amplifiers, 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 Starter Kit offers 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 is a comprehensive guide on using the AudioworX Starter Kit as a target amplifier. It includes detailed setup instructions, connection diagrams, software installation steps, GTT integration for signal flow design and tuning, and troubleshooting tips.
Fully packaged AudioworX Starter Kit (hardware components, accessories, etc.) is currently available on request and the rest of this document addresses those users who possess the Starter Kit package directly received from Harman AudioworX. To request for an AudioworX Starter Kit package, please write to AudioworXSupport@harman.com.
Alternatively, users who may be interested in assembling their own Starter Kits from scratch may refer to Assembling and Configuring Starter Kit Components for instructions.
The AudioworX Starter Kit also has developer options enabling algorithm developers to build and test custom Audio Objects in AudioworX. This feature requires a special license which may be requested by writing to AudioworXSupport@harman.com.
For more details, you can refer below video explaining overview of the AudioworX Starter Kit, showing its hardware and software components, use cases and capabilities.