|
|
|
@ -38,6 +38,7 @@ extern void check_configuration_dexed(uint8_t instance_id); |
|
|
|
|
extern void check_configuration_performance(void); |
|
|
|
|
extern void check_configuration_fx(void); |
|
|
|
|
extern void sequencer(); |
|
|
|
|
extern float drums_volume; |
|
|
|
|
//extern StaticJsonDocument<JSON_BUFFER> data_json;
|
|
|
|
|
extern uint8_t seq_chain_lenght; |
|
|
|
|
extern uint8_t seq_data[10][16]; |
|
|
|
@ -61,6 +62,19 @@ extern uint8_t seq_chord_dexed_inst; |
|
|
|
|
extern uint8_t seq_inst_dexed[4]; |
|
|
|
|
extern PeriodicTimer timer1; |
|
|
|
|
|
|
|
|
|
typedef struct drum_config_s { |
|
|
|
|
uint8_t drum_class; // Type of drum
|
|
|
|
|
uint8_t midinote; // Triggered by note
|
|
|
|
|
char name[DRUM_NAME_LEN]; |
|
|
|
|
const unsigned int* drum_data; |
|
|
|
|
char shortname[2]; // 1 char name for sequencer
|
|
|
|
|
float32_t pan; // Panorama (-1.0 - +1.0)
|
|
|
|
|
float32_t vol_max; // max. Volume (0.0 - 1.0)
|
|
|
|
|
float32_t vol_min; // min. Volume (0.0 - 1.0, should be <= vol_max)
|
|
|
|
|
float32_t reverb_send; // how much signal to send to the reverb (0.0 - 1.0)
|
|
|
|
|
} drum_config_t; |
|
|
|
|
|
|
|
|
|
extern drum_config_t drum_config[NUM_DRUMSET_CONFIG]; |
|
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
|
|
|
SD BANK/VOICE LOADING |
|
|
|
@ -774,7 +788,7 @@ bool save_sd_fx_json(uint8_t fx) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool load_sd_seq_drumsettings_json(uint8_t number) |
|
|
|
|
{ |
|
|
|
|
{ // test function , to save drumsettings for use in sequencer, so storing in the SEQ_Path for now
|
|
|
|
|
if (number < 0) |
|
|
|
|
return (false); |
|
|
|
|
|
|
|
|
@ -809,17 +823,15 @@ bool load_sd_seq_drumsettings_json(uint8_t number) |
|
|
|
|
serializeJsonPretty(data_json, Serial); |
|
|
|
|
Serial.println(); |
|
|
|
|
#endif |
|
|
|
|
drums_volume = data_json["drums_volume"]; |
|
|
|
|
|
|
|
|
|
// drums_volume = data_json["drums_volume"];
|
|
|
|
|
|
|
|
|
|
for (uint8_t i = 0; i < 20; i++) // needs to replaced by NUM_DRUMSET_CONFIG but does not work
|
|
|
|
|
for (uint8_t i = 0; i < NUM_DRUMSET_CONFIG; i++) |
|
|
|
|
{ |
|
|
|
|
// drum_config[i].pan = data_json["pan"][i] ;
|
|
|
|
|
// drum_config[i].vol_max = data_json["vol_max"][i] ;
|
|
|
|
|
// drum_config[i].vol_min = data_json["vol_min"][i] ;
|
|
|
|
|
// drum_config[i].reverb_send = data_json["reverb_send"][i];
|
|
|
|
|
drum_config[i].pan = data_json["pan"][i] ; |
|
|
|
|
drum_config[i].vol_max = data_json["vol_max"][i] ; |
|
|
|
|
drum_config[i].vol_min = data_json["vol_min"][i] ; |
|
|
|
|
drum_config[i].reverb_send = data_json["reverb_send"][i]; |
|
|
|
|
} |
|
|
|
|
//set_fx_params();
|
|
|
|
|
|
|
|
|
|
return (true); |
|
|
|
|
} |
|
|
|
@ -845,7 +857,7 @@ bool load_sd_seq_drumsettings_json(uint8_t number) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool save_sd_seq_drumsettings_json(uint8_t number) |
|
|
|
|
{ |
|
|
|
|
{ // test function , to save drumsettings for use in sequencer, since storing in the SEQ_Path for now
|
|
|
|
|
char filename[FILENAME_LEN]; |
|
|
|
|
number = constrain(number, 0, 99); |
|
|
|
|
|
|
|
|
@ -863,17 +875,22 @@ bool save_sd_seq_drumsettings_json(uint8_t number) |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
AudioNoInterrupts(); |
|
|
|
|
|
|
|
|
|
if (SD.exists(filename)){
|
|
|
|
|
Serial.println("remove old drumsettings file"); |
|
|
|
|
SD.remove(filename); |
|
|
|
|
} |
|
|
|
|
json = SD.open(filename, FILE_WRITE); |
|
|
|
|
if (json) |
|
|
|
|
{ |
|
|
|
|
// data_json["drums_volume"] = drums_volume;
|
|
|
|
|
data_json["drums_volume"] = drums_volume; |
|
|
|
|
|
|
|
|
|
for (uint8_t i = 0; i < 20; i++) // needs to be replaced by NUM_DRUMSET_CONFIG
|
|
|
|
|
for (uint8_t i = 0; i < NUM_DRUMSET_CONFIG; i++) |
|
|
|
|
{ |
|
|
|
|
// data_json["pan"][i] = drum_config[i].pan;
|
|
|
|
|
// data_json["vol_max"][i] = drum_config[i].vol_max;
|
|
|
|
|
// data_json["vol_min"][i] = drum_config[i].vol_min;
|
|
|
|
|
// data_json["reverb_send"][i] = drum_config[i].reverb_send;
|
|
|
|
|
data_json["pan"][i] = drum_config[i].pan; |
|
|
|
|
data_json["vol_max"][i] = drum_config[i].vol_max; |
|
|
|
|
data_json["vol_min"][i] = drum_config[i].vol_min; |
|
|
|
|
data_json["reverb_send"][i] = drum_config[i].reverb_send; |
|
|
|
|
} |
|
|
|
|
#ifdef DEBUG |
|
|
|
|
Serial.println(F("Write JSON data:")); |
|
|
|
@ -905,6 +922,8 @@ bool save_sd_seq_json(uint8_t seq_number) |
|
|
|
|
int count = 0; |
|
|
|
|
seq_number = constrain(seq_number, 0, 99); |
|
|
|
|
|
|
|
|
|
save_sd_seq_drumsettings_json(seq_number); |
|
|
|
|
|
|
|
|
|
if (sd_card > 0) |
|
|
|
|
{ |
|
|
|
|
File json; |
|
|
|
@ -1024,6 +1043,7 @@ bool load_sd_seq_json(uint8_t seq_number) |
|
|
|
|
|
|
|
|
|
seq_number = constrain(seq_number, 0, 99); |
|
|
|
|
|
|
|
|
|
load_sd_seq_drumsettings_json(seq_number); |
|
|
|
|
if (sd_card > 0) |
|
|
|
|
{ |
|
|
|
|
File json; |
|
|
|
|