*** Compiler: ***

You will need at least Visual Studio 2005 to compile the extension, older
versions of Visual Studio may work but this has not been tested. To compile the
64 bit dll usually one of the Professional Editions is required but there are
insrructions somewhere on the web about how to create 64 bit executables with
the Express editions of Visual Studio. I have not tested this but a lot of
other people seems to have great success with this kind of setup.

REAPER extensions depend on the C++ ABI of the Microsoft compiler so other
compilers won't work out of the box, especially Delphi or MingW/GCC will need
some proxy or MS-ABI faking to work (doable but a lot of work, not
recommended).

*** Project Notes: ***

The REAPER SDK must be in your include path, at least reaper_plugin.h and a
current reaper_plugin_functions.h. REAPER will create the latter for you if you
run the "[developer] Write C++ API functions header" action in REAPERS's action
dialog.

The project file has a post-build step that copies the resulting dll into the
REAPER plugin directory which is located at "C:\Program Files\REAPER\Plugins"
on my system. This makes debugging a lot easier for me. If you don't want this
automatic installation or if your path differs you may want to update the
compiler settings accordingly to prevent errors while building the dll.

*** Project Structure: ***

reaper_cc121.vcproj     // The project file.

resource.h              // Resource IDs
resource.cpp            // Resource includes (Mac only)
reaper_cc121.rc         // Resource script, dialogs etc. (Win only)

DllMain.cpp             // Windows entry point.
reaper_cc121.h          // Main project file, global definitions and includes.
reaper_cc121.cpp        // REAPER entry point and other REAPER glue.

ThreadedMIDIOutput.h    // Helper class for a thread safe MIDI out on Mac.
ThreadedMIDIOutput.cpp  // dto.

CC121Options.h          // Helper class to handle the options of the control
CC121Options.cpp        // surface, loading, saving, etc.

ConfigDialogs.h         // Location of all the configuration dialogs.
ConfigDialogs.cpp

CC121EqMap.h            // EQ map handling, loading etc.
CC121EqMap.cpp

CC121.h                 // The main control surface class. This is the place
CC121.cpp               // where all the fun happens.

Notes.txt               // This file. :-)
CC121 Format.txt        // Description of the message format of the controller.
License.txt             // The license (LGPL)

*** Source Projects: ***

This project is of course based on several other open source extensions, namely
the original REAPER SDK and the developers from Cockos and the open source
extensions from SWS, Xeniakos and Padre PC. Looking at these helped a lot.
Thanks also to the great forum over at reaper.fm :-)

*** License: ***

This control surface is mainly based on the faderport example from the original
REAPER plugin SDK. I usually prefer BSD licenses myself but as the original
code was released under the LGPL this code will of course be LGPL'ed as well.
You should find a copy of the license text in the project directory.
