TracktionEngine
Classes | Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
tracktion::engine::AutomatableParameter Class Reference
Inheritance diagram for tracktion::engine::AutomatableParameter:

Classes

struct  Listener
 
struct  ModifierAssignment
 Connects a modifier source to an AutomatableParameter. More...
 
struct  ModifierSource
 Base class for things that can be used to modify parameters. More...
 

Public Types

using Ptr = juce::ReferenceCountedObjectPtr< AutomatableParameter >
 
using Array = juce::ReferenceCountedArray< AutomatableParameter >
 
- Public Types inherited from tracktion::engine::Selectable
using WeakRef = juce::WeakReference< Selectable >
 

Public Member Functions

 AutomatableParameter (const juce::String &paramID, const juce::String &name, AutomatableEditItem &, juce::NormalisableRange< float > valueRange)
 
 ~AutomatableParameter () override
 
juce::Range< float > getValueRange () const
 
PlugingetPlugin () const
 
EnginegetEngine () const noexcept
 
EditgetEdit () const noexcept
 
TrackgetTrack () const noexcept
 
AutomationCurvegetCurve () const noexcept
 
void attachToCurrentValue (juce::CachedValue< float > &)
 
void attachToCurrentValue (juce::CachedValue< int > &)
 
void attachToCurrentValue (juce::CachedValue< bool > &)
 
void updateFromAttachedValue ()
 
void detachFromCurrentValue ()
 
virtual juce::String getParameterName () const
 
virtual juce::String getParameterShortName (int) const
 
virtual juce::String getLabel ()
 
virtual juce::String getPluginAndParamName () const
 
virtual juce::String getFullName () const
 
SelectablegetOwnerSelectable () const
 Returns the thing that you'd select if you wanted to show this param. More...
 
EditItemID getOwnerID () const
 Returns the thing that you'd select if you wanted to show this param. More...
 
float getCurrentValue () const noexcept
 
float getCurrentNormalisedValue () const noexcept
 
virtual juce::String valueToString (float value)
 
virtual float stringToValue (const juce::String &s)
 
virtual juce::String getCurrentValueAsString ()
 
juce::String getCurrentValueAsStringWithLabel ()
 
virtual void beginParameterChangeGesture ()
 
virtual void endParameterChangeGesture ()
 
void setParameter (float value, juce::NotificationType)
 
void setNormalisedParameter (float value, juce::NotificationType)
 
void updateToFollowCurve (TimePosition)
 
void parameterChangeGestureBegin ()
 Call to indicate this parameter is about to be changed. More...
 
void parameterChangeGestureEnd ()
 Call to indicate this parameter has stopped being to be changed. More...
 
bool hasAutomationPoints () const noexcept
 
ModifierAssignment::Ptr addModifier (ModifierSource &, float value=1.0f, float offset=0.0f, float curve=0.5f)
 Creates an assignment for a given source. More...
 
void removeModifier (ModifierAssignment &)
 Removes an assignment. More...
 
void removeModifier (ModifierSource &)
 Removes assignments for a ModifierSource. More...
 
bool hasActiveModifierAssignments () const
 Returns true if any ModifierSources are currently in use by assignments. More...
 
juce::ReferenceCountedArray< ModifierAssignmentgetAssignments () const
 Returns all the current ModifierAssignments. More...
 
juce::Array< ModifierSource * > getModifiers () const
 Returns all the current ModifierSources currently in use by assignments. More...
 
float getCurrentExplicitValue () const
 This is the value that has been set explicity, either by calling setParameter or the plugin telling us one if its parameters has changed. More...
 
float getCurrentBaseValue () const
 This is the current base value of the parameter i.e. More...
 
float getCurrentModifierValue () const
 This is the ammount of the modifier that has been applied to the base value to give the current parameter value. More...
 
bool isAutomationActive () const
 Returns true if the parameter is being dynamically changed somehow, either through automation or a ModifierAssignment. More...
 
void updateStream ()
 Forces the parameter to update its automation stream for reading automation. More...
 
void updateFromAutomationSources (TimePosition)
 Updates the parameter and modifier values from its current automation sources. More...
 
virtual bool isParameterActive () const
 
virtual bool isDiscrete () const
 
virtual int getNumberOfStates () const
 
virtual float getValueForState (int) const
 
virtual int getStateForValue (float) const
 
virtual std::optional< float > getDefaultValue () const
 
virtual bool hasLabels () const
 
virtual juce::String getLabelForValue (float) const
 
virtual float snapToState (float val) const
 
virtual juce::StringArray getAllLabels () const
 
bool isCurrentlyRecording () const
 true if the parameter been moved while in an automation record mode. More...
 
void resetRecordingStatus ()
 this is called before and after playback or recording. More...
 
void midiControllerMoved (float newPosition)
 
void midiControllerPressed ()
 
void curveHasChanged ()
 
juce::String getSelectableDescription () override
 Subclasses must return a description of what they are. More...
 
void addListener (Listener *l)
 
void removeListener (Listener *l)
 
- 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...
 
virtual void changed ()
 This should be called to send a change notification to any SelectableListeners that are registered with this object. More...
 
virtual void selectableAboutToBeDeleted ()
 Called just before the selectable is about to be deleted so any subclasses should still be valid at this point. 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 Attributes

const juce::String paramID
 
const juce::NormalisableRange< float > valueRange
 
AutomatableEditItemautomatableEditElement
 
std::function< juce::String(float)> valueToStringFunction
 
std::function< float(const juce::String &)> stringToValueFunction
 
const juce::String paramName
 
juce::ValueTree parentState
 
- Public Attributes inherited from tracktion::engine::Selectable
WeakRef::Master masterReference
 

Protected Member Functions

AutomationSourceList & getAutomationSourceList () const
 
void setParameterValue (float value, bool isFollowingCurve)
 
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
 
virtual void parameterChanged (float, bool)
 

Protected Attributes

std::unique_ptr< AttachedValue > attachedValue
 
juce::ListenerList< Listenerlisteners
 
juce::WeakReference< SelectableeditRef
 
Pluginplugin = nullptr
 
ModifiermodifierOwner = nullptr
 
MacroParameterListmacroOwner = nullptr
 
std::unique_ptr< AutomationCurveSource > curveSource
 
std::atomic< float > currentValue { 0.0f }
 
std::atomic< float > currentParameterValue { 0.0f }
 
std::atomic< float > currentBaseValue { 0.0f }
 
std::atomic< float > currentModifierValue { 0.0f }
 
std::atomic< bool > isRecording { false }
 
bool updateParametersRecursionCheck = false
 
juce::ValueTree modifiersState
 
std::unique_ptr< AutomationSourceList > automationSourceList
 

Additional Inherited Members

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

Member Typedef Documentation

◆ Ptr

using tracktion::engine::AutomatableParameter::Ptr = juce::ReferenceCountedObjectPtr<AutomatableParameter>

◆ Array

Constructor & Destructor Documentation

◆ AutomatableParameter()

tracktion::engine::AutomatableParameter::AutomatableParameter ( const juce::String &  paramID,
const juce::String &  name,
AutomatableEditItem ,
juce::NormalisableRange< float >  valueRange 
)

◆ ~AutomatableParameter()

tracktion::engine::AutomatableParameter::~AutomatableParameter ( )
override

Member Function Documentation

◆ getValueRange()

juce::Range<float> tracktion::engine::AutomatableParameter::getValueRange ( ) const

References valueRange.

◆ getPlugin()

Plugin* tracktion::engine::AutomatableParameter::getPlugin ( ) const

References plugin.

◆ getEngine()

Engine& tracktion::engine::AutomatableParameter::getEngine ( ) const
noexcept

◆ getEdit()

Edit& tracktion::engine::AutomatableParameter::getEdit ( ) const
noexcept

◆ getTrack()

Track* tracktion::engine::AutomatableParameter::getTrack ( ) const
noexcept

◆ getCurve()

AutomationCurve& tracktion::engine::AutomatableParameter::getCurve ( ) const
noexcept

Referenced by hasAutomationPoints().

◆ attachToCurrentValue() [1/3]

void tracktion::engine::AutomatableParameter::attachToCurrentValue ( juce::CachedValue< float > &  )

◆ attachToCurrentValue() [2/3]

void tracktion::engine::AutomatableParameter::attachToCurrentValue ( juce::CachedValue< int > &  )

◆ attachToCurrentValue() [3/3]

void tracktion::engine::AutomatableParameter::attachToCurrentValue ( juce::CachedValue< bool > &  )

◆ updateFromAttachedValue()

void tracktion::engine::AutomatableParameter::updateFromAttachedValue ( )

◆ detachFromCurrentValue()

void tracktion::engine::AutomatableParameter::detachFromCurrentValue ( )

◆ getParameterName()

virtual juce::String tracktion::engine::AutomatableParameter::getParameterName ( ) const
virtual

◆ getParameterShortName()

virtual juce::String tracktion::engine::AutomatableParameter::getParameterShortName ( int  ) const
virtual

◆ getLabel()

virtual juce::String tracktion::engine::AutomatableParameter::getLabel ( )
virtual

◆ getPluginAndParamName()

virtual juce::String tracktion::engine::AutomatableParameter::getPluginAndParamName ( ) const
virtual

◆ getFullName()

virtual juce::String tracktion::engine::AutomatableParameter::getFullName ( ) const
virtual

◆ getOwnerSelectable()

Selectable* tracktion::engine::AutomatableParameter::getOwnerSelectable ( ) const

Returns the thing that you'd select if you wanted to show this param.

◆ getOwnerID()

EditItemID tracktion::engine::AutomatableParameter::getOwnerID ( ) const

Returns the thing that you'd select if you wanted to show this param.

◆ getCurrentValue()

float tracktion::engine::AutomatableParameter::getCurrentValue ( ) const
noexcept

References currentValue.

Referenced by getCurrentValueAsString().

◆ getCurrentNormalisedValue()

float tracktion::engine::AutomatableParameter::getCurrentNormalisedValue ( ) const
noexcept

References currentValue, and valueRange.

◆ valueToString()

virtual juce::String tracktion::engine::AutomatableParameter::valueToString ( float  value)
virtual

◆ stringToValue()

virtual float tracktion::engine::AutomatableParameter::stringToValue ( const juce::String &  s)
virtual

◆ getCurrentValueAsString()

virtual juce::String tracktion::engine::AutomatableParameter::getCurrentValueAsString ( )
virtual

◆ getCurrentValueAsStringWithLabel()

juce::String tracktion::engine::AutomatableParameter::getCurrentValueAsStringWithLabel ( )

◆ beginParameterChangeGesture()

virtual void tracktion::engine::AutomatableParameter::beginParameterChangeGesture ( )
virtual

◆ endParameterChangeGesture()

virtual void tracktion::engine::AutomatableParameter::endParameterChangeGesture ( )
virtual

◆ setParameter()

void tracktion::engine::AutomatableParameter::setParameter ( float  value,
juce::NotificationType   
)

◆ setNormalisedParameter()

void tracktion::engine::AutomatableParameter::setNormalisedParameter ( float  value,
juce::NotificationType   
)

◆ updateToFollowCurve()

void tracktion::engine::AutomatableParameter::updateToFollowCurve ( TimePosition  )

◆ parameterChangeGestureBegin()

void tracktion::engine::AutomatableParameter::parameterChangeGestureBegin ( )

Call to indicate this parameter is about to be changed.

◆ parameterChangeGestureEnd()

void tracktion::engine::AutomatableParameter::parameterChangeGestureEnd ( )

Call to indicate this parameter has stopped being to be changed.

◆ hasAutomationPoints()

bool tracktion::engine::AutomatableParameter::hasAutomationPoints ( ) const
noexcept

◆ addModifier()

ModifierAssignment::Ptr tracktion::engine::AutomatableParameter::addModifier ( ModifierSource ,
float  value = 1.0f,
float  offset = 0.0f,
float  curve = 0.5f 
)

Creates an assignment for a given source.

Parameters
valuethe value of the assignment 0 - 1
offsetthe offset of the assignment 0 - 1
curvethe curve of the assignment 0 - 1 where 0.5 is a linear mapping

◆ removeModifier() [1/2]

void tracktion::engine::AutomatableParameter::removeModifier ( ModifierAssignment )

Removes an assignment.

N.B. the passed in assignment is likely to be deleted after this call.

◆ removeModifier() [2/2]

void tracktion::engine::AutomatableParameter::removeModifier ( ModifierSource )

Removes assignments for a ModifierSource.

◆ hasActiveModifierAssignments()

bool tracktion::engine::AutomatableParameter::hasActiveModifierAssignments ( ) const

Returns true if any ModifierSources are currently in use by assignments.

◆ getAssignments()

juce::ReferenceCountedArray<ModifierAssignment> tracktion::engine::AutomatableParameter::getAssignments ( ) const

Returns all the current ModifierAssignments.

◆ getModifiers()

juce::Array<ModifierSource*> tracktion::engine::AutomatableParameter::getModifiers ( ) const

Returns all the current ModifierSources currently in use by assignments.

◆ getCurrentExplicitValue()

float tracktion::engine::AutomatableParameter::getCurrentExplicitValue ( ) const

This is the value that has been set explicity, either by calling setParameter or the plugin telling us one if its parameters has changed.

References currentParameterValue.

◆ getCurrentBaseValue()

float tracktion::engine::AutomatableParameter::getCurrentBaseValue ( ) const

This is the current base value of the parameter i.e.

either the explicit value or the automation curve value.

References currentBaseValue.

◆ getCurrentModifierValue()

float tracktion::engine::AutomatableParameter::getCurrentModifierValue ( ) const

This is the ammount of the modifier that has been applied to the base value to give the current parameter value.

References currentModifierValue.

◆ isAutomationActive()

bool tracktion::engine::AutomatableParameter::isAutomationActive ( ) const

Returns true if the parameter is being dynamically changed somehow, either through automation or a ModifierAssignment.

◆ updateStream()

void tracktion::engine::AutomatableParameter::updateStream ( )

Forces the parameter to update its automation stream for reading automation.

◆ updateFromAutomationSources()

void tracktion::engine::AutomatableParameter::updateFromAutomationSources ( TimePosition  )

Updates the parameter and modifier values from its current automation sources.

◆ isParameterActive()

virtual bool tracktion::engine::AutomatableParameter::isParameterActive ( ) const
virtual

◆ isDiscrete()

virtual bool tracktion::engine::AutomatableParameter::isDiscrete ( ) const
virtual

◆ getNumberOfStates()

virtual int tracktion::engine::AutomatableParameter::getNumberOfStates ( ) const
virtual

◆ getValueForState()

virtual float tracktion::engine::AutomatableParameter::getValueForState ( int  ) const
virtual

◆ getStateForValue()

virtual int tracktion::engine::AutomatableParameter::getStateForValue ( float  ) const
virtual

◆ getDefaultValue()

virtual std::optional<float> tracktion::engine::AutomatableParameter::getDefaultValue ( ) const
virtual

◆ hasLabels()

virtual bool tracktion::engine::AutomatableParameter::hasLabels ( ) const
virtual

◆ getLabelForValue()

virtual juce::String tracktion::engine::AutomatableParameter::getLabelForValue ( float  ) const
virtual

◆ snapToState()

virtual float tracktion::engine::AutomatableParameter::snapToState ( float  val) const
virtual

◆ getAllLabels()

virtual juce::StringArray tracktion::engine::AutomatableParameter::getAllLabels ( ) const
virtual

◆ isCurrentlyRecording()

bool tracktion::engine::AutomatableParameter::isCurrentlyRecording ( ) const

true if the parameter been moved while in an automation record mode.

References isRecording.

◆ resetRecordingStatus()

void tracktion::engine::AutomatableParameter::resetRecordingStatus ( )

this is called before and after playback or recording.

◆ midiControllerMoved()

void tracktion::engine::AutomatableParameter::midiControllerMoved ( float  newPosition)

◆ midiControllerPressed()

void tracktion::engine::AutomatableParameter::midiControllerPressed ( )

◆ curveHasChanged()

void tracktion::engine::AutomatableParameter::curveHasChanged ( )

◆ getSelectableDescription()

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

Subclasses must return a description of what they are.

Implements tracktion::engine::Selectable.

◆ addListener()

void tracktion::engine::AutomatableParameter::addListener ( Listener l)

References listeners.

◆ removeListener()

void tracktion::engine::AutomatableParameter::removeListener ( Listener l)

References listeners.

◆ getAutomationSourceList()

AutomationSourceList& tracktion::engine::AutomatableParameter::getAutomationSourceList ( ) const
protected

◆ setParameterValue()

void tracktion::engine::AutomatableParameter::setParameterValue ( float  value,
bool  isFollowingCurve 
)
protected

◆ valueTreePropertyChanged()

void tracktion::engine::AutomatableParameter::valueTreePropertyChanged ( juce::ValueTree &  ,
const juce::Identifier &   
)
overrideprotected

◆ valueTreeChildAdded()

void tracktion::engine::AutomatableParameter::valueTreeChildAdded ( juce::ValueTree &  ,
juce::ValueTree &   
)
overrideprotected

◆ valueTreeChildRemoved()

void tracktion::engine::AutomatableParameter::valueTreeChildRemoved ( juce::ValueTree &  ,
juce::ValueTree &  ,
int   
)
overrideprotected

◆ valueTreeChildOrderChanged()

void tracktion::engine::AutomatableParameter::valueTreeChildOrderChanged ( juce::ValueTree &  ,
int  ,
int   
)
overrideprotected

◆ valueTreeParentChanged()

void tracktion::engine::AutomatableParameter::valueTreeParentChanged ( juce::ValueTree &  )
overrideprotected

◆ valueTreeRedirected()

void tracktion::engine::AutomatableParameter::valueTreeRedirected ( juce::ValueTree &  )
overrideprotected

◆ parameterChanged()

virtual void tracktion::engine::AutomatableParameter::parameterChanged ( float  ,
bool   
)
protectedvirtual

Member Data Documentation

◆ paramID

const juce::String tracktion::engine::AutomatableParameter::paramID

◆ valueRange

const juce::NormalisableRange<float> tracktion::engine::AutomatableParameter::valueRange

◆ automatableEditElement

AutomatableEditItem& tracktion::engine::AutomatableParameter::automatableEditElement

◆ valueToStringFunction

std::function<juce::String(float)> tracktion::engine::AutomatableParameter::valueToStringFunction

Referenced by valueToString().

◆ stringToValueFunction

std::function<float(const juce::String&)> tracktion::engine::AutomatableParameter::stringToValueFunction

Referenced by stringToValue().

◆ paramName

const juce::String tracktion::engine::AutomatableParameter::paramName

◆ parentState

juce::ValueTree tracktion::engine::AutomatableParameter::parentState

◆ attachedValue

std::unique_ptr<AttachedValue> tracktion::engine::AutomatableParameter::attachedValue
protected

◆ listeners

juce::ListenerList<Listener> tracktion::engine::AutomatableParameter::listeners
protected

Referenced by addListener(), and removeListener().

◆ editRef

juce::WeakReference<Selectable> tracktion::engine::AutomatableParameter::editRef
protected

◆ plugin

Plugin* tracktion::engine::AutomatableParameter::plugin = nullptr
protected

Referenced by getPlugin().

◆ modifierOwner

Modifier* tracktion::engine::AutomatableParameter::modifierOwner = nullptr
protected

◆ macroOwner

MacroParameterList* tracktion::engine::AutomatableParameter::macroOwner = nullptr
protected

◆ curveSource

std::unique_ptr<AutomationCurveSource> tracktion::engine::AutomatableParameter::curveSource
protected

◆ currentValue

std::atomic<float> tracktion::engine::AutomatableParameter::currentValue { 0.0f }
protected

◆ currentParameterValue

std::atomic<float> tracktion::engine::AutomatableParameter::currentParameterValue { 0.0f }
protected

Referenced by getCurrentExplicitValue().

◆ currentBaseValue

std::atomic<float> tracktion::engine::AutomatableParameter::currentBaseValue { 0.0f }
protected

Referenced by getCurrentBaseValue().

◆ currentModifierValue

std::atomic<float> tracktion::engine::AutomatableParameter::currentModifierValue { 0.0f }
protected

Referenced by getCurrentModifierValue().

◆ isRecording

std::atomic<bool> tracktion::engine::AutomatableParameter::isRecording { false }
protected

Referenced by isCurrentlyRecording().

◆ updateParametersRecursionCheck

bool tracktion::engine::AutomatableParameter::updateParametersRecursionCheck = false
protected

◆ modifiersState

juce::ValueTree tracktion::engine::AutomatableParameter::modifiersState
protected

◆ automationSourceList

std::unique_ptr<AutomationSourceList> tracktion::engine::AutomatableParameter::automationSourceList
mutableprotected

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