123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #include "keymap_common.h"
- #include "keymap_midi.h"
- uint8_t starting_note = 0x0C;
- int offset = 7;
- void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
- {
- if (id != 0) {
- if (record->event.pressed) {
- midi_send_noteon(&midi_device, opt, (id & 0xFF), 127);
- } else {
- midi_send_noteoff(&midi_device, opt, (id & 0xFF), 127);
- }
- }
- if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) {
- if (record->event.pressed) {
- starting_note++;
- play_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
- midi_send_cc(&midi_device, 0, 0x7B, 0);
- midi_send_cc(&midi_device, 1, 0x7B, 0);
- midi_send_cc(&midi_device, 2, 0x7B, 0);
- midi_send_cc(&midi_device, 3, 0x7B, 0);
- midi_send_cc(&midi_device, 4, 0x7B, 0);
- return;
- } else {
- stop_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)));
- stop_all_notes();
- return;
- }
- }
- if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) {
- if (record->event.pressed) {
- starting_note--;
- play_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
- midi_send_cc(&midi_device, 0, 0x7B, 0);
- midi_send_cc(&midi_device, 1, 0x7B, 0);
- midi_send_cc(&midi_device, 2, 0x7B, 0);
- midi_send_cc(&midi_device, 3, 0x7B, 0);
- midi_send_cc(&midi_device, 4, 0x7B, 0);
- return;
- } else {
- stop_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)));
- stop_all_notes();
- return;
- }
- }
- if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
- offset++;
- midi_send_cc(&midi_device, 0, 0x7B, 0);
- midi_send_cc(&midi_device, 1, 0x7B, 0);
- midi_send_cc(&midi_device, 2, 0x7B, 0);
- midi_send_cc(&midi_device, 3, 0x7B, 0);
- midi_send_cc(&midi_device, 4, 0x7B, 0);
- stop_all_notes();
- for (int i = 0; i <= 7; i++) {
- play_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
- _delay_us(80000);
- stop_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)));
- _delay_us(8000);
- }
- return;
- }
- if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
- offset--;
- midi_send_cc(&midi_device, 0, 0x7B, 0);
- midi_send_cc(&midi_device, 1, 0x7B, 0);
- midi_send_cc(&midi_device, 2, 0x7B, 0);
- midi_send_cc(&midi_device, 3, 0x7B, 0);
- midi_send_cc(&midi_device, 4, 0x7B, 0);
- stop_all_notes();
- for (int i = 0; i <= 7; i++) {
- play_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
- _delay_us(80000);
- stop_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)));
- _delay_us(8000);
- }
- return;
- }
- if (record->event.pressed) {
-
-
- play_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
- } else {
-
-
- stop_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
- }
- }
|