Initial release
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
|
||||
cmake_minimum_required(VERSION 3.25.0)
|
||||
|
||||
project(smtg-vst3-again
|
||||
VERSION ${vstsdk_VERSION}.0
|
||||
DESCRIPTION "Steinberg VST 3 AGain AAX example"
|
||||
)
|
||||
|
||||
if(NOT SMTG_AAX_SDK_PATH OR NOT SMTG_ENABLE_VSTGUI_SUPPORT)
|
||||
return()
|
||||
endif()
|
||||
|
||||
include(SMTG_AddAAXLibrary)
|
||||
|
||||
set(again_sources
|
||||
source/againaax.cpp
|
||||
../again/source/again.cpp
|
||||
../again/source/again.h
|
||||
../again/source/againcids.h
|
||||
../again/source/againcontroller.cpp
|
||||
../again/source/againcontroller.h
|
||||
../again/source/againentry.cpp
|
||||
../again/source/againparamids.h
|
||||
../again/source/againprocess.h
|
||||
../again/source/againsidechain.cpp
|
||||
../again/source/againsidechain.h
|
||||
../again/source/againuimessagecontroller.h
|
||||
../again/source/version.h
|
||||
../again/resource/again.uidesc
|
||||
)
|
||||
|
||||
set(target again-aax)
|
||||
smtg_add_aaxplugin(${target} ${again_sources})
|
||||
smtg_target_configure_version_file(${target})
|
||||
set_target_properties(${target}
|
||||
PROPERTIES
|
||||
${SDK_IDE_PLUGIN_EXAMPLES_FOLDER}
|
||||
)
|
||||
target_include_directories(${target}
|
||||
PUBLIC
|
||||
${SDK_ROOT}/public.sdk/samples/vst/again/source
|
||||
)
|
||||
|
||||
target_compile_features(${target}
|
||||
PUBLIC
|
||||
cxx_std_17
|
||||
)
|
||||
|
||||
target_link_libraries(${target}
|
||||
PRIVATE
|
||||
sdk
|
||||
vstgui_support
|
||||
aax_wrapper
|
||||
)
|
||||
smtg_target_add_plugin_resources(${target}
|
||||
RESOURCES
|
||||
../again/resource/again.uidesc
|
||||
../again/resource/background.png
|
||||
../again/resource/slider_background.png
|
||||
../again/resource/slider_handle.png
|
||||
../again/resource/slider_handle_2.0x.png
|
||||
../again/resource/vu_on.png
|
||||
../again/resource/vu_off.png
|
||||
)
|
||||
|
||||
if(SMTG_MAC)
|
||||
smtg_target_set_bundle(${target}
|
||||
BUNDLE_IDENTIFIER "com.steinberg.vst3.${target}"
|
||||
INFOPLIST "${CMAKE_CURRENT_LIST_DIR}/../again/mac/Info.plist" PREPROCESS
|
||||
)
|
||||
elseif(SMTG_WIN)
|
||||
target_sources(${target}
|
||||
PRIVATE
|
||||
../again/resource/again.rc
|
||||
)
|
||||
# remove warnings
|
||||
if(NOT MINGW)
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||
endif(NOT MINGW)
|
||||
endif(SMTG_MAC)
|
||||
@@ -0,0 +1,19 @@
|
||||
# AGain AAX
|
||||
|
||||
## Introduction
|
||||
|
||||
AGain AAX is the AAX version of the AGain plug-in by just adding a file (public.sdk/samples/vst/again_aax/source/againaax.cpp). It defines a mono and a stereo variant with a MIDI input.
|
||||
|
||||
|
||||
> See also: [VST 3 - AAX Wrapper]((https://steinbergmedia.github.io/vst3_dev_portal/pages/What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.html) and [Online Documentation](https://steinbergmedia.github.io/vst3_dev_portal/pages/What+is+the+VST+3+SDK/Plug-in+Examples.html#again).
|
||||
|
||||
## Getting Started
|
||||
|
||||
This plug-in is part of the VST 3 SDK package. It is created with the VST 3 SDK root project.
|
||||
|
||||
> See the top-level README of the VST 3 SDK: https://github.com/steinbergmedia/vst3sdk.git
|
||||
|
||||
## Getting Help
|
||||
|
||||
* Read through the SDK documentation on the **[VST 3 Developer Portal](https://steinbergmedia.github.io/vst3_dev_portal/pages/index.html)**
|
||||
* Ask some real people in the official **[VST 3 Developer Forum](https://forums.steinberg.net/c/developer/103)**
|
||||
@@ -0,0 +1,117 @@
|
||||
//------------------------------------------------------------------------
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Examples
|
||||
// Filename : public.sdk/samples/vst/again_aax/source/againaax.cpp
|
||||
// Created by : Steinberg, 03/2016
|
||||
// Description : AGain AAX Example for VST SDK 3
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// This file is part of a Steinberg SDK. It is subject to the license terms
|
||||
// in the LICENSE file found in the top-level directory of this distribution
|
||||
// and at www.steinberg.net/sdklicenses.
|
||||
// No part of the SDK, including this file, may be copied, modified, propagated,
|
||||
// or distributed except according to the terms contained in the LICENSE file.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include "public.sdk/source/vst/aaxwrapper/aaxwrapper_description.h"
|
||||
|
||||
#include "againcids.h"
|
||||
#include "againparamids.h"
|
||||
#include "pluginterfaces/base/futils.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
#if 0 // for additional outputs
|
||||
AAX_Aux_Desc effAux_stereo[] =
|
||||
{
|
||||
// name, channel count
|
||||
{ "AGain AUX2", 2 },
|
||||
{ nullptr }
|
||||
};
|
||||
#endif
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
#if 1 // MIDI inputs for instruments or Fx with MIDI input
|
||||
AAX_MIDI_Desc effMIDI[] =
|
||||
{
|
||||
// port name, channel mask
|
||||
{ "AGain", 0xffff },
|
||||
{ nullptr }
|
||||
};
|
||||
#endif
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// Input/Output meters
|
||||
AAX_Meter_Desc effMeters[] =
|
||||
{
|
||||
// not used { "Input", CCONST ('A', 'G', 'I', 'n'), 0 /*AAX_eMeterOrientation_Default*/, 0 /*AAX_eMeterType_Input*/ },
|
||||
{ "Output", kVuPPMId, 0 /*AAX_eMeterOrientation_Default*/, 1 /*AAX_eMeterType_Output*/ },
|
||||
{ nullptr }
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
AAX_Plugin_Desc effPlugins[] = {
|
||||
// effect-ID, name,
|
||||
// Native ID, AudioSuite ID,
|
||||
// InChannels, OutChannels, InSideChain channels,
|
||||
// MIDI, Aux,
|
||||
// Meters
|
||||
// Latency
|
||||
// note: IDs must be unique across plugins
|
||||
|
||||
// Mono variant
|
||||
{"com.steinberg.again.mono",
|
||||
"AGain",
|
||||
CCONST ('A', 'G', 'N', '1'),
|
||||
CCONST ('A', 'G', 'A', '1'),
|
||||
1, /*mInputChannels*/
|
||||
1, /*mOutputChannels*/
|
||||
0, /*mSideChainInputChannels*/
|
||||
effMIDI, /*effMIDI*/
|
||||
nullptr, /*effAux*/
|
||||
effMeters, /*effMeters*/
|
||||
0 /*Latency*/
|
||||
},
|
||||
|
||||
// Stereo variant
|
||||
{"com.steinberg.again.stereo",
|
||||
"AGain",
|
||||
CCONST ('A', 'G', 'N', '2'),
|
||||
CCONST ('A', 'G', 'A', '2'),
|
||||
2, /*mInputChannels*/
|
||||
2, /*mOutputChannels*/
|
||||
0, /*mSideChainInputChannels*/
|
||||
effMIDI, /*effMIDI*/
|
||||
nullptr, /*effAux*/
|
||||
effMeters, /*effMeters*/
|
||||
0 /*Latency*/
|
||||
},
|
||||
|
||||
{nullptr}
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
AAX_Effect_Desc effDesc = {
|
||||
"Steinberg", // manufacturer
|
||||
"AGain", // product
|
||||
CCONST ('S', 'M', 'T', 'G'), // manufacturer ID
|
||||
CCONST ('A', 'G', 'S', 'B'), // product ID
|
||||
AGainVST3Category, // VST category (define againcids.h)
|
||||
{0}, // VST3 class ID (set later)
|
||||
1, // version
|
||||
nullptr, // no pagetable file "again.xml",
|
||||
effPlugins,
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// this drag's in all the craft from the AAX library
|
||||
int* forceLinkAAXWrapper = &AAXWrapper_linkAnchor;
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
AAX_Effect_Desc* AAXWrapper_GetDescription ()
|
||||
{
|
||||
// cannot initialize in global descriptor, and it might be link order dependent
|
||||
memcpy (effDesc.mVST3PluginID, (const char*)Steinberg::Vst::AGainProcessorUID,
|
||||
sizeof (effDesc.mVST3PluginID));
|
||||
return &effDesc;
|
||||
}
|
||||
Reference in New Issue
Block a user