keyboard stuff
Sequencer#
Since QMK has experimental support for MIDI, you can now turn your keyboard into a step sequencer!
::: warning This feature is highly experimental, it has only been tested on a Planck EZ so far. Also, the scope will be limited to support the drum machine use-case to start with. :::
Enable the step sequencer#
Add the following line to your rules.mk:
SEQUENCER_ENABLE = yes
By default the sequencer has 16 steps, but you can override this setting in your config.h:
#define SEQUENCER_STEPS 32
Tracks#
You can program up to 8 independent tracks with the step sequencer. Select the tracks you want to edit, enable or disable some steps, and start the sequence!
Resolutions#
While the tempo defines the absolute speed at which the sequencer goes through the steps, the resolution defines the granularity of these steps (from coarser to finer).
| Resolution | Description |
|---|---|
SQ_RES_2 |
Every other beat |
SQ_RES_2T |
Every 1.5 beats |
SQ_RES_4 |
Every beat |
SQ_RES_4T |
Three times per 2 beats |
SQ_RES_8 |
Twice per beat |
SQ_RES_8T |
Three times per beat |
SQ_RES_16 |
Four times per beat |
SQ_RES_16T |
Six times per beat |
SQ_RES_32 |
Eight times per beat |
Keycodes#
| Key | Aliases | Description |
|---|---|---|
QK_SEQUENCER_ON |
SQ_ON |
Start the step sequencer |
QK_SEQUENCER_OFF |
SQ_OFF |
Stop the step sequencer |
QK_SEQUENCER_TOGGLE |
SQ_TOGG |
Toggle the step sequencer playback |
QK_SEQUENCER_STEPS_ALL |
SQ_SALL |
Enable all the steps |
QK_SEQUENCER_STEPS_CLEAR |
SQ_SCLR |
Disable all the steps |
QK_SEQUENCER_TEMPO_DOWN |
SQ_TMPD |
Decrease the tempo |
QK_SEQUENCER_TEMPO_UP |
SQ_TMPU |
Increase the tempo |
QK_SEQUENCER_RESOLUTION_DOWN |
SQ_RESD |
Change to the slower resolution |
QK_SEQUENCER_RESOLUTION_UP |
SQ_RESU |
Change to the faster resolution |
SQ_S(n) |
Toggle the step n |
|
SQ_R(n) |
Set the resolution to n | |
SQ_T(n) |
Set n as the only active track or deactivate all |
Functions#
| Function | Description |
|---|---|
bool is_sequencer_on(void); |
Return whether the sequencer is playing |
void sequencer_toggle(void); |
Toggle the step sequencer playback |
void sequencer_on(void); |
Start the step sequencer |
void sequencer_off(void); |
Stop the step sequencer |
bool is_sequencer_step_on(uint8_t step); |
Return whether the step is currently enabled |
void sequencer_set_step(uint8_t step, bool value); |
Enable or disable the step |
void sequencer_set_step_on(); |
Enable the step |
void sequencer_set_step_off(); |
Disable the step |
void sequencer_toggle_step(uint8_t step); |
Toggle the step |
void sequencer_set_all_steps(bool value); |
Enable or disable all the steps |
void sequencer_set_all_steps_on(); |
Enable all the steps |
void sequencer_set_all_steps_off(); |
Disable all the steps |
uint8_t sequencer_get_tempo(void); |
Return the current tempo |
void sequencer_set_tempo(uint8_t tempo); |
Set the tempo to tempo (between 1 and 255) |
void sequencer_increase_tempo(void); |
Increase the tempo |
void sequencer_decrease_tempo(void); |
Decrease the tempo |
sequencer_resolution_t sequencer_get_resolution(void); |
Return the current resolution |
void sequencer_set_resolution(sequencer_resolution_t resolution); |
Set the resolution to resolution |
void sequencer_increase_resolution(void); |
Change to the faster resolution |
void sequencer_decrease_resolution(void); |
Change to the slower resolution |
bool is_sequencer_track_active(uint8_t track); |
Return whether the track is active |
void sequencer_set_track_activation(uint8_t track, bool value); |
Activate or deactivate the track |
void sequencer_toggle_track_activation(uint8_t track); |
Toggle the track |
void sequencer_activate_track(uint8_t track); |
Activate the track |
void sequencer_deactivate_track(uint8_t track); |
Deactivate the track |
void sequencer_toggle_single_active_track(uint8_t track); |
Set track as the only active track or deactivate all |