- A windows audio app (Game, Media Player, Browser, etc) creates an audio stream. Parameters of the audio stream (channel count, sample rate, etc) are handled by the Windows Audio Framework.
- The Bongiovi solution provides 2 types of audio processing; the V3D SFX APO (for virtual surround sound) and the DPS EFX/MFX APO (for EQ, dynamic range control, microphone effects). The Windows Audio Framework handles appropriate connections between the audio app, APO, and the output device.
- BongioviAPO.dll and filter.sys (optional) are installed with the output device driver. The Bongiovi APO must be installed for the hardware device prior to connecting with the Bongiovi UI SDK.
- A filter driver (filter.sys) may be installed to emulate 7.1 output channels for stereo devices. This is required for most video games as they commonly do not attempt to make a surround sound connection with stereo hardware.
- Output devices may include USB, Bluetooth, or built-in audio chipsets. In most cases, the output devices are stereo. However, multichannel devices may also be supported.
Audio path components are installed via INF file
- Applications do not have direct access to the APO parameters at runtime. To overcome this limitation, the Windows Registry is used for Remote Process Communication. The latency for parameter exchange is ~50ms. This shared registry location handles the following data and functions:
- All current audio processing parameters set by the user
- Devices Presets organized by Vendor ID and Product ID (VID/PID). Multiple hardware devices are supported.
- Real-time audio meters
- Current streams and channel masks
- APO status and version numbers
- The Bongiovi SDK provides all of the functions needed to create a custom UI for controlling the APOs at runtime. The SDK provides the following high-level features:
- Manage presets for all valid devices (determined by VID/PID and APO driver installation status)
- Export/Import presets as files for sharing
- Connect to the APOs running on a valid device via the BGVEndpoint data object
- Get/set parameters for V3D virtual surround sound
- Get/set parameters for DPS audio processing
- Get/set parameters for microphone processing
- Provide visualization of audio meters for calibration, effects, and user feedback
- Record and playback microphone audio for user calibration
- Playback sound files for surround sound calibration
- The Bongiovi Config UI is provided for demonstration and calibration of the solution. It serves as an example for creating a custom UI and utilization of all features available in the Bongiovi APO SDK. Bongiovi audio engineers use the Config UI to create custom presets for specific audio devices.
- User presets are exchanged via the BACF format. This JSON file includes all parameters for V3D, DPS, and microphone processing for a single hardware device.
- Bongiovi audio engineers can further customize the audio effects by loading proprietary BGPS parameter sets in a binary format. BGPS files contain 20 presets that may be accessed via index. Contact your Bongiovi representative for more information.
UI components are installed via the update assistants and normal app installation processes
The SDK requires the Windows Registry to have corresponding folders for each supported device with at least one preset for output and input. A preset is a set of all values that control sound processing. Presets can also be downloaded to the registry using the SDK.
There are two types of presets associated with this SDK, they are Output and Input presets.
Output presets contain control values associated with the DPS and V3D libraries. Output Presets also include a V3D Config. The V3D Config is a set of internal settings for control of assignments for sound with a specific channel mask (stereo, 5.1, 7.1, mono …). This allows you to create different settings for V3D controls for different channel masks. If your preset does not have a V3D Config corresponding to the sound that is being processed through the V3D library, the Default Config settings will be used for this sound.