Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chance #508

Open
wants to merge 57 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
a69e97f
Implementationg proposition for:
abscisys Dec 19, 2022
dabe431
Fixing compiling errors on RPI1
abscisys Dec 20, 2022
03a0774
Fixing compiling issue on RPI1
abscisys Dec 20, 2022
aac8391
Revert "Fixing compiling issue on RPI1"
abscisys Dec 20, 2022
11b3885
Revert "Fixing compiling errors on RPI1"
abscisys Dec 20, 2022
5317265
Revert "Implementationg proposition for:"
abscisys Dec 20, 2022
919221d
Implementationg proposition for:
abscisys Dec 19, 2022
d42b8af
Merge branch 'main' of github.com:abscisys/MiniDexed
abscisys Dec 20, 2022
6ca3e3d
Adding first set of FX
abscisys Dec 23, 2022
154cf69
Finalizing the Phase before testing
abscisys Dec 23, 2022
2542be1
Optize existing effect and add the Orbitone effect
abscisys Dec 24, 2022
fd3fd0e
Adding Flanger FX -> 1 point to fix as code is not compiling
abscisys Dec 24, 2022
992f275
Fixing Flanger
abscisys Dec 25, 2022
650db9a
Adding Tube and Chorus and update the way the FXChain is structured
abscisys Dec 27, 2022
d1408c6
Start FXRack parameter integration
abscisys Dec 28, 2022
79882d3
Merging minidexed_ext.cpp into minidexed.cpp
abscisys Dec 28, 2022
63a9460
Finalizing the menu integration and wiring to UI
abscisys Dec 28, 2022
1b33d6b
Multiple fixes - intermediate debugging
abscisys Dec 29, 2022
fe340f2
First step debugging completed
abscisys Dec 31, 2022
17030e8
2nd phase of debugging
abscisys Jan 3, 2023
6da53dc
Fixing the Shimmer Reverb
abscisys Jan 4, 2023
acc96b1
Fixing LFO frequency on the FXEngine
abscisys Jan 4, 2023
a376b41
Fixing the Chorus and enhancing the FXEngine to disable internal LFO
abscisys Jan 4, 2023
dc5165e
Removing the Chorus Feedback parameter that makes no sense
abscisys Jan 4, 2023
8227a3a
Fixing the Orbitone
abscisys Jan 4, 2023
d0fe01f
Tranform TapeDelay into a Delay as Flutter is a noise artifact generator
abscisys Jan 4, 2023
2a2b72a
Forgot 1 important source file for the conversion TapeDelay to Delay
abscisys Jan 4, 2023
ab4f238
Enhance the Buffer class for future use
abscisys Jan 4, 2023
f2006bd
Fixing the Tube effect so it has more presence
abscisys Jan 4, 2023
4fb79f8
Fixing the Phaser
abscisys Jan 5, 2023
e18c0f2
FXRack finalization
abscisys Jan 5, 2023
ffcafd6
A bit of cleanup
abscisys Jan 5, 2023
f14ac0a
Merge branch 'main' into fx
probonopd Jan 7, 2023
49973d1
Merge pull request #3 from probonopd/main
abscisys Jan 8, 2023
9cb9b97
Merge pull request #4 from probonopd/main
abscisys Jan 20, 2023
926ba53
Fixing many FX bugs and change of test framework
abscisys Jan 29, 2023
c19be7f
Alignement with fx2
abscisys Jan 30, 2023
4440ded
Fixing stereo image bug and missing initialization
abscisys Jan 30, 2023
6fb78be
Fix of the Shimmer Reverb
abscisys Feb 4, 2023
a264fdf
Fixes on FX to increase stability and performances
abscisys Feb 5, 2023
4709fc3
Fixes on FX and increase performances
abscisys Feb 5, 2023
20419bb
Reorganizing tests
abscisys Feb 5, 2023
4c502dd
FX fixes + optimizations + prepare for FX2 release
abscisys Feb 11, 2023
b18f4da
Merge pull request #5 from probonopd/main
abscisys Feb 11, 2023
dc15d62
Merge branch 'main' of github.com:probonopd/MiniDexed into probonopd-…
abscisys Feb 11, 2023
d933e05
Merge branch 'probonopd-main' into fx
abscisys Feb 11, 2023
23ab355
Changing the LFO to the new FastLFO2
abscisys Mar 4, 2023
398d11e
fixing unit tests + change default delay flutter to 0
abscisys Mar 4, 2023
73a430b
Merge branch 'main' into fx
abscisys Mar 4, 2023
6d8bb2e
Merge pull request #8 from abscisys/fx
abscisys Mar 4, 2023
3e7d28e
Merge branch 'probonopd:main' into main
abscisys Apr 10, 2023
d2f11cc
Merge pull request #10 from probonopd/main
abscisys May 18, 2023
d83f706
Revert "Merge pull request #10 from probonopd/main"
abscisys May 27, 2023
7f90b5d
reset to origin main branch
abscisys May 27, 2023
2be4e4a
Merge pull request #11 from abscisys/main-fix
abscisys May 27, 2023
3eccb2a
Adding sound-design randomization feature for Performance / FX / Pres…
abscisys Jun 5, 2023
494aaa3
Reverting unnecessarty formatting changes introduced by onsave formatter
abscisys Jun 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
FXRack finalization
abscisys committed Jan 5, 2023
commit e18c0f284e6e225829cc0093afe8b1f29b31660d
126 changes: 85 additions & 41 deletions src/fx_flanger.cpp
Original file line number Diff line number Diff line change
@@ -2,17 +2,22 @@

#include <cmath>

Flanger::Flanger(float32_t sampling_rate, float32_t delay_time, float32_t frequency, float32_t depth, float32_t feedback) :
Flanger::Flanger(float32_t sampling_rate, float32_t rate, float32_t depth, float32_t feedback) :
FXElement(sampling_rate),
MaxDelayLineSize(static_cast<unsigned>(2.0f * MAX_FLANGER_DELAY * sampling_rate / 1000.0f)),
delay_line_index_(0),
lfo_(sampling_rate, LFO::Waveform::Sine, 0.1f, 10.0f)
MaxDelayLineSize(static_cast<unsigned>(MAX_FLANGER_DELAY * sampling_rate)),
write_index_(0)
{
this->delay_lineL_ = new float32_t[this->MaxDelayLineSize];
this->delay_lineR_ = new float32_t[this->MaxDelayLineSize];

this->setDelayTime(delay_time);
this->setFrequency(frequency);
memset(this->delay_lineL_, 0, this->MaxDelayLineSize * sizeof(float32_t));
memset(this->delay_lineR_, 0, this->MaxDelayLineSize * sizeof(float32_t));
memset(this->feedback_samples_, 0, 2 * sizeof(float32_t));

this->lfo_[LFO_Index::LFO_L] = new LFO(sampling_rate, LFO::Waveform::Sine, 0.1f, 5.0f);
this->lfo_[LFO_Index::LFO_R] = new LFO(sampling_rate, LFO::Waveform::Sine, 0.1f, 5.0f, Constants::MPI_2);

this->setRate(rate);
this->setDepth(depth);
this->setFeedback(feedback);
}
@@ -21,52 +26,96 @@ Flanger::~Flanger()
{
delete[] this->delay_lineL_;
delete[] this->delay_lineR_;
}

void Flanger::processSample(float32_t inL, float32_t inR, float32_t& outL, float32_t& outR)
{
// Calculate the delay time based on the depth and rate parameters
float32_t delay = this->getDelayTime() + this->getDepth() * this->lfo_.process();

// Convert the delay time to samples
unsigned delay_samples = static_cast<unsigned>(delay * this->getSamplingRate() / 1000.0f);

// mix the input audio with the delayed audio and the feedback signal
outL = inL + this->delay_lineL_[(this->delay_line_index_ + this->delay_line_size_ - delay_samples) % this->delay_line_size_] * (1.0 - this->getFeedback());
outR = inR + this->delay_lineR_[(this->delay_line_index_ + this->delay_line_size_ - delay_samples) % this->delay_line_size_] * (1.0 - this->getFeedback());

// Update the delay buffer with the mixed audio and the feedback signal
this->delay_lineL_[this->delay_line_index_] = inL + outL * this->getFeedback();
this->delay_lineR_[this->delay_line_index_] = inR + outR * this->getFeedback();

this->delay_line_index_ = (this->delay_line_index_ + 1) % this->delay_line_size_;
delete this->lfo_[LFO_Index::LFO_L];
delete this->lfo_[LFO_Index::LFO_R];
}

void Flanger::setDelayTime(float32_t delayMS)
inline float32_t linearIterpolationnterp(float32_t inX, float32_t inY, float32_t inPhase)
{
this->delay_time_ms_ = constrain(delayMS, 1.0f, MAX_FLANGER_DELAY);
this->adjustDelayCofficients();
return (1.0f - inPhase) * inX + inPhase * inY;
}

float32_t Flanger::getDelayTime() const
void Flanger::processSample(float32_t inL, float32_t inR, float32_t& outL, float32_t& outR)
{
return this->delay_time_ms_;
// Write sample and any feedback into delay buffers
this->delay_lineL_[this->write_index_] = inL + this->feedback_samples_[0];
this->delay_lineR_[this->write_index_] = inR + this->feedback_samples_[1];

++this->write_index_;
if(this->write_index_ >= this->MaxDelayLineSize)
{
this->write_index_ -= this->MaxDelayLineSize;
}

// Configure LFO for effect processing
float32_t lfo_l = this->lfo_[LFO_L]->process() * this->depth_;
float32_t lfo_r = this->lfo_[LFO_R]->process() * this->depth_;

// Map LFO range to millisecond range according to Chorus or Flanger effect
float32_t lfoMappedL = mapfloat(lfo_l, -1.0f, 1.0f, 0.001f, 0.005f);
float32_t lfoMappedR = mapfloat(lfo_r, -1.0f, 1.0f, 0.001f, 0.005f);

// Calculate delay lengths in samples
float32_t delayTimeSamplesL = this->getSamplingRate() * lfoMappedL;
float32_t delayTimeSamplesR = this->getSamplingRate() * lfoMappedR;

// Calculate read head positions
float32_t delayReadHeadL = this->write_index_ - delayTimeSamplesL;
if(delayReadHeadL < 0.0f)
{
delayReadHeadL += this->MaxDelayLineSize;
}
float32_t delayReadHeadR = this->write_index_ - delayTimeSamplesR;
if(delayReadHeadR < 0.0f)
{
delayReadHeadR += this->MaxDelayLineSize;
}

// Calculate linear interpolation point for left channel
int currentL = (int)delayReadHeadL;
int nextL = currentL + 1;
float32_t fractionL = delayReadHeadL - currentL;
if(nextL >= static_cast<int>(this->MaxDelayLineSize))
{
nextL -= this->MaxDelayLineSize;
}

// Calculate linear interpolation point for right channel
int currentR = (int)delayReadHeadR;
int nextR = currentR + 1;
float32_t fractionR = delayReadHeadR - currentR;
if(nextR >= static_cast<int>(this->MaxDelayLineSize))
{
nextR -= this->MaxDelayLineSize;
}

// Interpolate and read from delay buffer
float32_t delay_sample_l = linearIterpolationnterp(this->delay_lineL_[currentL], this->delay_lineL_[nextL], fractionL);
float32_t delay_sample_r = linearIterpolationnterp(this->delay_lineR_[currentR], this->delay_lineR_[nextR], fractionR);

// Store delayed samples as feedback
this->feedback_samples_[0] = delay_sample_l * this->feedback_;
this->feedback_samples_[1] = delay_sample_r * this->feedback_;

outL = delay_sample_l;
outR = delay_sample_r;
}

void Flanger::setFrequency(float32_t frequency)
void Flanger::setRate(float32_t rate)
{
this->lfo_.setNormalizedFrequency(frequency);
this->lfo_[LFO_Index::LFO_L]->setNormalizedFrequency(rate);
this->lfo_[LFO_Index::LFO_R]->setNormalizedFrequency(rate);
}

float32_t Flanger::getFrequency() const
float32_t Flanger::getRate() const
{
return this->lfo_.getNormalizedFrequency();
return this->lfo_[LFO_Index::LFO_L]->getNormalizedFrequency();
}

void Flanger::setDepth(float32_t depth)
{
this->depth_ = constrain(depth, 0.0f, MAX_FLANGER_DELAY);
this->adjustDelayCofficients();
this->depth_ = constrain(depth, 0.0f, 1.0f);
}

float32_t Flanger::getDepth() const
@@ -76,15 +125,10 @@ float32_t Flanger::getDepth() const

void Flanger::setFeedback(float32_t feedback)
{
this->feedback_ = constrain(feedback, 0.0f, 1.0f);
this->feedback_ = constrain(feedback, 0.0f, 0.97f);
}

float32_t Flanger::getFeedback() const
{
return this->feedback_;
}

void Flanger::adjustDelayCofficients()
{
this->delay_line_size_ = static_cast<unsigned>(this->getSamplingRate() * (this->getDelayTime() + this->getDepth()) / 1000.0f);
}
26 changes: 13 additions & 13 deletions src/fx_flanger.h
Original file line number Diff line number Diff line change
@@ -20,23 +20,26 @@

#include "fx_components.h"

#define MAX_FLANGER_DELAY 20.0f
#define MAX_FLANGER_DELAY 2.0f

class Flanger : public FXElement
{
DISALLOW_COPY_AND_ASSIGN(Flanger);

public:
Flanger(float32_t sampling_rate, float32_t delay_time = 5.0f, float32_t frequency = 0.05f, float32_t depth = 1.0f, float32_t feedback = 0.25f);
enum LFO_Index
{
LFO_L = 0,
LFO_R
};

Flanger(float32_t sampling_rate, float32_t rate = 0.5f, float32_t depth = 0.5f, float32_t feedback = 0.0f);
virtual ~Flanger();

virtual void processSample(float32_t inL, float32_t inR, float32_t& outL, float32_t& outR) override;

void setDelayTime(float32_t delayMS);
float32_t getDelayTime() const;

void setFrequency(float32_t frequency);
float32_t getFrequency() const;
void setRate(float32_t rate);
float32_t getRate() const;

void setDepth(float32_t depth);
float32_t getDepth() const;
@@ -45,16 +48,13 @@ class Flanger : public FXElement
float32_t getFeedback() const;

private:
inline void adjustDelayCofficients();

const unsigned MaxDelayLineSize;
unsigned delay_line_index_;
unsigned delay_line_size_;
float32_t* delay_lineL_;
float32_t* delay_lineR_;
unsigned write_index_;
float32_t feedback_samples_[2];

float32_t delay_time_ms_; // Delay time in milliseconds (0.0 - 10.0)
LFO lfo_;
LFO* lfo_[2];
float32_t depth_; // Depth of the flanger effect in milliseconds (0.0 - 10.0)
float32_t feedback_; // Amount of feedback to apply to the delay line
};
25 changes: 9 additions & 16 deletions src/minidexed.cpp
Original file line number Diff line number Diff line change
@@ -180,10 +180,9 @@ CMiniDexed::CMiniDexed (CConfig *pConfig, CInterruptSystem *pInterrupt,
// FXChain > Flanger parameters
this->SetParameter(ParameterFXChainFlangerEnable, 1);
this->SetParameter(ParameterFXChainFlangerWet, 50);
this->SetParameter(ParameterFXChainFlangerDelayTime, 10);
this->SetParameter(ParameterFXChainFlangerRate, 15);
this->SetParameter(ParameterFXChainFlangerDepth, 10);
this->SetParameter(ParameterFXChainFlangerFeedback, 20);
this->SetParameter(ParameterFXChainFlangerRate, 3);
this->SetParameter(ParameterFXChainFlangerDepth, 75);
this->SetParameter(ParameterFXChainFlangerFeedback, 50);

// FXChain > Orbitone parameters
this->SetParameter(ParameterFXChainOrbitoneEnable, 1);
@@ -195,7 +194,9 @@ CMiniDexed::CMiniDexed (CConfig *pConfig, CInterruptSystem *pInterrupt,
this->SetParameter(ParameterFXChainPhaserEnable, 1);
this->SetParameter(ParameterFXChainPhaserWet, 50);
this->SetParameter(ParameterFXChainPhaserRate, 5);
this->SetParameter(ParameterFXChainPhaserDepth, 45);
this->SetParameter(ParameterFXChainPhaserDepth, 99);
this->SetParameter(ParameterFXChainPhaserFeedback, 50);
this->SetParameter(ParameterFXChainPhaserNbStages, 12);

// FXChain > Delay parameters
this->SetParameter(ParameterFXChainDelayEnable, 1);
@@ -816,28 +817,22 @@ void CMiniDexed::SetParameter (TParameter Parameter, int nValue)
this->fx_rack->getFlanger()->setWetLevel(nValue / 99.0f);
this->m_FXSpinLock.Release();
break;
case ParameterFXChainFlangerDelayTime:
nValue = constrain((int)nValue, 0, 99);
this->m_FXSpinLock.Acquire();
this->fx_rack->getFlanger()->setDelayTime(mapfloat(nValue, 0, 99, 1.0f, MAX_FLANGER_DELAY));
this->m_FXSpinLock.Release();
break;
case ParameterFXChainFlangerRate:
nValue = constrain((int)nValue, 0, 99);
this->m_FXSpinLock.Acquire();
this->fx_rack->getFlanger()->setFrequency(nValue / 99.0f);
this->fx_rack->getFlanger()->setRate(nValue / 99.0f);
this->m_FXSpinLock.Release();
break;
case ParameterFXChainFlangerDepth:
nValue = constrain((int)nValue, 0, 99);
this->m_FXSpinLock.Acquire();
this->fx_rack->getFlanger()->setDepth(mapfloat(nValue, 0, 99, 0.0f, MAX_FLANGER_DELAY));
this->fx_rack->getFlanger()->setDepth(nValue / 99.0f);
this->m_FXSpinLock.Release();
break;
case ParameterFXChainFlangerFeedback:
nValue = constrain((int)nValue, 0, 99);
this->m_FXSpinLock.Acquire();
this->fx_rack->getFlanger()->setFeedback(nValue / 99.0f);
this->fx_rack->getFlanger()->setFeedback(mapfloat(nValue, 0, 99, 0.0f, 0.97f));
this->m_FXSpinLock.Release();
break;

@@ -1407,7 +1402,6 @@ bool CMiniDexed::DoSavePerformance (void)
this->m_PerformanceConfig.SetFXChainChorusDepth(this->m_nParameter[ParameterFXChainChorusDepth]);
this->m_PerformanceConfig.SetFXChainFlangerEnable(!!this->m_nParameter[ParameterFXChainFlangerEnable]);
this->m_PerformanceConfig.SetFXChainFlangerWet(this->m_nParameter[ParameterFXChainFlangerWet]);
this->m_PerformanceConfig.SetFXChainFlangerDelayTime(this->m_nParameter[ParameterFXChainFlangerDelayTime]);
this->m_PerformanceConfig.SetFXChainFlangerRate(this->m_nParameter[ParameterFXChainFlangerRate]);
this->m_PerformanceConfig.SetFXChainFlangerDepth(this->m_nParameter[ParameterFXChainFlangerDepth]);
this->m_PerformanceConfig.SetFXChainFlangerFeedback(this->m_nParameter[ParameterFXChainFlangerFeedback]);
@@ -1836,7 +1830,6 @@ void CMiniDexed::LoadPerformanceParameters(void)
this->SetParameter(ParameterFXChainChorusDepth, this->m_PerformanceConfig.GetFXChainChorusDepth());
this->SetParameter(ParameterFXChainFlangerEnable, this->m_PerformanceConfig.GetFXChainFlangerEnable());
this->SetParameter(ParameterFXChainFlangerWet, this->m_PerformanceConfig.GetFXChainFlangerWet());
this->SetParameter(ParameterFXChainFlangerDelayTime, this->m_PerformanceConfig.GetFXChainFlangerDelayTime());
this->SetParameter(ParameterFXChainFlangerRate, this->m_PerformanceConfig.GetFXChainFlangerRate());
this->SetParameter(ParameterFXChainFlangerDepth, this->m_PerformanceConfig.GetFXChainFlangerDepth());
this->SetParameter(ParameterFXChainFlangerFeedback, this->m_PerformanceConfig.GetFXChainFlangerFeedback());
1 change: 0 additions & 1 deletion src/minidexed.h
Original file line number Diff line number Diff line change
@@ -160,7 +160,6 @@ class CMiniDexed
// FXChain > Flanger parameters
ParameterFXChainFlangerEnable,
ParameterFXChainFlangerWet,
ParameterFXChainFlangerDelayTime,
ParameterFXChainFlangerRate,
ParameterFXChainFlangerDepth,
ParameterFXChainFlangerFeedback,
7 changes: 3 additions & 4 deletions src/performance.ini
Original file line number Diff line number Diff line change
@@ -295,10 +295,9 @@ FXChainChorusRate=40
FXChainChorusDepth=50
FXChainFlangerEnable=0
FXChainFlangerWet=50
FXChainFlangerDelayTime=10
FXChainFlangerRate=15
FXChainFlangerDepth=10
FXChainFlangerFeedback=20
FXChainFlangerRate=3
FXChainFlangerDepth=75
FXChainFlangerFeedback=50
FXChainOrbitoneEnable=0
FXChainOrbitoneWet=80
FXChainOrbitoneRate=40
12 changes: 0 additions & 12 deletions src/performanceconfig.cpp
Original file line number Diff line number Diff line change
@@ -171,7 +171,6 @@ bool CPerformanceConfig::Load (void)
this->m_nFXChainChorusDepth = this->m_Properties.GetNumber("FXChainChorusDepth", 50);
this->m_bFXChainFlangerEnable = this->m_Properties.GetNumber("FXChainFlangerEnable", 1);
this->m_nFXChainFlangerWet = this->m_Properties.GetNumber("FXChainFlangerWet", 50);
this->m_nFXChainFlangerDelayTime = this->m_Properties.GetNumber("FXChainFlangerDelayTime", 10);
this->m_nFXChainFlangerRate = this->m_Properties.GetNumber("FXChainFlangerRate", 15);
this->m_nFXChainFlangerDepth = this->m_Properties.GetNumber("FXChainFlangerDepth", 10);
this->m_nFXChainFlangerFeedback = this->m_Properties.GetNumber("FXChainFlangerFeedback", 20);
@@ -328,7 +327,6 @@ bool CPerformanceConfig::Save (void)
this->m_Properties.SetNumber("FXChainChorusDepth", m_nFXChainChorusDepth);
this->m_Properties.SetNumber("FXChainFlangerEnable", m_bFXChainFlangerEnable ? 1 : 0);
this->m_Properties.SetNumber("FXChainFlangerWet", m_nFXChainFlangerWet);
this->m_Properties.SetNumber("FXChainFlangerDelayTime", m_nFXChainFlangerDelayTime);
this->m_Properties.SetNumber("FXChainFlangerRate", m_nFXChainFlangerRate);
this->m_Properties.SetNumber("FXChainFlangerDepth", m_nFXChainFlangerDepth);
this->m_Properties.SetNumber("FXChainFlangerFeedback", m_nFXChainFlangerFeedback);
@@ -1058,11 +1056,6 @@ unsigned CPerformanceConfig::GetFXChainFlangerWet(void) const
return this->m_nFXChainFlangerWet;
}

unsigned CPerformanceConfig::GetFXChainFlangerDelayTime(void) const
{
return this->m_nFXChainFlangerDelayTime;
}

unsigned CPerformanceConfig::GetFXChainFlangerRate(void) const
{
return this->m_nFXChainFlangerRate;
@@ -1238,11 +1231,6 @@ void CPerformanceConfig::SetFXChainFlangerWet(unsigned nValue)
this->m_nFXChainFlangerWet = nValue;
}

void CPerformanceConfig::SetFXChainFlangerDelayTime(unsigned nValue)
{
this->m_nFXChainFlangerDelayTime = nValue;
}

void CPerformanceConfig::SetFXChainFlangerRate(unsigned nValue)
{
this->m_nFXChainFlangerRate = nValue;
3 changes: 0 additions & 3 deletions src/performanceconfig.h
Original file line number Diff line number Diff line change
@@ -129,7 +129,6 @@ class CPerformanceConfig // Performance configuration
unsigned GetFXChainChorusDepth(void) const;
bool GetFXChainFlangerEnable(void) const;
unsigned GetFXChainFlangerWet(void) const;
unsigned GetFXChainFlangerDelayTime(void) const;
unsigned GetFXChainFlangerRate(void) const;
unsigned GetFXChainFlangerDepth(void) const;
unsigned GetFXChainFlangerFeedback(void) const;
@@ -166,7 +165,6 @@ class CPerformanceConfig // Performance configuration
void SetFXChainChorusDepth(unsigned nValue);
void SetFXChainFlangerEnable(bool bValue);
void SetFXChainFlangerWet(unsigned nValue);
void SetFXChainFlangerDelayTime(unsigned nValue);
void SetFXChainFlangerRate(unsigned nValue);
void SetFXChainFlangerDepth(unsigned nValue);
void SetFXChainFlangerFeedback(unsigned nValue);
@@ -272,7 +270,6 @@ class CPerformanceConfig // Performance configuration
unsigned m_nFXChainChorusDepth;
bool m_bFXChainFlangerEnable;
unsigned m_nFXChainFlangerWet;
unsigned m_nFXChainFlangerDelayTime;
unsigned m_nFXChainFlangerRate;
unsigned m_nFXChainFlangerDepth;
unsigned m_nFXChainFlangerFeedback;
Loading