Add X-Y Oscilloscope
This commit is contained in:
parent
fbbe0bdf63
commit
e702e56901
6 changed files with 295 additions and 1 deletions
|
|
@ -3430,6 +3430,7 @@ bool FurnaceGUI::loop() {
|
|||
DECLARE_METRIC(readOsc)
|
||||
DECLARE_METRIC(osc)
|
||||
DECLARE_METRIC(chanOsc)
|
||||
DECLARE_METRIC(xyOsc)
|
||||
DECLARE_METRIC(volMeter)
|
||||
DECLARE_METRIC(settings)
|
||||
DECLARE_METRIC(debug)
|
||||
|
|
@ -4425,6 +4426,7 @@ bool FurnaceGUI::loop() {
|
|||
if (ImGui::MenuItem("piano/input pad",BIND_FOR(GUI_ACTION_WINDOW_PIANO),pianoOpen)) pianoOpen=!pianoOpen;
|
||||
if (ImGui::MenuItem("oscilloscope (master)",BIND_FOR(GUI_ACTION_WINDOW_OSCILLOSCOPE),oscOpen)) oscOpen=!oscOpen;
|
||||
if (ImGui::MenuItem("oscilloscope (per-channel)",BIND_FOR(GUI_ACTION_WINDOW_CHAN_OSC),chanOscOpen)) chanOscOpen=!chanOscOpen;
|
||||
if (ImGui::MenuItem("oscilloscope (X-Y)",BIND_FOR(GUI_ACTION_WINDOW_XY_OSC),xyOscOpen)) xyOscOpen=!xyOscOpen;
|
||||
if (ImGui::MenuItem("volume meter",BIND_FOR(GUI_ACTION_WINDOW_VOL_METER),volMeterOpen)) volMeterOpen=!volMeterOpen;
|
||||
if (ImGui::MenuItem("clock",BIND_FOR(GUI_ACTION_WINDOW_CLOCK),clockOpen)) clockOpen=!clockOpen;
|
||||
if (ImGui::MenuItem("register view",BIND_FOR(GUI_ACTION_WINDOW_REGISTER_VIEW),regViewOpen)) regViewOpen=!regViewOpen;
|
||||
|
|
@ -4645,6 +4647,7 @@ bool FurnaceGUI::loop() {
|
|||
MEASURE(readOsc,readOsc());
|
||||
MEASURE(osc,drawOsc());
|
||||
MEASURE(chanOsc,drawChanOsc());
|
||||
MEASURE(xyOsc,drawXYOsc());
|
||||
MEASURE(grooves,drawGrooves());
|
||||
MEASURE(regView,drawRegView());
|
||||
} else {
|
||||
|
|
@ -4674,6 +4677,7 @@ bool FurnaceGUI::loop() {
|
|||
|
||||
MEASURE(osc,drawOsc());
|
||||
MEASURE(chanOsc,drawChanOsc());
|
||||
MEASURE(xyOsc,drawXYOsc());
|
||||
MEASURE(volMeter,drawVolMeter());
|
||||
MEASURE(settings,drawSettings());
|
||||
MEASURE(debug,drawDebug());
|
||||
|
|
@ -6413,6 +6417,7 @@ bool FurnaceGUI::init() {
|
|||
mixerOpen=e->getConfBool("mixerOpen",false);
|
||||
oscOpen=e->getConfBool("oscOpen",true);
|
||||
chanOscOpen=e->getConfBool("chanOscOpen",false);
|
||||
xyOscOpen=e->getConfBool("xyOscOpen",false);
|
||||
volMeterOpen=e->getConfBool("volMeterOpen",true);
|
||||
statsOpen=e->getConfBool("statsOpen",false);
|
||||
compatFlagsOpen=e->getConfBool("compatFlagsOpen",false);
|
||||
|
|
@ -6521,6 +6526,16 @@ bool FurnaceGUI::init() {
|
|||
chanOscGrad.fromString(e->getConfString("chanOscGrad",""));
|
||||
chanOscGrad.render();
|
||||
|
||||
xyOscXChannel=e->getConfInt("xyOscXChannel",0);
|
||||
xyOscXInvert=e->getConfBool("xyOscXInvert",false);
|
||||
xyOscYChannel=e->getConfInt("xyOscYChannel",1);
|
||||
xyOscYInvert=e->getConfBool("xyOscYInvert",false);
|
||||
xyOscZoom=e->getConfFloat("xyOscZoom",1.0f);
|
||||
xyOscSamples=e->getConfInt("xyOscSamples",32768);
|
||||
xyOscDecayTime=e->getConfFloat("xyOscDecayTime",10.0f);
|
||||
xyOscIntensity=e->getConfFloat("xyOscIntensity",2.0f);
|
||||
xyOscThickness=e->getConfFloat("xyOscThickness",2.0f);
|
||||
|
||||
syncSettings();
|
||||
syncTutorial();
|
||||
|
||||
|
|
@ -6968,6 +6983,7 @@ void FurnaceGUI::commitState() {
|
|||
e->setConf("mixerOpen",mixerOpen);
|
||||
e->setConf("oscOpen",oscOpen);
|
||||
e->setConf("chanOscOpen",chanOscOpen);
|
||||
e->setConf("xyOscOpen",xyOscOpen);
|
||||
e->setConf("volMeterOpen",volMeterOpen);
|
||||
e->setConf("statsOpen",statsOpen);
|
||||
e->setConf("compatFlagsOpen",compatFlagsOpen);
|
||||
|
|
@ -7062,6 +7078,17 @@ void FurnaceGUI::commitState() {
|
|||
e->setConf("chanOscUseGrad",chanOscUseGrad);
|
||||
e->setConf("chanOscGrad",chanOscGrad.toString());
|
||||
|
||||
// commit x-y osc state
|
||||
e->setConf("xyOscXChannel",xyOscXChannel);
|
||||
e->setConf("xyOscXInvert",xyOscXInvert);
|
||||
e->setConf("xyOscYChannel",xyOscYChannel);
|
||||
e->setConf("xyOscYInvert",xyOscYInvert);
|
||||
e->setConf("xyOscZoom",xyOscZoom);
|
||||
e->setConf("xyOscSamples",xyOscSamples);
|
||||
e->setConf("xyOscDecayTime",xyOscDecayTime);
|
||||
e->setConf("xyOscIntensity",xyOscIntensity);
|
||||
e->setConf("xyOscThickness",xyOscThickness);
|
||||
|
||||
// commit recent files
|
||||
for (int i=0; i<30; i++) {
|
||||
String key=fmt::sprintf("recentFile%d",i);
|
||||
|
|
@ -7301,6 +7328,7 @@ FurnaceGUI::FurnaceGUI():
|
|||
clockOpen(false),
|
||||
speedOpen(true),
|
||||
groovesOpen(false),
|
||||
xyOscOpen(false),
|
||||
basicMode(true),
|
||||
shortIntro(false),
|
||||
insListDir(false),
|
||||
|
|
@ -7541,6 +7569,17 @@ FurnaceGUI::FurnaceGUI():
|
|||
chanOscGrad(64,64),
|
||||
chanOscGradTex(NULL),
|
||||
chanOscWorkPool(NULL),
|
||||
xyOscPointTex(NULL),
|
||||
xyOscOptions(false),
|
||||
xyOscXChannel(0),
|
||||
xyOscXInvert(false),
|
||||
xyOscYChannel(1),
|
||||
xyOscYInvert(false),
|
||||
xyOscZoom(1.0f),
|
||||
xyOscSamples(32768),
|
||||
xyOscDecayTime(10.0f),
|
||||
xyOscIntensity(2.0f),
|
||||
xyOscThickness(2.0f),
|
||||
followLog(true),
|
||||
#ifdef IS_MOBILE
|
||||
pianoOctaves(7),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue