The Infinity API is a FREE cross platform (OSX Universal Binary, Windows) toolkit written in C++. It is divided in to a series of libraries to enable easy maintainence and to ensure that projects can be built within the minimum amount of extra source code.
Licence conditions
The Infinity API is licenced to you, the end user, under the terms and conditions defined in our licence document. You can read a copy here
Example Projects
We include 4 sample projects with Infinity, featuring developer previews of two of our up and coming freeware plugins/application - SCalV5 and MidiViz. Also included is the ClassWrite application which will auto-generate Infinity API compliant classes, ready for you to add your own specific code to! Included with the newest version of Infinity (1.0.1) is the example VST Project ExpGain which is a simple example of how to build a VST2.4 plugin.
Library Structure
The Infinity API is split in to several core parts. Each part handles a specific range of jobs, for example EGUI handles all the Graphics code. The table below details the stage that the library is currently at and also includes links to the main documentation (both downloadable and web browsable). Obviously you only need to include the libraries that you require for your project. If your writing a project that doesnt require audio or VST support, you can simply link against ECore and EGUI.

ECore Responsible for all core library functionality. All other libraries depend upon ECore and it must be present for the rest of the Infinity API to work. Provides handling of all basics (such as container classes, object wrapping, host querying etc). Contains no graphical objects, but is all you need to write command line applications.
EGUI EGUI provides the graphics handling process space of the Infinity API. It features both leightweight controls and heavy weight window objects and is a consistent interface across both window and mac systems.
EMusic EMusic provides acess to musically relevant processing classes, such as Audio file I/O, Midi File I/O and event handling etc. This can be considered to be under construction - over time this library will grow!
EVst EVst provides cross platform wrappers around the VST 2.4 specification and provides helper classes to save you time in both setting up and running your projects. Due to licencing conditions you will need to obtain a copy of the VST2.4 SDK yourself and then place the source code in the correct place for this library to work. This is explained fully in the readme file included with the download

Design aims
The Infinity API was designed around the following philosphy
  1. Common interface to both windows and macintosh systems Previously much time had been spent tweaking projects to work on both mac and windows based systems. We wanted to be able to write one set of code in an application and it work identically on mac and windows. The Infinity API achieves this very well - simply set up the project on both platform and hit compile!
  2. Simple to use, clean class style The Infinity API is based around a strict coding style, both for the layout of the code and for the way the code is written. Clearly documented, consistent naming paradigms and good code structure all aid in quickly writing good quality robust source code
  3. Simplify VST development After using various other (unamed) graphical toolkits for writing VST plugins, it became clear that whilst usable for simple interfaces, anything special would require a lot of work. The Infinity API makes the whole process of writing a VST easier, from writing the base effect or synth class right through to tempo and midi handling
Key features
  • Large collection of template containers
  • Basic object type wrappers (strings, numbers etc)
  • File handling (I/O streams), including XML
  • Thread creation and management
  • Fully featured font handling system
  • Full alpha drawing system, including anti aliased line and text drawing
  • Ability to create, manage and control heavy weight window objects
  • Extensive set of lightweight user interface controls
  • System clipboard, drag and drop and host interaction
  • Alpha controllable menu system with ability to host images / sub menus cleanly
  • Built in support for Targa, Jpeg and PNG images, no third party libraries required
  • Midi event handling
  • Audio buffer handling
  • Built in audio file read and write (currently WAV and AIFF are supported)
  • Audio computation tools
  • Full host interaction including CPU and file system interrogation
  • Structured exception handling
  • Versatile object handling system
  • Full type info system, enabling accurate run type analysis
  • Command line feature compatible
  • VST 2.4 plug-in wrappers
  • All code 100% cross platform capable, supports Windows, Macintosh PPC and Macintosh Intel platforms
  • Consistent naming and layout of code and every function documented
  • Free under licence
Can i browse the documentation online?
Yes! Simply click here to enter the main documentation. All the documentation is included with main download.
Can i use the Infinity API to write software other than VST plugins?
Yes! Although the API was designed with a focus on music software it is a capable generic framework for any kind of application. Support for open source standards such as XML means that it is can be used for virtually any kind of application programming. Over time we hope to include links to other software written with the API on these pages to give you an idea of what the API is capable of. If you've created something cool with the API and would like to share it with the world, drop us an email and we'll add a link to your product on the (coming soon) users page
How to download
You can download the complete Infinity API here. Once you have downloaded the package we strongly suggest that you take a look at the example projects and the documentation to familiarise yourself with the workings of the API
Support Options
There are three types of support options available for the API:
  1. Community Support
    We encourage all Infinity API users to register on our web forum. There you will find a dedicated API support forum where other users of the API will be able to help you out. The lead developers of the API also frequent this forum and will often be available to lend a hand. There is no charge for this forum and it is open to all. New programmers are welcome! You can find the forum here
  2. Dedicated Support
    In certain cases we are willing to enter in to paid support agreements. Please contact us for more details.
  3. Complete project design and build
    If you need an entire project designed and built to specification, a specific VST plugin to be created, or a large code base creating, Exponent can help. Please contact us to discuss your needs!
Copyright 2005 Exponent. All rights reserved. Best viewed in Firefox at 1024 * 768 or higher.