ExpDigital - Infinity API Free cross platform Toolkit (Pc/Mac/Universal/Free)

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.
[Works on windows] [Works on PPC mac] [Works on Intel mac]

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 3 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!

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.3 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.3 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 and Jpeg images, no third party libraries required, plus PNG support coming soon!
* 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 type analysis
* Command line feature compatible
* VST 2.3 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
* Completely free!