SPAOP
|
This page provides hints for building and installing SPAOP, the StreamMulticaster and the required libraries. Please note that those libraries have their own installation documentations and the information here is just a collection of hints on how to get it right.
Before going into the details, here is a brief overview of the steps needed to get running versions of SPAOP and the StreamMulticaster:
The SPAOP repository contains two submodules: one for a fork of the JUCE library, one for the Github pages containing this documentation. To pull them in, go to the base directory of the SPAOP repository and do the following two steps:
# 1. initialize the submodules: $ git submodule init # 2. pull in the submodules' content: $ git submodule update
The Liblo library can be downloaded from http://Liblo.sourceforge.net/.
For OSX, the process to build and install is straightforward and well-documented. Just keep in mind that if you want to build for both 32 and 64 bit architectures, you'll need to build the universal binary version of Liblo.
The most convenient way is to use Homebrew: if you have Homebrew installed, just type in brew install Liblo --universal
. The library and header include path settings of the OSX project files within the SPAOP repository all point to the paths where Homebrew will put them, so doing it the Homebrew way should be the easiest way by far.
For Windows, it is a bit more complicated:
Follow the building Liblo for other platforms instructions (and feel free to use the --without-threads
option). At the moment (Liblo version 0.28), the premake4-script only supports Visual Studio versions up to 2010 - however, the automatic update options of Visual Studio 2013 will work fine on the 2010 project generated by it.
One more thing: at this moment, there is still something you need to fix in the Liblo-headers: in lo_osc_types.h, change line 25 (#ifdef _MSC_VER
) to:
#if defined(_MSC_VER) && _MSC_VER < 1600
(If this still hasn't been fixed when you're reading this, you're invited to support my change request on the Liblo mailing list.)
The JUCE library's official website is www.juce.com - there you will find documentation, a very active forum and download links. However, there are some reasons not to use the official version and rather chose the fork that is included as a submodule.
One of the main use cases for SPAOP is editing the automation data of source positions within the DAW host. There are a few features of both the VST3 and AU interface related to how a plugin's parameter is displayed within the host that are not supported correctly by JUCE - that is fixed in that fork (see here for a diff).
The fork contains two main branches. The master
branch is meant to be an exact copy of the official master and can get updated from there. The developMH
branch contains any changes to the original JUCE and is the one to be used for building SPAOP if you want to take advantage from the fork.
The recommended way to get a local copy of the fork is to fetch it as submodule of the SPAOP repository. Go to the base directory of the SPAOP repository and enter git submodule init
and git submodule update
(see the Submodules chapter in Pro Git to learn more about that). After that is done, the full JUCE repository can be found within the JUCE directory of the SPAOP repository.
JUCE is well documented so do not expect any details here - just a few words: the JUCE way to mangage a project is to use the Introjucer. The Introjucer is an application that lets you create and manage projects for different IDEs and includes a WYSIWYG GUI editor.
It stores its projects in .jucer
files. So for example, if you want to open the SPAOP project, you would open the SPAOP.jucer file in the Introjucer and launch your IDE from there.
To use the Introjucer, you will need to build it yourself. You can find ready-made projects for various IDEs under ./JUCE/extras/Introjucer/Builds/
.
You will need to get the official software development kits for the plugin platforms you want to build for.
The VST3 SDK (which includes everything needed to build VST2 as well) can be downloaded from http://www.steinberg.de/en/company/developer.html. If you want to avoid readjusting some path settings within the SPAOP.jucer file, place it in the same directory where you cloned the SPAOP repository.
Audio Units plugin are OSX-only. Older versions of Apple's Xcode IDE include the AU SDK. For newer versions of Xcode, you will have to download it from Apple. Currently, it is not fully compatible with the latest Xcode without fixing a few things manually. All steps to get this going are documented here (if that link ever becomes unavailable try this thread in the JUCE forum).
The RTAS-version of SPAOP has never been tested yet. If you want to give it a try, this application form should lead you to the RTAS SDK.
Once you have all that installed, you can open the file ./SPAOP/SPAOP.jucer
with the Introjucer. From there you can launch the project in the IDE of your choice and build it. If you have placed the VST SDK or Liblo in locations diffferent from those recommended above, you might need to readjust these within the project's settings in the introjucer.
Have a look at the preprocessor defines page for options you can set at compile-time (most importantly, the IP and port of cWONDER are set via the defines CWONDER_DEFAULT_IP_STR and CWONDER_DEFAULT_PORT_STR).
For building the StreamMulticaster, Xcode and VS 2013 projects can be found within ./StreamMulticaster
. Once again, you might need to readjust the location of the Liblo files. For the connection settings, the defines from WonderHeader.h are applied (so change them as needed).