Skip to content

Commit

Permalink
Fixes and changes to flanger
Browse files Browse the repository at this point in the history
  • Loading branch information
Drewol committed Oct 25, 2017
1 parent f23fdec commit d80700d
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 9 deletions.
20 changes: 13 additions & 7 deletions Audio/src/DSP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -391,9 +391,11 @@ void FlangerDSP::SetLength(uint32 length)
void FlangerDSP::SetDelayRange(uint32 min, uint32 max)
{
assert(max > min);
m_min = min;
m_max = max;
m_bufferLength = m_max * 2 + 8;
// Assuming 44100hz is the base sample rate
float mult = (float)audio->GetSampleRate() / 44100.f;
m_min = min * mult;
m_max = max * mult;
m_bufferLength = m_max * 2;
m_sampleBuffer.resize(m_bufferLength);
}
void FlangerDSP::Process(float* out, uint32 numSamples)
Expand All @@ -406,10 +408,14 @@ void FlangerDSP::Process(float* out, uint32 numSamples)
for(uint32 i = 0; i < numSamples; i++)
{
// Determine where we want to sample past samples
float f = ((float)m_time / (float)m_length) * Math::pi * 2.0f;
uint32 d = (uint32)(m_min + ((m_max - 1) - m_min) * (sin(f) * 0.5f + 0.5f));
uint32 samplePos = (m_bufferOffset - d * 2) % m_bufferLength;

float f = fmodf(((float)m_time / (float)m_length), 1.f);
f = fabsf(f * 2 - 1);
uint32 d = (uint32)(m_min + ((m_max - 1) - m_min) * (f));

// TODO: clean up?
int32 samplePos = ((int)m_bufferOffset - (int)d * 2) % (int)m_bufferLength;
if (samplePos < 0)
samplePos = m_bufferLength + samplePos;

// Inject new sample
data[m_bufferOffset + 0] = out[i*2];
Expand Down
2 changes: 1 addition & 1 deletion Beatmap/src/BeatmapFromKSH.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ bool Beatmap::m_ProcessKShootMap(BinaryStream& input, bool metadataOnly)
defaultEffectParams[EffectType::Gate] = 8;
defaultEffectParams[EffectType::Retrigger] = 8;
defaultEffectParams[EffectType::Phaser] = 5000;
defaultEffectParams[EffectType::Flanger] = 5000;
defaultEffectParams[EffectType::Flanger] = 2000;
defaultEffectParams[EffectType::Wobble] = 12;
defaultEffectParams[EffectType::SideChain] = 8;
defaultEffectParams[EffectType::TapeStop] = 50;
Expand Down
2 changes: 1 addition & 1 deletion Main/Audio/GameAudioEffects.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ void GameAudioEffect::SetParams(DSP* dsp, AudioPlayback& playback, HoldObjectSta
FlangerDSP* fl = (FlangerDSP*)dsp;
double delay = (noteDuration) / 1000.0;
fl->SetLength(object->effectParams[0]);
fl->SetDelayRange(2, 40);
fl->SetDelayRange(10, 40);
break;
}
case EffectType::PitchShift:
Expand Down

0 comments on commit d80700d

Please sign in to comment.