Introduction
This document is an overview of the audio modules included in Audio Weaver. It is intended for training users how to get the most out of the module library by providing a high-level overview with in depth examples of the modules. Modules build up sophisticated audio functions and systems in a matter of clicks, similar to circuit design or using lego blocks. Further information is available in the detailed HTML documentation provided with the Audio Weaver installer. For more information about a specific module, run Audio Weaver Designer and right click a module to view its “Help” file.
How to use this guide
This guide is separated into sections as outlined in the table of contents: Chapter 2 starts us off with basic module concepts. It also discusses designer workflow including the module properties window and adjusting parameters. Chapter 3 explains each module folder in the browser, as well as how to pick the correct module as many of the modules are similar. To be clear about the differences between the modules, the end of each section in Chapter 3 includes a table that summarizes the differences between the modules in that folder. Chapter 4 provides in depth examples of common processing techniques and algorithms so the user can have a taste of the capabilities of Audio Weaver. Usage tips are bolded throughout this guide for ease of reference.
Other Audio Weaver Documents
This document describes the Audio Weaver modules and module library. The MATLAB scripting interface is described in Audio Weaver Matlab API Guide. Read more about the graphical designer in Audio Weaver Designer User’s Guide.
Module Library Organization
Audio samples are represented as 32-bit values. Several different data types are available:
...
At the top of the module browser, there is a checkbox to filter based on the different module data types. (See above.). This will filter out modules for hardware that operates on specific sample data type (fract32 for fixed-point). The integer module libraries are typically used for control operations and work on both fixed-point and floating-point targets. The type convert module allows any data type to transfer into the others. This may be destructive if converting to a type with lower resolution.
Module Browser overview
Audio Weaver modules are organized into separate browser folders based on their function. The folders are arranged in alphabetical order titled with a short description of the contents. A search bar can be found directly above the browser window. To use the search bar, type the name or some common tag for the wanted module and press enter.
Basic Module Concepts
Audio Weaver Designer has two modes: Design mode and Tuning mode. In Design mode, design signal flow: by adding modules, making connections, and setting parameters. Tuning mode occurs when the designed layout is run. The layout can only be run if all modules have valid connections. Run the layout by clicking the play button at the top or by right clicking the canvas and selecting “Build and Run.” Tuning mode allows for parameter changes only: no changes to the wiring or structure of the block diagram.
Viewing Module Properties
An audio module gets instantiated when dragged to the canvas from the Module Browser, located on the left hand side of the canvas. Module arguments can only be changed in Design mode and affect memory allocation, pins, and wiring. Module variables are tunable parameters which can be changed in either mode. Arguments tend to define memory allocation for the module, which can’t be changed during runtime. For example, in an FIR filter, the length of the filter (number of taps) is specified as an argument. This length affects memory allocation and as a result setting these arguments is only allowed in Design mode. The FIR coefficients (a variable) can change at any time.
...
In the Matlab code for an FIR module, the module properties maps directly to the function arguments: M=fir_module(NAME, L)
...
Tunable Variables and Inspectors
Most modules also have an associated Inspector. The inspector allows changing of the module’s tunable parameters. Inspectors can be used in Design mode and Tuning mode by double-clicking on a module, or by right-clicking and selecting “Inspector.” The inspector for an FIR filter holds the filter coefficients. (See below.) These parameters can also be changed under the “Variables” tab in the module properties window.
...
Save a set of inspectors for later by using inspector groups. Usually, many inspectors are shown at the same time. To use an inspector group, click ‘Inspector’ on the top menu of Designer. Here inspector group names are managed. The inspector group will save the inspector configuration, including positioning. To reposition an inspector group, simply adjust the inspectors and save the group again with the same name.
Step Values and Fine Controls
Within the properties window, in the variables tab, many modules will have range attributes, with an optional ‘step’ to determine adjustable resolution for the slider or knob control. The Max and Min values determine the allowable tuning range, and can be adjusted at any time.
Fine controls of the tuning interface relies on a hotkey and click combination. Press and hold ctrl and scroll the mouse wheel on the knob/slider to use fine tuning. For coarse tuning, hold shift and do the same. For adjusting with mouse clicks, the tuning is controlled by distancing the cursor away from the knob while tuning. This will allow for smaller changes to occur, as more distance is needed to create the angle.
Viewing Module Variables on Canvas
A useful design feature is to see variable values without having to open all of the inspectors. The original design appears as:
...
To show variable values, select “Module Variables” under the View menu. With variables shown, it appears as:
...
Module Status
Each module has an associated runtime status with 4 possible values:
...
The Module Status can be changed by right-clicking on a module and selecting “Module Status \to→ ”. To change the module status of a group, select multiple modules(including subsystems) with drag and select or by pressing ctrl, and right-click to change the status of all selected modules.
...
Wires and Control Signals
Connections between audio modules are called wires and correspond to buffers of data on the target. A wire has the following properties:
...
Most modules can operate on an arbitrary number of channels, block size, and sample rate. The number of channels and block size of a wire is called its size. Show wire properties using the View \to→ Wire Types menu item.
Pin propagation
Wire information is resolved through a process known as pin propagation. The wire information is known from the system input and this information is propagated in module order until it reaches the system output pin. To trigger pin propagation, click on the Propagate changes button ( ) on the toolbar. Alternatively, right-click on an empty part of the canvas and select “Redraw” from the context menu. If there is a wiring error and pin propagation is unable to complete, an error sound will play. To find out more details to this error, run the system.
...
Feedback Wires
Feedback occurs when a wire is routed backwards to an input earlier in the system. Feedback wires must be manually specified.
...
Wire size information must be set using the “Feedback Properties” dialog which is reached by right-clicking on the feedback wire. The following dialogue box opens, allowing the ability to set the wire’s block size, number of channels, sample rate, data type, and whether or not it is complex. This should match the pins that the wire is connecting.
Block Size
Each hardware target has a fundamental block size to specify how many samples per block are handled by the real-time audio I/O functions. This is shown on the Server window when the Server launches. (See below.)
...
In the example below, the BlockStatistics1
module computes the RMS level of the signal and a lookup table (TableInterp1) turns this into a linear gain to be applied by Scaler1. The signals into and out of the lookup table module are control signals.
...
Smoothed modules
Some modules have built in smoothing to prevent pops and clicks during tuning. Smoothing is implemented using a first order IIR filter:
...