diff --git a/extras/audio plugins/How to use this framework.txt b/extras/audio plugins/How to use this framework.txt deleted file mode 100644 index 9cde1475a6..0000000000 --- a/extras/audio plugins/How to use this framework.txt +++ /dev/null @@ -1,272 +0,0 @@ - - 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. - diff --git a/extras/audio plugins/demo/build/AudioUnit/Info-JuceAU.plist b/extras/audio plugins/demo/build/AudioUnit/Info-JuceAU.plist deleted file mode 100644 index e26db49912..0000000000 --- a/extras/audio plugins/demo/build/AudioUnit/Info-JuceAU.plist +++ /dev/null @@ -1,28 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - - CFBundleGetInfoString - - CFBundleIconFile - - CFBundleIdentifier - com.rawmaterialsoftware.JuceAUDemo - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Juce Audio Unit Demo - CFBundlePackageType - BNDL - CFBundleShortVersionString - - CFBundleSignature - ???? - CFBundleVersion - 1.0.0 - - diff --git a/extras/audio plugins/demo/build/AudioUnit/JuceAU.exp b/extras/audio plugins/demo/build/AudioUnit/JuceAU.exp deleted file mode 100644 index 60e62a5185..0000000000 --- a/extras/audio plugins/demo/build/AudioUnit/JuceAU.exp +++ /dev/null @@ -1,9 +0,0 @@ -# -# This file must contain entries for the two AU entry points. -# -# Your JucePluginCharacteristics.h file must define the prefix used for these function names - for -# more info, see the comments in JucePluginCharacteristics.h -# - -_JuceDemoAUEntry -_JuceDemoAUViewEntry diff --git a/extras/audio plugins/demo/build/AudioUnit/JuceDemoAU.xcodeproj/project.pbxproj b/extras/audio plugins/demo/build/AudioUnit/JuceDemoAU.xcodeproj/project.pbxproj deleted file mode 100644 index 4e8417291e..0000000000 --- a/extras/audio plugins/demo/build/AudioUnit/JuceDemoAU.xcodeproj/project.pbxproj +++ /dev/null @@ -1,609 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 3E8BF105079CA60300021B09 /* AUBase.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D199ED03175E1E01CA2136 /* AUBase.h */; }; - 3E8BF106079CA60300021B09 /* AUDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D199EF03175E1E01CA2136 /* AUDispatch.h */; }; - 3E8BF107079CA60300021B09 /* AUInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D199F103175E1E01CA2136 /* AUInputElement.h */; }; - 3E8BF108079CA60300021B09 /* AUOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D199F303175E1E01CA2136 /* AUOutputElement.h */; }; - 3E8BF109079CA60300021B09 /* AUScopeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D199F603175E1E01CA2136 /* AUScopeElement.h */; }; - 3E8BF10A079CA60300021B09 /* ComponentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D199FA03175E1E01CA2136 /* ComponentBase.h */; }; - 3E8BF10B079CA60300021B09 /* AUEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D199FF03175E1E01CA2136 /* AUEffectBase.h */; }; - 3E8BF10C079CA60300021B09 /* AUBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D19A0F03175E1E01CA2136 /* AUBuffer.h */; }; - 3E8BF10D079CA60300021B09 /* CAStreamBasicDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D19A6903175E8C01CA2136 /* CAStreamBasicDescription.h */; }; - 3E8BF10E079CA60300021B09 /* CAAudioChannelLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 7967EF8C04D70E7C00C625F7 /* CAAudioChannelLayout.h */; }; - 3E8BF113079CA60300021B09 /* AUBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5D199EC03175E1E01CA2136 /* AUBase.cpp */; }; - 3E8BF114079CA60300021B09 /* AUDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5D199EE03175E1E01CA2136 /* AUDispatch.cpp */; }; - 3E8BF115079CA60300021B09 /* AUInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5D199F003175E1E01CA2136 /* AUInputElement.cpp */; }; - 3E8BF116079CA60300021B09 /* AUOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5D199F203175E1E01CA2136 /* AUOutputElement.cpp */; }; - 3E8BF117079CA60300021B09 /* AUScopeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5D199F503175E1E01CA2136 /* AUScopeElement.cpp */; }; - 3E8BF118079CA60300021B09 /* ComponentBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5D199F903175E1E01CA2136 /* ComponentBase.cpp */; }; - 3E8BF119079CA60300021B09 /* AUEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5D199FE03175E1E01CA2136 /* AUEffectBase.cpp */; }; - 3E8BF11A079CA60300021B09 /* AUBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5D19A0E03175E1E01CA2136 /* AUBuffer.cpp */; }; - 3E8BF11B079CA60300021B09 /* CAAudioChannelLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7967EF8B04D70E7C00C625F7 /* CAAudioChannelLayout.cpp */; }; - 3E8BF11C079CA60300021B09 /* CAStreamBasicDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7967EF8D04D70E7C00C625F7 /* CAStreamBasicDescription.cpp */; }; - 3E8BF11F079CA60300021B09 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5AA9A2F0281AAB901C34293 /* CoreFoundation.framework */; }; - 3E8BF120079CA60300021B09 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5AA9A300281AAB901C34293 /* CoreServices.framework */; }; - 3E8BF121079CA60300021B09 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5DA37E702821D04014500A0 /* Carbon.framework */; }; - 3E8BF122079CA60300021B09 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5D19ABE0317606901CA2136 /* AudioUnit.framework */; }; - 844C50290C71B6E300D0082E /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 844C50280C71B6E300D0082E /* IOKit.framework */; }; - 845FAE5F0A5C0A6A008C94D8 /* juce.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 845FAE5E0A5C0A6A008C94D8 /* juce.xcconfig */; }; - 845FAEE10A5C2696008C94D8 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 845FAEE00A5C2696008C94D8 /* QuickTime.framework */; }; - 84B4CDD10C7DD23B0083122F /* MusicDeviceBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B4CDCF0C7DD23B0083122F /* MusicDeviceBase.cpp */; }; - 84B4CDD20C7DD23B0083122F /* MusicDeviceBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B4CDD00C7DD23B0083122F /* MusicDeviceBase.h */; }; - 84BC4E5E0C8DDD3D00FA249B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84BC4E5D0C8DDD3C00FA249B /* OpenGL.framework */; }; - 84CFAEFB090964560053C22C /* AUCarbonViewDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5D19AAB03175F3201CA2136 /* AUCarbonViewDispatch.cpp */; }; - 84CFAEFC090964560053C22C /* AUCarbonViewControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5D19AA903175F3201CA2136 /* AUCarbonViewControl.cpp */; }; - 84CFAEFD090964560053C22C /* AUCarbonViewBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5D19AA703175F3201CA2136 /* AUCarbonViewBase.cpp */; }; - 84CFAF0E090965080053C22C /* CarbonEventHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5D19AB003175F3201CA2136 /* CarbonEventHandler.cpp */; }; - 84CFAF10090965080053C22C /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EF64FA42057BC39200D99563 /* CAAUParameter.cpp */; }; - 84CFAFEB0909666C0053C22C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E8BF154079CA7A800021B09 /* AudioToolbox.framework */; }; - 84CFB029090968590053C22C /* DemoJuceAudioUnit.component in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3E8BF126079CA60300021B09 /* DemoJuceAudioUnit.component */; }; - 84EB400B090A4A2C008FAC1B /* juce_AudioUnitWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84EB4009090A4A2C008FAC1B /* juce_AudioUnitWrapper.cpp */; }; - 84EB400C090A4A2C008FAC1B /* juce_AudioUnitWrapper.r in Rez */ = {isa = PBXBuildFile; fileRef = 84EB400A090A4A2C008FAC1B /* juce_AudioUnitWrapper.r */; }; - 84EB4042090A4F5A008FAC1B /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4E5DC280898301D00589A5A /* CAVectorUnit.cpp */; }; - 84EB404E090A5116008FAC1B /* JucePluginCharacteristics.h in Headers */ = {isa = PBXBuildFile; fileRef = 84EB404D090A5116008FAC1B /* JucePluginCharacteristics.h */; }; - 84F0521E090674BB00AEC8DB /* Info-JuceAU.plist in Resources */ = {isa = PBXBuildFile; fileRef = 84F05215090674BB00AEC8DB /* Info-JuceAU.plist */; }; - 84F0548F090687F600AEC8DB /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84F0548E090687F600AEC8DB /* CoreAudio.framework */; }; - 84F054E80906C8DD00AEC8DB /* AUMIDIBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84F054E40906C8DD00AEC8DB /* AUMIDIBase.cpp */; }; - 84F054E90906C8DD00AEC8DB /* AUMIDIBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F054E50906C8DD00AEC8DB /* AUMIDIBase.h */; }; - 84F054EA0906C8DD00AEC8DB /* AUMIDIEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84F054E60906C8DD00AEC8DB /* AUMIDIEffectBase.cpp */; }; - 84F054EB0906C8DD00AEC8DB /* AUMIDIEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F054E70906C8DD00AEC8DB /* AUMIDIEffectBase.h */; }; - 84F055010906E9EA00AEC8DB /* DemoEditorComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84F054FD0906E9EA00AEC8DB /* DemoEditorComponent.cpp */; }; - 84F055020906E9EA00AEC8DB /* DemoEditorComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F054FE0906E9EA00AEC8DB /* DemoEditorComponent.h */; }; - 84F055030906E9EA00AEC8DB /* DemoJuceFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84F054FF0906E9EA00AEC8DB /* DemoJuceFilter.cpp */; }; - 84F055040906E9EA00AEC8DB /* DemoJuceFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F055000906E9EA00AEC8DB /* DemoJuceFilter.h */; }; - 84F055260906FBCF00AEC8DB /* AUSilentTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F055250906FBCF00AEC8DB /* AUSilentTimeout.h */; }; - 84F87963093B1EDC00225D65 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84F87962093B1EDC00225D65 /* AGL.framework */; }; - 84FDAFE90C15B9E200CD0087 /* libjucedebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 84FDAFBD0C15B8F100CD0087 /* libjucedebug.a */; }; - A9E885EA0874B5BF00B2DFE8 /* CAThreadSafeList.h in Headers */ = {isa = PBXBuildFile; fileRef = A9E885E90874B5BF00B2DFE8 /* CAThreadSafeList.h */; }; - F4E5DC2C0898301D00589A5A /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = F4E5DC290898301D00589A5A /* CAVectorUnit.h */; }; - F4E5DC2D0898301D00589A5A /* CAVectorUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = F4E5DC2A0898301D00589A5A /* CAVectorUnitTypes.h */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 84FDAFBC0C15B8F100CD0087 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 84F0545A0906865D00AEC8DB /* Juce.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D2AAC046055464E500DB518D; - remoteInfo = Juce; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 84CFB0240909684B0053C22C /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 12; - dstPath = "$HOME/Library/Audio/Plug-Ins/Components"; - dstSubfolderSpec = 0; - files = ( - 84CFB029090968590053C22C /* DemoJuceAudioUnit.component in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 3E3AAA740670E29D00C484A8 /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = ""; }; - 3E8BF126079CA60300021B09 /* DemoJuceAudioUnit.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DemoJuceAudioUnit.component; sourceTree = BUILT_PRODUCTS_DIR; }; - 3E8BF154079CA7A800021B09 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; - 7967EF8B04D70E7C00C625F7 /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayout.cpp; sourceTree = ""; }; - 7967EF8C04D70E7C00C625F7 /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAAudioChannelLayout.h; sourceTree = ""; }; - 7967EF8D04D70E7C00C625F7 /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamBasicDescription.cpp; sourceTree = ""; }; - 844C50280C71B6E300D0082E /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = IOKit.framework; sourceTree = ""; }; - 845FAE5E0A5C0A6A008C94D8 /* juce.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; name = juce.xcconfig; path = ../../../../../build/macosx/juce.xcconfig; sourceTree = SOURCE_ROOT; }; - 845FAEE00A5C2696008C94D8 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = QuickTime.framework; sourceTree = ""; }; - 84B4CDCF0C7DD23B0083122F /* MusicDeviceBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = MusicDeviceBase.cpp; path = /Developer/Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/MusicDeviceBase.cpp; sourceTree = ""; }; - 84B4CDD00C7DD23B0083122F /* MusicDeviceBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MusicDeviceBase.h; path = /Developer/Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/MusicDeviceBase.h; sourceTree = ""; }; - 84BC4E5D0C8DDD3C00FA249B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; - 84EB4009090A4A2C008FAC1B /* juce_AudioUnitWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_AudioUnitWrapper.cpp; path = ../../../wrapper/formats/AudioUnit/juce_AudioUnitWrapper.cpp; sourceTree = SOURCE_ROOT; }; - 84EB400A090A4A2C008FAC1B /* juce_AudioUnitWrapper.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; name = juce_AudioUnitWrapper.r; path = ../../../wrapper/formats/AudioUnit/juce_AudioUnitWrapper.r; sourceTree = SOURCE_ROOT; }; - 84EB404D090A5116008FAC1B /* JucePluginCharacteristics.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JucePluginCharacteristics.h; path = ../../src/JucePluginCharacteristics.h; sourceTree = SOURCE_ROOT; }; - 84F05215090674BB00AEC8DB /* Info-JuceAU.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = "Info-JuceAU.plist"; sourceTree = ""; }; - 84F05217090674BB00AEC8DB /* JuceAU.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = JuceAU.exp; sourceTree = ""; }; - 84F0545A0906865D00AEC8DB /* Juce.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Juce.xcodeproj; path = ../../../../../build/macosx/Juce.xcodeproj; sourceTree = SOURCE_ROOT; }; - 84F0548E090687F600AEC8DB /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; - 84F054E40906C8DD00AEC8DB /* AUMIDIBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = AUMIDIBase.cpp; path = /Developer/Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/AUMIDIBase.cpp; sourceTree = ""; }; - 84F054E50906C8DD00AEC8DB /* AUMIDIBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AUMIDIBase.h; path = /Developer/Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/AUMIDIBase.h; sourceTree = ""; }; - 84F054E60906C8DD00AEC8DB /* AUMIDIEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = AUMIDIEffectBase.cpp; path = /Developer/Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/AUMIDIEffectBase.cpp; sourceTree = ""; }; - 84F054E70906C8DD00AEC8DB /* AUMIDIEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AUMIDIEffectBase.h; path = /Developer/Examples/CoreAudio/AudioUnits/AUPublic/OtherBases/AUMIDIEffectBase.h; sourceTree = ""; }; - 84F054FD0906E9EA00AEC8DB /* DemoEditorComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = DemoEditorComponent.cpp; path = ../../src/DemoEditorComponent.cpp; sourceTree = SOURCE_ROOT; }; - 84F054FE0906E9EA00AEC8DB /* DemoEditorComponent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DemoEditorComponent.h; path = ../../src/DemoEditorComponent.h; sourceTree = SOURCE_ROOT; }; - 84F054FF0906E9EA00AEC8DB /* DemoJuceFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = DemoJuceFilter.cpp; path = ../../src/DemoJuceFilter.cpp; sourceTree = SOURCE_ROOT; }; - 84F055000906E9EA00AEC8DB /* DemoJuceFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DemoJuceFilter.h; path = ../../src/DemoJuceFilter.h; sourceTree = SOURCE_ROOT; }; - 84F055250906FBCF00AEC8DB /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AUSilentTimeout.h; path = /Developer/Examples/CoreAudio/AudioUnits/AUPublic/Utility/AUSilentTimeout.h; sourceTree = ""; }; - 84F87962093B1EDC00225D65 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; - A3C2CC6105B4A4BE000F141E /* AUViewLocalizedStringKeys.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUViewLocalizedStringKeys.h; sourceTree = ""; }; - A9E885E90874B5BF00B2DFE8 /* CAThreadSafeList.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAThreadSafeList.h; sourceTree = ""; }; - EF64FA42057BC39200D99563 /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUParameter.cpp; sourceTree = ""; }; - EF64FA43057BC39200D99563 /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAAUParameter.h; sourceTree = ""; }; - F4E5DC280898301D00589A5A /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAVectorUnit.cpp; sourceTree = ""; }; - F4E5DC290898301D00589A5A /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAVectorUnit.h; sourceTree = ""; }; - F4E5DC2A0898301D00589A5A /* CAVectorUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAVectorUnitTypes.h; sourceTree = ""; }; - F5AA9A2F0281AAB901C34293 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = CoreFoundation.framework; sourceTree = ""; }; - F5AA9A300281AAB901C34293 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = CoreServices.framework; sourceTree = ""; }; - F5D199EC03175E1E01CA2136 /* AUBase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = ""; }; - F5D199ED03175E1E01CA2136 /* AUBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = ""; }; - F5D199EE03175E1E01CA2136 /* AUDispatch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = ""; }; - F5D199EF03175E1E01CA2136 /* AUDispatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = ""; }; - F5D199F003175E1E01CA2136 /* AUInputElement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = ""; }; - F5D199F103175E1E01CA2136 /* AUInputElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = ""; }; - F5D199F203175E1E01CA2136 /* AUOutputElement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = ""; }; - F5D199F303175E1E01CA2136 /* AUOutputElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = ""; }; - F5D199F503175E1E01CA2136 /* AUScopeElement.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = ""; }; - F5D199F603175E1E01CA2136 /* AUScopeElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = ""; }; - F5D199F903175E1E01CA2136 /* ComponentBase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = ""; }; - F5D199FA03175E1E01CA2136 /* ComponentBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = ""; }; - F5D199FE03175E1E01CA2136 /* AUEffectBase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = ""; }; - F5D199FF03175E1E01CA2136 /* AUEffectBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = ""; }; - F5D19A0E03175E1E01CA2136 /* AUBuffer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = ""; }; - F5D19A0F03175E1E01CA2136 /* AUBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = ""; }; - F5D19A6903175E8C01CA2136 /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CAStreamBasicDescription.h; sourceTree = ""; }; - F5D19AA703175F3201CA2136 /* AUCarbonViewBase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AUCarbonViewBase.cpp; sourceTree = ""; }; - F5D19AA803175F3201CA2136 /* AUCarbonViewBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AUCarbonViewBase.h; sourceTree = ""; }; - F5D19AA903175F3201CA2136 /* AUCarbonViewControl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AUCarbonViewControl.cpp; sourceTree = ""; }; - F5D19AAA03175F3201CA2136 /* AUCarbonViewControl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AUCarbonViewControl.h; sourceTree = ""; }; - F5D19AAB03175F3201CA2136 /* AUCarbonViewDispatch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AUCarbonViewDispatch.cpp; sourceTree = ""; }; - F5D19AB003175F3201CA2136 /* CarbonEventHandler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CarbonEventHandler.cpp; sourceTree = ""; }; - F5D19AB103175F3201CA2136 /* CarbonEventHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CarbonEventHandler.h; sourceTree = ""; }; - F5D19ABE0317606901CA2136 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AudioUnit.framework; sourceTree = ""; }; - F5DA37E702821D04014500A0 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Carbon.framework; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 3E8BF11E079CA60300021B09 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 84FDAFE90C15B9E200CD0087 /* libjucedebug.a in Frameworks */, - 84CFAFEB0909666C0053C22C /* AudioToolbox.framework in Frameworks */, - 3E8BF11F079CA60300021B09 /* CoreFoundation.framework in Frameworks */, - 3E8BF120079CA60300021B09 /* CoreServices.framework in Frameworks */, - 3E8BF121079CA60300021B09 /* Carbon.framework in Frameworks */, - 3E8BF122079CA60300021B09 /* AudioUnit.framework in Frameworks */, - 84F0548F090687F600AEC8DB /* CoreAudio.framework in Frameworks */, - 84F87963093B1EDC00225D65 /* AGL.framework in Frameworks */, - 845FAEE10A5C2696008C94D8 /* QuickTime.framework in Frameworks */, - 844C50290C71B6E300D0082E /* IOKit.framework in Frameworks */, - 84BC4E5E0C8DDD3D00FA249B /* OpenGL.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 84EB403B090A4ED3008FAC1B /* Juce AU Code */ = { - isa = PBXGroup; - children = ( - 84EB4009090A4A2C008FAC1B /* juce_AudioUnitWrapper.cpp */, - 84EB400A090A4A2C008FAC1B /* juce_AudioUnitWrapper.r */, - ); - name = "Juce AU Code"; - sourceTree = ""; - }; - 84F0516D09066DB800AEC8DB /* Plugin Code */ = { - isa = PBXGroup; - children = ( - 84F054FD0906E9EA00AEC8DB /* DemoEditorComponent.cpp */, - 84F054FE0906E9EA00AEC8DB /* DemoEditorComponent.h */, - 84F054FF0906E9EA00AEC8DB /* DemoJuceFilter.cpp */, - 84F055000906E9EA00AEC8DB /* DemoJuceFilter.h */, - 84EB404D090A5116008FAC1B /* JucePluginCharacteristics.h */, - 84F05215090674BB00AEC8DB /* Info-JuceAU.plist */, - 84F05217090674BB00AEC8DB /* JuceAU.exp */, - ); - name = "Plugin Code"; - sourceTree = ""; - }; - 84F0516E09066DC900AEC8DB /* Wrapper Code */ = { - isa = PBXGroup; - children = ( - 84EB403B090A4ED3008FAC1B /* Juce AU Code */, - F5AA99C50281A64501C34293 /* Apple AU Code */, - ); - name = "Wrapper Code"; - sourceTree = ""; - }; - 84FDAFB90C15B8F100CD0087 /* Products */ = { - isa = PBXGroup; - children = ( - 84FDAFBD0C15B8F100CD0087 /* libjucedebug.a */, - ); - name = Products; - sourceTree = ""; - }; - A3C2CC6005B4A4BE000F141E /* AUViewBase */ = { - isa = PBXGroup; - children = ( - A3C2CC6105B4A4BE000F141E /* AUViewLocalizedStringKeys.h */, - ); - path = AUViewBase; - sourceTree = ""; - }; - F5AA99B60281A61201C34293 = { - isa = PBXGroup; - children = ( - F5D199EA03175DB401CA2136 /* Source */, - 845FAE5E0A5C0A6A008C94D8 /* juce.xcconfig */, - F5AA99C40281A62C01C34293 /* Products */, - F5AA9E890281AAC901C34293 /* Frameworks */, - ); - sourceTree = ""; - }; - F5AA99C40281A62C01C34293 /* Products */ = { - isa = PBXGroup; - children = ( - 3E8BF126079CA60300021B09 /* DemoJuceAudioUnit.component */, - ); - name = Products; - sourceTree = ""; - }; - F5AA99C50281A64501C34293 /* Apple AU Code */ = { - isa = PBXGroup; - children = ( - F5D199EB03175E1E01CA2136 /* AUBase */, - A3C2CC6005B4A4BE000F141E /* AUViewBase */, - F5D19AA603175F3201CA2136 /* AUCarbonViewBase */, - F5D199FD03175E1E01CA2136 /* OtherBases */, - F5D19A0C03175E1E01CA2136 /* Utility */, - F5D19A3603175E8C01CA2136 /* PublicUtility */, - ); - name = "Apple AU Code"; - path = /Developer/Examples/CoreAudio/AudioUnits/AUPublic; - sourceTree = ""; - }; - F5AA9E890281AAC901C34293 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 84F0545A0906865D00AEC8DB /* Juce.xcodeproj */, - F5D19ABE0317606901CA2136 /* AudioUnit.framework */, - 3E8BF154079CA7A800021B09 /* AudioToolbox.framework */, - 84F0548E090687F600AEC8DB /* CoreAudio.framework */, - F5DA37E702821D04014500A0 /* Carbon.framework */, - F5AA9A2F0281AAB901C34293 /* CoreFoundation.framework */, - F5AA9A300281AAB901C34293 /* CoreServices.framework */, - 84F87962093B1EDC00225D65 /* AGL.framework */, - 84BC4E5D0C8DDD3C00FA249B /* OpenGL.framework */, - 844C50280C71B6E300D0082E /* IOKit.framework */, - 845FAEE00A5C2696008C94D8 /* QuickTime.framework */, - ); - name = Frameworks; - path = /System/Library/Frameworks; - sourceTree = ""; - }; - F5D199EA03175DB401CA2136 /* Source */ = { - isa = PBXGroup; - children = ( - 84F0516D09066DB800AEC8DB /* Plugin Code */, - 84F0516E09066DC900AEC8DB /* Wrapper Code */, - ); - name = Source; - sourceTree = ""; - }; - F5D199EB03175E1E01CA2136 /* AUBase */ = { - isa = PBXGroup; - children = ( - 3E3AAA740670E29D00C484A8 /* AUResources.r */, - F5D199EC03175E1E01CA2136 /* AUBase.cpp */, - F5D199ED03175E1E01CA2136 /* AUBase.h */, - F5D199EE03175E1E01CA2136 /* AUDispatch.cpp */, - F5D199EF03175E1E01CA2136 /* AUDispatch.h */, - F5D199F003175E1E01CA2136 /* AUInputElement.cpp */, - F5D199F103175E1E01CA2136 /* AUInputElement.h */, - F5D199F203175E1E01CA2136 /* AUOutputElement.cpp */, - F5D199F303175E1E01CA2136 /* AUOutputElement.h */, - F5D199F503175E1E01CA2136 /* AUScopeElement.cpp */, - F5D199F603175E1E01CA2136 /* AUScopeElement.h */, - F5D199F903175E1E01CA2136 /* ComponentBase.cpp */, - F5D199FA03175E1E01CA2136 /* ComponentBase.h */, - ); - path = AUBase; - sourceTree = ""; - }; - F5D199FD03175E1E01CA2136 /* OtherBases */ = { - isa = PBXGroup; - children = ( - 84F054E40906C8DD00AEC8DB /* AUMIDIBase.cpp */, - 84F054E50906C8DD00AEC8DB /* AUMIDIBase.h */, - 84F054E60906C8DD00AEC8DB /* AUMIDIEffectBase.cpp */, - 84F054E70906C8DD00AEC8DB /* AUMIDIEffectBase.h */, - F5D199FE03175E1E01CA2136 /* AUEffectBase.cpp */, - F5D199FF03175E1E01CA2136 /* AUEffectBase.h */, - 84B4CDCF0C7DD23B0083122F /* MusicDeviceBase.cpp */, - 84B4CDD00C7DD23B0083122F /* MusicDeviceBase.h */, - ); - path = OtherBases; - sourceTree = ""; - }; - F5D19A0C03175E1E01CA2136 /* Utility */ = { - isa = PBXGroup; - children = ( - F5D19A0E03175E1E01CA2136 /* AUBuffer.cpp */, - F5D19A0F03175E1E01CA2136 /* AUBuffer.h */, - 84F055250906FBCF00AEC8DB /* AUSilentTimeout.h */, - ); - path = Utility; - sourceTree = ""; - }; - F5D19A3603175E8C01CA2136 /* PublicUtility */ = { - isa = PBXGroup; - children = ( - F4E5DC280898301D00589A5A /* CAVectorUnit.cpp */, - F4E5DC290898301D00589A5A /* CAVectorUnit.h */, - F4E5DC2A0898301D00589A5A /* CAVectorUnitTypes.h */, - A9E885E90874B5BF00B2DFE8 /* CAThreadSafeList.h */, - 7967EF8C04D70E7C00C625F7 /* CAAudioChannelLayout.h */, - 7967EF8B04D70E7C00C625F7 /* CAAudioChannelLayout.cpp */, - F5D19A6903175E8C01CA2136 /* CAStreamBasicDescription.h */, - 7967EF8D04D70E7C00C625F7 /* CAStreamBasicDescription.cpp */, - EF64FA42057BC39200D99563 /* CAAUParameter.cpp */, - EF64FA43057BC39200D99563 /* CAAUParameter.h */, - ); - name = PublicUtility; - path = /Developer/Examples/CoreAudio/PublicUtility; - sourceTree = ""; - }; - F5D19AA603175F3201CA2136 /* AUCarbonViewBase */ = { - isa = PBXGroup; - children = ( - F5D19AA703175F3201CA2136 /* AUCarbonViewBase.cpp */, - F5D19AA803175F3201CA2136 /* AUCarbonViewBase.h */, - F5D19AA903175F3201CA2136 /* AUCarbonViewControl.cpp */, - F5D19AAA03175F3201CA2136 /* AUCarbonViewControl.h */, - F5D19AAB03175F3201CA2136 /* AUCarbonViewDispatch.cpp */, - F5D19AB003175F3201CA2136 /* CarbonEventHandler.cpp */, - F5D19AB103175F3201CA2136 /* CarbonEventHandler.h */, - ); - path = AUCarbonViewBase; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 3E8BF103079CA60300021B09 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 3E8BF105079CA60300021B09 /* AUBase.h in Headers */, - 3E8BF106079CA60300021B09 /* AUDispatch.h in Headers */, - 3E8BF107079CA60300021B09 /* AUInputElement.h in Headers */, - 3E8BF108079CA60300021B09 /* AUOutputElement.h in Headers */, - 3E8BF109079CA60300021B09 /* AUScopeElement.h in Headers */, - 3E8BF10A079CA60300021B09 /* ComponentBase.h in Headers */, - 3E8BF10B079CA60300021B09 /* AUEffectBase.h in Headers */, - 3E8BF10C079CA60300021B09 /* AUBuffer.h in Headers */, - 3E8BF10D079CA60300021B09 /* CAStreamBasicDescription.h in Headers */, - 3E8BF10E079CA60300021B09 /* CAAudioChannelLayout.h in Headers */, - A9E885EA0874B5BF00B2DFE8 /* CAThreadSafeList.h in Headers */, - F4E5DC2C0898301D00589A5A /* CAVectorUnit.h in Headers */, - F4E5DC2D0898301D00589A5A /* CAVectorUnitTypes.h in Headers */, - 84F054E90906C8DD00AEC8DB /* AUMIDIBase.h in Headers */, - 84F054EB0906C8DD00AEC8DB /* AUMIDIEffectBase.h in Headers */, - 84F055020906E9EA00AEC8DB /* DemoEditorComponent.h in Headers */, - 84F055040906E9EA00AEC8DB /* DemoJuceFilter.h in Headers */, - 84F055260906FBCF00AEC8DB /* AUSilentTimeout.h in Headers */, - 84EB404E090A5116008FAC1B /* JucePluginCharacteristics.h in Headers */, - 84B4CDD20C7DD23B0083122F /* MusicDeviceBase.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 3E8BF102079CA60300021B09 /* JuceAU */ = { - isa = PBXNativeTarget; - buildConfigurationList = A9E884AD0874ABE600B2DFE8 /* Build configuration list for PBXNativeTarget "JuceAU" */; - buildPhases = ( - 3E8BF103079CA60300021B09 /* Headers */, - 3E8BF110079CA60300021B09 /* Resources */, - 3E8BF111079CA60300021B09 /* Sources */, - 3E8BF11E079CA60300021B09 /* Frameworks */, - 3E8BF123079CA60300021B09 /* Rez */, - 84CFB0240909684B0053C22C /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = JuceAU; - productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; - productName = MultitapAU; - productReference = 3E8BF126079CA60300021B09 /* DemoJuceAudioUnit.component */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - F5AA99BA0281A61201C34293 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = A9E884B90874ABE600B2DFE8 /* Build configuration list for PBXProject "JuceDemoAU" */; - hasScannedForEncodings = 1; - mainGroup = F5AA99B60281A61201C34293; - productRefGroup = F5AA99C40281A62C01C34293 /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 84FDAFB90C15B8F100CD0087 /* Products */; - ProjectRef = 84F0545A0906865D00AEC8DB /* Juce.xcodeproj */; - }, - ); - targets = ( - 3E8BF102079CA60300021B09 /* JuceAU */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 84FDAFBD0C15B8F100CD0087 /* libjucedebug.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libjucedebug.a; - remoteRef = 84FDAFBC0C15B8F100CD0087 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 3E8BF110079CA60300021B09 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 84F0521E090674BB00AEC8DB /* Info-JuceAU.plist in Resources */, - 845FAE5F0A5C0A6A008C94D8 /* juce.xcconfig in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXRezBuildPhase section */ - 3E8BF123079CA60300021B09 /* Rez */ = { - isa = PBXRezBuildPhase; - buildActionMask = 2147483647; - files = ( - 84EB400C090A4A2C008FAC1B /* juce_AudioUnitWrapper.r in Rez */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXRezBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 3E8BF111079CA60300021B09 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 3E8BF115079CA60300021B09 /* AUInputElement.cpp in Sources */, - 3E8BF116079CA60300021B09 /* AUOutputElement.cpp in Sources */, - 3E8BF117079CA60300021B09 /* AUScopeElement.cpp in Sources */, - 3E8BF113079CA60300021B09 /* AUBase.cpp in Sources */, - 3E8BF119079CA60300021B09 /* AUEffectBase.cpp in Sources */, - 3E8BF114079CA60300021B09 /* AUDispatch.cpp in Sources */, - 3E8BF11C079CA60300021B09 /* CAStreamBasicDescription.cpp in Sources */, - 3E8BF11B079CA60300021B09 /* CAAudioChannelLayout.cpp in Sources */, - 84CFAF0E090965080053C22C /* CarbonEventHandler.cpp in Sources */, - 84CFAEFB090964560053C22C /* AUCarbonViewDispatch.cpp in Sources */, - 84CFAEFC090964560053C22C /* AUCarbonViewControl.cpp in Sources */, - 84CFAEFD090964560053C22C /* AUCarbonViewBase.cpp in Sources */, - 3E8BF118079CA60300021B09 /* ComponentBase.cpp in Sources */, - 84CFAF10090965080053C22C /* CAAUParameter.cpp in Sources */, - 3E8BF11A079CA60300021B09 /* AUBuffer.cpp in Sources */, - 84F054E80906C8DD00AEC8DB /* AUMIDIBase.cpp in Sources */, - 84F054EA0906C8DD00AEC8DB /* AUMIDIEffectBase.cpp in Sources */, - 84F055010906E9EA00AEC8DB /* DemoEditorComponent.cpp in Sources */, - 84F055030906E9EA00AEC8DB /* DemoJuceFilter.cpp in Sources */, - 84EB400B090A4A2C008FAC1B /* juce_AudioUnitWrapper.cpp in Sources */, - 84EB4042090A4F5A008FAC1B /* CAVectorUnit.cpp in Sources */, - 84B4CDD10C7DD23B0083122F /* MusicDeviceBase.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - A9E884AE0874ABE600B2DFE8 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - EXPORTED_SYMBOLS_FILE = JuceAU.exp; - FRAMEWORK_SEARCH_PATHS = ""; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - GCC_USE_GCC3_PFE_SUPPORT = YES; - INFOPLIST_FILE = "Info-JuceAU.plist"; - INSTALL_PATH = "/Library/Audio/Plug-Ins/Components/"; - OTHER_REZFLAGS = "-d ppc_$ppc -d i386_$i386 -I / -I /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers"; - PRODUCT_NAME = "$(AU_NAME)"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - "-Wno-non-virtual-dtor", - ); - WRAPPER_EXTENSION = component; - ZERO_LINK = NO; - }; - name = Debug; - }; - A9E884AF0874ABE600B2DFE8 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - EXPORTED_SYMBOLS_FILE = JuceAU.exp; - FRAMEWORK_SEARCH_PATHS = ""; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_OPTIMIZATION_LEVEL = 3; - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - GCC_USE_GCC3_PFE_SUPPORT = YES; - INFOPLIST_FILE = "Info-JuceAU.plist"; - INSTALL_PATH = "/Library/Audio/Plug-Ins/Components/"; - OTHER_REZFLAGS = "-d ppc_$ppc -d i386_$i386 -I / -I /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers"; - PRODUCT_NAME = "$(AU_NAME)"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - "-Wno-non-virtual-dtor", - ); - WRAPPER_EXTENSION = component; - ZERO_LINK = NO; - }; - name = Release; - }; - A9E884BA0874ABE600B2DFE8 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 845FAE5E0A5C0A6A008C94D8 /* juce.xcconfig */; - buildSettings = { - AU_NAME = DemoJuceAudioUnit; - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - HEADER_SEARCH_PATHS = ../../../../../; - LIBRARY_SEARCH_PATHS = ../../../../../bin; - }; - name = Debug; - }; - A9E884BB0874ABE600B2DFE8 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 845FAE5E0A5C0A6A008C94D8 /* juce.xcconfig */; - buildSettings = { - AU_NAME = DemoJuceAudioUnit; - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - HEADER_SEARCH_PATHS = ../../../../../; - LIBRARY_SEARCH_PATHS = ../../../../../bin; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - A9E884AD0874ABE600B2DFE8 /* Build configuration list for PBXNativeTarget "JuceAU" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A9E884AE0874ABE600B2DFE8 /* Debug */, - A9E884AF0874ABE600B2DFE8 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - A9E884B90874ABE600B2DFE8 /* Build configuration list for PBXProject "JuceDemoAU" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A9E884BA0874ABE600B2DFE8 /* Debug */, - A9E884BB0874ABE600B2DFE8 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; -/* End XCConfigurationList section */ - }; - rootObject = F5AA99BA0281A61201C34293 /* Project object */; -} diff --git a/extras/audio plugins/demo/build/RTAS_Mac/Info.plist b/extras/audio plugins/demo/build/RTAS_Mac/Info.plist deleted file mode 100644 index fc2ac8d798..0000000000 --- a/extras/audio plugins/demo/build/RTAS_Mac/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - EXECUTABLE_NAME - CFBundleGetInfoString - VERSION_STR - CFBundleIdentifier - com.rawmaterialsoftware.JuceDemo - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - PRODUCT_NAME - CFBundlePackageType - TDMw - CFBundleShortVersionString - VERSION_STR - CFBundleSignature - PTul - CFBundleVersion - VERSION_NUM - LSMultipleInstancesProhibited - true - LSPrefersCarbon - - NSAppleScriptEnabled - No - - diff --git a/extras/audio plugins/demo/build/RTAS_Mac/juce_RTASDemo.xcodeproj/project.pbxproj b/extras/audio plugins/demo/build/RTAS_Mac/juce_RTASDemo.xcodeproj/project.pbxproj deleted file mode 100644 index 4c1e0ddb1b..0000000000 --- a/extras/audio plugins/demo/build/RTAS_Mac/juce_RTASDemo.xcodeproj/project.pbxproj +++ /dev/null @@ -1,394 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 5B521CB1088F264F009C75FE /* System.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B521CB0088F264F009C75FE /* System.framework */; }; - 841E07300AF9F015005E6FCC /* DemoEditorComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 841E072B0AF9F015005E6FCC /* DemoEditorComponent.cpp */; }; - 841E07310AF9F015005E6FCC /* DemoJuceFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 841E072D0AF9F015005E6FCC /* DemoJuceFilter.cpp */; }; - 841E073D0AF9F099005E6FCC /* juce_RTASUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 841E073B0AF9F099005E6FCC /* juce_RTASUtilities.cpp */; }; - 841E073E0AF9F099005E6FCC /* juce_RTASWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 841E073C0AF9F099005E6FCC /* juce_RTASWrapper.cpp */; }; - 846444EF0AFA005B00E7B2BE /* juce_Wrapper_CEffectGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 846444E20AFA005B00E7B2BE /* juce_Wrapper_CEffectGroup.cpp */; }; - 846444F00AFA005B00E7B2BE /* juce_Wrapper_CEffectGroupMIDI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 846444E30AFA005B00E7B2BE /* juce_Wrapper_CEffectGroupMIDI.cpp */; }; - 846444F10AFA005B00E7B2BE /* juce_Wrapper_CEffectMIDIUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 846444E40AFA005B00E7B2BE /* juce_Wrapper_CEffectMIDIUtils.cpp */; }; - 846444F20AFA005B00E7B2BE /* juce_Wrapper_CEffectProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 846444E50AFA005B00E7B2BE /* juce_Wrapper_CEffectProcess.cpp */; }; - 846444F30AFA005B00E7B2BE /* juce_Wrapper_CEffectProcessAS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 846444E60AFA005B00E7B2BE /* juce_Wrapper_CEffectProcessAS.cpp */; }; - 846444F40AFA005B00E7B2BE /* juce_Wrapper_CEffectProcessMIDI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 846444E70AFA005B00E7B2BE /* juce_Wrapper_CEffectProcessMIDI.cpp */; }; - 846444F50AFA005B00E7B2BE /* juce_Wrapper_CEffectType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 846444E80AFA005B00E7B2BE /* juce_Wrapper_CEffectType.cpp */; }; - 846444F60AFA005B00E7B2BE /* juce_Wrapper_CEffectTypeRTAS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 846444E90AFA005B00E7B2BE /* juce_Wrapper_CEffectTypeRTAS.cpp */; }; - 846444F70AFA005B00E7B2BE /* juce_Wrapper_ChunkDataParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 846444EA0AFA005B00E7B2BE /* juce_Wrapper_ChunkDataParser.cpp */; }; - 846444FA0AFA005B00E7B2BE /* juce_Wrapper_PlugInUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 846444EE0AFA005B00E7B2BE /* juce_Wrapper_PlugInUtils.cpp */; }; - 846445060AFA010800E7B2BE /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 846445040AFA010800E7B2BE /* AGL.framework */; }; - 846445070AFA010800E7B2BE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 846445050AFA010800E7B2BE /* CoreAudio.framework */; }; - 8464450A0AFA012100E7B2BE /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 846445090AFA012100E7B2BE /* QuickTime.framework */; }; - 84BC4E9C0C8DDF6400FA249B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84BC4E9B0C8DDF6400FA249B /* OpenGL.framework */; }; - 84C9D7FB0AFA3C9C00F1348E /* juce_Wrapper_Dispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84C9D7F90AFA3C9C00F1348E /* juce_Wrapper_Dispatcher.cpp */; }; - 84C9D7FC0AFA3C9C00F1348E /* juce_Wrapper_PluginInitialize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84C9D7FA0AFA3C9C00F1348E /* juce_Wrapper_PluginInitialize.cpp */; }; - 84EEB4180AFB6679009655FF /* DummyResourceFile.r in Rez */ = {isa = PBXBuildFile; fileRef = 84EEB4170AFB6679009655FF /* DummyResourceFile.r */; }; - 84FAD76D0C7C894B00AF3028 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84FAD76C0C7C894B00AF3028 /* IOKit.framework */; }; - 84FAD77B0C7C89E100AF3028 /* libPluginLibrary.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 84FAD7770C7C897000AF3028 /* libPluginLibrary.a */; }; - 84FDB0120C15BBCE00CD0087 /* libjucedebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 84FDB0100C15BBA500CD0087 /* libjucedebug.a */; }; - 8D01CCCE0486CAD60068D4B7 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 84FAD7760C7C897000AF3028 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 5B521CEB08916D36009C75FE /* PluginLibrary.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = B65B09B30860FB0800FE2E6A; - remoteInfo = "Plugin Library"; - }; - 84FDB00F0C15BBA500CD0087 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 846444D70AF9FFDB00E7B2BE /* Juce.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D2AAC046055464E500DB518D; - remoteInfo = Juce; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; - 5B521CB0088F264F009C75FE /* System.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = System.framework; path = /System/Library/Frameworks/System.framework; sourceTree = ""; }; - 5B521CEB08916D36009C75FE /* 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 = ""; }; - 841E072B0AF9F015005E6FCC /* DemoEditorComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = DemoEditorComponent.cpp; path = ../../src/DemoEditorComponent.cpp; sourceTree = SOURCE_ROOT; }; - 841E072C0AF9F015005E6FCC /* DemoEditorComponent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DemoEditorComponent.h; path = ../../src/DemoEditorComponent.h; sourceTree = SOURCE_ROOT; }; - 841E072D0AF9F015005E6FCC /* DemoJuceFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = DemoJuceFilter.cpp; path = ../../src/DemoJuceFilter.cpp; sourceTree = SOURCE_ROOT; }; - 841E072E0AF9F015005E6FCC /* DemoJuceFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DemoJuceFilter.h; path = ../../src/DemoJuceFilter.h; sourceTree = SOURCE_ROOT; }; - 841E072F0AF9F015005E6FCC /* JucePluginCharacteristics.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JucePluginCharacteristics.h; path = ../../src/JucePluginCharacteristics.h; sourceTree = SOURCE_ROOT; }; - 841E073B0AF9F099005E6FCC /* juce_RTASUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RTASUtilities.cpp; path = ../../../wrapper/formats/RTAS/juce_RTASUtilities.cpp; sourceTree = SOURCE_ROOT; }; - 841E073C0AF9F099005E6FCC /* juce_RTASWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RTASWrapper.cpp; path = ../../../wrapper/formats/RTAS/juce_RTASWrapper.cpp; sourceTree = SOURCE_ROOT; }; - 841E07420AF9F126005E6FCC /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = Info.plist; sourceTree = ""; }; - 846444D70AF9FFDB00E7B2BE /* Juce.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Juce.xcodeproj; path = ../../../../../build/macosx/Juce.xcodeproj; sourceTree = SOURCE_ROOT; }; - 846444E20AFA005B00E7B2BE /* juce_Wrapper_CEffectGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Wrapper_CEffectGroup.cpp; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectGroup.cpp; sourceTree = SOURCE_ROOT; }; - 846444E30AFA005B00E7B2BE /* juce_Wrapper_CEffectGroupMIDI.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Wrapper_CEffectGroupMIDI.cpp; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectGroupMIDI.cpp; sourceTree = SOURCE_ROOT; }; - 846444E40AFA005B00E7B2BE /* juce_Wrapper_CEffectMIDIUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Wrapper_CEffectMIDIUtils.cpp; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectMIDIUtils.cpp; sourceTree = SOURCE_ROOT; }; - 846444E50AFA005B00E7B2BE /* juce_Wrapper_CEffectProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Wrapper_CEffectProcess.cpp; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcess.cpp; sourceTree = SOURCE_ROOT; }; - 846444E60AFA005B00E7B2BE /* juce_Wrapper_CEffectProcessAS.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Wrapper_CEffectProcessAS.cpp; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcessAS.cpp; sourceTree = SOURCE_ROOT; }; - 846444E70AFA005B00E7B2BE /* juce_Wrapper_CEffectProcessMIDI.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Wrapper_CEffectProcessMIDI.cpp; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcessMIDI.cpp; sourceTree = SOURCE_ROOT; }; - 846444E80AFA005B00E7B2BE /* juce_Wrapper_CEffectType.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Wrapper_CEffectType.cpp; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectType.cpp; sourceTree = SOURCE_ROOT; }; - 846444E90AFA005B00E7B2BE /* juce_Wrapper_CEffectTypeRTAS.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Wrapper_CEffectTypeRTAS.cpp; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectTypeRTAS.cpp; sourceTree = SOURCE_ROOT; }; - 846444EA0AFA005B00E7B2BE /* juce_Wrapper_ChunkDataParser.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Wrapper_ChunkDataParser.cpp; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_ChunkDataParser.cpp; sourceTree = SOURCE_ROOT; }; - 846444ED0AFA005B00E7B2BE /* juce_Wrapper_Header.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = juce_Wrapper_Header.h; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_Header.h; sourceTree = SOURCE_ROOT; }; - 846444EE0AFA005B00E7B2BE /* juce_Wrapper_PlugInUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Wrapper_PlugInUtils.cpp; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_PlugInUtils.cpp; sourceTree = SOURCE_ROOT; }; - 846445040AFA010800E7B2BE /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; - 846445050AFA010800E7B2BE /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; - 846445090AFA012100E7B2BE /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; - 84BC4E9B0C8DDF6400FA249B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; - 84C442690B306D39003FCBFF /* CommonReleaseSettings.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; name = CommonReleaseSettings.xcconfig; path = /Users/jules/stuff/PT_73_SDK/AlturaPorts/TDMPlugIns/common/Mac/CommonReleaseSettings.xcconfig; sourceTree = ""; }; - 84C4426A0B306D39003FCBFF /* CommonDebugSettings.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; name = CommonDebugSettings.xcconfig; path = /Users/jules/stuff/PT_73_SDK/AlturaPorts/TDMPlugIns/common/Mac/CommonDebugSettings.xcconfig; sourceTree = ""; }; - 84C9D7F90AFA3C9C00F1348E /* juce_Wrapper_Dispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Wrapper_Dispatcher.cpp; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_Dispatcher.cpp; sourceTree = SOURCE_ROOT; }; - 84C9D7FA0AFA3C9C00F1348E /* juce_Wrapper_PluginInitialize.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Wrapper_PluginInitialize.cpp; path = ../../../wrapper/formats/RTAS/wrappers/juce_Wrapper_PluginInitialize.cpp; sourceTree = SOURCE_ROOT; }; - 84EEB4170AFB6679009655FF /* DummyResourceFile.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; name = DummyResourceFile.r; path = ../../../wrapper/formats/RTAS/DummyResourceFile.r; sourceTree = SOURCE_ROOT; }; - 84F5CF5F0B1B705E00A2E279 /* juce_RTASCompileFlags.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = juce_RTASCompileFlags.h; path = ../../../wrapper/formats/RTAS/juce_RTASCompileFlags.h; sourceTree = SOURCE_ROOT; }; - 84FAD76C0C7C894B00AF3028 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; - 8D01CCD20486CAD60068D4B7 /* JuceRTASDemo.dpm */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = JuceRTASDemo.dpm; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D01CCCD0486CAD60068D4B7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 84FAD77B0C7C89E100AF3028 /* libPluginLibrary.a in Frameworks */, - 84FDB0120C15BBCE00CD0087 /* libjucedebug.a in Frameworks */, - 8D01CCCE0486CAD60068D4B7 /* Carbon.framework in Frameworks */, - 5B521CB1088F264F009C75FE /* System.framework in Frameworks */, - 846445060AFA010800E7B2BE /* AGL.framework in Frameworks */, - 846445070AFA010800E7B2BE /* CoreAudio.framework in Frameworks */, - 8464450A0AFA012100E7B2BE /* QuickTime.framework in Frameworks */, - 84FAD76D0C7C894B00AF3028 /* IOKit.framework in Frameworks */, - 84BC4E9C0C8DDF6400FA249B /* OpenGL.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 089C166AFE841209C02AAC07 /* ProjectTemplate */ = { - isa = PBXGroup; - children = ( - 84C442690B306D39003FCBFF /* CommonReleaseSettings.xcconfig */, - 84C4426A0B306D39003FCBFF /* CommonDebugSettings.xcconfig */, - 08FB77ADFE841716C02AAC07 /* Source */, - 089C167CFE841241C02AAC07 /* Resources */, - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, - 19C28FB4FE9D528D11CA2CBB /* Products */, - ); - name = ProjectTemplate; - sourceTree = ""; - }; - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - 84BC4E9B0C8DDF6400FA249B /* OpenGL.framework */, - 84FAD76C0C7C894B00AF3028 /* IOKit.framework */, - 846445040AFA010800E7B2BE /* AGL.framework */, - 846445050AFA010800E7B2BE /* CoreAudio.framework */, - 846445090AFA012100E7B2BE /* QuickTime.framework */, - 846444D70AF9FFDB00E7B2BE /* Juce.xcodeproj */, - 5B521CEB08916D36009C75FE /* PluginLibrary.xcodeproj */, - 5B521CB0088F264F009C75FE /* System.framework */, - 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 089C167CFE841241C02AAC07 /* Resources */ = { - isa = PBXGroup; - children = ( - 84EEB4170AFB6679009655FF /* DummyResourceFile.r */, - 841E07420AF9F126005E6FCC /* Info.plist */, - ); - name = Resources; - sourceTree = ""; - }; - 08FB77ADFE841716C02AAC07 /* Source */ = { - isa = PBXGroup; - children = ( - 841E07270AF9EFE2005E6FCC /* filter */, - 841E072A0AF9EFEF005E6FCC /* wrapper */, - ); - name = Source; - sourceTree = ""; - }; - 19C28FB4FE9D528D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8D01CCD20486CAD60068D4B7 /* JuceRTASDemo.dpm */, - ); - name = Products; - sourceTree = ""; - }; - 841E07270AF9EFE2005E6FCC /* filter */ = { - isa = PBXGroup; - children = ( - 841E072B0AF9F015005E6FCC /* DemoEditorComponent.cpp */, - 841E072C0AF9F015005E6FCC /* DemoEditorComponent.h */, - 841E072D0AF9F015005E6FCC /* DemoJuceFilter.cpp */, - 841E072E0AF9F015005E6FCC /* DemoJuceFilter.h */, - 841E072F0AF9F015005E6FCC /* JucePluginCharacteristics.h */, - ); - name = filter; - sourceTree = ""; - }; - 841E072A0AF9EFEF005E6FCC /* wrapper */ = { - isa = PBXGroup; - children = ( - 841E07340AF9F02D005E6FCC /* rtas specific */, - ); - name = wrapper; - sourceTree = ""; - }; - 841E07340AF9F02D005E6FCC /* rtas specific */ = { - isa = PBXGroup; - children = ( - 846444E10AFA003B00E7B2BE /* Digi code wrappers */, - 841E073B0AF9F099005E6FCC /* juce_RTASUtilities.cpp */, - 841E073C0AF9F099005E6FCC /* juce_RTASWrapper.cpp */, - 84F5CF5F0B1B705E00A2E279 /* juce_RTASCompileFlags.h */, - ); - name = "rtas specific"; - sourceTree = ""; - }; - 846444E10AFA003B00E7B2BE /* Digi code wrappers */ = { - isa = PBXGroup; - children = ( - 84C9D7F90AFA3C9C00F1348E /* juce_Wrapper_Dispatcher.cpp */, - 84C9D7FA0AFA3C9C00F1348E /* juce_Wrapper_PluginInitialize.cpp */, - 846444E20AFA005B00E7B2BE /* juce_Wrapper_CEffectGroup.cpp */, - 846444E30AFA005B00E7B2BE /* juce_Wrapper_CEffectGroupMIDI.cpp */, - 846444E40AFA005B00E7B2BE /* juce_Wrapper_CEffectMIDIUtils.cpp */, - 846444E50AFA005B00E7B2BE /* juce_Wrapper_CEffectProcess.cpp */, - 846444E60AFA005B00E7B2BE /* juce_Wrapper_CEffectProcessAS.cpp */, - 846444E70AFA005B00E7B2BE /* juce_Wrapper_CEffectProcessMIDI.cpp */, - 846444E80AFA005B00E7B2BE /* juce_Wrapper_CEffectType.cpp */, - 846444E90AFA005B00E7B2BE /* juce_Wrapper_CEffectTypeRTAS.cpp */, - 846444EA0AFA005B00E7B2BE /* juce_Wrapper_ChunkDataParser.cpp */, - 846444ED0AFA005B00E7B2BE /* juce_Wrapper_Header.h */, - 846444EE0AFA005B00E7B2BE /* juce_Wrapper_PlugInUtils.cpp */, - ); - name = "Digi code wrappers"; - sourceTree = ""; - }; - 84FAD7730C7C897000AF3028 /* Products */ = { - isa = PBXGroup; - children = ( - 84FAD7770C7C897000AF3028 /* libPluginLibrary.a */, - ); - name = Products; - sourceTree = ""; - }; - 84FDB00C0C15BBA500CD0087 /* Products */ = { - isa = PBXGroup; - children = ( - 84FDB0100C15BBA500CD0087 /* libjucedebug.a */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D01CCC60486CAD60068D4B7 /* JuceRTASDemo */ = { - isa = PBXNativeTarget; - buildConfigurationList = 5B521C99088F2389009C75FE /* Build configuration list for PBXNativeTarget "JuceRTASDemo" */; - buildPhases = ( - 8D01CCCB0486CAD60068D4B7 /* Sources */, - 8D01CCCD0486CAD60068D4B7 /* Frameworks */, - 5B521D370891748B009C75FE /* Rez */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = JuceRTASDemo; - productInstallPath = "$(HOME)/Library/Bundles"; - productName = ProjectTemplate; - productReference = 8D01CCD20486CAD60068D4B7 /* JuceRTASDemo.dpm */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 089C1669FE841209C02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 5B521C9D088F2389009C75FE /* Build configuration list for PBXProject "juce_RTASDemo" */; - hasScannedForEncodings = 1; - mainGroup = 089C166AFE841209C02AAC07 /* ProjectTemplate */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 84FDB00C0C15BBA500CD0087 /* Products */; - ProjectRef = 846444D70AF9FFDB00E7B2BE /* Juce.xcodeproj */; - }, - { - ProductGroup = 84FAD7730C7C897000AF3028 /* Products */; - ProjectRef = 5B521CEB08916D36009C75FE /* PluginLibrary.xcodeproj */; - }, - ); - targets = ( - 8D01CCC60486CAD60068D4B7 /* JuceRTASDemo */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 84FAD7770C7C897000AF3028 /* libPluginLibrary.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libPluginLibrary.a; - remoteRef = 84FAD7760C7C897000AF3028 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 84FDB0100C15BBA500CD0087 /* libjucedebug.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libjucedebug.a; - remoteRef = 84FDB00F0C15BBA500CD0087 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXRezBuildPhase section */ - 5B521D370891748B009C75FE /* Rez */ = { - isa = PBXRezBuildPhase; - buildActionMask = 2147483647; - files = ( - 84EEB4180AFB6679009655FF /* DummyResourceFile.r in Rez */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXRezBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D01CCCB0486CAD60068D4B7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 841E07300AF9F015005E6FCC /* DemoEditorComponent.cpp in Sources */, - 841E07310AF9F015005E6FCC /* DemoJuceFilter.cpp in Sources */, - 841E073D0AF9F099005E6FCC /* juce_RTASUtilities.cpp in Sources */, - 841E073E0AF9F099005E6FCC /* juce_RTASWrapper.cpp in Sources */, - 846444EF0AFA005B00E7B2BE /* juce_Wrapper_CEffectGroup.cpp in Sources */, - 846444F00AFA005B00E7B2BE /* juce_Wrapper_CEffectGroupMIDI.cpp in Sources */, - 846444F10AFA005B00E7B2BE /* juce_Wrapper_CEffectMIDIUtils.cpp in Sources */, - 846444F20AFA005B00E7B2BE /* juce_Wrapper_CEffectProcess.cpp in Sources */, - 846444F30AFA005B00E7B2BE /* juce_Wrapper_CEffectProcessAS.cpp in Sources */, - 846444F40AFA005B00E7B2BE /* juce_Wrapper_CEffectProcessMIDI.cpp in Sources */, - 846444F50AFA005B00E7B2BE /* juce_Wrapper_CEffectType.cpp in Sources */, - 846444F60AFA005B00E7B2BE /* juce_Wrapper_CEffectTypeRTAS.cpp in Sources */, - 846444F70AFA005B00E7B2BE /* juce_Wrapper_ChunkDataParser.cpp in Sources */, - 846444FA0AFA005B00E7B2BE /* juce_Wrapper_PlugInUtils.cpp in Sources */, - 84C9D7FB0AFA3C9C00F1348E /* juce_Wrapper_Dispatcher.cpp in Sources */, - 84C9D7FC0AFA3C9C00F1348E /* juce_Wrapper_PluginInitialize.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 5B521C9A088F2389009C75FE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Debug; - }; - 5B521C9E088F2389009C75FE /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 84C4426A0B306D39003FCBFF /* CommonDebugSettings.xcconfig */; - buildSettings = { - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - MacBag = /Users/jules/stuff/PT_73_SDK/MacBag; - PRODUCT_NAME = JuceRTASDemo; - USER_HEADER_SEARCH_PATHS = "/Users/jules/code/juce $(inherited)"; - }; - name = Debug; - }; - 5BEA73AA09E4370600964A97 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Release; - }; - 5BEA73AB09E4370600964A97 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 84C442690B306D39003FCBFF /* CommonReleaseSettings.xcconfig */; - buildSettings = { - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - MacBag = /Users/jules/stuff/PT_73_SDK/MacBag; - PRODUCT_NAME = JuceRTASDemo; - USER_HEADER_SEARCH_PATHS = "/Users/jules/code/juce $(inherited)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 5B521C99088F2389009C75FE /* Build configuration list for PBXNativeTarget "JuceRTASDemo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5B521C9A088F2389009C75FE /* Debug */, - 5BEA73AA09E4370600964A97 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - 5B521C9D088F2389009C75FE /* Build configuration list for PBXProject "juce_RTASDemo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5B521C9E088F2389009C75FE /* Debug */, - 5BEA73AB09E4370600964A97 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; -/* End XCConfigurationList section */ - }; - rootObject = 089C1669FE841209C02AAC07 /* Project object */; -} diff --git a/extras/audio plugins/demo/build/RTAS_Win32/juce_RTAS.sln b/extras/audio plugins/demo/build/RTAS_Win32/juce_RTAS.sln deleted file mode 100644 index 3c50d69e64..0000000000 --- a/extras/audio plugins/demo/build/RTAS_Win32/juce_RTAS.sln +++ /dev/null @@ -1,49 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "juce_RTAS", "juce_RTAS.vcproj", "{2EB09DDD-CF48-45ED-9698-6C5ADF123C98}" - ProjectSection(ProjectDependencies) = postProject - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26} = {AE232C11-D91C-4CA1-B24E-8B11A52EFF26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JUCE", "..\..\..\..\..\build\win32\vc8\JUCE.vcproj", "{AE232C11-D91C-4CA1-B24E-8B11A52EFF26}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug DLL|Win32 = Debug DLL|Win32 - Debug|Win32 = Debug|Win32 - DLL Debug|Win32 = DLL Debug|Win32 - DLL Release|Win32 = DLL Release|Win32 - Release DLL|Win32 = Release DLL|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2EB09DDD-CF48-45ED-9698-6C5ADF123C98}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {2EB09DDD-CF48-45ED-9698-6C5ADF123C98}.Debug DLL|Win32.Build.0 = Debug|Win32 - {2EB09DDD-CF48-45ED-9698-6C5ADF123C98}.Debug|Win32.ActiveCfg = Debug|Win32 - {2EB09DDD-CF48-45ED-9698-6C5ADF123C98}.Debug|Win32.Build.0 = Debug|Win32 - {2EB09DDD-CF48-45ED-9698-6C5ADF123C98}.DLL Debug|Win32.ActiveCfg = Debug|Win32 - {2EB09DDD-CF48-45ED-9698-6C5ADF123C98}.DLL Debug|Win32.Build.0 = Debug|Win32 - {2EB09DDD-CF48-45ED-9698-6C5ADF123C98}.DLL Release|Win32.ActiveCfg = Release|Win32 - {2EB09DDD-CF48-45ED-9698-6C5ADF123C98}.DLL Release|Win32.Build.0 = Release|Win32 - {2EB09DDD-CF48-45ED-9698-6C5ADF123C98}.Release DLL|Win32.ActiveCfg = Release|Win32 - {2EB09DDD-CF48-45ED-9698-6C5ADF123C98}.Release DLL|Win32.Build.0 = Release|Win32 - {2EB09DDD-CF48-45ED-9698-6C5ADF123C98}.Release|Win32.ActiveCfg = Release|Win32 - {2EB09DDD-CF48-45ED-9698-6C5ADF123C98}.Release|Win32.Build.0 = Release|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.Debug DLL|Win32.ActiveCfg = Debug|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.Debug DLL|Win32.Build.0 = Debug|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.Debug|Win32.ActiveCfg = Debug|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.Debug|Win32.Build.0 = Debug|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.Release DLL|Win32.ActiveCfg = Release|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.Release DLL|Win32.Build.0 = Release|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.Release|Win32.ActiveCfg = Release|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/extras/audio plugins/demo/build/RTAS_Win32/juce_RTAS.vcproj b/extras/audio plugins/demo/build/RTAS_Win32/juce_RTAS.vcproj deleted file mode 100644 index 92ca5bb3ed..0000000000 --- a/extras/audio plugins/demo/build/RTAS_Win32/juce_RTAS.vcproj +++ /dev/null @@ -1,629 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/extras/audio plugins/demo/build/RTAS_Win32/juce_RTASDemo.rc b/extras/audio plugins/demo/build/RTAS_Win32/juce_RTASDemo.rc deleted file mode 100644 index 086a710a53..0000000000 --- a/extras/audio plugins/demo/build/RTAS_Win32/juce_RTASDemo.rc +++ /dev/null @@ -1,112 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (U.K.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "080904b0" - BEGIN - VALUE "FileDescription", "Juce Audio Plugin RTAS Demo" - VALUE "FileVersion", "1, 0, 0, 1" - VALUE "InternalName", "Juce RTAS Demo" - VALUE "LegalCopyright", "Copyright (C) 2006" - VALUE "ProductName", "Juce RTAS Demo" - VALUE "ProductVersion", "1, 0, 0, 1" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x809, 1200 - END -END - -#endif // English (U.K.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/extras/audio plugins/demo/build/RTAS_Win32/resource.h b/extras/audio plugins/demo/build/RTAS_Win32/resource.h deleted file mode 100644 index 184fcb49e8..0000000000 --- a/extras/audio plugins/demo/build/RTAS_Win32/resource.h +++ /dev/null @@ -1,14 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by juce_RTASDemo.rc - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/extras/audio plugins/demo/build/VST_Linux/premake.lua b/extras/audio plugins/demo/build/VST_Linux/premake.lua deleted file mode 100644 index 14406e8b8d..0000000000 --- a/extras/audio plugins/demo/build/VST_Linux/premake.lua +++ /dev/null @@ -1,55 +0,0 @@ - -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/formats/VST/*.cpp" - ), - matchrecursive ( - "../../src/*.h", - "../../src/*.cpp" - ) -} diff --git a/extras/audio plugins/demo/build/VST_Mac/Info.plist b/extras/audio plugins/demo/build/VST_Mac/Info.plist deleted file mode 100644 index c5b8c15fef..0000000000 --- a/extras/audio plugins/demo/build/VST_Mac/Info.plist +++ /dev/null @@ -1,28 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - JuceVST - CFBundleGetInfoString - Juce VST Demo plugin - CFBundleIconFile - - CFBundleIdentifier - com.rawmaterialsoftware.JuceVSTDemo - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - JuceVST - CFBundlePackageType - BNDL - CFBundleShortVersionString - - CFBundleSignature - JUCE - CFBundleVersion - 0.0.1 - - diff --git a/extras/audio plugins/demo/build/VST_Mac/JuceVST-Info.plist b/extras/audio plugins/demo/build/VST_Mac/JuceVST-Info.plist deleted file mode 100644 index 688e659fa4..0000000000 --- a/extras/audio plugins/demo/build/VST_Mac/JuceVST-Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - JuceVST - CFBundleIdentifier - com.rawmaterialsoftware.JuceVST - CFBundleInfoDictionaryVersion - 1.0 - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - CSResourcesFileMapped - yes - - diff --git a/extras/audio plugins/demo/build/VST_Mac/JuceVST.xcodeproj/project.pbxproj b/extras/audio plugins/demo/build/VST_Mac/JuceVST.xcodeproj/project.pbxproj deleted file mode 100644 index 489c2d2713..0000000000 --- a/extras/audio plugins/demo/build/VST_Mac/JuceVST.xcodeproj/project.pbxproj +++ /dev/null @@ -1,289 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 8456E9D008A29AE60087C412 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8456E9CF08A29AE60087C412 /* CoreServices.framework */; }; - 845FAE4C0A5C09FA008C94D8 /* juce.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 845FAE4B0A5C09FA008C94D8 /* juce.xcconfig */; }; - 84BACBD20987847C0073300C /* juce_VstWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84BACBD10987847C0073300C /* juce_VstWrapper.cpp */; }; - 84BC4EBC0C8DE02200FA249B /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84BC4EBA0C8DE02200FA249B /* IOKit.framework */; }; - 84BC4EBD0C8DE02200FA249B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84BC4EBB0C8DE02200FA249B /* OpenGL.framework */; }; - 84E1AE51089EBAAA00E85E4F /* DemoEditorComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84E1AE4D089EBAAA00E85E4F /* DemoEditorComponent.cpp */; }; - 84E1AE52089EBAAA00E85E4F /* DemoJuceFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84E1AE4F089EBAAA00E85E4F /* DemoJuceFilter.cpp */; }; - 84E1AF2B089EBE4C00E85E4F /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84E1AF2A089EBE4C00E85E4F /* Carbon.framework */; }; - 84E1AF30089EBE5A00E85E4F /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84E1AF2F089EBE5A00E85E4F /* QuickTime.framework */; }; - 84E1AF34089EBE6C00E85E4F /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84E1AF33089EBE6C00E85E4F /* AGL.framework */; }; - 84E1AF38089EBF1300E85E4F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84E1AF37089EBF1300E85E4F /* CoreAudio.framework */; }; - 84E1AF42089EBFD900E85E4F /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 84E1AF41089EBFD900E85E4F /* Info.plist */; }; - 84F5CF040B1B66B100A2E279 /* How to use this framework.txt in Resources */ = {isa = PBXBuildFile; fileRef = 84F5CF030B1B66B100A2E279 /* How to use this framework.txt */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 84551AA009BDB8F3009C9F3E /* JucePluginCharacteristics.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JucePluginCharacteristics.h; path = ../../src/JucePluginCharacteristics.h; sourceTree = SOURCE_ROOT; }; - 8456E9CF08A29AE60087C412 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; - 845FAE4B0A5C09FA008C94D8 /* juce.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; name = juce.xcconfig; path = ../../../../../build/macosx/juce.xcconfig; sourceTree = SOURCE_ROOT; }; - 84BACBD10987847C0073300C /* juce_VstWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = juce_VstWrapper.cpp; path = ../../../wrapper/formats/VST/juce_VstWrapper.cpp; sourceTree = SOURCE_ROOT; }; - 84BC4EBA0C8DE02200FA249B /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; - 84BC4EBB0C8DE02200FA249B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; - 84E1AE47089EBA6A00E85E4F /* JuceVST.vst */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = JuceVST.vst; sourceTree = BUILT_PRODUCTS_DIR; }; - 84E1AE4D089EBAAA00E85E4F /* DemoEditorComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = DemoEditorComponent.cpp; path = ../../src/DemoEditorComponent.cpp; sourceTree = SOURCE_ROOT; }; - 84E1AE4E089EBAAA00E85E4F /* DemoEditorComponent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DemoEditorComponent.h; path = ../../src/DemoEditorComponent.h; sourceTree = SOURCE_ROOT; }; - 84E1AE4F089EBAAA00E85E4F /* DemoJuceFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = DemoJuceFilter.cpp; path = ../../src/DemoJuceFilter.cpp; sourceTree = SOURCE_ROOT; }; - 84E1AE50089EBAAA00E85E4F /* DemoJuceFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DemoJuceFilter.h; path = ../../src/DemoJuceFilter.h; sourceTree = SOURCE_ROOT; }; - 84E1AF2A089EBE4C00E85E4F /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; - 84E1AF2F089EBE5A00E85E4F /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; - 84E1AF33089EBE6C00E85E4F /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; - 84E1AF37089EBF1300E85E4F /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; - 84E1AF41089EBFD900E85E4F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = Info.plist; sourceTree = SOURCE_ROOT; }; - 84F5CF030B1B66B100A2E279 /* How to use this framework.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = "How to use this framework.txt"; path = "../../../How to use this framework.txt"; sourceTree = SOURCE_ROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 84E1AE45089EBA6A00E85E4F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 84E1AF2B089EBE4C00E85E4F /* Carbon.framework in Frameworks */, - 84E1AF30089EBE5A00E85E4F /* QuickTime.framework in Frameworks */, - 84E1AF34089EBE6C00E85E4F /* AGL.framework in Frameworks */, - 84E1AF38089EBF1300E85E4F /* CoreAudio.framework in Frameworks */, - 8456E9D008A29AE60087C412 /* CoreServices.framework in Frameworks */, - 84BC4EBC0C8DE02200FA249B /* IOKit.framework in Frameworks */, - 84BC4EBD0C8DE02200FA249B /* OpenGL.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 089C166AFE841209C02AAC07 /* JuceVST */ = { - isa = PBXGroup; - children = ( - 08FB77ADFE841716C02AAC07 /* Source */, - 84F5CF030B1B66B100A2E279 /* How to use this framework.txt */, - 089C167CFE841241C02AAC07 /* Resources */, - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, - 19C28FB4FE9D528D11CA2CBB /* Products */, - ); - name = JuceVST; - sourceTree = ""; - }; - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - 84BC4EBA0C8DE02200FA249B /* IOKit.framework */, - 84BC4EBB0C8DE02200FA249B /* OpenGL.framework */, - 84E1AF2A089EBE4C00E85E4F /* Carbon.framework */, - 8456E9CF08A29AE60087C412 /* CoreServices.framework */, - 84E1AF37089EBF1300E85E4F /* CoreAudio.framework */, - 84E1AF33089EBE6C00E85E4F /* AGL.framework */, - 84E1AF2F089EBE5A00E85E4F /* QuickTime.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 089C167CFE841241C02AAC07 /* Resources */ = { - isa = PBXGroup; - children = ( - 84E1AF41089EBFD900E85E4F /* Info.plist */, - ); - name = Resources; - sourceTree = ""; - }; - 08FB77ADFE841716C02AAC07 /* Source */ = { - isa = PBXGroup; - children = ( - 84E1AE4C089EBA9300E85E4F /* filter */, - 84E1AE53089EBACA00E85E4F /* wrapper code */, - 845FAE4B0A5C09FA008C94D8 /* juce.xcconfig */, - ); - name = Source; - sourceTree = ""; - }; - 19C28FB4FE9D528D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 84E1AE47089EBA6A00E85E4F /* JuceVST.vst */, - ); - name = Products; - sourceTree = ""; - }; - 84E1AE4C089EBA9300E85E4F /* filter */ = { - isa = PBXGroup; - children = ( - 84E1AE4D089EBAAA00E85E4F /* DemoEditorComponent.cpp */, - 84E1AE4E089EBAAA00E85E4F /* DemoEditorComponent.h */, - 84E1AE4F089EBAAA00E85E4F /* DemoJuceFilter.cpp */, - 84E1AE50089EBAAA00E85E4F /* DemoJuceFilter.h */, - 84551AA009BDB8F3009C9F3E /* JucePluginCharacteristics.h */, - ); - name = filter; - sourceTree = ""; - }; - 84E1AE53089EBACA00E85E4F /* wrapper code */ = { - isa = PBXGroup; - children = ( - 84BACBD10987847C0073300C /* juce_VstWrapper.cpp */, - ); - name = "wrapper code"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 84E1AE46089EBA6A00E85E4F /* JuceVST */ = { - isa = PBXNativeTarget; - buildConfigurationList = 84E1AE48089EBA8900E85E4F /* Build configuration list for PBXNativeTarget "JuceVST" */; - buildPhases = ( - 84E1AE43089EBA6A00E85E4F /* Resources */, - 84E1AE44089EBA6A00E85E4F /* Sources */, - 84E1AE45089EBA6A00E85E4F /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = JuceVST; - productName = JuceVST; - productReference = 84E1AE47089EBA6A00E85E4F /* JuceVST.vst */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 089C1669FE841209C02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 84E1ADD2089EB1BA00E85E4F /* Build configuration list for PBXProject "JuceVST" */; - hasScannedForEncodings = 1; - mainGroup = 089C166AFE841209C02AAC07 /* JuceVST */; - projectDirPath = ""; - targets = ( - 84E1AE46089EBA6A00E85E4F /* JuceVST */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 84E1AE43089EBA6A00E85E4F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 84E1AF42089EBFD900E85E4F /* Info.plist in Resources */, - 845FAE4C0A5C09FA008C94D8 /* juce.xcconfig in Resources */, - 84F5CF040B1B66B100A2E279 /* How to use this framework.txt in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 84E1AE44089EBA6A00E85E4F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 84E1AE51089EBAAA00E85E4F /* DemoEditorComponent.cpp in Sources */, - 84E1AE52089EBAAA00E85E4F /* DemoJuceFilter.cpp in Sources */, - 84BACBD20987847C0073300C /* juce_VstWrapper.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 84E1ADD3089EB1BA00E85E4F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 845FAE4B0A5C09FA008C94D8 /* juce.xcconfig */; - buildSettings = { - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = DEBUG; - HEADER_SEARCH_PATHS = ( - ../../../../.., - "~/stuff/vstsdk2.4/", - ); - LIBRARY_SEARCH_PATHS = ../../../../../bin; - OTHER_LDFLAGS = "-ljucedebug"; - }; - name = Debug; - }; - 84E1ADD4089EB1BA00E85E4F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 845FAE4B0A5C09FA008C94D8 /* juce.xcconfig */; - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = NDEBUG; - HEADER_SEARCH_PATHS = ( - ../../../../.., - "~/stuff/vstsdk2.4/", - ); - LIBRARY_SEARCH_PATHS = ../../../../../bin; - OTHER_LDFLAGS = "-ljuce"; - }; - name = Release; - }; - 84E1AE49089EBA8900E85E4F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - GENERATE_PKGINFO_FILE = YES; - INFOPLIST_FILE = info.plist; - PRODUCT_NAME = JuceVST; - SYMROOT = "$(HOME)/Library/Audio/Plug-Ins/VST"; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - WRAPPER_EXTENSION = vst; - }; - name = Debug; - }; - 84E1AE4A089EBA8900E85E4F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_INLINES_ARE_PRIVATE_EXTERN = YES; - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - GENERATE_PKGINFO_FILE = YES; - INFOPLIST_FILE = info.plist; - PRODUCT_NAME = JuceVST; - SYMROOT = "$(HOME)/Library/Audio/Plug-Ins/VST"; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - WRAPPER_EXTENSION = vst; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 84E1ADD2089EB1BA00E85E4F /* Build configuration list for PBXProject "JuceVST" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 84E1ADD3089EB1BA00E85E4F /* Debug */, - 84E1ADD4089EB1BA00E85E4F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - 84E1AE48089EBA8900E85E4F /* Build configuration list for PBXNativeTarget "JuceVST" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 84E1AE49089EBA8900E85E4F /* Debug */, - 84E1AE4A089EBA8900E85E4F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; -/* End XCConfigurationList section */ - }; - rootObject = 089C1669FE841209C02AAC07 /* Project object */; -} diff --git a/extras/audio plugins/demo/build/VST_Mac/version.plist b/extras/audio plugins/demo/build/VST_Mac/version.plist deleted file mode 100644 index 169b5fae84..0000000000 --- a/extras/audio plugins/demo/build/VST_Mac/version.plist +++ /dev/null @@ -1,16 +0,0 @@ - - - - - BuildVersion - 38 - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1.0 - ProjectName - CarbonProjectTemplates - SourceVersion - 140000 - - diff --git a/extras/audio plugins/demo/build/VST_Win32/juce_vst.sln b/extras/audio plugins/demo/build/VST_Win32/juce_vst.sln deleted file mode 100644 index d87b0d4a00..0000000000 --- a/extras/audio plugins/demo/build/VST_Win32/juce_vst.sln +++ /dev/null @@ -1,39 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JuceAudioPlugin Demo", "juce_vst.vcproj", "{6F0F1E35-EAF8-431A-83D9-F0340921E560}" - ProjectSection(ProjectDependencies) = postProject - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26} = {AE232C11-D91C-4CA1-B24E-8B11A52EFF26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JUCE", "..\..\..\..\..\build\win32\vc8\JUCE.vcproj", "{AE232C11-D91C-4CA1-B24E-8B11A52EFF26}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - DLL Debug|Win32 = DLL Debug|Win32 - DLL Release|Win32 = DLL Release|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {6F0F1E35-EAF8-431A-83D9-F0340921E560}.Debug|Win32.ActiveCfg = Debug|Win32 - {6F0F1E35-EAF8-431A-83D9-F0340921E560}.Debug|Win32.Build.0 = Debug|Win32 - {6F0F1E35-EAF8-431A-83D9-F0340921E560}.DLL Debug|Win32.ActiveCfg = Debug|Win32 - {6F0F1E35-EAF8-431A-83D9-F0340921E560}.DLL Debug|Win32.Build.0 = Debug|Win32 - {6F0F1E35-EAF8-431A-83D9-F0340921E560}.DLL Release|Win32.ActiveCfg = Release|Win32 - {6F0F1E35-EAF8-431A-83D9-F0340921E560}.DLL Release|Win32.Build.0 = Release|Win32 - {6F0F1E35-EAF8-431A-83D9-F0340921E560}.Release|Win32.ActiveCfg = Release|Win32 - {6F0F1E35-EAF8-431A-83D9-F0340921E560}.Release|Win32.Build.0 = Release|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.Debug|Win32.ActiveCfg = Debug|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.Debug|Win32.Build.0 = Debug|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.Release|Win32.ActiveCfg = Release|Win32 - {AE232C11-D91C-4CA1-B24E-8B11A52EFF26}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/extras/audio plugins/demo/build/VST_Win32/juce_vst.vcproj b/extras/audio plugins/demo/build/VST_Win32/juce_vst.vcproj deleted file mode 100644 index 965468e416..0000000000 --- a/extras/audio plugins/demo/build/VST_Win32/juce_vst.vcproj +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/extras/audio plugins/demo/src/DemoEditorComponent.cpp b/extras/audio plugins/demo/src/DemoEditorComponent.cpp deleted file mode 100644 index ddd46c4242..0000000000 --- a/extras/audio plugins/demo/src/DemoEditorComponent.cpp +++ /dev/null @@ -1,195 +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.h" -#include "DemoEditorComponent.h" - -//============================================================================== -// quick-and-dirty function to format a timecode string -static const String timeToTimecodeString (const double seconds) -{ - const double absSecs = fabs (seconds); - const tchar* const sign = (seconds < 0) ? T("-") : T(""); - - const int hours = (int) (absSecs / (60.0 * 60.0)); - const int mins = ((int) (absSecs / 60.0)) % 60; - const int secs = ((int) absSecs) % 60; - - return String::formatted (T("%s%02d:%02d:%02d:%03d"), - sign, hours, mins, secs, - roundDoubleToInt (absSecs * 1000) % 1000); -} - -// quick-and-dirty function to format a bars/beats string -static const String ppqToBarsBeatsString (const double ppq, - const double lastBarPPQ, - const int numerator, - const int denominator) -{ - if (numerator == 0 || denominator == 0) - return T("1|1|0"); - - const int ppqPerBar = (numerator * 4 / denominator); - const double beats = (fmod (ppq, ppqPerBar) / ppqPerBar) * numerator; - - const int bar = ((int) ppq) / ppqPerBar + 1; - const int beat = ((int) beats) + 1; - const int ticks = ((int) (fmod (beats, 1.0) * 960.0)); - - String s; - s << bar << T('|') << beat << T('|') << ticks; - return s; -} - - -//============================================================================== -DemoEditorComponent::DemoEditorComponent (DemoJuceFilter* const ownerFilter) - : AudioProcessorEditor (ownerFilter) -{ - // create our gain slider.. - addAndMakeVisible (gainSlider = new Slider (T("gain"))); - gainSlider->addListener (this); - gainSlider->setRange (0.0, 1.0, 0.01); - gainSlider->setTooltip (T("changes the volume of the audio that runs through the plugin..")); - - // get the gain parameter from the filter and use it to set up our slider - gainSlider->setValue (ownerFilter->getParameter (0), false); - - // create and add the midi keyboard component.. - addAndMakeVisible (midiKeyboard - = new MidiKeyboardComponent (ownerFilter->keyboardState, - MidiKeyboardComponent::horizontalKeyboard)); - - // add a label that will display the current timecode and status.. - addAndMakeVisible (infoLabel = new Label (String::empty, String::empty)); - - // add the triangular resizer component for the bottom-right of the UI - addAndMakeVisible (resizer = new ResizableCornerComponent (this, &resizeLimits)); - resizeLimits.setSizeLimits (150, 150, 800, 300); - - // set our component's initial size to be the last one that was stored in the filter's settings - setSize (ownerFilter->lastUIWidth, - ownerFilter->lastUIHeight); - - // register ourselves with the filter - it will use its ChangeBroadcaster base - // class to tell us when something has changed, and this will call our changeListenerCallback() - // method. - ownerFilter->addChangeListener (this); -} - -DemoEditorComponent::~DemoEditorComponent() -{ - getFilter()->removeChangeListener (this); - - deleteAllChildren(); -} - -//============================================================================== -void DemoEditorComponent::paint (Graphics& g) -{ - // just clear the window - g.fillAll (Colour::greyLevel (0.9f)); -} - -void DemoEditorComponent::resized() -{ - gainSlider->setBounds (10, 10, 200, 22); - infoLabel->setBounds (10, 35, 450, 20); - - const int keyboardHeight = 70; - midiKeyboard->setBounds (4, getHeight() - keyboardHeight - 4, - getWidth() - 8, keyboardHeight); - - resizer->setBounds (getWidth() - 16, getHeight() - 16, 16, 16); - - // if we've been resized, tell the filter so that it can store the new size - // in its settings - getFilter()->lastUIWidth = getWidth(); - getFilter()->lastUIHeight = getHeight(); -} - -//============================================================================== -void DemoEditorComponent::changeListenerCallback (void* source) -{ - // this is the filter telling us that it's changed, so we'll update our - // display of the time, midi message, etc. - updateParametersFromFilter(); -} - -void DemoEditorComponent::sliderValueChanged (Slider*) -{ - getFilter()->setParameterNotifyingHost (0, (float) gainSlider->getValue()); -} - -//============================================================================== -void DemoEditorComponent::updateParametersFromFilter() -{ - DemoJuceFilter* const filter = getFilter(); - - // we use this lock to make sure the processBlock() method isn't writing to the - // lastMidiMessage variable while we're trying to read it, but be extra-careful to - // only hold the lock for a minimum amount of time.. - filter->getCallbackLock().enter(); - - // take a local copy of the info we need while we've got the lock.. - const AudioPlayHead::CurrentPositionInfo positionInfo (filter->lastPosInfo); - const float newGain = filter->getParameter (0); - - // ..release the lock ASAP - filter->getCallbackLock().exit(); - - - // ..and after releasing the lock, we're free to do the time-consuming UI stuff.. - String infoText; - infoText << String (positionInfo.bpm, 2) << T(" bpm, ") - << positionInfo.timeSigNumerator << T("/") << positionInfo.timeSigDenominator - << T(" - ") << timeToTimecodeString (positionInfo.timeInSeconds) - << T(" - ") << ppqToBarsBeatsString (positionInfo.ppqPosition, - positionInfo.ppqPositionOfLastBarStart, - positionInfo.timeSigNumerator, - positionInfo.timeSigDenominator); - - if (positionInfo.isPlaying) - infoText << T(" (playing)"); - - infoLabel->setText (infoText, false); - - /* Update our slider. - - (note that it's important here to tell the slider not to send a change - message, because that would cause it to call the filter with a parameter - change message again, and the values would drift out. - */ - gainSlider->setValue (newGain, false); - - setSize (filter->lastUIWidth, - filter->lastUIHeight); -} diff --git a/extras/audio plugins/demo/src/DemoEditorComponent.h b/extras/audio plugins/demo/src/DemoEditorComponent.h deleted file mode 100644 index a0530fc21b..0000000000 --- a/extras/audio plugins/demo/src/DemoEditorComponent.h +++ /dev/null @@ -1,99 +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. - - ============================================================================== -*/ - -#ifndef DEMOJUCEPLUGINEDITOR_H -#define DEMOJUCEPLUGINEDITOR_H - -#include "DemoJuceFilter.h" - - -//============================================================================== -/** - This is the Component that our filter will use as its UI. - - One or more of these is created by the DemoJuceFilter::createEditor() method, - and they will be deleted at some later time by the wrapper code. - - To demonstrate the correct way of connecting a filter to its UI, this - class is a ChangeListener, and our demo filter is a ChangeBroadcaster. The - editor component registers with the filter when it's created and deregisters - when it's destroyed. When the filter's parameters are changed, it broadcasts - a message and this editor responds by updating its display. -*/ -class DemoEditorComponent : public AudioProcessorEditor, - public ChangeListener, - public SliderListener -{ -public: - /** Constructor. - - When created, this will register itself with the filter for changes. It's - safe to assume that the filter won't be deleted before this object is. - */ - DemoEditorComponent (DemoJuceFilter* const ownerFilter); - - /** Destructor. */ - ~DemoEditorComponent(); - - //============================================================================== - /** Our demo filter is a ChangeBroadcaster, and will call us back when one of - its parameters changes. - */ - void changeListenerCallback (void* source); - - void sliderValueChanged (Slider*); - - //============================================================================== - /** Standard Juce paint callback. */ - void paint (Graphics& g); - - /** Standard Juce resize callback. */ - void resized(); - - -private: - //============================================================================== - Slider* gainSlider; - MidiKeyboardComponent* midiKeyboard; - Label* infoLabel; - ResizableCornerComponent* resizer; - ComponentBoundsConstrainer resizeLimits; - TooltipWindow tooltipWindow; - - void updateParametersFromFilter(); - - // handy wrapper method to avoid having to cast the filter to a DemoJuceFilter - // every time we need it.. - DemoJuceFilter* getFilter() const throw() { return (DemoJuceFilter*) getAudioProcessor(); } -}; - - -#endif diff --git a/extras/audio plugins/demo/src/DemoJuceFilter.cpp b/extras/audio plugins/demo/src/DemoJuceFilter.cpp deleted file mode 100644 index c7bc07de0a..0000000000 --- a/extras/audio plugins/demo/src/DemoJuceFilter.cpp +++ /dev/null @@ -1,236 +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.h" -#include "DemoJuceFilter.h" -#include "DemoEditorComponent.h" - - -//============================================================================== -/** - This function must be implemented to create a new instance of your - plugin object. -*/ -AudioProcessor* JUCE_CALLTYPE createPluginFilter() -{ - return new DemoJuceFilter(); -} - -//============================================================================== -DemoJuceFilter::DemoJuceFilter() -{ - gain = 1.0f; - lastUIWidth = 400; - lastUIHeight = 140; - - zeromem (&lastPosInfo, sizeof (lastPosInfo)); - lastPosInfo.timeSigNumerator = 4; - lastPosInfo.timeSigDenominator = 4; - lastPosInfo.bpm = 120; -} - -DemoJuceFilter::~DemoJuceFilter() -{ -} - -//============================================================================== -int DemoJuceFilter::getNumParameters() -{ - return 1; -} - -float DemoJuceFilter::getParameter (int index) -{ - return (index == 0) ? gain - : 0.0f; -} - -void DemoJuceFilter::setParameter (int index, float newValue) -{ - if (index == 0) - { - if (gain != newValue) - { - gain = newValue; - - // if this is changing the gain, broadcast a change message which - // our editor will pick up. - sendChangeMessage (this); - } - } -} - -const String DemoJuceFilter::getParameterName (int index) -{ - if (index == 0) - return T("gain"); - - return String::empty; -} - -const String DemoJuceFilter::getParameterText (int index) -{ - if (index == 0) - return String (gain, 2); - - return String::empty; -} - -const String DemoJuceFilter::getInputChannelName (const int channelIndex) const -{ - return String (channelIndex + 1); -} - -const String DemoJuceFilter::getOutputChannelName (const int channelIndex) const -{ - return String (channelIndex + 1); -} - -bool DemoJuceFilter::isInputChannelStereoPair (int index) const -{ - return false; -} - -bool DemoJuceFilter::isOutputChannelStereoPair (int index) const -{ - return false; -} - -//============================================================================== -void DemoJuceFilter::prepareToPlay (double sampleRate, int samplesPerBlock) -{ - // do your pre-playback setup stuff here.. - keyboardState.reset(); -} - -void DemoJuceFilter::releaseResources() -{ - // when playback stops, you can use this as an opportunity to free up any - // spare memory, etc. -} - -void DemoJuceFilter::processBlock (AudioSampleBuffer& buffer, - MidiBuffer& midiMessages) -{ - // for each of our input channels, we'll attenuate its level by the - // amount that our volume parameter is set to. - for (int channel = 0; channel < getNumInputChannels(); ++channel) - { - buffer.applyGain (channel, 0, buffer.getNumSamples(), gain); - } - - // in case we have more outputs than inputs, we'll clear any output - // channels that didn't contain input data, (because these aren't - // guaranteed to be empty - they may contain garbage). - for (int i = getNumInputChannels(); i < getNumOutputChannels(); ++i) - { - buffer.clear (i, 0, buffer.getNumSamples()); - } - - // if any midi messages come in, use them to update the keyboard state object. This - // object sends notification to the UI component about key up/down changes - keyboardState.processNextMidiBuffer (midiMessages, - 0, buffer.getNumSamples(), - true); - - // have a go at getting the current time from the host, and if it's changed, tell - // our UI to update itself. - AudioPlayHead::CurrentPositionInfo pos; - - if (getPlayHead() != 0 && getPlayHead()->getCurrentPosition (pos)) - { - if (memcmp (&pos, &lastPosInfo, sizeof (pos)) != 0) - { - lastPosInfo = pos; - sendChangeMessage (this); - } - } - else - { - zeromem (&lastPosInfo, sizeof (lastPosInfo)); - lastPosInfo.timeSigNumerator = 4; - lastPosInfo.timeSigDenominator = 4; - lastPosInfo.bpm = 120; - } -} - -//============================================================================== -AudioProcessorEditor* DemoJuceFilter::createEditor() -{ - return new DemoEditorComponent (this); -} - -//============================================================================== -void DemoJuceFilter::getStateInformation (MemoryBlock& destData) -{ - // you can store your parameters as binary data if you want to or if you've got - // a load of binary to put in there, but if you're not doing anything too heavy, - // XML is a much cleaner way of doing it - here's an example of how to store your - // params as XML.. - - // create an outer XML element.. - XmlElement xmlState (T("MYPLUGINSETTINGS")); - - // add some attributes to it.. - xmlState.setAttribute (T("pluginVersion"), 1); - xmlState.setAttribute (T("gainLevel"), gain); - xmlState.setAttribute (T("uiWidth"), lastUIWidth); - xmlState.setAttribute (T("uiHeight"), lastUIHeight); - - // you could also add as many child elements as you need to here.. - - - // then use this helper function to stuff it into the binary blob and return it.. - copyXmlToBinary (xmlState, destData); -} - -void DemoJuceFilter::setStateInformation (const void* data, int sizeInBytes) -{ - // use this helper function to get the XML from this binary blob.. - XmlElement* const xmlState = getXmlFromBinary (data, sizeInBytes); - - if (xmlState != 0) - { - // check that it's the right type of xml.. - if (xmlState->hasTagName (T("MYPLUGINSETTINGS"))) - { - // ok, now pull out our parameters.. - gain = (float) xmlState->getDoubleAttribute (T("gainLevel"), gain); - - lastUIWidth = xmlState->getIntAttribute (T("uiWidth"), lastUIWidth); - lastUIHeight = xmlState->getIntAttribute (T("uiHeight"), lastUIHeight); - - sendChangeMessage (this); - } - - delete xmlState; - } -} diff --git a/extras/audio plugins/demo/src/DemoJuceFilter.h b/extras/audio plugins/demo/src/DemoJuceFilter.h deleted file mode 100644 index ae8a0384c5..0000000000 --- a/extras/audio plugins/demo/src/DemoJuceFilter.h +++ /dev/null @@ -1,112 +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. - - ============================================================================== -*/ - -#ifndef DEMOJUCEPLUGINFILTER_H -#define DEMOJUCEPLUGINFILTER_H - - -//============================================================================== -/** - A simple plugin filter that just applies a gain change to the audio - passing through it. - -*/ -class DemoJuceFilter : public AudioProcessor, - public ChangeBroadcaster -{ -public: - //============================================================================== - DemoJuceFilter(); - ~DemoJuceFilter(); - - //============================================================================== - void prepareToPlay (double sampleRate, int samplesPerBlock); - void releaseResources(); - - void processBlock (AudioSampleBuffer& buffer, - MidiBuffer& midiMessages); - - //============================================================================== - AudioProcessorEditor* createEditor(); - - //============================================================================== - int getNumParameters(); - - float getParameter (int index); - void setParameter (int index, float newValue); - - const String getParameterName (int index); - const String getParameterText (int index); - - const String getInputChannelName (const int channelIndex) const; - const String getOutputChannelName (const int channelIndex) const; - bool isInputChannelStereoPair (int index) const; - bool isOutputChannelStereoPair (int index) const; - - //============================================================================== - int getNumPrograms() { return 0; } - int getCurrentProgram() { return 0; } - void setCurrentProgram (int index) { } - const String getProgramName (int index) { return String::empty; } - void changeProgramName (int index, const String& newName) { } - - //============================================================================== - void getStateInformation (MemoryBlock& destData); - void setStateInformation (const void* data, int sizeInBytes); - - //============================================================================== - // These properties are public so that our editor component can access them - // - a bit of a hacky way to do it, but it's only a demo! - - // this is kept up to date with the midi messages that arrive, and the UI component - // registers with it so it can represent the incoming messages - MidiKeyboardState keyboardState; - - // this keeps a copy of the last set of time info that was acquired during an audio - // callback - the UI component will read this and display it. - AudioPlayHead::CurrentPositionInfo lastPosInfo; - - // these are used to persist the UI's size - the values are stored along with the - // filter's other parameters, and the UI component will update them when it gets - // resized. - int lastUIWidth, lastUIHeight; - - //============================================================================== - juce_UseDebuggingNewOperator - -private: - // this is our gain - the UI and the host can access this by getting/setting - // parameter 0. - float gain; -}; - - -#endif diff --git a/extras/audio plugins/demo/src/JucePluginCharacteristics.h b/extras/audio plugins/demo/src/JucePluginCharacteristics.h deleted file mode 100644 index e8dc81601e..0000000000 --- a/extras/audio plugins/demo/src/JucePluginCharacteristics.h +++ /dev/null @@ -1,270 +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. - - ============================================================================== -*/ - -#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 diff --git a/extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.cpp b/extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.cpp deleted file mode 100644 index 102313ec35..0000000000 --- a/extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.cpp +++ /dev/null @@ -1,948 +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 -#include "AUMIDIEffectBase.h" -#include "MusicDeviceBase.h" -#include "AUCarbonViewBase.h" -#include "../../juce_IncludeCharacteristics.h" -#include "../../../../../juce.h" - -//============================================================================== -#define juceFilterObjectPropertyID 0x1a45ffe9 -static VoidArray activePlugins; - -static const short channelConfigs[][2] = { JucePlugin_PreferredChannelConfigurations }; -static const int numChannelConfigs = numElementsInArray (channelConfigs); - -BEGIN_JUCE_NAMESPACE -extern void juce_setCurrentExecutableFileNameFromBundleId (const String& bundleId) throw(); -END_JUCE_NAMESPACE - -#if JucePlugin_IsSynth - #define JuceAUBaseClass MusicDeviceBase -#else - #define JuceAUBaseClass AUMIDIEffectBase -#endif - -//============================================================================== -/** Somewhere in the codebase of your plugin, you need to implement this function - and make it create an instance of the filter subclass that you're building. -*/ -extern AudioProcessor* JUCE_CALLTYPE createPluginFilter(); - - -//============================================================================== -class JuceAU : public JuceAUBaseClass, - public AudioProcessorListener, - public AudioPlayHead -{ -public: - //============================================================================== - JuceAU (AudioUnit component) -#if JucePlugin_IsSynth - : MusicDeviceBase (component, 0, 1), -#else - : AUMIDIEffectBase (component), -#endif - juceFilter (0), - bufferSpace (2, 16), - channels (0), - prepared (false) - { - CreateElements(); - - if (activePlugins.size() == 0) - { - initialiseJuce_GUI(); - -#ifdef JucePlugin_CFBundleIdentifier - juce_setCurrentExecutableFileNameFromBundleId (JucePlugin_CFBundleIdentifier); -#endif - - MessageManager::getInstance()->setTimeBeforeShowingWaitCursor (0); - } - - juceFilter = createPluginFilter(); - juceFilter->setPlayHead (this); - juceFilter->addListener (this); - - jassert (juceFilter != 0); - Globals()->UseIndexedParameters (juceFilter->getNumParameters()); - - activePlugins.add (this); - - zerostruct (auEvent); - auEvent.mArgument.mParameter.mAudioUnit = GetComponentInstance(); - auEvent.mArgument.mParameter.mScope = kAudioUnitScope_Global; - auEvent.mArgument.mParameter.mElement = 0; - } - - ~JuceAU() - { - delete juceFilter; - juceFilter = 0; - - juce_free (channels); - channels = 0; - - jassert (activePlugins.contains (this)); - activePlugins.removeValue (this); - - if (activePlugins.size() == 0) - shutdownJuce_GUI(); - } - - //============================================================================== - ComponentResult GetPropertyInfo (AudioUnitPropertyID inID, - AudioUnitScope inScope, - AudioUnitElement inElement, - UInt32& outDataSize, - Boolean& outWritable) - { - if (inScope == kAudioUnitScope_Global) - { - if (inID == juceFilterObjectPropertyID) - { - outWritable = false; - outDataSize = sizeof (void*); - return noErr; - } - } - - return JuceAUBaseClass::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable); - } - - ComponentResult GetProperty (AudioUnitPropertyID inID, - AudioUnitScope inScope, - AudioUnitElement inElement, - void* outData) - { - if (inScope == kAudioUnitScope_Global) - { - if (inID == juceFilterObjectPropertyID) - { - *((void**) outData) = (void*) juceFilter; - return noErr; - } - } - - return JuceAUBaseClass::GetProperty (inID, inScope, inElement, outData); - } - - ComponentResult SaveState (CFPropertyListRef* outData) - { - ComponentResult err = JuceAUBaseClass::SaveState (outData); - - if (err != noErr) - return err; - - jassert (CFGetTypeID (*outData) == CFDictionaryGetTypeID()); - - CFMutableDictionaryRef dict = (CFMutableDictionaryRef) *outData; - - if (juceFilter != 0) - { - MemoryBlock state; - juceFilter->getCurrentProgramStateInformation (state); - - if (state.getSize() > 0) - { - CFDataRef ourState = CFDataCreate (kCFAllocatorDefault, (const uint8*) state, state.getSize()); - CFDictionarySetValue (dict, CFSTR("jucePluginState"), ourState); - CFRelease (ourState); - } - } - - return noErr; - } - - ComponentResult RestoreState (CFPropertyListRef inData) - { - ComponentResult err = JuceAUBaseClass::RestoreState (inData); - - if (err != noErr) - return err; - - if (juceFilter != 0) - { - CFDictionaryRef dict = (CFDictionaryRef) inData; - CFDataRef data = 0; - - if (CFDictionaryGetValueIfPresent (dict, CFSTR("jucePluginState"), - (const void**) &data)) - { - if (data != 0) - { - const int numBytes = (int) CFDataGetLength (data); - const uint8* const rawBytes = CFDataGetBytePtr (data); - - if (numBytes > 0) - juceFilter->setCurrentProgramStateInformation (rawBytes, numBytes); - } - } - } - - return noErr; - } - - UInt32 SupportedNumChannels (const AUChannelInfo** outInfo) - { - // You need to actually add some configurations to the JucePlugin_PreferredChannelConfigurations - // value in your JucePluginCharacteristics.h file.. - jassert (numChannelConfigs > 0); - - if (outInfo != 0) - { - for (int i = 0; i < numChannelConfigs; ++i) - { -#if JucePlugin_IsSynth - channelInfo[i].inChannels = 0; -#else - channelInfo[i].inChannels = channelConfigs[i][0]; -#endif - channelInfo[i].outChannels = channelConfigs[i][1]; - - outInfo[i] = channelInfo + i; - } - } - - return numChannelConfigs; - } - - //============================================================================== - ComponentResult GetParameterInfo (AudioUnitScope inScope, - AudioUnitParameterID inParameterID, - AudioUnitParameterInfo& outParameterInfo) - { - const int index = (int) inParameterID; - - if (inScope == kAudioUnitScope_Global - && juceFilter != 0 - && index < juceFilter->getNumParameters()) - { - outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable - | kAudioUnitParameterFlag_IsReadable - | kAudioUnitParameterFlag_HasCFNameString; - - const String name (juceFilter->getParameterName (index)); - - // set whether the param is automatable (unnamed parameters aren't allowed to be automated) - if (name.isEmpty() || ! juceFilter->isParameterAutomatable (index)) - outParameterInfo.flags |= kAudioUnitParameterFlag_NonRealTime; - - AUBase::FillInParameterName (outParameterInfo, - PlatformUtilities::juceStringToCFString (name), - false); - - outParameterInfo.minValue = 0.0f; - outParameterInfo.maxValue = 1.0f; - outParameterInfo.defaultValue = 0.0f; - outParameterInfo.unit = kAudioUnitParameterUnit_Generic; - - return noErr; - } - else - { - return kAudioUnitErr_InvalidParameter; - } - } - - ComponentResult GetParameter (AudioUnitParameterID inID, - AudioUnitScope inScope, - AudioUnitElement inElement, - Float32& outValue) - { - if (inScope == kAudioUnitScope_Global && juceFilter != 0) - { - outValue = juceFilter->getParameter ((int) inID); - return noErr; - } - - return AUBase::GetParameter (inID, inScope, inElement, outValue); - } - - ComponentResult SetParameter (AudioUnitParameterID inID, - AudioUnitScope inScope, - AudioUnitElement inElement, - Float32 inValue, - UInt32 inBufferOffsetInFrames) - { - if (inScope == kAudioUnitScope_Global && juceFilter != 0) - { - juceFilter->setParameter ((int) inID, inValue); - return noErr; - } - - return AUBase::SetParameter (inID, inScope, inElement, inValue, inBufferOffsetInFrames); - } - - //============================================================================== - ComponentResult Version() { return JucePlugin_VersionCode; } - - bool SupportsTail() { return true; } - Float64 GetTailTime() { return 0; } - - Float64 GetSampleRate() - { - return GetOutput(0)->GetStreamFormat().mSampleRate; - } - - Float64 GetLatency() - { - jassert (GetSampleRate() > 0); - - if (GetSampleRate() <= 0) - return 0.0; - - return juceFilter->getLatencySamples() / GetSampleRate(); - } - - //============================================================================== - int GetNumCustomUIComponents() { return 1; } - - void GetUIComponentDescs (ComponentDescription* inDescArray) - { - inDescArray[0].componentType = kAudioUnitCarbonViewComponentType; - inDescArray[0].componentSubType = JucePlugin_AUSubType; - inDescArray[0].componentManufacturer = JucePlugin_AUManufacturerCode; - inDescArray[0].componentFlags = 0; - inDescArray[0].componentFlagsMask = 0; - } - - //============================================================================== - bool getCurrentPosition (AudioPlayHead::CurrentPositionInfo& info) - { - info.timeSigNumerator = 0; - info.timeSigDenominator = 0; - info.timeInSeconds = 0; - info.editOriginTime = 0; - info.ppqPositionOfLastBarStart = 0; - info.isPlaying = false; - info.isRecording = false; - - switch (lastSMPTETime.mType) - { - case kSMPTETimeType24: - info.frameRate = AudioPlayHead::fps24; - break; - - case kSMPTETimeType25: - info.frameRate = AudioPlayHead::fps25; - break; - - case kSMPTETimeType30Drop: - info.frameRate = AudioPlayHead::fps30drop; - break; - - case kSMPTETimeType30: - info.frameRate = AudioPlayHead::fps30; - break; - - case kSMPTETimeType2997: - info.frameRate = AudioPlayHead::fps2997; - break; - - case kSMPTETimeType2997Drop: - info.frameRate = AudioPlayHead::fps2997drop; - break; - - //case kSMPTETimeType60: - //case kSMPTETimeType5994: - default: - info.frameRate = AudioPlayHead::fpsUnknown; - break; - } - - if (CallHostBeatAndTempo (&info.ppqPosition, &info.bpm) != noErr) - { - info.ppqPosition = 0; - info.bpm = 0; - } - - UInt32 outDeltaSampleOffsetToNextBeat; - double outCurrentMeasureDownBeat; - float num; - UInt32 den; - - if (CallHostMusicalTimeLocation (&outDeltaSampleOffsetToNextBeat, &num, &den, - &outCurrentMeasureDownBeat) == noErr) - { - info.timeSigNumerator = (int) num; - info.timeSigDenominator = den; - info.ppqPositionOfLastBarStart = outCurrentMeasureDownBeat; - } - - double outCurrentSampleInTimeLine, outCycleStartBeat, outCycleEndBeat; - Boolean playing, playchanged, looping; - - if (CallHostTransportState (&playing, - &playchanged, - &outCurrentSampleInTimeLine, - &looping, - &outCycleStartBeat, - &outCycleEndBeat) == noErr) - { - info.isPlaying = playing; - info.timeInSeconds = outCurrentSampleInTimeLine / GetSampleRate(); - } - - return true; - } - - void sendAUEvent (const AudioUnitEventType type, const int index) throw() - { - if (AUEventListenerNotify != 0) - { - auEvent.mEventType = type; - auEvent.mArgument.mParameter.mParameterID = (AudioUnitParameterID) index; - AUEventListenerNotify (0, 0, &auEvent); - } - } - - void audioProcessorParameterChanged (AudioProcessor*, int index, float newValue) - { - sendAUEvent (kAudioUnitEvent_ParameterValueChange, index); - } - - void audioProcessorParameterChangeGestureBegin (AudioProcessor*, int index) - { - sendAUEvent (kAudioUnitEvent_BeginParameterChangeGesture, index); - } - - void audioProcessorParameterChangeGestureEnd (AudioProcessor*, int index) - { - sendAUEvent (kAudioUnitEvent_EndParameterChangeGesture, index); - } - - void audioProcessorChanged (AudioProcessor*) - { - // xxx is there an AU equivalent? - } - - bool StreamFormatWritable (AudioUnitScope inScope, AudioUnitElement element) - { - return ! IsInitialized(); - } - - ComponentResult StartNote (MusicDeviceInstrumentID, MusicDeviceGroupID, NoteInstanceID&, UInt32, const MusicDeviceNoteParams&) - { - return noErr; - } - - ComponentResult StopNote (MusicDeviceGroupID, NoteInstanceID, UInt32) - { - return noErr; - } - - //============================================================================== - ComponentResult Initialize() - { -#if ! JucePlugin_IsSynth - const int numIns = GetInput(0) != 0 ? GetInput(0)->GetStreamFormat().mChannelsPerFrame : 0; -#endif - const int numOuts = GetOutput(0) != 0 ? GetOutput(0)->GetStreamFormat().mChannelsPerFrame : 0; - - bool isValidChannelConfig = false; - - for (int i = 0; i < numChannelConfigs; ++i) -#if JucePlugin_IsSynth - if (numOuts == channelConfigs[i][1]) -#else - if (numIns == channelConfigs[i][0] && numOuts == channelConfigs[i][1]) -#endif - isValidChannelConfig = true; - - if (! isValidChannelConfig) - return kAudioUnitErr_FormatNotSupported; - - JuceAUBaseClass::Initialize(); - prepareToPlay(); - return noErr; - } - - void Cleanup() - { - JuceAUBaseClass::Cleanup(); - - if (juceFilter != 0) - juceFilter->releaseResources(); - - bufferSpace.setSize (2, 16); - midiEvents.clear(); - prepared = false; - } - - ComponentResult Reset (AudioUnitScope inScope, AudioUnitElement inElement) - { - if (! prepared) - prepareToPlay(); - - return JuceAUBaseClass::Reset (inScope, inElement); - } - - void prepareToPlay() - { - if (juceFilter != 0) - { -#if ! JucePlugin_IsSynth - juceFilter->setPlayConfigDetails (GetInput(0)->GetStreamFormat().mChannelsPerFrame, -#else - juceFilter->setPlayConfigDetails (0, -#endif - GetOutput(0)->GetStreamFormat().mChannelsPerFrame, - GetSampleRate(), - GetMaxFramesPerSlice()); - - bufferSpace.setSize (juceFilter->getNumInputChannels() + juceFilter->getNumOutputChannels(), - GetMaxFramesPerSlice() + 32); - - juceFilter->prepareToPlay (GetSampleRate(), - GetMaxFramesPerSlice()); - - midiEvents.clear(); - - juce_free (channels); - channels = (float**) juce_calloc (sizeof (float*) * jmax (juceFilter->getNumInputChannels(), - juceFilter->getNumOutputChannels()) + 4); - - prepared = true; - } - } - - ComponentResult Render (AudioUnitRenderActionFlags &ioActionFlags, - const AudioTimeStamp& inTimeStamp, - UInt32 nFrames) - { - lastSMPTETime = inTimeStamp.mSMPTETime; - -#if ! JucePlugin_IsSynth - return JuceAUBaseClass::Render (ioActionFlags, inTimeStamp, nFrames); -#else - // synths can't have any inputs.. - AudioBufferList inBuffer; - inBuffer.mNumberBuffers = 0; - - return ProcessBufferLists (ioActionFlags, inBuffer, GetOutput(0)->GetBufferList(), nFrames); -#endif - } - - - OSStatus ProcessBufferLists (AudioUnitRenderActionFlags& ioActionFlags, - const AudioBufferList& inBuffer, - AudioBufferList& outBuffer, - UInt32 numSamples) - { - if (juceFilter != 0) - { - jassert (prepared); - - int numOutChans = 0; - int nextSpareBufferChan = 0; - bool needToReinterleave = false; - const int numIn = juceFilter->getNumInputChannels(); - const int numOut = juceFilter->getNumOutputChannels(); - - unsigned int i; - for (i = 0; i < outBuffer.mNumberBuffers; ++i) - { - AudioBuffer& buf = outBuffer.mBuffers[i]; - - if (buf.mNumberChannels == 1) - { - channels [numOutChans++] = (float*) buf.mData; - } - else - { - needToReinterleave = true; - - for (unsigned int subChan = 0; subChan < buf.mNumberChannels && numOutChans < numOut; ++subChan) - channels [numOutChans++] = bufferSpace.getSampleData (nextSpareBufferChan++); - } - - if (numOutChans >= numOut) - break; - } - - int numInChans = 0; - - for (i = 0; i < inBuffer.mNumberBuffers; ++i) - { - const AudioBuffer& buf = inBuffer.mBuffers[i]; - - if (buf.mNumberChannels == 1) - { - if (numInChans < numOutChans) - memcpy (channels [numInChans], (const float*) buf.mData, sizeof (float) * numSamples); - else - channels [numInChans] = (float*) buf.mData; - - ++numInChans; - } - else - { - // need to de-interleave.. - for (unsigned int subChan = 0; subChan < buf.mNumberChannels && numInChans < numIn; ++subChan) - { - float* dest; - - if (numInChans < numOutChans) - { - dest = channels [numInChans++]; - } - else - { - dest = bufferSpace.getSampleData (nextSpareBufferChan++); - channels [numInChans++] = dest; - } - - const float* src = ((const float*) buf.mData) + subChan; - - for (int j = numSamples; --j >= 0;) - { - *dest++ = *src; - src += buf.mNumberChannels; - } - } - } - - if (numInChans >= numIn) - break; - } - - { - AudioSampleBuffer buffer (channels, jmax (numIn, numOut), numSamples); - - const ScopedLock sl (juceFilter->getCallbackLock()); - - if (juceFilter->isSuspended()) - { - for (int i = 0; i < numOut; ++i) - zeromem (channels [i], sizeof (float) * numSamples); - } - else - { - juceFilter->processBlock (buffer, midiEvents); - } - } - - if (! midiEvents.isEmpty()) - { -#if JucePlugin_ProducesMidiOutput - const uint8* midiEventData; - int midiEventSize, midiEventPosition; - MidiBuffer::Iterator i (midiEvents); - - while (i.getNextEvent (midiEventData, midiEventSize, midiEventPosition)) - { - jassert (((unsigned int) midiEventPosition) < (unsigned int) numSamples); - - - - //xxx - } -#else - // if your plugin creates midi messages, you'll need to set - // the JucePlugin_ProducesMidiOutput macro to 1 in your - // JucePluginCharacteristics.h file - //jassert (midiEvents.getNumEvents() <= numMidiEventsComingIn); -#endif - midiEvents.clear(); - } - - if (needToReinterleave) - { - nextSpareBufferChan = 0; - - for (i = 0; i < outBuffer.mNumberBuffers; ++i) - { - AudioBuffer& buf = outBuffer.mBuffers[i]; - - if (buf.mNumberChannels > 1) - { - for (unsigned int subChan = 0; subChan < buf.mNumberChannels; ++subChan) - { - const float* src = bufferSpace.getSampleData (nextSpareBufferChan++); - float* dest = ((float*) buf.mData) + subChan; - - for (int j = numSamples; --j >= 0;) - { - *dest = *src++; - dest += buf.mNumberChannels; - } - } - } - } - } - -#if ! JucePlugin_SilenceInProducesSilenceOut - ioActionFlags &= ~kAudioUnitRenderAction_OutputIsSilence; -#endif - } - - return noErr; - } - -protected: - OSStatus HandleMidiEvent (UInt8 nStatus, - UInt8 inChannel, - UInt8 inData1, - UInt8 inData2, - long inStartFrame) - { -#if JucePlugin_WantsMidiInput - uint8 data [4]; - data[0] = nStatus | inChannel; - data[1] = inData1; - data[2] = inData2; - - midiEvents.addEvent (data, 3, inStartFrame); -#endif - - return noErr; - } - - //============================================================================== -private: - AudioProcessor* juceFilter; - AudioSampleBuffer bufferSpace; - float** channels; - MidiBuffer midiEvents; - bool prepared; - SMPTETime lastSMPTETime; - AUChannelInfo channelInfo [numChannelConfigs]; - AudioUnitEvent auEvent; -}; - - -//============================================================================== -class JuceAUComponentHolder : public Component -{ -public: - JuceAUComponentHolder (Component* const editorComp) - { - addAndMakeVisible (editorComp); - setOpaque (true); - setVisible (true); - setBroughtToFrontOnMouseClick (true); - -#if ! JucePlugin_EditorRequiresKeyboardFocus - setWantsKeyboardFocus (false); -#endif - } - - ~JuceAUComponentHolder() - { - } - - void resized() - { - if (getNumChildComponents() > 0) - getChildComponent (0)->setBounds (0, 0, getWidth(), getHeight()); - } - - void paint (Graphics& g) - { - } -}; - -//============================================================================== -class JuceAUView : public AUCarbonViewBase, - public ComponentListener, - public MouseListener, - public Timer -{ - AudioProcessor* juceFilter; - AudioProcessorEditor* editorComp; - Component* windowComp; - bool recursive; - int mx, my; - -public: - JuceAUView (AudioUnitCarbonView auview) - : AUCarbonViewBase (auview), - juceFilter (0), - editorComp (0), - windowComp (0), - recursive (false), - mx (0), - my (0) - { - } - - ~JuceAUView() - { - deleteUI(); - } - - ComponentResult CreateUI (Float32 inXOffset, Float32 inYOffset) - { - if (juceFilter == 0) - { - UInt32 propertySize = sizeof (&juceFilter); - - AudioUnitGetProperty (GetEditAudioUnit(), - juceFilterObjectPropertyID, - kAudioUnitScope_Global, - 0, - &juceFilter, - &propertySize); - } - - if (juceFilter != 0) - { - deleteUI(); - - editorComp = juceFilter->createEditorIfNeeded(); - - const int w = editorComp->getWidth(); - const int h = editorComp->getHeight(); - - editorComp->setOpaque (true); - editorComp->setVisible (true); - - windowComp = new JuceAUComponentHolder (editorComp); - windowComp->setBounds ((int) inXOffset, (int) inYOffset, w, h); - - windowComp->addToDesktop (0, (void*) mCarbonPane); - SizeControl (mCarbonPane, w, h); - - editorComp->addComponentListener (this); - windowComp->addMouseListener (this, true); - - startTimer (20); - } - else - { - jassertfalse // can't get a pointer to our effect - } - - return noErr; - } - - void componentMovedOrResized (Component& component, - bool wasMoved, - bool wasResized) - { - if (! recursive) - { - recursive = true; - - if (editorComp != 0 && wasResized) - { - const int w = jmax (32, editorComp->getWidth()); - const int h = jmax (32, editorComp->getHeight()); - - SizeControl (mCarbonPane, w, h); - - if (windowComp->getWidth() != w - || windowComp->getHeight() != h) - { - windowComp->setSize (w, h); - } - - editorComp->repaint(); - } - - recursive = false; - } - } - - void timerCallback() - { - // for some stupid Apple-related reason, mouse move events just don't seem to get sent - // to the windows in an AU, so we have to bodge it here and simulate them with a - // timer.. - if (editorComp != 0) - { - int x, y; - Desktop::getInstance().getMousePosition (x, y); - - if (x != mx || y != my) - { - mx = x; - my = y; - - if (! ModifierKeys::getCurrentModifiers().isAnyMouseButtonDown()) - { - for (int i = ComponentPeer::getNumPeers(); --i >= 0;) - { - ComponentPeer* const peer = ComponentPeer::getPeer (i); - - int rx = x, ry = y; - peer->getComponent()->globalPositionToRelative (rx, ry); - - if (peer->contains (rx, ry, false) && peer->getComponent()->isShowing()) - { - peer->handleMouseMove (rx, ry, Time::currentTimeMillis()); - break; - } - } - } - } - } - } - - void mouseMove (const MouseEvent& e) - { - Desktop::getInstance().getMousePosition (mx, my); - startTimer (20); - } - -private: - void deleteUI() - { - PopupMenu::dismissAllActiveMenus(); - - // there's some kind of component currently modal, but the host - // is trying to delete our plugin.. - jassert (Component::getCurrentlyModalComponent() == 0); - - if (editorComp != 0) - juceFilter->editorBeingDeleted (editorComp); - - deleteAndZero (editorComp); - deleteAndZero (windowComp); - } -}; - -//============================================================================== -#define JUCE_COMPONENT_ENTRYX(Class, Name, Suffix) \ -extern "C" __attribute__((visibility("default"))) ComponentResult Name ## Suffix (ComponentParameters* params, Class* obj); \ -extern "C" __attribute__((visibility("default"))) ComponentResult Name ## Suffix (ComponentParameters* params, Class* obj) \ -{ \ - return ComponentEntryPoint::Dispatch(params, obj); \ -} - -#define JUCE_COMPONENT_ENTRY(Class, Name, Suffix) JUCE_COMPONENT_ENTRYX(Class, Name, Suffix) - -JUCE_COMPONENT_ENTRY (JuceAU, JucePlugin_AUExportPrefix, Entry) -JUCE_COMPONENT_ENTRY (JuceAUView, JucePlugin_AUExportPrefix, ViewEntry) diff --git a/extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.r b/extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.r deleted file mode 100644 index 5d32214260..0000000000 --- a/extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.r +++ /dev/null @@ -1,70 +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 -#include - -//============================================================================== -/* 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" - -//============================================================================== -// component resources for Audio Unit Carbon View -#define RES_ID 2000 -#define COMP_TYPE kAudioUnitCarbonViewComponentType -#define COMP_SUBTYPE JucePlugin_AUSubType -#define COMP_MANUF JucePlugin_AUManufacturerCode -#define VERSION JucePlugin_VersionCode -#define NAME JucePlugin_Manufacturer ": " JucePlugin_Name " View" -#define DESCRIPTION NAME -#define ENTRY_POINT JucePlugin_AUExportPrefixQuoted "ViewEntry" - -#include "/Developer/Examples/CoreAudio/AudioUnits/AUPublic/AUBase/AUResources.r" diff --git a/extras/audio plugins/wrapper/formats/RTAS/DefaultResourceFile b/extras/audio plugins/wrapper/formats/RTAS/DefaultResourceFile deleted file mode 100644 index d8bfb4a1c8..0000000000 Binary files a/extras/audio plugins/wrapper/formats/RTAS/DefaultResourceFile and /dev/null differ diff --git a/extras/audio plugins/wrapper/formats/RTAS/DummyResourceFile.r b/extras/audio plugins/wrapper/formats/RTAS/DummyResourceFile.r deleted file mode 100644 index b607d8d1be..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/DummyResourceFile.r +++ /dev/null @@ -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.. \ No newline at end of file diff --git a/extras/audio plugins/wrapper/formats/RTAS/juce_RTASCompileFlags.h b/extras/audio plugins/wrapper/formats/RTAS/juce_RTASCompileFlags.h deleted file mode 100644 index 2427003106..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/juce_RTASCompileFlags.h +++ /dev/null @@ -1,63 +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. - - ============================================================================== -*/ - -#ifndef __JUCE_RTASCOMPILEFLAGS_JUCEHEADER__ -#define __JUCE_RTASCOMPILEFLAGS_JUCEHEADER__ - -#ifdef _MSC_VER - - #define kCompileAsCodeResource 0 - #define kBuildStandAlone 0 - #define kNoDSP 0 - #define kNoDAE 0 - #define kNoSDS 0 - #define kNoViews 0 - #define kUseDSPCodeDecode 0 - - #define WINDOWS_VERSION 1 - #define PLUGIN_SDK_BUILD 1 - #define PLUGIN_SDK_DIRECTMIDI 1 - -#else - - #define kCompileAsCodeResource 0 - #define kNoDSP 1 - #define kNoDAE 0 - #define kNoSDS 0 - #define kNoViews 0 - #define kUseDSPCodeDecode 0 - - #define PLUGIN_SDK_BUILD 1 - #define PLUGIN_SDK_DIRECTMIDI 1 - -#endif - -#endif // __JUCE_RTASCOMPILEFLAGS_JUCEHEADER__ diff --git a/extras/audio plugins/wrapper/formats/RTAS/juce_RTASUtilities.cpp b/extras/audio plugins/wrapper/formats/RTAS/juce_RTASUtilities.cpp deleted file mode 100644 index acaf0e8924..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/juce_RTASUtilities.cpp +++ /dev/null @@ -1,139 +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. - - ============================================================================== -*/ - -#if _MSC_VER - -// (these functions are in a separate file because of problems including windows.h -// at the same time as the Digi headers) - -#include - -#ifdef _MSC_VER - #pragma pack (push, 8) -#endif - -#include "../../../../../juce.h" - -#ifdef _MSC_VER - #pragma pack (pop) -#endif - - -//============================================================================== -void JUCE_CALLTYPE attachSubWindow (void* hostWindow, - int& titleW, int& titleH, - Component* comp) -{ - RECT clientRect; - GetClientRect ((HWND) hostWindow, &clientRect); - - titleW = clientRect.right - clientRect.left; - titleH = jmax (0, (clientRect.bottom - clientRect.top) - comp->getHeight()); - comp->setTopLeftPosition (0, titleH); - - comp->addToDesktop (0); - - HWND plugWnd = (HWND) comp->getWindowHandle(); - SetParent (plugWnd, (HWND) hostWindow); - - DWORD val = GetWindowLong (plugWnd, GWL_STYLE); - val = (val & ~WS_POPUP) | WS_CHILD; - SetWindowLong (plugWnd, GWL_STYLE, val); -} - -void JUCE_CALLTYPE resizeHostWindow (void* hostWindow, - int& titleW, int& titleH, - Component* comp) -{ - RECT clientRect, windowRect; - GetClientRect ((HWND) hostWindow, &clientRect); - GetWindowRect ((HWND) hostWindow, &windowRect); - const int borderW = (windowRect.right - windowRect.left) - (clientRect.right - clientRect.left); - const int borderH = (windowRect.bottom - windowRect.top) - (clientRect.bottom - clientRect.top); - - SetWindowPos ((HWND) hostWindow, 0, 0, 0, - borderW + jmax (titleW, comp->getWidth()), - borderH + comp->getHeight() + titleH, - SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOOWNERZORDER); -} - -#if ! JucePlugin_EditorRequiresKeyboardFocus - -static HWND findMDIParentOf (HWND w) -{ - const int frameThickness = GetSystemMetrics (SM_CYFIXEDFRAME); - - while (w != 0) - { - HWND parent = GetParent (w); - - if (parent == 0) - break; - - TCHAR windowType [32]; - zeromem (windowType, sizeof (windowType)); - GetClassName (parent, windowType, 31); - - if (String (windowType).equalsIgnoreCase (T("MDIClient"))) - { - w = parent; - break; - } - - RECT windowPos; - GetWindowRect (w, &windowPos); - - RECT parentPos; - GetWindowRect (parent, &parentPos); - - int dw = (parentPos.right - parentPos.left) - (windowPos.right - windowPos.left); - int dh = (parentPos.bottom - parentPos.top) - (windowPos.bottom - windowPos.top); - - if (dw > 100 || dh > 100) - break; - - w = parent; - - if (dw == 2 * frameThickness) - break; - } - - return w; -} - -void JUCE_CALLTYPE passFocusToHostWindow (void* hostWindow) -{ - SetFocus (findMDIParentOf ((HWND) hostWindow)); -} - -#endif - -#endif diff --git a/extras/audio plugins/wrapper/formats/RTAS/juce_RTASWrapper.cpp b/extras/audio plugins/wrapper/formats/RTAS/juce_RTASWrapper.cpp deleted file mode 100644 index 812d8c8217..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/juce_RTASWrapper.cpp +++ /dev/null @@ -1,1092 +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_RTASCompileFlags.h" - -#ifdef _MSC_VER - // the Digidesign projects all use a struct alignment of 2.. - #pragma pack (2) - #pragma warning (disable: 4267) - - #include "ForcedInclude.h" - #include "Mac2Win.H" -#endif - -/* Note about include paths - ------------------------ - - To be able to include all the Digidesign headers correctly, you'll need to add this - lot to your include path: - - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\PluginLibrary\EffectClasses - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\PluginLibrary\ProcessClasses - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\PluginLibrary\ProcessClasses\Interfaces - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\PluginLibrary\Utilities - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\PluginLibrary\RTASP_Adapt - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\PluginLibrary\CoreClasses - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\PluginLibrary\Controls - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\PluginLibrary\Meters - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\PluginLibrary\ViewClasses - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\PluginLibrary\DSPClasses - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\PluginLibrary\Interfaces - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\common - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\common\Platform - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugins\SignalProcessing\Public - c:\yourdirectory\PT_711_SDK\AlturaPorts\TDMPlugIns\DSPManager\Interfaces - c:\yourdirectory\PT_711_SDK\AlturaPorts\SADriver\Interfaces - c:\yourdirectory\PT_711_SDK\AlturaPorts\DigiPublic\Interfaces - c:\yourdirectory\PT_711_SDK\AlturaPorts\Fic\Interfaces\DAEClient - c:\yourdirectory\PT_711_SDK\AlturaPorts\NewFileLibs\Cmn - c:\yourdirectory\PT_711_SDK\AlturaPorts\NewFileLibs\DOA - c:\yourdirectory\PT_711_SDK\AlturaPorts\AlturaSource\PPC_H - c:\yourdirectory\PT_711_SDK\AlturaPorts\AlturaSource\AppSupport -*/ - -#include "CEffectGroupMIDI.h" -#include "CEffectProcessMIDI.h" -#include "CEffectProcessRTAS.h" -#include "CCustomView.h" -#include "CEffectTypeRTAS.h" -#include "CPluginControl.h" -#include "CPluginControl_OnOff.h" - -//============================================================================== -#ifdef _MSC_VER - #pragma pack (push, 8) -#endif - -#include "../../../../../juce.h" -#include "../../juce_IncludeCharacteristics.h" - -#ifdef _MSC_VER - #pragma pack (pop) -#endif - -#undef Component -#undef MemoryBlock - -//============================================================================== -#if JUCE_WIN32 - extern void JUCE_CALLTYPE attachSubWindow (void* hostWindow, int& titleW, int& titleH, juce::Component* comp); - extern void JUCE_CALLTYPE resizeHostWindow (void* hostWindow, int& titleW, int& titleH, juce::Component* comp); - #if ! JucePlugin_EditorRequiresKeyboardFocus - extern void JUCE_CALLTYPE passFocusToHostWindow (void* hostWindow); - #endif -#endif - -const int midiBufferSize = 1024; -const OSType juceChunkType = 'juce'; -static const int bypassControlIndex = 1; - -//============================================================================== -/** Somewhere in the codebase of your plugin, you need to implement this function - and make it return a new instance of the filter subclass that you're building. -*/ -extern AudioProcessor* JUCE_CALLTYPE createPluginFilter(); - - -//============================================================================== -static float longToFloat (const long n) throw() -{ - return (float) ((((double) n) + (double) 0x80000000) / (double) 0xffffffff); -} - -static long floatToLong (const float n) throw() -{ - return roundDoubleToInt (jlimit (-(double) 0x80000000, - (double) 0x7fffffff, - n * (double) 0xffffffff - (double) 0x80000000)); -} - -static int numInstances = 0; - -//============================================================================== -class JucePlugInProcess : public CEffectProcessMIDI, - public CEffectProcessRTAS, - public AudioProcessorListener, - public AudioPlayHead, - public AsyncUpdater -{ -public: - //============================================================================== - JucePlugInProcess() - : channels (0), - prepared (false), - midiBufferNode (0), - midiTransport (0), - sampleRate (44100.0) - { - juceFilter = createPluginFilter(); - jassert (juceFilter != 0); - - AddChunk (juceChunkType, "Juce Audio Plugin Data"); - - ++numInstances; - } - - ~JucePlugInProcess() - { - if (mLoggedIn) - MIDILogOut(); - - deleteAndZero (midiBufferNode); - deleteAndZero (midiTransport); - - if (prepared) - juceFilter->releaseResources(); - - delete juceFilter; - juce_free (channels); - - if (--numInstances == 0) - shutdownJuce_GUI(); - } - - //============================================================================== - class JuceCustomUIView : public CCustomView - { - public: - //============================================================================== - JuceCustomUIView (AudioProcessor* const filter_) - : filter (filter_), - editorComp (0), - wrapper (0) - { - // setting the size in here crashes PT for some reason, so keep it simple.. - } - - ~JuceCustomUIView() - { - deleteEditorComp(); - } - - //============================================================================== - void updateSize() - { - if (editorComp == 0) - { - editorComp = filter->createEditorIfNeeded(); - jassert (editorComp != 0); - } - - Rect r; - r.left = 0; - r.top = 0; - r.right = editorComp->getWidth(); - r.bottom = editorComp->getHeight(); - - SetRect (&r); - } - - void attachToWindow (GrafPtr port) - { - if (port != 0) - { - updateSize(); - -#if JUCE_WIN32 - void* const hostWindow = (void*) ASI_GethWnd ((WindowPtr) port); -#else - void* const hostWindow = (void*) GetWindowFromPort (port); -#endif - deleteAndZero (wrapper); - - wrapper = new EditorCompWrapper (hostWindow, editorComp, this); - } - else - { - deleteEditorComp(); - } - } - - void DrawContents (Rect*) - { - if (wrapper != 0) - { - ComponentPeer* const peer = wrapper->getPeer(); - - if (peer != 0) - { -#if JUCE_WIN32 - // (seems to be required in PT6.4, but not in 7.x) - peer->repaint (0, 0, wrapper->getWidth(), wrapper->getHeight()); - -#elif JUCE_PPC - // This crap is needed because if you resize a window, PT doesn't - // update its clip region, so only part of your new window gets drawn. - // This overrides the clipping region that's being passed into the Draw - // method. - Rect visible; - GetVisibleRect (&visible); - - RestoreFocus(); - Focus (&visible); -#endif - peer->performAnyPendingRepaintsNow(); - } - } - } - - void DrawBackground (Rect* r) - { - } - - //============================================================================== - private: - AudioProcessor* const filter; - juce::Component* wrapper; - AudioProcessorEditor* editorComp; - - void deleteEditorComp() - { - if (editorComp != 0) - { - PopupMenu::dismissAllActiveMenus(); - - juce::Component* const modalComponent = juce::Component::getCurrentlyModalComponent(); - if (modalComponent != 0) - modalComponent->exitModalState (0); - - filter->editorBeingDeleted (editorComp); - deleteAndZero (editorComp); - deleteAndZero (wrapper); - } - } - - //============================================================================== - // A component to hold the AudioProcessorEditor, and cope with some housekeeping - // chores when it changes or repaints. - class EditorCompWrapper : public juce::Component, -#if JUCE_MAC - public Timer -#else - public FocusChangeListener -#endif - { - public: - EditorCompWrapper (void* const hostWindow_, - AudioProcessorEditor* const editorComp, - JuceCustomUIView* const owner_) - : hostWindow (hostWindow_), - owner (owner_), - titleW (0), - titleH (0) -#if JUCE_MAC - , forcedRepaintTimer (0) -#endif - { -#if ! JucePlugin_EditorRequiresKeyboardFocus - setWantsKeyboardFocus (false); -#endif - setOpaque (true); - setBroughtToFrontOnMouseClick (true); - setBounds (editorComp->getBounds()); - editorComp->setTopLeftPosition (0, 0); - addAndMakeVisible (editorComp); - -#if JUCE_WIN32 - attachSubWindow (hostWindow, titleW, titleH, this); - setVisible (true); -#else - SetAutomaticControlDragTrackingEnabledForWindow ((WindowRef) hostWindow_, true); - - WindowAttributes attributes; - GetWindowAttributes ((WindowRef) hostWindow_, &attributes); - - parentView = 0; - - if ((attributes & kWindowCompositingAttribute) != 0) - { - HIViewRef root = HIViewGetRoot ((WindowRef) hostWindow_); - HIViewFindByID (root, kHIViewWindowContentID, &parentView); - - if (parentView == 0) - parentView = root; - } - else - { - GetRootControl ((WindowRef) hostWindow_, (ControlRef*) &parentView); - - if (parentView == 0) - CreateRootControl ((WindowRef) hostWindow_, (ControlRef*) &parentView); - } - - jassert (parentView != 0); - Rect clientRect; - GetWindowBounds ((WindowRef) hostWindow, kWindowContentRgn, &clientRect); - - titleW = clientRect.right - clientRect.left; - titleH = jmax (0, (clientRect.bottom - clientRect.top) - getHeight()); - setTopLeftPosition (0, 0); - - HIViewSetNeedsDisplay (parentView, true); - - setVisible (true); - addToDesktop (ComponentPeer::windowRepaintedExplictly, (void*) parentView); - - HIViewRef pluginView = HIViewGetFirstSubview (parentView); - - #if ! JucePlugin_EditorRequiresKeyboardFocus - HIViewSetActivated (pluginView, false); - #endif - /* This is a convoluted and desperate workaround for a Digi (or maybe Apple) - layout bug. Until the parent control gets some kind of mouse-move - event, then our plugin's HIView remains stuck at (0, 0) in the - window (despite drawing correctly), which blocks mouse events from - getting to the widgets above it. - - After days of frustration the only hack I can find that works - is to use this arcane function to redirect mouse events to - the parent, while running a timer to spot the moment when our - view mysteriously snaps back to its correct location. - - If anyone at Digi or Apple is reading this and they realise that it's - their fault, could they please give me back the week of my life that - they made me waste on this rubbish. Thankyou. - */ - SetControlSupervisor (pluginView, parentView); - startTimer (150); -#endif - -#if JUCE_WIN32 && ! JucePlugin_EditorRequiresKeyboardFocus - Desktop::getInstance().addFocusChangeListener (this); -#endif - } - - ~EditorCompWrapper() - { -#if JUCE_WIN32 && ! JucePlugin_EditorRequiresKeyboardFocus - Desktop::getInstance().removeFocusChangeListener (this); -#endif - -#if JUCE_MAC - delete forcedRepaintTimer; -#endif - } - - void paint (Graphics&) - { -#if JUCE_MAC - if (forcedRepaintTimer != 0) - forcedRepaintTimer->stopTimer(); -#endif - } - - void resized() - { - juce::Component* const c = getChildComponent (0); - - if (c != 0) - c->setBounds (0, 0, getWidth(), getHeight()); - - repaint(); - } - -#if JUCE_MAC - void timerCallback() - { - // Wait for the moment when PT deigns to allow our view to - // take up its actual location (see rant above) - HIViewRef content = 0; - HIViewFindByID (HIViewGetRoot ((WindowRef) hostWindow), kHIViewWindowContentID, &content); - HIPoint p = { 0.0f, 0.0f }; - - HIViewRef v = HIViewGetFirstSubview (parentView); - HIViewConvertPoint (&p, v, content); - - if (p.y > 12) - { - HIViewRef v = HIViewGetFirstSubview (parentView); - SetControlSupervisor (v, 0); - stopTimer(); - - forcedRepaintTimer = new RepaintCheckTimer (*this); - } - } -#endif - -#if JUCE_WIN32 - void globalFocusChanged (juce::Component*) - { - #if ! JucePlugin_EditorRequiresKeyboardFocus - if (hasKeyboardFocus (true)) - passFocusToHostWindow (hostWindow); - #endif - } -#endif - - void childBoundsChanged (juce::Component* child) - { - setSize (child->getWidth(), child->getHeight()); - child->setTopLeftPosition (0, 0); - -#if JUCE_WIN32 - resizeHostWindow (hostWindow, titleW, titleH, this); -#else - Rect r; - GetWindowBounds ((WindowRef) hostWindow, kWindowContentRgn, &r); - - HIRect p; - zerostruct (p); - HIViewConvertRect (&p, parentView, 0); // find the X position of our view in case there's space to the left of it - - r.right = r.left + jmax (titleW, ((int) p.origin.x) + getWidth()); - r.bottom = r.top + getHeight() + titleH; - - SetWindowBounds ((WindowRef) hostWindow, kWindowContentRgn, &r); - - owner->updateSize(); - owner->Invalidate(); -#endif - } - - //============================================================================== - juce_UseDebuggingNewOperator - -#if JUCE_MAC - protected: - void internalRepaint (int x, int y, int w, int h) - { - Component::internalRepaint (x, y, w, h); - owner->Invalidate(); - - if (forcedRepaintTimer != 0 && ! forcedRepaintTimer->isTimerRunning()) - forcedRepaintTimer->startTimer (1000 / 25); - } - - HIViewRef parentView; -#endif - - private: - void* const hostWindow; - JuceCustomUIView* const owner; - int titleW, titleH; - -#if JUCE_MAC - // if PT makes us wait too long for a redraw after we've - // asked for one, this should kick in and force one to happen - class RepaintCheckTimer : public Timer - { - public: - RepaintCheckTimer (EditorCompWrapper& owner_) - : owner (owner_) - { - } - - void timerCallback() - { - stopTimer(); - ComponentPeer* const peer = owner.getPeer(); - - if (peer != 0) - peer->performAnyPendingRepaintsNow(); - } - - EditorCompWrapper& owner; - }; - - RepaintCheckTimer* forcedRepaintTimer; -#endif - }; - }; - - JuceCustomUIView* getView() const - { - return dynamic_cast (fOurPlugInView); - } - - void GetViewRect (Rect* size) - { - if (getView() != 0) - getView()->updateSize(); - - CEffectProcessRTAS::GetViewRect (size); - } - - CPlugInView* CreateCPlugInView() - { - return new JuceCustomUIView (juceFilter); - } - - void SetViewPort (GrafPtr port) - { - CEffectProcessRTAS::SetViewPort (port); - - if (getView() != 0) - getView()->attachToWindow (port); - } - - //============================================================================== -protected: - ComponentResult GetDelaySamplesLong (long* aNumSamples) - { - if (aNumSamples != 0) - *aNumSamples = juceFilter != 0 ? juceFilter->getLatencySamples() : 0; - - return noErr; - } - - //============================================================================== - void EffectInit() - { - SFicPlugInStemFormats stems; - GetProcessType()->GetStemFormats (&stems); - - juceFilter->setPlayConfigDetails (fNumInputs, fNumOutputs, - juceFilter->getSampleRate(), juceFilter->getBlockSize()); - - AddControl (new CPluginControl_OnOff ('bypa', "Master Bypass\nMastrByp\nMByp\nByp", false, true)); - DefineMasterBypassControlIndex (bypassControlIndex); - - for (int i = 0; i < juceFilter->getNumParameters(); ++i) - AddControl (new JucePluginControl (juceFilter, i)); - - // we need to do this midi log-in to get timecode, regardless of whether - // the plugin actually uses midi... - if (MIDILogIn() == noErr) - { -#if JucePlugin_WantsMidiInput - CEffectType* const type = dynamic_cast (this->GetProcessType()); - - if (type != 0) - { - char nodeName [64]; - type->GetProcessTypeName (63, nodeName); - p2cstrcpy (nodeName, reinterpret_cast (nodeName)); - - midiBufferNode = new CEffectMIDIOtherBufferedNode (&mMIDIWorld, - 8192, - eLocalNode, - nodeName, - midiBuffer); - - midiBufferNode->Initialize (1, true); - } -#endif - } - - midiTransport = new CEffectMIDITransport (&mMIDIWorld); - - juceFilter->setPlayHead (this); - juceFilter->addListener (this); - } - - void handleAsyncUpdate() - { - if (! prepared) - { - sampleRate = gProcessGroup->GetSampleRate(); - jassert (sampleRate > 0); - - juce_free (channels); - channels = (float**) juce_calloc (sizeof (float*) * jmax (juceFilter->getNumInputChannels(), - juceFilter->getNumOutputChannels())); - - juceFilter->setPlayConfigDetails (fNumInputs, fNumOutputs, - sampleRate, mRTGlobals->mHWBufferSizeInSamples); - - juceFilter->prepareToPlay (sampleRate, - mRTGlobals->mHWBufferSizeInSamples); - - prepared = true; - } - } - - void RenderAudio (float** inputs, float** outputs, long numSamples) - { - if (! prepared) - { - triggerAsyncUpdate(); - bypassBuffers (inputs, outputs, numSamples); - return; - } - - if (mBypassed) - { - bypassBuffers (inputs, outputs, numSamples); - return; - } - -#if JucePlugin_WantsMidiInput - midiEvents.clear(); - - const Cmn_UInt32 bufferSize = mRTGlobals->mHWBufferSizeInSamples; - - if (midiBufferNode->GetAdvanceScheduleTime() != bufferSize) - midiBufferNode->SetAdvanceScheduleTime (bufferSize); - - if (midiBufferNode->FillMIDIBuffer (mRTGlobals->mRunningTime, numSamples) == noErr) - { - jassert (midiBufferNode->GetBufferPtr() != 0); - const int numMidiEvents = midiBufferNode->GetBufferSize(); - - for (int i = 0; i < numMidiEvents; ++i) - { - const DirectMidiPacket& m = midiBuffer[i]; - - jassert ((int) m.mTimestamp < numSamples); - - midiEvents.addEvent (m.mData, m.mLength, - jlimit (0, (int) numSamples - 1, (int) m.mTimestamp)); - } - } -#endif - -#if defined (JUCE_DEBUG) || JUCE_LOG_ASSERTIONS - const int numMidiEventsComingIn = midiEvents.getNumEvents(); -#endif - - { - const ScopedLock sl (juceFilter->getCallbackLock()); - - const int numIn = juceFilter->getNumInputChannels(); - const int numOut = juceFilter->getNumOutputChannels(); - const int totalChans = jmax (numIn, numOut); - - if (juceFilter->isSuspended()) - { - for (int i = 0; i < numOut; ++i) - zeromem (outputs [i], sizeof (float) * numSamples); - } - else - { - { - int i; - for (i = 0; i < numOut; ++i) - { - channels[i] = outputs [i]; - - if (i < numIn && inputs != outputs) - memcpy (outputs [i], inputs[i], sizeof (float) * numSamples); - } - - for (; i < numIn; ++i) - channels [i] = inputs [i]; - } - - AudioSampleBuffer chans (channels, totalChans, numSamples); - - juceFilter->processBlock (chans, midiEvents); - } - } - - if (! midiEvents.isEmpty()) - { -#if JucePlugin_ProducesMidiOutput - const uint8* midiEventData; - int midiEventSize, midiEventPosition; - MidiBuffer::Iterator i (midiEvents); - - while (i.getNextEvent (midiEventData, midiEventSize, midiEventPosition)) - { -// jassert (midiEventPosition >= 0 && midiEventPosition < (int) numSamples); - - //xxx - } -#else - // if your plugin creates midi messages, you'll need to set - // the JucePlugin_ProducesMidiOutput macro to 1 in your - // JucePluginCharacteristics.h file - jassert (midiEvents.getNumEvents() <= numMidiEventsComingIn); -#endif - - midiEvents.clear(); - } - } - - //============================================================================== - ComponentResult GetChunkSize (OSType chunkID, long* size) - { - if (chunkID == juceChunkType) - { - tempFilterData.setSize (0); - juceFilter->getStateInformation (tempFilterData); - - *size = sizeof (SFicPlugInChunkHeader) + tempFilterData.getSize(); - return noErr; - } - - return CEffectProcessMIDI::GetChunkSize (chunkID, size); - } - - ComponentResult GetChunk (OSType chunkID, SFicPlugInChunk* chunk) - { - if (chunkID == juceChunkType) - { - if (tempFilterData.getSize() == 0) - juceFilter->getStateInformation (tempFilterData); - - chunk->fSize = sizeof (SFicPlugInChunkHeader) + tempFilterData.getSize(); - tempFilterData.copyTo ((void*) chunk->fData, 0, tempFilterData.getSize()); - - tempFilterData.setSize (0); - - return noErr; - } - - return CEffectProcessMIDI::GetChunk (chunkID, chunk); - } - - ComponentResult SetChunk (OSType chunkID, SFicPlugInChunk* chunk) - { - if (chunkID == juceChunkType) - { - tempFilterData.setSize (0); - - if (chunk->fSize - sizeof (SFicPlugInChunkHeader) > 0) - { - juceFilter->setStateInformation ((void*) chunk->fData, - chunk->fSize - sizeof (SFicPlugInChunkHeader)); - } - - return noErr; - } - - return CEffectProcessMIDI::SetChunk (chunkID, chunk); - } - - //============================================================================== - ComponentResult UpdateControlValue (long controlIndex, long value) - { - if (controlIndex != bypassControlIndex) - juceFilter->setParameter (controlIndex - 2, longToFloat (value)); - else - mBypassed = (value > 0); - - return CProcess::UpdateControlValue (controlIndex, value); - } - - //============================================================================== - bool getCurrentPosition (AudioPlayHead::CurrentPositionInfo& info) - { - // this method can only be called while the plugin is running - jassert (prepared); - - Cmn_Float64 bpm = 120.0; - Cmn_Int32 num = 4, denom = 4; - Cmn_Int64 ticks = 0; - Cmn_Bool isPlaying = false; - - if (midiTransport != 0) - { - midiTransport->GetCurrentTempo (&bpm); - midiTransport->IsTransportPlaying (&isPlaying); - midiTransport->GetCurrentMeter (&num, &denom); - midiTransport->GetCurrentTickPosition (&ticks); - } - - info.bpm = bpm; - info.timeSigNumerator = num; - info.timeSigDenominator = denom; - info.isPlaying = isPlaying; - info.isRecording = false; - info.ppqPosition = ticks / 960000.0; - info.ppqPositionOfLastBarStart = 0; //xxx no idea how to get this correctly.. - - // xxx incorrect if there are tempo changes, but there's no - // other way of getting this info.. - info.timeInSeconds = ticks * (60.0 / 960000.0) / bpm; - - double framesPerSec = 24.0; - - switch (fTimeCodeInfo.mFrameRate) - { - case ficFrameRate_24Frame: - info.frameRate = AudioPlayHead::fps24; - break; - - case ficFrameRate_25Frame: - info.frameRate = AudioPlayHead::fps25; - framesPerSec = 25.0; - break; - - case ficFrameRate_2997NonDrop: - info.frameRate = AudioPlayHead::fps2997; - framesPerSec = 29.97002997; - break; - - case ficFrameRate_2997DropFrame: - info.frameRate = AudioPlayHead::fps2997drop; - framesPerSec = 29.97002997; - break; - - case ficFrameRate_30NonDrop: - info.frameRate = AudioPlayHead::fps30; - framesPerSec = 30.0; - break; - - case ficFrameRate_30DropFrame: - info.frameRate = AudioPlayHead::fps30drop; - framesPerSec = 30.0; - break; - - case ficFrameRate_23976: - // xxx not strictly true.. - info.frameRate = AudioPlayHead::fps24; - framesPerSec = 23.976; - break; - - default: - info.frameRate = AudioPlayHead::fpsUnknown; - break; - } - - info.editOriginTime = fTimeCodeInfo.mFrameOffset / framesPerSec; - - return true; - } - - void audioProcessorParameterChanged (AudioProcessor*, int index, float newValue) - { - SetControlValue (index + 2, floatToLong (newValue)); - } - - void audioProcessorParameterChangeGestureBegin (AudioProcessor*, int index) - { - TouchControl (index + 2); - } - - void audioProcessorParameterChangeGestureEnd (AudioProcessor*, int index) - { - ReleaseControl (index + 2); - } - - void audioProcessorChanged (AudioProcessor*) - { - // xxx is there an RTAS equivalent? - } - - //============================================================================== -private: - AudioProcessor* juceFilter; - MidiBuffer midiEvents; - CEffectMIDIOtherBufferedNode* midiBufferNode; - CEffectMIDITransport* midiTransport; - DirectMidiPacket midiBuffer [midiBufferSize]; - - JUCE_NAMESPACE::MemoryBlock tempFilterData; - float** channels; - bool prepared; - double sampleRate; - - void bypassBuffers (float** const inputs, float** const outputs, const long numSamples) const - { - for (int i = fNumOutputs; --i >= 0;) - { - if (i < fNumInputs) - memcpy (outputs[i], inputs[i], numSamples * sizeof (float)); - else - zeromem (outputs[i], numSamples * sizeof (float)); - } - } - - //============================================================================== - class JucePluginControl : public CPluginControl - { - public: - //============================================================================== - JucePluginControl (AudioProcessor* const juceFilter_, const int index_) - : juceFilter (juceFilter_), - index (index_) - { - } - - ~JucePluginControl() - { - } - - //============================================================================== - OSType GetID() const { return index + 1; } - long GetDefaultValue() const { return floatToLong (0); } - void SetDefaultValue (long) {} - long GetNumSteps() const { return 0xffffffff; } - - long ConvertStringToValue (const char* valueString) const - { - return floatToLong (String (valueString).getFloatValue()); - } - - Cmn_Bool IsKeyValid (long key) const { return true; } - - void GetNameOfLength (char* name, int maxLength, OSType inControllerType) const - { - juceFilter->getParameterName (index).copyToBuffer (name, maxLength); - } - - long GetPriority() const { return kFicCooperativeTaskPriority; } - - long GetOrientation() const - { - return kDAE_LeftMinRightMax | kDAE_BottomMinTopMax - | kDAE_RotarySingleDotMode | kDAE_RotaryLeftMinRightMax; - } - - long GetControlType() const { return kDAE_ContinuousValues; } - - void GetValueString (char* valueString, int maxLength, long value) const - { - juceFilter->getParameterText (index).copyToBuffer (valueString, maxLength); - } - - Cmn_Bool IsAutomatable() const - { - return juceFilter->isParameterAutomatable (index); - } - - private: - //============================================================================== - AudioProcessor* const juceFilter; - const int index; - - JucePluginControl (const JucePluginControl&); - const JucePluginControl& operator= (const JucePluginControl&); - }; -}; - - -//============================================================================== -class JucePlugInGroup : public CEffectGroupMIDI -{ -public: - //============================================================================== - JucePlugInGroup() - { - DefineManufacturerNamesAndID (JucePlugin_Manufacturer, JucePlugin_RTASManufacturerCode); - DefinePlugInNamesAndVersion (createRTASName(), JucePlugin_VersionCode); - -#ifndef JUCE_DEBUG - AddGestalt (pluginGestalt_IsCacheable); -#endif - } - - ~JucePlugInGroup() - { - shutdownJuce_GUI(); - shutdownJuce_NonGUI(); - } - - //============================================================================== - void CreateEffectTypes() - { - const short channelConfigs[][2] = { JucePlugin_PreferredChannelConfigurations }; - const int numConfigs = numElementsInArray (channelConfigs); - - // You need to actually add some configurations to the JucePlugin_PreferredChannelConfigurations - // value in your JucePluginCharacteristics.h file.. - jassert (numConfigs > 0); - - for (int i = 0; i < numConfigs; ++i) - { - CEffectType* const type - = new CEffectTypeRTAS ('jcaa' + i, - JucePlugin_RTASProductId, - JucePlugin_RTASCategory); - - type->DefineTypeNames (createRTASName()); - type->DefineSampleRateSupport (eSupports48kAnd96kAnd192k); - - type->DefineStemFormats (getFormatForChans (channelConfigs [i][0]), - getFormatForChans (channelConfigs [i][1])); - - type->AddGestalt (pluginGestalt_CanBypass); - type->AddGestalt (pluginGestalt_SupportsVariableQuanta); - type->AttachEffectProcessCreator (createNewProcess); - - AddEffectType (type); - } - } - - void Initialize() - { - CEffectGroupMIDI::Initialize(); - } - - //============================================================================== -private: - static CEffectProcess* createNewProcess() - { - // Juce setup -#if JUCE_WIN32 - PlatformUtilities::setCurrentModuleInstanceHandle (gThisModule); -#endif - initialiseJuce_GUI(); - - return new JucePlugInProcess(); - } - - static const String createRTASName() - { - return String (JucePlugin_Name) + T("\n") - + String (JucePlugin_Name).substring (0, 4); - } - - static EPlugIn_StemFormat getFormatForChans (const int numChans) throw() - { - switch (numChans) - { - case 1: - return ePlugIn_StemFormat_Mono; - - case 2: - return ePlugIn_StemFormat_Stereo; - - case 3: - return ePlugIn_StemFormat_LCR; - - case 4: - return ePlugIn_StemFormat_Quad; - - case 5: - return ePlugIn_StemFormat_5dot0; - - case 6: - return ePlugIn_StemFormat_5dot1; - - case 7: - return ePlugIn_StemFormat_6dot1; - - case 8: - return ePlugIn_StemFormat_7dot1; - - default: - jassertfalse // hmm - not a valid number of chans for RTAS.. - break; - } - - return ePlugIn_StemFormat_Generic; - } -}; - -CProcessGroupInterface* CProcessGroup::CreateProcessGroup() -{ - initialiseJuce_NonGUI(); - return new JucePlugInGroup(); -} diff --git a/extras/audio plugins/wrapper/formats/RTAS/juce_RTAS_dlldefs.def b/extras/audio plugins/wrapper/formats/RTAS/juce_RTAS_dlldefs.def deleted file mode 100644 index 31b09258e4..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/juce_RTAS_dlldefs.def +++ /dev/null @@ -1,3 +0,0 @@ -EXPORTS - NewPlugIn @1 - _PI_GetRoutineDescriptor @2 diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectGroup.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectGroup.cpp deleted file mode 100644 index 2a938ae853..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectGroup.cpp +++ /dev/null @@ -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" diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectGroupMIDI.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectGroupMIDI.cpp deleted file mode 100644 index 07aa7ee05c..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectGroupMIDI.cpp +++ /dev/null @@ -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" diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectMIDIUtils.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectMIDIUtils.cpp deleted file mode 100644 index a9a948b281..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectMIDIUtils.cpp +++ /dev/null @@ -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 "CEffectMIDIUtils.cpp" diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcess.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcess.cpp deleted file mode 100644 index 2dfa8561b9..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcess.cpp +++ /dev/null @@ -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 "CEffectProcess.cpp" diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcessAS.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcessAS.cpp deleted file mode 100644 index 70083d8da6..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcessAS.cpp +++ /dev/null @@ -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" diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcessMIDI.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcessMIDI.cpp deleted file mode 100644 index 24313d8492..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectProcessMIDI.cpp +++ /dev/null @@ -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 "CEffectProcessMIDI.cpp" diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectType.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectType.cpp deleted file mode 100644 index 5c33164ea9..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectType.cpp +++ /dev/null @@ -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" diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectTypeRTAS.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectTypeRTAS.cpp deleted file mode 100644 index 1464ee04d7..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_CEffectTypeRTAS.cpp +++ /dev/null @@ -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" diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_ChunkDataParser.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_ChunkDataParser.cpp deleted file mode 100644 index 5f29659bd7..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_ChunkDataParser.cpp +++ /dev/null @@ -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" diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_DLLMain.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_DLLMain.cpp deleted file mode 100644 index fa1259df2d..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_DLLMain.cpp +++ /dev/null @@ -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 diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_DefaultSwap.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_DefaultSwap.cpp deleted file mode 100644 index 3cc54a6782..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_DefaultSwap.cpp +++ /dev/null @@ -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 diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_Dispatcher.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_Dispatcher.cpp deleted file mode 100644 index d8b321ea65..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_Dispatcher.cpp +++ /dev/null @@ -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 diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_Header.h b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_Header.h deleted file mode 100644 index f746288711..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_Header.h +++ /dev/null @@ -1,45 +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. - - ============================================================================== -*/ - -#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__ diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_PlugInUtils.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_PlugInUtils.cpp deleted file mode 100644 index 19c8440f53..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_PlugInUtils.cpp +++ /dev/null @@ -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" diff --git a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_PluginInitialize.cpp b/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_PluginInitialize.cpp deleted file mode 100644 index 80698eeff2..0000000000 --- a/extras/audio plugins/wrapper/formats/RTAS/wrappers/juce_Wrapper_PluginInitialize.cpp +++ /dev/null @@ -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 diff --git a/extras/audio plugins/wrapper/formats/Standalone/juce_AudioFilterStreamer.cpp b/extras/audio plugins/wrapper/formats/Standalone/juce_AudioFilterStreamer.cpp deleted file mode 100644 index 25e456f453..0000000000 --- a/extras/audio plugins/wrapper/formats/Standalone/juce_AudioFilterStreamer.cpp +++ /dev/null @@ -1,173 +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_AudioFilterStreamer.h" -#include "../../juce_IncludeCharacteristics.h" - - -//============================================================================== -AudioFilterStreamer::AudioFilterStreamer (AudioProcessor& filterToUse) - : filter (filterToUse), - isPlaying (false), - sampleRate (0), - emptyBuffer (1, 32) -{ - filter.setPlayConfigDetails (JucePlugin_MaxNumInputChannels, JucePlugin_MaxNumOutputChannels, 0, 0); - - filter.setPlayHead (this); -} - -AudioFilterStreamer::~AudioFilterStreamer() -{ - audioDeviceStopped(); -} - -void AudioFilterStreamer::audioDeviceIOCallback (const float** inputChannelData, - int totalNumInputChannels, - float** outputChannelData, - int totalNumOutputChannels, - int numSamples) -{ - MidiBuffer midiBuffer; - midiCollector.removeNextBlockOfMessages (midiBuffer, numSamples); - - int i, numActiveInChans = 0, numActiveOutChans = 0; - int numOutsWanted = filter.getNumOutputChannels(); - const int numInsWanted = filter.getNumInputChannels(); - - for (i = 0; i < totalNumInputChannels; ++i) - if (inputChannelData[i] != 0) - inChans [numActiveInChans++] = (float*) inputChannelData[i]; - - while (numActiveInChans < numInsWanted) - inChans [numActiveInChans++] = emptyBuffer.getSampleData (0, 0); - - for (i = 0; i < totalNumOutputChannels; ++i) - if (outputChannelData[i] != 0) - outChans [numActiveOutChans++] = outputChannelData[i]; - - i = 0; - while (numActiveOutChans < numOutsWanted) - outChans [numActiveOutChans++] = emptyBuffer.getSampleData (++i, 0); - - AudioSampleBuffer input (inChans, jmin (numInsWanted, numActiveInChans), numSamples); - AudioSampleBuffer output (outChans, jmin (numOutsWanted, numActiveOutChans), numSamples); - - { - const ScopedLock sl (filter.getCallbackLock()); - - if (filter.isSuspended()) - { - output.clear(); - } - else - { - for (int i = jmin (output.getNumChannels(), input.getNumChannels()); --i >= 0;) - output.copyFrom (i, 0, input, i, 0, numSamples); - - filter.processBlock (output, midiBuffer); - } - } - - while (numOutsWanted < numActiveOutChans) - zeromem (outChans[numOutsWanted++], sizeof (float) * numSamples); -} - -void AudioFilterStreamer::audioDeviceAboutToStart (double sampleRate_, - int numSamplesPerBlock) -{ - sampleRate = sampleRate_; - - isPlaying = true; - - emptyBuffer.setSize (1 + filter.getNumOutputChannels(), - jmax (2048, numSamplesPerBlock * 2)); - emptyBuffer.clear(); - - midiCollector.reset (sampleRate); - - filter.prepareToPlay (sampleRate, numSamplesPerBlock); -} - -void AudioFilterStreamer::audioDeviceStopped() -{ - isPlaying = false; - filter.releaseResources(); - midiCollector.reset (sampleRate); - emptyBuffer.setSize (1, 32); -} - -void AudioFilterStreamer::handleIncomingMidiMessage (MidiInput* source, const MidiMessage& message) -{ -#if JucePlugin_WantsMidiInput - midiCollector.addMessageToQueue (message); -#endif -} - -bool AudioFilterStreamer::getCurrentPosition (AudioPlayHead::CurrentPositionInfo& info) -{ - return false; -} - - -//============================================================================== -AudioFilterStreamingDeviceManager::AudioFilterStreamingDeviceManager() - : streamer (0) -{ -} - -AudioFilterStreamingDeviceManager::~AudioFilterStreamingDeviceManager() -{ - setFilter (0); - clearSingletonInstance(); -} - -void AudioFilterStreamingDeviceManager::setFilter (AudioProcessor* filterToStream) -{ - if (streamer != 0) - { - removeMidiInputCallback (streamer); - setAudioCallback (0); - - delete streamer; - streamer = 0; - } - - if (filterToStream != 0) - { - streamer = new AudioFilterStreamer (*filterToStream); - - setAudioCallback (streamer); - addMidiInputCallback (String::empty, streamer); - } -} - -juce_ImplementSingleton (AudioFilterStreamingDeviceManager); diff --git a/extras/audio plugins/wrapper/formats/Standalone/juce_AudioFilterStreamer.h b/extras/audio plugins/wrapper/formats/Standalone/juce_AudioFilterStreamer.h deleted file mode 100644 index 8fbfc95be8..0000000000 --- a/extras/audio plugins/wrapper/formats/Standalone/juce_AudioFilterStreamer.h +++ /dev/null @@ -1,128 +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. - - ============================================================================== -*/ - -#ifndef __JUCE_AUDIOFILTERSTREAMER_JUCEHEADER__ -#define __JUCE_AUDIOFILTERSTREAMER_JUCEHEADER__ - -#include "../../../../../juce.h" - - -//============================================================================== -/** - A class that wraps an AudioProcessor as an AudioIODeviceCallback, so its - output can be streamed directly to/from some audio and midi inputs and outputs. - - To use it, just create an instance of this for your filter, and register it - as the callback with an AudioIODevice or AudioDeviceManager object. - - To receive midi input in your filter, you should also register it as a - MidiInputCallback with a suitable MidiInput or an AudioDeviceManager. - - And for an even easier way of doing a standalone plugin, see the - AudioFilterStreamingDeviceManager class... -*/ -class AudioFilterStreamer : public AudioIODeviceCallback, - public MidiInputCallback, - public AudioPlayHead -{ -public: - //============================================================================== - AudioFilterStreamer (AudioProcessor& filterToUse); - ~AudioFilterStreamer(); - - - //============================================================================== - void audioDeviceIOCallback (const float** inputChannelData, - int totalNumInputChannels, - float** outputChannelData, - int totalNumOutputChannels, - int numSamples); - - void audioDeviceAboutToStart (double sampleRate, int numSamplesPerBlock); - void audioDeviceStopped(); - - void handleIncomingMidiMessage (MidiInput* source, const MidiMessage& message); - - bool getCurrentPosition (AudioPlayHead::CurrentPositionInfo& info); - - juce_UseDebuggingNewOperator - -private: - //============================================================================== - AudioProcessor& filter; - bool isPlaying; - double sampleRate; - MidiMessageCollector midiCollector; - - float* outChans [128]; - float* inChans [128]; - AudioSampleBuffer emptyBuffer; -}; - -//============================================================================== -/** - Wraps an AudioFilterStreamer in an AudioDeviceManager to make it easy to - create a standalone filter. - - This simply acts as a singleton AudioDeviceManager, which continuously - streams audio from the filter you give it with the setFilter() method. - - To use it, simply create an instance of it (or use getInstance() if you're - using it as a singleton), initialise it like you would a normal - AudioDeviceManager, and call setFilter() to start it running your plugin. - -*/ -class AudioFilterStreamingDeviceManager : public AudioDeviceManager -{ -public: - //============================================================================== - AudioFilterStreamingDeviceManager(); - ~AudioFilterStreamingDeviceManager(); - - juce_DeclareSingleton (AudioFilterStreamingDeviceManager, true); - - //============================================================================== - /** Tells the device which filter to stream audio through. - - Pass in 0 to deselect the current filter. - */ - void setFilter (AudioProcessor* filterToStream); - - - //============================================================================== - juce_UseDebuggingNewOperator - -private: - AudioFilterStreamer* streamer; -}; - - -#endif // __JUCE_AUDIOFILTERSTREAMER_JUCEHEADER__ diff --git a/extras/audio plugins/wrapper/formats/Standalone/juce_StandaloneFilterWindow.cpp b/extras/audio plugins/wrapper/formats/Standalone/juce_StandaloneFilterWindow.cpp deleted file mode 100644 index 71ab118440..0000000000 --- a/extras/audio plugins/wrapper/formats/Standalone/juce_StandaloneFilterWindow.cpp +++ /dev/null @@ -1,301 +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_StandaloneFilterWindow.h" -#include "../../juce_IncludeCharacteristics.h" - -//============================================================================== -/** Somewhere in the codebase of your plugin, you need to implement this function - and make it create an instance of the filter subclass that you're building. -*/ -extern AudioProcessor* JUCE_CALLTYPE createPluginFilter(); - - -//============================================================================== -StandaloneFilterWindow::StandaloneFilterWindow (const String& title, - const Colour& backgroundColour) - : DocumentWindow (title, backgroundColour, - DocumentWindow::minimiseButton - | DocumentWindow::closeButton), - filter (0), - deviceManager (0), - optionsButton (0) -{ - setTitleBarButtonsRequired (DocumentWindow::minimiseButton | DocumentWindow::closeButton, false); - - PropertySet* const globalSettings = getGlobalSettings(); - - optionsButton = new TextButton (T("options")); - Component::addAndMakeVisible (optionsButton); - optionsButton->addButtonListener (this); - optionsButton->setTriggeredOnMouseDown (true); - - JUCE_TRY - { - filter = createPluginFilter(); - - if (filter != 0) - { - deviceManager = new AudioFilterStreamingDeviceManager(); - deviceManager->setFilter (filter); - - XmlElement* savedState = 0; - - if (globalSettings != 0) - savedState = globalSettings->getXmlValue (T("audioSetup")); - - deviceManager->initialise (filter->getNumInputChannels(), - filter->getNumOutputChannels(), - savedState, - true); - - delete savedState; - - if (globalSettings != 0) - { - juce::MemoryBlock data; - - if (data.fromBase64Encoding (globalSettings->getValue (T("filterState"))) - && data.getSize() > 0) - { - filter->setStateInformation (data.getData(), data.getSize()); - } - } - - setContentComponent (filter->createEditorIfNeeded(), true, true); - - const int x = globalSettings->getIntValue (T("windowX"), -100); - const int y = globalSettings->getIntValue (T("windowY"), -100); - - if (x != -100 && y != -100) - setBoundsConstrained (x, y, getWidth(), getHeight()); - else - centreWithSize (getWidth(), getHeight()); - } - } - JUCE_CATCH_ALL - - if (deviceManager == 0) - { - jassertfalse // Your filter didn't create correctly! In a standalone app that's not too great. - JUCEApplication::quit(); - } -} - -StandaloneFilterWindow::~StandaloneFilterWindow() -{ - PropertySet* const globalSettings = getGlobalSettings(); - - globalSettings->setValue (T("windowX"), getX()); - globalSettings->setValue (T("windowY"), getY()); - - deleteAndZero (optionsButton); - - if (globalSettings != 0 && deviceManager != 0) - { - XmlElement* const xml = deviceManager->createStateXml(); - globalSettings->setValue (T("audioSetup"), xml); - delete xml; - } - - deleteAndZero (deviceManager); - - if (globalSettings != 0 && filter != 0) - { - juce::MemoryBlock data; - filter->getStateInformation (data); - - globalSettings->setValue (T("filterState"), data.toBase64Encoding()); - } - - deleteFilter(); -} - -//============================================================================== -void StandaloneFilterWindow::deleteFilter() -{ - if (deviceManager != 0) - deviceManager->setFilter (0); - - if (filter != 0 && getContentComponent() != 0) - { - filter->editorBeingDeleted (dynamic_cast (getContentComponent())); - setContentComponent (0, true); - } - - deleteAndZero (filter); -} - -void StandaloneFilterWindow::resetFilter() -{ - deleteFilter(); - - filter = createPluginFilter(); - - if (filter != 0) - { - if (deviceManager != 0) - deviceManager->setFilter (filter); - - setContentComponent (filter->createEditorIfNeeded(), true, true); - } - - PropertySet* const globalSettings = getGlobalSettings(); - - if (globalSettings != 0) - globalSettings->removeValue (T("filterState")); -} - -//============================================================================== -void StandaloneFilterWindow::saveState() -{ - PropertySet* const globalSettings = getGlobalSettings(); - - FileChooser fc (TRANS("Save current state"), - globalSettings != 0 ? File (globalSettings->getValue (T("lastStateFile"))) - : File::nonexistent); - - if (fc.browseForFileToSave (true)) - { - juce::MemoryBlock data; - filter->getStateInformation (data); - - if (! fc.getResult().replaceWithData (data.getData(), data.getSize())) - { - AlertWindow::showMessageBox (AlertWindow::WarningIcon, - TRANS("Error whilst saving"), - TRANS("Couldn't write to the specified file!")); - } - } -} - -void StandaloneFilterWindow::loadState() -{ - PropertySet* const globalSettings = getGlobalSettings(); - - FileChooser fc (TRANS("Load a saved state"), - globalSettings != 0 ? File (globalSettings->getValue (T("lastStateFile"))) - : File::nonexistent); - - if (fc.browseForFileToOpen()) - { - juce::MemoryBlock data; - - if (fc.getResult().loadFileAsData (data)) - { - filter->setStateInformation (data.getData(), data.getSize()); - } - else - { - AlertWindow::showMessageBox (AlertWindow::WarningIcon, - TRANS("Error whilst loading"), - TRANS("Couldn't read from the specified file!")); - } - } -} - -//============================================================================== -PropertySet* StandaloneFilterWindow::getGlobalSettings() -{ - /* If you want this class to store the plugin's settings, you can set up an - ApplicationProperties object and use this method as it is, or override this - method to return your own custom PropertySet. - - If using this method without changing it, you'll probably need to call - ApplicationProperties::setStorageParameters() in your plugin's constructor to - tell it where to save the file. - */ - return ApplicationProperties::getInstance()->getUserSettings(); -} - -void StandaloneFilterWindow::showAudioSettingsDialog() -{ - AudioDeviceSelectorComponent selectorComp (*deviceManager, - filter->getNumInputChannels(), - filter->getNumInputChannels(), - filter->getNumOutputChannels(), - filter->getNumOutputChannels(), - true, false); - - selectorComp.setSize (500, 350); - - DialogWindow::showModalDialog (TRANS("Audio Settings"), &selectorComp, this, Colours::lightgrey, true, false, false); -} - -//============================================================================== -void StandaloneFilterWindow::closeButtonPressed() -{ - JUCEApplication::quit(); -} - -void StandaloneFilterWindow::resized() -{ - DocumentWindow::resized(); - - if (optionsButton != 0) - optionsButton->setBounds (8, 6, 60, getTitleBarHeight() - 8); -} - -void StandaloneFilterWindow::buttonClicked (Button*) -{ - if (filter == 0) - return; - - PopupMenu m; - m.addItem (1, TRANS("Audio Settings...")); - m.addSeparator(); - m.addItem (2, TRANS("Save current state...")); - m.addItem (3, TRANS("Load a saved state...")); - m.addSeparator(); - m.addItem (4, TRANS("Reset to default state")); - - switch (m.showAt (optionsButton)) - { - case 1: - showAudioSettingsDialog(); - break; - - case 2: - saveState(); - break; - - case 3: - loadState(); - break; - - case 4: - resetFilter(); - break; - - default: - break; - } -} diff --git a/extras/audio plugins/wrapper/formats/Standalone/juce_StandaloneFilterWindow.h b/extras/audio plugins/wrapper/formats/Standalone/juce_StandaloneFilterWindow.h deleted file mode 100644 index d6016c7501..0000000000 --- a/extras/audio plugins/wrapper/formats/Standalone/juce_StandaloneFilterWindow.h +++ /dev/null @@ -1,96 +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. - - ============================================================================== -*/ - -#ifndef __JUCE_STANDALONEFILTERWINDOW_JUCEHEADER__ -#define __JUCE_STANDALONEFILTERWINDOW_JUCEHEADER__ - -#include "juce_AudioFilterStreamer.h" - - -//============================================================================== -/** - A class that can be used to run a simple standalone application containing your filter. - - Just create one of these objects in your JUCEApplication::initialise() method, and - let it do its work. It will create your filter object using the same createFilter() function - that the other plugin wrappers use. -*/ -class StandaloneFilterWindow : public DocumentWindow, - public ButtonListener -{ -public: - //============================================================================== - StandaloneFilterWindow (const String& title, - const Colour& backgroundColour); - - ~StandaloneFilterWindow(); - - //============================================================================== - /** Deletes and re-creates the filter and its UI. */ - void resetFilter(); - - /** Pops up a dialog letting the user save the filter's state to a file. */ - void saveState(); - - /** Pops up a dialog letting the user re-load the filter's state from a file. */ - void loadState(); - - /** Shows the audio properties dialog box modally. */ - virtual void showAudioSettingsDialog(); - - /** Returns the property set to use for storing the app's last state. - - This will be used to store the audio set-up and the filter's last state. - */ - virtual PropertySet* getGlobalSettings(); - - //============================================================================== - /** @internal */ - void closeButtonPressed(); - /** @internal */ - void buttonClicked (Button*); - /** @internal */ - void resized(); - - juce_UseDebuggingNewOperator - -private: - AudioProcessor* filter; - AudioFilterStreamingDeviceManager* deviceManager; - Button* optionsButton; - - void deleteFilter(); - - StandaloneFilterWindow (const StandaloneFilterWindow&); - const StandaloneFilterWindow& operator= (const StandaloneFilterWindow&); -}; - -#endif // __JUCE_STANDALONEFILTERWINDOW_JUCEHEADER__ diff --git a/extras/audio plugins/wrapper/formats/VST/juce_VstWrapper.cpp b/extras/audio plugins/wrapper/formats/VST/juce_VstWrapper.cpp deleted file mode 100644 index 5f1d5693a0..0000000000 --- a/extras/audio plugins/wrapper/formats/VST/juce_VstWrapper.cpp +++ /dev/null @@ -1,1529 +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. - - ============================================================================== -*/ - -/* - *** 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 - -#ifdef _WIN32 - #include -#elif defined (LINUX) - #include - #include - #include - #undef KeyPress -#else - #include -#endif - -#ifdef PRAGMA_ALIGN_SUPPORTED - #undef PRAGMA_ALIGN_SUPPORTED - #define PRAGMA_ALIGN_SUPPORTED 1 -#endif - -#include "../../juce_IncludeCharacteristics.h" - -//============================================================================== -/* These files come with the Steinberg VST SDK - to get them, you'll need to - visit the Steinberg website and jump through some hoops to sign up as a - VST developer. - - Then, you'll need to make sure your include path contains your "vstsdk2.3" or - "vstsdk2.4" directory. - - Note that the JUCE_USE_VSTSDK_2_4 macro should be defined in JucePluginCharacteristics.h -*/ -#if JUCE_USE_VSTSDK_2_4 - // VSTSDK V2.4 includes.. - #include "public.sdk/source/vst2.x/audioeffectx.h" - #include "public.sdk/source/vst2.x/aeffeditor.h" - #include "public.sdk/source/vst2.x/audioeffectx.cpp" - #include "public.sdk/source/vst2.x/audioeffect.cpp" -#else - // VSTSDK V2.3 includes.. - #include "source/common/audioeffectx.h" - #include "source/common/AEffEditor.hpp" - #include "source/common/audioeffectx.cpp" - #include "source/common/AudioEffect.cpp" - typedef long VstInt32; - typedef long VstIntPtr; - enum Vst2StringConstants - { - kVstMaxNameLen = 64, - kVstMaxLabelLen = 64, - kVstMaxShortLabelLen = 8, - kVstMaxCategLabelLen = 24, - kVstMaxFileNameLen = 100 - }; - - enum VstSmpteFrameRate - { - kVstSmpte24fps = 0, ///< 24 fps - kVstSmpte25fps = 1, ///< 25 fps - kVstSmpte2997fps = 2, ///< 29.97 fps - kVstSmpte30fps = 3, ///< 30 fps - kVstSmpte2997dfps = 4, ///< 29.97 drop - kVstSmpte30dfps = 5, ///< 30 drop - kVstSmpteFilm16mm = 6, ///< Film 16mm - kVstSmpteFilm35mm = 7, ///< Film 35mm - kVstSmpte239fps = 10, ///< HDTV: 23.976 fps - kVstSmpte249fps = 11, ///< HDTV: 24.976 fps - kVstSmpte599fps = 12, ///< HDTV: 59.94 fps - kVstSmpte60fps = 13 ///< HDTV: 60 fps - }; -#endif - -//============================================================================== -#ifdef _MSC_VER - #pragma pack (push, 8) -#endif - -#include "../../../../../juce.h" - -#ifdef _MSC_VER - #pragma pack (pop) -#endif - -#undef MemoryBlock - -class JuceVSTWrapper; -static bool recursionCheck = false; -static uint32 lastMasterIdleCall = 0; - -BEGIN_JUCE_NAMESPACE - extern void juce_callAnyTimersSynchronously(); - - #if JUCE_LINUX - extern Display* display; - extern bool juce_postMessageToSystemQueue (void* message); - #endif -END_JUCE_NAMESPACE - - -//============================================================================== -#if JUCE_WIN32 - -static HWND findMDIParentOf (HWND w) -{ - const int frameThickness = GetSystemMetrics (SM_CYFIXEDFRAME); - - while (w != 0) - { - HWND parent = GetParent (w); - - if (parent == 0) - break; - - TCHAR windowType [32]; - zeromem (windowType, sizeof (windowType)); - GetClassName (parent, windowType, 31); - - if (String (windowType).equalsIgnoreCase (T("MDIClient"))) - { - w = parent; - break; - } - - RECT windowPos; - GetWindowRect (w, &windowPos); - - RECT parentPos; - GetWindowRect (parent, &parentPos); - - const int dw = (parentPos.right - parentPos.left) - (windowPos.right - windowPos.left); - const int dh = (parentPos.bottom - parentPos.top) - (windowPos.bottom - windowPos.top); - - if (dw > 100 || dh > 100) - break; - - w = parent; - - if (dw == 2 * frameThickness) - break; - } - - return w; -} - -//============================================================================== -#elif JUCE_LINUX - -class SharedMessageThread : public Thread -{ -public: - SharedMessageThread() - : Thread (T("VstMessageThread")) - { - startThread (7); - } - - ~SharedMessageThread() - { - signalThreadShouldExit(); - - const int quitMessageId = 0xfffff321; - Message* const m = new Message (quitMessageId, 1, 0, 0); - - if (! juce_postMessageToSystemQueue (m)) - delete m; - - clearSingletonInstance(); - } - - void run() - { - MessageManager* const messageManager = MessageManager::getInstance(); - - const int originalThreadId = messageManager->getCurrentMessageThread(); - messageManager->setCurrentMessageThread (getThreadId()); - - while (! threadShouldExit() - && messageManager->dispatchNextMessage()) - { - } - - messageManager->setCurrentMessageThread (originalThreadId); - } - - juce_DeclareSingleton (SharedMessageThread, false) -}; - -juce_ImplementSingleton (SharedMessageThread); - -#endif - -//============================================================================== -// A component to hold the AudioProcessorEditor, and cope with some housekeeping -// chores when it changes or repaints. -class EditorCompWrapper : public Component, - public AsyncUpdater -{ - JuceVSTWrapper* wrapper; - -public: - EditorCompWrapper (JuceVSTWrapper* const wrapper_, - AudioProcessorEditor* const editor) - : wrapper (wrapper_) - { - setOpaque (true); - editor->setOpaque (true); - - setBounds (editor->getBounds()); - editor->setTopLeftPosition (0, 0); - addAndMakeVisible (editor); - -#if JUCE_WIN32 - addMouseListener (this, true); -#endif - } - - ~EditorCompWrapper() - { - deleteAllChildren(); - } - - void paint (Graphics& g) - { - } - - void paintOverChildren (Graphics& g) - { - // this causes an async call to masterIdle() to help - // creaky old DAWs like Nuendo repaint themselves while we're - // repainting. Otherwise they just seem to give up and sit there - // waiting. - triggerAsyncUpdate(); - } - - AudioProcessorEditor* getEditorComp() const - { - return dynamic_cast (getChildComponent (0)); - } - - void resized() - { - Component* const c = getChildComponent (0); - - if (c != 0) - { -#if JUCE_LINUX - const MessageManagerLock mml; -#endif - c->setBounds (0, 0, getWidth(), getHeight()); - } - } - - void childBoundsChanged (Component* child); - void handleAsyncUpdate(); - -#if JUCE_WIN32 - void mouseDown (const MouseEvent&) - { - broughtToFront(); - } - - void broughtToFront() - { - // for hosts like nuendo, need to also pop the MDI container to the - // front when our comp is clicked on. - HWND parent = findMDIParentOf ((HWND) getWindowHandle()); - - if (parent != 0) - { - SetWindowPos (parent, - HWND_TOP, - 0, 0, 0, 0, - SWP_NOMOVE | SWP_NOSIZE); - } - } -#endif - - //============================================================================== - juce_UseDebuggingNewOperator -}; - -static VoidArray activePlugins; - - -//============================================================================== -/** - This wraps an AudioProcessor as an AudioEffectX... -*/ -class JuceVSTWrapper : public AudioEffectX, - private Timer, - public AudioProcessorListener, - public AudioPlayHead -{ -public: - //============================================================================== - JuceVSTWrapper (audioMasterCallback audioMaster, - AudioProcessor* const filter_) - : AudioEffectX (audioMaster, - filter_->getNumPrograms(), - filter_->getNumParameters()), - filter (filter_) - { - editorComp = 0; - outgoingEvents = 0; - outgoingEventSize = 0; - chunkMemoryTime = 0; - isProcessing = false; - firstResize = true; - hasShutdown = false; - channels = 0; - -#if JUCE_MAC || JUCE_LINUX - hostWindow = 0; -#endif - - filter->setPlayConfigDetails (JucePlugin_MaxNumInputChannels, - JucePlugin_MaxNumOutputChannels, - 0, 0); - - filter_->setPlayHead (this); - filter_->addListener (this); - - cEffect.flags |= effFlagsHasEditor; - cEffect.version = (long) (JucePlugin_VersionCode); - - setUniqueID ((int) (JucePlugin_VSTUniqueID)); - -#if JucePlugin_WantsMidiInput && ! JUCE_USE_VSTSDK_2_4 - wantEvents(); -#endif - - setNumInputs (filter->getNumInputChannels()); - setNumOutputs (filter->getNumOutputChannels()); - - canProcessReplacing (true); - -#if ! JUCE_USE_VSTSDK_2_4 - hasVu (false); - hasClip (false); -#endif - - isSynth ((JucePlugin_IsSynth) != 0); - noTail ((JucePlugin_SilenceInProducesSilenceOut) != 0); - setInitialDelay (filter->getLatencySamples()); - programsAreChunks (true); - - activePlugins.add (this); - } - - ~JuceVSTWrapper() - { - stopTimer(); - deleteEditor(); - - hasShutdown = true; - - delete filter; - filter = 0; - - if (outgoingEvents != 0) - { - for (int i = outgoingEventSize; --i >= 0;) - juce_free (outgoingEvents->events[i]); - - juce_free (outgoingEvents); - outgoingEvents = 0; - } - - jassert (editorComp == 0); - - juce_free (channels); - channels = 0; - deleteTempChannels(); - - jassert (activePlugins.contains (this)); - activePlugins.removeValue (this); - - if (activePlugins.size() == 0) - { -#if JUCE_LINUX - SharedMessageThread::deleteInstance(); -#endif - shutdownJuce_GUI(); - } - } - - void open() - { - startTimer (1000 / 4); - } - - void close() - { - jassert (! recursionCheck); - - stopTimer(); - deleteEditor(); - } - - //============================================================================== - bool getEffectName (char* name) - { - String (JucePlugin_Name).copyToBuffer (name, 64); - return true; - } - - bool getVendorString (char* text) - { - String (JucePlugin_Manufacturer).copyToBuffer (text, 64); - return true; - } - - bool getProductString (char* text) - { - return getEffectName (text); - } - - VstInt32 getVendorVersion() - { - return JucePlugin_VersionCode; - } - - VstPlugCategory getPlugCategory() - { - return JucePlugin_VSTCategory; - } - - VstInt32 canDo (char* text) - { - VstInt32 result = 0; - - if (strcmp (text, "receiveVstEvents") == 0 - || strcmp (text, "receiveVstMidiEvent") == 0 - || strcmp (text, "receiveVstMidiEvents") == 0) - { -#if JucePlugin_WantsMidiInput - result = 1; -#else - result = -1; -#endif - } - else if (strcmp (text, "sendVstEvents") == 0 - || strcmp (text, "sendVstMidiEvent") == 0 - || strcmp (text, "sendVstMidiEvents") == 0) - { -#if JucePlugin_ProducesMidiOutput - result = 1; -#else - result = -1; -#endif - } - else if (strcmp (text, "receiveVstTimeInfo") == 0 - || strcmp (text, "conformsToWindowRules") == 0) - { - result = 1; - } - - return result; - } - - bool keysRequired() - { - return (JucePlugin_EditorRequiresKeyboardFocus) != 0; - } - - bool getInputProperties (VstInt32 index, VstPinProperties* properties) - { - if (filter == 0 || index >= filter->getNumInputChannels()) - return false; - - const String name (filter->getInputChannelName ((int) index)); - - name.copyToBuffer (properties->label, kVstMaxLabelLen - 1); - name.copyToBuffer (properties->shortLabel, kVstMaxShortLabelLen - 1); - - properties->flags = kVstPinIsActive; - - if (filter->isInputChannelStereoPair ((int) index)) - properties->flags |= kVstPinIsStereo; - - properties->arrangementType = 0; - - return true; - } - - bool getOutputProperties (VstInt32 index, VstPinProperties* properties) - { - if (filter == 0 || index >= filter->getNumOutputChannels()) - return false; - - const String name (filter->getOutputChannelName ((int) index)); - - name.copyToBuffer (properties->label, kVstMaxLabelLen - 1); - name.copyToBuffer (properties->shortLabel, kVstMaxShortLabelLen - 1); - - properties->flags = kVstPinIsActive; - - if (filter->isOutputChannelStereoPair ((int) index)) - properties->flags |= kVstPinIsStereo; - - properties->arrangementType = 0; - - return true; - } - - //============================================================================== - VstInt32 processEvents (VstEvents* events) - { -#if JucePlugin_WantsMidiInput - for (int i = 0; i < events->numEvents; ++i) - { - const VstEvent* const e = events->events[i]; - - if (e != 0 && e->type == kVstMidiType) - { - const VstMidiEvent* const vme = (const VstMidiEvent*) e; - - midiEvents.addEvent ((const uint8*) vme->midiData, - 4, - vme->deltaFrames); - } - } - - return 1; -#else - return 0; -#endif - } - - void process (float** inputs, float** outputs, VstInt32 numSamples) - { - const int numIn = filter->getNumInputChannels(); - const int numOut = filter->getNumOutputChannels(); - - AudioSampleBuffer temp (numIn, numSamples); - int i; - for (i = numIn; --i >= 0;) - memcpy (temp.getSampleData (i), outputs[i], sizeof (float) * numSamples); - - processReplacing (inputs, outputs, numSamples); - - AudioSampleBuffer dest (outputs, numOut, numSamples); - - for (i = jmin (numIn, numOut); --i >= 0;) - dest.addFrom (i, 0, temp, i, 0, numSamples); - } - - void processReplacing (float** inputs, float** outputs, VstInt32 numSamples) - { - // if this fails, the host hasn't called resume() before processing - jassert (isProcessing); - - // (tragically, some hosts actually need this, although it's stupid to have - // to do it here..) - if (! isProcessing) - resume(); - -#if JUCE_DEBUG && ! JucePlugin_ProducesMidiOutput - const int numMidiEventsComingIn = midiEvents.getNumEvents(); -#endif - - jassert (activePlugins.contains (this)); - - { - const ScopedLock sl (filter->getCallbackLock()); - - const int numIn = filter->getNumInputChannels(); - const int numOut = filter->getNumOutputChannels(); - - if (filter->isSuspended()) - { - for (int i = 0; i < numOut; ++i) - zeromem (outputs[i], sizeof (float) * numSamples); - } - else - { - if (! hasCreatedTempChannels) - { - // do this just once when we start processing.. - hasCreatedTempChannels = true; - - // if some output channels are disabled, some hosts supply the same buffer - // for multiple channels - this buggers up our method of copying the - // inputs over the outputs, so we need to create unique temp buffers in this case.. - for (int i = 0; i < numOut; ++i) - { - for (int j = i; --j >= 0;) - { - if (outputs[j] == outputs[i] && outputs[i] != 0) - { - tempChannels.set (i, juce_malloc (sizeof (float) * blockSize * 2)); - break; - } - } - } - } - - { - int i; - for (i = 0; i < numOut; ++i) - { - // if some output channels are disabled, the host may pass the same dummy buffer - // pointer for all of these outputs - and that means that we'd be copying all our - // input channels into the same place... so in this case, we use an internal dummy - // buffer which has enough channels for each input. - float* chan = (float*) tempChannels.getUnchecked(i); - if (chan == 0) - chan = outputs[i]; - - if (i < numIn && chan != inputs[i]) - memcpy (chan, inputs[i], sizeof (float) * numSamples); - - channels[i] = chan; - } - - for (; i < numIn; ++i) - channels[i] = inputs[i]; - } - - AudioSampleBuffer chans (channels, jmax (numIn, numOut), numSamples); - - filter->processBlock (chans, midiEvents); - } - } - - if (! midiEvents.isEmpty()) - { -#if JucePlugin_ProducesMidiOutput - const int numEvents = midiEvents.getNumEvents(); - - ensureOutgoingEventSize (numEvents); - outgoingEvents->numEvents = 0; - - const uint8* midiEventData; - int midiEventSize, midiEventPosition; - MidiBuffer::Iterator i (midiEvents); - - while (i.getNextEvent (midiEventData, midiEventSize, midiEventPosition)) - { - if (midiEventSize <= 4) - { - VstMidiEvent* const vme = (VstMidiEvent*) outgoingEvents->events [outgoingEvents->numEvents++]; - - memcpy (vme->midiData, midiEventData, midiEventSize); - vme->deltaFrames = midiEventPosition; - - jassert (vme->deltaFrames >= 0 && vme->deltaFrames < numSamples); - } - } - - sendVstEventsToHost (outgoingEvents); -#else - /* This assertion is caused when you've added some events to the - midiMessages array in your processBlock() method, which usually means - that you're trying to send them somewhere. But in this case they're - getting thrown away. - - If your plugin does want to send midi messages, you'll need to set - the JucePlugin_ProducesMidiOutput macro to 1 in your - JucePluginCharacteristics.h file. - - If you don't want to produce any midi output, then you should clear the - midiMessages array at the end of your processBlock() method, to - indicate that you don't want any of the events to be passed through - to the output. - */ - jassert (midiEvents.getNumEvents() <= numMidiEventsComingIn); -#endif - - midiEvents.clear(); - } - } - - //============================================================================== - void resume() - { - if (filter == 0) - return; - - isProcessing = true; - juce_free (channels); - channels = (float**) juce_calloc (sizeof (float*) * (filter->getNumInputChannels() + filter->getNumOutputChannels())); - - double rate = getSampleRate(); - jassert (rate > 0); - if (rate <= 0.0) - rate = 44100.0; - - const int blockSize = getBlockSize(); - jassert (blockSize > 0); - - filter->setPlayConfigDetails (JucePlugin_MaxNumInputChannels, - JucePlugin_MaxNumOutputChannels, - rate, blockSize); - - deleteTempChannels(); - - filter->prepareToPlay (rate, blockSize); - midiEvents.clear(); - - setInitialDelay (filter->getLatencySamples()); - - AudioEffectX::resume(); - -#if JucePlugin_ProducesMidiOutput - ensureOutgoingEventSize (64); -#endif - -#if JucePlugin_WantsMidiInput && ! JUCE_USE_VSTSDK_2_4 - wantEvents(); -#endif - } - - void suspend() - { - if (filter == 0) - return; - - AudioEffectX::suspend(); - - filter->releaseResources(); - midiEvents.clear(); - - isProcessing = false; - juce_free (channels); - channels = 0; - - deleteTempChannels(); - } - - bool getCurrentPosition (AudioPlayHead::CurrentPositionInfo& info) - { - const VstTimeInfo* const ti = getTimeInfo (kVstPpqPosValid - | kVstTempoValid - | kVstBarsValid - //| kVstCyclePosValid - | kVstTimeSigValid - | kVstSmpteValid - | kVstClockValid); - - if (ti == 0 || ti->sampleRate <= 0) - return false; - - if ((ti->flags & kVstTempoValid) != 0) - info.bpm = ti->tempo; - else - info.bpm = 0.0; - - if ((ti->flags & kVstTimeSigValid) != 0) - { - info.timeSigNumerator = ti->timeSigNumerator; - info.timeSigDenominator = ti->timeSigDenominator; - } - else - { - info.timeSigNumerator = 4; - info.timeSigDenominator = 4; - } - - info.timeInSeconds = ti->samplePos / ti->sampleRate; - - if ((ti->flags & kVstPpqPosValid) != 0) - info.ppqPosition = ti->ppqPos; - else - info.ppqPosition = 0.0; - - if ((ti->flags & kVstBarsValid) != 0) - info.ppqPositionOfLastBarStart = ti->barStartPos; - else - info.ppqPositionOfLastBarStart = 0.0; - - if ((ti->flags & kVstSmpteValid) != 0) - { - AudioPlayHead::FrameRateType rate = AudioPlayHead::fpsUnknown; - double fps = 1.0; - - switch (ti->smpteFrameRate) - { - case kVstSmpte24fps: - rate = AudioPlayHead::fps24; - fps = 24.0; - break; - - case kVstSmpte25fps: - rate = AudioPlayHead::fps25; - fps = 25.0; - break; - - case kVstSmpte2997fps: - rate = AudioPlayHead::fps2997; - fps = 29.97; - break; - - case kVstSmpte30fps: - rate = AudioPlayHead::fps30; - fps = 30.0; - break; - - case kVstSmpte2997dfps: - rate = AudioPlayHead::fps2997drop; - fps = 29.97; - break; - - case kVstSmpte30dfps: - rate = AudioPlayHead::fps30drop; - fps = 30.0; - break; - - case kVstSmpteFilm16mm: - case kVstSmpteFilm35mm: - fps = 24.0; - break; - - case kVstSmpte239fps: fps = 23.976; break; - case kVstSmpte249fps: fps = 24.976; break; - case kVstSmpte599fps: fps = 59.94; break; - case kVstSmpte60fps: fps = 60; break; - - default: - jassertfalse // unknown frame-rate.. - } - - info.frameRate = rate; - info.editOriginTime = ti->smpteOffset / (80.0 * fps); - } - else - { - info.frameRate = AudioPlayHead::fpsUnknown; - info.editOriginTime = 0; - } - - info.isRecording = (ti->flags & kVstTransportRecording) != 0; - info.isPlaying = (ti->flags & kVstTransportPlaying) != 0 || info.isRecording; - - return true; - } - - //============================================================================== - VstInt32 getProgram() - { - return filter != 0 ? filter->getCurrentProgram() : 0; - } - - void setProgram (VstInt32 program) - { - if (filter != 0) - filter->setCurrentProgram (program); - } - - void setProgramName (char* name) - { - if (filter != 0) - filter->changeProgramName (filter->getCurrentProgram(), name); - } - - void getProgramName (char* name) - { - if (filter != 0) - filter->getProgramName (filter->getCurrentProgram()).copyToBuffer (name, 24); - } - - bool getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text) - { - if (filter != 0 && ((unsigned int) index) < (unsigned int) filter->getNumPrograms()) - { - filter->getProgramName (index).copyToBuffer (text, 24); - return true; - } - - return false; - } - - //============================================================================== - float getParameter (VstInt32 index) - { - if (filter == 0) - return 0.0f; - - jassert (((unsigned int) index) < (unsigned int) filter->getNumParameters()); - return filter->getParameter (index); - } - - void setParameter (VstInt32 index, float value) - { - if (filter != 0) - { - jassert (((unsigned int) index) < (unsigned int) filter->getNumParameters()); - filter->setParameter (index, value); - } - } - - void getParameterDisplay (VstInt32 index, char* text) - { - if (filter != 0) - { - jassert (((unsigned int) index) < (unsigned int) filter->getNumParameters()); - filter->getParameterText (index).copyToBuffer (text, 24); // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more. - } - } - - void getParameterName (VstInt32 index, char* text) - { - if (filter != 0) - { - jassert (((unsigned int) index) < (unsigned int) filter->getNumParameters()); - filter->getParameterName (index).copyToBuffer (text, 16); // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more. - } - } - - void audioProcessorParameterChanged (AudioProcessor*, int index, float newValue) - { - setParameterAutomated (index, newValue); - } - - void audioProcessorParameterChangeGestureBegin (AudioProcessor*, int index) - { - beginEdit (index); - } - - void audioProcessorParameterChangeGestureEnd (AudioProcessor*, int index) - { - endEdit (index); - } - - void audioProcessorChanged (AudioProcessor*) - { - updateDisplay(); - } - - bool canParameterBeAutomated (VstInt32 index) - { - return filter != 0 && filter->isParameterAutomatable ((int) index); - } - - //============================================================================== - VstInt32 getChunk (void** data, bool onlyStoreCurrentProgramData) - { - if (filter == 0) - return 0; - - chunkMemory.setSize (0); - if (onlyStoreCurrentProgramData) - filter->getCurrentProgramStateInformation (chunkMemory); - else - filter->getStateInformation (chunkMemory); - - *data = (void*) chunkMemory; - - // because the chunk is only needed temporarily by the host (or at least you'd - // hope so) we'll give it a while and then free it in the timer callback. - chunkMemoryTime = JUCE_NAMESPACE::Time::getApproximateMillisecondCounter(); - - return chunkMemory.getSize(); - } - - VstInt32 setChunk (void* data, VstInt32 byteSize, bool onlyRestoreCurrentProgramData) - { - if (filter == 0) - return 0; - - chunkMemory.setSize (0); - chunkMemoryTime = 0; - - if (byteSize > 0 && data != 0) - { - if (onlyRestoreCurrentProgramData) - filter->setCurrentProgramStateInformation (data, byteSize); - else - filter->setStateInformation (data, byteSize); - } - - return 0; - } - - void timerCallback() - { - if (chunkMemoryTime > 0 - && chunkMemoryTime < JUCE_NAMESPACE::Time::getApproximateMillisecondCounter() - 2000 - && ! recursionCheck) - { - chunkMemoryTime = 0; - chunkMemory.setSize (0); - } - - tryMasterIdle(); - } - - void tryMasterIdle() - { - if (Component::isMouseButtonDownAnywhere() - && ! recursionCheck) - { - const uint32 now = JUCE_NAMESPACE::Time::getMillisecondCounter(); - - if (now > lastMasterIdleCall + 20 && editorComp != 0) - { - lastMasterIdleCall = now; - - recursionCheck = true; - masterIdle(); - recursionCheck = false; - } - } - } - - void doIdleCallback() - { - // (wavelab calls this on a separate thread and causes a deadlock).. - if (MessageManager::getInstance()->isThisTheMessageThread() - && ! recursionCheck) - { - const MessageManagerLock mml; - - recursionCheck = true; - - juce_callAnyTimersSynchronously(); - - for (int i = ComponentPeer::getNumPeers(); --i >= 0;) - ComponentPeer::getPeer (i)->performAnyPendingRepaintsNow(); - - recursionCheck = false; - } - } - - void createEditorComp() - { - if (hasShutdown || filter == 0) - return; - - if (editorComp == 0) - { -#if JUCE_LINUX - const MessageManagerLock mml; -#endif - - AudioProcessorEditor* const ed = filter->createEditorIfNeeded(); - - if (ed != 0) - { - ed->setOpaque (true); - ed->setVisible (true); - - editorComp = new EditorCompWrapper (this, ed); - } - } - } - - void deleteEditor() - { - PopupMenu::dismissAllActiveMenus(); - - jassert (! recursionCheck); - recursionCheck = true; - -#if JUCE_LINUX - const MessageManagerLock mml; -#endif - - if (editorComp != 0) - { - Component* const modalComponent = Component::getCurrentlyModalComponent(); - if (modalComponent != 0) - modalComponent->exitModalState (0); - - filter->editorBeingDeleted (editorComp->getEditorComp()); - - deleteAndZero (editorComp); - - // there's some kind of component currently modal, but the host - // is trying to delete our plugin. You should try to avoid this happening.. - jassert (Component::getCurrentlyModalComponent() == 0); - } - -#if JUCE_MAC || JUCE_LINUX - hostWindow = 0; -#endif - - recursionCheck = false; - } - - VstIntPtr dispatcher (VstInt32 opCode, VstInt32 index, VstIntPtr value, void* ptr, float opt) - { - if (hasShutdown) - return 0; - - if (opCode == effEditIdle) - { - doIdleCallback(); - return 0; - } - else if (opCode == effEditOpen) - { - jassert (! recursionCheck); - - deleteEditor(); - createEditorComp(); - - if (editorComp != 0) - { -#if JUCE_LINUX - const MessageManagerLock mml; -#endif - - editorComp->setOpaque (true); - editorComp->setVisible (false); - -#if JUCE_WIN32 - editorComp->addToDesktop (0); - - hostWindow = (HWND) ptr; - HWND editorWnd = (HWND) editorComp->getWindowHandle(); - - SetParent (editorWnd, hostWindow); - - DWORD val = GetWindowLong (editorWnd, GWL_STYLE); - val = (val & ~WS_POPUP) | WS_CHILD; - SetWindowLong (editorWnd, GWL_STYLE, val); - - editorComp->setVisible (true); -#elif JUCE_LINUX - editorComp->addToDesktop (0); - - hostWindow = (Window) ptr; - - Window editorWnd = (Window) editorComp->getWindowHandle(); - - XReparentWindow (display, editorWnd, hostWindow, 0, 0); - - editorComp->setVisible (true); -#else - hostWindow = (WindowRef) ptr; - firstResize = true; - - SetAutomaticControlDragTrackingEnabledForWindow (hostWindow, true); - - WindowAttributes attributes; - GetWindowAttributes (hostWindow, &attributes); - - HIViewRef parentView = 0; - - if ((attributes & kWindowCompositingAttribute) != 0) - { - HIViewRef root = HIViewGetRoot (hostWindow); - HIViewFindByID (root, kHIViewWindowContentID, &parentView); - - if (parentView == 0) - parentView = root; - } - else - { - GetRootControl (hostWindow, (ControlRef*) &parentView); - - if (parentView == 0) - CreateRootControl (hostWindow, (ControlRef*) &parentView); - } - - jassert (parentView != 0); // agh - the host has to provide a compositing window.. - - editorComp->setVisible (true); - editorComp->addToDesktop (0, (void*) parentView); -#endif - - return 1; - } - } - else if (opCode == effEditClose) - { - deleteEditor(); - return 0; - } - else if (opCode == effEditGetRect) - { - createEditorComp(); - - if (editorComp != 0) - { - editorSize.left = 0; - editorSize.top = 0; - editorSize.right = editorComp->getWidth(); - editorSize.bottom = editorComp->getHeight(); - - *((ERect**) ptr) = &editorSize; - - return (VstIntPtr) &editorSize; - } - else - { - return 0; - } - } - - return AudioEffectX::dispatcher (opCode, index, value, ptr, opt); - } - - void resizeHostWindow (int newWidth, int newHeight) - { - if (editorComp != 0) - { -#if ! JUCE_LINUX // linux hosts shouldn't be trusted! - if (! (canHostDo ("sizeWindow") && sizeWindow (newWidth, newHeight))) -#endif - { - // some hosts don't support the sizeWindow call, so do it manually.. -#if JUCE_MAC - Rect r; - GetWindowBounds (hostWindow, kWindowContentRgn, &r); - - if (firstResize) - { - diffW = (r.right - r.left) - editorComp->getWidth(); - diffH = (r.bottom - r.top) - editorComp->getHeight(); - firstResize = false; - } - - r.right = r.left + newWidth + diffW; - r.bottom = r.top + newHeight + diffH; - - SetWindowBounds (hostWindow, kWindowContentRgn, &r); - - r.bottom -= r.top; - r.right -= r.left; - r.left = r.top = 0; - InvalWindowRect (hostWindow, &r); -#elif JUCE_LINUX - Window root; - int x, y; - unsigned int width, height, border, depth; - - XGetGeometry (display, hostWindow, &root, - &x, &y, &width, &height, &border, &depth); - - newWidth += (width + border) - editorComp->getWidth(); - newHeight += (height + border) - editorComp->getHeight(); - - XResizeWindow (display, hostWindow, newWidth, newHeight); -#else - int dw = 0; - int dh = 0; - const int frameThickness = GetSystemMetrics (SM_CYFIXEDFRAME); - - HWND w = (HWND) editorComp->getWindowHandle(); - - while (w != 0) - { - HWND parent = GetParent (w); - - if (parent == 0) - break; - - TCHAR windowType [32]; - zeromem (windowType, sizeof (windowType)); - GetClassName (parent, windowType, 31); - - if (String (windowType).equalsIgnoreCase (T("MDIClient"))) - break; - - RECT windowPos; - GetWindowRect (w, &windowPos); - - RECT parentPos; - GetWindowRect (parent, &parentPos); - - SetWindowPos (w, 0, 0, 0, - newWidth + dw, - newHeight + dh, - SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOOWNERZORDER); - - dw = (parentPos.right - parentPos.left) - (windowPos.right - windowPos.left); - dh = (parentPos.bottom - parentPos.top) - (windowPos.bottom - windowPos.top); - - w = parent; - - if (dw == 2 * frameThickness) - break; - - if (dw > 100 || dh > 100) - w = 0; - } - - if (w != 0) - SetWindowPos (w, 0, 0, 0, - newWidth + dw, - newHeight + dh, - SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOOWNERZORDER); -#endif - } - - if (editorComp->getPeer() != 0) - editorComp->getPeer()->handleMovedOrResized(); - } - } - - - //============================================================================== - juce_UseDebuggingNewOperator - -private: - AudioProcessor* filter; - juce::MemoryBlock chunkMemory; - uint32 chunkMemoryTime; - EditorCompWrapper* editorComp; - ERect editorSize; - MidiBuffer midiEvents; - VstEvents* outgoingEvents; - int outgoingEventSize; - bool isProcessing; - bool firstResize; - bool hasShutdown; - int diffW, diffH; - float** channels; - VoidArray tempChannels; // see note in processReplacing() - bool hasCreatedTempChannels; - - void deleteTempChannels() - { - int i; - for (i = tempChannels.size(); --i >= 0;) - juce_free (tempChannels.getUnchecked(i)); - - tempChannels.clear(); - - if (filter != 0) - tempChannels.insertMultiple (0, 0, filter->getNumInputChannels() + filter->getNumOutputChannels()); - - hasCreatedTempChannels = false; - } - - void ensureOutgoingEventSize (int numEvents) - { - if (outgoingEventSize < numEvents) - { - numEvents += 32; - const int size = 16 + sizeof (VstEvent*) * numEvents; - - if (outgoingEvents == 0) - outgoingEvents = (VstEvents*) juce_calloc (size); - else - outgoingEvents = (VstEvents*) juce_realloc (outgoingEvents, size); - - for (int i = outgoingEventSize; i < numEvents; ++i) - { - VstMidiEvent* const e = (VstMidiEvent*) juce_calloc (sizeof (VstMidiEvent)); - e->type = kVstMidiType; - e->byteSize = 24; - - outgoingEvents->events[i] = (VstEvent*) e; - } - - outgoingEventSize = numEvents; - } - } - - const String getHostName() - { - char host[256]; - zeromem (host, sizeof (host)); - getHostProductString (host); - return host; - } - -#if JUCE_MAC - WindowRef hostWindow; -#elif JUCE_LINUX - Window hostWindow; -#else - HWND hostWindow; -#endif -}; - -//============================================================================== -void EditorCompWrapper::childBoundsChanged (Component* child) -{ - child->setTopLeftPosition (0, 0); - - const int cw = child->getWidth(); - const int ch = child->getHeight(); - - wrapper->resizeHostWindow (cw, ch); - setSize (cw, ch); - -#if JUCE_MAC - wrapper->resizeHostWindow (cw, ch); // (doing this a second time seems to be necessary in tracktion) -#endif -} - -void EditorCompWrapper::handleAsyncUpdate() -{ - wrapper->tryMasterIdle(); -} - -//============================================================================== -/** Somewhere in the codebase of your plugin, you need to implement this function - and make it create an instance of the filter subclass that you're building. -*/ -extern AudioProcessor* JUCE_CALLTYPE createPluginFilter(); - - -//============================================================================== -static AEffect* pluginEntryPoint (audioMasterCallback audioMaster) -{ - initialiseJuce_GUI(); - - MessageManager::getInstance()->setTimeBeforeShowingWaitCursor (0); - - try - { - if (audioMaster (0, audioMasterVersion, 0, 0, 0, 0) != 0) - { - AudioProcessor* const filter = createPluginFilter(); - - if (filter != 0) - { - JuceVSTWrapper* const wrapper = new JuceVSTWrapper (audioMaster, filter); - return wrapper->getAeffect(); - } - } - } - catch (...) - {} - - return 0; -} - - -//============================================================================== -// Mac startup code.. -#if JUCE_MAC - -extern "C" __attribute__ ((visibility("default"))) AEffect* VSTPluginMain (audioMasterCallback audioMaster) -{ - return pluginEntryPoint (audioMaster); -} - -extern "C" __attribute__ ((visibility("default"))) AEffect* main_macho (audioMasterCallback audioMaster) -{ - return pluginEntryPoint (audioMaster); -} - -//============================================================================== -// Linux startup code.. -#elif JUCE_LINUX - -extern "C" AEffect* main_plugin (audioMasterCallback audioMaster) asm ("main"); - -extern "C" AEffect* main_plugin (audioMasterCallback audioMaster) -{ - initialiseJuce_GUI(); - SharedMessageThread::getInstance(); - - return pluginEntryPoint (audioMaster); -} - -__attribute__((constructor)) void myPluginInit() -{ - // don't put initialiseJuce_GUI here... it will crash ! -} - -__attribute__((destructor)) void myPluginFini() -{ - // don't put shutdownJuce_GUI here... it will crash ! -} - -//============================================================================== -// Win32 startup code.. -#else - -extern "C" __declspec (dllexport) AEffect* VSTPluginMain (audioMasterCallback audioMaster) -{ - return pluginEntryPoint (audioMaster); -} - -extern "C" __declspec (dllexport) void* main (audioMasterCallback audioMaster) -{ - return (void*) pluginEntryPoint (audioMaster); -} - -BOOL WINAPI DllMain (HINSTANCE instance, DWORD dwReason, LPVOID) -{ - if (dwReason == DLL_PROCESS_ATTACH) - PlatformUtilities::setCurrentModuleInstanceHandle (instance); - - return TRUE; -} - -#endif diff --git a/extras/audio plugins/wrapper/juce_IncludeCharacteristics.h b/extras/audio plugins/wrapper/juce_IncludeCharacteristics.h deleted file mode 100644 index 1030d5fefb..0000000000 --- a/extras/audio plugins/wrapper/juce_IncludeCharacteristics.h +++ /dev/null @@ -1,98 +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. - - ============================================================================== -*/ - -#ifndef __JUCE_INCLUDECHARACTERISTICS_JUCEHEADER__ -#define __JUCE_INCLUDECHARACTERISTICS_JUCEHEADER__ - -//============================================================================== -/* 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" - - -//============================================================================== -// The following stuff is just to cause a compile error if you've forgotten to -// define all your plugin settings properly. - -#ifndef JucePlugin_IsSynth - #error "You need to define the JucePlugin_IsSynth value in your JucePluginCharacteristics.h file!" -#endif - -#ifndef JucePlugin_ManufacturerCode - #error "You need to define the JucePlugin_ManufacturerCode value in your JucePluginCharacteristics.h file!" -#endif - -#ifndef JucePlugin_PluginCode - #error "You need to define the JucePlugin_PluginCode value in your JucePluginCharacteristics.h file!" -#endif - -#ifndef JucePlugin_ProducesMidiOutput - #error "You need to define the JucePlugin_ProducesMidiOutput value in your JucePluginCharacteristics.h file!" -#endif - -#ifndef JucePlugin_WantsMidiInput - #error "You need to define the JucePlugin_WantsMidiInput value in your JucePluginCharacteristics.h file!" -#endif - -#ifndef JucePlugin_MaxNumInputChannels - #error "You need to define the JucePlugin_MaxNumInputChannels value in your JucePluginCharacteristics.h file!" -#endif - -#ifndef JucePlugin_MaxNumOutputChannels - #error "You need to define the JucePlugin_MaxNumOutputChannels value in your JucePluginCharacteristics.h file!" -#endif - -#ifndef JucePlugin_PreferredChannelConfigurations - #error "You need to define the JucePlugin_PreferredChannelConfigurations value in your JucePluginCharacteristics.h file!" -#endif - -#ifdef JucePlugin_Latency - #error "JucePlugin_Latency is now deprecated - instead, call the AudioProcessor::setLatencySamples() method if your plugin has a non-zero delay" -#endif - -#ifndef JucePlugin_SilenceInProducesSilenceOut - #error "You need to define the JucePlugin_SilenceInProducesSilenceOut value in your JucePluginCharacteristics.h file!" -#endif - -#ifndef JucePlugin_EditorRequiresKeyboardFocus - #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 - #error "You need to define the JUCE_USE_VSTSDK_2_4 value in your JucePluginCharacteristics.h file!" -#endif - -#endif // __JUCE_INCLUDECHARACTERISTICS_JUCEHEADER__