Fix for modulated delay.

master
Holger Wirtz 5 years ago
parent ae8d72d513
commit 27d9adb0a1
  1. 7
      MicroMDAEPiano.ino
  2. 4
      config.h
  3. 12
      effect_modulated_delay.cpp

@ -239,11 +239,16 @@ void setup()
Serial.println(F("AudioEffectModulatedDelay - left channel begin failed"));
while (1);
}
#ifdef DEBUG
Serial.print(F("MOD_DELAY_SAMPLE_BUFFER="));
Serial.print(MOD_DELAY_SAMPLE_BUFFER, DEC);
Serial.println(F(" samples"));
#endif
// chorus modulation fixed
modulator.begin(MOD_WAVEFORM);
modulator.phase(0);
modulator.amplitude(0.0);
modulator.amplitude(0.5);
modulator.offset(0.0);
#if MOD_FILTER_OUTPUT == MOD_BUTTERWORTH_FILTER_OUTPUT
// Butterworth filter, 12 db/octave

@ -76,7 +76,7 @@
#define SERIAL_SPEED 38400
#define SHOW_XRUN 1
#define SHOW_CPU_LOAD_MSEC 5000
//#define DEBUG_AUDIO 50
#define DEBUG_AUDIO 50
//*************************************************************************************************
//* HARDWARE SETTINGS
@ -275,7 +275,7 @@
#define ENC_REVERB_DAMPING_MAX 99
#define ENC_REVERB_DAMPING_DEFAULT 50
//
#define ENC_REVERB_LEVEL_MIN 0
#define ENC_REVERB_LEVEL_MIN 1
#define ENC_REVERB_LEVEL_MAX 99
#define ENC_REVERB_LEVEL_DEFAULT 15
//

@ -50,17 +50,15 @@ boolean AudioEffectModulatedDelay::begin(short *delayline, uint16_t d_length)
_cb_index = 0;
_delay_offset = 0;
if (delayline == NULL) {
if (delayline == NULL)
return (false);
}
if (d_length < 10) {
if (d_length < 10)
return (false);
}
_delayline = delayline;
_delay_length = d_length;
memset(_delayline, 0, _delay_length);
_delay_offset = (_delay_length - 1) >> 1;
memset(_delayline, 0, _delay_length * sizeof(int16_t));
_delay_offset = _delay_length >> 1 ;
return (true);
}
@ -107,7 +105,7 @@ void AudioEffectModulatedDelay::update(void)
mod_fraction = modff(mod_index, &mod_number); // split float of mod_index into integer (= mod_number) and fraction part
// calculate modulation index into circular buffer
cb_mod_index = _cb_index - mod_number;
cb_mod_index = _cb_index - (_delay_offset + mod_number);
if (cb_mod_index < 0) // check for negative offsets and correct them
cb_mod_index += _delay_length;

Loading…
Cancel
Save