static void display_pattern(void) { for (uint8_t i = 0; i < 16; i++) { if (sequencer_pattern.notes[current_channel][i].length != 0) button_led_on(i); else button_led_off(i); } }
void programmer(void) /* Handles the front panel functions when at the top level The whole thing is basically a large loop going through the array of possible button presses and combinations. */ { static int8_t patchno = 0; // Display the selected patch number leds_7seg_two_digit_set(3, 4, patchno); int8_t last_patchno = patchno; // Handle UP and DOWN presses ui_updown(&patchno, PATCH_MIN, PATCH_MAX); if (state == STATE_SAVE) { patch_save(patchno); state = STATE_TOPLEVEL; } else if (patchno != last_patchno) patch_load(patchno); if (button_pressed(BTN_SAVE)) { ui_getvalue_session.button1 = BTN_SAVE; ui_getvalue_session.button2 = 0xFF; ui_getvalue_session.parameter.target = &patchno; ui_getvalue_session.parameter.type = RANGE; ui_getvalue_session.parameter.min = PATCH_MIN; ui_getvalue_session.parameter.max = PATCH_MAX; mode |= MODE_GETVALUE; state = STATE_SAVE; return; } sq1.enabled ? button_led_on(BTN_SQ1) : button_led_off(BTN_SQ1); sq2.enabled ? button_led_on(BTN_SQ2) : button_led_off(BTN_SQ2); tri.enabled ? button_led_on(BTN_TRI) : button_led_off(BTN_TRI); noise.enabled ? button_led_on(BTN_NOISE) : button_led_off(BTN_NOISE); dmc.enabled ? button_led_on(BTN_DMC) : button_led_off(BTN_DMC); toplevel_handler(); }
static void play_pattern(void) { for (uint8_t i = 0; i < 16; i++) button_led_off(i); leds_7seg_two_digit_set(3, 4, sequencer_tempo_count); ui_updown((int8_t*)&sequencer_tempo_count, 1, 99); if (button_pressed(BTN_PLAY)) { sequencer_stop(); state = STATE_TOPLEVEL; } else button_led_on(sequencer_cur_position); }
void ui_handler(void) /* Top level user interface handler. Checks whether one of the mode buttons have been pressed, and transfers control to the corresponding function. */ { // If a transfer is going on, simply use the 16 upper buttons as a progress // bar if (mode & MODE_TRANSFER) button_leds[midi_transfer_progress] = 0xFF; else if (mode & MODE_GETVALUE) ui_getvalue_handler(); else { if (button_pressed(BTN_PROGRAM)) { mode = MODE_PROGRAM; button_leds = programmer_leds; } else if (button_pressed(BTN_PATTERN)) { mode = MODE_PATTERN; button_leds = sequencer_leds; } else if (button_pressed(BTN_TRACK)) { mode = MODE_TRACK; //button_leds = track_leds; } else if (button_pressed(BTN_SETTINGS)) { mode = MODE_SETTINGS; button_leds = settings_leds; } switch (mode) { case MODE_PROGRAM: button_led_on(BTN_PROGRAM); programmer(); break; case MODE_PATTERN: //sequencer(); button_led_on(BTN_PATTERN); break; case MODE_TRACK: button_led_on(BTN_TRACK); break; // not implemented yet! case MODE_SETTINGS: settings(); button_led_on(BTN_SETTINGS); break; } // Todo: abstract away this ... if (button_on(BTN_SHIFT)) button_led_on(BTN_SHIFT); else button_led_off(BTN_SHIFT); } // Save current button states prev_input[0] = input[0]; prev_input[1] = input[1]; prev_input[2] = input[2]; //last_mode = mode; }
void program7_sample_started(int sample) { button_led_on(programState); }