From 7c8a806ec5f57a9208796f9c5e83e0c8930e2fd5 Mon Sep 17 00:00:00 2001 From: Holger Wirtz Date: Thu, 22 Dec 2022 08:38:18 +0100 Subject: [PATCH] Adding UI for drum pan and drum reverb send. --- MicroDexed.ino | 2 +- UI.hpp | 166 ++++++++++++++++++++++++++++++++++++++++++++----- UI_FX_T4.h | 141 +++++++++++++++++++++-------------------- config.h | 4 +- 4 files changed, 225 insertions(+), 88 deletions(-) diff --git a/MicroDexed.ino b/MicroDexed.ino index 80b52d6..8306fd5 100644 --- a/MicroDexed.ino +++ b/MicroDexed.ino @@ -983,7 +983,7 @@ void handleNoteOn(byte inChannel, byte inNumber, byte inVelocity) { for (uint8_t d = 0; d < NUM_DRUMSET_CONFIG; d++) { if (inNumber == configuration.drums.midinote[d]) { uint8_t slot = drum_get_slot(drum_config[d].drum_class); - float pan = mapfloat(configuration.drums.pan[d], -127.0, 127.0, 0.0, 1.0); + float pan = mapfloat(configuration.drums.pan[d], DRUMS_PANORAMA_MIN, DRUMS_PANORAMA_MAX, 0.0, 1.0); float reverb_send = configuration.drums.reverb_send[d] / 100.0f; float vol_min = configuration.drums.vol_min[d] / 100.0f; float vol_max = configuration.drums.vol_max[d] / 100.0f; diff --git a/UI.hpp b/UI.hpp index 81bc84c..a84426f 100644 --- a/UI.hpp +++ b/UI.hpp @@ -340,8 +340,7 @@ void UI_func_epiano_chorus_depth(uint8_t param); void UI_func_epiano_chorus_level(uint8_t param); void UI_func_drum_midi_channel(uint8_t param); void UI_func_drums_main_volume(uint8_t param); -void UI_func_drum_vol_min(uint8_t param); -void UI_func_drum_vol_max(uint8_t param); +void UI_func_drum_vol_min_max(uint8_t param); void UI_func_drum_pan(uint8_t param); void UI_func_drum_pitch(uint8_t param); void UI_func_drum_midi_note(uint8_t param); @@ -4003,6 +4002,7 @@ void _check_display_name(bool display_name, uint8_t digits) { display.print(F("]")); } } + void UI_func_drum_midi_channel(uint8_t param) { if (LCDML.FUNC_setup()) // ****** SETUP ********* { @@ -4042,7 +4042,7 @@ void UI_func_drums_main_volume(uint8_t param) { if (LCDML.FUNC_setup()) // ****** SETUP ********* { lcd_special_chars(BLOCKBAR); - display_bar_int("DRM Main Vol", configuration.drums.main_vol, 1.0, VOLUME_MIN, VOLUME_MAX, 3, false, false, true); + display_bar_int("Main Volume", configuration.drums.main_vol, 1.0, VOLUME_MIN, VOLUME_MAX, 3, false, false, true); } if (LCDML.FUNC_loop()) // ****** LOOP ********* @@ -4076,11 +4076,11 @@ void UI_func_drum_pitch(uint8_t param) { midi_learn_mode = true; memset(tmp_name, ' ', 8); - tmp_name[8] = '\0'; strncpy(tmp_name, drum_config[active_sample].name, strlen(drum_config[active_sample].name)); + tmp_name[8] = '\0'; display.setCursor(0, 0); - display.print(F("Drums Pitch")); + display.print(F("Pitch")); display.setCursor(1, 1); display.print(tmp_name); display.setCursor(LCD_cols - 5, 1); @@ -4119,11 +4119,11 @@ void UI_func_drum_pitch(uint8_t param) { } } #ifdef DEBUG - Serial.printf("Pitch for active_sample=%d [%s]\n", active_sample, drum_config[active_sample].name); + Serial.printf("Drum pitch for active_sample=%d [%s]=%d\n", active_sample, drum_config[active_sample].name, configuration.drums.pitch[active_sample]); #endif memset(tmp_name, ' ', 8); - tmp_name[8] = '\0'; strncpy(tmp_name, drum_config[active_sample].name, strlen(drum_config[active_sample].name)); + tmp_name[8] = '\0'; display.setCursor(1, 1); display.print(tmp_name); @@ -4141,20 +4141,158 @@ void UI_func_drum_pitch(uint8_t param) { } } -void UI_func_drum_vol_min(uint8_t param) { - ; -} - -void UI_func_drum_vol_max(uint8_t param) { +void UI_func_drum_vol_min_max(uint8_t param) { ; } void UI_func_drum_pan(uint8_t param) { - ; + static bool display_name; + char tmp_val[5]; + char tmp_name[9]; + + if (LCDML.FUNC_setup()) // ****** SETUP ********* + { + midi_learn_mode = true; + + memset(tmp_name, ' ', 8); + strncpy(tmp_name, drum_config[active_sample].name, strlen(drum_config[active_sample].name)); + tmp_name[8] = '\0'; + + display.setCursor(0, 0); + display.print(F("Panorama")); + display.setCursor(1, 1); + display.print(tmp_name); + display.setCursor(LCD_cols - 5, 1); + snprintf_P(tmp_val, sizeof(tmp_val), PSTR("%4.1f"), configuration.drums.pan[active_sample] / 10.0); + display.print(tmp_val); + _check_display_name(display_name, 4); + } + + if (LCDML.FUNC_loop()) // ****** LOOP ********* + { + if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up()) || (LCDML.BT_checkEnter() && encoderDir[ENC_R].ButtonShort())) { + if (LCDML.BT_checkDown()) { + if (display_name == true) { + if (active_sample < NUM_DRUMSET_CONFIG - 2) { + active_sample++; + display.setCursor(LCD_cols - 5, 1); + snprintf_P(tmp_val, sizeof(tmp_val), PSTR("%4.1f"), configuration.drums.pan[active_sample] / 10.0); + display.print(tmp_val); + } + } else { + configuration.drums.pan[active_sample] = constrain(configuration.drums.pan[active_sample] + ENCODER[ENC_L].speed(), DRUMS_PANORAMA_MIN, DRUMS_PANORAMA_MAX); + } + } else if (LCDML.BT_checkUp()) { + if (display_name == true) { + if (active_sample > 0) { + active_sample--; + display.setCursor(LCD_cols - 5, 1); + snprintf_P(tmp_val, sizeof(tmp_val), PSTR("%4.1f"), configuration.drums.pan[active_sample] / 10.0); + display.print(tmp_val); + } + } else { + configuration.drums.pan[active_sample] = constrain(configuration.drums.pan[active_sample] - ENCODER[ENC_L].speed(), DRUMS_PANORAMA_MIN, DRUMS_PANORAMA_MAX); + } + } else if (LCDML.BT_checkEnter()) { + display_name = !display_name; + } + } +#ifdef DEBUG + Serial.printf("Drum panorama for active_sample=%d [%s]=%d\n", active_sample, drum_config[active_sample].name, configuration.drums.pan[active_sample]); +#endif + memset(tmp_name, ' ', 8); + strncpy(tmp_name, drum_config[active_sample].name, strlen(drum_config[active_sample].name)); + tmp_name[8] = '\0'; + + display.setCursor(1, 1); + display.print(tmp_name); + display.setCursor(LCD_cols - 5, 1); + snprintf_P(tmp_val, sizeof(tmp_val), PSTR("%4.1f"), configuration.drums.pan[active_sample] / 10.0); + display.print(tmp_val); + + _check_display_name(display_name, 4); + } + + if (LCDML.FUNC_close()) // ****** STABLE END ********* + { + encoderDir[ENC_L].reset(); + midi_learn_mode = false; + } } void UI_func_drum_reverb_send(uint8_t param) { - ; + static bool display_name; + char tmp_val[5]; + char tmp_name[9]; + + if (LCDML.FUNC_setup()) // ****** SETUP ********* + { + midi_learn_mode = true; + + memset(tmp_name, ' ', 8); + strncpy(tmp_name, drum_config[active_sample].name, strlen(drum_config[active_sample].name)); + tmp_name[8] = '\0'; + + display.setCursor(0, 0); + display.print(F("Reverb Send")); + display.setCursor(1, 1); + display.print(tmp_name); + display.setCursor(LCD_cols - 3, 1); + snprintf_P(tmp_val, sizeof(tmp_val), PSTR("%2d"), configuration.drums.reverb_send[active_sample]); + display.print(tmp_val); + _check_display_name(display_name, 2); + } + + if (LCDML.FUNC_loop()) // ****** LOOP ********* + { + if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up()) || (LCDML.BT_checkEnter() && encoderDir[ENC_R].ButtonShort())) { + if (LCDML.BT_checkDown()) { + if (display_name == true) { + if (active_sample < NUM_DRUMSET_CONFIG - 2) { + active_sample++; + display.setCursor(LCD_cols - 3, 1); + snprintf_P(tmp_val, sizeof(tmp_val), PSTR("%2d"), configuration.drums.reverb_send[active_sample]); + display.print(tmp_val); + } + } else { + configuration.drums.reverb_send[active_sample] = constrain(configuration.drums.reverb_send[active_sample] + ENCODER[ENC_L].speed(), DRUMS_REVERB_SEND_MIN, DRUMS_REVERB_SEND_MAX); + } + } else if (LCDML.BT_checkUp()) { + if (display_name == true) { + if (active_sample > 0) { + active_sample--; + display.setCursor(LCD_cols - 3, 1); + snprintf_P(tmp_val, sizeof(tmp_val), PSTR("%2d"), configuration.drums.reverb_send[active_sample]); + display.print(tmp_val); + } + } else { + configuration.drums.reverb_send[active_sample] = constrain(configuration.drums.reverb_send[active_sample] - ENCODER[ENC_L].speed(), DRUMS_REVERB_SEND_MIN, DRUMS_REVERB_SEND_MAX); + } + } else if (LCDML.BT_checkEnter()) { + display_name = !display_name; + } + } +#ifdef DEBUG + Serial.printf("Reverb send for active_sample=%d [%s]=%d\n", active_sample, drum_config[active_sample].name, configuration.drums.reverb_send[active_sample]); +#endif + memset(tmp_name, ' ', 8); + strncpy(tmp_name, drum_config[active_sample].name, strlen(drum_config[active_sample].name)); + tmp_name[8] = '\0'; + + display.setCursor(1, 1); + display.print(tmp_name); + display.setCursor(LCD_cols - 3, 1); + snprintf_P(tmp_val, sizeof(tmp_val), PSTR("%2d"), configuration.drums.reverb_send[active_sample]); + display.print(tmp_val); + + _check_display_name(display_name, 2); + } + + if (LCDML.FUNC_close()) // ****** STABLE END ********* + { + encoderDir[ENC_L].reset(); + midi_learn_mode = false; + } } bool _get_midi_note(uint8_t note) { diff --git a/UI_FX_T4.h b/UI_FX_T4.h index 400bee1..f9edef7 100644 --- a/UI_FX_T4.h +++ b/UI_FX_T4.h @@ -88,74 +88,73 @@ LCDML_add(54, LCDML_0_1_6, 2, "Velocity Lvl", UI_func_velocity_level); LCDML_add(55, LCDML_0_1, 7, "Operator", UI_handle_OP); LCDML_add(56, LCDML_0_1, 8, "Save Voice", UI_func_save_voice); LCDML_add(57, LCDML_0, 2, "Drums", NULL); -LCDML_add(58, LCDML_0_2, 1, "Drums Main Vol", UI_func_drums_main_volume); -LCDML_add(59, LCDML_0_2, 2, "Drum Vol Min", UI_func_drum_vol_min); -LCDML_add(60, LCDML_0_2, 3, "Drum Vol Max", UI_func_drum_vol_max); -LCDML_add(61, LCDML_0_2, 4, "Drum Pan", UI_func_drum_pan); -LCDML_add(62, LCDML_0_2, 5, "Drum Rev.Send", UI_func_drum_reverb_send); -LCDML_add(63, LCDML_0_2, 6, "Drum Pitch", UI_func_drum_pitch); -LCDML_add(64, LCDML_0_2, 7, "Drum MIDI Note", UI_func_drum_midi_note); -LCDML_add(65, LCDML_0_2, 8, "MIDI Channel", UI_func_drum_midi_channel); -LCDML_add(66, LCDML_0, 3, "E-Piano", NULL); -LCDML_add(67, LCDML_0_3, 1, "Voice Level", UI_func_epiano_sound_intensity); -LCDML_add(68, LCDML_0_3, 2, "Panorama", UI_func_epiano_panorama); -LCDML_add(69, LCDML_0_3, 3, "Sound", NULL); -LCDML_add(70, LCDML_0_3_3, 1, "Decay", UI_func_epiano_decay); // uint8_t decay; -LCDML_add(71, LCDML_0_3_3, 2, "Release", UI_func_epiano_release); // uint8_t release; -LCDML_add(72, LCDML_0_3_3, 3, "Hardness", UI_func_epiano_hardness); // uint8_t hardness; -LCDML_add(73, LCDML_0_3_3, 4, "Treble", UI_func_epiano_treble); // uint8_t treble; -LCDML_add(74, LCDML_0_3_3, 5, "Stereo", UI_func_epiano_stereo); // uint8_t stereo; -LCDML_add(75, LCDML_0_3_3, 6, "Tune", UI_func_epiano_tune); // uint8_t tune; -LCDML_add(76, LCDML_0_3_3, 7, "Detune", UI_func_epiano_detune); // uint8_t detune; -LCDML_add(77, LCDML_0_3, 4, "Effects", NULL); -LCDML_add(78, LCDML_0_3_4, 1, "Overdrive", UI_func_epiano_overdrive); // uint8_t overdrive; -LCDML_add(79, LCDML_0_3_4, 2, "Tremolo", NULL); -LCDML_add(80, LCDML_0_3_4_2, 1, "Width", UI_func_epiano_pan_tremolo); // uint8_t pan_tremolo; -LCDML_add(81, LCDML_0_3_4_2, 2, "LFO", UI_func_epiano_pan_lfo); // uint8_t pan_lfo; -LCDML_add(82, LCDML_0_3_4, 3, "Chorus", NULL); -LCDML_add(83, LCDML_0_3_4_3, 1, "Frequency", UI_func_epiano_chorus_frequency); -LCDML_add(84, LCDML_0_3_4_3, 2, "Waveform", UI_func_epiano_chorus_waveform); -LCDML_add(85, LCDML_0_3_4_3, 3, "Depth", UI_func_epiano_chorus_depth); -LCDML_add(86, LCDML_0_3_4_3, 4, "Level", UI_func_epiano_chorus_level); -LCDML_add(87, LCDML_0_3_4, 4, "Reverb Send", UI_func_epiano_reverb_send); -LCDML_add(88, LCDML_0_3, 6, "MIDI", NULL); -LCDML_add(89, LCDML_0_3_6, 1, "MIDI Channel", UI_func_epiano_midi_channel); // uint8_t midi_channel; -LCDML_add(90, LCDML_0_3_6, 2, "Lowest Note", UI_func_epiano_lowest_note); // uint8_t lowest_note; -LCDML_add(91, LCDML_0_3_6, 3, "Highest Note", UI_func_epiano_highest_note); // uint8_t highest_note; -LCDML_add(92, LCDML_0_3, 7, "Setup", NULL); -LCDML_add(93, LCDML_0_3_7, 4, "Transpose", UI_func_epiano_transpose); // uint8_t transpose; -LCDML_add(94, LCDML_0_3_7, 1, "Polyphony", UI_func_epiano_polyphony); // uint8_t polyphony; -LCDML_add(95, LCDML_0_3_7, 2, "Vel. Sense", UI_func_epiano_velocity_sense); // uint8_t velocity_sense; -LCDML_add(96, LCDML_0, 4, "Master Effects", NULL); -LCDML_add(97, LCDML_0_4, 1, "Reverb", NULL); -LCDML_add(98, LCDML_0_4_1, 1, "Roomsize", UI_func_reverb_roomsize); -LCDML_add(99, LCDML_0_4_1, 2, "Lowpass", UI_func_reverb_lowpass); -LCDML_add(100, LCDML_0_4_1, 3, "Lodamp", UI_func_reverb_lodamp); -LCDML_add(101, LCDML_0_4_1, 4, "Hidamp", UI_func_reverb_hidamp); -LCDML_add(102, LCDML_0_4_1, 5, "Diffusion", UI_func_reverb_diffusion); -LCDML_add(103, LCDML_0_4_1, 6, "Level", UI_func_reverb_level); -LCDML_add(104, LCDML_0_4_1, 7, "Reverb Send", UI_func_reverb_send); -LCDML_add(105, LCDML_0_4, 2, "EQ", NULL); -LCDML_add(106, LCDML_0_4_2, 1, "Low-Cut", UI_func_eq_1); -LCDML_add(107, LCDML_0_4_2, 2, "110Hz", UI_func_eq_2); -LCDML_add(108, LCDML_0_4_2, 3, "220Hz", UI_func_eq_3); -LCDML_add(109, LCDML_0_4_2, 4, "1000Hz", UI_func_eq_4); -LCDML_add(110, LCDML_0_4_2, 5, "2000Hz", UI_func_eq_5); -LCDML_add(111, LCDML_0_4_2, 6, "7000Hz", UI_func_eq_6); -LCDML_add(112, LCDML_0_4_2, 7, "High-Cut", UI_func_eq_7) -LCDML_add(113, LCDML_0, 5, "Load/Save", NULL); -LCDML_add(114, LCDML_0_5, 1, "Load Perf.", UI_func_load_performance); -LCDML_add(115, LCDML_0_5, 2, "Save Perf.", UI_func_save_performance); -LCDML_add(116, LCDML_0_5, 3, "Name Perf.", UI_func_set_performance_name); -LCDML_add(117, LCDML_0_5, 4, "MIDI", NULL); -LCDML_add(118, LCDML_0_5_4, 1, "MIDI Recv Bank", UI_func_sysex_receive_bank); -LCDML_add(119, LCDML_0_5_4, 2, "MIDI Snd Bank", UI_func_sysex_send_bank); -LCDML_add(120, LCDML_0_5_4, 3, "MIDI Snd Voice", UI_func_sysex_send_voice); -LCDML_add(121, LCDML_0, 6, "System", NULL); -LCDML_add(122, LCDML_0_6, 1, "Stereo/Mono", UI_func_stereo_mono); -LCDML_add(123, LCDML_0_6, 2, "MIDI Soft THRU", UI_func_midi_soft_thru); -LCDML_add(124, LCDML_0_6, 3, "Favorites", UI_func_favorites); -LCDML_add(125, LCDML_0_6, 4, "Startup", UI_func_startup); -LCDML_add(126, LCDML_0, 7, "Info", UI_func_information); -LCDML_addAdvanced(127, LCDML_0, 8, COND_hide, "Volume", UI_func_volume, 0, _LCDML_TYPE_default); -#define _LCDML_DISP_cnt 127 \ No newline at end of file +LCDML_add(58, LCDML_0_2, 1, "Main Volume", UI_func_drums_main_volume); +LCDML_add(59, LCDML_0_2, 2, "Vol Min/Max", UI_func_drum_vol_min_max); +LCDML_add(60, LCDML_0_2, 3, "Panorama", UI_func_drum_pan); +LCDML_add(61, LCDML_0_2, 4, "Reverb Send", UI_func_drum_reverb_send); +LCDML_add(62, LCDML_0_2, 5, "Pitch", UI_func_drum_pitch); +LCDML_add(63, LCDML_0_2, 6, "MIDI Notes", UI_func_drum_midi_note); +LCDML_add(64, LCDML_0_2, 7, "MIDI Channel", UI_func_drum_midi_channel); +LCDML_add(65, LCDML_0, 3, "E-Piano", NULL); +LCDML_add(66, LCDML_0_3, 1, "Voice Level", UI_func_epiano_sound_intensity); +LCDML_add(67, LCDML_0_3, 2, "Panorama", UI_func_epiano_panorama); +LCDML_add(68, LCDML_0_3, 3, "Sound", NULL); +LCDML_add(69, LCDML_0_3_3, 1, "Decay", UI_func_epiano_decay); // uint8_t decay; +LCDML_add(70, LCDML_0_3_3, 2, "Release", UI_func_epiano_release); // uint8_t release; +LCDML_add(71, LCDML_0_3_3, 3, "Hardness", UI_func_epiano_hardness); // uint8_t hardness; +LCDML_add(72, LCDML_0_3_3, 4, "Treble", UI_func_epiano_treble); // uint8_t treble; +LCDML_add(73, LCDML_0_3_3, 5, "Stereo", UI_func_epiano_stereo); // uint8_t stereo; +LCDML_add(74, LCDML_0_3_3, 6, "Tune", UI_func_epiano_tune); // uint8_t tune; +LCDML_add(75, LCDML_0_3_3, 7, "Detune", UI_func_epiano_detune); // uint8_t detune; +LCDML_add(76, LCDML_0_3, 4, "Effects", NULL); +LCDML_add(77, LCDML_0_3_4, 1, "Overdrive", UI_func_epiano_overdrive); // uint8_t overdrive; +LCDML_add(78, LCDML_0_3_4, 2, "Tremolo", NULL); +LCDML_add(79, LCDML_0_3_4_2, 1, "Width", UI_func_epiano_pan_tremolo); // uint8_t pan_tremolo; +LCDML_add(80, LCDML_0_3_4_2, 2, "LFO", UI_func_epiano_pan_lfo); // uint8_t pan_lfo; +LCDML_add(81, LCDML_0_3_4, 3, "Chorus", NULL); +LCDML_add(82, LCDML_0_3_4_3, 1, "Frequency", UI_func_epiano_chorus_frequency); +LCDML_add(83, LCDML_0_3_4_3, 2, "Waveform", UI_func_epiano_chorus_waveform); +LCDML_add(84, LCDML_0_3_4_3, 3, "Depth", UI_func_epiano_chorus_depth); +LCDML_add(85, LCDML_0_3_4_3, 4, "Level", UI_func_epiano_chorus_level); +LCDML_add(86, LCDML_0_3_4, 4, "Reverb Send", UI_func_epiano_reverb_send); +LCDML_add(87, LCDML_0_3, 6, "MIDI", NULL); +LCDML_add(88, LCDML_0_3_6, 1, "MIDI Channel", UI_func_epiano_midi_channel); // uint8_t midi_channel; +LCDML_add(89, LCDML_0_3_6, 2, "Lowest Note", UI_func_epiano_lowest_note); // uint8_t lowest_note; +LCDML_add(90, LCDML_0_3_6, 3, "Highest Note", UI_func_epiano_highest_note); // uint8_t highest_note; +LCDML_add(91, LCDML_0_3, 7, "Setup", NULL); +LCDML_add(92, LCDML_0_3_7, 4, "Transpose", UI_func_epiano_transpose); // uint8_t transpose; +LCDML_add(93, LCDML_0_3_7, 1, "Polyphony", UI_func_epiano_polyphony); // uint8_t polyphony; +LCDML_add(94, LCDML_0_3_7, 2, "Vel. Sense", UI_func_epiano_velocity_sense); // uint8_t velocity_sense; +LCDML_add(95, LCDML_0, 4, "Master Effects", NULL); +LCDML_add(96, LCDML_0_4, 1, "Reverb", NULL); +LCDML_add(97, LCDML_0_4_1, 1, "Roomsize", UI_func_reverb_roomsize); +LCDML_add(98, LCDML_0_4_1, 2, "Lowpass", UI_func_reverb_lowpass); +LCDML_add(99, LCDML_0_4_1, 3, "Lodamp", UI_func_reverb_lodamp); +LCDML_add(100, LCDML_0_4_1, 4, "Hidamp", UI_func_reverb_hidamp); +LCDML_add(101, LCDML_0_4_1, 5, "Diffusion", UI_func_reverb_diffusion); +LCDML_add(102, LCDML_0_4_1, 6, "Level", UI_func_reverb_level); +LCDML_add(103, LCDML_0_4_1, 7, "Reverb Send", UI_func_reverb_send); +LCDML_add(104, LCDML_0_4, 2, "EQ", NULL); +LCDML_add(105, LCDML_0_4_2, 1, "Low-Cut", UI_func_eq_1); +LCDML_add(106, LCDML_0_4_2, 2, "110Hz", UI_func_eq_2); +LCDML_add(107, LCDML_0_4_2, 3, "220Hz", UI_func_eq_3); +LCDML_add(108, LCDML_0_4_2, 4, "1000Hz", UI_func_eq_4); +LCDML_add(109, LCDML_0_4_2, 5, "2000Hz", UI_func_eq_5); +LCDML_add(110, LCDML_0_4_2, 6, "7000Hz", UI_func_eq_6); +LCDML_add(111, LCDML_0_4_2, 7, "High-Cut", UI_func_eq_7) + LCDML_add(112, LCDML_0, 5, "Load/Save", NULL); +LCDML_add(113, LCDML_0_5, 1, "Load Perf.", UI_func_load_performance); +LCDML_add(114, LCDML_0_5, 2, "Save Perf.", UI_func_save_performance); +LCDML_add(115, LCDML_0_5, 3, "Name Perf.", UI_func_set_performance_name); +LCDML_add(116, LCDML_0_5, 4, "MIDI", NULL); +LCDML_add(117, LCDML_0_5_4, 1, "MIDI Recv Bank", UI_func_sysex_receive_bank); +LCDML_add(118, LCDML_0_5_4, 2, "MIDI Snd Bank", UI_func_sysex_send_bank); +LCDML_add(119, LCDML_0_5_4, 3, "MIDI Snd Voice", UI_func_sysex_send_voice); +LCDML_add(120, LCDML_0, 6, "System", NULL); +LCDML_add(121, LCDML_0_6, 1, "Stereo/Mono", UI_func_stereo_mono); +LCDML_add(122, LCDML_0_6, 2, "MIDI Soft THRU", UI_func_midi_soft_thru); +LCDML_add(123, LCDML_0_6, 3, "Favorites", UI_func_favorites); +LCDML_add(124, LCDML_0_6, 4, "Startup", UI_func_startup); +LCDML_add(125, LCDML_0, 7, "Info", UI_func_information); +LCDML_addAdvanced(126, LCDML_0, 8, COND_hide, "Volume", UI_func_volume, 0, _LCDML_TYPE_default); +#define _LCDML_DISP_cnt 126 \ No newline at end of file diff --git a/config.h b/config.h index 365e82c..5fd27f9 100644 --- a/config.h +++ b/config.h @@ -651,8 +651,8 @@ #define DRUMS_MIDI_NOTE_MIN 21 #define DRUMS_MIDI_NOTE_MAX 108 -#define DRUMS_PANORAMA_MIN -50 -#define DRUMS_PANORAMA_MAX 50 +#define DRUMS_PANORAMA_MIN -10 +#define DRUMS_PANORAMA_MAX 10 #define DRUMS_VOL_MIN 0 #define DRUMS_VOL_MAX 99