TracktionEngine
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
tracktion::engine::RackInstance Class Reference
Inheritance diagram for tracktion::engine::RackInstance:

Public Types

enum  Channel { left , right }
 
- Public Types inherited from tracktion::engine::Plugin
enum class  Type { allPlugins , folderTrackPlugins , effectPlugins }
 
using Ptr = juce::ReferenceCountedObjectPtr< Plugin >
 
using Array = juce::ReferenceCountedArray< Plugin >
 
- Public Types inherited from tracktion::engine::Selectable
using WeakRef = juce::WeakReference< Selectable >
 

Public Member Functions

 RackInstance (PluginCreationInfo)
 
 ~RackInstance () override
 
juce::String getName () const override
 The name of the type, e.g. More...
 
juce::String getPluginType () override
 
juce::String getTooltip () override
 default returns the name, others can return special stuff if needed More...
 
void initialise (const PluginInitialisationInfo &) override
 Gives the plugin a chance to set itself up before being played. More...
 
void deinitialise () override
 Called after play stops to release resources. More...
 
bool takesAudioInput () override
 
bool takesMidiInput () override
 
bool producesAudioWhenNoAudioInput () override
 
bool isSynth () override
 
bool canBeAddedToRack () override
 
int getNumOutputChannelsGivenInputs (int) override
 This must return the number of output channels that the plugin will produce, given a number of input channels. More...
 
double getLatencySeconds () override
 
bool needsConstantBufferSize () override
 
void prepareForNextBlock (TimePosition) override
 Called between successive rendering blocks. More...
 
void applyToBuffer (const PluginRenderContext &) override
 Process the next block of data. More...
 
void updateAutomatableParamPosition (TimePosition) override
 Updates all the auto params to their positions at this time. More...
 
juce::String getSelectableDescription () override
 Subclasses must return a description of what they are. More...
 
void replaceRackWithPluginSequence (SelectionManager *)
 
juce::StringArray getInputChoices (bool includeNumberPrefix)
 
juce::StringArray getOutputChoices (bool includeNumberPrefix)
 
juce::String getNoPinName ()
 
void setInputName (Channel, const juce::String &inputName)
 
void setOutputName (Channel, const juce::String &outputName)
 
void setInputLevel (Channel, float)
 
void setOutputLevel (Channel, float)
 
juce::String getInputName (Channel)
 
juce::String getOutputName (Channel)
 
- Public Member Functions inherited from tracktion::engine::Plugin
 Plugin (PluginCreationInfo)
 
 ~Plugin () override
 
void selectableAboutToBeDeleted () override
 Called just before the selectable is about to be deleted so any subclasses should still be valid at this point. More...
 
void playStartedOrStopped ()
 called by the system to let the plugin manage its automation stuff More...
 
virtual void initialiseFully ()
 Gives the plugin a chance to do extra initialisation when it's been added to an edit. More...
 
virtual void flushPluginStateToValueTree () override
 
virtual juce::String getVendor ()
 
virtual juce::String getShortName (int)
 
virtual juce::String getIdentifierString ()
 A unique string to idenitify plugin independant of install location. More...
 
virtual void setEnabled (bool)
 Enable/disable the plugin. More...
 
bool isEnabled () const noexcept
 
void setFrozen (bool shouldBeFrozen)
 This is a bit different to being enabled as when frozen a plugin can't be interacted with. More...
 
bool isFrozen () const noexcept
 
void setProcessingEnabled (bool p)
 Enable/Disable processing. More...
 
bool isProcessingEnabled () const noexcept
 
virtual void initialiseWithoutStopping (const PluginInitialisationInfo &)
 Tells the plugin that the audio graph has changed but the plugin isn't being re-initialised - i.e. More...
 
virtual void reset ()
 Should reset synth voices, tails, clear delay buffers, etc. More...
 
virtual void trackPropertiesChanged ()
 Track name or colour has changed. More...
 
void applyToBufferWithAutomation (const PluginRenderContext &)
 
double getCpuUsage () const noexcept
 
virtual bool noTail ()
 
virtual void getChannelNames (juce::StringArray *ins, juce::StringArray *outs)
 
virtual double getTailLength () const
 
virtual bool canSidechain ()
 
juce::StringArray getInputChannelNames ()
 
juce::StringArray getSidechainSourceNames (bool allowNone)
 
void setSidechainSourceByName (const juce::String &name)
 
juce::String getSidechainSourceName ()
 
void guessSidechainRouting ()
 
int getNumWires () const
 
WiregetWire (int index) const
 
void makeConnection (int srcChannel, int dstChannel, juce::UndoManager *)
 
void breakConnection (int srcChannel, int dstChannel)
 
virtual bool hasNameForMidiNoteNumber (int note, int midiChannel, juce::String &name)
 If it's a synth that names its notes, this can return the name it uses for this note 0-127. More...
 
virtual bool hasNameForMidiProgram (int programNum, int bank, juce::String &name)
 Returns the name for a midi program, if there is one. More...
 
virtual bool hasNameForMidiBank (int bank, juce::String &name)
 
virtual bool canBeAddedToClip ()
 
virtual bool canBeAddedToFolderTrack ()
 
virtual bool canBeAddedToMaster ()
 
virtual bool canBeDisabled ()
 
virtual bool canBeMoved ()
 
virtual bool isMissing ()
 for things like VSTs where the DLL is missing. More...
 
virtual bool isDisabled ()
 Plugins can be disabled to avoid them crashing Edits. More...
 
bool isInRack () const
 
juce::ReferenceCountedObjectPtr< RackTypegetOwnerRackType () const
 
bool isClipEffectPlugin () const
 
virtual juce::AudioProcessor * getWrappedAudioProcessor () const
 
AutomatableParameter::Ptr getQuickControlParameter () const
 
void setQuickControlParameter (AutomatableParameter *)
 
virtual void deleteFromParent ()
 Attempts to delete this plugin, whether it's a master plugin, track plugin, etc. More...
 
void removeFromParent ()
 Detaches the plugin from any parent it might be in. More...
 
TrackgetOwnerTrack () const
 Returns the track if it's a track or clip plugin. More...
 
ClipgetOwnerClip () const
 Returns the clip if that's what it's in. More...
 
PluginListgetOwnerList () const
 
Ptr findPluginThatFeedsIntoThis () const
 
Ptr findPluginThatThisFeedsInto () const
 
void changed () override
 method from Selectable, that's been overridden here to also tell the edit that it's changed. More...
 
juce::Array< ReferencedItemgetReferencedItems () override
 
void reassignReferencedItem (const ReferencedItem &, ProjectItemID newID, double newStartTime) override
 
virtual void sourceMediaChanged ()
 Called when ProjectItem sources are re-assigned so you can reload from the new source. More...
 
bool setPluginToMirror (const Plugin::Ptr &)
 
virtual void updateFromMirroredPluginIfNeeded (Plugin &)
 
Plugin::Ptr getMirroredPlugin () const
 
bool baseClassNeedsInitialising () const noexcept
 
void baseClassInitialise (const PluginInitialisationInfo &)
 
void baseClassDeinitialise ()
 
void setSidechainSourceID (EditItemID newID)
 
EditItemID getSidechainSourceID () const
 
void showWindowExplicitly ()
 
void hideWindowForShutdown ()
 
juce::UndoManager * getUndoManager () const noexcept
 
- Public Member Functions inherited from tracktion::engine::Selectable
 Selectable ()
 
virtual ~Selectable ()
 
virtual void selectionStatusChanged (bool isNowSelected)
 Can be overridden to tell this object that it has just been selected or deselected. More...
 
void addSelectableListener (SelectableListener *)
 
void removeSelectableListener (SelectableListener *)
 
void cancelAnyPendingUpdates ()
 If changed() has been called, this will cancel any pending async change notificaions. More...
 
void deselect ()
 
void propertiesChanged ()
 
void notifyListenersOfDeletion ()
 
WeakRef getWeakRef ()
 
- Public Member Functions inherited from tracktion::engine::Exportable
virtual ~Exportable ()=default
 
- Public Member Functions inherited from tracktion::engine::AutomatableEditItem
 AutomatableEditItem (Edit &, const juce::ValueTree &)
 
virtual ~AutomatableEditItem ()
 
virtual void restorePluginStateFromValueTree (const juce::ValueTree &)
 
juce::Array< AutomatableParameter * > getAutomatableParameters () const
 
int getNumAutomatableParameters () const
 
AutomatableParameter::Ptr getAutomatableParameter (int index) const
 
AutomatableParameter::Ptr getAutomatableParameterByID (const juce::String &paramID) const
 
void deleteParameter (AutomatableParameter *)
 
void deleteAutomatableParameters ()
 
int indexOfAutomatableParameter (const AutomatableParameter::Ptr &) const
 
AutomatableParameterTreegetParameterTree () const
 
juce::ReferenceCountedArray< AutomatableParametergetFlattenedParameterTree () const
 
void addParameterListChangeListener (ParameterListChangeListener *)
 
void removeParameterListChangeListener (ParameterListChangeListener *)
 
bool isAutomationNeeded () const noexcept
 
void setAutomatableParamPosition (TimePosition)
 
bool isBeingActivelyPlayed () const
 
void updateParameterStreams (TimePosition)
 Updates all the parameter streams to their positions at this time. More...
 
void updateActiveParameters ()
 Iterates all the parameters to find out which ones need to be automated. More...
 
void resetRecordingStatus ()
 Marks the end of an automation recording stream. More...
 
- Public Member Functions inherited from tracktion::engine::EditItem
 EditItem (EditItemID, Edit &)
 
virtual ~EditItem ()=default
 
- Public Member Functions inherited from tracktion::engine::MacroParameterElement
 MacroParameterElement (Edit &, const juce::ValueTree &)
 Constructor. More...
 
virtual ~MacroParameterElement ()=default
 Destructor. More...
 
int getNumMacroParameters () const
 Returns the number of macro parameters for this object. More...
 

Static Public Member Functions

static juce::ValueTree create (RackType &)
 
- Static Public Member Functions inherited from tracktion::engine::Plugin
static bool areSelectedPluginsRackable (SelectionManager &)
 
static RackInstancewrapSelectedPluginsInRack (SelectionManager &)
 
static void sortPlugins (Plugin::Array &)
 
static void sortPlugins (std::vector< Plugin * > &)
 
- Static Public Member Functions inherited from tracktion::engine::Selectable
static void initialise ()
 
static bool isSelectableValid (const Selectable *) noexcept
 checks whether this object has been deleted. More...
 
- Static Public Member Functions inherited from tracktion::engine::Exportable
static juce::Array< Exportable * > addAllExportables (Edit &)
 Returns all the Exportables contained in an Edit. More...
 

Public Attributes

const EditItemID rackTypeID
 
const RackType::Ptr type
 
bool linkInputs = true
 
bool linkOutputs = true
 
juce::CachedValue< int > leftInputGoesTo
 
juce::CachedValue< int > rightInputGoesTo
 
juce::CachedValue< int > leftOutputComesFrom
 
juce::CachedValue< int > rightOutputComesFrom
 
juce::CachedValue< float > dryValue
 
juce::CachedValue< float > wetValue
 
juce::CachedValue< float > leftInValue
 
juce::CachedValue< float > rightInValue
 
juce::CachedValue< float > leftOutValue
 
juce::CachedValue< float > rightOutValue
 
AutomatableParameter::Ptr dryGain
 
AutomatableParameter::Ptr wetGain
 
AutomatableParameter::Ptr leftInDb
 
AutomatableParameter::Ptr rightInDb
 
AutomatableParameter::Ptr leftOutDb
 
AutomatableParameter::Ptr rightOutDb
 
- Public Attributes inherited from tracktion::engine::Plugin
std::unique_ptr< WindowStatewindowState
 
Engineengine
 
juce::ValueTree state
 
- Public Attributes inherited from tracktion::engine::Selectable
WeakRef::Master masterReference
 
- Public Attributes inherited from tracktion::engine::AutomatableEditItem
juce::ValueTree elementState
 
juce::CachedValue< bool > remapOnTempoChange
 
- Public Attributes inherited from tracktion::engine::EditItem
Editedit
 
const EditItemID itemID
 Every EditItem has an ID which is unique within the edit. More...
 
- Public Attributes inherited from tracktion::engine::MacroParameterElement
MacroParameterList macroParameterList
 

Static Public Attributes

static const char * xmlTypeName
 
static constexpr double rackMinDb = -100.0
 
static constexpr double rackMaxDb = 12.0
 

Additional Inherited Members

- Protected Member Functions inherited from tracktion::engine::Plugin
void valueTreePropertyChanged (juce::ValueTree &, const juce::Identifier &) override
 
void valueTreeChanged () override
 
void valueTreeChildAdded (juce::ValueTree &, juce::ValueTree &) override
 
void valueTreeChildRemoved (juce::ValueTree &, juce::ValueTree &, int) override
 
void valueTreeParentChanged (juce::ValueTree &) override
 
virtual void processingChanged ()
 
AutomatableParameteraddParam (const juce::String &paramID, const juce::String &name, juce::NormalisableRange< float > valueRange)
 
AutomatableParameteraddParam (const juce::String &paramID, const juce::String &name, juce::NormalisableRange< float > valueRange, std::function< juce::String(float)> valueToStringFunction, std::function< float(const juce::String &)> stringToValueFunction)
 
- Protected Member Functions inherited from tracktion::engine::AutomatableEditItem
virtual void buildParameterTree () const
 
void updateLastPlaybackTime ()
 
void clearParameterList ()
 
void addAutomatableParameter (const AutomatableParameter::Ptr &)
 
void rebuildParameterTree ()
 
void saveChangedParametersToState ()
 Saves the explicit value of any parameters that have deviated to the state. More...
 
void restoreChangedParametersFromState ()
 Restores the value of any explicitly set parameters. More...
 
- Protected Member Functions inherited from tracktion::engine::ValueTreeAllEventListener
void valueTreePropertyChanged (juce::ValueTree &, const juce::Identifier &) override
 
void valueTreeChildAdded (juce::ValueTree &, juce::ValueTree &) override
 
void valueTreeChildRemoved (juce::ValueTree &, juce::ValueTree &, int) override
 
void valueTreeChildOrderChanged (juce::ValueTree &, int, int) override
 
void valueTreeParentChanged (juce::ValueTree &) override
 
void valueTreeRedirected (juce::ValueTree &) override
 
- Static Protected Member Functions inherited from tracktion::engine::Plugin
static void getLeftRightChannelNames (juce::StringArray *ins, juce::StringArray *outs)
 
static void getLeftRightChannelNames (juce::StringArray *chans)
 
- Protected Attributes inherited from tracktion::engine::Plugin
juce::CachedValue< AtomicWrapper< bool > > enabled
 
juce::CachedValue< bool > frozen
 
juce::CachedValue< bool > processing
 
juce::CachedValue< juce::String > quickParamName
 
juce::CachedValue< EditItemIDmasterPluginID
 
juce::CachedValue< EditItemIDsidechainSourceID
 
double sampleRate = 44100.0
 
int blockSizeSamples = 512
 

Member Enumeration Documentation

◆ Channel

Enumerator
left 
right 

Constructor & Destructor Documentation

◆ RackInstance()

tracktion::engine::RackInstance::RackInstance ( PluginCreationInfo  )

◆ ~RackInstance()

tracktion::engine::RackInstance::~RackInstance ( )
override

Member Function Documentation

◆ create()

static juce::ValueTree tracktion::engine::RackInstance::create ( RackType )
static

◆ getName()

juce::String tracktion::engine::RackInstance::getName ( ) const
overridevirtual

The name of the type, e.g.

"Compressor"

Implements tracktion::engine::Plugin.

◆ getPluginType()

juce::String tracktion::engine::RackInstance::getPluginType ( )
overridevirtual

Implements tracktion::engine::Plugin.

References xmlTypeName.

◆ getTooltip()

juce::String tracktion::engine::RackInstance::getTooltip ( )
overridevirtual

default returns the name, others can return special stuff if needed

Reimplemented from tracktion::engine::Plugin.

◆ initialise()

void tracktion::engine::RackInstance::initialise ( const PluginInitialisationInfo )
overridevirtual

Gives the plugin a chance to set itself up before being played.

This won't be called concurrently with the process thread.

The sample rate and the average block size - although the blocks won't always be the same, and may be bigger.

Don't call this directly or the initialise count will become out of sync.

See also
baseClassInitialise [[ message_thread ]]

Implements tracktion::engine::Plugin.

◆ deinitialise()

void tracktion::engine::RackInstance::deinitialise ( )
overridevirtual

Called after play stops to release resources.

Don't call this directly or the initialise count will become out of sync.

See also
baseClassDeinitialise

Implements tracktion::engine::Plugin.

◆ takesAudioInput()

bool tracktion::engine::RackInstance::takesAudioInput ( )
overridevirtual

Reimplemented from tracktion::engine::Plugin.

◆ takesMidiInput()

bool tracktion::engine::RackInstance::takesMidiInput ( )
overridevirtual

Reimplemented from tracktion::engine::Plugin.

◆ producesAudioWhenNoAudioInput()

bool tracktion::engine::RackInstance::producesAudioWhenNoAudioInput ( )
overridevirtual

Reimplemented from tracktion::engine::Plugin.

◆ isSynth()

bool tracktion::engine::RackInstance::isSynth ( )
overridevirtual

Reimplemented from tracktion::engine::Plugin.

◆ canBeAddedToRack()

bool tracktion::engine::RackInstance::canBeAddedToRack ( )
overridevirtual

Reimplemented from tracktion::engine::Plugin.

◆ getNumOutputChannelsGivenInputs()

int tracktion::engine::RackInstance::getNumOutputChannelsGivenInputs ( int  numInputChannels)
overridevirtual

This must return the number of output channels that the plugin will produce, given a number of input channels.

E.g. some might be able to do mono, so will return 1 if the input is 1, 2 if it is 2, etc.

The default impl just returns the number of items that getChannelNames() returns.

Reimplemented from tracktion::engine::Plugin.

◆ getLatencySeconds()

double tracktion::engine::RackInstance::getLatencySeconds ( )
overridevirtual

Reimplemented from tracktion::engine::Plugin.

◆ needsConstantBufferSize()

bool tracktion::engine::RackInstance::needsConstantBufferSize ( )
overridevirtual

◆ prepareForNextBlock()

void tracktion::engine::RackInstance::prepareForNextBlock ( TimePosition  )
overridevirtual

Called between successive rendering blocks.

Reimplemented from tracktion::engine::Plugin.

◆ applyToBuffer()

void tracktion::engine::RackInstance::applyToBuffer ( const PluginRenderContext )
overridevirtual

Process the next block of data.

The incoming buffer will have an unknown number of channels, and the plugin has to deal with them however it wants to.

The buffer should be resized to the number of output channels that the plugin wants to return (which should be the same or less than the number of output channel names it returns from getChannelNames() - never more than this).

Implements tracktion::engine::Plugin.

◆ updateAutomatableParamPosition()

void tracktion::engine::RackInstance::updateAutomatableParamPosition ( TimePosition  )
overridevirtual

Updates all the auto params to their positions at this time.

Reimplemented from tracktion::engine::AutomatableEditItem.

◆ getSelectableDescription()

juce::String tracktion::engine::RackInstance::getSelectableDescription ( )
overridevirtual

Subclasses must return a description of what they are.

Implements tracktion::engine::Selectable.

◆ replaceRackWithPluginSequence()

void tracktion::engine::RackInstance::replaceRackWithPluginSequence ( SelectionManager )

◆ getInputChoices()

juce::StringArray tracktion::engine::RackInstance::getInputChoices ( bool  includeNumberPrefix)

◆ getOutputChoices()

juce::StringArray tracktion::engine::RackInstance::getOutputChoices ( bool  includeNumberPrefix)

◆ getNoPinName()

juce::String tracktion::engine::RackInstance::getNoPinName ( )

◆ setInputName()

void tracktion::engine::RackInstance::setInputName ( Channel  ,
const juce::String &  inputName 
)

◆ setOutputName()

void tracktion::engine::RackInstance::setOutputName ( Channel  ,
const juce::String &  outputName 
)

◆ setInputLevel()

void tracktion::engine::RackInstance::setInputLevel ( Channel  ,
float   
)

◆ setOutputLevel()

void tracktion::engine::RackInstance::setOutputLevel ( Channel  ,
float   
)

◆ getInputName()

juce::String tracktion::engine::RackInstance::getInputName ( Channel  )

◆ getOutputName()

juce::String tracktion::engine::RackInstance::getOutputName ( Channel  )

Member Data Documentation

◆ xmlTypeName

const char* tracktion::engine::RackInstance::xmlTypeName
static

Referenced by getPluginType().

◆ rackTypeID

const EditItemID tracktion::engine::RackInstance::rackTypeID

◆ type

const RackType::Ptr tracktion::engine::RackInstance::type

◆ linkInputs

bool tracktion::engine::RackInstance::linkInputs = true

◆ linkOutputs

bool tracktion::engine::RackInstance::linkOutputs = true

◆ leftInputGoesTo

juce::CachedValue<int> tracktion::engine::RackInstance::leftInputGoesTo

◆ rightInputGoesTo

juce::CachedValue<int> tracktion::engine::RackInstance::rightInputGoesTo

◆ leftOutputComesFrom

juce::CachedValue<int> tracktion::engine::RackInstance::leftOutputComesFrom

◆ rightOutputComesFrom

juce::CachedValue<int> tracktion::engine::RackInstance::rightOutputComesFrom

◆ dryValue

juce::CachedValue<float> tracktion::engine::RackInstance::dryValue

◆ wetValue

juce::CachedValue<float> tracktion::engine::RackInstance::wetValue

◆ leftInValue

juce::CachedValue<float> tracktion::engine::RackInstance::leftInValue

◆ rightInValue

juce::CachedValue<float> tracktion::engine::RackInstance::rightInValue

◆ leftOutValue

juce::CachedValue<float> tracktion::engine::RackInstance::leftOutValue

◆ rightOutValue

juce::CachedValue<float> tracktion::engine::RackInstance::rightOutValue

◆ dryGain

AutomatableParameter::Ptr tracktion::engine::RackInstance::dryGain

◆ wetGain

AutomatableParameter::Ptr tracktion::engine::RackInstance::wetGain

◆ leftInDb

AutomatableParameter::Ptr tracktion::engine::RackInstance::leftInDb

◆ rightInDb

AutomatableParameter::Ptr tracktion::engine::RackInstance::rightInDb

◆ leftOutDb

AutomatableParameter::Ptr tracktion::engine::RackInstance::leftOutDb

◆ rightOutDb

AutomatableParameter::Ptr tracktion::engine::RackInstance::rightOutDb

◆ rackMinDb

constexpr double tracktion::engine::RackInstance::rackMinDb = -100.0
staticconstexpr

◆ rackMaxDb

constexpr double tracktion::engine::RackInstance::rackMaxDb = 12.0
staticconstexpr

The documentation for this class was generated from the following file: