Analog Devices, Inc. · NASDAQ:ADI
Analog Devices — Technical Presentation (December 2008)
35 slides from Analog Devices's technical presentation, December 2008
Slide 1: VisualAudio Advanced Features
The World Leader in High Performance Signal Processing Solutions VisualAudio Advanced Features Presented by: Paul Beckmann Analog Devices CPSG
Slide 2: About this Module
About this Module This module provides advanced training on VisualAudio. Examples and demonstrations will be based on the ADSP- BF533 EZ-KIT. You will learn about: z Advanced tool features such as high and low-level variables, the expression language, and presets. z How to use the external interfa
Slide 3: Module Outline
Module Outline VisualAudio Designer advanced features z High and low-level parameters z The expression language z Presets Using the external interface Writing custom audio modules Conclusion 3
Slide 4: VisualAudio Designer Advanced Features
VisualAudio Designer Advanced Features 4
Slide 5: High and Low-Level Module Variables
High and Low-Level Module Variables High-level variables appear on a module’s inspector typedef struct { AMF_Module b; Low-level (or render) variables appear within the module’s float ampSmoothing, ampTarget, b0; data structure float amp, state; } AMF_ToneControlBass; 5
Slide 6: Expression Language
Expression Language The expression language Inspector converts between high-level and low-level parameters High-level variables Expression language examples: Expression 1. Convert from smoothing Language time (msecs) to coefficient 2. Convert from dB to linear units. 3. Convert a balance control Low
Slide 7: Presets
Presets Convenient mechanism for managing audio module parameter sets Step 1 – Tune the system to a desired state z Inspectors z External interface Step 2 – Capture the preset Step 3 – Apply the preset from the Tool Step 4 – Optionally compile the preset with the application. Presets are
Slide 8: Presets
Presets Inspectors Convenient mechanism for managing audio module parameter sets Step 1 – Tune the system to a desired state z Inspectors z External interface Step 2 – Capture the preset Step 3 – Apply the preset from the Tool Step 4 – Optionally compile the preset with External Interface
Slide 9: Presets
Presets Convenient mechanism for managing audio module parameter sets Step 1 – Tune the system to a desired state z Inspectors z External interface Step 2 – Capture the preset Step 3 – Apply the preset from the Tool Step 4 – Optionally compile the preset with the application. Presets are
Slide 10: Presets
Presets Convenient mechanism for managing audio module parameter sets Step 1 – Tune the system to a desired state z Inspectors z External interface Step 2 – Capture the preset Step 3 – Apply the preset from the Tool Step 4 – Optionally compile the preset with the application. Presets are
Slide 11: Presets
Presets Convenient mechanism for managing audio module parameter sets Step 1 – Tune the system to a desired state z Inspectors z External interface Step 2 – Capture the preset Step 3 – Apply the preset from the Tool Step 4 – Optionally compile the preset with the executable. Presets are
Slide 12: The External Interface
12 The External Interface co DEVICES
Slide 13: External Interface
External Interface Works in both Design Mode and Tuning Mode z Design mode Æ module data structures z Tuning mode Æ module data structures AND sent to the DSP in real-time Capabilities z Manipulating audio module parameters z Basic control of the system (loading, saving, building, capturing pres
Slide 14: Uses of the External Interface
Uses of the External Interface Creating custom audio module design functions Creating custom GUIs z Control panels z Full or restricted functionality Leveraging existing design tools and methodologies Automating system design and tuning Regression testing of audio modules and systems 14
Slide 15: Expression Language is Included
Expression Language is Included Other Application External applications can access the high-level and low-level render variables. External Interface Changes to high-level High-level variables invoke the variables expression language. Expression Low-level accesses bypass Language the expression langu
Slide 16: MATLAB Interface Layer
MATLAB Interface Layer MATLAB scripts Simplifies usage with MATLAB Each audio module appears MATLAB Interface Layer as a MATLAB object Objects can be manipulated as if they were MATLAB structures External Interface Meta- variables Expression Language Render variables in audio module structure
Slide 17: Querying a Single Audio Module
Querying a Single Audio Module >> S=va_module(‘VolumeFletcherMunson_S1'); Queries VisualAudio for information regarding this audio module z Variables names z Data types z Sizes Generates and returns a MATLAB object 17
Slide 18: Comparison with the Inspector
Comparison with the Inspector S = smoothingTime: [ 100] fmGain: [ 0] lowFreq: [ 30] lowQ: [ 1] One-to-one correspondence between MATLAB structure members and interface variables shown on the inspector 18
Slide 19: Manipulating Module Parameters
Manipulating Module Parameters Treat them as if they were standard MATLAB structures: VolumeFletcherMunson_S1.smoothingTime=50; VolumeFletcherMunson_S1.fmGain=-3; VolumeFletcherMunson_S1.lowFreq=40; VolumeFletcherMunson_S1.lowQ=1.1; Often used to initialize parameters in a repeatable method usin
Slide 20: Accessing Low-Level Render Variables
Accessing Low-Level Render Variables The previous example demonstrated how to access the high- level variables shown on the inspector. To access low-level render variables in Tuning Mode, issue the command: va_module(‘VolumeFletcherMunson_S1’,0) VolumeFletcherMunson_S1 = ampSmoothing: [ 0.002081
Slide 21: Regression Testing Capabilities
Regression Testing Capabilities External Application Platform operates in “demand render mode” External application generates data. Audio passed block- COM Interface by-block through the tuning interface. External application analyzes data for correctness. MATLAB examples are provided. 21
Slide 22: MATLAB Testing API
MATLAB Testing API Place platform into “demand render” mode va_demandrender(‘begin’); Send and receive individual blocks of data DATA_OUT=va_demandrender(‘process’, DATA_IN) DATA_IN=TickSize x NumberOfInputs DATA_OUT=TickSize x NumberOfOutputs Repeat for multiple blocks Exit demand render mo
Slide 23: Tone Control Example
Tone Control Example Place all modules into bypass mode except the treble tone control Generate input data in MATLAB t=((0:2047)/48000).'; DATA_IN=chirp(t, 20, t(end), 24000, 'logarithmic', -90)*ones(1,2); Process the data va_demandrender(‘begin’); DATA_OUT=va_demandrender(‘process’, DATA_IN);
Slide 24: Tone Control Results
Tone Control Results 24
Slide 25: Writing Custom Audio Modules
Writing Custom Audio Modules 25
Slide 26: Standard vs. Custom Modules
Standard vs. Custom Modules Standard modules are supplied with VisualAudio Custom modules are written by the user Standard and custom modules appear on separate tabs within VisualAudio Designer. This is the only distinction between standard and custom modules – no limitations or cost overhead
Slide 27: Components of an Audio Module
3 Components of an Audio Module A header file which contains the module’s run-time interface and a description of the associated data structure The module’s run-time function (“render function”). This can be: z C code z ASM code z Object or library An XML file that describes the module in deta
Slide 28: Instance Data Structure
Instance Data Structure Each instance of an audio module has an associated C data structure All data structures start with the same set of fields z These contain elements common to all audio modules z Describe the “base class” of the “object” This is followed by module specific fields 28
Slide 29: AMF_ScalerSmoothed.h
AMF_ScalerSmoothed.h Defines the data structure associated with the audio module #include "AudioProcessing.h" typedef struct { Common Commonheader header AMF_Module b; // parameters fract32 ampSmoothing; fract32 oneOverTickSize; Module Modulespecific specific // state fract32 amp; variables variab
Slide 30: AMF_ScalerSmoothed.c – Render Function
AMF_ScalerSmoothed.c – Render Function (C example. Actual code is in ASM.) SEG_MOD_FAST_CODE void AMF_ScalerSmoothed_Render(AMF_ScalerSmoothed * instance, AMF_Signal ** buffers, int tickSize) { int i; fract32 amp = instance->amp; fract16 ampTarget = instance->ampTarget; fract32 ampSmoothing = instan
Slide 31: Class Structure Declaration
Class Structure Declaration All audio modules of the same type share a single “Class Structure” Describes the behavior of the module to VisualAudio’s run-time interface z Number of inputs and outputs z Mono input and mono output z Name of render function z Bypass behavior Typically declared wi
Slide 32: AMF_ScalerSmoothed – Class Structure
AMF_ScalerSmoothed – Class Structure SEG_MOD_SLOW_CONST const AMF_ModuleClass AMFClassScalerSmoothed = { /** Flags. */ 0, /** Reference to render function. */ (AMF_RenderFunction) AMF_ScalerSmoothed_Render, /* Default bypass */ (void *)0, /* Input descriptor - 1 input, and it is mono. */ 1, 0, /* Ou
Slide 33: Audio Module XML
Audio Module XML Describes the audio module to VisualAudio Designer z Module name and palette location z Input and output pins z Compatible processors z Instance data structure z High-level variables and expressions z Memory allocation rules z Other usage rules 33
Slide 34: Conclusion
Conclusion VisualAudio’s design features simplify the development of advanced audio features z High and Low-level variables z Expression language z Presets Open API’s allow VisualAudio’s capabilities to be extended by z Interfacing to external COM compliant applications z Interfacing to MATLAB z
Slide 35: For Additional Information
For Additional Information A free download is available at the VisualAudio product page z http://www.analog.com/en/prod/0,2877,VISUALAUDIO,00.html Additional examples and tutorials can be found at the VisualAudio Developer’s Web site: z www.visualaudiodeveloper.com Specific technical questions
Analog Devices — Technical Presentation (December 2008) on 6ix