Select swing amount from a percentage range of the beat starting a 50% (unchanged) to a max swing amount of 95% (about 1/32nd note before end of period). Swing percentage shows an indicator marker when the percentage lines up with a quantized note on the grid. This is probably going to be the last feature because it is pushing up against the limits of available dynamic memory. Out of scope changes: - selecting parameters / values no longer wraps - reduce dynamic memory used in processClockTick - various readability formatting Reviewed-on: https://git.pinkduck.xyz/adam/libGravity/pulls/7 Co-authored-by: Adam Wonak <adam.wonak@gmail.com> Co-committed-by: Adam Wonak <adam.wonak@gmail.com>
47 lines
1021 B
C
47 lines
1021 B
C
#ifndef APP_STATE_H
|
|
#define APP_STATE_H
|
|
|
|
#include <gravity.h>
|
|
|
|
#include "channel.h"
|
|
|
|
// Global state for settings and app behavior.
|
|
struct AppState {
|
|
int tempo = Clock::DEFAULT_TEMPO;
|
|
bool encoder_reversed = false;
|
|
bool refresh_screen = true;
|
|
bool editing_param = false;
|
|
int selected_param = 0;
|
|
int selected_sub_param = 0;
|
|
byte selected_channel = 0; // 0=tempo, 1-6=output channel
|
|
byte selected_shuffle = 0;
|
|
Clock::Source selected_source = Clock::SOURCE_INTERNAL;
|
|
Channel channel[Gravity::OUTPUT_COUNT];
|
|
};
|
|
|
|
extern AppState app;
|
|
|
|
static Channel& GetSelectedChannel() {
|
|
return app.channel[app.selected_channel - 1];
|
|
}
|
|
|
|
enum ParamsMainPage {
|
|
PARAM_MAIN_TEMPO,
|
|
PARAM_MAIN_SOURCE,
|
|
PARAM_MAIN_ENCODER_DIR,
|
|
PARAM_MAIN_RESET_STATE,
|
|
PARAM_MAIN_LAST,
|
|
};
|
|
|
|
enum ParamsChannelPage {
|
|
PARAM_CH_MOD,
|
|
PARAM_CH_PROB,
|
|
PARAM_CH_DUTY,
|
|
PARAM_CH_OFFSET,
|
|
PARAM_CH_SWING,
|
|
PARAM_CH_CV_SRC,
|
|
PARAM_CH_CV_DEST,
|
|
PARAM_CH_LAST,
|
|
};
|
|
|
|
#endif // APP_STATE_H
|