Browse Source

Big rewrite of the audio plugin framework to create "polymorphic" plugins. This means that all the separate projects for each plugin type have now been reduced to a single project that create a multi-purpose binary, which functions as any combination of AU/VST/RTAS. This should make it much easier and quicker to develop multi-platform plugins because you now only need to manage one project. I've also moved all the files around, cleaned up their naming conventions, and done some extensive tidying up. I've rewritten the "How to use this framework.txt" file, so please refer to that for more details!

tags/2021-05-28
jules 17 years ago
parent
commit
90999af68b
44 changed files with 3312 additions and 2345 deletions
  1. +289
    -272
      extras/audio plugins/How to use this framework.txt
  2. +55
    -0
      extras/audio plugins/demo/build/linux/premake.lua
  3. BIN
      extras/audio plugins/demo/build/mac/English.lproj/InfoPlist.strings
  4. +28
    -0
      extras/audio plugins/demo/build/mac/Info.plist
  5. +713
    -0
      extras/audio plugins/demo/build/mac/JuceDemoPlugin.xcodeproj/project.pbxproj
  6. +20
    -0
      extras/audio plugins/demo/build/win32/JuceDemoPlugin.sln
  7. +347
    -0
      extras/audio plugins/demo/build/win32/JuceDemoPlugin.vcproj
  8. +285
    -270
      extras/audio plugins/demo/src/JucePluginCharacteristics.h
  9. +23
    -10
      extras/audio plugins/demo/src/juce_AppConfig.h
  10. +12
    -0
      extras/audio plugins/demo/src/juce_LibrarySource.cpp
  11. +12
    -0
      extras/audio plugins/demo/src/juce_LibrarySource.mm
  12. +57
    -57
      extras/audio plugins/wrapper/AU/juce_AU_Resources.r
  13. +11
    -7
      extras/audio plugins/wrapper/AU/juce_AU_Wrapper.mm
  14. +28
    -7
      extras/audio plugins/wrapper/RTAS/juce_RTAS_DigiCode1.cpp
  15. +19
    -9
      extras/audio plugins/wrapper/RTAS/juce_RTAS_DigiCode2.cpp
  16. +95
    -0
      extras/audio plugins/wrapper/RTAS/juce_RTAS_DigiCode3.cpp
  17. +13
    -3
      extras/audio plugins/wrapper/RTAS/juce_RTAS_DigiCode_Header.h
  18. +6
    -0
      extras/audio plugins/wrapper/RTAS/juce_RTAS_MacResources.r
  19. +101
    -82
      extras/audio plugins/wrapper/RTAS/juce_RTAS_MacUtilities.mm
  20. +0
    -0
      extras/audio plugins/wrapper/RTAS/juce_RTAS_WinExports.def
  21. +0
    -0
      extras/audio plugins/wrapper/RTAS/juce_RTAS_WinResources.rsr
  22. +4
    -3
      extras/audio plugins/wrapper/RTAS/juce_RTAS_WinUtilities.cpp
  23. +991
    -979
      extras/audio plugins/wrapper/RTAS/juce_RTAS_Wrapper.cpp
  24. +0
    -0
      extras/audio plugins/wrapper/Standalone/juce_AudioFilterStreamer.cpp
  25. +1
    -1
      extras/audio plugins/wrapper/Standalone/juce_AudioFilterStreamer.h
  26. +1
    -1
      extras/audio plugins/wrapper/Standalone/juce_StandaloneFilterWindow.cpp
  27. +0
    -0
      extras/audio plugins/wrapper/Standalone/juce_StandaloneFilterWindow.h
  28. +19
    -22
      extras/audio plugins/wrapper/VST/juce_VST_Wrapper.cpp
  29. +171
    -111
      extras/audio plugins/wrapper/VST/juce_VST_Wrapper.mm
  30. +0
    -4
      extras/audio plugins/wrapper/formats/RTAS/DummyResourceFile.r
  31. +0
    -44
      extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectGroup.cpp
  32. +0
    -44
      extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectGroupMIDI.cpp
  33. +0
    -44
      extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcessAS.cpp
  34. +0
    -44
      extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectType.cpp
  35. +0
    -44
      extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectTypeRTAS.cpp
  36. +0
    -44
      extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_ChunkDataParser.cpp
  37. +0
    -46
      extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_DLLMain.cpp
  38. +0
    -46
      extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_DefaultSwap.cpp
  39. +0
    -40
      extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_Dispatcher.cpp
  40. +0
    -44
      extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_PlugInUtils.cpp
  41. +0
    -40
      extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_PluginInitialize.cpp
  42. +0
    -12
      extras/audio plugins/wrapper/formats/VST/MacExportedSymbols.txt
  43. +9
    -1
      extras/audio plugins/wrapper/juce_IncludeCharacteristics.h
  44. +2
    -14
      extras/audio plugins/wrapper/juce_PluginHeaders.h

+ 289
- 272
extras/audio plugins/How to use this framework.txt View File

@@ -1,272 +1,289 @@

The Juce Audio Plugin project!
==============================

(c) 2005-6 by Raw Material Software, visit www.rawmaterialsoftware.com for more info.

The idea behind this is to create a framework which lets you write a platform-independent
audio plugin using Juce, which can be easily rebuilt to target multiple different plugin
formats and platforms.


How does it work?
=================

There's a generic audio plugin base class defined in juce_AudioFilterBase.h, and to write
your plugin, you just need to create a sub-class of this.

You can then compile your class against one or more of the platform-specific projects,
so that it gets wrapped as a VST, AudioUnit, RTAS, etc. - hopefully without changing any
of your code at all, or having to go anywhere near any platform-specific stuff.


How do I use it?
================

Under the 'wrapper/formats' directory are a bunch of different sets of files containing the
wrapper code for each different plugin type.

There is also a 'demo' folder - this shows an example plugin which can be built in all
the different formats. The demo folder contains:

- a 'src' directory containing the common, platform-independent code that defines this
plugin's behaviour
- a 'build' directory which contains projects for building the demo for each different
platform and format.

Have a look at the demo classes to see how it works, and then to create a real plugin,
you'll need to replace the demo files with your own code.

I've tried to add helpful comments where you might run across common compile errors, to
help describe what you might be doing wrong, as getting a build set-up for some of these
formats can be a bit of a pain. Please let me know if you find there's anything missing
from these instructions or anything I could change to help smooth the build process along
a bit.

I'd recommend NOT putting your own plugin code inside the JuceAudioPlugin directory - it's
much neater to keep it somewhere separate and to alter the projects to point to your
files instead of the demo ones. That way when new versions of this library come out, it'll
make it easier to update to the latest code.

For details about how to create your own projects for the various formats, see below.


Sending feedback:
=================

- if you spot a bug or some kind of host incompatibility, tell me, of course!

- the plan is that no-one should need to change any of the platform-specific code, or the base-class
code.. So if you find that your plugin can't do something you want it to, then rather than just
jumping in and hacking things to get the functionality you need, why not contact me and we'll
figure out a nice generic way of doing it. That way it'll benefit all the users, and you won't
have to hack it all over again when the next version comes out.

- if you're really determined to rewrite large chunks of my code and send it to me to look at,
*please* don't reformat anything in your own preferred style, or change the format of the
comments, etc.. It's bad enough looking at people's code and trying to figure out why they've
done something, but if everything's moved around I can't even diff it..


What are the licensing issues?
==============================

Juce is released under the GPL (Gnu Public License) - this means that you're free to use
and redistribute it as long as your products are also released under the GPL. Basically
this means that if you use it, you also have to give away your source code.
If you want to release a closed-source application, you can buy a commercial license
that lets you avoid this restriction - see http://www.rawmaterialsoftware.com/juce for more info,
or see the comments at the top of all the Juce source files.

If you're building the VST projects or releasing a VST, you'll need have a look at Steinberg's
developer site to see what licensing rules apply these days. Their website's at
http://www.steinberg.net

If you're building an RTAS then you'll need to sign Digidesign's developer license to get
their SDK. Visit http://www.digidesign.com for more info.


-----------------------------------------------------------------------------------------------------

How to create your own VST project
==================================

- Visit http://www.steinberg.net and jump through whatever hoops are necessary to download
and install the VST SDK.
- Make sure your include path contains an entry for the "vstsdk2.4" folder containing
the SDK.
- First try loading the VST demo project in JuceAudioPlugin/demo/build. Hopefully this
should build correctly.
- To create your own project for a VST, the simplest way is to take a copy of
the demo project and go through it carefully, changing any relevent settings to reflect
your own project.

N.B. On the Mac, there's an important point to note about exported symbols.. When XCode builds
the plugin, I've had unpredictable results when trying to stop it from exporting all of
the internal functions as public symbols. There are some flags that are supposed to turn this
off, but sometimes they don't seem to have any effect, and using an explicit exports file also
seems a bit hit-and-miss. (If anyone knows better and can get this working, please let me know!)
Anyway, as well as being wasteful and showing everyone what's inside your plugin, leaving all
the symbols in there will cause fatal crashes when used with Tracktion, or alongside any other
Juce-based plugins. A way of making sure your plugin is stripped is to use the command
"strip -x -S YourPlugin.vst/Contents/MacOS/YourPlugin" after bulding it, which removes the
unnecessary symbols (although in my experience this also doesn't seem to work all the time,
so it's a good idea to check it using the unix "nm" command).


-----------------------------------------------------------------------------------------------------

How to create your own AudioUnit project
========================================

- If you've got XCode installed, the demo project in JuceAudioPlugin/demo/build/AudioUnit
should just build. You may need to tweak a few paths to make sure it can find the
juce.h include file and juce library.
- When copying this project to make your own, a good plan is to open up a view of the settings
for the project and target, viewing the "customised settings" to see those values that
have to be deliberately set for the plugin to work.

N.B. For the Mac there can be an issue with exported symbols - see the note about this for
VSTs, as the same solution can be used for AudioUnits.


-----------------------------------------------------------------------------------------------------

How to create your own RTAS project
===================================


RTAS is a bit more of a pain to build than VSTs or AUs. To begin with:

- Contact Digidesign, ask to become a Digidesign Development Partner, sign the relevent
agreements and NDAs.
- From the Digidesign website, download their latest Plug-In SDK
- Install the SDK and build some of the demo plugins to make sure it all works.

Compiling the juce demo RTAS on the PC:
=======================================

- Using the Digidesign demo projects in the SDK, make sure you've built debug and release
versions of these static libraries: DAE.lib, DigiExt.lib, DSI.lib, PlugInLib.lib.

- In Visual Studio, add all of this lot to your include path:

c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\EffectClasses
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\ProcessClasses
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\ProcessClasses\Interfaces
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\Utilities
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\RTASP_Adapt
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\CoreClasses
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\Controls
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\Meters
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\ViewClasses
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\DSPClasses
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\Interfaces
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\common
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\common\Platform
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\SignalProcessing\Public
c:\yourdirectory\PT_73_SDK\AlturaPorts\SADriver\Interfaces
c:\yourdirectory\PT_73_SDK\AlturaPorts\DigiPublic\Interfaces
c:\yourdirectory\PT_73_SDK\AlturaPorts\Fic\Interfaces\DAEClient
c:\yourdirectory\PT_73_SDK\AlturaPorts\NewFileLibs\Cmn
c:\yourdirectory\PT_73_SDK\AlturaPorts\NewFileLibs\DOA
c:\yourdirectory\PT_73_SDK\AlturaPorts\AlturaSource\PPC_H
c:\yourdirectory\PT_73_SDK\AlturaPorts\AlturaSource\AppSupport
c:\yourdirectory\PT_73_SDK\AvidCode\AVX2sdk\AVX\avx2\avx2sdk\inc

- The Visual Studio juce_RTAS project contains a folder called "libs", with "debug" and
"release" subdirectories - these should contain links to the Digidesign lib files
DAE.lib, DigiExt.lib, DSI.lib, PlugInLib.lib - you'll need to update these links to
point to the correct locations according to where you've installed the SDK.

- Fingers crossed, this should now compile..

- IMPORTANT NOTE! If you're using MSVC2005 to build your plugin, the users will need to
have the Microsoft VC8 Runtime installed on their machines, otherwise the DLL will
silently fail to load. You should probably add the runtime to your plugin's installer,
and you can get a copy of it here:
http://www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=en


Creating a project for your own RTAS on the PC:
=================================================

- start a new empty project in Developer Studio, as a "Windows DLL"
- in the source tree, create the same folders and add to them the same list of
cpp files that are in the demo project's "wrapper code" folder.
- select all the CPP files in the "wrapper code/RTAS specific" folder, and also
the juce_RTASWrapper.cpp file, (but NOT the juce_RTASUtilities.cpp file or any
other files!), and in their properties dialog, under C++/Advanced, change their
"Calling convention" setting to "__stdcall".
Remember to do this for both your debug and release builds!
- in your project's C++/General settings, add an additional include path so that
it will be able find your JucePluginCharacteristics.h file.
- Under "linker settings", change the output file name to have the suffix ".dpm"
instead of ".dll"
- Under "linker settings/input/ignore specific library", you'll probably need to
add "libcmtd.lib" for debug, and "libcmt.lib" for release.
- Under "linkey settings", set the Module definition file to be
JuceAudioPlugin/wrapper/formats/RTAS/juce_RTAS_dlldefs.def
- You might want to change the output directory to "\Program Files\Common Files\Digidesign\DAE\Plug-Ins\"
if you want the built plugin to go directly into the PT plugins folder
- Add a custom build step to copy the dummy resource file "JuceAudioPlugin\wrapper\formats\RTAS\DefaultResourceFile"
to your target directory, renaming to to be the same as your .dpm file, but with
".rsr" on the end of the name. The demo project does this with the command
"copy /Y ..\..\..\wrapper\formats\RTAS\DefaultResourceFile "$(TargetPath)".rsr"
- Under the "general" properties, make sure that the character set is not unicode, as
this seems to stop some of the Digi code building. Hopefully this will be fixed
in future SDK releases
- add a "libs" folder to your project, and copy the set of libraries from the
equivalent folder in the demo project. Make sure you enable the debug/release
versions of these libraries appropriately.

There are quite a few things that you need to get right for an RTAS to compile correctly -
the Digi SDK documentation has a full list of tips on setting up a project, but the
main ones to note are:

- the SDK uses __stdcall as its calling convention, but JUCE uses __cdecl. I've got
around this by leaving the project's default setting as __cdecl, but changing it
specifically for those files that include or build files from the SDK - i.e. for
most of the files in the "wrapper code/RTAS specific" folder of the demo project.
- the default struct alignment for the SDK is 2 bytes, wheras the default as used in
juce is 8 bytes. Again, I've left this at the default setting, and have explicitly
changed it with pragmas when including/building SDK files.
- even though it's not used, each xx.dpm file needs to have a corresponding
xx.dpm.rsr file next to it, or PT will refuse to load it. The demo project currently
does this by using a custom build step to copy and rename a small dummy rsr file called
JuceAudioPlugin/wrapper/formats/RTAS/DefaultResourceFile


Compiling the juce demo RTAS on the Mac:
========================================

- After installing the Digidesign SDK, make sure you've run the config_SDK_for_Mac command in
its root directory. This sets up some of the tools that it needs.
- Load the juce_RTASDemo.xcodeproject and look through the project in XCode to find
all the broken links to Digidesign files. You'll need to repair these to make them
point to the location of the SDK files on your machine.
- Open the project's settings, and look for the "MacBag" setting - this defines the location
of the MacBag folder in the Digidesign SDK. You'll need to update this to point to
its location on your machine.
- It should all compile now, fingers crossed..

- Building a universal binary on the Mac: for this, you'll need to recompile the Digidesign
PluginLibrary project as a universal binary. The easiest way to do this is to add the
following lines to the top of the CommonDebugSettings.xcconfig and CommonReleaseSettings.xcconfig
files (these are found deep in the PT SDK tree somewhere, and are used for config by both the
Digi projects and the juce plugin projects):
ARCHS = ppc i386
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk
MACOSX_DEPLOYMENT_TARGET_ppc = 10.3


Creating a new project for your own RTAS plugin on the Mac:
===========================================================

It's probably easiest to take a copy of the juce demo project and go through it changing
its settings to those of your plugin.

If you decide to start from scratch, use the juce demo project as a reference to see
what needs to go in there. Looking at its project info for "customised settings" is a good
way to see what values have been set deliberately.

The Juce Polymorphic Plugin Project!
====================================
(c) 2008 by Raw Material Software, visit www.rawmaterialsoftware.com for more info.
-----------------------------------------------------------------------------------------------------
The purpose of this framework is to make is simple to write an audio plugin in a generic
way, which can then be compiled as a VST, AudioUnit, RTAS, or any combination of these.
It's "polymorphic" because the output is a single binary module that acts as all of the
different plugin formats at the same time. This means that you only need to maintain one
project, and only need to perform one build to create a multi-format plugin.
Also included are some helper classes that make it easy to create a stand-alone app to
run your plugin without a host. This might be useful in its own right, but can also be very
handy when developing your plugin, because you can build, test and debug it without needing
to keep restarting a 3rd-party host.
How does it work?
=================
To create your plugin, you just create a subclass of the AudioPluginInstance class to
perform the processing. And your plugin UI is written like any normal Juce UI component.
All the platform-specific code is hidden away in wrapper classes that you just add to
your project - you should (hopefully) never need to even see the inner workings of these.
Licensing issues
================
Juce is released under the GPL (Gnu Public License) - this means that you're free to use
and redistribute it as long as your products are also released under the GPL. Basically
this means that if you use it, you also have to give away your source code.
If you want to release a closed-source application, you can buy a commercial license
that lets you avoid this restriction - see http://www.rawmaterialsoftware.com/juce for more info,
or see the comments at the top of all the Juce source files.
If you're building the VST projects or releasing a VST, you'll need have a look at Steinberg's
developer site to see what licensing rules apply these days. Their website's at
http://www.steinberg.net
If you're building an RTAS then you'll need to sign Digidesign's developer license to get
their SDK. Visit http://www.digidesign.com for more info.
Getting Started
===============
There's also a 'demo' folder - this contains an example plugin which can be built in all
the different formats.
Have a look at the demo classes to see how it works, and then to create a real plugin,
you'll need to replace the demo files with your own code.
I've tried to add helpful comments where you might run across common compile errors, to
help describe what you might be doing wrong, as getting a build set-up for some of these
formats can be a bit of a pain. Please let me know if you find there's anything missing
from these instructions or anything I could change to help smooth the build process along
a bit.
I'd recommend NOT putting your own plugin code inside the demo plugin directory - it's
much neater to keep it somewhere separate and to alter the projects to point to your
files instead of the demo ones. That way when new versions of this library come out, it'll
make it easier to update to the latest code.
-----------------------------------------------------------------------------------------------------
Prerequisites for building a VST
================================
- Visit http://www.steinberg.net and jump through whatever hoops are necessary to download
and install the VST SDK.
- Make sure your include path contains an entry for the "vstsdk2.4" folder containing the SDK.
-----------------------------------------------------------------------------------------------------
Prerequisites for building an RTAS
==================================
- Contact Digidesign, ask to become a Digidesign Development Partner, sign the relevent
agreements and NDAs.
- From the Digidesign website, download their latest Plug-In SDK
- Install the SDK and build some of the demo plugins to make sure it all works.
- In Visual Studio: Add all of these to your include path:
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\EffectClasses
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\ProcessClasses
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\ProcessClasses\Interfaces
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\Utilities
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\RTASP_Adapt
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\CoreClasses
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\Controls
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\Meters
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\ViewClasses
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\DSPClasses
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\PluginLibrary\Interfaces
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\common
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\common\Platform
c:\yourdirectory\PT_73_SDK\AlturaPorts\TDMPlugins\SignalProcessing\Public
c:\yourdirectory\PT_73_SDK\AlturaPorts\SADriver\Interfaces
c:\yourdirectory\PT_73_SDK\AlturaPorts\DigiPublic\Interfaces
c:\yourdirectory\PT_73_SDK\AlturaPorts\Fic\Interfaces\DAEClient
c:\yourdirectory\PT_73_SDK\AlturaPorts\NewFileLibs\Cmn
c:\yourdirectory\PT_73_SDK\AlturaPorts\NewFileLibs\DOA
c:\yourdirectory\PT_73_SDK\AlturaPorts\AlturaSource\PPC_H
c:\yourdirectory\PT_73_SDK\AlturaPorts\AlturaSource\AppSupport
c:\yourdirectory\PT_73_SDK\AvidCode\AVX2sdk\AVX\avx2\avx2sdk\inc
- In Visual Studio: Using the Digidesign demo projects in the SDK, make sure you've compiled
debug and release versions of the following static libraries:
DAE.lib, DigiExt.lib, DSI.lib, PlugInLib.lib.
- In XCode: After installing the Digidesign SDK, make sure you've run the config_SDK_for_Mac
command in the SDK's root directory. This sets up some of the tools that it needs.
-----------------------------------------------------------------------------------------------------
Choosing the formats to build
=============================
Each plugin project needs to contain a JucePluginCharacteristics.h file, which holds all the
plugin-specific build details. In here, there are three macros that you can set to enable each
of the available formats:
#define JucePlugin_Build_VST 1
#define JucePlugin_Build_RTAS 1
#define JucePlugin_Build_AU 1
You can set these to 0 to disable the formats that you don't want to build, and this will avoid
any compilation problems if, for example, you don't have the appropriate SDK for a particular format.
-----------------------------------------------------------------------------------------------------
Creating a PC VST/RTAS plugin in Visual Studio
==============================================
- First try loading the VST demo project in JuceAudioPlugin/demo/build. Hopefully this
should build correctly.
- Create a new, empty, win32 project using Visual Studio. Choose "DLL" as the type of
product to build
- If building an RTAS, add to your project all the juce_RTAS_*.cpp files from the wrapper/RTAS folder.
- If building a VST, add to your project all the juce_VST_*.cpp files from the wrapper/VST folder.
- Create yourself a JucePluginCharacteristics.h file, starting with a copy of the one in the
demo project. Go through each item inside it carefully, and set them to the appropriate value
for your plugin.
- Under "Additional Include Directories", add the folder in which you're going to put
your JucePluginCharacteristics.h file.
- If you're doing an RTAS, change these project settings (these can all be ignored if you're only doing a VST):
- Set "C++/Code Generation/Runtime Library" to be "Multi-threaded DLL" or "Multi-threaded Debug DLL"
- Set the "Linker/Input/Module Definition file" to point to "wrapper/RTAS/juce_RTAS_WinExports.def"
- Under "Linker/Input/Delay loaded DLLs", add the following:
"DAE.dll; DigiExt.dll; DSI.dll; PluginLib.dll; DSPManager.dll"
- You may (or may not) need to add "libcmtd.lib; libcmt.lib" to the "Linker/Input/Ignore Specific Library" setting.
- For ONLY the following files:
juce_RTAS_Wrapper.cpp, juce_RTAS_DigiCode1.cpp, juce_RTAS_DigiCode2.cpp, juce_RTAS_DigiCode3.cpp,
change their "C++/Advanced/Calling Convention" property to "__stdcall". All other files should
be left with the default calling convention of "__cdecl"
- Set the "Linker/General/Output File" property to "$(OutDir)\$(ProjectName).dpm" (If you're building
a polymorphic VST/RTAS, then you can simply copy or rename the finished .dpm file to a .dll, and
it'll function as a VST)
- Under "Custom build step", add the following command:
copy /Y "\yourdirectory\juce\extras\audio plugins\wrapper\RTAS\juce_RTAS_WinResources.rsr" "$(TargetPath)".rsr
The corresponding "Outputs" setting for this must be set to "$(TargetPath)".rsr
(This will copy and rename the juce_RTAS_WinResources.rsr file to sit next to the finished .dpm file. It's
a dummy resource file, but PT will refuse to load the plugin unless it has a corresponding .rsr file)
- Because the RTAS code duplicates some win32 constants, you might need to force it to link correctly
by adding "/FORCE:multiple" to the linker's additional command line options.
- You might want to change the output directory to "\Program Files\Common Files\Digidesign\DAE\Plug-Ins\"
if you want the built plugin to go directly into the PT plugins folder
- When setting properties, remember to change them for both your debug and release builds!
- Create your actual plugin classes and add them to the project. Obviously this is the hard bit!
- Add the amalgamated juce source file to the project - have a look at the demo app for neat ways of doing this.
- NOTE: on Windows, because RTAS uses the altura mac-style code, there are annoying clashes caused if
you also include the Apple QuickTime headers, so you might need to turn off quicktime by setting the
juce config macro: #define JUCE_QUICKTIME 0
- NOTE: If you're using MSVC2005 to build your plugin, the users will need to
have the Microsoft VC8 Runtime installed on their machines, otherwise the DLL will
silently fail to load. You should probably add the runtime to your plugin's installer,
and you can get a copy of it here:
http://www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=en
-----------------------------------------------------------------------------------------------------
Creating a Mac AU/VST/RTAS plugin in XCode
==========================================
- For an AU, make sure that the JucePlugin_Build_AU is enabled in your JucePluginCharacteristics.h
- In XCode, create a new project based on the "Audio Unit Effect" template
- XCode will create a bunch of template source files for you - you can remove all of these from the project
and delete them
- In the target settings, clear the "Exported Symbols File" setting. The exports are specified by directives
within the wrapper code, so don't need to be listed explicitly.
- All all the Apple frameworks that Juce normally requires to the "External Frameworks" list
- Add all the juce_AU_* files from the /wrapper/AU directory to your project
- The template project creates an AUPublic group that contains lots of AudioUnit source files. But
it leaves out files that it thinks you might not need, e.g. if you chose an "Audio Unit Effect" project,
then it won't add the classes for handling MIDI. So you'll probably need to go into this folder
and check that it contains AUMIDIBase.cpp, AUMidiEffectBase.cpp, MusicDeviceBase.cpp, etc
- As for the PC, you'll need to make sure your project contains a correctly set-up JucePluginCharacteristics.h
file - start with a copy of the one in the demo plugin project, and go through it making sure that
all the values make sense for your plugin.
- Create your actual plugin classes and add them to the project. Obviously this is the hard bit!
You should now be able to build a functional AU! If you want VST support as well, then read on...
- Make sure that the JucePlugin_Build_VST is enabled in your JucePluginCharacteristics.h
- For VST support, add all the juce_VST_* files from /wrapper/VST
- In your target info settings, add the vstsdk2_4 folder to your "Header Search Paths" list
- Make sure that in your Info.plist, the "Bundle Name" value is correctly set to the name of your plugin.
Now, if you compile, the resulting bundle should work as both a VST and AU - you can simply copy or rename it,
changing the suffix to ".vst", and put it in your VST folder.
If you also want to build an RTAS, then carry on reading...
- Make sure that the JucePlugin_Build_RTAS is enabled in your JucePluginCharacteristics.h
- After installing the Digidesign SDK, make sure you've run the config_SDK_for_Mac command in
its root directory. This sets up some of the tools that it needs.
- Add the files from /wrapper/RTAS to your project. Obviously a couple of these are for Windows, so
you shouldn't add those
- In the Digi SDK, in /AlturaPorts/TDMPlugins/common/mac, there are two config files:
CommonDebugSettings.xconfig and CommonReleaseSettings.xconfig
These contain lots of Digi hackery to get their stuff to compile, so you should add them to your project
and change your project's settings to use these files as their base config. Even so, it's all a bit of a mess,
and you may need to tweak them a bit to get it to work on your system.
- In your target settings, add a custom build setting called "MacBag", and set this to the path where the
"MacBag" folder of the Digi SDK lives.
- Add the following to your "Header Search Paths" setting (it's easiest to copy-and-paste this setting from
the demo project):
"$(MacBag)/../AlturaPorts/TDMPlugIns/PlugInLibrary/**"
"$(MacBag)/../AlturaPorts/TDMPlugIns/DSPManager/**"
"$(MacBag)/../AlturaPorts/TDMPlugIns/SupplementalPlugInLib/Encryption"
"$(MacBag)/../AlturaPorts/TDMPlugIns/SupplementalPlugInLib/GraphicsExtensions"
"$(MacBag)/../AlturaPorts/TDMPlugIns/common"
"$(MacBag)/../AlturaPorts/TDMPlugIns/common/PI_LibInterface"
"$(MacBag)/../AlturaPorts/TDMPlugIns/PACEProtection/**"
"$(MacBag)/../AlturaPorts/OMS/Headers"
"$(MacBag)/../AlturaPorts/Fic/Interfaces/**"
"$(MacBag)/../AlturaPorts/Fic/Source/SignalNets"
"$(MacBag)/../AlturaPorts/DSIPublicInterface/PublicHeaders"
"$(MacBag)/../DAEWin/Include"
"$(MacBag)/../AlturaPorts/DigiPublic/Interfaces"
"$(MacBag)/../AlturaPorts/DigiPublic"
"$(MacBag)/../AlturaPorts/NewFileLibs/DOA"
"$(MacBag)/../AlturaPorts/NewFileLibs/Cmn"
"$(MacBag)/../AlturaPorts/TDMPlugIns/SignalProcessing/**"
"$(MacBag)/../AvidCode/AVX2sdk/AVX/avx2/avx2sdk/inc"
"$(MacBag)/../AvidCode/AVX2sdk/AVX/avx2/avx2sdk/utils"
- If you get include errors compiling some of the DigiDesign code, you may need to
add "/Developer/Headers/FlatCarbon" to your header search path.
- In the SDK, find the PluginLibrary.xcodeproj file, and add this to your "External frameworks and Libraries".
If you've already compiled this library, you can open its item in your XCode project treeview, to find
the "libPluginLibrary.a" item inside it. Drag this subitem down to your Target/"Link Binary With Libraries"
build stage and drop it there to add it to the link process.
- In your Info.plist, change the "Bundle OS Type Code" to "TDMw", and the "Bundle Creator OS Type Code" to
"PTul".
You should now be able to build an RTAS! Again, just renaming the finished bundle to ".dpm" and
putting it in your RTAS folder should be do the trick.
If you get any weird build problems, a good tip is to try comparing the demo plugin's build settings with your
own - this should usually show up what's missing.
Note about exported symbols:
When XCode builds the plugin, I've had unpredictable results when trying to stop it from exporting
all of the internal functions as public symbols. There are some flags that are supposed to turn this
off, but sometimes they don't seem to have any effect, and using an explicit exports file also
seems a bit hit-and-miss. (If anyone knows better and can get this working, please let me know!)
Anyway, as well as being wasteful and showing everyone what's inside your plugin, leaving all
the symbols in there will cause fatal crashes when used with Tracktion, or alongside any other
Juce-based plugins. A way of making sure your plugin is stripped is to use the command
"strip -x -S YourPlugin.vst/Contents/MacOS/YourPlugin" after bulding it, which removes the
unnecessary symbols (although in my experience this also doesn't seem to work all the time,
so it's a good idea to check it using the unix "nm" command).

+ 55
- 0
extras/audio plugins/demo/build/linux/premake.lua View File

@@ -0,0 +1,55 @@
project.name = "JucePluginDemo"
project.bindir = "build"
project.libdir = "build"
project.configs = { "Debug", "Release" }
package = newpackage()
package.name = "JucePluginDemo"
package.kind = "dll"
package.language = "c++"
package.objdir = "build/intermediate"
package.config["Debug"].objdir = "build/intermediate/Debug"
package.config["Release"].objdir = "build/intermediate/Release"
package.config["Debug"].defines = { "LINUX=1", "DEBUG=1", "_DEBUG=1" }
package.config["Debug"].buildoptions = { "-O0 -ggdb -g3 -Wall" }
package.config["Release"].defines = { "LINUX=1", "NDEBUG=1" }
package.config["Release"].buildoptions = { "-O2 -s" }
package.includepaths = {
"/usr/include",
"../../../../../",
"/usr/include/vst/source/common",
"/usr/include/vst",
"../../src"
}
package.libpaths = {
"../../../../../bin",
"/usr/X11R6/lib/",
"/usr/lib"
}
package.config["Debug"].links = {
"freetype", "pthread", "rt", "X11", "GL", "GLU", "Xinerama", "asound", "juce_debug"
}
package.config["Release"].links = {
"freetype", "pthread", "rt", "X11", "GL", "GLU", "Xinerama", "asound", "juce"
}
package.files = {
matchfiles (
"../../../wrapper/*.h",
"../../../wrapper/*.cpp",
"../../../wrapper/VST/*.cpp"
),
matchrecursive (
"../../src/*.h",
"../../src/*.cpp"
)
}

BIN
extras/audio plugins/demo/build/mac/English.lproj/InfoPlist.strings View File


+ 28
- 0
extras/audio plugins/demo/build/mac/Info.plist View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.rawmaterialsoftware.${PRODUCT_NAME:identifier}</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.1</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
</plist>

+ 713
- 0
extras/audio plugins/demo/build/mac/JuceDemoPlugin.xcodeproj/project.pbxproj View File

@@ -0,0 +1,713 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 45;
objects = {

/* Begin PBXBuildFile section */
3EEA126E089847F5002C6BFC /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */; };
3EEA126F089847F5002C6BFC /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEA126C089847F5002C6BFC /* CAVectorUnit.h */; };
3EEA1270089847F5002C6BFC /* CAVectorUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */; };
843792AA0EFBF14B002A2725 /* DemoEditorComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 843792A20EFBF14B002A2725 /* DemoEditorComponent.cpp */; };
843792AB0EFBF14B002A2725 /* DemoEditorComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 843792A30EFBF14B002A2725 /* DemoEditorComponent.h */; };
843792AC0EFBF14B002A2725 /* DemoJuceFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 843792A40EFBF14B002A2725 /* DemoJuceFilter.cpp */; };
843792AD0EFBF14B002A2725 /* DemoJuceFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843792A50EFBF14B002A2725 /* DemoJuceFilter.h */; };
843792AE0EFBF14B002A2725 /* includes.h in Headers */ = {isa = PBXBuildFile; fileRef = 843792A60EFBF14B002A2725 /* includes.h */; };
843792AF0EFBF14B002A2725 /* juce_AppConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 843792A70EFBF14B002A2725 /* juce_AppConfig.h */; };
843792B00EFBF14B002A2725 /* juce_LibrarySource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 843792A80EFBF14B002A2725 /* juce_LibrarySource.mm */; };
843792B10EFBF14B002A2725 /* JucePluginCharacteristics.h in Headers */ = {isa = PBXBuildFile; fileRef = 843792A90EFBF14B002A2725 /* JucePluginCharacteristics.h */; };
843792B50EFBF175002A2725 /* juce_AU_Resources.r in Rez */ = {isa = PBXBuildFile; fileRef = 843792B30EFBF175002A2725 /* juce_AU_Resources.r */; };
843792B60EFBF175002A2725 /* juce_AU_Wrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 843792B40EFBF175002A2725 /* juce_AU_Wrapper.mm */; };
8437956E0EFBF323002A2725 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 843795630EFBF323002A2725 /* AudioToolbox.framework */; };
8437956F0EFBF323002A2725 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 843795640EFBF323002A2725 /* AudioUnit.framework */; };
843795700EFBF323002A2725 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 843795650EFBF323002A2725 /* Cocoa.framework */; };
843795710EFBF323002A2725 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 843795660EFBF323002A2725 /* OpenGL.framework */; };
843795720EFBF323002A2725 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 843795670EFBF323002A2725 /* IOKit.framework */; };
843795730EFBF323002A2725 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 843795680EFBF323002A2725 /* Carbon.framework */; };
843795740EFBF323002A2725 /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 843795690EFBF323002A2725 /* CoreMIDI.framework */; };
843795750EFBF323002A2725 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8437956A0EFBF323002A2725 /* CoreAudio.framework */; };
843795760EFBF323002A2725 /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8437956B0EFBF323002A2725 /* DiscRecording.framework */; };
843795770EFBF323002A2725 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8437956C0EFBF323002A2725 /* QTKit.framework */; };
843795780EFBF323002A2725 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8437956D0EFBF323002A2725 /* WebKit.framework */; };
843796690EFBF357002A2725 /* AUMIDIBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8437965F0EFBF357002A2725 /* AUMIDIBase.cpp */; };
8437966A0EFBF357002A2725 /* AUMIDIBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 843796600EFBF357002A2725 /* AUMIDIBase.h */; };
8437966B0EFBF357002A2725 /* AUMIDIEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 843796610EFBF357002A2725 /* AUMIDIEffectBase.cpp */; };
8437966C0EFBF357002A2725 /* AUMIDIEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 843796620EFBF357002A2725 /* AUMIDIEffectBase.h */; };
8437966D0EFBF357002A2725 /* AUOutputBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 843796630EFBF357002A2725 /* AUOutputBase.cpp */; };
8437966E0EFBF357002A2725 /* AUOutputBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 843796640EFBF357002A2725 /* AUOutputBase.h */; };
843796710EFBF357002A2725 /* MusicDeviceBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 843796670EFBF357002A2725 /* MusicDeviceBase.cpp */; };
843796720EFBF357002A2725 /* MusicDeviceBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 843796680EFBF357002A2725 /* MusicDeviceBase.h */; };
843796750EFBF416002A2725 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 843796740EFBF416002A2725 /* CoreFoundation.framework */; };
8437967F0EFBF5E4002A2725 /* juce_VST_Wrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8437967D0EFBF5E4002A2725 /* juce_VST_Wrapper.cpp */; };
843796800EFBF5E4002A2725 /* juce_VST_Wrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8437967E0EFBF5E4002A2725 /* juce_VST_Wrapper.mm */; };
843796DC0EFBFD16002A2725 /* juce_RTAS_DigiCode1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 843796D50EFBFD16002A2725 /* juce_RTAS_DigiCode1.cpp */; };
843796DD0EFBFD16002A2725 /* juce_RTAS_DigiCode2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 843796D60EFBFD16002A2725 /* juce_RTAS_DigiCode2.cpp */; };
843796DE0EFBFD16002A2725 /* juce_RTAS_DigiCode3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 843796D70EFBFD16002A2725 /* juce_RTAS_DigiCode3.cpp */; };
843796DF0EFBFD16002A2725 /* juce_RTAS_DigiCode_Header.h in Headers */ = {isa = PBXBuildFile; fileRef = 843796D80EFBFD16002A2725 /* juce_RTAS_DigiCode_Header.h */; };
843796E00EFBFD16002A2725 /* juce_RTAS_MacResources.r in Rez */ = {isa = PBXBuildFile; fileRef = 843796D90EFBFD16002A2725 /* juce_RTAS_MacResources.r */; };
843796E10EFBFD16002A2725 /* juce_RTAS_MacUtilities.mm in Sources */ = {isa = PBXBuildFile; fileRef = 843796DA0EFBFD16002A2725 /* juce_RTAS_MacUtilities.mm */; };
843796E20EFBFD16002A2725 /* juce_RTAS_Wrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 843796DB0EFBFD16002A2725 /* juce_RTAS_Wrapper.cpp */; };
843796F60EFC0102002A2725 /* CommonDebugSettings.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 843796F40EFC0102002A2725 /* CommonDebugSettings.xcconfig */; };
843796F70EFC0102002A2725 /* CommonReleaseSettings.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 843796F50EFC0102002A2725 /* CommonReleaseSettings.xcconfig */; };
843797050EFC0269002A2725 /* libPluginLibrary.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 843797030EFC022E002A2725 /* libPluginLibrary.a */; };
8BA05AAE072073D300365D66 /* AUBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A7F072073D200365D66 /* AUBase.cpp */; };
8BA05AAF072073D300365D66 /* AUBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A80072073D200365D66 /* AUBase.h */; };
8BA05AB0072073D300365D66 /* AUDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A81072073D200365D66 /* AUDispatch.cpp */; };
8BA05AB1072073D300365D66 /* AUDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A82072073D200365D66 /* AUDispatch.h */; };
8BA05AB2072073D300365D66 /* AUInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A83072073D200365D66 /* AUInputElement.cpp */; };
8BA05AB3072073D300365D66 /* AUInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A84072073D200365D66 /* AUInputElement.h */; };
8BA05AB4072073D300365D66 /* AUOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A85072073D200365D66 /* AUOutputElement.cpp */; };
8BA05AB5072073D300365D66 /* AUOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A86072073D200365D66 /* AUOutputElement.h */; };
8BA05AB7072073D300365D66 /* AUScopeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A88072073D200365D66 /* AUScopeElement.cpp */; };
8BA05AB8072073D300365D66 /* AUScopeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A89072073D200365D66 /* AUScopeElement.h */; };
8BA05AB9072073D300365D66 /* ComponentBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A8A072073D200365D66 /* ComponentBase.cpp */; };
8BA05ABA072073D300365D66 /* ComponentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A8B072073D200365D66 /* ComponentBase.h */; };
8BA05AC6072073D300365D66 /* AUEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */; };
8BA05AC7072073D300365D66 /* AUEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A9B072073D200365D66 /* AUEffectBase.h */; };
8BA05AD2072073D300365D66 /* AUBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AA7072073D200365D66 /* AUBuffer.cpp */; };
8BA05AD3072073D300365D66 /* AUBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AA8072073D200365D66 /* AUBuffer.h */; };
8BA05AD4072073D300365D66 /* AUDebugDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */; };
8BA05AD5072073D300365D66 /* AUDebugDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */; };
8BA05AD6072073D300365D66 /* AUInputFormatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */; };
8BA05AD7072073D300365D66 /* AUSilentTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */; };
8BA05AD8072073D300365D66 /* AUTimestampGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */; };
8BA05AE50720742100365D66 /* CAAudioChannelLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */; };
8BA05AE60720742100365D66 /* CAAudioChannelLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */; };
8BA05AE70720742100365D66 /* CAMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AE10720742100365D66 /* CAMutex.cpp */; };
8BA05AE80720742100365D66 /* CAMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE20720742100365D66 /* CAMutex.h */; };
8BA05AE90720742100365D66 /* CAStreamBasicDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */; };
8BA05AEA0720742100365D66 /* CAStreamBasicDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */; };
8BA05B070720754400365D66 /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05B050720754400365D66 /* CAAUParameter.cpp */; };
8BA05B080720754400365D66 /* CAAUParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05B060720754400365D66 /* CAAUParameter.h */; };
8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
843797020EFC022E002A2725 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 843796FE0EFC022E002A2725 /* PluginLibrary.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = B65B09B30860FB0800FE2E6A;
remoteInfo = "Plugin Library";
};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAVectorUnit.cpp; sourceTree = "<group>"; };
3EEA126C089847F5002C6BFC /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAVectorUnit.h; sourceTree = "<group>"; };
3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAVectorUnitTypes.h; sourceTree = "<group>"; };
843792A20EFBF14B002A2725 /* DemoEditorComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DemoEditorComponent.cpp; path = ../../src/DemoEditorComponent.cpp; sourceTree = SOURCE_ROOT; };
843792A30EFBF14B002A2725 /* DemoEditorComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DemoEditorComponent.h; path = ../../src/DemoEditorComponent.h; sourceTree = SOURCE_ROOT; };
843792A40EFBF14B002A2725 /* DemoJuceFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DemoJuceFilter.cpp; path = ../../src/DemoJuceFilter.cpp; sourceTree = SOURCE_ROOT; };
843792A50EFBF14B002A2725 /* DemoJuceFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DemoJuceFilter.h; path = ../../src/DemoJuceFilter.h; sourceTree = SOURCE_ROOT; };
843792A60EFBF14B002A2725 /* includes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = includes.h; path = ../../src/includes.h; sourceTree = SOURCE_ROOT; };
843792A70EFBF14B002A2725 /* juce_AppConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = juce_AppConfig.h; path = ../../src/juce_AppConfig.h; sourceTree = SOURCE_ROOT; };
843792A80EFBF14B002A2725 /* juce_LibrarySource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_LibrarySource.mm; path = ../../src/juce_LibrarySource.mm; sourceTree = SOURCE_ROOT; };
843792A90EFBF14B002A2725 /* JucePluginCharacteristics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JucePluginCharacteristics.h; path = ../../src/JucePluginCharacteristics.h; sourceTree = SOURCE_ROOT; };
843792B30EFBF175002A2725 /* juce_AU_Resources.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; name = juce_AU_Resources.r; path = ../../../wrapper/AU/juce_AU_Resources.r; sourceTree = SOURCE_ROOT; };
843792B40EFBF175002A2725 /* juce_AU_Wrapper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_AU_Wrapper.mm; path = ../../../wrapper/AU/juce_AU_Wrapper.mm; sourceTree = SOURCE_ROOT; };
843795630EFBF323002A2725 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = "<absolute>"; };
843795640EFBF323002A2725 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = "<absolute>"; };
843795650EFBF323002A2725 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
843795660EFBF323002A2725 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
843795670EFBF323002A2725 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
843795680EFBF323002A2725 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
843795690EFBF323002A2725 /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = /System/Library/Frameworks/CoreMIDI.framework; sourceTree = "<absolute>"; };
8437956A0EFBF323002A2725 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
8437956B0EFBF323002A2725 /* DiscRecording.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiscRecording.framework; path = /System/Library/Frameworks/DiscRecording.framework; sourceTree = "<absolute>"; };
8437956C0EFBF323002A2725 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = /System/Library/Frameworks/QTKit.framework; sourceTree = "<absolute>"; };
8437956D0EFBF323002A2725 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = /System/Library/Frameworks/WebKit.framework; sourceTree = "<absolute>"; };
8437965F0EFBF357002A2725 /* AUMIDIBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AUMIDIBase.cpp; path = Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/AUMIDIBase.cpp; sourceTree = DEVELOPER_DIR; };
843796600EFBF357002A2725 /* AUMIDIBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AUMIDIBase.h; path = Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/AUMIDIBase.h; sourceTree = DEVELOPER_DIR; };
843796610EFBF357002A2725 /* AUMIDIEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AUMIDIEffectBase.cpp; path = Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/AUMIDIEffectBase.cpp; sourceTree = DEVELOPER_DIR; };
843796620EFBF357002A2725 /* AUMIDIEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AUMIDIEffectBase.h; path = Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/AUMIDIEffectBase.h; sourceTree = DEVELOPER_DIR; };
843796630EFBF357002A2725 /* AUOutputBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AUOutputBase.cpp; path = Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/AUOutputBase.cpp; sourceTree = DEVELOPER_DIR; };
843796640EFBF357002A2725 /* AUOutputBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AUOutputBase.h; path = Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/AUOutputBase.h; sourceTree = DEVELOPER_DIR; };
843796670EFBF357002A2725 /* MusicDeviceBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MusicDeviceBase.cpp; path = Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/MusicDeviceBase.cpp; sourceTree = DEVELOPER_DIR; };
843796680EFBF357002A2725 /* MusicDeviceBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MusicDeviceBase.h; path = Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/MusicDeviceBase.h; sourceTree = DEVELOPER_DIR; };
843796740EFBF416002A2725 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
8437967D0EFBF5E4002A2725 /* juce_VST_Wrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = juce_VST_Wrapper.cpp; path = ../../../wrapper/VST/juce_VST_Wrapper.cpp; sourceTree = SOURCE_ROOT; };
8437967E0EFBF5E4002A2725 /* juce_VST_Wrapper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_VST_Wrapper.mm; path = ../../../wrapper/VST/juce_VST_Wrapper.mm; sourceTree = SOURCE_ROOT; };
843796D50EFBFD16002A2725 /* juce_RTAS_DigiCode1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RTAS_DigiCode1.cpp; path = ../../../wrapper/RTAS/juce_RTAS_DigiCode1.cpp; sourceTree = SOURCE_ROOT; };
843796D60EFBFD16002A2725 /* juce_RTAS_DigiCode2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RTAS_DigiCode2.cpp; path = ../../../wrapper/RTAS/juce_RTAS_DigiCode2.cpp; sourceTree = SOURCE_ROOT; };
843796D70EFBFD16002A2725 /* juce_RTAS_DigiCode3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RTAS_DigiCode3.cpp; path = ../../../wrapper/RTAS/juce_RTAS_DigiCode3.cpp; sourceTree = SOURCE_ROOT; };
843796D80EFBFD16002A2725 /* juce_RTAS_DigiCode_Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = juce_RTAS_DigiCode_Header.h; path = ../../../wrapper/RTAS/juce_RTAS_DigiCode_Header.h; sourceTree = SOURCE_ROOT; };
843796D90EFBFD16002A2725 /* juce_RTAS_MacResources.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; name = juce_RTAS_MacResources.r; path = ../../../wrapper/RTAS/juce_RTAS_MacResources.r; sourceTree = SOURCE_ROOT; };
843796DA0EFBFD16002A2725 /* juce_RTAS_MacUtilities.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_RTAS_MacUtilities.mm; path = ../../../wrapper/RTAS/juce_RTAS_MacUtilities.mm; sourceTree = SOURCE_ROOT; };
843796DB0EFBFD16002A2725 /* juce_RTAS_Wrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RTAS_Wrapper.cpp; path = ../../../wrapper/RTAS/juce_RTAS_Wrapper.cpp; sourceTree = SOURCE_ROOT; };
843796F40EFC0102002A2725 /* CommonDebugSettings.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CommonDebugSettings.xcconfig; path = /Users/jules/stuff/PT_73_SDK/AlturaPorts/TDMPlugIns/common/Mac/CommonDebugSettings.xcconfig; sourceTree = "<absolute>"; };
843796F50EFC0102002A2725 /* CommonReleaseSettings.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CommonReleaseSettings.xcconfig; path = /Users/jules/stuff/PT_73_SDK/AlturaPorts/TDMPlugIns/common/Mac/CommonReleaseSettings.xcconfig; sourceTree = "<absolute>"; };
843796FE0EFC022E002A2725 /* PluginLibrary.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = PluginLibrary.xcodeproj; path = /Users/jules/stuff/PT_73_SDK/AlturaPorts/TDMPlugIns/PlugInLibrary/MacBuild/PluginLibrary.xcodeproj; sourceTree = "<absolute>"; };
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = "<group>"; };
8BA05A80072073D200365D66 /* AUBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = "<group>"; };
8BA05A81072073D200365D66 /* AUDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = "<group>"; };
8BA05A82072073D200365D66 /* AUDispatch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = "<group>"; };
8BA05A83072073D200365D66 /* AUInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = "<group>"; };
8BA05A84072073D200365D66 /* AUInputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = "<group>"; };
8BA05A85072073D200365D66 /* AUOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = "<group>"; };
8BA05A86072073D200365D66 /* AUOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = "<group>"; };
8BA05A87072073D200365D66 /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = "<group>"; };
8BA05A88072073D200365D66 /* AUScopeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = "<group>"; };
8BA05A89072073D200365D66 /* AUScopeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = "<group>"; };
8BA05A8A072073D200365D66 /* ComponentBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = "<group>"; };
8BA05A8B072073D200365D66 /* ComponentBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = "<group>"; };
8BA05A9A072073D200365D66 /* AUEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = "<group>"; };
8BA05A9B072073D200365D66 /* AUEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = "<group>"; };
8BA05AA7072073D200365D66 /* AUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = "<group>"; };
8BA05AA8072073D200365D66 /* AUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = "<group>"; };
8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUDebugDispatcher.cpp; sourceTree = "<group>"; };
8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUDebugDispatcher.h; sourceTree = "<group>"; };
8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUInputFormatConverter.h; sourceTree = "<group>"; };
8BA05AAC072073D200365D66 /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUSilentTimeout.h; sourceTree = "<group>"; };
8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUTimestampGenerator.h; sourceTree = "<group>"; };
8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayout.cpp; sourceTree = "<group>"; };
8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAAudioChannelLayout.h; sourceTree = "<group>"; };
8BA05AE10720742100365D66 /* CAMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAMutex.cpp; sourceTree = "<group>"; };
8BA05AE20720742100365D66 /* CAMutex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAMutex.h; sourceTree = "<group>"; };
8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamBasicDescription.cpp; sourceTree = "<group>"; };
8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAStreamBasicDescription.h; sourceTree = "<group>"; };
8BA05B050720754400365D66 /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUParameter.cpp; sourceTree = "<group>"; };
8BA05B060720754400365D66 /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAAUParameter.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* JuceDemoPlugin.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = JuceDemoPlugin.component; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
8D01CCCD0486CAD60068D4B7 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
843797050EFC0269002A2725 /* libPluginLibrary.a in Frameworks */,
8437956E0EFBF323002A2725 /* AudioToolbox.framework in Frameworks */,
8437956F0EFBF323002A2725 /* AudioUnit.framework in Frameworks */,
843795700EFBF323002A2725 /* Cocoa.framework in Frameworks */,
843795710EFBF323002A2725 /* OpenGL.framework in Frameworks */,
843795720EFBF323002A2725 /* IOKit.framework in Frameworks */,
843795730EFBF323002A2725 /* Carbon.framework in Frameworks */,
843795740EFBF323002A2725 /* CoreMIDI.framework in Frameworks */,
843795750EFBF323002A2725 /* CoreAudio.framework in Frameworks */,
843795760EFBF323002A2725 /* DiscRecording.framework in Frameworks */,
843795770EFBF323002A2725 /* QTKit.framework in Frameworks */,
843795780EFBF323002A2725 /* WebKit.framework in Frameworks */,
843796750EFBF416002A2725 /* CoreFoundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
089C166AFE841209C02AAC07 /* JuceDemoPlugin */ = {
isa = PBXGroup;
children = (
843796F40EFC0102002A2725 /* CommonDebugSettings.xcconfig */,
843796F50EFC0102002A2725 /* CommonReleaseSettings.xcconfig */,
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = JuceDemoPlugin;
sourceTree = "<group>";
};
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
isa = PBXGroup;
children = (
843796FE0EFC022E002A2725 /* PluginLibrary.xcodeproj */,
843796740EFBF416002A2725 /* CoreFoundation.framework */,
843795630EFBF323002A2725 /* AudioToolbox.framework */,
843795640EFBF323002A2725 /* AudioUnit.framework */,
843795650EFBF323002A2725 /* Cocoa.framework */,
843795660EFBF323002A2725 /* OpenGL.framework */,
843795670EFBF323002A2725 /* IOKit.framework */,
843795680EFBF323002A2725 /* Carbon.framework */,
843795690EFBF323002A2725 /* CoreMIDI.framework */,
8437956A0EFBF323002A2725 /* CoreAudio.framework */,
8437956B0EFBF323002A2725 /* DiscRecording.framework */,
8437956C0EFBF323002A2725 /* QTKit.framework */,
8437956D0EFBF323002A2725 /* WebKit.framework */,
);
name = "External Frameworks and Libraries";
sourceTree = "<group>";
};
089C167CFE841241C02AAC07 /* Resources */ = {
isa = PBXGroup;
children = (
8D01CCD10486CAD60068D4B7 /* Info.plist */,
089C167DFE841241C02AAC07 /* InfoPlist.strings */,
);
name = Resources;
sourceTree = "<group>";
};
08FB77ADFE841716C02AAC07 /* Source */ = {
isa = PBXGroup;
children = (
8437929D0EFBF08E002A2725 /* Filter */,
8437929E0EFBF098002A2725 /* Wrapper Code */,
);
name = Source;
sourceTree = "<group>";
};
19C28FB4FE9D528D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
8D01CCD20486CAD60068D4B7 /* JuceDemoPlugin.component */,
);
name = Products;
sourceTree = "<group>";
};
8437929D0EFBF08E002A2725 /* Filter */ = {
isa = PBXGroup;
children = (
843792A20EFBF14B002A2725 /* DemoEditorComponent.cpp */,
843792A30EFBF14B002A2725 /* DemoEditorComponent.h */,
843792A40EFBF14B002A2725 /* DemoJuceFilter.cpp */,
843792A50EFBF14B002A2725 /* DemoJuceFilter.h */,
843792A60EFBF14B002A2725 /* includes.h */,
843792A70EFBF14B002A2725 /* juce_AppConfig.h */,
843792A80EFBF14B002A2725 /* juce_LibrarySource.mm */,
843792A90EFBF14B002A2725 /* JucePluginCharacteristics.h */,
);
name = Filter;
sourceTree = "<group>";
};
8437929E0EFBF098002A2725 /* Wrapper Code */ = {
isa = PBXGroup;
children = (
843796D40EFBFCE3002A2725 /* Juce RTAS Wrapper */,
8437967C0EFBF5C6002A2725 /* Juce VST Wrapper */,
843792B20EFBF157002A2725 /* Juce AU Wrapper */,
8BA05AEB0720742700365D66 /* PublicUtility */,
8BA05A7D072073D200365D66 /* AUPublic */,
);
name = "Wrapper Code";
sourceTree = "<group>";
};
843792B20EFBF157002A2725 /* Juce AU Wrapper */ = {
isa = PBXGroup;
children = (
843792B30EFBF175002A2725 /* juce_AU_Resources.r */,
843792B40EFBF175002A2725 /* juce_AU_Wrapper.mm */,
);
name = "Juce AU Wrapper";
sourceTree = "<group>";
};
8437967C0EFBF5C6002A2725 /* Juce VST Wrapper */ = {
isa = PBXGroup;
children = (
8437967D0EFBF5E4002A2725 /* juce_VST_Wrapper.cpp */,
8437967E0EFBF5E4002A2725 /* juce_VST_Wrapper.mm */,
);
name = "Juce VST Wrapper";
sourceTree = "<group>";
};
843796D40EFBFCE3002A2725 /* Juce RTAS Wrapper */ = {
isa = PBXGroup;
children = (
843796D50EFBFD16002A2725 /* juce_RTAS_DigiCode1.cpp */,
843796D60EFBFD16002A2725 /* juce_RTAS_DigiCode2.cpp */,
843796D70EFBFD16002A2725 /* juce_RTAS_DigiCode3.cpp */,
843796D80EFBFD16002A2725 /* juce_RTAS_DigiCode_Header.h */,
843796D90EFBFD16002A2725 /* juce_RTAS_MacResources.r */,
843796DA0EFBFD16002A2725 /* juce_RTAS_MacUtilities.mm */,
843796DB0EFBFD16002A2725 /* juce_RTAS_Wrapper.cpp */,
);
name = "Juce RTAS Wrapper";
sourceTree = "<group>";
};
843796FF0EFC022E002A2725 /* Products */ = {
isa = PBXGroup;
children = (
843797030EFC022E002A2725 /* libPluginLibrary.a */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A7D072073D200365D66 /* AUPublic */ = {
isa = PBXGroup;
children = (
8BA05A7E072073D200365D66 /* AUBase */,
8BA05A99072073D200365D66 /* OtherBases */,
8BA05AA6072073D200365D66 /* Utility */,
);
name = AUPublic;
path = Examples/CoreAudio/AudioUnits/AUPublic;
sourceTree = DEVELOPER_DIR;
};
8BA05A7E072073D200365D66 /* AUBase */ = {
isa = PBXGroup;
children = (
8BA05A7F072073D200365D66 /* AUBase.cpp */,
8BA05A80072073D200365D66 /* AUBase.h */,
8BA05A81072073D200365D66 /* AUDispatch.cpp */,
8BA05A82072073D200365D66 /* AUDispatch.h */,
8BA05A83072073D200365D66 /* AUInputElement.cpp */,
8BA05A84072073D200365D66 /* AUInputElement.h */,
8BA05A85072073D200365D66 /* AUOutputElement.cpp */,
8BA05A86072073D200365D66 /* AUOutputElement.h */,
8BA05A87072073D200365D66 /* AUResources.r */,
8BA05A88072073D200365D66 /* AUScopeElement.cpp */,
8BA05A89072073D200365D66 /* AUScopeElement.h */,
8BA05A8A072073D200365D66 /* ComponentBase.cpp */,
8BA05A8B072073D200365D66 /* ComponentBase.h */,
);
path = AUBase;
sourceTree = "<group>";
};
8BA05A99072073D200365D66 /* OtherBases */ = {
isa = PBXGroup;
children = (
8437965F0EFBF357002A2725 /* AUMIDIBase.cpp */,
843796600EFBF357002A2725 /* AUMIDIBase.h */,
843796610EFBF357002A2725 /* AUMIDIEffectBase.cpp */,
843796620EFBF357002A2725 /* AUMIDIEffectBase.h */,
843796630EFBF357002A2725 /* AUOutputBase.cpp */,
843796640EFBF357002A2725 /* AUOutputBase.h */,
843796670EFBF357002A2725 /* MusicDeviceBase.cpp */,
843796680EFBF357002A2725 /* MusicDeviceBase.h */,
8BA05A9A072073D200365D66 /* AUEffectBase.cpp */,
8BA05A9B072073D200365D66 /* AUEffectBase.h */,
);
path = OtherBases;
sourceTree = "<group>";
};
8BA05AA6072073D200365D66 /* Utility */ = {
isa = PBXGroup;
children = (
8BA05AA7072073D200365D66 /* AUBuffer.cpp */,
8BA05AA8072073D200365D66 /* AUBuffer.h */,
8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */,
8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */,
8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */,
8BA05AAC072073D200365D66 /* AUSilentTimeout.h */,
8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */,
);
path = Utility;
sourceTree = "<group>";
};
8BA05AEB0720742700365D66 /* PublicUtility */ = {
isa = PBXGroup;
children = (
8BA05B050720754400365D66 /* CAAUParameter.cpp */,
8BA05B060720754400365D66 /* CAAUParameter.h */,
8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */,
8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */,
8BA05AE10720742100365D66 /* CAMutex.cpp */,
8BA05AE20720742100365D66 /* CAMutex.h */,
8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */,
8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */,
3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */,
3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */,
3EEA126C089847F5002C6BFC /* CAVectorUnit.h */,
);
name = PublicUtility;
path = Examples/CoreAudio/PublicUtility;
sourceTree = DEVELOPER_DIR;
};
/* End PBXGroup section */

/* Begin PBXHeadersBuildPhase section */
8D01CCC70486CAD60068D4B7 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
8BA05AAF072073D300365D66 /* AUBase.h in Headers */,
8BA05AB1072073D300365D66 /* AUDispatch.h in Headers */,
8BA05AB3072073D300365D66 /* AUInputElement.h in Headers */,
8BA05AB5072073D300365D66 /* AUOutputElement.h in Headers */,
8BA05AB8072073D300365D66 /* AUScopeElement.h in Headers */,
8BA05ABA072073D300365D66 /* ComponentBase.h in Headers */,
8BA05AC7072073D300365D66 /* AUEffectBase.h in Headers */,
8BA05AD3072073D300365D66 /* AUBuffer.h in Headers */,
8BA05AD5072073D300365D66 /* AUDebugDispatcher.h in Headers */,
8BA05AD6072073D300365D66 /* AUInputFormatConverter.h in Headers */,
8BA05AD7072073D300365D66 /* AUSilentTimeout.h in Headers */,
8BA05AD8072073D300365D66 /* AUTimestampGenerator.h in Headers */,
8BA05AE60720742100365D66 /* CAAudioChannelLayout.h in Headers */,
8BA05AE80720742100365D66 /* CAMutex.h in Headers */,
8BA05AEA0720742100365D66 /* CAStreamBasicDescription.h in Headers */,
8BA05B080720754400365D66 /* CAAUParameter.h in Headers */,
3EEA126F089847F5002C6BFC /* CAVectorUnit.h in Headers */,
3EEA1270089847F5002C6BFC /* CAVectorUnitTypes.h in Headers */,
843792AB0EFBF14B002A2725 /* DemoEditorComponent.h in Headers */,
843792AD0EFBF14B002A2725 /* DemoJuceFilter.h in Headers */,
843792AE0EFBF14B002A2725 /* includes.h in Headers */,
843792AF0EFBF14B002A2725 /* juce_AppConfig.h in Headers */,
843792B10EFBF14B002A2725 /* JucePluginCharacteristics.h in Headers */,
8437966A0EFBF357002A2725 /* AUMIDIBase.h in Headers */,
8437966C0EFBF357002A2725 /* AUMIDIEffectBase.h in Headers */,
8437966E0EFBF357002A2725 /* AUOutputBase.h in Headers */,
843796720EFBF357002A2725 /* MusicDeviceBase.h in Headers */,
843796DF0EFBFD16002A2725 /* juce_RTAS_DigiCode_Header.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */

/* Begin PBXNativeTarget section */
8D01CCC60486CAD60068D4B7 /* JuceDemoPlugin */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "JuceDemoPlugin" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
8D01CCCF0486CAD60068D4B7 /* Rez */,
);
buildRules = (
);
dependencies = (
);
name = JuceDemoPlugin;
productInstallPath = "$(HOME)/Library/Bundles";
productName = JuceDemoPlugin;
productReference = 8D01CCD20486CAD60068D4B7 /* JuceDemoPlugin.component */;
productType = "com.apple.product-type.bundle";
};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
089C1669FE841209C02AAC07 /* Project object */ = {
isa = PBXProject;
buildConfigurationList = 3E4BA247089833B7007656EC /* Build configuration list for PBXProject "JuceDemoPlugin" */;
compatibilityVersion = "Xcode 3.1";
hasScannedForEncodings = 1;
mainGroup = 089C166AFE841209C02AAC07 /* JuceDemoPlugin */;
projectDirPath = "";
projectReferences = (
{
ProductGroup = 843796FF0EFC022E002A2725 /* Products */;
ProjectRef = 843796FE0EFC022E002A2725 /* PluginLibrary.xcodeproj */;
},
);
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* JuceDemoPlugin */,
);
};
/* End PBXProject section */

/* Begin PBXReferenceProxy section */
843797030EFC022E002A2725 /* libPluginLibrary.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libPluginLibrary.a;
remoteRef = 843797020EFC022E002A2725 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */

/* Begin PBXResourcesBuildPhase section */
8D01CCC90486CAD60068D4B7 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */,
843796F60EFC0102002A2725 /* CommonDebugSettings.xcconfig in Resources */,
843796F70EFC0102002A2725 /* CommonReleaseSettings.xcconfig in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */

/* Begin PBXRezBuildPhase section */
8D01CCCF0486CAD60068D4B7 /* Rez */ = {
isa = PBXRezBuildPhase;
buildActionMask = 2147483647;
files = (
843792B50EFBF175002A2725 /* juce_AU_Resources.r in Rez */,
843796E00EFBFD16002A2725 /* juce_RTAS_MacResources.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXRezBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BA05AAE072073D300365D66 /* AUBase.cpp in Sources */,
8BA05AB0072073D300365D66 /* AUDispatch.cpp in Sources */,
8BA05AB2072073D300365D66 /* AUInputElement.cpp in Sources */,
8BA05AB4072073D300365D66 /* AUOutputElement.cpp in Sources */,
8BA05AB7072073D300365D66 /* AUScopeElement.cpp in Sources */,
8BA05AB9072073D300365D66 /* ComponentBase.cpp in Sources */,
8BA05AC6072073D300365D66 /* AUEffectBase.cpp in Sources */,
8BA05AD2072073D300365D66 /* AUBuffer.cpp in Sources */,
8BA05AD4072073D300365D66 /* AUDebugDispatcher.cpp in Sources */,
8BA05AE50720742100365D66 /* CAAudioChannelLayout.cpp in Sources */,
8BA05AE70720742100365D66 /* CAMutex.cpp in Sources */,
8BA05AE90720742100365D66 /* CAStreamBasicDescription.cpp in Sources */,
8BA05B070720754400365D66 /* CAAUParameter.cpp in Sources */,
3EEA126E089847F5002C6BFC /* CAVectorUnit.cpp in Sources */,
843792AA0EFBF14B002A2725 /* DemoEditorComponent.cpp in Sources */,
843792AC0EFBF14B002A2725 /* DemoJuceFilter.cpp in Sources */,
843792B00EFBF14B002A2725 /* juce_LibrarySource.mm in Sources */,
843792B60EFBF175002A2725 /* juce_AU_Wrapper.mm in Sources */,
843796690EFBF357002A2725 /* AUMIDIBase.cpp in Sources */,
8437966B0EFBF357002A2725 /* AUMIDIEffectBase.cpp in Sources */,
8437966D0EFBF357002A2725 /* AUOutputBase.cpp in Sources */,
843796710EFBF357002A2725 /* MusicDeviceBase.cpp in Sources */,
8437967F0EFBF5E4002A2725 /* juce_VST_Wrapper.cpp in Sources */,
843796800EFBF5E4002A2725 /* juce_VST_Wrapper.mm in Sources */,
843796DC0EFBFD16002A2725 /* juce_RTAS_DigiCode1.cpp in Sources */,
843796DD0EFBFD16002A2725 /* juce_RTAS_DigiCode2.cpp in Sources */,
843796DE0EFBFD16002A2725 /* juce_RTAS_DigiCode3.cpp in Sources */,
843796E10EFBFD16002A2725 /* juce_RTAS_MacUtilities.mm in Sources */,
843796E20EFBFD16002A2725 /* juce_RTAS_Wrapper.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */

/* Begin PBXVariantGroup section */
089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
089C167EFE841241C02AAC07 /* English */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
3E4BA244089833B7007656EC /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GENERATE_PKGINFO_FILE = YES;
HEADER_SEARCH_PATHS = (
/Developer/Headers/FlatCarbon,
"~/stuff/vstsdk2.4",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/PlugInLibrary/**\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/DSPManager/**\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/SupplementalPlugInLib/Encryption\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/SupplementalPlugInLib/GraphicsExtensions\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/common\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/common/PI_LibInterface\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/PACEProtection/**\"",
"\"$(MacBag)/../AlturaPorts/OMS/Headers\"",
"\"$(MacBag)/../AlturaPorts/Fic/Interfaces/**\"",
"\"$(MacBag)/../AlturaPorts/Fic/Source/SignalNets\"",
"\"$(MacBag)/../AlturaPorts/DSIPublicInterface/PublicHeaders\"",
"\"$(MacBag)/../DAEWin/Include\"",
"\"$(MacBag)/../AlturaPorts/DigiPublic/Interfaces\"",
"\"$(MacBag)/../AlturaPorts/DigiPublic\"",
"\"$(MacBag)/../AlturaPorts/NewFileLibs/DOA\"",
"\"$(MacBag)/../AlturaPorts/NewFileLibs/Cmn\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/SignalProcessing/**\"",
"\"$(MacBag)/../AvidCode/AVX2sdk/AVX/avx2/avx2sdk/inc\"",
"\"$(MacBag)/../AvidCode/AVX2sdk/AVX/avx2/avx2sdk/utils\"",
);
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
LIBRARY_STYLE = Bundle;
MacBag = /Users/jules/stuff/PT_73_SDK/MacBag;
OTHER_LDFLAGS = "-bundle";
OTHER_REZFLAGS = "-d ppc_$ppc -d i386_$i386 -d ppc64_$ppc64 -d x86_64_$x86_64 -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I \"$(DEVELOPER_DIR)/Examples/CoreAudio/AudioUnits/AUPublic/AUBase\"";
PRODUCT_NAME = JuceDemoPlugin;
WARNING_CFLAGS = (
"-Wmost",
"-Wno-four-char-constants",
"-Wno-unknown-pragmas",
);
WRAPPER_EXTENSION = component;
};
name = Debug;
};
3E4BA245089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_ENABLE_FIX_AND_CONTINUE = NO;
GENERATE_PKGINFO_FILE = YES;
HEADER_SEARCH_PATHS = (
/Developer/Headers/FlatCarbon,
"~/stuff/vstsdk2.4",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/PlugInLibrary/**\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/DSPManager/**\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/SupplementalPlugInLib/Encryption\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/SupplementalPlugInLib/GraphicsExtensions\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/common\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/common/PI_LibInterface\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/PACEProtection/**\"",
"\"$(MacBag)/../AlturaPorts/OMS/Headers\"",
"\"$(MacBag)/../AlturaPorts/Fic/Interfaces/**\"",
"\"$(MacBag)/../AlturaPorts/Fic/Source/SignalNets\"",
"\"$(MacBag)/../AlturaPorts/DSIPublicInterface/PublicHeaders\"",
"\"$(MacBag)/../DAEWin/Include\"",
"\"$(MacBag)/../AlturaPorts/DigiPublic/Interfaces\"",
"\"$(MacBag)/../AlturaPorts/DigiPublic\"",
"\"$(MacBag)/../AlturaPorts/NewFileLibs/DOA\"",
"\"$(MacBag)/../AlturaPorts/NewFileLibs/Cmn\"",
"\"$(MacBag)/../AlturaPorts/TDMPlugIns/SignalProcessing/**\"",
"\"$(MacBag)/../AvidCode/AVX2sdk/AVX/avx2/avx2sdk/inc\"",
"\"$(MacBag)/../AvidCode/AVX2sdk/AVX/avx2/avx2sdk/utils\"",
);
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
LIBRARY_STYLE = Bundle;
OTHER_LDFLAGS = "-bundle";
OTHER_REZFLAGS = "-d ppc_$ppc -d i386_$i386 -d ppc64_$ppc64 -d x86_64_$x86_64 -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I \"$(DEVELOPER_DIR)/Examples/CoreAudio/AudioUnits/AUPublic/AUBase\"";
PRODUCT_NAME = JuceDemoPlugin;
WARNING_CFLAGS = (
"-Wmost",
"-Wno-four-char-constants",
"-Wno-unknown-pragmas",
);
WRAPPER_EXTENSION = component;
};
name = Release;
};
3E4BA248089833B7007656EC /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 843796F40EFC0102002A2725 /* CommonDebugSettings.xcconfig */;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
GCC_C_LANGUAGE_STANDARD = c99;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx10.5;
};
name = Debug;
};
3E4BA249089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 843796F50EFC0102002A2725 /* CommonReleaseSettings.xcconfig */;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
GCC_C_LANGUAGE_STANDARD = c99;
SDKROOT = macosx10.5;
};
name = Release;
};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "JuceDemoPlugin" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "JuceDemoPlugin" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA248089833B7007656EC /* Debug */,
3E4BA249089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
/* End XCConfigurationList section */
};
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
}

+ 20
- 0
extras/audio plugins/demo/build/win32/JuceDemoPlugin.sln View File

@@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JuceDemoPlugin", "JuceDemoPlugin.vcproj", "{39DADE4E-B715-4809-AD10-2F5A4213D633}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{39DADE4E-B715-4809-AD10-2F5A4213D633}.Debug|Win32.ActiveCfg = Debug|Win32
{39DADE4E-B715-4809-AD10-2F5A4213D633}.Debug|Win32.Build.0 = Debug|Win32
{39DADE4E-B715-4809-AD10-2F5A4213D633}.Release|Win32.ActiveCfg = Release|Win32
{39DADE4E-B715-4809-AD10-2F5A4213D633}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

+ 347
- 0
extras/audio plugins/demo/build/win32/JuceDemoPlugin.vcproj View File

@@ -0,0 +1,347 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="JuceDemoPlugin"
ProjectGUID="{39DADE4E-B715-4809-AD10-2F5A4213D633}"
RootNamespace="JuceDemoPlugin"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
CommandLine="copy /Y &quot;..\..\..\wrapper\RTAS\juce_RTAS_WinResources.rsr&quot; &quot;$(TargetPath)&quot;.rsr&#x0D;&#x0A;"
Outputs="&quot;$(TargetPath)&quot;.rsr"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../src"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;JUCEDEMOPLUGIN_EXPORTS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/FORCE:multiple"
OutputFile="$(OutDir)\$(ProjectName).dpm"
LinkIncremental="2"
ModuleDefinitionFile="../../../wrapper/RTAS/juce_RTAS_WinExports.def"
DelayLoadDLLs="DAE.dll; DigiExt.dll; DSI.dll; PluginLib.dll; DSPManager.dll"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
CommandLine="copy /Y &quot;..\..\..\wrapper\RTAS\juce_RTAS_WinResources.rsr&quot; &quot;$(TargetPath)&quot;.rsr&#x0D;&#x0A;"
Outputs="&quot;$(TargetPath)&quot;.rsr"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../src"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;JUCEDEMOPLUGIN_EXPORTS"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/FORCE:multiple"
OutputFile="$(OutDir)\$(ProjectName).dpm"
LinkIncremental="1"
ModuleDefinitionFile="../../../wrapper/RTAS/juce_RTAS_WinExports.def"
DelayLoadDLLs="DAE.dll; DigiExt.dll; DSI.dll; PluginLib.dll; DSPManager.dll"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<Filter
Name="plugin"
>
<File
RelativePath="..\..\src\DemoEditorComponent.cpp"
>
</File>
<File
RelativePath="..\..\src\DemoEditorComponent.h"
>
</File>
<File
RelativePath="..\..\src\DemoJuceFilter.cpp"
>
</File>
<File
RelativePath="..\..\src\DemoJuceFilter.h"
>
</File>
<File
RelativePath="..\..\src\includes.h"
>
</File>
<File
RelativePath="..\..\src\juce_AppConfig.h"
>
</File>
<File
RelativePath="..\..\src\juce_LibrarySource.cpp"
>
</File>
<File
RelativePath="..\..\src\JucePluginCharacteristics.h"
>
</File>
</Filter>
<Filter
Name="wrapper"
>
<Filter
Name="VST"
>
<File
RelativePath="..\..\..\wrapper\VST\juce_VST_Wrapper.cpp"
>
</File>
</Filter>
<Filter
Name="RTAS"
>
<File
RelativePath="..\..\..\wrapper\RTAS\juce_RTAS_DigiCode1.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
CallingConvention="2"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
CallingConvention="2"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\..\wrapper\RTAS\juce_RTAS_DigiCode2.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
CallingConvention="2"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
CallingConvention="2"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\..\wrapper\RTAS\juce_RTAS_DigiCode3.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
CallingConvention="2"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
CallingConvention="2"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\..\wrapper\RTAS\juce_RTAS_DigiCode_Header.h"
>
</File>
<File
RelativePath="..\..\..\wrapper\RTAS\juce_RTAS_WinUtilities.cpp"
>
</File>
<File
RelativePath="..\..\..\wrapper\RTAS\juce_RTAS_Wrapper.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
CallingConvention="2"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
CallingConvention="2"
/>
</FileConfiguration>
</File>
</Filter>
</Filter>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

+ 285
- 270
extras/audio plugins/demo/src/JucePluginCharacteristics.h View File

@@ -1,270 +1,285 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#ifndef __JUCE_PLUGIN_CHARACTERISTICS_H__
#define __JUCE_PLUGIN_CHARACTERISTICS_H__
//==============================================================================
/* All of the following settings need to be defined for your plugin.
Go through each of these definitions and check that it's correctly
set-up before trying to do a build.
*/
//==============================================================================
/* Generic settings */
/** The name of your plugin. (Try to keep this as short as possible)
*/
#define JucePlugin_Name "Juce Demo Plugin"
/** A longer decription of your plugin.
*/
#define JucePlugin_Desc "A Demo Plugin demonstrating Juce"
/** The name of your company. (Try to keep this as short as possible)
*/
#define JucePlugin_Manufacturer "Raw Material Software"
/** A four-character code for your company.
Use single quotes - this isn't a string!
*/
#define JucePlugin_ManufacturerCode 'RawM'
/** A unique four-character code for your plugin.
Use single quotes - this isn't a string!
Note that for AU compatibility, this must contain at least one
upper-case letter.
*/
#define JucePlugin_PluginCode 'JcDm'
//==============================================================================
/** The maximum number of channels of audio input that the plugin can handle.
The actual number of channels supplied may be less than this, depending on the host.
For VSTs, you specify a maximum number of channels, for AUs and RTAS a set
of channel configurations is specified in JucePlugin_PreferredChannelConfigurations
and the host will choose one of these, but you should still set the max number of
channels correctly.
As soon as a plugin's prepareToPlay() method is called, you can find out the actual
number of channels that will be used with the AudioProcessor::getNumInputChannels()
method.
*/
#define JucePlugin_MaxNumInputChannels 2
/** The maximum number of channels of audio output that the plugin can handle.
The actual number of channels supplied may be less than this, depending on the host.
For VSTs, you specify a maximum number of channels, for AUs and RTAS a set
of channel configurations is specified in JucePlugin_PreferredChannelConfigurations
and the host will choose one of these, but you should still set the max number of
channels correctly.
As soon as a plugin's prepareToPlay() method is called, you can find out the actual
number of channels that will be used with the AudioProcessor::getNumOutputChannels()
method.
*/
#define JucePlugin_MaxNumOutputChannels 2
/** This allows the plugin to specify the configurations of input/output channels that
they can support.
AU and RTAS hosts will use this information, although VSTs only have a concept of
a maximum number of channels.
The list is a set of pairs of values in the form { numInputs, numOutputs }, and each
pair indicates a valid configuration that the plugin can handle.
So for example, {1, 1}, {2, 2} means that the plugin can be used in just two
configurations: either with 1 input and 1 output, or with 2 inputs and 2 outputs. If
you used this in Pro-Tools, the plugin could be placed on a mono or stereo track.
If the list was just {1, 1}, then Pro-Tools would only allow it to be used as a mono
plugin.
As soon as a plugin's prepareToPlay() method is called, you can find out the actual
number of channels that the host has connected to the plugin by using the
AudioProcessor::getNumOutputChannels() and AudioFilterBase::getNumInputChannels()
methods.
*/
#define JucePlugin_PreferredChannelConfigurations { 1, 1 }, { 2, 2 }
//==============================================================================
/** Set this value to 1 if your plugin is a synth, or 0 if it isn't.
*/
#define JucePlugin_IsSynth 0
/** Set this to 1 if your plugin needs to receive midi messages, or 0 if
it doesn't.
*/
#define JucePlugin_WantsMidiInput 1
/** Set this to 1 if your plugin wants to output midi messages, or 0 if
it doesn't.
*/
#define JucePlugin_ProducesMidiOutput 1
/** If this is 1, it means that when the plugins input buffers are
silent, it's output will be too.
Some hosts may use this to avoid calling the plugin when no audio
would be produced.
*/
#define JucePlugin_SilenceInProducesSilenceOut 0
/** If set to 1, this hints that the host should ignore any keys that are pressed
when the plugin has keyboard focus. If 0, then the host should still execute
any shortcut keys that are pressed, even if the plugin does have focus.
Various hosts/platforms may deal with this differently, or ignore it.
*/
#define JucePlugin_EditorRequiresKeyboardFocus 1
//==============================================================================
/** A version number
*/
#define JucePlugin_VersionCode 0x00010100
#define JucePlugin_VersionString "1.1"
//==============================================================================
/* VST settings */
/** For VSTs, if you're compiling against the V2.3 SDK, set this to zero. If
you're using V2.4 or later, make sure it's set to 1.
*/
#define JUCE_USE_VSTSDK_2_4 1
/** Defines a UID for your VST plugin.
The default setting here is probably fine, unless you specifically need
a custom value. It's passed to the setUniqueID() method of the plugin class.
*/
#define JucePlugin_VSTUniqueID JucePlugin_PluginCode
/** Defines the type of plugin. For most pursposes, you don't need to change this
setting.
*/
#if JucePlugin_IsSynth
#define JucePlugin_VSTCategory kPlugCategSynth
#else
#define JucePlugin_VSTCategory kPlugCategEffect
#endif
//==============================================================================
/* AudioUnit settings */
/** Defines the major type of plugin - see AUComponent.h for the available options.
If it's an effect, you should use kAudioUnitType_Effect. For a synth, you'll
need to use kAudioUnitType_MusicEffect or kAudioUnitType_MusicDevice.
*/
#if JucePlugin_IsSynth
#define JucePlugin_AUMainType kAudioUnitType_MusicDevice
#else
#define JucePlugin_AUMainType kAudioUnitType_Effect
#endif
/** A 4-character plugin ID code that should be unique.
You can leave this using the generic value JucePlugin_PluginCode, or
override it if necessary.
Note that for AU, this must contain at least one upper-case letter.
*/
#define JucePlugin_AUSubType JucePlugin_PluginCode
/** A prefix for the names of exported entry-point functions that the component exposes.
It's very important that your plugin's .exp file contains two entries that correspond to
this name. So for example if you set the prefix to "abc" then your exports
file must contain:
_abcEntry
_abcViewEntry
*/
#define JucePlugin_AUExportPrefix JuceDemoAU
/** This is the same as JucePlugin_AUExportPrefix, but in quotes
(needed for the resource compiler...)
*/
#define JucePlugin_AUExportPrefixQuoted "JuceDemoAU"
/** A 4-character manufacturer code - this is your company name.
You can leave this using the generic value JucePlugin_ManufacturerCode, or
override it if necessary.
*/
#define JucePlugin_AUManufacturerCode JucePlugin_ManufacturerCode
/** If you define this value to be the same as the CFBundleIdentifier in your
plugin's plist, it allows the plugin to work out its own path, which is
needed if you want to use File::getSpecialLocation (currentExecutableFile)
*/
#define JucePlugin_CFBundleIdentifier "com.rawmaterialsoftware.JuceDemo"
//==============================================================================
/* RTAS settings */
/** How to categorise this plugin.
For a synth you probably want to set this to ePlugInCategory_SWGenerators.
For an effect, you could choose one of:
ePlugInCategory_None, ePlugInCategory_EQ, ePlugInCategory_Dynamics,
ePlugInCategory_PitchShift, ePlugInCategory_Reverb, ePlugInCategory_Delay,
ePlugInCategory_Modulation, ePlugInCategory_Harmonic, ePlugInCategory_NoiseReduction,
ePlugInCategory_Dither, ePlugInCategory_SoundField
(All values are listed in FicPluginEnums.h)
*/
#if JucePlugin_IsSynth
#define JucePlugin_RTASCategory ePlugInCategory_SWGenerators
#else
#define JucePlugin_RTASCategory ePlugInCategory_None
#endif
/** A 4-character manufacturer code - this is your company name.
You can leave this using the generic value JucePlugin_ManufacturerCode, or
override it if necessary.
*/
#define JucePlugin_RTASManufacturerCode JucePlugin_ManufacturerCode
/** A 4-character plugin ID code that should be unique.
You can leave this using the generic value JucePlugin_PluginCode, or
override it if necessary.
*/
#define JucePlugin_RTASProductId JucePlugin_PluginCode
//==============================================================================
#endif
/*
==============================================================================

This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.

------------------------------------------------------------------------------

JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.

JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA

------------------------------------------------------------------------------

If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.

==============================================================================
*/

#ifndef __JUCE_PLUGIN_CHARACTERISTICS_H__
#define __JUCE_PLUGIN_CHARACTERISTICS_H__


//==============================================================================
/* All of the following settings need to be defined for your plugin.

Go through each of these definitions and check that it's correctly
set-up before trying to do a build.
*/


//==============================================================================
/* Plugin Formats to build */

#define JucePlugin_Build_VST 1
#define JucePlugin_Build_RTAS 0
#define JucePlugin_Build_AU 1


//==============================================================================
/* Generic settings */

/** The name of your plugin. (Try to keep this as short as possible)
*/
#define JucePlugin_Name "Juce Demo Plugin"

/** A longer decription of your plugin.
*/
#define JucePlugin_Desc "A Demo Plugin demonstrating Juce"

/** The name of your company. (Try to keep this as short as possible)
*/
#define JucePlugin_Manufacturer "Raw Material Software"

/** A four-character code for your company.
Use single quotes - this isn't a string!
*/
#define JucePlugin_ManufacturerCode 'RawM'

/** A unique four-character code for your plugin.
Use single quotes - this isn't a string!

Note that for AU compatibility, this must contain at least one
upper-case letter.
*/
#define JucePlugin_PluginCode 'JcDm'

//==============================================================================
/** The maximum number of channels of audio input that the plugin can handle.

The actual number of channels supplied may be less than this, depending on the host.
For VSTs, you specify a maximum number of channels, for AUs and RTAS a set
of channel configurations is specified in JucePlugin_PreferredChannelConfigurations
and the host will choose one of these, but you should still set the max number of
channels correctly.

As soon as a plugin's prepareToPlay() method is called, you can find out the actual
number of channels that will be used with the AudioProcessor::getNumInputChannels()
method.
*/
#define JucePlugin_MaxNumInputChannels 2

/** The maximum number of channels of audio output that the plugin can handle.

The actual number of channels supplied may be less than this, depending on the host.
For VSTs, you specify a maximum number of channels, for AUs and RTAS a set
of channel configurations is specified in JucePlugin_PreferredChannelConfigurations
and the host will choose one of these, but you should still set the max number of
channels correctly.

As soon as a plugin's prepareToPlay() method is called, you can find out the actual
number of channels that will be used with the AudioProcessor::getNumOutputChannels()
method.
*/
#define JucePlugin_MaxNumOutputChannels 2

/** This allows the plugin to specify the configurations of input/output channels that
they can support.

AU and RTAS hosts will use this information, although VSTs only have a concept of
a maximum number of channels.

The list is a set of pairs of values in the form { numInputs, numOutputs }, and each
pair indicates a valid configuration that the plugin can handle.

So for example, {1, 1}, {2, 2} means that the plugin can be used in just two
configurations: either with 1 input and 1 output, or with 2 inputs and 2 outputs. If
you used this in Pro-Tools, the plugin could be placed on a mono or stereo track.
If the list was just {1, 1}, then Pro-Tools would only allow it to be used as a mono
plugin.

As soon as a plugin's prepareToPlay() method is called, you can find out the actual
number of channels that the host has connected to the plugin by using the
AudioProcessor::getNumOutputChannels() and AudioFilterBase::getNumInputChannels()
methods.
*/
#define JucePlugin_PreferredChannelConfigurations { 1, 1 }, { 2, 2 }

//==============================================================================
/** Set this value to 1 if your plugin is a synth, or 0 if it isn't.
*/
#define JucePlugin_IsSynth 0

/** Set this to 1 if your plugin needs to receive midi messages, or 0 if
it doesn't.
*/
#define JucePlugin_WantsMidiInput 1

/** Set this to 1 if your plugin wants to output midi messages, or 0 if
it doesn't.
*/
#define JucePlugin_ProducesMidiOutput 1

/** If this is 1, it means that when the plugins input buffers are
silent, it's output will be too.

Some hosts may use this to avoid calling the plugin when no audio
would be produced.
*/
#define JucePlugin_SilenceInProducesSilenceOut 0

/** If set to 1, this hints that the host should ignore any keys that are pressed
when the plugin has keyboard focus. If 0, then the host should still execute
any shortcut keys that are pressed, even if the plugin does have focus.

Various hosts/platforms may deal with this differently, or ignore it.
*/
#define JucePlugin_EditorRequiresKeyboardFocus 1


//==============================================================================
/** A version number
*/
#define JucePlugin_VersionCode 0x00010100

#define JucePlugin_VersionString "1.1"


//==============================================================================
/* VST settings */

/** For VSTs, if you're compiling against the V2.3 SDK, set this to zero. If
you're using V2.4 or later, make sure it's set to 1.
*/
#define JUCE_USE_VSTSDK_2_4 1

/** Defines a UID for your VST plugin.
The default setting here is probably fine, unless you specifically need
a custom value. It's passed to the setUniqueID() method of the plugin class.
*/
#define JucePlugin_VSTUniqueID JucePlugin_PluginCode

/** Defines the type of plugin. For most pursposes, you don't need to change this
setting.
*/
#if JucePlugin_IsSynth
#define JucePlugin_VSTCategory kPlugCategSynth
#else
#define JucePlugin_VSTCategory kPlugCategEffect
#endif

//==============================================================================
/* AudioUnit settings */

/** Defines the major type of plugin - see AUComponent.h for the available options.
If it's an effect, you should use kAudioUnitType_Effect. For a synth, you'll
need to use kAudioUnitType_MusicEffect or kAudioUnitType_MusicDevice.
*/
#if JucePlugin_IsSynth
#define JucePlugin_AUMainType kAudioUnitType_MusicDevice
#else
#define JucePlugin_AUMainType kAudioUnitType_Effect
#endif

/** A 4-character plugin ID code that should be unique.

You can leave this using the generic value JucePlugin_PluginCode, or
override it if necessary.

Note that for AU, this must contain at least one upper-case letter.
*/
#define JucePlugin_AUSubType JucePlugin_PluginCode

/** A prefix for the names of exported entry-point functions that the component exposes.

It's very important that your plugin's .exp file contains two entries that correspond to
this name. So for example if you set the prefix to "abc" then your exports
file must contain:

_abcEntry
_abcViewEntry
*/
#define JucePlugin_AUExportPrefix JuceDemoAU

/** This is the same as JucePlugin_AUExportPrefix, but in quotes
(needed for the resource compiler...)
*/
#define JucePlugin_AUExportPrefixQuoted "JuceDemoAU"

/** A 4-character manufacturer code - this is your company name.
You can leave this using the generic value JucePlugin_ManufacturerCode, or
override it if necessary.
*/
#define JucePlugin_AUManufacturerCode JucePlugin_ManufacturerCode

/** If you define this value to be the same as the CFBundleIdentifier in your
plugin's plist, it allows the plugin to work out its own path, which is
needed if you want to use File::getSpecialLocation (currentExecutableFile)
*/
#define JucePlugin_CFBundleIdentifier "com.rawmaterialsoftware.JuceDemo"

//==============================================================================
/* RTAS settings */

/** How to categorise this plugin.

For a synth you probably want to set this to ePlugInCategory_SWGenerators.
For an effect, you could choose one of:
ePlugInCategory_None, ePlugInCategory_EQ, ePlugInCategory_Dynamics,
ePlugInCategory_PitchShift, ePlugInCategory_Reverb, ePlugInCategory_Delay,
ePlugInCategory_Modulation, ePlugInCategory_Harmonic, ePlugInCategory_NoiseReduction,
ePlugInCategory_Dither, ePlugInCategory_SoundField

(All values are listed in FicPluginEnums.h)
*/
#if JucePlugin_IsSynth
#define JucePlugin_RTASCategory ePlugInCategory_SWGenerators
#else
#define JucePlugin_RTASCategory ePlugInCategory_None
#endif

/** A 4-character manufacturer code - this is your company name.
You can leave this using the generic value JucePlugin_ManufacturerCode, or
override it if necessary.
*/
#define JucePlugin_RTASManufacturerCode JucePlugin_ManufacturerCode

/** A 4-character plugin ID code that should be unique.
You can leave this using the generic value JucePlugin_PluginCode, or
override it if necessary.
*/
#define JucePlugin_RTASProductId JucePlugin_PluginCode

/** You need to set this path to point to the location of the Digidesign WinBag
directory on your machine. (Only needed for Windows builds). Make sure you
don't put a slash on the end.
*/
#define JucePlugin_WinBag_path "C:\\essentials\\PT_73_SDK\\WinBag"


//==============================================================================

#endif

extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcess.cpp → extras/audio plugins/demo/src/juce_AppConfig.h View File

@@ -29,16 +29,29 @@
==============================================================================
*/
#include "juce_Wrapper_Header.h"
/*
This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
Note about include paths
This file contains settings that you might want to explicitly apply to
the your build.
If you get an error including this file, check your paths - there's a full list of
Digidesign paths in juce_RTASWrapper.cpp
Most of these are turned on or off by default, but you can override
that setting here by un-commenting it and giving it a 1 or 0 value.
*/
#include "CEffectProcess.cpp"
#define JUCE_QUICKTIME 0
//#define JUCE_PLUGINHOST_VST 1
//#define JUCE_PLUGINHOST_AU 1
//#define JUCE_ONLY_BUILD_CORE_LIBRARY 1
//#define JUCE_FORCE_DEBUG 1
//#define JUCE_LOG_ASSERTIONS 1
//#define JUCE_ASIO 1
//#define JUCE_ALSA 1
//#define JUCE_OPENGL 1
//#define JUCE_USE_FLAC 1
//#define JUCE_USE_OGGVORBIS 1
//#define JUCE_USE_CDBURNER 1
//#define JUCE_ENABLE_REPAINT_DEBUGGING 1
//#define JUCE_USE_XINERAMA 1
//#define JUCE_USE_XSHM 1
//#define JUCE_CHECK_MEMORY_LEAKS 1
//#define JUCE_CATCH_UNHANDLED_EXCEPTIONS 1
//#define JUCE_STRINGS_ARE_UNICODE 1

+ 12
- 0
extras/audio plugins/demo/src/juce_LibrarySource.cpp View File

@@ -0,0 +1,12 @@
/*
This file includes the entire juce source tree via the amalgamated file.
You could add the amalgamated file directly to your project, but doing it
like this allows you to put your app's config settings in the
juce_AppConfig.h file and have them applied to both the juce headers and
the source code.
*/
#include "juce_AppConfig.h"
#include "../../../../juce_amalgamated.cpp"

+ 12
- 0
extras/audio plugins/demo/src/juce_LibrarySource.mm View File

@@ -0,0 +1,12 @@
/*
This file includes the entire juce source tree via the amalgamated file.
You could add the amalgamated file directly to your project, but doing it
like this allows you to put your app's config settings in the
juce_AppConfig.h file and have them applied to both the juce headers and
the source code.
*/
#include "juce_AppConfig.h"
#include "../../../../juce_amalgamated.mm"

extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.r → extras/audio plugins/wrapper/AU/juce_AU_Resources.r View File

@@ -1,57 +1,57 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include <AudioUnit/AudioUnit.r>
//==============================================================================
/* The JucePluginCharacteristics.h file is supposed to live in your plugin-specific
project directory, and has to contain info describing its name, type, etc. For
more info, see the JucePluginCharacteristics.h that is included in the demo plugin.
You may need to adjust the include path of your project to make sure it can be
found by this include statement. (Don't hack this file to change the include path)
*/
#include "JucePluginCharacteristics.h"
//==============================================================================
// component resources for Audio Unit
#define RES_ID 1000
#define COMP_TYPE JucePlugin_AUMainType
#define COMP_SUBTYPE JucePlugin_AUSubType
#define COMP_MANUF JucePlugin_AUManufacturerCode
#define VERSION JucePlugin_VersionCode
#define NAME JucePlugin_Manufacturer ": " JucePlugin_Name
#define DESCRIPTION JucePlugin_Desc
#define ENTRY_POINT JucePlugin_AUExportPrefixQuoted "Entry"
#include "/Developer/Examples/CoreAudio/AudioUnits/AUPublic/AUBase/AUResources.r"
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include <AudioUnit/AudioUnit.r>
//==============================================================================
/* The JucePluginCharacteristics.h file is supposed to live in your plugin-specific
project directory, and has to contain info describing its name, type, etc. For
more info, see the JucePluginCharacteristics.h that is included in the demo plugin.
You may need to adjust the include path of your project to make sure it can be
found by this include statement. (Don't hack this file to change the include path)
*/
#include "JucePluginCharacteristics.h"
//==============================================================================
// component resources for Audio Unit
#define RES_ID 1000
#define COMP_TYPE JucePlugin_AUMainType
#define COMP_SUBTYPE JucePlugin_AUSubType
#define COMP_MANUF JucePlugin_AUManufacturerCode
#define VERSION JucePlugin_VersionCode
#define NAME JucePlugin_Manufacturer ": " JucePlugin_Name
#define DESCRIPTION JucePlugin_Desc
#define ENTRY_POINT JucePlugin_AUExportPrefixQuoted "Entry"
#include "AUResources.r"

extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.mm → extras/audio plugins/wrapper/AU/juce_AU_Wrapper.mm View File

@@ -35,9 +35,9 @@
#include <AudioToolbox/AudioUnitUtilities.h>
#include "AUMIDIEffectBase.h"
#include "MusicDeviceBase.h"
#include "../../juce_IncludeCharacteristics.h"
#include "../../../../../juce_amalgamated.h"
//#include "../../../../../juce.h"
#include "../juce_PluginHeaders.h"
#if JucePlugin_Build_AU
//==============================================================================
#define juceFilterObjectPropertyID 0x1a45ffe9
@@ -849,10 +849,14 @@ protected:
void componentMovedOrResized (Component& component, bool wasMoved, bool wasResized)
{
if (wasResized)
//if (wasResized)
{
NSView* view = (NSView*) component.getWindowHandle();
[[view superview] setFrameSize: NSMakeSize (component.getWidth(), component.getHeight())];
NSRect r = [[view superview] frame];
r.origin.y = r.origin.y + r.size.height - component.getHeight();
r.size.width = component.getWidth();
r.size.height = component.getHeight();
[[view superview] setFrame: r];
[view setFrame: NSMakeRect (0, 0, component.getWidth(), component.getHeight())];
[view setNeedsDisplay: YES];
}
@@ -987,8 +991,6 @@ private:
if (editorComp == 0)
return 0;
DBG (String (inPreferredSize.width) + " " + String (inPreferredSize.height));
DBG (String (editorComp->getWidth()) + " " + String (editorComp->getHeight()));
return [[[JuceUIViewClass alloc] initWithFilter: filter
withAU: au
@@ -1008,3 +1010,5 @@ extern "C" __attribute__((visibility("default"))) ComponentResult Name ## Suffix
JUCE_COMPONENT_ENTRY (JuceAU, JucePlugin_AUExportPrefix, Entry)
//JUCE_COMPONENT_ENTRY (JuceAUView, JucePlugin_AUExportPrefix, ViewEntry)
#endif

extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectMIDIUtils.cpp → extras/audio plugins/wrapper/RTAS/juce_RTAS_DigiCode1.cpp View File

@@ -29,16 +29,37 @@
==============================================================================
*/
#include "juce_Wrapper_Header.h"
#include "juce_RTAS_DigiCode_Header.h"
#if JucePlugin_Build_RTAS
/*
This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
This file is used to include and build the required digidesign CPP files without your project
needing to reference the files directly. Because these files will be found via your include path,
this means that the project doesn't have to change to cope with people's SDKs being in different
locations.
Note about include paths
Important note on Windows: In your project settings for the three juce_RTAS_DigiCode.cpp files and
the juce_RTAS_Wrapper.cpp file, you need to set the calling convention to "__stdcall".
If you don't do this, you'll get some unresolved externals and will spend a long time wondering what's
going on... All the other files in your project can be set to use the normal __cdecl convention.
If you get an error including this file, check your paths - there's a full list of
Digidesign paths in juce_RTASWrapper.cpp
If you get an error building the includes statements below, check your paths - there's a full
list of the necessary Digidesign paths in juce_RTAS_Wrapper.cpp
*/
#if WINDOWS_VERSION
#undef _UNICODE
#undef UNICODE
#endif
#include "CEffectGroup.cpp"
#include "CEffectGroupMIDI.cpp"
#include "CEffectMIDIUtils.cpp"
#include "CEffectProcess.cpp"
#include "CEffectProcessAS.cpp"
#include "CEffectType.cpp"
#include "CEffectTypeRTAS.cpp"
#include "ChunkDataParser.cpp"
#endif

extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcessMIDI.cpp → extras/audio plugins/wrapper/RTAS/juce_RTAS_DigiCode2.cpp View File

@@ -29,16 +29,26 @@
==============================================================================
*/
#include "juce_Wrapper_Header.h"
#include "juce_RTAS_DigiCode_Header.h"
/*
This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
Note about include paths
#if JucePlugin_Build_RTAS
If you get an error including this file, check your paths - there's a full list of
Digidesign paths in juce_RTASWrapper.cpp
/*
This file is used to include and build the required digidesign CPP files without your project
needing to reference the files directly. Because these files will be found via your include path,
this means that the project doesn't have to change to cope with people's SDKs being in different
locations.
Important note on Windows: In your project settings for the three juce_RTAS_DigiCode.cpp files and
the juce_RTAS_Wrapper.cpp file, you need to set the calling convention to "__stdcall".
If you don't do this, you'll get some unresolved externals and will spend a long time wondering what's
going on... All the other files in your project can be set to use the normal __cdecl convention.
If you get an error building the includes statements below, check your paths - there's a full
list of the necessary Digidesign paths in juce_RTAS_Wrapper.cpp
*/
#include "CEffectProcessMIDI.cpp"
#include "PlugInUtils.cpp"
#endif

+ 95
- 0
extras/audio plugins/wrapper/RTAS/juce_RTAS_DigiCode3.cpp View File

@@ -0,0 +1,95 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include "juce_RTAS_DigiCode_Header.h"
/*
This file is used to include and build the required digidesign CPP files without your project
needing to reference the files directly. Because these files will be found via your include path,
this means that the project doesn't have to change to cope with people's SDKs being in different
locations.
Important note on Windows: In your project settings for the three juce_RTAS_DigiCode.cpp files and
the juce_RTAS_Wrapper.cpp file, you need to set the calling convention to "__stdcall".
If you don't do this, you'll get some unresolved externals and will spend a long time wondering what's
going on... All the other files in your project can be set to use the normal __cdecl convention.
If you get an error building the includes statements below, check your paths - there's a full
list of the necessary Digidesign paths in juce_RTAS_Wrapper.cpp
*/
#if JucePlugin_Build_RTAS
#if WINDOWS_VERSION
//==============================================================================
#undef _UNICODE
#undef UNICODE
#if JucePlugin_Build_VST
#define DllMain DllMainRTAS
#include "DLLMain.cpp"
#undef DllMain
extern BOOL WINAPI DllMainVST (HINSTANCE instance, DWORD dwReason, LPVOID);
// This overloaded DllMain can work as either an RTAS or a VST..
extern "C" BOOL WINAPI DllMain (HINSTANCE hInstance, DWORD ul_reason_for_call, LPVOID lpReserved)
{
if (GetModuleHandle ("DAE.DLL") != 0)
return DllMainRTAS (hInstance, ul_reason_for_call, lpReserved);
else
return DllMainVST (hInstance, ul_reason_for_call, lpReserved);
}
#else
#include "DLLMain.cpp"
#endif
#include "DefaultSwap.cpp"
#else
//==============================================================================
#include "PlugInInitialize.cpp"
#include "Dispatcher.cpp"
#endif
#else
#if _MSC_VER
// (defining these stubs just makes it easier to quickly turn off the RTAS build without removing
// the exports table from your project settings)
short __stdcall NewPlugIn (void*) { return 0; }
short __stdcall _PI_GetRoutineDescriptor (long, void*) { return 0; }
#endif
#endif

extras/audio plugins/wrapper/formats/RTAS/juce_RTASCompileFlags.h → extras/audio plugins/wrapper/RTAS/juce_RTAS_DigiCode_Header.h View File

@@ -29,9 +29,12 @@
==============================================================================
*/
#ifndef __JUCE_RTASCOMPILEFLAGS_JUCEHEADER__
#define __JUCE_RTASCOMPILEFLAGS_JUCEHEADER__
#ifndef __JUCE_RTAS_DIGICODE_HEADER_JUCEHEADER__
#define __JUCE_RTAS_DIGICODE_HEADER_JUCEHEADER__
#include "../juce_IncludeCharacteristics.h"
//==============================================================================
#ifdef _MSC_VER
#define kCompileAsCodeResource 0
@@ -46,6 +49,12 @@
#define PLUGIN_SDK_BUILD 1
#define PLUGIN_SDK_DIRECTMIDI 1
// the Digidesign projects all use a struct alignment of 2..
#pragma pack (2)
#pragma warning (disable: 4267 4996 4311 4312 4103)
#include "ForcedInclude.h"
#else
#define kCompileAsCodeResource 0
@@ -60,4 +69,5 @@
#endif
#endif // __JUCE_RTASCOMPILEFLAGS_JUCEHEADER__
#endif // __JUCE_RTAS_DIGICODE_HEADER_JUCEHEADER__

+ 6
- 0
extras/audio plugins/wrapper/RTAS/juce_RTAS_MacResources.r View File

@@ -0,0 +1,6 @@

/*
This dummy file is added to the resources section of the project to
force XCode to create some resources for the dpm. If there aren't any
resources, PT will refuse to load the plugin..
*/

extras/audio plugins/wrapper/formats/RTAS/juce_RTASUtilities.mm → extras/audio plugins/wrapper/RTAS/juce_RTAS_MacUtilities.mm View File

@@ -1,82 +1,101 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include <Cocoa/Cocoa.h>
#include "../../../../../juce_amalgamated.h"
//==============================================================================
void* attachSubWindow (void* hostWindowRef, Component* comp)
{
const ScopedAutoReleasePool pool;
NSWindow* hostWindow = [[NSWindow alloc] initWithWindowRef: hostWindowRef];
[hostWindow retain];
NSView* content = [hostWindow contentView];
NSRect f = [content frame];
f.size.width = comp->getWidth();
f.size.height = comp->getHeight();
[content setFrame: f];
NSPoint windowPos = [hostWindow convertBaseToScreen: f.origin];
windowPos.y = [[NSScreen mainScreen] frame].size.height - (windowPos.y + f.size.height);
comp->setTopLeftPosition ((int) windowPos.x, (int) windowPos.y);
#if ! JucePlugin_EditorRequiresKeyboardFocus
comp->addToDesktop (ComponentPeer::windowIsTemporary | ComponentPeer::windowIgnoresKeyPresses);
#else
comp->addToDesktop (ComponentPeer::windowIsTemporary);
#endif
comp->setVisible (true);
NSView* pluginView = (NSView*) comp->getWindowHandle();
NSWindow* pluginWindow = [pluginView window];
[hostWindow addChildWindow: pluginWindow
ordered: NSWindowAbove];
[hostWindow orderFront: nil];
return hostWindow;
}
void removeSubWindow (void* nsWindow, Component* comp)
{
const ScopedAutoReleasePool pool;
NSView* pluginView = (NSView*) comp->getWindowHandle();
NSWindow* hostWindow = (NSWindow*) nsWindow;
NSWindow* pluginWindow = [pluginView window];
[hostWindow removeChildWindow: pluginWindow];
comp->removeFromDesktop();
[hostWindow release];
}
/*
==============================================================================

This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.

------------------------------------------------------------------------------

JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.

JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA

------------------------------------------------------------------------------

If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.

==============================================================================
*/

// If you get an error here, you might need to make sure that
// your build config files don't specify "C++" as one of the
// flags in OTHER_CFLAGS, because that stops the compiler building
// obj-c files correctly.
@class dummyclassname;

#include <Cocoa/Cocoa.h>
#include "../juce_PluginHeaders.h"

#if JucePlugin_Build_RTAS


//==============================================================================
void initialiseMacRTAS()
{
NSApplicationLoad();
}

void* attachSubWindow (void* hostWindowRef, Component* comp)
{
const ScopedAutoReleasePool pool;

NSWindow* hostWindow = [[NSWindow alloc] initWithWindowRef: hostWindowRef];
[hostWindow retain];
[hostWindow setCanHide: YES];
[hostWindow setReleasedWhenClosed: YES];

NSView* content = [hostWindow contentView];
NSRect f = [content frame];
f.size.width = comp->getWidth();
f.size.height = comp->getHeight();
[content setFrame: f];

NSPoint windowPos = [hostWindow convertBaseToScreen: f.origin];
windowPos.y = [[NSScreen mainScreen] frame].size.height - (windowPos.y + f.size.height);

comp->setTopLeftPosition ((int) windowPos.x, (int) windowPos.y);

#if ! JucePlugin_EditorRequiresKeyboardFocus
comp->addToDesktop (ComponentPeer::windowIsTemporary | ComponentPeer::windowIgnoresKeyPresses);
#else
comp->addToDesktop (ComponentPeer::windowIsTemporary);
#endif

comp->setVisible (true);

NSView* pluginView = (NSView*) comp->getWindowHandle();
NSWindow* pluginWindow = [pluginView window];

[hostWindow addChildWindow: pluginWindow
ordered: NSWindowAbove];
[hostWindow orderFront: nil];
[pluginWindow orderFront: nil];
return hostWindow;
}

void removeSubWindow (void* nsWindow, Component* comp)
{
const ScopedAutoReleasePool pool;

NSView* pluginView = (NSView*) comp->getWindowHandle();
NSWindow* hostWindow = (NSWindow*) nsWindow;
NSWindow* pluginWindow = [pluginView window];

[hostWindow removeChildWindow: pluginWindow];
comp->removeFromDesktop();
[hostWindow release];
}

#endif

extras/audio plugins/wrapper/formats/RTAS/juce_RTAS_dlldefs.def → extras/audio plugins/wrapper/RTAS/juce_RTAS_WinExports.def View File


extras/audio plugins/wrapper/formats/RTAS/DefaultResourceFile → extras/audio plugins/wrapper/RTAS/juce_RTAS_WinResources.rsr View File


extras/audio plugins/wrapper/formats/RTAS/juce_RTASUtilities.cpp → extras/audio plugins/wrapper/RTAS/juce_RTAS_WinUtilities.cpp View File

@@ -31,7 +31,7 @@
#if _MSC_VER
// (these functions are in a separate file because of problems including windows.h
// (these functions are in their own file because of problems including windows.h
// at the same time as the Digi headers)
#include <windows.h>
@@ -40,12 +40,13 @@
#pragma pack (push, 8)
#endif
#include "../../../../../juce_amalgamated.h"
#include "../juce_PluginHeaders.h"
#ifdef _MSC_VER
#pragma pack (pop)
#endif
#if JucePlugin_Build_RTAS
//==============================================================================
void JUCE_CALLTYPE attachSubWindow (void* hostWindow,
@@ -138,5 +139,5 @@ void JUCE_CALLTYPE passFocusToHostWindow (void* hostWindow)
}
#endif
#endif
#endif

extras/audio plugins/wrapper/RTAS/juce_RTAS_Wrapper.cpp
File diff suppressed because it is too large
View File


extras/audio plugins/wrapper/formats/Standalone/juce_AudioFilterStreamer.cpp → extras/audio plugins/wrapper/Standalone/juce_AudioFilterStreamer.cpp View File


extras/audio plugins/wrapper/formats/Standalone/juce_AudioFilterStreamer.h → extras/audio plugins/wrapper/Standalone/juce_AudioFilterStreamer.h View File

@@ -32,7 +32,7 @@
#ifndef __JUCE_AUDIOFILTERSTREAMER_JUCEHEADER__
#define __JUCE_AUDIOFILTERSTREAMER_JUCEHEADER__
#include "../../../../../juce_amalgamated.h"
#include "../juce_PluginHeaders.h"
//==============================================================================

extras/audio plugins/wrapper/formats/Standalone/juce_StandaloneFilterWindow.cpp → extras/audio plugins/wrapper/Standalone/juce_StandaloneFilterWindow.cpp View File

@@ -30,7 +30,7 @@
*/
#include "juce_StandaloneFilterWindow.h"
#include "../../juce_IncludeCharacteristics.h"
#include "../juce_PluginHeaders.h"
//==============================================================================
/** Somewhere in the codebase of your plugin, you need to implement this function

extras/audio plugins/wrapper/formats/Standalone/juce_StandaloneFilterWindow.h → extras/audio plugins/wrapper/Standalone/juce_StandaloneFilterWindow.h View File


extras/audio plugins/wrapper/formats/VST/juce_VstWrapper.cpp → extras/audio plugins/wrapper/VST/juce_VST_Wrapper.cpp View File

@@ -29,19 +29,6 @@
==============================================================================
*/
/*
*** DON'T EDIT THIS FILE!! ***
The idea is that everyone's plugins should share this same wrapper
code, so if you start hacking around in here you're missing the point!
If there's a bug or a function you need that can't be done without changing
some of the code in here, give me a shout so we can add it to the library,
rather than branching off and going it alone!
*/
//==============================================================================
#ifdef _MSC_VER
#pragma warning (disable : 4996)
#endif
@@ -62,7 +49,9 @@
#define PRAGMA_ALIGN_SUPPORTED 1
#endif
#include "../../juce_IncludeCharacteristics.h"
#include "../juce_PluginHeaders.h"
#if JucePlugin_Build_VST
//==============================================================================
/* These files come with the Steinberg VST SDK - to get them, you'll need to
@@ -119,8 +108,7 @@
#pragma pack (push, 8)
#endif
//#include "../../../../../juce_amalgamated.h"
#include "../../../../../juce.h"
#include "../juce_PluginHeaders.h"
#ifdef _MSC_VER
#pragma pack (pop)
@@ -136,6 +124,7 @@ BEGIN_JUCE_NAMESPACE
extern void juce_callAnyTimersSynchronously();
#if JUCE_MAC
extern void initialiseMac();
extern void juce_setCurrentExecutableFileNameFromBundleId (const String& bundleId) throw();
extern void* attachComponentToWindowRef (Component* component, void* windowRef);
extern void detachComponentFromWindowRef (Component* component, void* nsWindow);
@@ -626,8 +615,7 @@ public:
filter->setNonRealtime (getCurrentProcessLevel() == 4 /* kVstProcessLevelOffline */);
#if JUCE_WIN32
if (GetThreadPriority (GetCurrentThread()) <= THREAD_PRIORITY_NORMAL
&& GetThreadPriority (GetCurrentThread()) >= THREAD_PRIORITY_LOWEST)
if (GetThreadPriority (GetCurrentThread()) <= THREAD_PRIORITY_NORMAL)
filter->setNonRealtime (true);
#endif
}
@@ -1176,8 +1164,11 @@ public:
}
#if JUCE_MAC
detachComponentFromWindowRef (editorComp, hostWindow);
hostWindow = 0;
if (hostWindow != 0)
{
detachComponentFromWindowRef (editorComp, hostWindow);
hostWindow = 0;
}
#endif
filter->editorBeingDeleted (editorComp->getEditorComp());
@@ -1262,7 +1253,7 @@ public:
*((ERect**) ptr) = &editorSize;
return (VstIntPtr) &editorSize;
return (VstIntPtr) (pointer_sized_int) &editorSize;
}
else
{
@@ -1495,11 +1486,13 @@ static AEffect* pluginEntryPoint (audioMasterCallback audioMaster)
extern "C" __attribute__ ((visibility("default"))) AEffect* VSTPluginMain (audioMasterCallback audioMaster)
{
initialiseMac();
return pluginEntryPoint (audioMaster);
}
extern "C" __attribute__ ((visibility("default"))) AEffect* main_macho (audioMasterCallback audioMaster)
{
initialiseMac();
return pluginEntryPoint (audioMaster);
}
@@ -1541,12 +1534,14 @@ extern "C" __declspec (dllexport) AEffect* VSTPluginMain (audioMasterCallback au
return pluginEntryPoint (audioMaster);
}
#ifndef _WIN64 // (can't compile this on win64, but it's not needed anyway with VST2.4)
extern "C" __declspec (dllexport) void* main (audioMasterCallback audioMaster)
{
return (void*) pluginEntryPoint (audioMaster);
}
#endif
BOOL WINAPI DllMain (HINSTANCE instance, DWORD dwReason, LPVOID)
BOOL WINAPI DllMainVST (HINSTANCE instance, DWORD dwReason, LPVOID)
{
if (dwReason == DLL_PROCESS_ATTACH)
PlatformUtilities::setCurrentModuleInstanceHandle (instance);
@@ -1555,3 +1550,5 @@ BOOL WINAPI DllMain (HINSTANCE instance, DWORD dwReason, LPVOID)
}
#endif
#endif

extras/audio plugins/wrapper/formats/VST/juce_VstWrapper.mm → extras/audio plugins/wrapper/VST/juce_VST_Wrapper.mm View File

@@ -1,111 +1,171 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
//==============================================================================
#include <Cocoa/Cocoa.h>
#include "../../../../../juce.h"
BEGIN_JUCE_NAMESPACE
void* attachComponentToWindowRef (Component* comp, void* windowRef)
{
const ScopedAutoReleasePool pool;
NSWindow* hostWindow = [[NSWindow alloc] initWithWindowRef: windowRef];
[hostWindow retain];
[hostWindow setCanHide: YES];
[hostWindow setReleasedWhenClosed: YES];
NSView* content = [hostWindow contentView];
NSRect f = [content frame];
NSPoint windowPos = [hostWindow convertBaseToScreen: f.origin];
windowPos.y = [[NSScreen mainScreen] frame].size.height - (windowPos.y + f.size.height);
comp->setTopLeftPosition ((int) windowPos.x, (int) windowPos.y);
#if ! JucePlugin_EditorRequiresKeyboardFocus
comp->addToDesktop (ComponentPeer::windowIsTemporary | ComponentPeer::windowIgnoresKeyPresses);
#else
comp->addToDesktop (ComponentPeer::windowIsTemporary);
#endif
comp->setVisible (true);
comp->toFront (false);
NSView* pluginView = (NSView*) comp->getWindowHandle();
NSWindow* pluginWindow = [pluginView window];
[pluginWindow setExcludedFromWindowsMenu: YES];
[hostWindow addChildWindow: pluginWindow
ordered: NSWindowAbove];
[hostWindow orderFront: nil];
[pluginWindow orderFront: nil];
return hostWindow;
}
void detachComponentFromWindowRef (Component* comp, void* nsWindow)
{
NSWindow* hostWindow = (NSWindow*) nsWindow;
if (hostWindow != 0)
{
const ScopedAutoReleasePool pool;
NSView* pluginView = (NSView*) comp->getWindowHandle();
NSWindow* pluginWindow = [pluginView window];
[hostWindow removeChildWindow: pluginWindow];
comp->removeFromDesktop();
[hostWindow release];
}
}
void setNativeHostWindowSize (void* nsWindow, Component* component, int newWidth, int newHeight)
{
NSWindow* hostWindow = (NSWindow*) nsWindow;
if (hostWindow != 0)
{
ScopedAutoReleasePool pool;
NSRect f = [hostWindow frame];
f.size.width += newWidth - component->getWidth();
f.size.height += newHeight - component->getHeight();
[hostWindow setFrame: f display: YES];
}
}
void checkWindowVisibility (void* nsWindow, Component* comp)
{
NSWindow* hostWindow = (NSWindow*) nsWindow;
comp->setVisible ([hostWindow isVisible]);
}
END_JUCE_NAMESPACE
/*
==============================================================================

This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.

------------------------------------------------------------------------------

JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.

JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA

------------------------------------------------------------------------------

If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.

==============================================================================
*/

//==============================================================================
#include "../juce_IncludeCharacteristics.h"

#if JucePlugin_Build_VST

#include <Cocoa/Cocoa.h>

#define ADD_CARBON_BODGE 1 // see note below..

#if ADD_CARBON_BODGE
#include <Carbon/Carbon.h>
#endif

#include "../juce_PluginHeaders.h"

//==============================================================================
BEGIN_JUCE_NAMESPACE

#if ADD_CARBON_BODGE
/* When you wrap a WindowRef as an NSWindow, it seems to bugger up the HideWindow
function, so when the host tries (and fails) to hide the window, this catches
the event and does the job properly.
*/

static pascal OSStatus windowVisibilityBodge (EventHandlerCallRef, EventRef e, void* user)
{
NSWindow* hostWindow = (NSWindow*) user;

switch (GetEventKind (e))
{
case kEventWindowShown:
[hostWindow orderFront: nil];
break;
case kEventWindowHidden:
[hostWindow orderOut: nil];
break;
}

return eventNotHandledErr;
}
#endif

//==============================================================================
void initialiseMac()
{
NSApplicationLoad();
}

void* attachComponentToWindowRef (Component* comp, void* windowRef)
{
const ScopedAutoReleasePool pool;

NSWindow* hostWindow = [[NSWindow alloc] initWithWindowRef: windowRef];
[hostWindow retain];
[hostWindow setCanHide: YES];
[hostWindow setReleasedWhenClosed: YES];

NSView* content = [hostWindow contentView];
NSRect f = [content frame];
NSPoint windowPos = [hostWindow convertBaseToScreen: f.origin];
windowPos.y = [[NSScreen mainScreen] frame].size.height - (windowPos.y + f.size.height);
comp->setTopLeftPosition ((int) windowPos.x, (int) windowPos.y);

#if ! JucePlugin_EditorRequiresKeyboardFocus
comp->addToDesktop (ComponentPeer::windowIsTemporary | ComponentPeer::windowIgnoresKeyPresses);
#else
comp->addToDesktop (ComponentPeer::windowIsTemporary);
#endif

comp->setVisible (true);
comp->toFront (false);

NSView* pluginView = (NSView*) comp->getWindowHandle();
NSWindow* pluginWindow = [pluginView window];
[pluginWindow setExcludedFromWindowsMenu: YES];
[pluginWindow setCanHide: YES];

[hostWindow addChildWindow: pluginWindow
ordered: NSWindowAbove];
[hostWindow orderFront: nil];
[pluginWindow orderFront: nil];

#if ADD_CARBON_BODGE
// Adds a callback bodge to work around some problems with wrapped
// carbon windows..
const EventTypeSpec eventsToCatch[] = {
{ kEventClassWindow, kEventWindowShown },
{ kEventClassWindow, kEventWindowHidden }
};

InstallWindowEventHandler ((WindowRef) windowRef,
NewEventHandlerUPP (windowVisibilityBodge),
GetEventTypeCount (eventsToCatch), eventsToCatch,
(void*) hostWindow, 0);
#endif

return hostWindow;
}

void detachComponentFromWindowRef (Component* comp, void* nsWindow)
{
const ScopedAutoReleasePool pool;

NSWindow* hostWindow = (NSWindow*) nsWindow;
NSView* pluginView = (NSView*) comp->getWindowHandle();
NSWindow* pluginWindow = [pluginView window];

[hostWindow removeChildWindow: pluginWindow];
comp->removeFromDesktop();

[hostWindow release];
}

void setNativeHostWindowSize (void* nsWindow, Component* component, int newWidth, int newHeight)
{
NSWindow* hostWindow = (NSWindow*) nsWindow;
if (hostWindow != 0)
{
ScopedAutoReleasePool pool;

// Can't use the cocoa NSWindow resizing code, or it messes up in Live.
Rect r;
GetWindowBounds ((WindowRef) [hostWindow windowRef], kWindowContentRgn, &r);
r.right += newWidth - component->getWidth();
r.bottom += newHeight - component->getHeight();
SetWindowBounds ((WindowRef) [hostWindow windowRef], kWindowContentRgn, &r);

[[hostWindow contentView] setNeedsDisplay: YES];
}
}

void checkWindowVisibility (void* nsWindow, Component* comp)
{
NSWindow* hostWindow = (NSWindow*) nsWindow;
comp->setVisible ([hostWindow isVisible]);
}

END_JUCE_NAMESPACE

#endif

+ 0
- 4
extras/audio plugins/wrapper/formats/RTAS/DummyResourceFile.r View File

@@ -1,4 +0,0 @@

// This dummy file is added to the resources section of the project to
// force XCode to create some resources for the dpm. If there aren't any
// resources, PT would refuse to load the plugin..

+ 0
- 44
extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectGroup.cpp View File

@@ -1,44 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include "juce_Wrapper_Header.h"
/*
This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
Note about include paths
If you get an error including this file, check your paths - there's a full list of
Digidesign paths in juce_RTASWrapper.cpp
*/
#include "CEffectGroup.cpp"

+ 0
- 44
extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectGroupMIDI.cpp View File

@@ -1,44 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include "juce_Wrapper_Header.h"
/*
This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
Note about include paths
If you get an error including this file, check your paths - there's a full list of
Digidesign paths in juce_RTASWrapper.cpp
*/
#include "CEffectGroupMIDI.cpp"

+ 0
- 44
extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcessAS.cpp View File

@@ -1,44 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include "juce_Wrapper_Header.h"
/*
This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
Note about include paths
If you get an error including this file, check your paths - there's a full list of
Digidesign paths in juce_RTASWrapper.cpp
*/
#include "CEffectProcessAS.cpp"

+ 0
- 44
extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectType.cpp View File

@@ -1,44 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include "juce_Wrapper_Header.h"
/*
This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
Note about include paths
If you get an error including this file, check your paths - there's a full list of
Digidesign paths in juce_RTASWrapper.cpp
*/
#include "CEffectType.cpp"

+ 0
- 44
extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectTypeRTAS.cpp View File

@@ -1,44 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include "juce_Wrapper_Header.h"
/*
This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
Note about include paths
If you get an error including this file, check your paths - there's a full list of
Digidesign paths in juce_RTASWrapper.cpp
*/
#include "CEffectTypeRTAS.cpp"

+ 0
- 44
extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_ChunkDataParser.cpp View File

@@ -1,44 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include "juce_Wrapper_Header.h"
/*
This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
Note about include paths
If you get an error including this file, check your paths - there's a full list of
Digidesign paths in juce_RTASWrapper.cpp
*/
#include "ChunkDataParser.cpp"

+ 0
- 46
extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_DLLMain.cpp View File

@@ -1,46 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include "juce_Wrapper_Header.h"
/*
This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
Note about include paths
If you get an error including this file, check your paths - there's a full list of
Digidesign paths in juce_RTASWrapper.cpp
*/
#if WINDOWS_VERSION
#include "DLLMain.cpp"
#endif

+ 0
- 46
extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_DefaultSwap.cpp View File

@@ -1,46 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include "juce_Wrapper_Header.h"
/*
This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
Note about include paths
If you get an error including this file, check your paths - there's a full list of
Digidesign paths in juce_RTASWrapper.cpp
*/
#if WINDOWS_VERSION
#include "DefaultSwap.cpp"
#endif

+ 0
- 40
extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_Dispatcher.cpp View File

@@ -1,40 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
/* This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
*/
#include "juce_Wrapper_Header.h"
#if ! WINDOWS_VERSION
#include "Dispatcher.cpp"
#endif

+ 0
- 44
extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_PlugInUtils.cpp View File

@@ -1,44 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include "juce_Wrapper_Header.h"
/*
This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
Note about include paths
If you get an error including this file, check your paths - there's a full list of
Digidesign paths in juce_RTASWrapper.cpp
*/
#include "PlugInUtils.cpp"

+ 0
- 40
extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_PluginInitialize.cpp View File

@@ -1,40 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
/* This file is used to include and build a digidesign CPP file without your project needing to
reference the file directly. Because the file will be located via the include path, this means
that the project doesn't have to change to cope with people's SDKs being in different locations.
*/
#include "juce_Wrapper_Header.h"
#if ! WINDOWS_VERSION
#include "PlugInInitialize.cpp"
#endif

+ 0
- 12
extras/audio plugins/wrapper/formats/VST/MacExportedSymbols.txt View File

@@ -1,12 +0,0 @@
#
# This file contains a list of the symbols that your VST plugin needs to export.
#
# It's very important that you refer to this file in your linker settings, under
# the "Exported Symbols File" heading. If you don't specify that these are the
# only two symbols exported, the linker will also export all the Obj-C symbols in
# Juce, and this will create all sorts of dynamic link problems when you have
# more than one juce-linked module loaded at the same time.
#

_VSTPluginMain
_main_macho

+ 9
- 1
extras/audio plugins/wrapper/juce_IncludeCharacteristics.h View File

@@ -91,8 +91,16 @@
#error "You need to define the JucePlugin_EditorRequiresKeyboardFocus value in your JucePluginCharacteristics.h file!"
#endif
#if JUCE_USE_VSTSDK_2_4 != 0 && JUCE_USE_VSTSDK_2_4 != 1
#if ! (JucePlugin_Build_VST || JucePlugin_Build_AU || JucePlugin_Build_RTAS)
#error "You need to define at least one plugin format value in your JucePluginCharacteristics.h file!"
#endif
#if JucePlugin_Build_VST && (JUCE_USE_VSTSDK_2_4 != 0 && JUCE_USE_VSTSDK_2_4 != 1)
#error "You need to define the JUCE_USE_VSTSDK_2_4 value in your JucePluginCharacteristics.h file!"
#endif
#if JucePlugin_Build_RTAS && _MSC_VER && ! defined (JucePlugin_WinBag_path)
#error "You need to define the JucePlugin_WinBag_path value in your JucePluginCharacteristics.h file!"
#endif
#endif // __JUCE_INCLUDECHARACTERISTICS_JUCEHEADER__

extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_Header.h → extras/audio plugins/wrapper/juce_PluginHeaders.h View File

@@ -29,17 +29,5 @@
==============================================================================
*/
#ifndef __JUCE_WRAPPER_HEADER_JUCEHEADER__
#define __JUCE_WRAPPER_HEADER_JUCEHEADER__
#include "../juce_RTASCompileFlags.h"
#ifdef _MSC_VER
// the Digidesign projects all use a struct alignment of 2..
#pragma pack (2)
#pragma warning (disable: 4267 4996 4311 4312 4103)
#include "ForcedInclude.h"
#endif
#endif // __JUCE_WRAPPER_HEADER_JUCEHEADER__
#include "juce_IncludeCharacteristics.h"
#include "../../../juce_amalgamated.h"

Loading…
Cancel
Save