Browse Source

Remove unused vst3sdk code

Signed-off-by: falkTX <falktx@gmail.com>
tags/v2.1-alpha1-winvst
parent
commit
7f026adfae
27 changed files with 0 additions and 8079 deletions
  1. +0
    -32
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/CMakeLists.txt
  2. +0
    -92
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/NSDataIBStream.h
  3. +0
    -206
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/NSDataIBStream.mm
  4. +0
    -41
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/CMakeLists.txt
  5. +0
    -117
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/Info.plist
  6. +0
    -61
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/audiounitconfig.h
  7. +0
    -51
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/config/again.xcconfig
  8. +0
    -38
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/config/again_debug.xcconfig
  9. +0
    -38
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/config/again_release.xcconfig
  10. +0
    -52
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/doc.cpp
  11. +0
    -83
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/aucarbonview.h
  12. +0
    -167
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/aucarbonview.mm
  13. +0
    -68
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/aucocoaview.h
  14. +0
    -232
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/aucocoaview.mm
  15. +0
    -85
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/auresource.r
  16. +0
    -84
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/ausdk.mm
  17. +0
    -340
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/auwrapper.h
  18. +0
    -2582
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/auwrapper.mm
  19. +0
    -38
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/auwrapper_prefix.pch
  20. +0
    -38
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/config/ausdkpath.xcconfig
  21. +0
    -44
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/config/auwrapper.xcconfig
  22. +0
    -40
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/config/auwrapper_debug.xcconfig
  23. +0
    -40
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/config/auwrapper_release.xcconfig
  24. +0
    -23
      source/includes/vst3sdk/public.sdk/source/vst/auwrapper/generateCocoaClassNamePrefix.rb
  25. +0
    -3105
      source/includes/vst3sdk/public.sdk/source/vst/vst2wrapper/vst2wrapper.cpp
  26. +0
    -335
      source/includes/vst3sdk/public.sdk/source/vst/vst2wrapper/vst2wrapper.h
  27. +0
    -47
      source/includes/vst3sdk/public.sdk/source/vst/vst2wrapper/vst2wrapper.sdk.cpp

+ 0
- 32
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/CMakeLists.txt View File

@@ -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()

+ 0
- 92
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/NSDataIBStream.h View File

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

+ 0
- 206
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/NSDataIBStream.mm View File

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

+ 0
- 41
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/CMakeLists.txt View File

@@ -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()

+ 0
- 117
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/Info.plist View File

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

+ 0
- 61
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/audiounitconfig.h View File

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

+ 0
- 51
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/config/again.xcconfig View File

@@ -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/

+ 0
- 38
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/config/again_debug.xcconfig View File

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

+ 0
- 38
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/config/again_release.xcconfig View File

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

+ 0
- 52
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/again/doc.cpp View File

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

*/

+ 0
- 83
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/aucarbonview.h View File

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

+ 0
- 167
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/aucarbonview.mm View File

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

+ 0
- 68
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/aucocoaview.h View File

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

+ 0
- 232
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/aucocoaview.mm View File

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

+ 0
- 85
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/auresource.r View File

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

+ 0
- 84
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/ausdk.mm View File

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

+ 0
- 340
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/auwrapper.h View File

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

+ 0
- 2582
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/auwrapper.mm
File diff suppressed because it is too large
View File


+ 0
- 38
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/auwrapper_prefix.pch View File

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

+ 0
- 38
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/config/ausdkpath.xcconfig View File

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

+ 0
- 44
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/config/auwrapper.xcconfig View File

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

+ 0
- 40
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/config/auwrapper_debug.xcconfig View File

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

+ 0
- 40
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/config/auwrapper_release.xcconfig View File

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

+ 0
- 23
source/includes/vst3sdk/public.sdk/source/vst/auwrapper/generateCocoaClassNamePrefix.rb View File

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


+ 0
- 3105
source/includes/vst3sdk/public.sdk/source/vst/vst2wrapper/vst2wrapper.cpp
File diff suppressed because it is too large
View File


+ 0
- 335
source/includes/vst3sdk/public.sdk/source/vst/vst2wrapper/vst2wrapper.h View File

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

+ 0
- 47
source/includes/vst3sdk/public.sdk/source/vst/vst2wrapper/vst2wrapper.sdk.cpp View File

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

Loading…
Cancel
Save