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,98 @@
//-----------------------------------------------------------------------------
// Project : VST SDK
//
// Category : Helpers
// Filename : public.sdk/source/vst/vstcomponent.h
// Created by : Steinberg, 04/2005
// Description : Basic VST Plug-in Implementation
//
//-----------------------------------------------------------------------------
// 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.
//-----------------------------------------------------------------------------
#pragma once
#include "public.sdk/source/vst/vstcomponentbase.h"
#include "public.sdk/source/vst/vstbus.h"
#include "pluginterfaces/vst/ivstcomponent.h"
//------------------------------------------------------------------------
namespace Steinberg {
namespace Vst {
//------------------------------------------------------------------------
/** Default implementation for a VST 3 Component.
\ingroup vstClasses
Can be used as base class for a VST 3 component implementation.
*/
class Component : public ComponentBase, public IComponent
{
public:
//------------------------------------------------------------------------
/** Constructor */
Component ();
//---Internal Methods-------
/** Sets the controller Class ID associated to its component. */
void setControllerClass (const FUID& cid) { controllerClass = cid; }
void setControllerClass (const TUID& cid) { controllerClass = FUID::fromTUID (cid); }
/** Removes all Audio Busses. */
tresult removeAudioBusses ();
/** Removes all Event Busses. */
tresult removeEventBusses ();
/** Renames a specific bus. Do not forget to inform the host about this (see \ref
* IComponentHandler::restartComponent (kIoTitlesChanged)). */
tresult renameBus (MediaType type, BusDirection dir, int32 index, const String128 newName);
//---from IComponent--------
tresult PLUGIN_API getControllerClassId (TUID classID) SMTG_OVERRIDE;
tresult PLUGIN_API setIoMode (IoMode mode) SMTG_OVERRIDE;
int32 PLUGIN_API getBusCount (MediaType type, BusDirection dir) SMTG_OVERRIDE;
tresult PLUGIN_API getBusInfo (MediaType type, BusDirection dir, int32 index, BusInfo& info) SMTG_OVERRIDE;
tresult PLUGIN_API getRoutingInfo (RoutingInfo& inInfo, RoutingInfo& outInfo) SMTG_OVERRIDE;
tresult PLUGIN_API activateBus (MediaType type, BusDirection dir, int32 index, TBool state) SMTG_OVERRIDE;
tresult PLUGIN_API setActive (TBool state) SMTG_OVERRIDE;
tresult PLUGIN_API setState (IBStream* state) SMTG_OVERRIDE;
tresult PLUGIN_API getState (IBStream* state) SMTG_OVERRIDE;
//---from ComponentBase------
tresult PLUGIN_API initialize (FUnknown* context) SMTG_OVERRIDE;
tresult PLUGIN_API terminate () SMTG_OVERRIDE;
//---Interface---------
OBJ_METHODS (Component, ComponentBase)
DEFINE_INTERFACES
DEF_INTERFACE (IComponent)
END_DEFINE_INTERFACES (ComponentBase)
REFCOUNT_METHODS (ComponentBase)
//------------------------------------------------------------------------
protected:
FUID controllerClass;
BusList audioInputs;
BusList audioOutputs;
BusList eventInputs;
BusList eventOutputs;
BusList* getBusList (MediaType type, BusDirection dir);
tresult removeAllBusses ();
};
//------------------------------------------------------------------------
// some Helper functions....
//------------------------------------------------------------------------
/** Gets the channel index of a given speaker in a arrangement, returns kResultFalse if speaker not
* part of the arrangement else returns kResultTrue. */
tresult getSpeakerChannelIndex (SpeakerArrangement arrangement, uint64 speaker, int32& channel);
//------------------------------------------------------------------------
} // namespace Vst
} // namespace Steinberg