Dateien hochladen nach „“

pull/47/head
positionhigh 4 years ago
parent 94ae245a55
commit 3e3eba914d
  1. 26
      MicroDexed.ino
  2. 125
      UI.hpp
  3. 17
      UI_FX.h
  4. 17
      UI_FX_T4.h
  5. 34
      config.h

@ -268,6 +268,7 @@ int16_t _midi_bpm = -1;
elapsedMillis midi_bpm_timer; elapsedMillis midi_bpm_timer;
elapsedMillis long_button_pressed; elapsedMillis long_button_pressed;
elapsedMillis control_rate; elapsedMillis control_rate;
elapsedMillis sequencer_timer;
uint8_t active_voices[NUM_DEXED]; uint8_t active_voices[NUM_DEXED];
uint8_t midi_voices[NUM_DEXED]; uint8_t midi_voices[NUM_DEXED];
#ifdef SHOW_CPU_LOAD_MSEC #ifdef SHOW_CPU_LOAD_MSEC
@ -288,7 +289,13 @@ char g_voice_name[NUM_DEXED][VOICE_NAME_LEN];
char g_bank_name[NUM_DEXED][BANK_NAME_LEN]; char g_bank_name[NUM_DEXED][BANK_NAME_LEN];
char receive_bank_filename[FILENAME_LEN]; char receive_bank_filename[FILENAME_LEN];
uint8_t selected_instance_id = 0; uint8_t selected_instance_id = 0;
uint8_t seqsteptimer=0;
uint32_t seqtimer_old=5000;
//uint8_t seqdata[1][16]={48,48,54,48,49,54,54,48,54,54,48,54,49,54,54,54};
//uint8_t seqdata[1][16]={72,72,78,72,75,78,78,72,78,78,72,78,75,78,78,78};
uint8_t seqdata[3][16]={72,72, 0,72,75, 0, 0,72, 0, 0,72, 0,75, 0, 0, 0,
73,73, 0,73, 0, 0,73,73, 0, 0,73,73, 0, 0, 0, 0,
78, 0, 0,78, 0, 0,78, 0,78,78, 0, 0, 0, 0, 0, 0};
#ifdef TEENSY4 #ifdef TEENSY4
#if NUM_DEXED>1 #if NUM_DEXED>1
int8_t midi_decay[NUM_DEXED] = { -1, -1}; int8_t midi_decay[NUM_DEXED] = { -1, -1};
@ -599,6 +606,23 @@ void loop()
ENCODER[ENC_L].update(); ENCODER[ENC_L].update();
ENCODER[ENC_R].update(); ENCODER[ENC_R].update();
//sequencer
if (sequencer_timer > seqtimer_old +125)
{
seqtimer_old=sequencer_timer;
if (seqdata[0][seqsteptimer]>0) {handleNoteOn(DRUM_MIDI_CHANNEL, seqdata[0][seqsteptimer] , 99);}
if (seqdata[1][seqsteptimer]>0) {handleNoteOn(DRUM_MIDI_CHANNEL, seqdata[1][seqsteptimer] , 99);}
if (seqdata[2][seqsteptimer]>0) {handleNoteOn(DRUM_MIDI_CHANNEL, seqdata[2][seqsteptimer] , 99);}
seqsteptimer++;
}
if (seqsteptimer>15)seqsteptimer=0;
//Serial.print(seqsteptimer);
//Serial.println("");
#ifdef ENABLE_LCD_UI #ifdef ENABLE_LCD_UI
LCDML.loop(); LCDML.loop();
#endif #endif

125
UI.hpp

@ -63,6 +63,13 @@ extern void eeprom_update_dexed(uint8_t instance_id);
extern float pseudo_log_curve(float value); extern float pseudo_log_curve(float value);
extern uint8_t selected_instance_id; extern uint8_t selected_instance_id;
extern char receive_bank_filename[FILENAME_LEN]; extern char receive_bank_filename[FILENAME_LEN];
extern uint8_t seqdata[3][16];
extern uint8_t seqsteptimer;
uint8_t activesample;
#if NUM_DRUMS > 0
#include "drums.h"
#endif
#ifdef DISPLAY_LCD_SPI #ifdef DISPLAY_LCD_SPI
extern void change_disp_sd(bool d); extern void change_disp_sd(bool d);
@ -114,6 +121,7 @@ const char accepted_chars[] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-abcdefghijk
uint8_t active_perform_page = 1; uint8_t active_perform_page = 1;
uint8_t orig_attack_values[2][7]; uint8_t orig_attack_values[2][7];
uint8_t orig_release_values[2][7]; uint8_t orig_release_values[2][7];
uint8_t active_seq_track=0;
#ifdef I2C_DISPLAY #ifdef I2C_DISPLAY
#include <LiquidCrystal_I2C.h> #include <LiquidCrystal_I2C.h>
@ -234,6 +242,7 @@ void UI_func_portamento_glissando(uint8_t param);
void UI_func_portamento_time(uint8_t param); void UI_func_portamento_time(uint8_t param);
void UI_handle_OP(uint8_t param); void UI_handle_OP(uint8_t param);
void UI_func_information(uint8_t param); void UI_func_information(uint8_t param);
void UI_func_sequencer(uint8_t param);
void UI_func_volume(uint8_t param); void UI_func_volume(uint8_t param);
void UI_func_load_performance(uint8_t param); void UI_func_load_performance(uint8_t param);
void UI_func_save_performance(uint8_t param); void UI_func_save_performance(uint8_t param);
@ -3519,6 +3528,122 @@ void UI_handle_OP(uint8_t param)
} }
} }
void UI_func_sequencer(uint8_t param)
{
String displayname = String(8);
if (LCDML.FUNC_setup()) // ****** SETUP *********
{
encoderDir[ENC_R].reset();
// setup function
lcd.setCursor(0, 0);
lcd.print(drum_config[activesample].midinote);
lcd.setCursor(11, 0);
lcd.print("[");
lcd.setCursor(12, 0);
lcd.print(active_seq_track+1);
lcd.setCursor(13, 0);
lcd.print("/3]");
// lcd.setCursor(2, 0);
// lcd.print("[" );
lcd.setCursor(0, 1);
lcd.print("----------------" );
lcd.setCursor(3, 0);
displayname=drum_config[activesample].filename;
lcd.print(displayname.substring(5,12) );
lcd.setCursor(10, 0);
// lcd.print("]" );
for(int i=0; i<16; i++) {
lcd.setCursor(i, 1);
for (uint8_t d = 0; d < NUM_DRUMCONFIG; d++)
{
if (seqdata[active_seq_track][i] == drum_config[d].midinote)
{
lcd.print(drum_config[d].shortname ); //one letter name of Category
break;
}
}
}
}
if (LCDML.FUNC_loop()) // ****** LOOP *********
{
// if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up()))
// {
// if (LCDML.BT_checkDown())
// activesample = constrain(activesample+1,0, NUM_DRUMCONFIG-1);
// else if (LCDML.BT_checkUp())
// activesample = constrain(activesample-1,0, NUM_DRUMCONFIG-1);
// }
//lcd.setCursor(0, 0);
//
//lcd.print(drum_config[activesample].midinote);
//
// lcd.setCursor(3, 0);
// displayname=drum_config[activesample].filename;
//
// lcd.print(displayname.substring(5,12) );
if ((LCDML.BT_checkDown() && encoderDir[ENC_R].Down()) || (LCDML.BT_checkUp() && encoderDir[ENC_R].Up()))
{
if (LCDML.BT_checkDown())
active_seq_track = constrain(active_seq_track+1,0, 2);
else if (LCDML.BT_checkUp())
active_seq_track = constrain(active_seq_track-1,0, 2);
}
lcd.setCursor(0, 1);
lcd.print("----------------" );
for(int i=0; i<16; i++) {
lcd.setCursor(i, 1);
for (uint8_t d = 0; d < NUM_DRUMCONFIG; d++)
{
if (seqdata[active_seq_track][i] == drum_config[d].midinote)
{
lcd.print(drum_config[d].shortname ); //one letter name of Category
break;
}
}
}
lcd.setCursor(11, 0);
lcd.print("[");
lcd.setCursor(12, 0);
lcd.print(active_seq_track+1);
lcd.setCursor(13, 0);
lcd.print("/3]");
}
if (LCDML.FUNC_close()) // ****** STABLE END *********
{
encoderDir[ENC_R].reset();
}
}
void UI_func_information(uint8_t param) void UI_func_information(uint8_t param)
{ {
if (LCDML.FUNC_setup()) // ****** SETUP ********* if (LCDML.FUNC_setup()) // ****** SETUP *********

@ -109,12 +109,13 @@ LCDML_add(75, LCDML_0_3, 5, "MIDI", NULL);
LCDML_add(76, LCDML_0_3_5, 1, "MIDI Recv Bank", UI_func_sysex_receive_bank); LCDML_add(76, LCDML_0_3_5, 1, "MIDI Recv Bank", UI_func_sysex_receive_bank);
LCDML_add(77, LCDML_0_3_5, 2, "MIDI Snd Bank", UI_func_sysex_send_bank); LCDML_add(77, LCDML_0_3_5, 2, "MIDI Snd Bank", UI_func_sysex_send_bank);
LCDML_add(78, LCDML_0_3_5, 3, "MIDI Snd Voice", UI_func_sysex_send_voice); LCDML_add(78, LCDML_0_3_5, 3, "MIDI Snd Voice", UI_func_sysex_send_voice);
LCDML_add(79, LCDML_0, 4, "System", NULL); LCDML_add(79, LCDML_0, 4, "Sequencer", UI_func_sequencer);
LCDML_add(80, LCDML_0_4, 1, "Stereo/Mono", UI_func_stereo_mono); LCDML_add(80, LCDML_0, 5, "System", NULL);
LCDML_add(81, LCDML_0_4, 2, "MIDI Soft THRU", UI_func_midi_soft_thru); LCDML_add(81, LCDML_0_5, 1, "Stereo/Mono", UI_func_stereo_mono);
LCDML_add(82, LCDML_0_4, 3, "Favorites", UI_func_favorites); LCDML_add(82, LCDML_0_5, 2, "MIDI Soft THRU", UI_func_midi_soft_thru);
LCDML_add(83, LCDML_0_4, 4, "EEPROM Reset", UI_func_eeprom_reset); LCDML_add(83, LCDML_0_5, 3, "Favorites", UI_func_favorites);
LCDML_add(84, LCDML_0, 6, "Info", UI_func_information); LCDML_add(84, LCDML_0_5, 4, "EEPROM Reset", UI_func_eeprom_reset);
LCDML_addAdvanced(85, LCDML_0, 7, COND_hide, "Volume", UI_func_volume, 0, _LCDML_TYPE_default); LCDML_add(85, LCDML_0, 6, "Info", UI_func_information);
#define _LCDML_DISP_cnt 85 LCDML_addAdvanced(86, LCDML_0, 7, COND_hide, "Volume", UI_func_volume, 0, _LCDML_TYPE_default);
#define _LCDML_DISP_cnt 86
#endif #endif

@ -112,12 +112,13 @@ LCDML_add(78, LCDML_0_3, 5, "MIDI", NULL);
LCDML_add(79, LCDML_0_3_5, 1, "MIDI Recv Bank", UI_func_sysex_receive_bank); LCDML_add(79, LCDML_0_3_5, 1, "MIDI Recv Bank", UI_func_sysex_receive_bank);
LCDML_add(80, LCDML_0_3_5, 2, "MIDI Snd Bank", UI_func_sysex_send_bank); LCDML_add(80, LCDML_0_3_5, 2, "MIDI Snd Bank", UI_func_sysex_send_bank);
LCDML_add(81, LCDML_0_3_5, 3, "MIDI Snd Voice", UI_func_sysex_send_voice); LCDML_add(81, LCDML_0_3_5, 3, "MIDI Snd Voice", UI_func_sysex_send_voice);
LCDML_add(82, LCDML_0, 4, "System", NULL); LCDML_add(82, LCDML_0, 4, "Sequencer", UI_func_sequencer);
LCDML_add(83, LCDML_0_4, 1, "Stereo/Mono", UI_func_stereo_mono); LCDML_add(83, LCDML_0, 5, "System", NULL);
LCDML_add(84, LCDML_0_4, 2, "MIDI Soft THRU", UI_func_midi_soft_thru); LCDML_add(84, LCDML_0_5, 1, "Stereo/Mono", UI_func_stereo_mono);
LCDML_add(85, LCDML_0_4, 3, "Favorites", UI_func_favorites); LCDML_add(85, LCDML_0_5, 2, "MIDI Soft THRU", UI_func_midi_soft_thru);
LCDML_add(86, LCDML_0_4, 4, "EEPROM Reset", UI_func_eeprom_reset); LCDML_add(86, LCDML_0_5, 3, "Favorites", UI_func_favorites);
LCDML_add(87, LCDML_0, 6, "Info", UI_func_information); LCDML_add(87, LCDML_0_5, 4, "EEPROM Reset", UI_func_eeprom_reset);
LCDML_addAdvanced(88, LCDML_0, 7, COND_hide, "Volume", UI_func_volume, 0, _LCDML_TYPE_default); LCDML_add(88, LCDML_0, 6, "Info", UI_func_information);
#define _LCDML_DISP_cnt 88 LCDML_addAdvanced(89, LCDML_0, 7, COND_hide, "Volume", UI_func_volume, 0, _LCDML_TYPE_default);
#define _LCDML_DISP_cnt 89
#endif #endif

@ -92,8 +92,8 @@
//************************************************************************************************* //*************************************************************************************************
#define DEBUG 1 #define DEBUG 1
#define SERIAL_SPEED 230400 #define SERIAL_SPEED 230400
#define SHOW_XRUN 1 //#define SHOW_XRUN 1
#define SHOW_CPU_LOAD_MSEC 5000 //#define SHOW_CPU_LOAD_MSEC 5000
//************************************************************************************************* //*************************************************************************************************
//* DEXED AND EFFECTS SETTINGS //* DEXED AND EFFECTS SETTINGS
@ -103,7 +103,7 @@
#warning >>> Sorry, only one instance possible for Teensy-3.6 #warning >>> Sorry, only one instance possible for Teensy-3.6
#define NUM_DEXED 1 // 1 or 2 - nothing else! #define NUM_DEXED 1 // 1 or 2 - nothing else!
#else #else
#define NUM_DEXED 2 // 1 or 2 - nothing else! #define NUM_DEXED 1 // 1 or 2 - nothing else!
#endif #endif
// FX-CHAIN ENABLE/DISABLE // FX-CHAIN ENABLE/DISABLE
@ -242,27 +242,13 @@
// Encoder with button // Encoder with button
//#define ENCODER_USE_INTERRUPTS //#define ENCODER_USE_INTERRUPTS
#define NUM_ENCODER 2 #define NUM_ENCODER 2
#define ENC_L_PIN_A 3 #define ENC_L_PIN_A 26
#define ENC_L_PIN_B 2 #define ENC_L_PIN_B 25
#define BUT_L_PIN 4 #define BUT_L_PIN 31
#if defined(TEENSY3_6)
#define ENC_R_PIN_A 28 #define ENC_R_PIN_A 29
#define ENC_R_PIN_B 29 #define ENC_R_PIN_B 28
#define BUT_R_PIN 30 #define BUT_R_PIN 32
#else
#if defined(TEENSY4_0)
#define ENC_R_PIN_A 6
#define ENC_R_PIN_B 5
#define BUT_R_PIN 8
//#define ENC_R_PIN_A 17
//#define ENC_R_PIN_B 16
//#define BUT_R_PIN 5
#else // ARDUINO_TEENSY41
#define ENC_R_PIN_A 24
#define ENC_R_PIN_B 5
#define BUT_R_PIN 9
#endif
#endif
#define BUT_DEBOUNCE_MS 20 #define BUT_DEBOUNCE_MS 20
#define LONG_BUTTON_PRESS 500 #define LONG_BUTTON_PRESS 500

Loading…
Cancel
Save