Schema

About the codebase

All Gen2 Bongiovi SDKs are built from a unified C codebase.  This allows the same code to be used for operating system applications (embedded and standard) as well as specialized digital signal processing chip solutions.

To achieve this flexibility, the Bongiovi codebases are not built with an object-oriented foundation.  Instead, libraries can be easily built to support a finite number of algorithm instances appropriate for the target platform.  For example, the Linux/Android/iOS/Windows SDKs are built (by default) to support 20 instances while the NXP Dirana 3 solution (and its ~300kb memory limitation) is built to support a maximum of 2 stereo instances.  An instance handler provides dynamic allocation in the background when required by the platform.

Object-oriented applications are supported by wrapping the core C audio processing code and instance handler in a C++ interface.  C headers for this interface are also provided for situations where C++ cannot be used.

Bongiovi SDK Schema Diagram
  1. Algorithm Blocks
  2. Instances (mono or stereo)
  3. Instance Handler
    • Embedded or dsp solutions do generally not include this layer. Instances are explicitly defined via the lower-level C API.
  4. Local API
    • Audio Processing Functions for each instance
    • User Controls
    • Load embedded presets (linked ProDef.c)
    • Load from BGPS file
  5. Communication (remote) API
    • Send/Receive all parameters
    • Load embedded presets
    • Receive meter data (for Profile Creator tuning)
    • Receive current preset data
    • Debug and error handling
  6. C++ Interface
    • Provides meta functions such as “Sensitivity” for specific applications.
    • Meta functions may be added at the customer’s request.
    • Embedded or dsp solutions do not normally include this layer. A straight C solution is provided.
  7. C Convenience Interface
    • It is provided when a C layer is needed over the C++ layer.

When using the C interface, C++ components will still be present.  Therefore, the C++ linker must be used when building the application.

Presets and Parameters

Audio processing parameter sets may be embedded in the final solution by linking a ProDef.c file or loading a BGPS file. Please see the Preset Management Workflow for more details.

Was this page helpful?