audio note length fixes

This commit is contained in:
Jack Humbert 2016-04-15 13:44:07 -04:00
parent bb0836c620
commit ee2ee7f4f0
3 changed files with 33 additions and 30 deletions

View File

@ -147,30 +147,30 @@ const uint16_t PROGMEM fn_actions[] = {
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
float tone_qw[][2] = { float tone_qw[][2] = {
{440.0*pow(2.0,(67)/12.0), 400}, {440.0*pow(2.0,(59)/12.0), 8},
{440.0*pow(2.0,(60)/12.0), 400}, {440.0*pow(2.0,(60)/12.0), 8},
{0, 800}, {0, 4},
{440.0*pow(2.0,(67)/12.0), 1600} {440.0*pow(2.0,(67)/12.0), 16}
}; };
float tone_cm[][2] = { float tone_cm[][2] = {
{440.0*pow(2.0,(67)/12.0), 400}, {440.0*pow(2.0,(59)/12.0), 8},
{440.0*pow(2.0,(60)/12.0), 400}, {440.0*pow(2.0,(60)/12.0), 8},
{0, 800}, {0, 4},
{440.0*pow(2.0,(67)/12.0), 1000}, {440.0*pow(2.0,(67)/12.0), 16},
{0, 200}, {0, 4},
{440.0*pow(2.0,(67)/12.0), 1000} {440.0*pow(2.0,(71)/12.0), 16}
}; };
float tone_dv[][2] = { float tone_dv[][2] = {
{440.0*pow(2.0,(67)/12.0), 400}, {440.0*pow(2.0,(59)/12.0), 8},
{440.0*pow(2.0,(60)/12.0), 400}, {440.0*pow(2.0,(60)/12.0), 8},
{0, 800}, {0, 4},
{440.0*pow(2.0,(67)/12.0), 800}, {440.0*pow(2.0,(67)/12.0), 16},
{0, 200}, {0, 4},
{440.0*pow(2.0,(67)/12.0), 800}, {440.0*pow(2.0,(69)/12.0), 16},
{0, 200}, {0, 4},
{440.0*pow(2.0,(67)/12.0), 800} {440.0*pow(2.0,(67)/12.0), 16}
}; };
#endif #endif
@ -246,11 +246,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
float start_up[][2] = { float start_up[][2] = {
{440.0*pow(2.0,(67)/12.0), 650}, {440.0*pow(2.0,(67)/12.0), 12},
{440.0*pow(2.0,(64)/12.0), 450}, {440.0*pow(2.0,(64)/12.0), 8},
{440.0*pow(2.0,(55)/12.0), 450}, {440.0*pow(2.0,(55)/12.0), 8},
{440.0*pow(2.0,(60)/12.0), 450}, {440.0*pow(2.0,(60)/12.0), 8},
{440.0*pow(2.0,(64)/12.0), 1000} {440.0*pow(2.0,(64)/12.0), 20}
}; };
#endif #endif

View File

@ -255,7 +255,12 @@ ISR(TIMER3_COMPA_vect) {
note_position++; note_position++;
if (note_position >= note_length) { bool end_of_note = false;
if (ICR3 > 0)
end_of_note = (note_position >= (note_length / ICR3 * 0xFFFF));
else
end_of_note = (note_position >= (note_length * 0x7FF));
if (end_of_note) {
current_note++; current_note++;
if (current_note >= notes_length) { if (current_note >= notes_length) {
if (notes_repeat) { if (notes_repeat) {

View File

@ -33,11 +33,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "audio.h" #include "audio.h"
float goodbye[][2] = { float goodbye[][2] = {
{440.0*pow(2.0,(67)/12.0), 400}, {440.0*pow(2.0,(67)/12.0), 8},
{0, 50}, {440.0*pow(2.0,(60)/12.0), 8},
{440.0*pow(2.0,(60)/12.0), 400}, {440.0*pow(2.0,(55)/12.0), 12},
{0, 50},
{440.0*pow(2.0,(55)/12.0), 600},
}; };
#endif #endif
@ -90,7 +88,7 @@ action_t action_for_key(uint8_t layer, keypos_t key)
action_t action; action_t action;
clear_keyboard(); clear_keyboard();
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
play_notes(&goodbye, 5, false); play_notes(&goodbye, 3, false);
#endif #endif
_delay_ms(250); _delay_ms(250);
#ifdef ATREUS_ASTAR #ifdef ATREUS_ASTAR