Exemple #1
0
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(); 
}
Exemple #3
0
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);
}
Exemple #4
0
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);
}