tracktion-engine
3.0-10-g034fdde4aa5
Tracktion Engine — High level data model for audio applications
« « « Anklang Documentation
Loading...
Searching...
No Matches
tracktion_engine
model
automation
modifiers
tracktion_StepModifier.h
Go to the documentation of this file.
1
/*
2
,--. ,--. ,--. ,--.
3
,-' '-.,--.--.,--,--.,---.| |,-.,-' '-.`--' ,---. ,--,--, Copyright 2024
4
'-. .-'| .--' ,-. | .--'| /'-. .-',--.| .-. || \ Tracktion Software
5
| | | | \ '-' \ `--.| \ \ | | | |' '-' '| || | Corporation
6
`---' `--' `--`--'`---'`--'`--' `---' `--' `---' `--''--' www.tracktion.com
7
8
Tracktion Engine uses a GPL/commercial licence - see LICENCE.md for details.
9
*/
10
11
namespace
tracktion
{
inline
namespace
engine
12
{
13
15
class
StepModifier
:
public
Modifier
,
16
private
ValueTreeAllEventListener
17
{
18
public
:
19
//==============================================================================
20
StepModifier
(
Edit
&,
const
juce::ValueTree
&);
21
~StepModifier
()
override
;
22
23
using
Ptr
=
juce::ReferenceCountedObjectPtr<StepModifier>
;
24
using
Array
=
juce::ReferenceCountedArray<StepModifier>
;
25
26
using
Modifier::initialise
;
27
void
initialise
()
override
;
28
float
getCurrentValue
()
override
;
29
30
juce::String
getName()
const override
{
return
TRANS
(
"Step Modifier"
); }
31
32
//==============================================================================
33
enum
{ maxNumSteps = 64 };
34
float
getStep (
int
step)
const
;
35
void
setStep (
int
step,
float
value);
36
37
int
getCurrentStep()
const
noexcept
;
38
39
AutomatableParameter::ModifierAssignment
*
createAssignment
(
const
juce::ValueTree
&)
override
;
40
41
ProcessingPosition
getProcessingPosition
()
override
{
return
ProcessingPosition::preFX
; }
42
void
applyToBuffer
(
const
PluginRenderContext
&)
override
;
43
44
//==============================================================================
45
struct
Assignment
:
public
AutomatableParameter::ModifierAssignment
46
{
47
Assignment
(
const
juce::ValueTree
&,
const
StepModifier
&);
48
49
bool
isForModifierSource (
const
ModifierSource&)
const override
;
50
juce::ReferenceCountedObjectPtr<StepModifier>
getStepModifier()
const
;
51
52
const
EditItemID
stepModifierID;
53
54
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR
(
Assignment
)
55
};
56
57
//==============================================================================
58
juce::String
getSelectableDescription
()
override
;
59
60
//==============================================================================
61
juce::CachedValue<float>
syncType, numSteps, rate, rateType, depth;
62
63
AutomatableParameter::Ptr
syncTypeParam, numStepsParam, rateParam, rateTypeParam, depthParam;
64
65
private
:
66
struct
StepModifierTimer
;
67
std::unique_ptr<StepModifierTimer>
stepModifierTimer;
68
69
LambdaTimer
changedTimer;
70
float
steps[maxNumSteps];
71
std::atomic<int>
currentStep { 0 };
72
73
void
flushStepsToProperty();
74
void
restoreStepsFromProperty();
75
76
void
valueTreeChanged()
override
;
77
void
valueTreePropertyChanged (
juce::ValueTree
&,
const
juce::Identifier
&)
override
;
78
};
79
80
}}
// namespace tracktion { inline namespace engine
std::atomic
juce::CachedValue
juce::Identifier
juce::ReferenceCountedArray
juce::ReferenceCountedObjectPtr
juce::String
tracktion::engine::Edit
The Tracktion Edit class!
Definition
tracktion_Edit.h:65
tracktion::engine::LambdaTimer
Definition
tracktion_AsyncFunctionUtils.h:120
tracktion::engine::StepModifier
Definition
tracktion_StepModifier.h:17
tracktion::engine::StepModifier::initialise
void initialise() override
Call this once after construction to connect it to the audio graph.
Definition
tracktion_StepModifier.cpp:168
tracktion::engine::StepModifier::applyToBuffer
void applyToBuffer(const PluginRenderContext &) override
Sub classes should implement this to process the Modifier.
Definition
tracktion_StepModifier.cpp:208
tracktion::engine::StepModifier::getCurrentValue
float getCurrentValue() override
Must return the current value of the modifier.
Definition
tracktion_StepModifier.cpp:177
tracktion::engine::StepModifier::createAssignment
AutomatableParameter::ModifierAssignment * createAssignment(const juce::ValueTree &) override
Must return a new ModifierAssignment for a given state.
Definition
tracktion_StepModifier.cpp:203
tracktion::engine::StepModifier::getSelectableDescription
juce::String getSelectableDescription() override
Subclasses must return a description of what they are.
Definition
tracktion_StepModifier.cpp:242
tracktion::engine::StepModifier::getProcessingPosition
ProcessingPosition getProcessingPosition() override
Should return the position in the plugin chain that this Modifier should be processed.
Definition
tracktion_StepModifier.h:41
TRANS
#define TRANS(stringLiteral)
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
tracktion
Definition
tracktion_AudioReader.h:23
juce::ValueTree
tracktion::engine::AutomatableParameter::ModifierAssignment
Connects a modifier source to an AutomatableParameter.
Definition
tracktion_AutomatableParameter.h:108
tracktion::engine::EditItemID
ID for objects of type EditElement - e.g.
Definition
tracktion_EditItem.h:19
tracktion::engine::Modifier
Bass class for parameter Modifiers.
Definition
tracktion_Modifier.h:38
tracktion::engine::Modifier::initialise
virtual void initialise()=0
Call this once after construction to connect it to the audio graph.
tracktion::engine::Modifier::ProcessingPosition
ProcessingPosition
Determines the position in the FX chain where the modifier should be processed.
Definition
tracktion_Modifier.h:70
tracktion::engine::Modifier::ProcessingPosition::preFX
@ preFX
The Modifier is processed before the plugn chain.
tracktion::engine::PluginRenderContext
The context passed to plugin render methods to provide it with buffers to fill.
Definition
tracktion_Plugin.h:48
tracktion::engine::StepModifier::Assignment
Definition
tracktion_StepModifier.h:46
tracktion::engine::StepModifier::StepModifierTimer
Definition
tracktion_StepModifier.cpp:15
tracktion::engine::ValueTreeAllEventListener
Definition
tracktion_ValueTreeUtilities.h:364
std::unique_ptr
« « « Anklang Documentation