Browse Source

audio note length fixes

Jack Humbert 9 năm trước cách đây
mục cha
commit
ee2ee7f4f0
3 tập tin đã thay đổi với 33 bổ sung30 xóa
  1. 23 23
      keyboard/planck/keymaps/default/keymap.c
  2. 6 1
      quantum/audio.c
  3. 4 6
      quantum/keymap_common.c

+ 23 - 23
keyboard/planck/keymaps/default/keymap.c

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

+ 6 - 1
quantum/audio.c

@@ -255,7 +255,12 @@ ISR(TIMER3_COMPA_vect) {
 
 
         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++;
             if (current_note >= notes_length) {
                 if (notes_repeat) {

+ 4 - 6
quantum/keymap_common.c

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