remove unneccesary headers
parent
92ccc9a7b8
commit
f407f3e8de
|
@ -1,12 +1,23 @@
|
||||||
|
|
||||||
## Audio output from a speaker
|
## Audio output from a speaker
|
||||||
|
|
||||||
Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any keyboard that allows access to the C6 or B5 port (`#define C6_AUDIO` and `#define B5_AUDIO`), you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
|
Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any keyboard that allows access to the C6 or B5 port (`#define C6_AUDIO` and/or `#define B5_AUDIO`), you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
|
||||||
|
|
||||||
The audio code lives in [quantum/audio/audio.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/audio.h) and in the other files in the audio directory. It's enabled by default on the Planck [stock keymap](https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/default/keymap.c). Here are the important bits:
|
If you add this to your `rules.mk`:
|
||||||
|
|
||||||
```
|
```
|
||||||
#include "audio.h"
|
AUDIO_ENABLE = yes
|
||||||
|
```
|
||||||
|
|
||||||
|
there's a couple different sounds that will automatically be enabled without any other configuration:
|
||||||
|
|
||||||
|
|
||||||
|
If you want to implement something custom, you can
|
||||||
|
|
||||||
|
```
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
#include "audio.h"
|
||||||
|
#endif
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, lower down the file:
|
Then, lower down the file:
|
||||||
|
@ -41,14 +52,11 @@ Wherein we bind predefined songs (from [quantum/audio/song_list.h](https://githu
|
||||||
So now you have something called `tone_plover` for example. How do you make it play the Plover tune, then? If you look further down the keymap, you'll see this:
|
So now you have something called `tone_plover` for example. How do you make it play the Plover tune, then? If you look further down the keymap, you'll see this:
|
||||||
|
|
||||||
```
|
```
|
||||||
PLAY_NOTE_ARRAY(tone_plover, false, LEGATO); // song name, repeat, rest style
|
PLAY_SONG(tone_plover); // song name
|
||||||
PLAY_SONG(tone_plover); // song name (repeat is false, rest is STACCATO)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
This is inside one of the macros. So when that macro executes, your keyboard plays that particular chime.
|
This is inside one of the macros. So when that macro executes, your keyboard plays that particular chime.
|
||||||
|
|
||||||
"Rest style" in the method signature above (the last parameter) specifies if there's a rest (a moment of silence) between the notes.
|
|
||||||
|
|
||||||
## Music mode
|
## Music mode
|
||||||
|
|
||||||
The music mode maps your columns to a chromatic scale, and your rows to octaves. This works best with ortholinear keyboards, but can be made to work with others. All keycodes less than `0xFF` get blocked, so you won't type while playing notes - if you have special keys/mods, those will still work. A work-around for this is to jump to a different layer with KC_NOs before (or after) enabling music mode.
|
The music mode maps your columns to a chromatic scale, and your rows to octaves. This works best with ortholinear keyboards, but can be made to work with others. All keycodes less than `0xFF` get blocked, so you won't type while playing notes - if you have special keys/mods, those will still work. A work-around for this is to jump to a different layer with KC_NOs before (or after) enabling music mode.
|
||||||
|
|
|
@ -16,10 +16,6 @@
|
||||||
|
|
||||||
#include "planck.h"
|
#include "planck.h"
|
||||||
#include "action_layer.h"
|
#include "action_layer.h"
|
||||||
#include "eeconfig.h"
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
#include "audio.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern keymap_config_t keymap_config;
|
extern keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
|
|
@ -16,10 +16,6 @@
|
||||||
|
|
||||||
#include "preonic.h"
|
#include "preonic.h"
|
||||||
#include "action_layer.h"
|
#include "action_layer.h"
|
||||||
#include "eeconfig.h"
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
#include "audio.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
enum preonic_layers {
|
enum preonic_layers {
|
||||||
_QWERTY,
|
_QWERTY,
|
||||||
|
|
|
@ -555,7 +555,10 @@ ISR(TIMER1_COMPA_vect)
|
||||||
note_position++;
|
note_position++;
|
||||||
bool end_of_note = false;
|
bool end_of_note = false;
|
||||||
if (TIMER_1_PERIOD > 0) {
|
if (TIMER_1_PERIOD > 0) {
|
||||||
|
if (!note_resting)
|
||||||
end_of_note = (note_position >= (note_length / TIMER_1_PERIOD * 0xFFFF - 1));
|
end_of_note = (note_position >= (note_length / TIMER_1_PERIOD * 0xFFFF - 1));
|
||||||
|
else
|
||||||
|
end_of_note = (note_position >= (note_length));
|
||||||
} else {
|
} else {
|
||||||
end_of_note = (note_position >= (note_length));
|
end_of_note = (note_position >= (note_length));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue