fix tuner, spectrum, vertical mixer layout

This commit is contained in:
Eknous-P 2025-10-31 23:19:43 +04:00
parent 8626937f89
commit 242af1d5f8
11 changed files with 648 additions and 208 deletions

View file

@ -517,6 +517,10 @@ enum FurnaceGUIColors {
GUI_COLOR_MEMORY_BANK6,
GUI_COLOR_MEMORY_BANK7,
GUI_COLOR_TUNER_NEEDLE,
GUI_COLOR_TUNER_SCALE_LOW,
GUI_COLOR_TUNER_SCALE_HIGH,
GUI_COLOR_LOGLEVEL_ERROR,
GUI_COLOR_LOGLEVEL_WARNING,
GUI_COLOR_LOGLEVEL_INFO,
@ -552,6 +556,7 @@ enum FurnaceGUIWindows {
GUI_WINDOW_PIANO,
GUI_WINDOW_NOTES,
GUI_WINDOW_TUNER,
GUI_WINDOW_SPECTRUM,
GUI_WINDOW_CHANNELS,
GUI_WINDOW_PAT_MANAGER,
GUI_WINDOW_SYS_MANAGER,
@ -758,6 +763,7 @@ enum FurnaceGUIActions {
GUI_ACTION_WINDOW_PIANO,
GUI_ACTION_WINDOW_NOTES,
GUI_ACTION_WINDOW_TUNER,
GUI_ACTION_WINDOW_SPECTRUM,
GUI_ACTION_WINDOW_CHANNELS,
GUI_ACTION_WINDOW_PAT_MANAGER,
GUI_ACTION_WINDOW_SYS_MANAGER,
@ -2065,6 +2071,7 @@ class FurnaceGUI {
int rackShowLEDs;
int sampleImportInstDetune;
int mixerStyle;
int mixerLayout;
String mainFontPath;
String headFontPath;
String patFontPath;
@ -2319,6 +2326,7 @@ class FurnaceGUI {
rackShowLEDs(1),
sampleImportInstDetune(0),
mixerStyle(1),
mixerLayout(0),
mainFontPath(""),
headFontPath(""),
patFontPath(""),
@ -2392,7 +2400,7 @@ class FurnaceGUI {
bool editControlsOpen, ordersOpen, insListOpen, songInfoOpen, patternOpen, insEditOpen;
bool waveListOpen, waveEditOpen, sampleListOpen, sampleEditOpen, aboutOpen, settingsOpen;
bool mixerOpen, debugOpen, inspectorOpen, oscOpen, volMeterOpen, statsOpen, compatFlagsOpen;
bool pianoOpen, notesOpen, tunerOpen, channelsOpen, regViewOpen, logOpen, effectListOpen, chanOscOpen;
bool pianoOpen, notesOpen, tunerOpen, spectrumOpen, channelsOpen, regViewOpen, logOpen, effectListOpen, chanOscOpen;
bool subSongsOpen, findOpen, spoilerOpen, patManagerOpen, sysManagerOpen, clockOpen, speedOpen;
bool groovesOpen, xyOscOpen, memoryOpen, csPlayerOpen, cvOpen, userPresetsOpen;
@ -2734,8 +2742,34 @@ class FurnaceGUI {
// spectrum and tuner
double* tunerFFTInBuf;
fftw_complex* tunerFFTOutBuf;
fftw_plan spectrumPlan, tunerPlan;
int spectrumBins;
fftw_plan tunerPlan;
struct SpectrumSettings {
int bins;
float xZoom, xOffset;
float yOffset;
fftw_plan plan;
fftw_complex* buffer;
double* in;
ImVec2* plot;
std::vector<int> frequencies;
bool update, running, mono;
bool showXGrid, showYGrid, showXScale, showYScale;
SpectrumSettings():
bins(2048),
xZoom(1.0f),
xOffset(0.0f),
yOffset(0.0f),
buffer(NULL),
in(NULL),
frequencies({}),
update(true),
running(false),
mono(false),
showXGrid(true),
showYGrid(true),
showXScale(true),
showYScale(true) {}
} spectrum;
// visualizer
float keyHit[DIV_MAX_CHANS];
@ -2980,6 +3014,7 @@ class FurnaceGUI {
void drawPiano();
void drawNotes(bool asChild=false);
void drawTuner();
void drawSpectrum();
void drawChannels();
void drawPatManager();
void drawSysManager();