mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-01 02:22:39 +00:00
ccc2467d7b
one more step and then we have FM macros
163 lines
4.5 KiB
C++
163 lines
4.5 KiB
C++
#ifndef _MACROINT_H
|
|
#define _MACROINT_H
|
|
|
|
#include "instrument.h"
|
|
|
|
class DivMacroInt {
|
|
DivInstrument* ins;
|
|
int volPos, arpPos, dutyPos, wavePos, pitchPos, ex1Pos, ex2Pos, ex3Pos;
|
|
int algPos, fbPos, fmsPos, amsPos;
|
|
public:
|
|
int vol;
|
|
int arp;
|
|
int duty, wave, pitch, ex1, ex2, ex3;
|
|
int alg, fb, fms, ams;
|
|
bool hasVol, hasArp, hasDuty, hasWave, hasPitch, hasEx1, hasEx2, hasEx3, hasAlg, hasFb, hasFms, hasAms;
|
|
bool hadVol, hadArp, hadDuty, hadWave, hadPitch, hadEx1, hadEx2, hadEx3, hadAlg, hadFb, hadFms, hadAms;
|
|
bool finishedVol, finishedArp, finishedDuty, finishedWave, finishedPitch, finishedEx1, finishedEx2, finishedEx3;
|
|
bool finishedAlg, finishedFb, finishedFms, finishedAms;
|
|
bool willVol, willArp, willDuty, willWave, willPitch, willEx1, willEx2, willEx3, willAlg, willFb, willFms, willAms;
|
|
bool arpMode;
|
|
struct IntOp {
|
|
int amPos, arPos, drPos, multPos;
|
|
int rrPos, slPos, tlPos, dt2Pos;
|
|
int rsPos, dtPos, d2rPos, ssgPos;
|
|
|
|
int am, ar, dr, mult;
|
|
int rr, sl, tl, dt2;
|
|
int rs, dt, d2r, ssg;
|
|
|
|
bool hasAm, hasAr, hasDr, hasMult;
|
|
bool hasRr, hasSl, hasTl, hasDt2;
|
|
bool hasRs, hasDt, hasD2r, hasSsg;
|
|
|
|
bool hadAm, hadAr, hadDr, hadMult;
|
|
bool hadRr, hadSl, hadTl, hadDt2;
|
|
bool hadRs, hadDt, hadD2r, hadSsg;
|
|
|
|
bool finishedAm, finishedAr, finishedDr, finishedMult;
|
|
bool finishedRr, finishedSl, finishedTl, finishedDt2;
|
|
bool finishedRs, finishedDt, finishedD2r, finishedSsg;
|
|
|
|
bool willAm, willAr, willDr, willMult;
|
|
bool willRr, willSl, willTl, willDt2;
|
|
bool willRs, willDt, willD2r, willSsg;
|
|
IntOp():
|
|
amPos(0),
|
|
arPos(0),
|
|
drPos(0),
|
|
multPos(0),
|
|
rrPos(0),
|
|
slPos(0),
|
|
tlPos(0),
|
|
dt2Pos(0),
|
|
rsPos(0),
|
|
dtPos(0),
|
|
d2rPos(0),
|
|
ssgPos(0),
|
|
am(0),
|
|
ar(0),
|
|
dr(0),
|
|
mult(0),
|
|
rr(0),
|
|
sl(0),
|
|
tl(0),
|
|
dt2(0),
|
|
rs(0),
|
|
dt(0),
|
|
d2r(0),
|
|
ssg(0),
|
|
hasAm(false), hasAr(false), hasDr(false), hasMult(false),
|
|
hasRr(false), hasSl(false), hasTl(false), hasDt2(false),
|
|
hasRs(false), hasDt(false), hasD2r(false), hasSsg(false),
|
|
hadAm(false), hadAr(false), hadDr(false), hadMult(false),
|
|
hadRr(false), hadSl(false), hadTl(false), hadDt2(false),
|
|
hadRs(false), hadDt(false), hadD2r(false), hadSsg(false),
|
|
finishedAm(false), finishedAr(false), finishedDr(false), finishedMult(false),
|
|
finishedRr(false), finishedSl(false), finishedTl(false), finishedDt2(false),
|
|
finishedRs(false), finishedDt(false), finishedD2r(false), finishedSsg(false),
|
|
willAm(false), willAr(false), willDr(false), willMult(false),
|
|
willRr(false), willSl(false), willTl(false), willDt2(false),
|
|
willRs(false), willDt(false), willD2r(false), willSsg(false) {}
|
|
} op[4];
|
|
void next();
|
|
void init(DivInstrument* which);
|
|
void notifyInsDeletion(DivInstrument* which);
|
|
DivMacroInt():
|
|
ins(NULL),
|
|
volPos(0),
|
|
arpPos(0),
|
|
dutyPos(0),
|
|
wavePos(0),
|
|
pitchPos(0),
|
|
ex1Pos(0),
|
|
ex2Pos(0),
|
|
ex3Pos(0),
|
|
algPos(0),
|
|
fbPos(0),
|
|
fmsPos(0),
|
|
amsPos(0),
|
|
vol(0),
|
|
arp(0),
|
|
duty(0),
|
|
wave(0),
|
|
pitch(0),
|
|
ex1(0),
|
|
ex2(0),
|
|
ex3(0),
|
|
alg(0),
|
|
fb(0),
|
|
fms(0),
|
|
ams(0),
|
|
hasVol(false),
|
|
hasArp(false),
|
|
hasDuty(false),
|
|
hasWave(false),
|
|
hasPitch(false),
|
|
hasEx1(false),
|
|
hasEx2(false),
|
|
hasEx3(false),
|
|
hasAlg(false),
|
|
hasFb(false),
|
|
hasFms(false),
|
|
hasAms(false),
|
|
hadVol(false),
|
|
hadArp(false),
|
|
hadDuty(false),
|
|
hadWave(false),
|
|
hadPitch(false),
|
|
hadEx1(false),
|
|
hadEx2(false),
|
|
hadEx3(false),
|
|
hadAlg(false),
|
|
hadFb(false),
|
|
hadFms(false),
|
|
hadAms(false),
|
|
finishedVol(false),
|
|
finishedArp(false),
|
|
finishedDuty(false),
|
|
finishedWave(false),
|
|
finishedPitch(false),
|
|
finishedEx1(false),
|
|
finishedEx2(false),
|
|
finishedEx3(false),
|
|
finishedAlg(false),
|
|
finishedFb(false),
|
|
finishedFms(false),
|
|
finishedAms(false),
|
|
willVol(false),
|
|
willArp(false),
|
|
willDuty(false),
|
|
willWave(false),
|
|
willPitch(false),
|
|
willEx1(false),
|
|
willEx2(false),
|
|
willEx3(false),
|
|
willAlg(false),
|
|
willFb(false),
|
|
willFms(false),
|
|
willAms(false),
|
|
arpMode(false) {}
|
|
};
|
|
|
|
#endif
|