@ -19,11 +19,15 @@ void leader_end(void) {}
# ifdef AUDIO_ENABLE
uint8_t starting_note = 0x0C ;
int offset = 0 ;
int offset = 7 ;
bool music_activated = false ;
float music_scale [ ] [ 2 ] = SONG ( MUSIC_SCALE_SOUND ) ;
# endif
# ifdef MIDI_ENABLE
bool midi_activated = false ;
# endif
// Leader key stuff
bool leading = false ;
uint16_t leader_time = 0 ;
@ -98,6 +102,82 @@ bool process_record_quantum(keyrecord_t *record) {
// return false;
// }
# ifdef MIDI_ENABLE
if ( keycode = = MI_ON & & record - > event . pressed ) {
midi_activated = true ;
PLAY_NOTE_ARRAY ( music_scale , false , 0 ) ;
return false ;
}
if ( keycode = = MI_OFF & & record - > event . pressed ) {
midi_activated = false ;
midi_send_cc ( & midi_device , 0 , 0x7B , 0 ) ;
return false ;
}
if ( midi_activated ) {
if ( record - > event . key . col = = ( MATRIX_COLS - 1 ) & & record - > event . key . row = = ( MATRIX_ROWS - 1 ) ) {
if ( record - > event . pressed ) {
starting_note + + ; // Change key
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 false ;
}
if ( record - > event . key . col = = ( MATRIX_COLS - 2 ) & & record - > event . key . row = = ( MATRIX_ROWS - 1 ) ) {
if ( record - > event . pressed ) {
starting_note - - ; // Change key
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 false ;
}
if ( record - > event . key . col = = ( MATRIX_COLS - 3 ) & & record - > event . key . row = = ( MATRIX_ROWS - 1 ) & & record - > event . pressed ) {
offset + + ; // Change scale
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 false ;
}
if ( record - > event . key . col = = ( MATRIX_COLS - 4 ) & & record - > event . key . row = = ( MATRIX_ROWS - 1 ) & & record - > event . pressed ) {
offset - - ; // Change scale
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 false ;
}
// basic
// uint8_t note = (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row);
// advanced
// uint8_t note = (starting_note + record->event.key.col + offset)+12*(MATRIX_ROWS - record->event.key.row);
// guitar
uint8_t note = ( starting_note + record - > event . key . col + offset ) + 5 * ( MATRIX_ROWS - record - > event . key . row ) ;
// violin
// uint8_t note = (starting_note + record->event.key.col + offset)+7*(MATRIX_ROWS - record->event.key.row);
if ( record - > event . pressed ) {
// midi_send_noteon(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
midi_send_noteon ( & midi_device , 0 , note , 127 ) ;
} else {
// midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
midi_send_noteoff ( & midi_device , 0 , note , 127 ) ;
}
if ( keycode < 0xFF ) // ignores all normal keycodes, but lets RAISE, LOWER, etc through
return false ;
}
# endif
# ifdef AUDIO_ENABLE
if ( keycode = = AU_ON & & record - > event . pressed ) {
audio_on ( ) ;
@ -169,7 +249,7 @@ bool process_record_quantum(keyrecord_t *record) {
return false ;
}
float freq = ( ( float ) 220.0 ) * pow ( 2.0 , - 4 .0) * pow ( 2.0 , ( starting_note + SCALE [ record - > event . key . col + offset ] ) / 12.0 + ( MATRIX_ROWS - record - > event . key . row ) ) ;
float freq = ( ( float ) 220.0 ) * pow ( 2.0 , - 5 .0) * pow ( 2.0 , ( starting_note + SCALE [ record - > event . key . col + offset ] ) / 12.0 + ( MATRIX_ROWS - record - > event . key . row ) ) ;
if ( record - > event . pressed ) {
play_note ( freq , 0xF ) ;
if ( music_sequence_recording ) {
@ -185,8 +265,6 @@ bool process_record_quantum(keyrecord_t *record) {
}
# endif
# ifndef DISABLE_LEADER
// Leader key set-up
if ( record - > event . pressed ) {
@ -267,6 +345,6 @@ void matrix_scan_quantum() {
}
# endif
matrix_scan_kb ( ) ;
}