diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index c85504773..2670f1ad9 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -8731,6 +8731,7 @@ FurnaceGUI::FurnaceGUI(): sampleFilterRes(0.25f), sampleFilterCutStart(16000.0f), sampleFilterCutEnd(100.0f), + sampleFilterSweep(true), sampleCrossFadeLoopLength(0), sampleCrossFadeLoopLaw(50), sampleFilterPower(1), diff --git a/src/gui/gui.h b/src/gui/gui.h index a4f9a4e25..114f1c7ee 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -2570,6 +2570,7 @@ class FurnaceGUI { ImVec2 sampleDragAreaSize; unsigned int sampleDragLen; float sampleFilterL, sampleFilterB, sampleFilterH, sampleFilterRes, sampleFilterCutStart, sampleFilterCutEnd; + bool sampleFilterSweep; int sampleCrossFadeLoopLength, sampleCrossFadeLoopLaw; unsigned char sampleFilterPower; short* sampleClipboard; diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index dcd61db60..c97e816e9 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -1191,15 +1191,28 @@ void FurnaceGUI::drawSampleEdit() { float bandP=sampleFilterB*100.0f; float highP=sampleFilterH*100.0f; float resP=sampleFilterRes*100.0f; + float minCutoff=10.0f; + float maxCutoff=sample->centerRate*0.5f; ImGui::Text(_("Cutoff:")); - if (ImGui::InputFloat(_("From"),&sampleFilterCutStart,10.0f,1000.0f,"%.0f")) { - if (sampleFilterCutStart<0.0) sampleFilterCutStart=0.0; - if (sampleFilterCutStart>sample->centerRate*0.5) sampleFilterCutStart=sample->centerRate*0.5; - } - if (ImGui::InputFloat(_("To"),&sampleFilterCutEnd,10.0f,1000.0f,"%.0f")) { - if (sampleFilterCutEnd<0.0) sampleFilterCutEnd=0.0; - if (sampleFilterCutEnd>sample->centerRate*0.5) sampleFilterCutEnd=sample->centerRate*0.5; + + ImGui::Checkbox(_("Sweep (2 frequencies)"),&sampleFilterSweep); + + if (sampleFilterSweep) { + if (ImGui::SliderFloat(_("From"),&sampleFilterCutStart,minCutoff,maxCutoff,"%.0f Hz")) { + if (sampleFilterCutStartmaxCutoff) sampleFilterCutStart=maxCutoff; + } + if (ImGui::SliderFloat(_("To"),&sampleFilterCutEnd,minCutoff,maxCutoff,"%.0f Hz")) { + if (sampleFilterCutEndmaxCutoff) sampleFilterCutEnd=maxCutoff; + } + } else { + if (ImGui::SliderFloat(_("Frequency"),&sampleFilterCutStart,minCutoff,maxCutoff,"%.0f Hz")) { + if (sampleFilterCutStartmaxCutoff) sampleFilterCutStart=maxCutoff; + } } + ImGui::Separator(); if (ImGui::SliderFloat(_("Resonance"),&resP,0.0f,99.0f,"%.1f%%")) { sampleFilterRes=resP/100.0f;