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" |