multiple instrument playback, part 1

not implemented for MIDI yet
This commit is contained in:
tildearrow 2025-10-31 19:36:13 -05:00
parent 08a27be76f
commit 5b145b7121
15 changed files with 276 additions and 34 deletions

View file

@ -309,6 +309,14 @@ enum FurnaceGUIColors {
GUI_COLOR_MACRO_ENVELOPE,
GUI_COLOR_MACRO_GLOBAL,
GUI_COLOR_MULTI_INS_1,
GUI_COLOR_MULTI_INS_2,
GUI_COLOR_MULTI_INS_3,
GUI_COLOR_MULTI_INS_4,
GUI_COLOR_MULTI_INS_5,
GUI_COLOR_MULTI_INS_6,
GUI_COLOR_MULTI_INS_7,
GUI_COLOR_INSTR_STD,
GUI_COLOR_INSTR_FM,
GUI_COLOR_INSTR_GB,
@ -568,6 +576,7 @@ enum FurnaceGUIWindows {
GUI_WINDOW_CS_PLAYER,
GUI_WINDOW_USER_PRESETS,
GUI_WINDOW_REF_PLAYER,
GUI_WINDOW_MULTI_INS_SETUP,
GUI_WINDOW_SPOILER
};
@ -774,6 +783,7 @@ enum FurnaceGUIActions {
GUI_ACTION_WINDOW_CS_PLAYER,
GUI_ACTION_WINDOW_USER_PRESETS,
GUI_ACTION_WINDOW_REF_PLAYER,
GUI_ACTION_WINDOW_MULTI_INS_SETUP,
GUI_ACTION_COLLAPSE_WINDOW,
GUI_ACTION_CLOSE_WINDOW,
@ -2376,13 +2386,19 @@ class FurnaceGUI {
int pendingLayoutImportStep;
FixedQueue<bool*,64> pendingLayoutImportReopen;
int curIns, curWave, curSample, curOctave, curOrder, playOrder, prevIns, oldRow, editStep, editStepCoarse, soloChan, orderEditMode, orderCursor;
// do not set curIns directly! use setCurIns() instead.
int curIns, curWave, curSample;
int curOctave, curOrder, playOrder, prevIns, oldRow, editStep, editStepCoarse, soloChan, orderEditMode, orderCursor;
int isClipping, newSongCategory, latchTarget, undoOrder;
int wheelX, wheelY, dragSourceX, dragSourceXFine, dragSourceY, dragSourceOrder, dragDestinationX, dragDestinationXFine, dragDestinationY, dragDestinationOrder, oldBeat, oldBar;
int curGroove, exitDisabledTimer;
int curPaletteChoice, curPaletteType;
float soloTimeout;
int multiIns[7];
int multiInsTranspose[7];
bool mobileMultiInsToggle;
int purgeYear, purgeMonth, purgeDay;
bool patExtraButtons, patChannelNames, patChannelPairs;
@ -2395,6 +2411,7 @@ class FurnaceGUI {
bool pianoOpen, notesOpen, channelsOpen, regViewOpen, logOpen, effectListOpen, chanOscOpen;
bool subSongsOpen, findOpen, spoilerOpen, patManagerOpen, sysManagerOpen, clockOpen, speedOpen;
bool groovesOpen, xyOscOpen, memoryOpen, csPlayerOpen, cvOpen, userPresetsOpen, refPlayerOpen;
bool multiInsSetupOpen;
bool cvNotSerious;
@ -3000,6 +3017,7 @@ class FurnaceGUI {
void drawXYOsc();
void drawUserPresets();
void drawRefPlayer();
void drawMultiInsSetup();
float drawSystemChannelInfo(const DivSysDef* whichDef, int keyHitOffset=-1, float width=-1.0f);
void drawSystemChannelInfoText(const DivSysDef* whichDef);
@ -3155,6 +3173,10 @@ class FurnaceGUI {
const char* getSystemName(DivSystem which);
const char* getSystemPartNumber(DivSystem sys, DivConfig& flags);
void setCurIns(int newIns);
bool setMultiIns(int newIns);
bool isMultiInsActive();
public:
void editStr(String* which);
void showWarning(String what, FurnaceGUIWarnings type);