aboutsummaryrefslogtreecommitdiff
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.c72
1 files changed, 50 insertions, 22 deletions
diff --git a/quantum/process_keycode/process_clicky.c b/quantum/process_keycode/process_clicky.c
index 1e950d111..8238c263f 100644
--- a/quantum/process_keycode/process_clicky.c
+++ b/quantum/process_keycode/process_clicky.c
@@ -3,11 +3,6 @@
3 3
4#ifdef AUDIO_CLICKY 4#ifdef AUDIO_CLICKY
5 5
6#ifdef AUDIO_CLICKY_ON
7bool clicky_enable = true;
8#else // AUDIO_CLICKY_ON
9bool clicky_enable = false;
10#endif // AUDIO_CLICKY_ON
11#ifndef AUDIO_CLICKY_FREQ_DEFAULT 6#ifndef AUDIO_CLICKY_FREQ_DEFAULT
12#define AUDIO_CLICKY_FREQ_DEFAULT 440.0f 7#define AUDIO_CLICKY_FREQ_DEFAULT 440.0f
13#endif // !AUDIO_CLICKY_FREQ_DEFAULT 8#endif // !AUDIO_CLICKY_FREQ_DEFAULT
@@ -25,8 +20,11 @@ bool clicky_enable = false;
25#endif // !AUDIO_CLICKY_FREQ_RANDOMNESS 20#endif // !AUDIO_CLICKY_FREQ_RANDOMNESS
26 21
27float clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT; 22float clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT;
23float clicky_rand = AUDIO_CLICKY_FREQ_RANDOMNESS;
28float clicky_song[][2] = {{AUDIO_CLICKY_FREQ_DEFAULT, 3}, {AUDIO_CLICKY_FREQ_DEFAULT, 1}}; // 3 and 1 --> durations 24float clicky_song[][2] = {{AUDIO_CLICKY_FREQ_DEFAULT, 3}, {AUDIO_CLICKY_FREQ_DEFAULT, 1}}; // 3 and 1 --> durations
29 25
26extern audio_config_t audio_config;
27
30#ifndef NO_MUSIC_MODE 28#ifndef NO_MUSIC_MODE
31extern bool music_activated; 29extern bool music_activated;
32extern bool midi_activated; 30extern bool midi_activated;
@@ -36,31 +34,61 @@ void clicky_play(void) {
36#ifndef NO_MUSIC_MODE 34#ifndef NO_MUSIC_MODE
37 if (music_activated || midi_activated) return; 35 if (music_activated || midi_activated) return;
38#endif // !NO_MUSIC_MODE 36#endif // !NO_MUSIC_MODE
39 clicky_song[0][0] = 2.0f * clicky_freq * (1.0f + AUDIO_CLICKY_FREQ_RANDOMNESS * ( ((float)rand()) / ((float)(RAND_MAX)) ) ); 37 clicky_song[0][0] = 2.0f * clicky_freq * (1.0f + clicky_rand * ( ((float)rand()) / ((float)(RAND_MAX)) ) );
40 clicky_song[1][0] = clicky_freq * (1.0f + AUDIO_CLICKY_FREQ_RANDOMNESS * ( ((float)rand()) / ((float)(RAND_MAX)) ) ); 38 clicky_song[1][0] = clicky_freq * (1.0f + clicky_rand * ( ((float)rand()) / ((float)(RAND_MAX)) ) );
41 PLAY_SONG(clicky_song); 39 PLAY_SONG(clicky_song);
42} 40}
43 41
42void clicky_freq_up(void) {
43 float new_freq = clicky_freq * AUDIO_CLICKY_FREQ_FACTOR;
44 if (new_freq < AUDIO_CLICKY_FREQ_MAX) {
45 clicky_freq = new_freq;
46 }
47}
48
49void clicky_freq_down(void) {
50 float new_freq = clicky_freq / AUDIO_CLICKY_FREQ_FACTOR;
51 if (new_freq > AUDIO_CLICKY_FREQ_MIN) {
52 clicky_freq = new_freq;
53 }
54}
55
56void clicky_freq_reset(void) {
57 clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT;
58}
59
60void clicky_toggle(void) {
61 audio_config.clicky_enable ^= 1;
62 eeconfig_update_audio(audio_config.raw);
63}
64
65void clicky_on(void) {
66 audio_config.clicky_enable = 1;
67 eeconfig_update_audio(audio_config.raw);
68}
69
70void clicky_off(void) {
71 audio_config.clicky_enable = 0;
72 eeconfig_update_audio(audio_config.raw);
73}
74
75bool is_clicky_on(void) {
76 return (audio_config.clicky_enable != 0);
77}
78
44bool process_clicky(uint16_t keycode, keyrecord_t *record) { 79bool process_clicky(uint16_t keycode, keyrecord_t *record) {
45 if (keycode == CLICKY_TOGGLE && record->event.pressed) { clicky_enable = !clicky_enable; } 80 if (keycode == CLICKY_TOGGLE && record->event.pressed) { clicky_toggle(); }
46 81
47 if (keycode == CLICKY_RESET && record->event.pressed) { clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT; } 82 if (keycode == CLICKY_ENABLE && record->event.pressed) { clicky_on(); }
83 if (keycode == CLICKY_DISABLE && record->event.pressed) { clicky_off(); }
48 84
49 if (keycode == CLICKY_UP && record->event.pressed) { 85 if (keycode == CLICKY_RESET && record->event.pressed) { clicky_freq_reset(); }
50 float new_freq = clicky_freq * AUDIO_CLICKY_FREQ_FACTOR; 86
51 if (new_freq < AUDIO_CLICKY_FREQ_MAX) { 87 if (keycode == CLICKY_UP && record->event.pressed) { clicky_freq_up(); }
52 clicky_freq = new_freq; 88 if (keycode == CLICKY_DOWN && record->event.pressed) { clicky_freq_down(); }
53 }
54 }
55 if (keycode == CLICKY_DOWN && record->event.pressed) {
56 float new_freq = clicky_freq / AUDIO_CLICKY_FREQ_FACTOR;
57 if (new_freq > AUDIO_CLICKY_FREQ_MIN) {
58 clicky_freq = new_freq;
59 }
60 }
61 89
62 90
63 if ( clicky_enable ) { 91 if ( audio_config.clicky_enable ) {
64 if (record->event.pressed) { 92 if (record->event.pressed) {
65 clicky_play();; 93 clicky_play();;
66 } 94 }