TracktionEngine
|
Bass class for parameter Modifiers. More...
#include <tracktion_Modifier.h>
Public Types | |
enum class | ProcessingPosition { none , preFX , postFX } |
Determines the position in the FX chain where the modifier should be processed. More... | |
using | Ptr = juce::ReferenceCountedObjectPtr< Modifier > |
using | Array = juce::ReferenceCountedArray< Modifier > |
![]() | |
using | WeakRef = juce::WeakReference< Selectable > |
Public Member Functions | |
Modifier (Edit &, const juce::ValueTree &) | |
Creates a Modifier for a given state. | |
~Modifier () override | |
Destructor. | |
void | remove () |
Removes this Modifier from its parent Track. | |
virtual void | initialise ()=0 |
Call this once after construction to connect it to the audio graph. | |
virtual float | getCurrentValue ()=0 |
Must return the current value of the modifier. | |
virtual AutomatableParameter::ModifierAssignment * | createAssignment (const juce::ValueTree &)=0 |
Must return a new ModifierAssignment for a given state. | |
virtual juce::StringArray | getMidiInputNames () |
Can return an array of names represeting MIDI inputs. | |
virtual juce::StringArray | getAudioInputNames () |
Can return an array of names represeting audio inputs. | |
virtual ProcessingPosition | getProcessingPosition () |
Should return the position in the plugin chain that this Modifier should be processed. | |
virtual void | initialise (double, int) |
Sub classes should implement this to initialise the Modifier. | |
virtual void | deinitialise () |
Sub classes should implement this to deinitialise the Modifier. | |
virtual void | applyToBuffer (const PluginRenderContext &) |
Sub classes should implement this to process the Modifier. | |
bool | baseClassNeedsInitialising () const noexcept |
Returns true if the Modifier needs initialising. | |
void | baseClassInitialise (double sampleRate, int blockSizeSamples) |
Initialises the Modifier. | |
void | baseClassDeinitialise () |
Deinitialises the Modifier. | |
void | baseClassApplyToBuffer (const PluginRenderContext &) |
Updates internal value history and calls the subclass's applyToBuffer method. | |
TimePosition | getCurrentTime () const |
Returns the edit time of the current value. | |
float | getValueAt (TimeDuration numSecondsBeforeNow) const |
Returns the value of the at a given time in the past. | |
std::vector< float > | getValues (TimeDuration numSecondsBeforeNow) const |
Returns a vector of previous sample values. | |
double | getSampleRate () const |
Returns the sample rate the Modifier has been initialised with. | |
void | selectableAboutToBeDeleted () override |
![]() | |
AutomatableEditItem (Edit &, const juce::ValueTree &) | |
~AutomatableEditItem () override | |
virtual void | flushPluginStateToValueTree () |
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 ¶mID) const |
void | visitAllAutomatableParams (const std::function< void(AutomatableParameter &)> &visit) const |
void | deleteParameter (AutomatableParameter *) |
void | deleteAutomatableParameters () |
int | indexOfAutomatableParameter (const AutomatableParameter::Ptr &) const |
AutomatableParameterTree & | getParameterTree () const |
juce::ReferenceCountedArray< AutomatableParameter > | getFlattenedParameterTree () const |
void | addParameterListChangeListener (ParameterListChangeListener *) |
void | removeParameterListChangeListener (ParameterListChangeListener *) |
bool | isAutomationNeeded () const noexcept |
void | setAutomatableParamPosition (TimePosition) |
bool | isBeingActivelyPlayed () const |
virtual void | updateAutomatableParamPosition (TimePosition) |
Updates all the auto params to their positions at this time. | |
void | updateParameterStreams (TimePosition) |
Updates all the parameter streams to their positions at this time. | |
void | updateActiveParameters () |
Iterates all the parameters to find out which ones need to be automated. | |
void | resetRecordingStatus () |
Marks the end of an automation recording stream. | |
![]() | |
EditItem (EditItemID, Edit &) | |
EditItem (Edit &, const juce::ValueTree &) | |
virtual | ~EditItem ()=default |
virtual juce::String | getName () const =0 |
![]() | |
Selectable () | |
virtual | ~Selectable () |
virtual juce::String | getSelectableDescription ()=0 |
Subclasses must return a description of what they are. | |
virtual void | selectionStatusChanged (bool isNowSelected) |
Can be overridden to tell this object that it has just been selected or deselected. | |
virtual void | changed () |
This should be called to send a change notification to any SelectableListeners that are registered with this object. | |
void | addListener (SelectableListener *) |
void | removeListener (SelectableListener *) |
void | addSelectableListener (SelectableListener *) |
void | removeSelectableListener (SelectableListener *) |
void | cancelAnyPendingUpdates () |
If changed() has been called, this will cancel any pending async change notificaions. | |
void | deselect () |
void | propertiesChanged () |
void | notifyListenersOfDeletion () |
WeakRef | getWeakRef () |
![]() | |
ModifierSource ()=default | |
virtual | ~ModifierSource () |
Public Attributes | |
juce::ValueTree | state |
Modifier internal state. | |
juce::CachedValue< juce::Colour > | colour |
Colour property. | |
juce::CachedValue< float > | enabled |
Enabled property. | |
AutomatableParameter::Ptr | enabledParam |
Parameter to change the enabled state. | |
![]() | |
juce::ValueTree | elementState |
juce::CachedValue< bool > | remapOnTempoChange |
![]() | |
Edit & | edit |
const EditItemID | itemID |
Every EditItem has an ID which is unique within the edit. | |
![]() | |
WeakRef::Master | masterReference |
Static Public Attributes | |
static constexpr TimeDuration | maxHistoryTime = TimeDuration::fromSeconds (3.0) |
The max number of seconds of modifier value history that is stored. | |
Protected Member Functions | |
void | setEditTime (TimePosition newEditTime) |
Subclasses can call this to update the edit time of the current value. | |
![]() | |
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. | |
void | restoreChangedParametersFromState () |
Restores the value of any explicitly set parameters. | |
Additional Inherited Members | |
![]() | |
static void | initialise () |
static bool | isSelectableValid (const Selectable *) noexcept |
checks whether this object has been deleted. | |
Bass class for parameter Modifiers.
Modifiers are capable of controlling automatable parameters by making assignments from Modifiers to AutomatableParameters. They work similarly to AutomationCurves but can be all kinds of modification such as LFOs, random and envelopes.
using tracktion::engine::Modifier::Ptr = juce::ReferenceCountedObjectPtr<Modifier> |
using tracktion::engine::Modifier::Array = juce::ReferenceCountedArray<Modifier> |
Creates a Modifier for a given state.
|
override |
Destructor.
Call this once after construction to connect it to the audio graph.
Implemented in tracktion::engine::BreakpointOscillatorModifier, tracktion::engine::EnvelopeFollowerModifier, tracktion::engine::LFOModifier, tracktion::engine::MIDITrackerModifier, tracktion::engine::RandomModifier, tracktion::engine::StepModifier, tracktion::engine::BreakpointOscillatorModifier, tracktion::engine::LFOModifier, tracktion::engine::MIDITrackerModifier, tracktion::engine::RandomModifier, and tracktion::engine::StepModifier.
Must return the current value of the modifier.
Implemented in tracktion::engine::BreakpointOscillatorModifier, tracktion::engine::EnvelopeFollowerModifier, tracktion::engine::LFOModifier, tracktion::engine::MIDITrackerModifier, tracktion::engine::RandomModifier, and tracktion::engine::StepModifier.
|
pure virtual |
Must return a new ModifierAssignment for a given state.
Implemented in tracktion::engine::BreakpointOscillatorModifier, tracktion::engine::EnvelopeFollowerModifier, tracktion::engine::LFOModifier, tracktion::engine::MIDITrackerModifier, tracktion::engine::RandomModifier, and tracktion::engine::StepModifier.
|
virtual |
Can return an array of names represeting MIDI inputs.
Reimplemented in tracktion::engine::MIDITrackerModifier.
|
virtual |
Can return an array of names represeting audio inputs.
Reimplemented in tracktion::engine::EnvelopeFollowerModifier.
|
virtual |
Should return the position in the plugin chain that this Modifier should be processed.
Reimplemented in tracktion::engine::BreakpointOscillatorModifier, tracktion::engine::EnvelopeFollowerModifier, tracktion::engine::LFOModifier, tracktion::engine::MIDITrackerModifier, tracktion::engine::RandomModifier, and tracktion::engine::StepModifier.
References none.
Sub classes should implement this to initialise the Modifier.
Reimplemented in tracktion::engine::EnvelopeFollowerModifier, tracktion::engine::BreakpointOscillatorModifier, tracktion::engine::LFOModifier, tracktion::engine::MIDITrackerModifier, tracktion::engine::RandomModifier, and tracktion::engine::StepModifier.
Sub classes should implement this to deinitialise the Modifier.
Reimplemented in tracktion::engine::EnvelopeFollowerModifier.
|
virtual |
Sub classes should implement this to process the Modifier.
Reimplemented in tracktion::engine::BreakpointOscillatorModifier, tracktion::engine::EnvelopeFollowerModifier, tracktion::engine::LFOModifier, tracktion::engine::MIDITrackerModifier, tracktion::engine::RandomModifier, and tracktion::engine::StepModifier.
|
noexcept |
Returns true if the Modifier needs initialising.
Initialises the Modifier.
void tracktion::engine::Modifier::baseClassApplyToBuffer | ( | const PluginRenderContext & | ) |
Updates internal value history and calls the subclass's applyToBuffer method.
TimePosition tracktion::engine::Modifier::getCurrentTime | ( | ) | const |
Returns the edit time of the current value.
float tracktion::engine::Modifier::getValueAt | ( | TimeDuration | numSecondsBeforeNow | ) | const |
Returns the value of the at a given time in the past.
[[ audio_thread ]]
std::vector< float > tracktion::engine::Modifier::getValues | ( | TimeDuration | numSecondsBeforeNow | ) | const |
Returns a vector of previous sample values.
N.B. you might not get back as many seconds as requested with numSecondsBeforeNow. [[ message_thread ]]
double tracktion::engine::Modifier::getSampleRate | ( | ) | const |
Returns the sample rate the Modifier has been initialised with.
|
overridevirtual |
Reimplemented from tracktion::engine::Selectable.
|
protected |
Subclasses can call this to update the edit time of the current value.
|
staticconstexpr |
The max number of seconds of modifier value history that is stored.
juce::ValueTree tracktion::engine::Modifier::state |
Modifier internal state.
juce::CachedValue<juce::Colour> tracktion::engine::Modifier::colour |
Colour property.
juce::CachedValue<float> tracktion::engine::Modifier::enabled |
Enabled property.
AutomatableParameter::Ptr tracktion::engine::Modifier::enabledParam |
Parameter to change the enabled state.