summaryrefslogtreecommitdiff
path: root/quantum/process_keycode/process_clicky.c
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/process_keycode/process_clicky.c')
-rw-r--r--quantum/process_keycode/process_clicky.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/quantum/process_keycode/process_clicky.c b/quantum/process_keycode/process_clicky.c
index 6ab382d4aa..9795734984 100644
--- a/quantum/process_keycode/process_clicky.c
+++ b/quantum/process_keycode/process_clicky.c
@@ -5,40 +5,40 @@
5 5
6# ifndef AUDIO_CLICKY_DELAY_DURATION 6# ifndef AUDIO_CLICKY_DELAY_DURATION
7# define AUDIO_CLICKY_DELAY_DURATION 1 7# define AUDIO_CLICKY_DELAY_DURATION 1
8# endif // !AUDIO_CLICKY_DELAY_DURATION 8# endif // !AUDIO_CLICKY_DELAY_DURATION
9# ifndef AUDIO_CLICKY_FREQ_DEFAULT 9# ifndef AUDIO_CLICKY_FREQ_DEFAULT
10# define AUDIO_CLICKY_FREQ_DEFAULT 440.0f 10# define AUDIO_CLICKY_FREQ_DEFAULT 440.0f
11# endif // !AUDIO_CLICKY_FREQ_DEFAULT 11# endif // !AUDIO_CLICKY_FREQ_DEFAULT
12# ifndef AUDIO_CLICKY_FREQ_MIN 12# ifndef AUDIO_CLICKY_FREQ_MIN
13# define AUDIO_CLICKY_FREQ_MIN 65.0f 13# define AUDIO_CLICKY_FREQ_MIN 65.0f
14# endif // !AUDIO_CLICKY_FREQ_MIN 14# endif // !AUDIO_CLICKY_FREQ_MIN
15# ifndef AUDIO_CLICKY_FREQ_MAX 15# ifndef AUDIO_CLICKY_FREQ_MAX
16# define AUDIO_CLICKY_FREQ_MAX 1500.0f 16# define AUDIO_CLICKY_FREQ_MAX 1500.0f
17# endif // !AUDIO_CLICKY_FREQ_MAX 17# endif // !AUDIO_CLICKY_FREQ_MAX
18# ifndef AUDIO_CLICKY_FREQ_FACTOR 18# ifndef AUDIO_CLICKY_FREQ_FACTOR
19# define AUDIO_CLICKY_FREQ_FACTOR 1.18921f 19# define AUDIO_CLICKY_FREQ_FACTOR 1.18921f
20# endif // !AUDIO_CLICKY_FREQ_FACTOR 20# endif // !AUDIO_CLICKY_FREQ_FACTOR
21# ifndef AUDIO_CLICKY_FREQ_RANDOMNESS 21# ifndef AUDIO_CLICKY_FREQ_RANDOMNESS
22# define AUDIO_CLICKY_FREQ_RANDOMNESS 0.05f 22# define AUDIO_CLICKY_FREQ_RANDOMNESS 0.05f
23# endif // !AUDIO_CLICKY_FREQ_RANDOMNESS 23# endif // !AUDIO_CLICKY_FREQ_RANDOMNESS
24 24
25float clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT; 25float clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT;
26float clicky_rand = AUDIO_CLICKY_FREQ_RANDOMNESS; 26float clicky_rand = AUDIO_CLICKY_FREQ_RANDOMNESS;
27 27
28// the first "note" is an intentional delay; the 2nd and 3rd notes are the "clicky" 28// the first "note" is an intentional delay; the 2nd and 3rd notes are the "clicky"
29float clicky_song[][2] = {{AUDIO_CLICKY_FREQ_MIN, AUDIO_CLICKY_DELAY_DURATION}, {AUDIO_CLICKY_FREQ_DEFAULT, 3}, {AUDIO_CLICKY_FREQ_DEFAULT, 1}}; // 3 and 1 --> durations 29float clicky_song[][2] = {{AUDIO_CLICKY_FREQ_MIN, AUDIO_CLICKY_DELAY_DURATION}, {AUDIO_CLICKY_FREQ_DEFAULT, 3}, {AUDIO_CLICKY_FREQ_DEFAULT, 1}}; // 3 and 1 --> durations
30 30
31extern audio_config_t audio_config; 31extern audio_config_t audio_config;
32 32
33# ifndef NO_MUSIC_MODE 33# ifndef NO_MUSIC_MODE
34extern bool music_activated; 34extern bool music_activated;
35extern bool midi_activated; 35extern bool midi_activated;
36# endif // !NO_MUSIC_MODE 36# endif // !NO_MUSIC_MODE
37 37
38void clicky_play(void) { 38void clicky_play(void) {
39# ifndef NO_MUSIC_MODE 39# ifndef NO_MUSIC_MODE
40 if (music_activated || midi_activated || !audio_config.enable) return; 40 if (music_activated || midi_activated || !audio_config.enable) return;
41# endif // !NO_MUSIC_MODE 41# endif // !NO_MUSIC_MODE
42 clicky_song[1][0] = 2.0f * clicky_freq * (1.0f + clicky_rand * (((float)rand()) / ((float)(RAND_MAX)))); 42 clicky_song[1][0] = 2.0f * clicky_freq * (1.0f + clicky_rand * (((float)rand()) / ((float)(RAND_MAX))));
43 clicky_song[2][0] = clicky_freq * (1.0f + clicky_rand * (((float)rand()) / ((float)(RAND_MAX)))); 43 clicky_song[2][0] = clicky_freq * (1.0f + clicky_rand * (((float)rand()) / ((float)(RAND_MAX))));
44 PLAY_SONG(clicky_song); 44 PLAY_SONG(clicky_song);
@@ -58,7 +58,9 @@ void clicky_freq_down(void) {
58 } 58 }
59} 59}
60 60
61void clicky_freq_reset(void) { clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT; } 61void clicky_freq_reset(void) {
62 clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT;
63}
62 64
63void clicky_toggle(void) { 65void clicky_toggle(void) {
64 audio_config.clicky_enable ^= 1; 66 audio_config.clicky_enable ^= 1;
@@ -75,7 +77,9 @@ void clicky_off(void) {
75 eeconfig_update_audio(audio_config.raw); 77 eeconfig_update_audio(audio_config.raw);
76} 78}
77 79
78bool is_clicky_on(void) { return (audio_config.clicky_enable != 0); } 80bool is_clicky_on(void) {
81 return (audio_config.clicky_enable != 0);
82}
79 83
80bool process_clicky(uint16_t keycode, keyrecord_t *record) { 84bool process_clicky(uint16_t keycode, keyrecord_t *record) {
81 if (keycode == CLICKY_TOGGLE && record->event.pressed) { 85 if (keycode == CLICKY_TOGGLE && record->event.pressed) {
@@ -101,8 +105,8 @@ bool process_clicky(uint16_t keycode, keyrecord_t *record) {
101 } 105 }
102 106
103 if (audio_config.enable && audio_config.clicky_enable) { 107 if (audio_config.enable && audio_config.clicky_enable) {
104 if (record->event.pressed) { // Leave this separate so it's easier to add upstroke sound 108 if (record->event.pressed) { // Leave this separate so it's easier to add upstroke sound
105 if (keycode != AU_OFF && keycode != AU_TOG) { // DO NOT PLAY if audio will be disabled, and causes issuse on ARM 109 if (keycode != AU_OFF && keycode != AU_TOG) { // DO NOT PLAY if audio will be disabled, and causes issuse on ARM
106 clicky_play(); 110 clicky_play();
107 } 111 }
108 } 112 }
@@ -110,4 +114,4 @@ bool process_clicky(uint16_t keycode, keyrecord_t *record) {
110 return true; 114 return true;
111} 115}
112 116
113#endif // AUDIO_CLICKY 117#endif // AUDIO_CLICKY