90 lines
2.1 KiB
C
90 lines
2.1 KiB
C
#ifndef SHARED_STATE_H
|
|
#define SHARED_STATE_H
|
|
|
|
#include "TrackerTypes.h"
|
|
#include "MelodyStrategy.h"
|
|
#include "config.h"
|
|
|
|
// Global state variables defined in main .ino
|
|
extern Step sequence[NUM_TRACKS][NUM_STEPS];
|
|
extern Step nextSequence[NUM_TRACKS][NUM_STEPS];
|
|
extern volatile bool sequenceChangeScheduled;
|
|
extern volatile bool needsPanic;
|
|
|
|
extern UIState currentState;
|
|
|
|
// Menus
|
|
enum MenuItemID {
|
|
MENU_ID_GROUP_MAIN,
|
|
MENU_ID_MELODY,
|
|
MENU_ID_SCALE,
|
|
MENU_ID_TEMPO,
|
|
MENU_ID_SONG_MODE,
|
|
|
|
MENU_ID_GROUP_TRACK,
|
|
MENU_ID_TRACK_SELECT,
|
|
MENU_ID_MUTE,
|
|
MENU_ID_FLAVOUR,
|
|
MENU_ID_MUTATION,
|
|
MENU_ID_THEME_1,
|
|
MENU_ID_THEME_2,
|
|
MENU_ID_THEME_3,
|
|
MENU_ID_THEME_4,
|
|
MENU_ID_THEME_5,
|
|
MENU_ID_THEME_6,
|
|
MENU_ID_THEME_7,
|
|
|
|
MENU_ID_GROUP_SETUP,
|
|
MENU_ID_CHANNEL,
|
|
MENU_ID_RESET
|
|
};
|
|
|
|
struct MenuItem {
|
|
const char* label;
|
|
MenuItemID id;
|
|
bool isGroup;
|
|
bool expanded;
|
|
int indentLevel;
|
|
};
|
|
|
|
extern MenuItem menuItems[];
|
|
extern const int menuItemsCount;
|
|
bool isItemVisible(int index);
|
|
|
|
extern int menuSelection;
|
|
extern volatile bool trackMute[NUM_TRACKS];
|
|
extern int randomizeTrack;
|
|
extern volatile int playbackStep;
|
|
extern volatile int midiChannels[NUM_TRACKS];
|
|
extern int scaleNotes[12];
|
|
extern int numScaleNotes;
|
|
extern int melodySeeds[NUM_TRACKS];
|
|
extern volatile int queuedTheme;
|
|
extern volatile int currentThemeIndex;
|
|
extern const uint32_t EEPROM_MAGIC;
|
|
|
|
extern MelodyStrategy* strategies[];
|
|
extern const int numStrategies;
|
|
extern int currentStrategyIndices[NUM_TRACKS];
|
|
|
|
extern volatile PlayMode playMode;
|
|
extern volatile bool mutationEnabled;
|
|
extern volatile bool songModeEnabled;
|
|
extern volatile int songRepeatsRemaining;
|
|
extern volatile int nextSongRepeats;
|
|
extern volatile bool songModeNeedsNext;
|
|
extern volatile bool isPlaying;
|
|
extern volatile int tempo;
|
|
extern volatile unsigned long lastClockTime;
|
|
extern volatile int clockCount;
|
|
|
|
// Input state
|
|
extern volatile int encoderDelta;
|
|
extern bool lastButtonState;
|
|
extern unsigned long lastDebounceTime;
|
|
extern bool buttonActive;
|
|
extern bool buttonConsumed;
|
|
extern unsigned long buttonPressTime;
|
|
|
|
#endif
|