Harmonizer refactoring

Removed code duplication by using structs and functions.
This commit is contained in:
Mikael Degerfält 2021-07-14 18:40:34 +02:00
parent c8bd07799a
commit b5b6d890c0
4 changed files with 187 additions and 289 deletions

View file

@ -28,17 +28,27 @@
#define ECH 30
#define QTN 31
#define HOF 0
#define MGR 1
#define MGD 2
#define MA9 3
#define MND 4
#define MNA 5
#define MNH 6
#define FWC 7
#define RT1 8
#define RT2 9
#define RT3 10
struct Rotator
{
uint16_t parallel; // Semitones
uint16_t rotations[4];
};
enum EPolySelect : unsigned short {
HarmonizerOff = 0,
TriadMajorGospelRoot = 1, // MGR
TriadMajorGospelDominant = 2, // MGD
MajorAddNine = 3,
MinorDorian = 4,
MinorAeolian = 5,
MinorFourVoiceHip = 6,
FourWayCloseHarmonizer = 7,
RotatorA = 8,
RotatorB = 9,
RotatorC = 10,
} ;
#define MOD 13
@ -106,7 +116,7 @@ extern unsigned short harmSetting; // 0-7
extern unsigned short harmSelect; // 0-5
extern unsigned short brHarmSetting; // 0-7
extern unsigned short brHarmSelect; // 0-3
extern unsigned short polySelect; // OFF, MGR, MGD, MND, MNH, FWC, RTA, RTB or RTC
extern EPolySelect polySelect; // OFF, MGR, MGD, MND, MNH, FWC, RTA, RTB or RTC
extern unsigned short fwcType; // 6, m6, 7, m7
extern unsigned short fwcLockH; // OFF:ON
extern unsigned short fwcDrop2; // OFF:ON
@ -125,12 +135,10 @@ extern uint16_t gateOpenEnable;
extern uint16_t specialKeyEnable;
extern byte rotatorOn;
extern byte currentRotation;
extern uint16_t rotations[4];
extern uint16_t parallel; // semitones
extern uint16_t rotationsb[4];
extern uint16_t parallelb; // semitones
extern uint16_t rotationsc[4];
extern uint16_t parallelc; // semitones
extern Rotator rotations_a;
extern Rotator rotations_b;
extern Rotator rotations_c;
extern uint16_t bcasMode; //Legacy CASSIDY compile flag
extern uint16_t trill3_interval;