The Integra Framework consists of libIntegra, a shared dynamically loaded library and a set of data files consumed by the library. Further information about libIntegra can be found here.
The additional files that form part of the framework are:
- The Integra core modules
- Schemas for libIntegra's data files
- Any other dependencies required by libIntegra
- The libIntegra public headers (macOS only)
- Download source tree from Git https://github.com/BirminghamConservatoire/integra-framework
The repository contains a submodule for certain dependencies. To download these submodules, use the git command:
git submodule update --init --recursive
On macOS the Integra framework builds as a framework. The built framework includes the libIntegra dynamically linked library, any non-system dependencies, the core Integra module library and any assets or data files required by libIntegra.
To build the Integra framework on macOS:
- Open libIntegra/xcode/Integra/Integra.xcodeproj
- Select the Integra.framework build target from the target selector
- Select Product -> Build
This will create a Debug build of the Integra.framework in the built products output directory
To build a Release build, either select "Build for Profiling" from the Product menu or change the Build Configuration in the Scheme Editor
To run the test suite:
- Select the UnitTests target from the target selector
- Select Product -> Run
On Windows the framework builds as a collection of dlls and other files that are copied to a common directory at the end of the build process. All files in this output directory must be available to the libIntegra.dll at runtime.
- Install Visual Studio (2017 or later)
- Install the Test Adapter for Google Test (needed for unit tests)
- Install the Windows WDK
- Install mingw (including msys, gcc and pthreads). The easiest way to do this is to download the mingw installer and install the mingw32-base-bin, msys-base and mingw32-pthreads-w32 meta packages
- C:\MinGW\msys\1.0\bin should be in the PATH variable
- C:\MinGW\bin should be in the PATH variable
The ASIO SDK is needed in order provide low-latency audio I/O in windows. The ASIO SDK is published by Steinberg, who do not permit the redistribution of its source code. So you need to download it from http://www.steinberg.net/nc/en/company/developer/sdk_download_portal.html, and extract it to libIntegra/externals/portaudio/src/hostapi/asio/ASIOSDK.
In order for the libIntegra build system to locate required headers for the Flext dependencies:
- Copy the file libIntegra/msvc/flext_settings_VS.props to libIntegra/externals/flext
This will overwrite the existing flext_settings_VS.props in libIntegra/externals/flext. Because this file is tracked by git, it will therefore show up as modified in the git staging area. To ignore these local changes, use:
git update-index --skip-worktree libIntegra/externals/flext/flext_settings_VS.props
The changes will then be ignored by git.
Once the above requirements have been satisfied, it should be trivial to build the Integra Framework.
- Open libIntegra/msvc/libIntegra.sln
- Build the solution
The output files will be placed in libIntegra/bin
To run the test suite:
- Select from the Test menu: Run -> All Tests
The Integra Framework is licensed under the GNU GPL version 2. For further details see here
The Integra module library is public domain under the terms of the Unlicense. For further details see here
Issues should be reported on the project issue tracker
Many of libIntegra's dependencies were originally developed within a Unix or Linux ecosystem. These include libPd, Flext, libxml2 and the pthreads library. Whilst it is possible to compile these on Windows, it makes the libIntegra build system under Visual Studio somewhat complex. A future goal of the project is to factor out some of these dependencies so that building the framework can be simplified across different platforms.