Merge pull request 'load/save drumconfigs for sequencer' (#88) from positionhigh/MicroDexed:dev into dev

Reviewed-on: https://codeberg.org/dcoredump/MicroDexed/pulls/88
pull/89/head
Holger Wirtz 3 years ago
commit fa7b347726
  1. 2
      config.h
  2. 52
      dexed_sd.cpp
  3. 1
      drums.h

@ -111,6 +111,8 @@
// NUMBER OF PARALLEL SAMPLEDRUMS
#define NUM_DRUMS 8
// NUMBER OF SAMPLES IN DRUMSET
#define NUM_DRUMSET_CONFIG 20
// CHORUS parameters
#define MOD_DELAY_SAMPLE_BUFFER int32_t(TIME_MS2SAMPLES(20.0)) // 20.0 ms delay buffer.

@ -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;

@ -49,7 +49,6 @@ enum {DRUM_NONE, DRUM_BASS, DRUM_SNARE, DRUM_HIHAT, DRUM_HANDCLAP, DRUM_RIDE, DR
// DEFAULT MIDI CHANNEL FOR SAMPLEDRUMS
uint8_t drum_midi_channel=10;
#define NUM_DRUMSET_CONFIG 20
drum_config_t drum_config[NUM_DRUMSET_CONFIG] =
{
{

Loading…
Cancel
Save