Fixing voiceconfig loading/saving.

Added creation of fx- and voice-config if storing a performance and fx-/voice-config does not exist yet.
pull/54/head
Holger Wirtz 3 years ago
parent 221e5e5a30
commit 516bd63a69
  1. 149
      dexed_sd.cpp

@ -438,35 +438,35 @@ bool load_sd_voiceconfig_json(int8_t vc, uint8_t instance_id)
serializeJsonPretty(data_json, Serial);
Serial.println();
#endif
configuration.dexed[instance_id].lowest_note = data_json["lowest_note"][instance_id];
configuration.dexed[instance_id].highest_note = data_json["highest_note"][instance_id];
configuration.dexed[instance_id].transpose = data_json["transpose"][instance_id];
configuration.dexed[instance_id].tune = data_json["tune"][instance_id];
configuration.dexed[instance_id].sound_intensity = data_json["sound_intensity"][instance_id];
configuration.dexed[instance_id].pan = data_json["pan"][instance_id];
configuration.dexed[instance_id].polyphony = data_json["polyphony"][instance_id];
configuration.dexed[instance_id].velocity_level = data_json["velocity_level"][instance_id];
configuration.dexed[instance_id].monopoly = data_json["monopoly"][instance_id];
configuration.dexed[instance_id].note_refresh = data_json["note_refresh"][instance_id];
configuration.dexed[instance_id].pb_range = data_json["pb_range"][instance_id];
configuration.dexed[instance_id].pb_step = data_json["pb_step"][instance_id];
configuration.dexed[instance_id].mw_range = data_json["mw_range"][instance_id];
configuration.dexed[instance_id].mw_assign = data_json["mw_assign"][instance_id];
configuration.dexed[instance_id].mw_mode = data_json["mw_mode"][instance_id];
configuration.dexed[instance_id].fc_range = data_json["fc_range"][instance_id];
configuration.dexed[instance_id].fc_assign = data_json["fc_assign"][instance_id];
configuration.dexed[instance_id].fc_mode = data_json["fc_mode"][instance_id];
configuration.dexed[instance_id].bc_range = data_json["bc_range"][instance_id];
configuration.dexed[instance_id].bc_assign = data_json["bc_assign"][instance_id];
configuration.dexed[instance_id].bc_mode = data_json["bc_mode"][instance_id];
configuration.dexed[instance_id].at_range = data_json["at_range"][instance_id];
configuration.dexed[instance_id].at_assign = data_json["at_assign"][instance_id];
configuration.dexed[instance_id].at_mode = data_json["at_mode"][instance_id];
configuration.dexed[instance_id].portamento_mode = data_json["portamento_mode"][instance_id];
configuration.dexed[instance_id].portamento_glissando = data_json["portamento_glissando"][instance_id];
configuration.dexed[instance_id].portamento_time = data_json["portamento_time"][instance_id];
configuration.dexed[instance_id].op_enabled = data_json["op_enabled"][instance_id];
configuration.dexed[instance_id].midi_channel = data_json["midi_channel"][instance_id];
configuration.dexed[instance_id].lowest_note = data_json["lowest_note"];
configuration.dexed[instance_id].highest_note = data_json["highest_note"];
configuration.dexed[instance_id].transpose = data_json["transpose"];
configuration.dexed[instance_id].tune = data_json["tune"];
configuration.dexed[instance_id].sound_intensity = data_json["sound_intensity"];
configuration.dexed[instance_id].pan = data_json["pan"];
configuration.dexed[instance_id].polyphony = data_json["polyphony"];
configuration.dexed[instance_id].velocity_level = data_json["velocity_level"];
configuration.dexed[instance_id].monopoly = data_json["monopoly"];
configuration.dexed[instance_id].note_refresh = data_json["note_refresh"];
configuration.dexed[instance_id].pb_range = data_json["pb_range"];
configuration.dexed[instance_id].pb_step = data_json["pb_step"];
configuration.dexed[instance_id].mw_range = data_json["mw_range"];
configuration.dexed[instance_id].mw_assign = data_json["mw_assign"];
configuration.dexed[instance_id].mw_mode = data_json["mw_mode"];
configuration.dexed[instance_id].fc_range = data_json["fc_range"];
configuration.dexed[instance_id].fc_assign = data_json["fc_assign"];
configuration.dexed[instance_id].fc_mode = data_json["fc_mode"];
configuration.dexed[instance_id].bc_range = data_json["bc_range"];
configuration.dexed[instance_id].bc_assign = data_json["bc_assign"];
configuration.dexed[instance_id].bc_mode = data_json["bc_mode"];
configuration.dexed[instance_id].at_range = data_json["at_range"];
configuration.dexed[instance_id].at_assign = data_json["at_assign"];
configuration.dexed[instance_id].at_mode = data_json["at_mode"];
configuration.dexed[instance_id].portamento_mode = data_json["portamento_mode"];
configuration.dexed[instance_id].portamento_glissando = data_json["portamento_glissando"];
configuration.dexed[instance_id].portamento_time = data_json["portamento_time"];
configuration.dexed[instance_id].op_enabled = data_json["op_enabled"];
configuration.dexed[instance_id].midi_channel = data_json["midi_channel"];
set_voiceconfig_params(instance_id);
@ -521,36 +521,36 @@ bool save_sd_voiceconfig_json(uint8_t vc, uint8_t instance_id)
{
StaticJsonDocument<JSON_BUFFER> data_json;
data_json["lowest_note"][instance_id] = configuration.dexed[instance_id].lowest_note;
data_json["highest_note"][instance_id] = configuration.dexed[instance_id].highest_note;
data_json["transpose"][instance_id] = configuration.dexed[instance_id].transpose;
data_json["tune"][instance_id] = configuration.dexed[instance_id].tune;
data_json["sound_intensity"][instance_id] = configuration.dexed[instance_id].sound_intensity;
data_json["pan"][instance_id] = configuration.dexed[instance_id].pan;
data_json["polyphony"][instance_id] = configuration.dexed[instance_id].polyphony;
data_json["velocity_level"][instance_id] = configuration.dexed[instance_id].velocity_level;
data_json["monopoly"][instance_id] = configuration.dexed[instance_id].monopoly;
data_json["monopoly"][instance_id] = configuration.dexed[instance_id].monopoly;
data_json["note_refresh"][instance_id] = configuration.dexed[instance_id].note_refresh;
data_json["pb_range"][instance_id] = configuration.dexed[instance_id].pb_range;
data_json["pb_step"][instance_id] = configuration.dexed[instance_id].pb_step;
data_json["mw_range"][instance_id] = configuration.dexed[instance_id].mw_range;
data_json["mw_assign"][instance_id] = configuration.dexed[instance_id].mw_assign;
data_json["mw_mode"][instance_id] = configuration.dexed[instance_id].mw_mode;
data_json["fc_range"][instance_id] = configuration.dexed[instance_id].fc_range;
data_json["fc_assign"][instance_id] = configuration.dexed[instance_id].fc_assign;
data_json["fc_mode"][instance_id] = configuration.dexed[instance_id].fc_mode;
data_json["bc_range"][instance_id] = configuration.dexed[instance_id].bc_range;
data_json["bc_assign"][instance_id] = configuration.dexed[instance_id].bc_assign;
data_json["bc_mode"][instance_id] = configuration.dexed[instance_id].bc_mode;
data_json["at_range"][instance_id] = configuration.dexed[instance_id].at_range;
data_json["at_assign"][instance_id] = configuration.dexed[instance_id].at_assign;
data_json["at_mode"][instance_id] = configuration.dexed[instance_id].at_mode;
data_json["portamento_mode"][instance_id] = configuration.dexed[instance_id].portamento_mode;
data_json["portamento_glissando"][instance_id] = configuration.dexed[instance_id].portamento_glissando;
data_json["portamento_time"][instance_id] = configuration.dexed[instance_id].portamento_time;
data_json["op_enabled"][instance_id] = configuration.dexed[instance_id].op_enabled;
data_json["midi_channel"][instance_id] = configuration.dexed[instance_id].midi_channel;
data_json["lowest_note"] = configuration.dexed[instance_id].lowest_note;
data_json["highest_note"] = configuration.dexed[instance_id].highest_note;
data_json["transpose"] = configuration.dexed[instance_id].transpose;
data_json["tune"] = configuration.dexed[instance_id].tune;
data_json["sound_intensity"] = configuration.dexed[instance_id].sound_intensity;
data_json["pan"] = configuration.dexed[instance_id].pan;
data_json["polyphony"] = configuration.dexed[instance_id].polyphony;
data_json["velocity_level"] = configuration.dexed[instance_id].velocity_level;
data_json["monopoly"] = configuration.dexed[instance_id].monopoly;
data_json["monopoly"] = configuration.dexed[instance_id].monopoly;
data_json["note_refresh"] = configuration.dexed[instance_id].note_refresh;
data_json["pb_range"] = configuration.dexed[instance_id].pb_range;
data_json["pb_step"] = configuration.dexed[instance_id].pb_step;
data_json["mw_range"] = configuration.dexed[instance_id].mw_range;
data_json["mw_assign"] = configuration.dexed[instance_id].mw_assign;
data_json["mw_mode"] = configuration.dexed[instance_id].mw_mode;
data_json["fc_range"] = configuration.dexed[instance_id].fc_range;
data_json["fc_assign"] = configuration.dexed[instance_id].fc_assign;
data_json["fc_mode"] = configuration.dexed[instance_id].fc_mode;
data_json["bc_range"] = configuration.dexed[instance_id].bc_range;
data_json["bc_assign"] = configuration.dexed[instance_id].bc_assign;
data_json["bc_mode"] = configuration.dexed[instance_id].bc_mode;
data_json["at_range"] = configuration.dexed[instance_id].at_range;
data_json["at_assign"] = configuration.dexed[instance_id].at_assign;
data_json["at_mode"] = configuration.dexed[instance_id].at_mode;
data_json["portamento_mode"] = configuration.dexed[instance_id].portamento_mode;
data_json["portamento_glissando"] = configuration.dexed[instance_id].portamento_glissando;
data_json["portamento_time"] = configuration.dexed[instance_id].portamento_time;
data_json["op_enabled"] = configuration.dexed[instance_id].op_enabled;
data_json["midi_channel"] = configuration.dexed[instance_id].midi_channel;
#ifdef DEBUG
Serial.println(F("Write JSON data:"));
@ -797,7 +797,6 @@ bool load_sd_performance_json(int8_t p)
for (uint8_t instance_id = 0; instance_id < NUM_DEXED; instance_id++)
{
load_sd_voice(configuration.performance.bank[instance_id], configuration.performance.voice[instance_id], instance_id);
load_sd_voiceconfig_json(configuration.performance.voiceconfig_number[instance_id], instance_id);
MicroDexed[instance_id]->ControllersRefresh();
@ -838,8 +837,6 @@ bool save_sd_performance_json(uint8_t p)
{
File json;
sprintf(filename, "/%s/%s%d.json", PERFORMANCE_CONFIG_PATH, PERFORMANCE_CONFIG_NAME, p);
#ifdef DEBUG
Serial.print(F("Saving performance config as JSON"));
Serial.print(p);
@ -848,6 +845,34 @@ bool save_sd_performance_json(uint8_t p)
#endif
AudioNoInterrupts();
// Check if voice- and fx-config exist. If not, save the actual state
sprintf(filename, "/%s/%s%d.json", FX_CONFIG_PATH, FX_CONFIG_NAME, configuration.performance.fx_number);
if (!SD.exists(filename))
{
#ifdef DEBUG
Serial.print(F("FX-Config "));
Serial.print(configuration.performance.fx_number);
Serial.println(F(" does not exists, creating one."));
#endif
save_sd_performance_json(configuration.performance.fx_number);
}
for (uint8_t i = 0; i < MAX_DEXED; i++)
{
sprintf(filename, "/%s/%s%d.json", VOICE_CONFIG_PATH, VOICE_CONFIG_NAME, configuration.performance.voiceconfig_number[i]);
if (!SD.exists(filename))
{
#ifdef DEBUG
Serial.print(F("Voice-Config "));
Serial.print(configuration.performance.voiceconfig_number[i]);
Serial.println(F(" does not exists, creating one."));
#endif
save_sd_voiceconfig_json(configuration.performance.voiceconfig_number[i], i);
}
}
sprintf(filename, "/%s/%s%d.json", PERFORMANCE_CONFIG_PATH, PERFORMANCE_CONFIG_NAME, p);
json = SD.open(filename, FILE_WRITE);
if (json)
{

Loading…
Cancel
Save