diff options
| author | Jack Humbert <[email protected]> | 2017-04-03 21:06:40 -0400 | 
|---|---|---|
| committer | GitHub <[email protected]> | 2017-04-03 21:06:40 -0400 | 
| commit | 27aa185222b709dc53a1478e46d6e04271dc199c (patch) | |
| tree | fd6311aa6fb2b10fc01d2562e819817d798668b2 /quantum/process_keycode/process_audio.c | |
| parent | 4e51c1e3ca75c9abe45673866d026cc0f810a410 (diff) | |
| parent | 3ac9259742bfd428f71c31dbf2bfedace2a7f91b (diff) | |
| download | qmk_firmware-27aa185222b709dc53a1478e46d6e04271dc199c.tar.gz qmk_firmware-27aa185222b709dc53a1478e46d6e04271dc199c.zip | |
Merge branch 'master' into master
Diffstat (limited to 'quantum/process_keycode/process_audio.c')
| -rw-r--r-- | quantum/process_keycode/process_audio.c | 62 | 
1 files changed, 62 insertions, 0 deletions
| diff --git a/quantum/process_keycode/process_audio.c b/quantum/process_keycode/process_audio.c new file mode 100644 index 0000000000..0b6380ed39 --- /dev/null +++ b/quantum/process_keycode/process_audio.c @@ -0,0 +1,62 @@ +#include "audio.h" +#include "process_audio.h" + +static float compute_freq_for_midi_note(uint8_t note) +{ +    // https://en.wikipedia.org/wiki/MIDI_tuning_standard +    return pow(2.0, (note - 69) / 12.0) * 440.0f; +} + +bool process_audio(uint16_t keycode, keyrecord_t *record) { + +    if (keycode == AU_ON && record->event.pressed) { +      audio_on(); +      return false; +    } + +    if (keycode == AU_OFF && record->event.pressed) { +      audio_off(); +      return false; +    } + +    if (keycode == AU_TOG && record->event.pressed) { +        if (is_audio_on()) +        { +            audio_off(); +        } +        else +        { +            audio_on(); +        } +        return false; +    } + +    if (keycode == MUV_IN && record->event.pressed) { +        voice_iterate(); +        music_scale_user(); +        return false; +    } + +    if (keycode == MUV_DE && record->event.pressed) { +        voice_deiterate(); +        music_scale_user(); +        return false; +    } + +    return true; +} + +void process_audio_noteon(uint8_t note) { +    play_note(compute_freq_for_midi_note(note), 0xF); +} + +void process_audio_noteoff(uint8_t note) { +    stop_note(compute_freq_for_midi_note(note)); +} + +void process_audio_all_notes_off(void) { +    stop_all_notes(); +} + +__attribute__ ((weak)) +void audio_on_user() {}
\ No newline at end of file | 
