Added scaling transform for envelope
This commit is contained in:
@ -561,6 +561,7 @@ public:
|
||||
String m_script;
|
||||
double m_transform_x_shift = 0.0;
|
||||
double m_transform_y_shift = 0.0;
|
||||
double m_transform_y_scale = 1.0;
|
||||
inline double getTransformedValue(double x)
|
||||
{
|
||||
if (isTransformed() == false)
|
||||
@ -568,11 +569,15 @@ public:
|
||||
double temp = fmod(x - m_transform_x_shift, 1.0);
|
||||
if (temp < 0.0)
|
||||
temp += 1.0;
|
||||
return jlimit(0.0,1.0,GetInterpolatedNodeValue(temp) + m_transform_y_shift);
|
||||
double v = GetInterpolatedNodeValue(temp);
|
||||
double diff = 0.5 - v;
|
||||
double scaled = 0.5 - m_transform_y_scale * diff;
|
||||
double shifted = scaled + m_transform_y_shift;
|
||||
return jlimit(0.0,1.0,shifted);
|
||||
}
|
||||
bool isTransformed() const
|
||||
{
|
||||
return m_transform_x_shift != 0.0 || m_transform_y_shift != 0.0;
|
||||
return m_transform_x_shift != 0.0 || m_transform_y_shift != 0.0 || m_transform_y_scale!=1.0;
|
||||
}
|
||||
private:
|
||||
nodes_t m_nodes;
|
||||
|
Reference in New Issue
Block a user