~ruther/qmk_firmware

44625de59a72e69d4bf2948dfc04cc283664a292 — Jack Humbert 10 years ago ed384bd
beeps in an if
3 files changed, 45 insertions(+), 57 deletions(-)

M keyboard/planck/beeps.c
M keyboard/planck/keymap_midi.c
M protocol/lufa/lufa.c
M keyboard/planck/beeps.c => keyboard/planck/beeps.c +23 -39
@@ 183,22 183,6 @@ ISR(TIMER3_COMPA_vect) {
//     // PORTC |= (1<<6);
}

void loop() {
}
// ISR(TIMER1_COMPA_vect)
// {
//     // if (i<(sizeof(wave)/sizeof(int))) //don't exceed ends of vector... sizeof(wave)
//     if (i<pow(2, 10)) //don't exceed ends of vector... sizeof(wave)
//     {
//         OCR3A = (int)((float)wave[i]*ICR3/RANGE); //go to next array element
//         // int x = 1;
//         // int y = 5;
//         // OCR3A = (int) (round(sin(i*440*pow(2, x/12.0))*.5+.5 + sin(i*440*pow(2, y/12.0))*.5+.5) / 2 * ICR3); 
//         i++; //increment
//     }
//     else i=0; //reset
// }

void play_note(double freq, int vol) {

    if (freq > 0) {


@@ 236,27 220,27 @@ void play_note(double freq, int vol) {
    // TCCR3B = 0;
}

void note(int x, float length) {
    DDRC |= (1<<6);
	int t = (int)(440*pow(2,-x/12.0)); // starting note
    for (int y = 0; y < length*1000/t; y++) { // note length
        PORTC |= (1<<6);
        delay_us(t);
        PORTC &= ~(1<<6);
        delay_us(t);
    }
	PORTC &= ~(1<<6);
}
// void note(int x, float length) {
//     DDRC |= (1<<6);
// 	int t = (int)(440*pow(2,-x/12.0)); // starting note
//     for (int y = 0; y < length*1000/t; y++) { // note length
//         PORTC |= (1<<6);
//         delay_us(t);
//         PORTC &= ~(1<<6);
//         delay_us(t);
//     }
// 	PORTC &= ~(1<<6);
// }

void true_note(float x, float y, float length) {
	for (uint32_t i = 0; i < length * 50; i++) {
		uint32_t v = (uint32_t) (round(sin(PI*2*i*640000*pow(2, x/12.0))*.5+1 + sin(PI*2*i*640000*pow(2, y/12.0))*.5+1) / 2 * pow(2, 8)); 
		for (int u = 0; u < 8; u++) {
			if (v & (1 << u) && !(PORTC&(1<<6)))
		        PORTC |= (1<<6);
		    else if (PORTC&(1<<6))
	        	PORTC &= ~(1<<6);
		}
	}
	PORTC &= ~(1<<6);
}
\ No newline at end of file
// void true_note(float x, float y, float length) {
// 	for (uint32_t i = 0; i < length * 50; i++) {
// 		uint32_t v = (uint32_t) (round(sin(PI*2*i*640000*pow(2, x/12.0))*.5+1 + sin(PI*2*i*640000*pow(2, y/12.0))*.5+1) / 2 * pow(2, 8)); 
// 		for (int u = 0; u < 8; u++) {
// 			if (v & (1 << u) && !(PORTC&(1<<6)))
// 		        PORTC |= (1<<6);
// 		    else if (PORTC&(1<<6))
// 	        	PORTC &= ~(1<<6);
// 		}
// 	}
// 	PORTC &= ~(1<<6);
// }
\ No newline at end of file

M keyboard/planck/keymap_midi.c => keyboard/planck/keymap_midi.c +20 -18
@@ 35,7 35,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
    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.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
            // play_note(((double)261.6)*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);


@@ 43,7 43,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
            midi_send_cc(&midi_device, 4, 0x7B, 0);
            return;
        } else {
            stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)));
            // stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)));
            // stop_all_notes();
            return;
        }


@@ 51,7 51,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
    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.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
            // play_note(((double)261.6)*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);


@@ 59,7 59,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
            midi_send_cc(&midi_device, 4, 0x7B, 0);
            return;
        } else {
            stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)));
            // stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)));
            // stop_all_notes();
            return;
        }


@@ 73,12 73,12 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
        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.6)*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.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)));
            _delay_us(8000);
        }
        // for (int i = 0; i <= 7; i++) {
        //     play_note(((double)261.6)*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.6)*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) {


@@ 89,20 89,22 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
        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.6)*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.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)));
            _delay_us(8000);
        }
        // for (int i = 0; i <= 7; i++) {
        //     play_note(((double)261.6)*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.6)*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) {
    	// midi_send_noteon(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
        play_note(((double)261.6)*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);
        midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
        // play_note(((double)261.6)*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 {
        // midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
        stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
        midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
        // stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
    }
}
\ No newline at end of file

M protocol/lufa/lufa.c => protocol/lufa/lufa.c +2 -0
@@ 51,7 51,9 @@

#include "descriptor.h"
#include "lufa.h"
#ifdef MIDI_ENABLE
#include <beeps.h>
#endif

// #include <LUFA/Version.h>
// #include <LUFA/Drivers/USB/USB.h>