GUI: add chan osc DC off correction strat options

off: no DC offset correction
normal: the old algorithm
high-pass: a new algorithm

also fix a hang!
This commit is contained in:
tildearrow 2025-03-17 04:07:22 -05:00
parent 30ef81779d
commit 0f4d70a34e
4 changed files with 82 additions and 53 deletions

View file

@ -790,50 +790,6 @@ void FurnaceGUI::drawSettings() {
ImGui::SetTooltip(_("may cause issues with high-polling-rate mice when previewing notes."));
}
pushWarningColor(settings.chanOscThreads>cpuCores,settings.chanOscThreads>(cpuCores*2));
if (ImGui::InputInt(_("Per-channel oscilloscope threads"),&settings.chanOscThreads)) {
if (settings.chanOscThreads<0) settings.chanOscThreads=0;
if (settings.chanOscThreads>(cpuCores*3)) settings.chanOscThreads=cpuCores*3;
if (settings.chanOscThreads>256) settings.chanOscThreads=256;
settingsChanged=true;
}
if (settings.chanOscThreads>=(cpuCores*3)) {
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_("you're being silly, aren't you? that's enough."));
}
} else if (settings.chanOscThreads>(cpuCores*2)) {
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_("what are you doing? stop!"));
}
} else if (settings.chanOscThreads>cpuCores) {
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_("it is a bad idea to set this number higher than your CPU core count (%d)!"),cpuCores);
}
}
popWarningColor();
ImGui::Text(_("Oscilloscope rendering engine:"));
ImGui::Indent();
if (ImGui::RadioButton(_("ImGui line plot"),settings.shaderOsc==0)) {
settings.shaderOsc=0;
settingsChanged=true;
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_("render using Dear ImGui's built-in line drawing functions."));
}
if (ImGui::RadioButton(_("GLSL (if available)"),settings.shaderOsc==1)) {
settings.shaderOsc=1;
settingsChanged=true;
}
if (ImGui::IsItemHovered()) {
#ifdef USE_GLES
ImGui::SetTooltip(_("render using shaders that run on the graphics card.\nonly available in OpenGL ES 2.0 render backend."));
#else
ImGui::SetTooltip(_("render using shaders that run on the graphics card.\nonly available in OpenGL 3.0 render backend."));
#endif
}
ImGui::Unindent();
#ifdef IS_MOBILE
// SUBSECTION VIBRATION
CONFIG_SUBSECTION(_("Vibration"));
@ -3843,6 +3799,50 @@ void FurnaceGUI::drawSettings() {
settingsChanged=true;
} rightClickable
pushWarningColor(settings.chanOscThreads>cpuCores,settings.chanOscThreads>(cpuCores*2));
if (ImGui::InputInt(_("Per-channel oscilloscope threads"),&settings.chanOscThreads)) {
if (settings.chanOscThreads<0) settings.chanOscThreads=0;
if (settings.chanOscThreads>(cpuCores*3)) settings.chanOscThreads=cpuCores*3;
if (settings.chanOscThreads>256) settings.chanOscThreads=256;
settingsChanged=true;
}
if (settings.chanOscThreads>=(cpuCores*3)) {
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_("you're being silly, aren't you? that's enough."));
}
} else if (settings.chanOscThreads>(cpuCores*2)) {
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_("what are you doing? stop!"));
}
} else if (settings.chanOscThreads>cpuCores) {
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_("it is a bad idea to set this number higher than your CPU core count (%d)!"),cpuCores);
}
}
popWarningColor();
ImGui::Text(_("Oscilloscope rendering engine:"));
ImGui::Indent();
if (ImGui::RadioButton(_("ImGui line plot"),settings.shaderOsc==0)) {
settings.shaderOsc=0;
settingsChanged=true;
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip(_("render using Dear ImGui's built-in line drawing functions."));
}
if (ImGui::RadioButton(_("GLSL (if available)"),settings.shaderOsc==1)) {
settings.shaderOsc=1;
settingsChanged=true;
}
if (ImGui::IsItemHovered()) {
#ifdef USE_GLES
ImGui::SetTooltip(_("render using shaders that run on the graphics card.\nonly available in OpenGL ES 2.0 render backend."));
#else
ImGui::SetTooltip(_("render using shaders that run on the graphics card.\nonly available in OpenGL 3.0 render backend."));
#endif
}
ImGui::Unindent();
// SUBSECTION SONG COMMENTS
CONFIG_SUBSECTION(_("Song Comments"));
bool songNotesWrapB=settings.songNotesWrap;