Developer Guide - Overview
Developing for Vermilion Desktop Composer
General Information: Vermilion Desktop Composer is a Java desktop application, developed in NetBeans IDE. There is no specific dependence on this IDE, and the project uses Ant scripts for building, but no other method has been tested or can be supported at this time. The project has a standalone Windows installer built from an NSIS script but for now the only way to run under other OSes is to use NetBeans or to build the project yourself. This has been tested under Ubuntu as proof of concept, and I would be happy to coordinate on better integration with your OS if you have experience in the area.
System Design: Vermilion Desktop Composer consists of 3 layers. The first layer is Vermilion, an application framework providing audio mixing, plugin loading, and document handling. The second layer is Vermilion Desktop, consisting of a canvas where audio processing plugins can be connected to form an audio chain. The third layer is Vermilion Desktop Composer, an event cueing system for composing musical scores and controlling audio plugins in Vermilion Desktop.
Project Structure: As a project, Vermilion is broken into numerous parts. There is a separate project for each of the three layers mentioned above. In addition, there is a separate project for the VermilionDesktop machine plugins and for the sample bank project. The build script for the Vermilion project builds the other projects and imports the JARs and classes into the plugins directory for Vermilion. This is a manual process that should not be altered at this time. There are also two JAR files which are not part of the compile path but are libraries in the Vermilion project; the scaling layout manager and plugin loading library used by Vermilion. Source is included for these libraries however they are not meant to be changed during the development of Vermilion.
Download NetBeans: I highly recommend NetBeans, and it is a small lightweight IDE (although it obviously requires the JDK to be installed as well) that is worth checking out if you are used to Visual Studio or Eclipse. Obtain it from Sun simply by Googling 'netbeans ide' or by using the package manager for your Linux distro.
To run Vermilion, open all the VermilionXXX projects that are in the source distribution and set the main project to the base Vermilion project. Then you can do a clean and build and run the Vermilion project, which will load the plugins and present the main window.
Runtime Threading: From a threading standpoint, Vermilion is very simple. The main thread runs the GUI, and any realtime output providers run their own threads. At this time there is only one provider, the AudioThread. There are other places in the system where timers are used for regular GUI updates however these are very specific and are not meant to be accessed elsewhere.
In essence all the above means is that in most cases you will either be creating a GUI or creating a class that is called by the audio thread.
Para 2.