beeps in an if

This commit is contained in:
Jack Humbert 2015-09-06 18:57:23 -04:00
parent ed384bd437
commit 44625de59a
3 changed files with 45 additions and 57 deletions

View File

@ -183,22 +183,6 @@ ISR(TIMER3_COMPA_vect) {
// // PORTC |= (1<<6); // // 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) { void play_note(double freq, int vol) {
if (freq > 0) { if (freq > 0) {
@ -236,27 +220,27 @@ void play_note(double freq, int vol) {
// TCCR3B = 0; // TCCR3B = 0;
} }
void note(int x, float length) { // void note(int x, float length) {
DDRC |= (1<<6); // DDRC |= (1<<6);
int t = (int)(440*pow(2,-x/12.0)); // starting note // int t = (int)(440*pow(2,-x/12.0)); // starting note
for (int y = 0; y < length*1000/t; y++) { // note length // for (int y = 0; y < length*1000/t; y++) { // note length
PORTC |= (1<<6); // PORTC |= (1<<6);
delay_us(t); // delay_us(t);
PORTC &= ~(1<<6); // PORTC &= ~(1<<6);
delay_us(t); // delay_us(t);
} // }
PORTC &= ~(1<<6); // PORTC &= ~(1<<6);
} // }
void true_note(float x, float y, float length) { // void true_note(float x, float y, float length) {
for (uint32_t i = 0; i < length * 50; i++) { // 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)); // 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++) { // for (int u = 0; u < 8; u++) {
if (v & (1 << u) && !(PORTC&(1<<6))) // if (v & (1 << u) && !(PORTC&(1<<6)))
PORTC |= (1<<6); // PORTC |= (1<<6);
else if (PORTC&(1<<6)) // else if (PORTC&(1<<6))
PORTC &= ~(1<<6); // PORTC &= ~(1<<6);
} // }
} // }
PORTC &= ~(1<<6); // PORTC &= ~(1<<6);
} // }

View File

@ -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.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) {
if (record->event.pressed) { if (record->event.pressed) {
starting_note++; 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, 0, 0x7B, 0);
midi_send_cc(&midi_device, 1, 0x7B, 0); midi_send_cc(&midi_device, 1, 0x7B, 0);
midi_send_cc(&midi_device, 2, 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); midi_send_cc(&midi_device, 4, 0x7B, 0);
return; return;
} else { } 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(); // stop_all_notes();
return; 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.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) {
if (record->event.pressed) { if (record->event.pressed) {
starting_note--; 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, 0, 0x7B, 0);
midi_send_cc(&midi_device, 1, 0x7B, 0); midi_send_cc(&midi_device, 1, 0x7B, 0);
midi_send_cc(&midi_device, 2, 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); midi_send_cc(&midi_device, 4, 0x7B, 0);
return; return;
} else { } 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(); // stop_all_notes();
return; 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, 3, 0x7B, 0);
midi_send_cc(&midi_device, 4, 0x7B, 0); midi_send_cc(&midi_device, 4, 0x7B, 0);
// stop_all_notes(); // stop_all_notes();
for (int i = 0; i <= 7; i++) { // 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); // 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); // _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))); // 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); // _delay_us(8000);
} // }
return; return;
} }
if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { 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, 3, 0x7B, 0);
midi_send_cc(&midi_device, 4, 0x7B, 0); midi_send_cc(&midi_device, 4, 0x7B, 0);
// stop_all_notes(); // stop_all_notes();
for (int i = 0; i <= 7; i++) { // 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); // 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); // _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))); // 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); // _delay_us(8000);
} // }
return; return;
} }
if (record->event.pressed) { 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, 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 { } else {
// midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127); // 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)));
} }
} }

View File

@ -51,7 +51,9 @@
#include "descriptor.h" #include "descriptor.h"
#include "lufa.h" #include "lufa.h"
#ifdef MIDI_ENABLE
#include <beeps.h> #include <beeps.h>
#endif
// #include <LUFA/Version.h> // #include <LUFA/Version.h>
// #include <LUFA/Drivers/USB/USB.h> // #include <LUFA/Drivers/USB/USB.h>