fixed octave shift buttons

This commit is contained in:
2020-04-12 19:19:11 +02:00
parent deb5a77124
commit 5d89af0220
3 changed files with 37 additions and 31 deletions
+3
View File
@@ -64,3 +64,6 @@ dkms.conf
.vscode/ipch
.vscode
*.code-workspace
# Libreoffice
.~lock.*
Binary file not shown.
+34 -31
View File
@@ -47,40 +47,41 @@ CD74HC4067 multiplexer{mux_sig, mux_addr, mux_en};
/* keyboard (IN) */
CCPotentiometer potentiometers[] = {
{multiplexer.pin(0), {1, channel}},
{multiplexer.pin(1), {2, channel}},
{multiplexer.pin(2), {3, channel}},
{multiplexer.pin(3), {4, channel}},
{multiplexer.pin(4), {5, channel}},
{multiplexer.pin(5), {6, channel}},
{multiplexer.pin(6), {7, channel}},
{multiplexer.pin(7), {8, channel}},
{multiplexer.pin(8), {9, channel}},
{multiplexer.pin(9), {10, channel}},
{multiplexer.pin(0), {1, channel}},
{multiplexer.pin(1), {2, channel}},
{multiplexer.pin(2), {3, channel}},
{multiplexer.pin(3), {4, channel}},
{multiplexer.pin(4), {5, channel}},
{multiplexer.pin(5), {6, channel}},
{multiplexer.pin(6), {7, channel}},
{multiplexer.pin(7), {8, channel}},
{multiplexer.pin(8), {9, channel}},
{multiplexer.pin(9), {10, channel}},
};
byte matrix[16][6][2] = {
/* 0 | 1 | 2 | 3 | 4 | 5 */
/*0*/ {{1, 0}, {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}},
/*1*/ {{1, 6}, {1, 7}, {1, 8}, {1, 9}, {1, 10}, {1, 11}},
/*2*/ {{1, 18}, {1, 19}, {1, 20}, {1, 21}, {1, 22}, {1, 23}},
/*3*/ {{1, 48}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*4*/ {{1, 42}, {1, 43}, {1, 44}, {1, 45}, {1, 46}, {1, 47}},
/*5*/ {{1, 36}, {1, 37}, {1, 38}, {1, 39}, {1, 40}, {1, 41}},
/*6*/ {{1, 30}, {1, 31}, {1, 32}, {1, 33}, {1, 34}, {1, 35}},
/*7*/ {{1, 24}, {1, 25}, {1, 26}, {1, 27}, {1, 28}, {1, 29}},
/*8*/ {{1, 12}, {1, 13}, {1, 14}, {1, 15}, {1, 16}, {1, 17}},
/*a*/ {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*b*/ {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*c*/ {{2, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*d*/ {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*e*/ {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*f*/ {{2, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/* 0 | 1 | 2 | 3 | 4 | 5 */
/*0*/ {{1, 0}, {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}},
/*1*/ {{1, 6}, {1, 7}, {1, 8}, {1, 9}, {1, 10}, {1, 11}},
/*2*/ {{1, 18}, {1, 19}, {1, 20}, {1, 21}, {1, 22}, {1, 23}},
/*3*/ {{1, 48}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*4*/ {{1, 42}, {1, 43}, {1, 44}, {1, 45}, {1, 46}, {1, 47}},
/*5*/ {{1, 36}, {1, 37}, {1, 38}, {1, 39}, {1, 40}, {1, 41}},
/*6*/ {{1, 30}, {1, 31}, {1, 32}, {1, 33}, {1, 34}, {1, 35}},
/*7*/ {{1, 24}, {1, 25}, {1, 26}, {1, 27}, {1, 28}, {1, 29}},
/*8*/ {{1, 12}, {1, 13}, {1, 14}, {1, 15}, {1, 16}, {1, 17}},
/*9*/ {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*a*/ {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*b*/ {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*c*/ {{2, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*d*/ {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*e*/ {{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
/*f*/ {{2, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}},
};
bool ref[16][6] = {{false}};
unsigned char shift = 0;
unsigned char shift = 12;
void setup() {
for (size_t i = 0; i < KEYBOARD_INSIZE; ++i) {
@@ -128,13 +129,16 @@ void button_matrix_mgt(void) {
#ifndef DEBUG_MATRIX
byte type = matrix[i][j][0];
byte key = matrix[i][j][1];
#ifdef __PLATFORMIO_BUILD_DEBUG__
midi.sendNoteOn({type, CHANNEL_3}, key);
#endif /* __PLATFORMIO_BUILD_DEBUG__ */
if (type == 1) {
midi.sendNoteOn({key + shift, channel}, NOTE_VELOCITY);
} else if (type == 2) {
// todo : note off
// todo : note off
if (key == 0 && shift >= 12) {
shift -= 12;
} else if (key == 1 && shift <= 0xFF - 47 - 12) {
} else if (key == 1 && shift <= 6 * 12) {
shift += 12;
}
}
@@ -164,8 +168,7 @@ void capa_sensor_mgt(void) {
int static lasttouched;
int currtouched = capa_sensor.touched();
for (uint8_t i = 0; i < 12; i++)
{
for (uint8_t i = 0; i < 12; i++) {
// it if *is* touched and *wasnt* touched before, alert!
if ((currtouched & _BV(i)) && !(lasttouched & _BV(i))) {
midi.sendCC({i, channel}, ON);