Advanced Audio Framework
FEATURES | BENEFITS |
Portability.
|
Runs on:
|
Fixed Point Arithmetic. | Suitable for platforms without FPU. These include most of today’s embedded devices. |
Low Resource Consumption.
|
Excellent for implementation on embedded platforms. |
High Level C++ APIs. Different interfaces suited for application requirements. Basic APPKIT SDK interfaces are:
Custom-built applications can be designed by combining different basic APPKIT SDK interfaces. |
|
Serialization. Support for storing and activating:
|
|
Platform Independent Messaging System.
|
Simplifies user interface design. |
Exact Timing. | Analysis information and position events are always synchronized with playback. |
Modular Design. Binary, run-time loadable plug-ins perform function such as:
|
|
“On the fly” Module Insertion. | Insert/Remove effects without playback interruption. |
MODKIT SDK. Part of the AMPhibian® distribution that enables third party Module development. |
|
Utility Libraries. |
|
Advanced Playlist Manipulation. Shuffle, Repeat, Insert, Remove, Query, Sort, Viewing by different attributes (genre, artist, year…)… |
|
Track Checker. Simplifies track analysis (ID3 Tag, media format, spectral content, peak volume, RMS, begin/end silence, beat detection…). Options are defined through easy-to-use interface. |
Detailed track information and analysis for achieving high quality audio playback, e.g.:
|
“Batteries included” Distribution. AMPhibian® distribution comes in “Batteries included” form with both APPKIT and MODKIT SDKs and a set of different Modules. |
Many Modules are already available, with more in development. Ideally, customers should only need to write their own Modules when they have very specific needs, such as obfuscation or deploying on closed, proprietary platforms. |
Portability
AMPhibian® is designed to be a portable framework. It is entirely software-based and therefore configurable for different levels of CPU usage and audio quality. The use of system-dependent tools/libraries is reduced to a minimum and entire framework is based upon fixed-point arithmetic. This, along with the low resource consumption (low memory footprint and low CPU usage requirements) makes it suitable for platforms without FPU (majority of today’s embedded devices.
The AMPhibian Framework can be used to implement various audio applications on many different devices from PCs to tablets to smart phones. The development of such applications is the same for all of supported platforms. Therefore, a developer doesn’t have to put an extra effort to port an application to a different platform, which makes the use of AMPhibian Framework extremely efficient and suitable when multi-platform functionality is required.
AMPhibian is currently available on:
- x86/Windows
- x86/Linux
- ARM/Windows Phone
- ARM/Linux
- Mac OSX
Besides currently available platforms, AMPhibian Framework is designed to be portable to any platform with audio streaming capability and a C++ compiler.
High Level C++ API’s
Standard AMPhibian ®Framework distribution provides a set of high level interfaces (APPKIT SDK) suited for various application requirements. In addition to presenting many new audio playback features, APPKIT interfaces solve many issues connected with building audio clients, making them simple and effective. Their technical superiority and flexibility makes them suitable for developing wide range of different audio applications from small and simple to those of larger scope of functionality.
The standard APPKIT SDK interfaces are:
- Player – Standalone player
- PlayerCF – Player with crossfade capability
- Mixer – Standalone mixer
- Processor – Processing only – no audio output
- PlaySound – One-shot playback of short audio clips
- Recorder – Pre-process, encode and save
Listed standard APPKIT interfaces are designed to meet common audio application demands e.g. playing an audio file or mixing many streams into one and playing them simultaneously. Creating custom-built/special featured audio applications can be done by combining standard interfaces. Unlike many other currently available SDKs,Amphibian’s set of APIs is easy to use and enable developers to obtain maximum performance in the least possible time.
Serialization
The AMPhibian® serialization system provides a support for storing/retrieving different sets of application settings, and consequently makes customization of audio applications more elegant and easy to perform. Apart from storing/retrieving user defined application settings, this system also enables easy manipulation of user or vendor defined module (e.g. audio effect) defaults and presets.
Application settings, as well as module parameters, are stored in the form of an XML file. Since XML is independent of hardware, software and application, it makes a good, multiplatform solution for storing and distributing module defaults and presets.
Serializing module parameters by using XML files enables different module developers to effectively distribute various sets of presets and therefore make their modules more applicable when it comes to customizing audio applications. Audio equipment manufacturers can also distribute supporting presets for their devices (e.g. headphones, speakers, etc.). That way best quality playback is achieved regarding music genre and environment conditions.
Modular Design
The AMPhibian® Framework is suitable for a variety of audio applications of different degree of complexity – from simple command line tools for e.g. audio format conversion to more advanced multi-stream player applications. The system is designed to consist of processing modules, which are connected into chains for processing or playback of the audio stream. AMPhibian® Framework provides an API for effective control of streams built this way.
By grouping different modules together, developers can add product-differentiating audio effects, codecs, and data delivery methods e.g. file or HTTP stream. File security and rights management methods can be added if such demands are put on an application. Therefore, applications built with the AMPhibian® APPKIT SDK are extendable. New features are easily added by adding new modules.
The Framework enables for modules to be compiled as dynamic libraries and loaded at run-time without playback interruption. Therefore it is possible to write an application that can use filters/effects developed as AMPhibian® modules by a third-party vendor.
Generally, AMPhibian® modules can be divided into following groups:
FUNCTIONALITY | TYPE |
Source Modules – Modules used to read data from a storage |
|
Sink Modules – Modules that render data to a device such as audio card or file on disk |
|
Converter Modules – Modules used internally to manipulate raw audio data |
|
Codecs – encoders/decoders |
|
Filter/Effect Modules – Modules that process audio signal to achieve specific audio effect |
|
Utility Libraries
The AMPhibian® Framework provides a rich set of utility tools for handling the most common issues related to audio applications development such as media library, playlist and meta-data information.
Standard AMPhibian® utility tools are:
- Playlist – provides advanced playlist manipulation
- Track Checker – simplifies track analysis
- ID3 Tag Reader/Writer
- Archive – enables serialization
Provided utilities make the development of fully functional and feature versatile audio applications fast and efficient. Their functionalities, apart from development purposes, also improve audio playback experience and handle many important issues closely related to playback itself e.g. crossfade option, automatically setting the track’s volume, detecting and clipping silence at begin/end of track, cataloging music etc.