Vital
Loading...
Searching...
No Matches
SlewLimitModifier::SlewLimitModifierKeyframe Class Reference

A keyframe class holding parameters for slew-rate limits at a given position. More...

#include <slew_limit_modifier.h>

Inheritance diagram for SlewLimitModifier::SlewLimitModifierKeyframe:
WavetableKeyframe

Public Member Functions

 SlewLimitModifierKeyframe ()
 Constructs a keyframe with default slew limit values.
 
virtual ~SlewLimitModifierKeyframe ()
 
void copy (const WavetableKeyframe *keyframe) override
 Copies the state from another keyframe of the same type.
 
void interpolate (const WavetableKeyframe *from_keyframe, const WavetableKeyframe *to_keyframe, float t) override
 Linearly interpolates between two keyframes.
 
void render (vital::WaveFrame *wave_frame) override
 Renders the waveform of this keyframe into a WaveFrame.
 
json stateToJson () override
 Serializes the state of this keyframe to a JSON object.
 
void jsonToState (json data) override
 Restores the keyframe's state from a JSON object.
 
float getSlewUpLimit ()
 Gets the upward slew limit.
 
float getSlewDownLimit ()
 Gets the downward slew limit.
 
void setSlewUpLimit (float slew_up_limit)
 Sets the upward slew limit parameter.
 
void setSlewDownLimit (float slew_down_limit)
 Sets the downward slew limit parameter.
 
- Public Member Functions inherited from WavetableKeyframe
 WavetableKeyframe ()
 Constructs a WavetableKeyframe with a default position of 0 and no owner.
 
virtual ~WavetableKeyframe ()
 
int index ()
 Gets the index of this keyframe within its owner component.
 
int position () const
 Gets the wavetable frame position of this keyframe.
 
void setPosition (int position)
 Sets the frame position of this keyframe.
 
virtual void smoothInterpolate (const WavetableKeyframe *prev_keyframe, const WavetableKeyframe *from_keyframe, const WavetableKeyframe *to_keyframe, const WavetableKeyframe *next_keyframe, float t)
 Performs a smooth (cubic) interpolation using four keyframes for even smoother transitions.
 
WavetableComponentowner ()
 Gets the WavetableComponent that owns this keyframe.
 
void setOwner (WavetableComponent *owner)
 Sets the owner of this keyframe.
 

Protected Attributes

float slew_up_run_rise_
 Parameter controlling upward slew rate.
 
float slew_down_run_rise_
 Parameter controlling downward slew rate.
 
- Protected Attributes inherited from WavetableKeyframe
int position_
 The position of this keyframe along the wavetable dimension.
 
WavetableComponentowner_
 The component that owns this keyframe.
 

Additional Inherited Members

- Static Public Member Functions inherited from WavetableKeyframe
static float linearTween (float point_from, float point_to, float t)
 Performs linear interpolation between two points.
 
static float cubicTween (float point_prev, float point_from, float point_to, float point_next, float range_prev, float range, float range_next, float t)
 Performs cubic interpolation taking into account a previous and next point for smoother curves.
 

Detailed Description

A keyframe class holding parameters for slew-rate limits at a given position.

The SlewLimitModifierKeyframe stores two values: slew_up_run_rise_ and slew_down_run_rise_, which represent inverse slew limits for upward and downward amplitude changes respectively. Interpolating between keyframes allows changing these limits gradually across a wavetable.

Constructor & Destructor Documentation

◆ SlewLimitModifierKeyframe()

SlewLimitModifier::SlewLimitModifierKeyframe::SlewLimitModifierKeyframe ( )

Constructs a keyframe with default slew limit values.

◆ ~SlewLimitModifierKeyframe()

virtual SlewLimitModifier::SlewLimitModifierKeyframe::~SlewLimitModifierKeyframe ( )
inlinevirtual

Member Function Documentation

◆ copy()

void SlewLimitModifier::SlewLimitModifierKeyframe::copy ( const WavetableKeyframe * keyframe)
overridevirtual

Copies the state from another keyframe of the same type.

Parameters
keyframeThe source keyframe to copy from.

Implements WavetableKeyframe.

◆ getSlewDownLimit()

float SlewLimitModifier::SlewLimitModifierKeyframe::getSlewDownLimit ( )
inline

Gets the downward slew limit.

This limit defines how quickly amplitude can fall from one sample to the next.

Returns
The downward slew limit parameter.

◆ getSlewUpLimit()

float SlewLimitModifier::SlewLimitModifierKeyframe::getSlewUpLimit ( )
inline

Gets the upward slew limit.

This limit defines how quickly amplitude can rise from one sample to the next.

Returns
The upward slew limit parameter.

◆ interpolate()

void SlewLimitModifier::SlewLimitModifierKeyframe::interpolate ( const WavetableKeyframe * from_keyframe,
const WavetableKeyframe * to_keyframe,
float t )
overridevirtual

Linearly interpolates between two keyframes.

Parameters
from_keyframeThe starting keyframe.
to_keyframeThe ending keyframe.
tThe interpolation factor [0,1].

Implements WavetableKeyframe.

◆ jsonToState()

void SlewLimitModifier::SlewLimitModifierKeyframe::jsonToState ( json data)
overridevirtual

Restores the keyframe's state from a JSON object.

Parameters
dataThe JSON object containing the keyframe's state.

Reimplemented from WavetableKeyframe.

◆ render()

void SlewLimitModifier::SlewLimitModifierKeyframe::render ( vital::WaveFrame * wave_frame)
overridevirtual

Renders the waveform of this keyframe into a WaveFrame.

Parameters
wave_frameThe WaveFrame to fill with this keyframe's waveform data.

Implements WavetableKeyframe.

◆ setSlewDownLimit()

void SlewLimitModifier::SlewLimitModifierKeyframe::setSlewDownLimit ( float slew_down_limit)
inline

Sets the downward slew limit parameter.

Parameters
slew_down_limitThe new downward slew limit.

◆ setSlewUpLimit()

void SlewLimitModifier::SlewLimitModifierKeyframe::setSlewUpLimit ( float slew_up_limit)
inline

Sets the upward slew limit parameter.

Parameters
slew_up_limitThe new upward slew limit.

◆ stateToJson()

json SlewLimitModifier::SlewLimitModifierKeyframe::stateToJson ( )
overridevirtual

Serializes the state of this keyframe to a JSON object.

Returns
A JSON object representing the keyframe.

Reimplemented from WavetableKeyframe.

Member Data Documentation

◆ slew_down_run_rise_

float SlewLimitModifier::SlewLimitModifierKeyframe::slew_down_run_rise_
protected

Parameter controlling downward slew rate.

◆ slew_up_run_rise_

float SlewLimitModifier::SlewLimitModifierKeyframe::slew_up_run_rise_
protected

Parameter controlling upward slew rate.


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