Signed-off-by: falkTX <falktx@gmail.com>tags/v2.1-alpha1-winvst
| @@ -1,32 +0,0 @@ | |||
| if(MAC) | |||
| if (XCODE AND SMTG_COREAUDIO_SDK_PATH) | |||
| set(target auwrapper) | |||
| set(${target}_sources | |||
| aucarbonview.mm | |||
| aucarbonview.h | |||
| aucocoaview.mm | |||
| aucocoaview.h | |||
| ausdk.mm | |||
| auwrapper.mm | |||
| auwrapper.h | |||
| NSDataIBStream.mm | |||
| NSDataIBStream.h | |||
| ${SDK_ROOT}/pluginterfaces/base/funknown.cpp | |||
| ${SDK_ROOT}/pluginterfaces/base/ustring.cpp | |||
| ${SDK_ROOT}/public.sdk/source/vst/hosting/eventlist.cpp | |||
| ${SDK_ROOT}/public.sdk/source/vst/hosting/eventlist.h | |||
| ${SDK_ROOT}/public.sdk/source/vst/hosting/hostclasses.cpp | |||
| ${SDK_ROOT}/public.sdk/source/vst/hosting/hostclasses.h | |||
| ${SDK_ROOT}/public.sdk/source/vst/hosting/parameterchanges.cpp | |||
| ${SDK_ROOT}/public.sdk/source/vst/hosting/parameterchanges.h | |||
| ${SDK_ROOT}/public.sdk/source/vst/hosting/processdata.cpp | |||
| ${SDK_ROOT}/public.sdk/source/vst/hosting/processdata.h | |||
| ) | |||
| add_library(${target} STATIC ${${target}_sources}) | |||
| target_link_libraries(${target} PRIVATE base "-framework AudioUnit" "-framework CoreMIDI" "-framework AudioToolbox" "-framework CoreFoundation" "-framework Carbon" "-framework Cocoa" "-framework CoreAudio") | |||
| target_include_directories(${target} PRIVATE "${SMTG_COREAUDIO_SDK_PATH}/**") | |||
| add_custom_command(TARGET ${target} PRE_BUILD COMMAND /usr/bin/ruby "./generateCocoaClassNamePrefix.rb" "${CMAKE_CURRENT_LIST_DIR}" WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}") | |||
| else() | |||
| message("* To enable building the AudioUnit wrapper, you need to use the Xcode generator and set SMTG_COREAUDIO_SDK_PATH to the path of your installation of the CoreAudio SDK!") | |||
| endif() | |||
| endif() | |||
| @@ -1,92 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/NSDataIBStream.h | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| /// \cond ignore | |||
| #pragma once | |||
| #import <Foundation/Foundation.h> | |||
| #import "pluginterfaces/base/ibstream.h" | |||
| #import "public.sdk/source/vst/hosting/hostclasses.h" | |||
| //------------------------------------------------------------------------ | |||
| namespace Steinberg { | |||
| namespace Vst { | |||
| //------------------------------------------------------------------------ | |||
| class NSDataIBStream : public IBStream, Vst::IStreamAttributes | |||
| { | |||
| public: | |||
| NSDataIBStream (NSData* data, bool hideAttributes = false); | |||
| virtual ~NSDataIBStream (); | |||
| //---from IBStream------------------- | |||
| tresult PLUGIN_API read (void* buffer, int32 numBytes, int32* numBytesRead = 0) SMTG_OVERRIDE; | |||
| tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten = 0) SMTG_OVERRIDE; | |||
| tresult PLUGIN_API seek (int64 pos, int32 mode, int64* result = 0) SMTG_OVERRIDE; | |||
| tresult PLUGIN_API tell (int64* pos) SMTG_OVERRIDE; | |||
| //---from Vst::IStreamAttributes----- | |||
| virtual tresult PLUGIN_API getFileName (String128 name) SMTG_OVERRIDE; | |||
| virtual IAttributeList* PLUGIN_API getAttributes () SMTG_OVERRIDE; | |||
| //------------------------------------------------------------------------ | |||
| DECLARE_FUNKNOWN_METHODS | |||
| protected: | |||
| NSData* data; | |||
| int64 currentPos; | |||
| HostAttributeList attrList; | |||
| bool hideAttributes; | |||
| }; | |||
| //------------------------------------------------------------------------ | |||
| class NSMutableDataIBStream : public NSDataIBStream | |||
| { | |||
| public: | |||
| NSMutableDataIBStream (NSMutableData* data); | |||
| virtual ~NSMutableDataIBStream (); | |||
| tresult PLUGIN_API write (void* buffer, int32 numBytes, int32* numBytesWritten = 0); | |||
| //------------------------------------------------------------------------ | |||
| protected: | |||
| NSMutableData* mdata; | |||
| }; | |||
| //------------------------------------------------------------------------ | |||
| } // namespace Vst | |||
| } // namespace Steinberg | |||
| /// \endcond | |||
| @@ -1,206 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/NSDataIBStream.mm | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| /// \cond ignore | |||
| #include "NSDataIBStream.h" | |||
| #include "pluginterfaces/vst/ivstattributes.h" | |||
| #include <algorithm> | |||
| #if __clang__ | |||
| #if __has_feature(objc_arc) && __clang_major__ >= 3 | |||
| #define ARC_ENABLED 1 | |||
| #endif // __has_feature(objc_arc) | |||
| #endif // __clang__ | |||
| namespace Steinberg { | |||
| namespace Vst { | |||
| DEF_CLASS_IID(IStreamAttributes); | |||
| //------------------------------------------------------------------------ | |||
| NSDataIBStream::NSDataIBStream (NSData* data, bool hideAttributes) | |||
| : data (data) | |||
| , currentPos (0) | |||
| , hideAttributes (hideAttributes) | |||
| { | |||
| FUNKNOWN_CTOR | |||
| #if !ARC_ENABLED | |||
| [data retain]; | |||
| #endif | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| NSDataIBStream::~NSDataIBStream () | |||
| { | |||
| #if !ARC_ENABLED | |||
| [data release]; | |||
| #endif | |||
| FUNKNOWN_DTOR | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| IMPLEMENT_REFCOUNT (NSDataIBStream) | |||
| //------------------------------------------------------------------------ | |||
| tresult PLUGIN_API NSDataIBStream::queryInterface (const TUID iid, void** obj) | |||
| { | |||
| QUERY_INTERFACE (iid, obj, FUnknown::iid, IBStream) | |||
| QUERY_INTERFACE (iid, obj, IBStream::iid, IBStream) | |||
| if (!hideAttributes) | |||
| QUERY_INTERFACE (iid, obj, IStreamAttributes::iid, IStreamAttributes) | |||
| *obj = 0; | |||
| return kNoInterface; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| tresult PLUGIN_API NSDataIBStream::read (void* buffer, int32 numBytes, int32* numBytesRead) | |||
| { | |||
| int32 useBytes = std::min (numBytes, (int32)([data length] - currentPos)); | |||
| if (useBytes > 0) | |||
| { | |||
| [data getBytes: buffer range: NSMakeRange (currentPos, useBytes)]; | |||
| if (numBytesRead) | |||
| *numBytesRead = useBytes; | |||
| currentPos += useBytes; | |||
| return kResultTrue; | |||
| } | |||
| return kResultFalse; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| tresult PLUGIN_API NSDataIBStream::write (void* buffer, int32 numBytes, int32* numBytesWritten) | |||
| { | |||
| return kResultFalse; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| tresult PLUGIN_API NSDataIBStream::seek (int64 pos, int32 mode, int64* result) | |||
| { | |||
| switch (mode) | |||
| { | |||
| case kIBSeekSet: | |||
| { | |||
| if (pos <= [data length]) | |||
| { | |||
| currentPos = pos; | |||
| if (result) | |||
| tell (result); | |||
| return kResultTrue; | |||
| } | |||
| break; | |||
| } | |||
| case kIBSeekCur: | |||
| { | |||
| if (currentPos + pos <= [data length]) | |||
| { | |||
| currentPos += pos; | |||
| if (result) | |||
| tell (result); | |||
| return kResultTrue; | |||
| } | |||
| break; | |||
| } | |||
| case kIBSeekEnd: | |||
| { | |||
| if ([data length] + pos <= [data length]) | |||
| { | |||
| currentPos = [data length] + pos; | |||
| if (result) | |||
| tell (result); | |||
| return kResultTrue; | |||
| } | |||
| break; | |||
| } | |||
| } | |||
| return kResultFalse; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| tresult PLUGIN_API NSDataIBStream::tell (int64* pos) | |||
| { | |||
| if (pos) | |||
| { | |||
| *pos = currentPos; | |||
| return kResultTrue; | |||
| } | |||
| return kResultFalse; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| tresult PLUGIN_API NSDataIBStream::getFileName (String128 name) | |||
| { | |||
| return kNotImplemented; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| IAttributeList* PLUGIN_API NSDataIBStream::getAttributes () | |||
| { | |||
| return hideAttributes ? 0 : &attrList; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| //------------------------------------------------------------------------ | |||
| //------------------------------------------------------------------------ | |||
| NSMutableDataIBStream::NSMutableDataIBStream (NSMutableData* data) | |||
| : NSDataIBStream (data, true) | |||
| , mdata (data) | |||
| { | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| NSMutableDataIBStream::~NSMutableDataIBStream () | |||
| { | |||
| [mdata setLength:currentPos]; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| tresult PLUGIN_API NSMutableDataIBStream::write (void* buffer, int32 numBytes, int32* numBytesWritten) | |||
| { | |||
| [mdata replaceBytesInRange:NSMakeRange (currentPos, numBytes) withBytes:buffer]; | |||
| if (numBytesWritten) | |||
| *numBytesWritten = numBytes; | |||
| currentPos += numBytes; | |||
| return kResultTrue; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| } // namespace Vst | |||
| } // namespace Steinberg | |||
| /// \endcond | |||
| @@ -1,41 +0,0 @@ | |||
| if(MAC AND XCODE AND SMTG_COREAUDIO_SDK_PATH) | |||
| set(target again_au) | |||
| set(${target}_sources | |||
| doc.cpp | |||
| audiounitconfig.h | |||
| Info.plist | |||
| ) | |||
| add_library(${target} MODULE ${${target}_sources}) | |||
| set_target_properties(${target} PROPERTIES BUNDLE TRUE) | |||
| set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_GENERATE_MASTER_OBJECT_FILE "YES") | |||
| set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_OTHER_LDFLAGS "-all_load") | |||
| set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_GENERATE_PKGINFO_FILE "YES") | |||
| set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_WRAPPER_EXTENSION "component") | |||
| set_target_properties(${target} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${VST3_OUTPUT_DIR}) | |||
| target_link_libraries(${target} PRIVATE auwrapper) | |||
| smtg_set_bundle(${target} INFOPLIST "${CMAKE_CURRENT_LIST_DIR}/Info.plist" PREPROCESS) | |||
| set(outputdir ${VST3_OUTPUT_DIR}/$<CONFIG>) | |||
| add_dependencies(${target} again) | |||
| add_custom_command(TARGET ${target} POST_BUILD COMMAND /bin/mkdir "-p" ${outputdir}/${target}.component/Contents/Resources) | |||
| add_custom_command(TARGET ${target} POST_BUILD COMMAND /bin/ln "-sf" "${outputdir}/again.vst3" "${outputdir}/${target}.component/Contents/Resources/plugin.vst3") | |||
| add_custom_command(TARGET ${target} POST_BUILD COMMAND /bin/ln "-sf" "${outputdir}/${target}.component" "~/Library/Audio/Plug-Ins/Components/") | |||
| execute_process(COMMAND xcrun --find Rez OUTPUT_VARIABLE OSX_REZ_COMMAND OUTPUT_STRIP_TRAILING_WHITESPACE) | |||
| add_custom_command(TARGET ${target} POST_BUILD COMMAND "${OSX_REZ_COMMAND}" | |||
| "-d" "SystemSevenOrLater=1" | |||
| "-script" "Roman" | |||
| "-d" "i386_YES" | |||
| "-d" "x86_64_YES" | |||
| "-is" "${CMAKE_OSX_SYSROOT}" | |||
| "-I" "${CMAKE_OSX_SYSROOT}/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers" | |||
| "-I" "/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers" | |||
| "-I" "${SMTG_COREAUDIO_SDK_PATH}/AudioUnits/AUPublic/AUBase" | |||
| "-I" "${CMAKE_CURRENT_LIST_DIR}" | |||
| "-o" "${outputdir}/${target}.component/Contents/Resources/again_au.rsrc" | |||
| "-useDF" | |||
| "${CMAKE_CURRENT_LIST_DIR}/../auresource.r" | |||
| ) | |||
| endif() | |||
| @@ -1,117 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/again/Info.plist | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| #include "audiounitconfig.h" | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |||
| <plist version="1.0"> | |||
| <dict> | |||
| <key>CFBundleDevelopmentRegion</key> | |||
| <string>English</string> | |||
| <key>CFBundleExecutable</key> | |||
| <string>$(EXECUTABLE_NAME)</string> | |||
| <key>CFBundleIdentifier</key> | |||
| <string>kAudioUnitBundleIdentifier</string> | |||
| <key>CFBundleName</key> | |||
| <string>$(PRODUCT_NAME)</string> | |||
| <key>CFBundleInfoDictionaryVersion</key> | |||
| <string>6.0</string> | |||
| <key>CFBundlePackageType</key> | |||
| <string>BNDL</string> | |||
| <key>CFBundleSignature</key> | |||
| <string>????</string> | |||
| <key>CFBundleVersion</key> | |||
| <string>1.0</string> | |||
| <key>CSResourcesFileMapped</key> | |||
| <string>yes</string> | |||
| /* | |||
| The "AudioUnit SupportedNumChannels" key is only necessary if you build an effect not an instrument. | |||
| You should describe all supported channel configurations. | |||
| This example says that it supports Stereo/Stereo or Mono/Mono. | |||
| */ | |||
| <key>AudioUnit SupportedNumChannels</key> | |||
| <array> | |||
| <dict> | |||
| <key>Outputs</key> | |||
| <string>2</string> | |||
| <key>Inputs</key> | |||
| <string>2</string> | |||
| </dict> | |||
| <dict> | |||
| <key>Outputs</key> | |||
| <string>0</string> | |||
| <key>Inputs</key> | |||
| <string>1</string> | |||
| </dict> | |||
| <dict> | |||
| <key>Outputs</key> | |||
| <string>1</string> | |||
| <key>Inputs</key> | |||
| <string>1</string> | |||
| </dict> | |||
| </array> | |||
| <key>AudioUnit Version</key> | |||
| <string>kAudioUnitVersion</string> | |||
| /* | |||
| Support for the new AUPlugIn model in Mac OS X 10.7 | |||
| */ | |||
| <key>AudioComponents</key> | |||
| <array> | |||
| <dict> | |||
| <key>description</key> | |||
| <string>kAUPluginDescription</string> | |||
| <key>factoryFunction</key> | |||
| <string>AUWrapperFactory</string> | |||
| <key>manufacturer</key> | |||
| <string>kAUPluginManufacturer</string> | |||
| <key>name</key> | |||
| <string>kAUPluginName</string> | |||
| <key>subtype</key> | |||
| <string>kAUPluginSubType</string> | |||
| <key>type</key> | |||
| <string>kAUPluginType</string> | |||
| <key>version</key> | |||
| <integer>kAudioUnitVersion</integer> | |||
| </dict> | |||
| </array> | |||
| </dict> | |||
| </plist> | |||
| @@ -1,61 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/again/audiounitconfig.h | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| // AUWRAPPER_CHANGE | |||
| /* Bundle Identifier */ | |||
| #define kAudioUnitBundleIdentifier com.steinberg.vst3plugin.again.audiounit | |||
| /* Version Number (needs to be in hex)*/ | |||
| #define kAudioUnitVersion 0xFFFFFFFF | |||
| /* Company Name + Effect Name */ | |||
| #define kAUPluginName Steinberg: AGain | |||
| /* Effect Description */ | |||
| #define kAUPluginDescription AGain | |||
| /* Audio Unit Type */ | |||
| #define kAUPluginType aufx | |||
| /* Unique ID */ | |||
| #define kAUPluginSubType gain | |||
| /* Registered Company ID */ | |||
| #define kAUPluginManufacturer Stgb | |||
| // Definitions for the resource file | |||
| #define kAudioUnitName "Steinberg: AGain" // same as kAUPluginName | |||
| #define kAudioUnitDescription "AGain" // same as kAUPluginDescription | |||
| #define kAudioUnitType 'aufx' //kAudioUnitType_Effect // same as kAUPluginType | |||
| #define kAudioUnitComponentSubType 'gain' // same as kAUPluginSubType | |||
| #define kAudioUnitComponentManuf 'Stgb' // same as kAUPluginManufacturer | |||
| #define kAudioUnitCarbonView 1 // if 0 no Carbon view support will be added | |||
| @@ -1,51 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : again.xcconfig | |||
| // Created by : Steinberg, 5/24/12 | |||
| // Description : Xcode configuration file, VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| #include "../../config/ausdkpath" // AUWRAPPER_CHANGE | |||
| PRODUCT_NAME = again // AUWRAPPER_CHANGE | |||
| WRAPPER_EXTENSION = component | |||
| STRIP_STYLE = non-global | |||
| OTHER_LDFLAGS = -all_load | |||
| GENERATE_MASTER_OBJECT_FILE = YES | |||
| KEEP_PRIVATE_EXTERNS = YES | |||
| SEPARATE_SYMBOL_EDIT = YES | |||
| OTHER_REZFLAGS = -d ppc_$ppc -d i386_$i386 -d ppc64_$ppc64 -d x86_64_$x86_64 -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I /$DEVELOPER_DIR/Examples/CoreAudio/AudioUnits/AUPublic/AUBase -I /$DEVELOPER_DIR/Extras/CoreAudio/AudioUnits/AUPublic/AUBase -I $(CUSTOM_AU_SDK_PATH)/AudioUnits/AUPublic/AUBase | |||
| INFOPLIST_PREPROCESS = YES | |||
| PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES | |||
| DEBUG_INFORMATION_FORMAT = dwarf-with-dsym | |||
| INSTALL_PATH = /Library/Audio/Plug-Ins/Components/ | |||
| @@ -1,38 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : again_debug.xcconfig | |||
| // Created by : Steinberg, 5/24/12 | |||
| // Description : Xcode configuration file, VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| #include "../../../../../base/mac/config/debug" // AUWRAPPER_CHANGE | |||
| #include "again" | |||
| @@ -1,38 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : again_release.xcconfig | |||
| // Created by : Steinberg, 5/24/12 | |||
| // Description : Xcode configuration file, VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| #include "../../../../../base/mac/config/release" // AUWRAPPER_CHANGE | |||
| #include "again" | |||
| @@ -1,52 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/again/doc.cpp | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| /* | |||
| TODO: cmake adaption needed | |||
| How-To use the VST3->AU Wrapper: | |||
| - Make a copy of this project | |||
| - search trough the project files for "AUWRAPPER_CHANGE". You may need to change the stuff there especially | |||
| if you have moved the project so that some paths are invalid | |||
| - edit audiounitconfig.h see comments there | |||
| - edit Info.plist see comments there | |||
| - edit the "Make Links Script" for easier debugging/development | |||
| - For the release version, you must place a copy or an alias of your vst3 plugin in the resource folder of the bundle named "plugin.vst3" | |||
| */ | |||
| @@ -1,83 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/aucarbonview.h | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| /// \cond ignore | |||
| #pragma once | |||
| #if !__LP64__ | |||
| #include "AUPublic/AUCarbonViewBase/AUCarbonViewBase.h" | |||
| #include "pluginterfaces/vst/ivsteditcontroller.h" | |||
| #include "base/source/fobject.h" | |||
| #include "pluginterfaces/gui/iplugview.h" | |||
| namespace Steinberg { | |||
| namespace Vst { | |||
| class AUCarbonPlugFrame; | |||
| //------------------------------------------------------------------------ | |||
| class AUCarbonView : public AUCarbonViewBase, public IPlugFrame, public FObject | |||
| { | |||
| public: | |||
| AUCarbonView (AudioUnitCarbonView auv); | |||
| ~AUCarbonView (); | |||
| OSStatus CreateUI (Float32 xoffset, Float32 yoffset); | |||
| OBJ_METHODS(AUCarbonView, FObject) | |||
| DEF_INTERFACES_1(IPlugFrame, FObject) | |||
| REFCOUNT_METHODS(FObject) | |||
| protected: | |||
| tresult PLUGIN_API resizeView (IPlugView* view, ViewRect* vr); | |||
| static OSStatus HIViewAdded (EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void* inUserData); | |||
| IEditController* editController; | |||
| AUCarbonPlugFrame* plugFrame; | |||
| IPlugView* plugView; | |||
| HIViewRef hiPlugView; | |||
| EventHandlerRef eventHandler; | |||
| }; | |||
| //------------------------------------------------------------------------ | |||
| } // namespace Vst | |||
| } // namespace Steinberg | |||
| #endif // !__LP64__ | |||
| /// \endcond | |||
| @@ -1,167 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/aucarbonview.mm | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| /// \cond ignore | |||
| #include "aucarbonview.h" | |||
| #if !__LP64__ | |||
| namespace Steinberg { | |||
| namespace Vst { | |||
| //------------------------------------------------------------------------ | |||
| AUCarbonView::AUCarbonView (AudioUnitCarbonView auv) | |||
| : AUCarbonViewBase (auv) | |||
| , editController (0) | |||
| , plugView (0) | |||
| , hiPlugView (0) | |||
| { | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| AUCarbonView::~AUCarbonView () | |||
| { | |||
| if (plugView) | |||
| { | |||
| plugView->setFrame (0); | |||
| plugView->removed (); | |||
| plugView->release (); | |||
| } | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| OSStatus AUCarbonView::HIViewAdded (EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData) | |||
| { | |||
| UInt32 eventClass = GetEventClass (inEvent); | |||
| UInt32 eventKind = GetEventKind (inEvent); | |||
| if (eventClass == kEventClassControl && eventKind == kEventControlAddedSubControl) | |||
| { | |||
| HIViewRef newControl; | |||
| if (GetEventParameter (inEvent, kEventParamControlSubControl, typeControlRef, NULL, sizeof (HIViewRef) , NULL , &newControl) == noErr) | |||
| { | |||
| AUCarbonView* wrapper = (AUCarbonView*)inUserData; | |||
| wrapper->hiPlugView = newControl; | |||
| RemoveEventHandler (wrapper->eventHandler); | |||
| wrapper->eventHandler = 0; | |||
| } | |||
| } | |||
| return eventNotHandledErr; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| OSStatus AUCarbonView::CreateUI (Float32 xoffset, Float32 yoffset) | |||
| { | |||
| AudioUnit unit = GetEditAudioUnit (); | |||
| if (unit) | |||
| { | |||
| if (!editController) | |||
| { | |||
| UInt32 size = sizeof (IEditController*); | |||
| if (AudioUnitGetProperty (unit, 64000, kAudioUnitScope_Global, 0, &editController, &size) != noErr) | |||
| return kAudioUnitErr_NoConnection; | |||
| } | |||
| if (editController) | |||
| { | |||
| plugView = editController->createView (ViewType::kEditor); | |||
| if (!plugView) | |||
| return kAudioUnitErr_NoConnection; | |||
| HIViewRef contentView; | |||
| const EventTypeSpec eventTypes[] = { | |||
| { kEventClassControl, kEventControlAddedSubControl }, | |||
| }; | |||
| OSStatus err = HIViewFindByID (HIViewGetRoot (GetCarbonWindow ()), kHIViewWindowContentID, &contentView); | |||
| err = InstallControlEventHandler (contentView, HIViewAdded, 1, eventTypes, this, &eventHandler); | |||
| plugView->setFrame (this); | |||
| if (plugView->attached (GetCarbonWindow (), kPlatformTypeHIView) == kResultTrue) | |||
| { | |||
| HIViewRemoveFromSuperview (hiPlugView); | |||
| EmbedControl (hiPlugView); | |||
| HIViewMoveBy (hiPlugView, xoffset, yoffset); | |||
| return noErr; | |||
| } | |||
| else | |||
| plugView->setFrame (0); | |||
| } | |||
| } | |||
| return kAudioUnitErr_NoConnection; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| tresult PLUGIN_API AUCarbonView::resizeView (IPlugView* view, ViewRect* vr) | |||
| { | |||
| if (vr == 0 || view != plugView) | |||
| return kInvalidArgument; | |||
| HIViewRef hiView = GetCarbonPane (); | |||
| if (hiView) | |||
| { | |||
| HIRect r; | |||
| if (HIViewGetFrame (hiView, &r) != noErr) | |||
| return kResultFalse; | |||
| r.size.width = vr->right - vr->left; | |||
| r.size.height = vr->bottom - vr->top; | |||
| if (HIViewSetFrame (hiView, &r) != noErr) | |||
| return kResultFalse; | |||
| if (plugView) | |||
| plugView->onSize (vr); | |||
| return kResultTrue; | |||
| } | |||
| return kResultFalse; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| //COMPONENT_ENTRY(AUCarbonView) | |||
| //------------------------------------------------------------------------ | |||
| extern "C" { | |||
| ComponentResult AUCarbonViewEntry(ComponentParameters *params, AUCarbonView *obj); | |||
| __attribute__ ((visibility ("default"))) ComponentResult AUCarbonViewEntry(ComponentParameters *params, AUCarbonView *obj) | |||
| { | |||
| return ComponentEntryPoint<AUCarbonView>::Dispatch(params, obj); | |||
| } | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| } // namespace Vst | |||
| } // namespace Steinberg | |||
| #endif | |||
| /// \endcond | |||
| @@ -1,68 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/aucocoaview.h | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| /// \cond ignore | |||
| #pragma once | |||
| #import "aucocoaclassprefix.h" | |||
| #import <Cocoa/Cocoa.h> | |||
| #import <AudioUnit/AUCocoaUIView.h> | |||
| #ifndef SMTG_AU_NAMESPACE | |||
| # error define SMTG_AU_NAMESPACE | |||
| #endif | |||
| //----------------------------------------------------------------------------- | |||
| #define SMTG_AU_PLUGIN_NAMESPACE0(x) x | |||
| #define SMTG_AU_PLUGIN_NAMESPACE1(a, b) a##_##b | |||
| #define SMTG_AU_PLUGIN_NAMESPACE2(a, b) SMTG_AU_PLUGIN_NAMESPACE1(a,b) | |||
| #define SMTG_AU_PLUGIN_NAMESPACE(name) SMTG_AU_PLUGIN_NAMESPACE2(SMTG_AU_PLUGIN_NAMESPACE0(name), SMTG_AU_PLUGIN_NAMESPACE0(SMTG_AU_NAMESPACE)) | |||
| //----------------------------------------------------------------------------- | |||
| // SMTG_AU_PLUGIN_NAMESPACE (SMTGAUPluginCocoaView) | |||
| //----------------------------------------------------------------------------- | |||
| //----------------------------------------------------------------------------- | |||
| @interface SMTG_AU_PLUGIN_NAMESPACE (SMTGAUPluginCocoaView) : NSObject <AUCocoaUIBase> | |||
| { | |||
| } | |||
| //----------------------------------------------------------------------------- | |||
| @end | |||
| /// \endcond | |||
| @@ -1,232 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/aucocoaview.mm | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| /// \cond ignore | |||
| #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | |||
| #import "aucocoaview.h" | |||
| #import "auwrapper.h" | |||
| #import "pluginterfaces/vst/ivsteditcontroller.h" | |||
| #import "pluginterfaces/gui/iplugview.h" | |||
| #import "base/source/fobject.h" | |||
| namespace Steinberg { | |||
| DEF_CLASS_IID(IPlugFrame) | |||
| //------------------------------------------------------------------------ | |||
| class AUPlugFrame : public FObject, public IPlugFrame | |||
| //------------------------------------------------------------------------ | |||
| { | |||
| public: | |||
| AUPlugFrame (NSView* parent) : parent (parent) {} | |||
| tresult PLUGIN_API resizeView (IPlugView* view, ViewRect* vr) SMTG_OVERRIDE | |||
| { | |||
| NSRect newSize = NSMakeRect ([parent frame].origin.x, [parent frame].origin.y, vr->right - vr->left, vr->bottom - vr->top); | |||
| [parent setFrame:newSize]; | |||
| return kResultTrue; | |||
| } | |||
| OBJ_METHODS(AUPlugFrame, FObject) | |||
| DEF_INTERFACES_1(IPlugFrame, FObject) | |||
| REFCOUNT_METHODS(FObject) | |||
| protected: | |||
| NSView* parent; | |||
| }; | |||
| } // namespace Steinberg | |||
| using namespace Steinberg; | |||
| //------------------------------------------------------------------------ | |||
| @interface SMTGCocoa_NSViewWrapperForAU : NSView { | |||
| //------------------------------------------------------------------------ | |||
| IPlugView* plugView; | |||
| Vst::IEditController* editController; | |||
| AudioUnit audioUnit; | |||
| FObject* dynlib; | |||
| AUPlugFrame* plugFrame; | |||
| BOOL isAttached; | |||
| } | |||
| - (id) initWithEditController: (Vst::IEditController*) editController audioUnit: (AudioUnit) au preferredSize: (NSSize) size; | |||
| @end | |||
| //------------------------------------------------------------------------ | |||
| // SMTG_AU_PLUGIN_NAMESPACE (SMTGAUPluginCocoaView) | |||
| //------------------------------------------------------------------------ | |||
| //------------------------------------------------------------------------ | |||
| @implementation SMTG_AU_PLUGIN_NAMESPACE (SMTGAUPluginCocoaView) | |||
| //------------------------------------------------------------------------ | |||
| - (unsigned) interfaceVersion | |||
| { | |||
| return 0; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| - (NSString *) description | |||
| { | |||
| return @"Cocoa View"; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| - (NSView *)uiViewForAudioUnit:(AudioUnit)inAU withSize:(NSSize)inPreferredSize | |||
| { | |||
| Vst::IEditController* editController = 0; | |||
| UInt32 size = sizeof (Vst::IEditController*); | |||
| if (AudioUnitGetProperty (inAU, 64000, kAudioUnitScope_Global, 0, &editController, &size) != noErr) | |||
| return nil; | |||
| return [[[SMTGCocoa_NSViewWrapperForAU alloc] initWithEditController:editController audioUnit:inAU preferredSize:inPreferredSize] autorelease]; | |||
| } | |||
| @end | |||
| //------------------------------------------------------------------------ | |||
| @implementation SMTGCocoa_NSViewWrapperForAU | |||
| //------------------------------------------------------------------------ | |||
| - (id) initWithEditController: (Vst::IEditController*) _editController audioUnit: (AudioUnit) au preferredSize: (NSSize) size | |||
| { | |||
| self = [super initWithFrame: NSMakeRect (0, 0, size.width, size.height)]; | |||
| if (self) | |||
| { | |||
| editController = _editController; | |||
| editController->addRef (); | |||
| audioUnit = au; | |||
| plugView = editController->createView (Vst::ViewType::kEditor); | |||
| if (!plugView || plugView->isPlatformTypeSupported (kPlatformTypeNSView) != kResultTrue) | |||
| { | |||
| [self dealloc]; | |||
| return nil; | |||
| } | |||
| plugFrame = NEW AUPlugFrame (self); | |||
| plugView->setFrame (plugFrame); | |||
| if (plugView->attached (self, kPlatformTypeNSView) != kResultTrue) | |||
| { | |||
| [self dealloc]; | |||
| return nil; | |||
| } | |||
| ViewRect vr; | |||
| if (plugView->getSize (&vr) == kResultTrue) | |||
| { | |||
| NSRect newSize = NSMakeRect (0, 0, vr.right - vr.left, vr.bottom - vr.top); | |||
| [self setFrame:newSize]; | |||
| } | |||
| isAttached = YES; | |||
| UInt32 size = sizeof (FObject*); | |||
| if (AudioUnitGetProperty (audioUnit, 64001, kAudioUnitScope_Global, 0, &dynlib, &size) == noErr) | |||
| dynlib->addRef (); | |||
| } | |||
| return self; | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| - (void) setFrame: (NSRect) newSize | |||
| { | |||
| [super setFrame: newSize]; | |||
| ViewRect viewRect (0, 0, newSize.size.width, newSize.size.height); | |||
| if (plugView) | |||
| plugView->onSize (&viewRect); | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| - (BOOL)isFlipped { return YES; } | |||
| //------------------------------------------------------------------------ | |||
| - (void)viewDidMoveToSuperview | |||
| { | |||
| if (plugView) | |||
| { | |||
| if ([self superview]) | |||
| { | |||
| if (!isAttached) | |||
| { | |||
| isAttached = plugView->attached (self, kPlatformTypeNSView) == kResultTrue; | |||
| } | |||
| } | |||
| else | |||
| { | |||
| if (isAttached) | |||
| { | |||
| plugView->removed (); | |||
| isAttached = NO; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| //------------------------------------------------------------------------ | |||
| - (void) dealloc | |||
| { | |||
| if (plugView) | |||
| { | |||
| if (isAttached) | |||
| { | |||
| plugView->setFrame (0); | |||
| plugView->removed (); | |||
| } | |||
| plugView->release (); | |||
| if (plugFrame) | |||
| plugFrame->release (); | |||
| if (editController) | |||
| { | |||
| Steinberg::uint32 refCount= editController->addRef (); | |||
| if (refCount == 2) | |||
| editController->terminate (); | |||
| editController->release (); | |||
| editController->release (); | |||
| editController = 0; | |||
| } | |||
| } | |||
| if (dynlib) | |||
| dynlib->release (); | |||
| [super dealloc]; | |||
| } | |||
| @end | |||
| /// \endcond | |||
| @@ -1,85 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/auresource.r | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| #include <AudioUnit/AudioUnit.r> | |||
| #include <AudioUnit/AudioUnitCarbonView.r> | |||
| #include "audiounitconfig.h" | |||
| /* ---------------------------------------------------------------------------------------------------------------------------------------- | |||
| // audiounitconfig.h needs the following definitions: | |||
| #define kAudioUnitVersion 0xFFFFFFFF // Version Number, needs to be in hex | |||
| #define kAudioUnitName "Steinberg: MyVST3 as AudioUnit" // Company Name + Effect Name | |||
| #define kAudioUnitDescription "My VST3 as AudioUnit" // Effect Description | |||
| #define kAudioUnitType kAudioUnitType_Effect // can be kAudioUnitType_Effect or kAudioUnitType_MusicDevice | |||
| #define kAudioUnitComponentSubType 'test' // unique id | |||
| #define kAudioUnitComponentManuf 'SMTG' // registered company id | |||
| #define kAudioUnitCarbonView 1 // if 0 no Carbon view support will be added | |||
| */ | |||
| #define kAudioUnitResID_Processor 1000 | |||
| #define kAudioUnitResID_CarbonView 9000 | |||
| //----------------------Processor---------------------------------------------- | |||
| #define RES_ID kAudioUnitResID_Processor | |||
| #define COMP_TYPE kAudioUnitType | |||
| #define COMP_SUBTYPE kAudioUnitComponentSubType | |||
| #define COMP_MANUF kAudioUnitComponentManuf | |||
| #define VERSION kAudioUnitVersion | |||
| #define NAME kAudioUnitName | |||
| #define DESCRIPTION kAudioUnitDescription | |||
| #define ENTRY_POINT "AUWrapperEntry" | |||
| #include "AUResources.r" | |||
| #if kAudioUnitCarbonView | |||
| //----------------------View---------------------------------------------- | |||
| #define RES_ID kAudioUnitResID_CarbonView | |||
| #define COMP_TYPE kAudioUnitCarbonViewComponentType | |||
| #define COMP_SUBTYPE kAudioUnitComponentSubType | |||
| #define COMP_MANUF kAudioUnitComponentManuf | |||
| #define VERSION kAudioUnitVersion | |||
| #define NAME "CarbonView" | |||
| #define DESCRIPTION "CarbonView" | |||
| #define ENTRY_POINT "AUCarbonViewEntry" | |||
| #include "AUResources.r" | |||
| #endif | |||
| @@ -1,84 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/ausdk.mm | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| /// \cond ignore | |||
| #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | |||
| #ifndef MAC_OS_X_VERSION_10_7 | |||
| #define MAC_OS_X_VERSION_10_7 1070 | |||
| #endif | |||
| #import "PublicUtility/CAAudioChannelLayout.cpp" | |||
| #import "PublicUtility/CABundleLocker.cpp" | |||
| #import "PublicUtility/CAHostTimeBase.cpp" | |||
| #import "PublicUtility/CAStreamBasicDescription.cpp" | |||
| #import "PublicUtility/CAVectorUnit.cpp" | |||
| #import "PublicUtility/CAAUParameter.cpp" | |||
| #import "AUPublic/AUBase/ComponentBase.cpp" | |||
| #import "AUPublic/AUBase/AUScopeElement.cpp" | |||
| #import "AUPublic/AUBase/AUOutputElement.cpp" | |||
| #import "AUPublic/AUBase/AUInputElement.cpp" | |||
| #import "AUPublic/AUBase/AUBase.cpp" | |||
| #if !__LP64__ | |||
| #import "AUPublic/AUCarbonViewBase/AUCarbonViewBase.cpp" | |||
| #import "AUPublic/AUCarbonViewBase/AUCarbonViewControl.cpp" | |||
| #import "AUPublic/AUCarbonViewBase/AUCarbonViewDispatch.cpp" | |||
| #import "AUPublic/AUCarbonViewBase/AUControlGroup.cpp" | |||
| #import "AUPublic/AUCarbonViewBase/CarbonEventHandler.cpp" | |||
| #endif | |||
| #import "AUPublic/Utility/AUTimestampGenerator.cpp" | |||
| #import "AUPublic/Utility/AUBuffer.cpp" | |||
| #import "AUPublic/Utility/AUBaseHelper.cpp" | |||
| #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 | |||
| #import "AUPublic/OtherBases/AUMIDIEffectBase.cpp" | |||
| #import "AUPublic/Utility/AUDebugDispatcher.cpp" | |||
| #else | |||
| #import "AUPublic/AUBase/AUPlugInDispatch.cpp" | |||
| #endif | |||
| #if !CA_USE_AUDIO_PLUGIN_ONLY | |||
| #import "AUPublic/AUBase/AUDispatch.cpp" | |||
| #import "AUPublic/OtherBases/MusicDeviceBase.cpp" | |||
| #import "AUPublic/OtherBases/AUMIDIBase.cpp" | |||
| #import "AUPublic/OtherBases/AUEffectBase.cpp" | |||
| #endif | |||
| /// \endcond | |||
| @@ -1,340 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/auwrapper.h | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| /** | |||
| *************************** | |||
| \page auwrapper AudioUnit Wrapper | |||
| *************************** | |||
| \section AUIntroduction Introduction | |||
| *************************** | |||
| The VST 3 SDK comes with an AudioUnit wrapper, which can wrap one VST 3 Audio Processor and Edit Controller as an AudioUnit effect/instrument. | |||
| The wrapper is a small dynamic library which loads the VST 3 Plug-in. | |||
| As AudioUnits store some important information in their resource fork, this library must be compiled for every VST 3 Plug-in. | |||
| \n\n | |||
| *************************** | |||
| \section AUhowdoesitwork How does it work ? | |||
| *************************** | |||
| - build the auwrapper project (public.sdk/source/vst/auwrapper/auwrapper.xcodeproj) | |||
| - create a copy of the again AU wrapper example project directory (public.sdk/source/vst/auwrapper/again/) | |||
| - rename the copy to your needs | |||
| - edit the target settings of the project and change | |||
| - Product Name | |||
| - Library search path so that it points to the directory where libauwrapper.a exists | |||
| - architecture setting so that it only includes architectures the VST 3 Plug-in supports | |||
| - search in the project for AUWRAPPER_CHANGE and change the settings to your needs, especially in : | |||
| - edit audiounitconfig.h see comments there | |||
| - edit Info.plist see comments there | |||
| - edit the "Make Links Script" for easier debugging/development | |||
| - build your project | |||
| - done... that is all! | |||
| For the release version, you must place a copy or an alias of your VST 3 Plug-in in the resource folder of the bundle named "plugin.vst3" | |||
| */ | |||
| /// \cond ignore | |||
| #pragma once | |||
| #if CA_USE_AUDIO_PLUGIN_ONLY | |||
| #include "AudioUnits/AUPublic/AUBase/AUBase.h" | |||
| #define AUWRAPPER_BASE_CLASS AUBase | |||
| #else | |||
| #include "AudioUnits/AUPublic/OtherBases/MusicDeviceBase.h" | |||
| #define AUWRAPPER_BASE_CLASS MusicDeviceBase | |||
| #endif | |||
| #include "pluginterfaces/vst/ivstaudioprocessor.h" | |||
| #include "pluginterfaces/vst/ivsteditcontroller.h" | |||
| #include "pluginterfaces/vst/ivstprocesscontext.h" | |||
| #include "pluginterfaces/vst/ivstunits.h" | |||
| #include "public.sdk/source/vst/hosting/parameterchanges.h" | |||
| #include "public.sdk/source/vst/hosting/processdata.h" | |||
| #include "public.sdk/source/vst/hosting/eventlist.h" | |||
| #include "base/source/timer.h" | |||
| #include "base/source/fstring.h" | |||
| #include "base/source/flock.h" | |||
| #include <Cocoa/Cocoa.h> | |||
| #include <AudioToolbox/AudioToolbox.h> | |||
| #include <vector> | |||
| #include <map> | |||
| namespace Steinberg { | |||
| namespace Vst { | |||
| //------------------------------------------------------------------------ | |||
| typedef struct MIDIMessageInfoStruct { | |||
| UInt8 status; | |||
| UInt8 channel; | |||
| UInt8 data1; | |||
| UInt8 data2; | |||
| UInt32 startFrame; | |||
| } MIDIMessageInfoStruct; | |||
| //------------------------------------------------------------------------ | |||
| class MIDIOutputCallbackHelper | |||
| { | |||
| public: | |||
| MIDIOutputCallbackHelper () | |||
| { | |||
| mMIDIMessageList.reserve (16); | |||
| mMIDICallbackStruct.midiOutputCallback = NULL; | |||
| } | |||
| virtual ~MIDIOutputCallbackHelper () {}; | |||
| void SetCallbackInfo (AUMIDIOutputCallback callback, void* userData) | |||
| { | |||
| mMIDICallbackStruct.midiOutputCallback = callback; | |||
| mMIDICallbackStruct.userData = userData; | |||
| } | |||
| void AddEvent (UInt8 status, UInt8 channel, UInt8 data1, UInt8 data2, UInt32 inStartFrame) | |||
| { | |||
| MIDIMessageInfoStruct info = {status, channel, data1, data2, inStartFrame}; | |||
| mMIDIMessageList.push_back (info); | |||
| } | |||
| void FireAtTimeStamp (const AudioTimeStamp& inTimeStamp) | |||
| { | |||
| if (!mMIDIMessageList.empty () && mMIDICallbackStruct.midiOutputCallback != 0) | |||
| { | |||
| // synthesize the packet list and call the MIDIOutputCallback | |||
| // iterate through the vector and get each item | |||
| std::vector<MIDIMessageInfoStruct>::iterator myIterator; | |||
| MIDIPacketList* pktlist = PacketList (); | |||
| for (myIterator = mMIDIMessageList.begin (); myIterator != mMIDIMessageList.end (); myIterator++) | |||
| { | |||
| MIDIMessageInfoStruct item = *myIterator; | |||
| MIDIPacket* pkt = MIDIPacketListInit (pktlist); | |||
| bool tooBig = false; | |||
| Byte data[3] = { item.status, item.data1, item.data2 }; | |||
| if ((pkt = MIDIPacketListAdd (pktlist, sizeof (mBuffersAllocated), pkt, item.startFrame, 4, const_cast<Byte*>(data))) == NULL) | |||
| tooBig = true; | |||
| if (tooBig) | |||
| { // send what we have and then clear the buffer and send again | |||
| // issue the callback with what we got | |||
| OSStatus result = mMIDICallbackStruct.midiOutputCallback (mMIDICallbackStruct.userData, &inTimeStamp, 0, pktlist); | |||
| if (result != noErr) | |||
| printf ("error calling output callback: %d", (int) result); | |||
| // clear stuff we've already processed, and fire again | |||
| mMIDIMessageList.erase (mMIDIMessageList.begin (), myIterator); | |||
| this->FireAtTimeStamp (inTimeStamp); | |||
| return; | |||
| } | |||
| } | |||
| // fire callback | |||
| OSStatus result = mMIDICallbackStruct.midiOutputCallback (mMIDICallbackStruct.userData, &inTimeStamp, 0, pktlist); | |||
| if (result != noErr) | |||
| printf ("error calling output callback: %d", (int) result); | |||
| mMIDIMessageList.clear (); | |||
| } | |||
| } | |||
| protected: | |||
| typedef std::vector<MIDIMessageInfoStruct> MIDIMessageList; | |||
| private: | |||
| MIDIPacketList* PacketList () {return (MIDIPacketList*)mBuffersAllocated;} | |||
| Byte mBuffersAllocated[1024]; | |||
| AUMIDIOutputCallbackStruct mMIDICallbackStruct; | |||
| MIDIMessageList mMIDIMessageList; | |||
| }; | |||
| //------------------------------------------------------------------------ | |||
| //------------------------------------------------------------------------ | |||
| class AUWrapper | |||
| : public AUWRAPPER_BASE_CLASS | |||
| , public IComponentHandler | |||
| , public ITimerCallback | |||
| { | |||
| public: | |||
| AUWrapper (ComponentInstanceRecord* ci); | |||
| ~AUWrapper (); | |||
| //---ComponentBase--------------------- | |||
| ComponentResult Version () SMTG_OVERRIDE; | |||
| void PostConstructor () SMTG_OVERRIDE; | |||
| //---AUBase----------------------------- | |||
| void Cleanup () SMTG_OVERRIDE; | |||
| ComponentResult Initialize () SMTG_OVERRIDE; | |||
| AUElement* CreateElement (AudioUnitScope scope, AudioUnitElement element) SMTG_OVERRIDE; | |||
| UInt32 SupportedNumChannels (const AUChannelInfo** outInfo) SMTG_OVERRIDE; | |||
| bool StreamFormatWritable (AudioUnitScope scope, AudioUnitElement element) SMTG_OVERRIDE; | |||
| ComponentResult ChangeStreamFormat (AudioUnitScope inScope, AudioUnitElement inElement, const CAStreamBasicDescription& inPrevFormat, const CAStreamBasicDescription& inNewFormat) SMTG_OVERRIDE; | |||
| ComponentResult SetConnection (const AudioUnitConnection& inConnection) SMTG_OVERRIDE; | |||
| ComponentResult GetParameterInfo (AudioUnitScope inScope, AudioUnitParameterID inParameterID, AudioUnitParameterInfo& outParameterInfo) SMTG_OVERRIDE; | |||
| ComponentResult SetParameter (AudioUnitParameterID inID, AudioUnitScope inScope, AudioUnitElement inElement, AudioUnitParameterValue inValue, UInt32 inBufferOffsetInFrames) SMTG_OVERRIDE; | |||
| ComponentResult SaveState (CFPropertyListRef* outData) SMTG_OVERRIDE; | |||
| ComponentResult RestoreState (CFPropertyListRef inData) SMTG_OVERRIDE; | |||
| ComponentResult Render (AudioUnitRenderActionFlags &ioActionFlags, const AudioTimeStamp &inTimeStamp, UInt32 inNumberFrames) SMTG_OVERRIDE; | |||
| void processOutputEvents (const AudioTimeStamp &inTimeStamp); | |||
| int GetNumCustomUIComponents () SMTG_OVERRIDE; | |||
| void GetUIComponentDescs (ComponentDescription* inDescArray) SMTG_OVERRIDE; | |||
| ComponentResult GetPropertyInfo (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, UInt32 &outDataSize, Boolean &outWritable) SMTG_OVERRIDE; | |||
| ComponentResult GetProperty (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, void* outData) SMTG_OVERRIDE; | |||
| ComponentResult SetProperty (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, const void* inData, UInt32 inDataSize) SMTG_OVERRIDE; | |||
| bool CanScheduleParameters() const; // Not in the base class anymore in newer CoreAudio SDKs | |||
| Float64 GetLatency () SMTG_OVERRIDE; | |||
| Float64 GetTailTime () SMTG_OVERRIDE; | |||
| //---Factory presets | |||
| OSStatus GetPresets (CFArrayRef* outData) const SMTG_OVERRIDE; | |||
| OSStatus NewFactoryPresetSet (const AUPreset& inNewFactoryPreset) SMTG_OVERRIDE; | |||
| //---MusicDeviceBase------------------------- | |||
| ComponentResult StartNote (MusicDeviceInstrumentID inInstrument, MusicDeviceGroupID inGroupID, NoteInstanceID* outNoteInstanceID, UInt32 inOffsetSampleFrame, const MusicDeviceNoteParams &inParams) SMTG_OVERRIDE; | |||
| ComponentResult StopNote (MusicDeviceGroupID inGroupID, NoteInstanceID inNoteInstanceID, UInt32 inOffsetSampleFrame) SMTG_OVERRIDE; | |||
| OSStatus GetInstrumentCount (UInt32 &outInstCount) const SMTG_OVERRIDE; | |||
| //---AUMIDIBase------------------------------ | |||
| OSStatus HandleNonNoteEvent (UInt8 status, UInt8 channel, UInt8 data1, UInt8 data2, UInt32 inStartFrame) SMTG_OVERRIDE; | |||
| //---custom---------------------------------- | |||
| void setControllerParameter (ParamID pid, ParamValue value); | |||
| // return for a given midiChannel the unitID and the ProgramListID | |||
| bool getProgramListAndUnit (int32 midiChannel, UnitID& unitId, ProgramListID& programListId); | |||
| // restore preset state, add StateType "Project" to stream if loading from project | |||
| ComponentResult restoreState (CFPropertyListRef inData, bool fromProject); | |||
| //------------------------------------------------------------------------ | |||
| #if !CA_USE_AUDIO_PLUGIN_ONLY | |||
| static ComponentResult ComponentEntryDispatch (ComponentParameters* params, AUWrapper* This); | |||
| #endif | |||
| //------------------------------------------------------------------------ | |||
| static CFBundleRef gBundleRef; | |||
| //------------------------------------------------------------------------ | |||
| DECLARE_FUNKNOWN_METHODS | |||
| protected: | |||
| //---from IComponentHandler------------------- | |||
| tresult PLUGIN_API beginEdit (ParamID tag) SMTG_OVERRIDE; | |||
| tresult PLUGIN_API performEdit (ParamID tag, ParamValue valueNormalized) SMTG_OVERRIDE; | |||
| tresult PLUGIN_API endEdit (ParamID tag) SMTG_OVERRIDE; | |||
| tresult PLUGIN_API restartComponent (int32 flags) SMTG_OVERRIDE; | |||
| //---from ITimerCallback---------------------- | |||
| void onTimer (Timer* timer) SMTG_OVERRIDE; | |||
| // internal helpers | |||
| double getSampleRate () const { return sampleRate; } | |||
| void updateProcessContext (); | |||
| void syncParameterValues (); | |||
| void cacheParameterValues (); | |||
| void clearParameterValueCache (); | |||
| virtual IPluginFactory* getFactory (); | |||
| void loadVST3Module (); | |||
| void unloadVST3Module (); | |||
| bool validateChannelPair (int inChannelsIn, int inChannelsOut, const AUChannelInfo* info, UInt32 numChanInfo) const; | |||
| IAudioProcessor* audioProcessor; | |||
| IEditController* editController; | |||
| IMidiMapping* midiMapping; | |||
| Timer* timer; | |||
| HostProcessData processData; | |||
| ParameterChanges processParamChanges; | |||
| ParameterChanges outputParamChanges; | |||
| ParameterChangeTransfer transferParamChanges; | |||
| ParameterChangeTransfer outputParamTransfer; | |||
| ProcessContext processContext; | |||
| EventList eventList; | |||
| typedef std::map<uint32, AudioUnitParameterInfo> CachedParameterInfoMap; | |||
| typedef std::map<UnitID, UnitInfo> UnitInfoMap; | |||
| typedef std::vector<String> ClumpGroupVector; | |||
| UnitInfoMap unitInfos; | |||
| ClumpGroupVector clumpGroups; | |||
| CachedParameterInfoMap cachedParameterInfos; | |||
| FLock parameterCacheChanging; | |||
| NoteInstanceID noteCounter; | |||
| double sampleRate; | |||
| ParamID bypassParamID; | |||
| AUPreset* presets; | |||
| int32 numPresets; | |||
| ParamID factoryProgramChangedID; | |||
| bool isInstrument; | |||
| bool isBypassed; | |||
| AUParameterListenerRef paramListenerRef; | |||
| static const int32 kMaxProgramChangeParameters = 16; | |||
| ParamID programChangeParameters[kMaxProgramChangeParameters]; // for each midi channel | |||
| int32 midiOutCount; // currently only 0 or 1 supported | |||
| MIDIOutputCallbackHelper mCallbackHelper; | |||
| EventList outputEvents; | |||
| private: | |||
| void buildUnitInfos (IUnitInfo* unitInfoController, UnitInfoMap& units) const; | |||
| }; | |||
| //------------------------------------------------------------------------ | |||
| class AutoreleasePool | |||
| { | |||
| public: | |||
| AutoreleasePool () { ap = [[NSAutoreleasePool alloc] init]; } | |||
| ~AutoreleasePool () { [ap drain]; } | |||
| //------------------------------------------------------------------------ | |||
| protected: | |||
| NSAutoreleasePool* ap; | |||
| }; | |||
| //------------------------------------------------------------------------ | |||
| } // namespace Vst | |||
| } // namespace Steinberg | |||
| /// \endcond | |||
| @@ -1,38 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/auwrapper/auwrapper_prefix.pch | |||
| // Created by : Steinberg, 12/2007 | |||
| // Description : VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| #include <CoreFoundation/CoreFoundation.h> | |||
| #include <CoreAudio/CoreAudio.h> | |||
| @@ -1,38 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : ausdkpath.xcconfig | |||
| // Created by : Steinberg, 5/24/12 | |||
| // Description : Xcode configuration file to specify paths to the AU SDK files, VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| // If you are building with Xcode >= 4.x please add the path to your downloaded Audio Tools for Xcode | |||
| CUSTOM_AU_SDK_PATH=/Applications/Xcode.app/Contents/Developer/Extras/CoreAudio/ // AUWRAPPER_CHANGE | |||
| @@ -1,44 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : auwrapper.xcconfig | |||
| // Created by : Steinberg, 5/24/12 | |||
| // Description : Xcode configuration file to specify paths to the AU SDK files, VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| #include "../../../../../base/mac/config/libc++base" | |||
| #include "ausdkpath" | |||
| PRODUCT_NAME = auwrapper | |||
| HEADER_SEARCH_PATHS = ../../../../ $(CUSTOM_AU_SDK_PATH)/** $(DEVELOPER_DIR)/Examples/CoreAudio/** $(DEVELOPER_DIR)/Extras/CoreAudio/** $(DEVELOPER_DIR)/Extras/CoreAudio/AudioUnits/AUPublic/AUViewBase/** ../../../../libraries/source/CoreAudio/** | |||
| GCC_PREFIX_HEADER = auwrapper_prefix.pch | |||
| GCC_PRECOMPILE_PREFIX_HEADER = YES | |||
| @@ -1,40 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : ausdkpath_debug.xcconfig | |||
| // Created by : Steinberg, 5/24/12 | |||
| // Description : Xcode configuration file to specify paths to the AU SDK files, VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| #include "../../../../../base/mac/config/debug" | |||
| GCC_OPTIMIZATION_LEVEL = 0 | |||
| DEPLOYMENT_POSTPROCESSING = NO | |||
| @@ -1,40 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : auwrapper_release.xcconfig | |||
| // Created by : Steinberg, 5/24/12 | |||
| // Description : Xcode configuration file to specify paths to the AU SDK files, VST 3 -> AU Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| #include "../../../../../base/mac/config/release" | |||
| GCC_OPTIMIZATION_LEVEL = 3 | |||
| DEPLOYMENT_POSTPROCESSING = NO | |||
| @@ -1,23 +0,0 @@ | |||
| #!/usr/bin/ruby | |||
| require 'time' | |||
| cocoaClassPrefixDir=ARGV[0] | |||
| cocoaClassPrefixDir = ARGV[0] | |||
| if cocoaClassPrefixDir == nil | |||
| $stdout << "Cannot resolve output directory\n" | |||
| exit(-1) | |||
| end | |||
| $stdout << "Generating new class prefix for Objective-C classes in #{cocoaClassPrefixDir}\n" | |||
| File.open("#{cocoaClassPrefixDir}/aucocoaclassprefix.h", "w+") do |stream| | |||
| t = Time.now.to_i | |||
| t.round | |||
| id = t.to_s | |||
| stream << "#define SMTG_AU_NAMESPACE\t" | |||
| stream << "SMTGAUCocoa#{id}_\n" | |||
| end | |||
| @@ -1,335 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/vst2wrapper/vst2wrapper.h | |||
| // Created by : Steinberg, 01/2009 | |||
| // Description : VST 3 -> VST 2 Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| /** | |||
| ************************************** | |||
| \page vst2xwrapper VST 2.x Wrapper | |||
| *************************** | |||
| \section VST2Introduction Introduction | |||
| *************************** | |||
| The VST 3 SDK comes with a helper class which wraps one VST 3 Audio Processor and Edit Controller to | |||
| a VST 2.x Plug-in. | |||
| \n\n | |||
| *************************** | |||
| \section VST2howdoesitwork How does it work ? | |||
| *************************** | |||
| You just need to add public.sdk/source/vst/vst2wrapper/vst2wrapper.sdk.cpp to your project and add | |||
| the following code somewhere in your sources: | |||
| \code | |||
| #include "public.sdk/source/vst/vst2wrapper/vst2wrapper.h" | |||
| //------------------------------------------------------------------------ | |||
| ::AudioEffect* createEffectInstance (audioMasterCallback audioMaster) | |||
| { | |||
| return Steinberg::Vst::Vst2Wrapper::create (GetPluginFactory (), kAudioProcessorCID, kVst2UniqueID, audioMaster); | |||
| } | |||
| \endcode | |||
| */ | |||
| /// \cond ignore | |||
| #pragma once | |||
| #include "pluginterfaces/base/ftypes.h" | |||
| #include "pluginterfaces/vst/ivstaudioprocessor.h" | |||
| #include "pluginterfaces/vst/ivsteditcontroller.h" | |||
| #include "pluginterfaces/vst/ivsthostapplication.h" | |||
| #include "pluginterfaces/vst/ivstprocesscontext.h" | |||
| #include "pluginterfaces/vst/ivstunits.h" | |||
| #include "public.sdk/source/common/memorystream.h" | |||
| #include "public.sdk/source/vst/hosting/eventlist.h" | |||
| #include "public.sdk/source/vst/hosting/parameterchanges.h" | |||
| #include "public.sdk/source/vst/hosting/processdata.h" | |||
| #include "public.sdk/source/vst2.x/audioeffectx.h" | |||
| #include "base/source/fstring.h" | |||
| #include "base/source/timer.h" | |||
| #include <map> | |||
| #include <vector> | |||
| //------------------------------------------------------------------------ | |||
| namespace Steinberg { | |||
| namespace Vst { | |||
| class Vst2MidiEventQueue; | |||
| //------------------------------------------------------------------------------------------------------- | |||
| class Vst2Wrapper : public ::AudioEffectX, | |||
| public IHostApplication, | |||
| public IComponentHandler, | |||
| public IUnitHandler, | |||
| public ITimerCallback, | |||
| public IVst3ToVst2Wrapper | |||
| { | |||
| public: | |||
| //--- ------------------------------------------------------------------------------------------------- | |||
| // static creation method | |||
| static AudioEffect* create (IPluginFactory* factory, const TUID vst3ComponentID, | |||
| VstInt32 vst2ID, audioMasterCallback audioMaster); | |||
| Vst2Wrapper (IAudioProcessor* processor, IEditController* controller, | |||
| audioMasterCallback audioMaster, const TUID vst3ComponentID, VstInt32 vst2ID, | |||
| IPluginFactory* factory = 0); | |||
| ~Vst2Wrapper (); | |||
| bool init (); | |||
| // AudioEffectX overrides ----------------------------------------------- | |||
| virtual void suspend () SMTG_OVERRIDE; // Called when Plug-in is switched to off | |||
| virtual void resume () SMTG_OVERRIDE; // Called when Plug-in is switched to on | |||
| virtual VstInt32 startProcess () SMTG_OVERRIDE; | |||
| virtual VstInt32 stopProcess () SMTG_OVERRIDE; | |||
| virtual void setSampleRate (float newSamplerate) | |||
| SMTG_OVERRIDE; // Called when the sample rate changes (always in a suspend state) | |||
| virtual void setBlockSize (VstInt32 newBlockSize) | |||
| SMTG_OVERRIDE; // Called when the maximum block size changes | |||
| // (always in a suspend state). Note that the | |||
| // sampleFrames in Process Calls could be | |||
| // smaller than this block size, but NOT bigger. | |||
| virtual float getParameter (VstInt32 index) SMTG_OVERRIDE; | |||
| virtual void setParameter (VstInt32 index, float value) SMTG_OVERRIDE; | |||
| virtual void setProgram (VstInt32 program) SMTG_OVERRIDE; | |||
| virtual void setProgramName (char* name) SMTG_OVERRIDE; | |||
| virtual void getProgramName (char* name) SMTG_OVERRIDE; | |||
| virtual bool getProgramNameIndexed (VstInt32 category, VstInt32 index, | |||
| char* text) SMTG_OVERRIDE; | |||
| virtual void getParameterLabel (VstInt32 index, char* label) SMTG_OVERRIDE; | |||
| virtual void getParameterDisplay (VstInt32 index, char* text) SMTG_OVERRIDE; | |||
| virtual void getParameterName (VstInt32 index, char* text) SMTG_OVERRIDE; | |||
| virtual bool canParameterBeAutomated (VstInt32 index) SMTG_OVERRIDE; | |||
| virtual bool string2parameter (VstInt32 index, char* text) SMTG_OVERRIDE; | |||
| virtual bool getParameterProperties (VstInt32 index, VstParameterProperties* p) SMTG_OVERRIDE; | |||
| virtual VstInt32 getChunk (void** data, bool isPreset = false) SMTG_OVERRIDE; | |||
| virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset = false) SMTG_OVERRIDE; | |||
| virtual bool getInputProperties (VstInt32 index, VstPinProperties* properties) SMTG_OVERRIDE; | |||
| virtual bool getOutputProperties (VstInt32 index, VstPinProperties* properties) SMTG_OVERRIDE; | |||
| virtual bool setSpeakerArrangement (VstSpeakerArrangement* pluginInput, | |||
| VstSpeakerArrangement* pluginOutput) SMTG_OVERRIDE; | |||
| virtual bool getSpeakerArrangement (VstSpeakerArrangement** pluginInput, | |||
| VstSpeakerArrangement** pluginOutput) SMTG_OVERRIDE; | |||
| virtual bool setBypass (bool onOff) SMTG_OVERRIDE; | |||
| virtual bool setProcessPrecision (VstInt32 precision) SMTG_OVERRIDE; | |||
| virtual VstInt32 getNumMidiInputChannels () SMTG_OVERRIDE; | |||
| virtual VstInt32 getNumMidiOutputChannels () SMTG_OVERRIDE; | |||
| virtual VstInt32 getGetTailSize () SMTG_OVERRIDE; | |||
| virtual bool getEffectName (char* name) SMTG_OVERRIDE; | |||
| virtual bool getVendorString (char* text) SMTG_OVERRIDE; | |||
| virtual VstInt32 getVendorVersion () SMTG_OVERRIDE; | |||
| virtual VstIntPtr vendorSpecific (VstInt32 lArg, VstIntPtr lArg2, void* ptrArg, | |||
| float floatArg) SMTG_OVERRIDE; | |||
| virtual VstPlugCategory getPlugCategory () SMTG_OVERRIDE; | |||
| virtual VstInt32 canDo (char* text) SMTG_OVERRIDE; | |||
| virtual VstInt32 getMidiProgramName (VstInt32 channel, | |||
| MidiProgramName* midiProgramName) SMTG_OVERRIDE; | |||
| virtual VstInt32 getCurrentMidiProgram (VstInt32 channel, | |||
| MidiProgramName* currentProgram) SMTG_OVERRIDE; | |||
| virtual VstInt32 getMidiProgramCategory (VstInt32 channel, | |||
| MidiProgramCategory* category) SMTG_OVERRIDE; | |||
| virtual bool hasMidiProgramsChanged (VstInt32 channel) SMTG_OVERRIDE; | |||
| virtual bool getMidiKeyName (VstInt32 channel, MidiKeyName* keyName) SMTG_OVERRIDE; | |||
| // finally process... | |||
| virtual void processReplacing (float** inputs, float** outputs, | |||
| VstInt32 sampleFrames) SMTG_OVERRIDE; | |||
| virtual void processDoubleReplacing (double** inputs, double** outputs, | |||
| VstInt32 sampleFrames) SMTG_OVERRIDE; | |||
| virtual VstInt32 processEvents (VstEvents* events) SMTG_OVERRIDE; | |||
| // VST 3 Interfaces ------------------------------------------------------ | |||
| // FUnknown | |||
| virtual tresult PLUGIN_API queryInterface (const char* iid, void** obj) SMTG_OVERRIDE; | |||
| virtual uint32 PLUGIN_API addRef () SMTG_OVERRIDE { return 1; } | |||
| virtual uint32 PLUGIN_API release () SMTG_OVERRIDE { return 1; } | |||
| // IHostApplication | |||
| virtual tresult PLUGIN_API getName (String128 name) SMTG_OVERRIDE; | |||
| virtual tresult PLUGIN_API createInstance (TUID cid, TUID iid, void** obj) SMTG_OVERRIDE; | |||
| // IComponentHandler | |||
| virtual tresult PLUGIN_API beginEdit (ParamID tag) SMTG_OVERRIDE; | |||
| virtual tresult PLUGIN_API performEdit (ParamID tag, ParamValue valueNormalized) SMTG_OVERRIDE; | |||
| virtual tresult PLUGIN_API endEdit (ParamID tag) SMTG_OVERRIDE; | |||
| virtual tresult PLUGIN_API restartComponent (int32 flags) SMTG_OVERRIDE; | |||
| // IUnitHandler | |||
| virtual tresult PLUGIN_API notifyUnitSelection (UnitID unitId) SMTG_OVERRIDE; | |||
| virtual tresult PLUGIN_API notifyProgramListChange (ProgramListID listId, | |||
| int32 programIndex) SMTG_OVERRIDE; | |||
| void setVendorName (char* name); | |||
| void setEffectName (char* name); | |||
| void setEffectVersion (char* version); | |||
| void setSubCategories (char* string); | |||
| // ITimer | |||
| virtual void onTimer (Timer* timer) SMTG_OVERRIDE; | |||
| //------------------------------------------------------------------------------------------------------- | |||
| protected: | |||
| void setupBuses (); | |||
| void setupParameters (); | |||
| void initMidiCtrlerAssignment (); | |||
| void getUnitPath (UnitID unitID, String& path); | |||
| int32 countMainBusChannels (BusDirection dir, uint64& mainBusBitset); | |||
| template <class T> | |||
| void setProcessingBuffers (T** inputs, T** outputs); | |||
| void setupProcessTimeInfo (); | |||
| void doProcess (VstInt32 sampleFrames); | |||
| void setEventPPQPositions (); | |||
| void processOutputEvents (); | |||
| void processMidiEvent (VstMidiEvent* midiEvent, int32 bus); | |||
| /** Returns the last param change from guiTransfer queue. */ | |||
| bool getLastParamChange (ParamID id, ParamValue& value); | |||
| bool setupProcessing (int32 processModeOverwrite = -1); | |||
| void addParameterChange (ParamID id, ParamValue value, int32 sampleOffset); | |||
| bool getProgramListAndUnit (int32 midiChannel, UnitID& unitId, ProgramListID& programListId); | |||
| bool getProgramListInfoByProgramListID (ProgramListID programListId, ProgramListInfo& info); | |||
| int32 lookupProgramCategory (int32 midiChannel, String128 instrumentAttribute); | |||
| bool setupMidiProgram (int32 midiChannel, ProgramListID programListId, | |||
| MidiProgramName& midiProgramName); | |||
| bool getPinProperties (BusDirection dir, VstInt32 pinIndex, VstPinProperties* properties); | |||
| bool pinIndexToBusChannel (BusDirection dir, VstInt32 pinIndex, int32& busIndex, | |||
| int32& busChannel); | |||
| static VstInt32 vst3ToVst2SpeakerArr (SpeakerArrangement vst3Arr); | |||
| static SpeakerArrangement vst2ToVst3SpeakerArr (VstInt32 vst2Arr); | |||
| static VstInt32 vst3ToVst2Speaker (Speaker vst3Speaker); | |||
| static void setupVst2Arrangement (VstSpeakerArrangement*& vst2arr, | |||
| Vst::SpeakerArrangement vst3Arrangement); | |||
| struct ProgramCategory | |||
| { | |||
| MidiProgramCategory vst2Category; | |||
| String128 vst3InstrumentAttribute; | |||
| }; | |||
| std::vector<std::vector<ProgramCategory>> mProgramCategories; | |||
| void setupProgramCategories (); | |||
| static uint32 makeCategoriesRecursive (std::vector<ProgramCategory>& channelCategories, | |||
| String128 vst3Category); | |||
| static const int32 kMaxProgramChangeParameters = 16; | |||
| ParamID mProgramChangeParameterIDs[kMaxProgramChangeParameters]; // for each midi channel | |||
| int32 mProgramChangeParameterIdxs[kMaxProgramChangeParameters]; // for each midi channel | |||
| VstSpeakerArrangement* mVst2InputArrangement; | |||
| VstSpeakerArrangement* mVst2OutputArrangement; | |||
| FUID mVst3EffectClassID; | |||
| // vst3 data | |||
| IAudioProcessor* mProcessor; | |||
| IComponent* mComponent; | |||
| IEditController* mController; | |||
| IUnitInfo* mUnitInfo; | |||
| IMidiMapping* mMidiMapping; | |||
| bool componentInitialized; | |||
| bool controllerInitialized; | |||
| bool componentsConnected; | |||
| bool processing; | |||
| bool hasEventInputBuses; | |||
| bool hasEventOutputBuses; | |||
| int32 mVst3SampleSize; | |||
| int32 mVst3processMode; | |||
| char mName[PClassInfo::kNameSize]; | |||
| char mVendor[PFactoryInfo::kNameSize]; | |||
| char mSubCategories[PClassInfo2::kSubCategoriesSize]; | |||
| int32 mVersion; | |||
| struct ParamMapEntry | |||
| { | |||
| ParamID vst3ID; | |||
| int32 vst3Index; | |||
| }; | |||
| std::vector<ParamMapEntry> mParameterMap; | |||
| std::map<ParamID, int32> mParamIndexMap; | |||
| ParamID mBypassParameterID; | |||
| ParamID mProgramParameterID; | |||
| int32 mProgramParameterIdx; | |||
| HostProcessData mProcessData; | |||
| ProcessContext mProcessContext; | |||
| ParameterChanges mInputChanges; | |||
| ParameterChanges mOutputChanges; | |||
| EventList* mInputEvents; | |||
| EventList* mOutputEvents; | |||
| Vst2MidiEventQueue* mVst2OutputEvents; | |||
| uint64 mMainAudioInputBuses; | |||
| uint64 mMainAudioOutputBuses; | |||
| ParameterChangeTransfer mInputTransfer; | |||
| ParameterChangeTransfer mOutputTransfer; | |||
| ParameterChangeTransfer mGuiTransfer; | |||
| MemoryStream mChunk; | |||
| Timer* mTimer; | |||
| IPluginFactory* mFactory; | |||
| enum | |||
| { | |||
| kMaxMidiMappingBusses = 4 | |||
| }; | |||
| int32* mMidiCCMapping[kMaxMidiMappingBusses][16]; | |||
| }; | |||
| //------------------------------------------------------------------------ | |||
| } // namespace Vst | |||
| } // namespace Steinberg | |||
| /** Must be implemented externally. */ | |||
| extern ::AudioEffect* createEffectInstance (audioMasterCallback audioMaster); | |||
| /// \endcond | |||
| @@ -1,47 +0,0 @@ | |||
| //------------------------------------------------------------------------ | |||
| // Project : VST SDK | |||
| // | |||
| // Category : Helpers | |||
| // Filename : public.sdk/source/vst/vst2wrapper/vst2wrapper.sdk.cpp | |||
| // Created by : Steinberg, 01/2009 | |||
| // Description : VST 3 -> VST 2 Wrapper | |||
| // | |||
| //----------------------------------------------------------------------------- | |||
| // LICENSE | |||
| // (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved | |||
| //----------------------------------------------------------------------------- | |||
| // Redistribution and use in source and binary forms, with or without modification, | |||
| // are permitted provided that the following conditions are met: | |||
| // | |||
| // * Redistributions of source code must retain the above copyright notice, | |||
| // this list of conditions and the following disclaimer. | |||
| // * Redistributions in binary form must reproduce the above copyright notice, | |||
| // this list of conditions and the following disclaimer in the documentation | |||
| // and/or other materials provided with the distribution. | |||
| // * Neither the name of the Steinberg Media Technologies nor the names of its | |||
| // contributors may be used to endorse or promote products derived from this | |||
| // software without specific prior written permission. | |||
| // | |||
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |||
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |||
| // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | |||
| // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |||
| // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
| // OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| //----------------------------------------------------------------------------- | |||
| #include "public.sdk/source/vst/vst2wrapper/vst2wrapper.cpp" | |||
| #include "public.sdk/source/vst/hosting/processdata.cpp" | |||
| #include "public.sdk/source/vst/hosting/eventlist.cpp" | |||
| #include "public.sdk/source/vst/hosting/hostclasses.cpp" | |||
| #include "public.sdk/source/vst/hosting/parameterchanges.cpp" | |||
| #include "public.sdk/source/common/memorystream.cpp" | |||
| #include "public.sdk/source/vst2.x/audioeffectx.cpp" | |||
| #include "public.sdk/source/vst2.x/audioeffect.cpp" | |||