コード例 #1
0
ファイル: rove_file.c プロジェクト: killerisation/rove
static void file_monome_out(rove_file_t *self, rove_monome_t *monome) {
    rove_monome_position_t pos;
    unsigned int row[2] = {0, 0};
    uint16_t r;

    calculate_monome_pos(self->file_length * self->channels, rove_file_get_play_pos(self), self->row_span, (self->columns) ? self->columns : monome->cols, &pos);

    if( MONOME_POS_CMP(&pos, &self->monome_pos_old) || self->force_monome_update ) {
        if( self->force_monome_update ) {
            if( !self->group->active_loop )
                monome_led_off(self->mapped_monome->dev, self->group->idx, 0);
            else
                monome_led_on(self->mapped_monome->dev, self->group->idx, 0);

            monome->dirty_field &= ~(1 << self->y);
            self->force_monome_update = 0;
        }

        if( pos.y != self->monome_pos_old.y )
            monome_led_row_16(monome->dev, self->y + self->monome_pos_old.y, row);

        MONOME_POS_CPY(&self->monome_pos_old, &pos);

        if( rove_file_is_active(self) ) {
            r      = 1 << pos.x;
            row[0] = r & 0x00FF;
            row[1] = r >> 8;
        }

        monome_led_row_16(monome->dev, self->y + pos.y, row);
    }

    MONOME_POS_CPY(&self->monome_pos, &pos);
}
コード例 #2
0
ファイル: loop.c プロジェクト: kellydunn/mumble
// TODO nomenclature is rather bad here, lets rename this to better fit the api direction
void loop_playback_midi_event(const monome_event_t * e, void * user_data) {
  // TODO Refactor with play_midi in dispatch_functions.c
  
  unsigned char * midi_data;

  //midi_data = (unsigned char *) midi_data_from_monome_event(midi_data, e, user_data);
  int midi_note_message_len = 3;
  midi_data = (unsigned char *) calloc(midi_note_message_len, sizeof(unsigned char));

  int event_x, event_y, event_type;
  mumble_t *mumble = (mumble_t *) user_data;

  event_x = e->grid.x;
  event_y = e->grid.y;
  event_type = e->event_type;  

  int midi_note = ((mumble->root * (event_y + 1)) + event_x);  
  midi_data[1] = midi_note;
  midi_data[2] = mumble->velocity;  

  if(e->event_type == MONOME_BUTTON_DOWN) {
    midi_data[0] = MIDI_NOTE_ON;
    monome_led_on(e->monome, e->grid.x, e->grid.y);
  } else {
    midi_data[0] = MIDI_NOTE_OFF;
    monome_led_off(e->monome, e->grid.x, e->grid.y);
  }  
  
  mumble_write_to_midi_device(mumble, midi_data);
}
コード例 #3
0
ファイル: simple.c プロジェクト: tituarte/libmonome
/**
 * this function gets registered with monome_register_handler
 * it gets called whenever a button is pressed
 */
void handle_press(const monome_event_t *e, void *data) {
	uint x, y;

	x = e->x;
	y = e->y;

	if( grid[x][y] )
		monome_led_off(e->monome, x, y);
	else
		monome_led_on(e->monome, x, y);

	/* toggle the button */
	grid[x][y] = !grid[x][y];
}