forked from mirrors/qmk_userspace
		
	audio note length fixes
This commit is contained in:
		
					parent
					
						
							
								bb0836c620
							
						
					
				
			
			
				commit
				
					
						ee2ee7f4f0
					
				
			
		
					 3 changed files with 33 additions and 30 deletions
				
			
		| 
						 | 
					@ -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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue