Fixes for new fx-chain.

pull/32/head
Holger Wirtz 4 years ago
parent 6edbba5ed6
commit 0249043ff2
  1. 28
      MicroDexed.ino

@ -127,9 +127,9 @@ AudioConnection patchCord13(stereo2mono, 1, dacOut, 1);
//
uint8_t nDynamic = 0;
#if defined(USE_FX) && MOD_FILTER_OUTPUT != MOD_NO_FILTER_OUTPUT
AudioConnection * dynamicConnections[NUM_DEXED * 19];
#elif defined(USE_FX) && MOD_FILTER_OUTPUT == MOD_NO_FILTER_OUTPUT
AudioConnection * dynamicConnections[NUM_DEXED * 17];
#elif defined(USE_FX) && MOD_FILTER_OUTPUT == MOD_NO_FILTER_OUTPUT
AudioConnection * dynamicConnections[NUM_DEXED * 16];
#else
AudioConnection * dynamicConnections[NUM_DEXED * 5];
#endif
@ -171,8 +171,10 @@ void create_audio_engine_chain(uint8_t instance_id)
dynamicConnections[nDynamic++] = new AudioConnection(*delay_mixer[instance_id], 0, *delay_fb_mixer[instance_id], 1);
dynamicConnections[nDynamic++] = new AudioConnection(*mono2stereo[instance_id], 0, reverb_mixer_r, instance_id);
dynamicConnections[nDynamic++] = new AudioConnection(*mono2stereo[instance_id], 1, reverb_mixer_l, instance_id);
dynamicConnections[nDynamic++] = new AudioConnection(*mono2stereo[instance_id], 0, master_mixer_r, instance_id);
dynamicConnections[nDynamic++] = new AudioConnection(*mono2stereo[instance_id], 1, master_mixer_l, instance_id);
#else
dynamicConnections[nDynamic++] = new AudioConnection(*dexed_level[instance_id], 0, mono2stereo[instance_id], 0);
dynamicConnections[nDynamic++] = new AudioConnection(*dexed_level[instance_id], 0, *mono2stereo[instance_id], 0);
dynamicConnections[nDynamic++] = new AudioConnection(*mono2stereo[instance_id], 0, master_mixer_r, instance_id);
dynamicConnections[nDynamic++] = new AudioConnection(*mono2stereo[instance_id], 1, master_mixer_l, instance_id);
#endif
@ -397,9 +399,6 @@ void setup()
#endif
#endif
master_mixer_r.gain(0, 1.0);
master_mixer_l.gain(0, 1.0);
set_fx_params();
for (uint8_t instance_id = 0; instance_id < NUM_DEXED; instance_id++)
@ -412,7 +411,12 @@ void setup()
// INIT DEXED VOICE CONFIG
set_voiceconfig_params(instance_id);
master_mixer_r.gain(instance_id, 1.0);
master_mixer_l.gain(instance_id, 1.0);
}
master_mixer_r.gain(3, 1.0);
master_mixer_l.gain(3, 1.0);
set_sys_params();
@ -703,7 +707,7 @@ void handleControlChange(byte inChannel, byte inCtrl, byte inValue)
}
case 106: // CC 106: delay feedback
configuration.fx.delay_feedback[instance_id] = map(inValue, 0, 0x7f, DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX);
delay_mixer[instance_id]->gain(1, mapfloat(configuration.fx.delay_feedback[instance_id], DELAY_FEEDBACK_MIN, DELAY_FEEDBACK_MAX, 0.0, 1.0)); // amount of feedback
delay_fb_mixer[instance_id]->gain(1, mapfloat(configuration.fx.delay_feedback[instance_id], DELAY_FEEDBACK_MIN, DELAY_FEEDBACK_MAX, 0.0, 1.0)); // amount of feedback
if (LCDML.FUNC_getID() == LCDML.OTHER_getIDFromFunction(UI_func_delay_feedback))
{
LCDML.OTHER_updateFunc();
@ -1351,9 +1355,11 @@ void initial_values_from_eeprom(bool init)
#if defined(USE_FX)
chorus_mixer[instance_id]->gain(0, 1.0);
chorus_mixer[instance_id]->gain(1, configuration.fx.chorus_level[instance_id] / 100.0);
chorus_mixer[instance_id]->gain(1, mapfloat(configuration.fx.chorus_level[instance_id], CHORUS_LEVEL_MIN, CHORUS_LEVEL_MAX, 0.0, 1.0));
delay_mixer[instance_id]->gain(0, 1.0);
delay_mixer[instance_id]->gain(0, configuration.fx.delay_level[instance_id] / 100.0);
delay_mixer[instance_id]->gain(1, mapfloat(configuration.fx.delay_level[instance_id], DELAY_LEVEL_MIN, DELAY_LEVEL_MAX, 0.0, 1.0));
delay_fb_mixer[instance_id]->gain(0, 1.0);
delay_fb_mixer[instance_id]->gain(1, mapfloat(configuration.fx.delay_feedback[instance_id], DELAY_FEEDBACK_MIN, DELAY_FEEDBACK_MAX, 0.0, 1.0));
// MicroDexed[instance_id]->fx.Gain = configuration.dexed[instance_id].sound_intensity / 100.0;
MicroDexed[instance_id]->fx.Gain = 1.0;
@ -1646,6 +1652,8 @@ void set_fx_params(void)
for (uint8_t instance_id = 0; instance_id < NUM_DEXED; instance_id++)
{
// CHORUS
chorus_mixer[instance_id]->gain(0, 1.0);
chorus_mixer[instance_id]->gain(1, mapfloat(configuration.fx.chorus_level[instance_id], CHORUS_LEVEL_MIN, CHORUS_LEVEL_MAX, 0.0, 1.0));
switch (configuration.fx.chorus_waveform[instance_id])
{
case 0:
@ -1673,9 +1681,9 @@ void set_fx_params(void)
#endif
// DELAY
delay_fx[instance_id]->delay(0, mapfloat(configuration.fx.delay_time[instance_id] * 10, DELAY_TIME_MIN, DELAY_TIME_MAX, 0.0, float(DELAY_TIME_MAX)));
delay_mixer[instance_id]->gain(0, 1.0);
delay_mixer[instance_id]->gain(1, mapfloat(configuration.fx.delay_level[instance_id], DELAY_LEVEL_MIN, DELAY_LEVEL_MAX, 0.0, 1.0));
delay_fx[instance_id]->delay(0, mapfloat(configuration.fx.delay_time[instance_id] * 10, DELAY_TIME_MIN, DELAY_TIME_MAX, 0.0, float(DELAY_TIME_MAX)));
delay_fb_mixer[instance_id]->gain(0, 1.0);
delay_fb_mixer[instance_id]->gain(1, mapfloat(configuration.fx.delay_feedback[instance_id], DELAY_FEEDBACK_MIN, DELAY_FEEDBACK_MAX, 0.0, 1.0));

Loading…
Cancel
Save