Initial release

This commit is contained in:
civ
2026-08-16 18:24:52 +07:00
commit 876886a39a
13244 changed files with 2353959 additions and 0 deletions
@@ -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;
}