I'm new to the world of Arduino, and fascinated by the possibilities within audio and synthesis.
My first project is the "How to build a string synth"-project by Jan Östman (https://janostman.wordpress.com/how-to-build-your-very-own-string-synth/), and I've run into some problems mainly because I'm not using an 37keys keyboard with 8x5 key matrix.
I'm using an M-Audio keyboard, with 49 keys and an 8x6 keyboard matrix (with one addition, although I haven't managed to find the 49th key yet - the top C). The code from the project that I need to modify (I think), is:
//—————— Key scanner —————————–
PORTC|=0x1F;
if ((k&0x38)==(0x00<<3)) PORTC&=B11111110;
if ((k&0x38)==(0x01<<3)) PORTC&=B11111101;
if ((k&0x38)==(0x02<<3)) PORTC&=B11111011;
if ((k&0x38)==(0x03<<3)) PORTC&=B11110111;
if ((k&0x38)==(0x04<<3)) PORTC&=B11101111;
keytable[k]=digitalReadFast((k&7)+2);
if (oldkeytable[k]!=keytable[k]) { //Handle keyevent
oldkeytable[k]=keytable[k];
if (keytable[k]==0) {
handleMIDINOTE(0x90,k+21,127);
}
else {
handleMIDINOTE(0x80,k+21,0);
}
}
k++;
if (k==40) {
k=0;
}
digitalWriteFast(10,TRIG);
//—————————————————————
I assume the 5 if-statements are the "x5" in the original 8x5 matrix, and I've tried to add an additional one, without success. (if ((k&0x38)==(0x05<<3)) PORTC&=B11011111;). I also tried to change the 38 to 50, because I was thinking that 38 was referring to the 37 keys +1.
As you can tell, I'm shooting in darkness, and with only some experience with Visual Basic in Excel, I'm at a loss for modifying the key scanner to suit my keyboard.
Does anyone have any clues to point me in the right direction?
/janterje