FIxes for controller setup (special mode).

pull/32/head
Holger Wirtz 5 years ago
parent c1dacebe24
commit b1b47c2574
  1. 9
      MicroDexed.ino
  2. 4
      UI.hpp
  3. 36
      controllers.h

@ -217,9 +217,6 @@ uint32_t peak_l = 0;
bool eeprom_update_flag = false; bool eeprom_update_flag = false;
config_t configuration; config_t configuration;
uint8_t selected_dexed_instance = 0; uint8_t selected_dexed_instance = 0;
/*const uint8_t cs_pins[] = { SDCARD_AUDIO_CS_PIN, SDCARD_TEENSY_CS_PIN };
const uint8_t mosi_pins[] = { SDCARD_AUDIO_MOSI_PIN, SDCARD_TEENSY_MOSI_PIN };
const uint8_t sck_pins[] = { SDCARD_AUDIO_SCK_PIN, SDCARD_TEENSY_SCK_PIN };*/
const uint8_t cs_pins[] = { SDCARD_TEENSY_CS_PIN, SDCARD_AUDIO_CS_PIN }; const uint8_t cs_pins[] = { SDCARD_TEENSY_CS_PIN, SDCARD_AUDIO_CS_PIN };
const uint8_t mosi_pins[] = { SDCARD_TEENSY_MOSI_PIN, SDCARD_AUDIO_MOSI_PIN }; const uint8_t mosi_pins[] = { SDCARD_TEENSY_MOSI_PIN, SDCARD_AUDIO_MOSI_PIN };
const uint8_t sck_pins[] = { SDCARD_TEENSY_SCK_PIN, SDCARD_AUDIO_SCK_PIN }; const uint8_t sck_pins[] = { SDCARD_TEENSY_SCK_PIN, SDCARD_AUDIO_SCK_PIN };
@ -258,10 +255,6 @@ void setup()
setup_debug_message(); setup_debug_message();
#endif #endif
Serial.begin(SERIAL_SPEED); Serial.begin(SERIAL_SPEED);
/* while (!Serial)
{
yield();
}*/
#endif #endif
#ifndef ENABLE_LCD_UI #ifndef ENABLE_LCD_UI
#ifdef DEBUG #ifdef DEBUG
@ -755,7 +748,7 @@ void handleControlChange(byte inChannel, byte inCtrl, byte inValue)
Serial.println(F("BREATH CC")); Serial.println(F("BREATH CC"));
#endif #endif
MicroDexed[instance_id]->controllers.breath_cc = inValue; MicroDexed[instance_id]->controllers.breath_cc = inValue;
//MicroDexed[instance_id]->controllers.breath_cc = 100 – BCrange + Output * BCrange * Bcvalue/100 //MicroDexed[instance_id]->controllers.breath_cc = 100 – BCrange + Output * BCrange * Bcvalue/100
MicroDexed[instance_id]->controllers.refresh(); MicroDexed[instance_id]->controllers.refresh();
break; break;
case 4: case 4:

@ -2083,6 +2083,7 @@ void UI_func_mw_mode(uint8_t param)
configuration.dexed[instance_id].mw_mode = constrain(configuration.dexed[instance_id].mw_mode - 1, MW_MODE_MIN, MW_MODE_MAX); configuration.dexed[instance_id].mw_mode = constrain(configuration.dexed[instance_id].mw_mode - 1, MW_MODE_MIN, MW_MODE_MAX);
MicroDexed[instance_id]->setMWController(configuration.dexed[instance_id].mw_range, configuration.dexed[instance_id].mw_assign, configuration.dexed[instance_id].mw_mode); MicroDexed[instance_id]->setMWController(configuration.dexed[instance_id].mw_range, configuration.dexed[instance_id].mw_assign, configuration.dexed[instance_id].mw_mode);
MicroDexed[instance_id]->controllers.refresh();
} }
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
@ -2243,6 +2244,7 @@ void UI_func_fc_mode(uint8_t param)
configuration.dexed[instance_id].fc_mode = constrain(configuration.dexed[instance_id].fc_mode - 1, FC_MODE_MIN, FC_MODE_MAX); configuration.dexed[instance_id].fc_mode = constrain(configuration.dexed[instance_id].fc_mode - 1, FC_MODE_MIN, FC_MODE_MAX);
MicroDexed[instance_id]->setFCController(configuration.dexed[instance_id].fc_range, configuration.dexed[instance_id].fc_assign, configuration.dexed[instance_id].fc_mode); MicroDexed[instance_id]->setFCController(configuration.dexed[instance_id].fc_range, configuration.dexed[instance_id].fc_assign, configuration.dexed[instance_id].fc_mode);
MicroDexed[instance_id]->controllers.refresh();
} }
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
@ -2403,6 +2405,7 @@ void UI_func_bc_mode(uint8_t param)
configuration.dexed[instance_id].bc_mode = constrain(configuration.dexed[instance_id].bc_mode - 1, BC_MODE_MIN, BC_MODE_MAX); configuration.dexed[instance_id].bc_mode = constrain(configuration.dexed[instance_id].bc_mode - 1, BC_MODE_MIN, BC_MODE_MAX);
MicroDexed[instance_id]->setBCController(configuration.dexed[instance_id].bc_range, configuration.dexed[instance_id].bc_assign, configuration.dexed[instance_id].bc_mode); MicroDexed[instance_id]->setBCController(configuration.dexed[instance_id].bc_range, configuration.dexed[instance_id].bc_assign, configuration.dexed[instance_id].bc_mode);
MicroDexed[instance_id]->controllers.refresh();
} }
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
@ -2563,6 +2566,7 @@ void UI_func_at_mode(uint8_t param)
configuration.dexed[instance_id].at_mode = constrain(configuration.dexed[instance_id].at_mode - 1, AT_MODE_MIN, AT_MODE_MAX); configuration.dexed[instance_id].at_mode = constrain(configuration.dexed[instance_id].at_mode - 1, AT_MODE_MIN, AT_MODE_MAX);
MicroDexed[instance_id]->setATController(configuration.dexed[instance_id].at_range, configuration.dexed[instance_id].at_assign, configuration.dexed[instance_id].at_mode); MicroDexed[instance_id]->setATController(configuration.dexed[instance_id].at_range, configuration.dexed[instance_id].at_assign, configuration.dexed[instance_id].at_mode);
MicroDexed[instance_id]->controllers.refresh();
} }
lcd.setCursor(0, 1); lcd.setCursor(0, 1);

@ -70,32 +70,46 @@ class FmMod {
class Controllers { class Controllers {
void applyMod(int cc, FmMod &mod) void applyMod(int cc, FmMod &mod)
{ {
float range;
uint8_t total; uint8_t total;
range = 0.01 * mod.range; float range = mod.range / 100.0;
switch (mod.ctrl_mode) switch (mod.ctrl_mode)
{ {
case 0: case 0:
total = (float)cc * range; // NORMAL mode total = float(cc) * range; // NORMAL mode
break; break;
case 1: case 1:
total = (float)(127 - cc) * range; // REVERSE mode total = (127.0 - float(cc)) * range; // REVERSE mode
break; break;
case 2: case 2:
//total = 100.0 - range + (float)cc * range / 100.0; // Special BC mode by Thierry (opus.quatre) //total = 100.0 - range + (float)cc * range / 100.0; // Special BC mode by Thierry (opus.quatre)
total = 127.0 * ( 1 - range ) + ((float)cc * range ); // Special BC mode by Thierry (opus.quatre) //total = 127.0 * ( 1.0 - range ) + (float(cc) * range ); // Special BC mode by Thierry (opus.quatre)
total = range * float(cc) + (1.0 - range) * 127.0; // Special BC mode by Thierry (opus.quatre)
break; break;
} }
if (mod.amp) if (mod.ctrl_mode < 2)
amp_mod = max(amp_mod, total); {
if (mod.amp)
amp_mod = max(amp_mod, total);
if (mod.pitch)
pitch_mod = max(pitch_mod, total);
if (mod.eg)
eg_mod = max(eg_mod, total);
}
else
{
if (mod.amp)
amp_mod = total;
if (mod.pitch) if (mod.pitch)
pitch_mod = max(pitch_mod, total); pitch_mod = total;
if (mod.eg) if (mod.eg)
eg_mod = max(eg_mod, total); eg_mod = total;
}
} }
public: public:

Loading…
Cancel
Save