sample filter ui: clamp frequency on popup
This commit is contained in:
parent
37d49ffe0f
commit
f2d6ae78fa
|
@ -8732,6 +8732,7 @@ FurnaceGUI::FurnaceGUI():
|
||||||
sampleFilterCutStart(16000.0f),
|
sampleFilterCutStart(16000.0f),
|
||||||
sampleFilterCutEnd(100.0f),
|
sampleFilterCutEnd(100.0f),
|
||||||
sampleFilterSweep(true),
|
sampleFilterSweep(true),
|
||||||
|
sampleFilterFirstFrame(true),
|
||||||
sampleCrossFadeLoopLength(0),
|
sampleCrossFadeLoopLength(0),
|
||||||
sampleCrossFadeLoopLaw(50),
|
sampleCrossFadeLoopLaw(50),
|
||||||
sampleFilterPower(1),
|
sampleFilterPower(1),
|
||||||
|
|
|
@ -2570,7 +2570,7 @@ class FurnaceGUI {
|
||||||
ImVec2 sampleDragAreaSize;
|
ImVec2 sampleDragAreaSize;
|
||||||
unsigned int sampleDragLen;
|
unsigned int sampleDragLen;
|
||||||
float sampleFilterL, sampleFilterB, sampleFilterH, sampleFilterRes, sampleFilterCutStart, sampleFilterCutEnd;
|
float sampleFilterL, sampleFilterB, sampleFilterH, sampleFilterRes, sampleFilterCutStart, sampleFilterCutEnd;
|
||||||
bool sampleFilterSweep;
|
bool sampleFilterSweep, sampleFilterFirstFrame;
|
||||||
int sampleCrossFadeLoopLength, sampleCrossFadeLoopLaw;
|
int sampleCrossFadeLoopLength, sampleCrossFadeLoopLaw;
|
||||||
unsigned char sampleFilterPower;
|
unsigned char sampleFilterPower;
|
||||||
short* sampleClipboard;
|
short* sampleClipboard;
|
||||||
|
|
|
@ -1182,8 +1182,11 @@ void FurnaceGUI::drawSampleEdit() {
|
||||||
if (ImGui::IsItemHovered()) {
|
if (ImGui::IsItemHovered()) {
|
||||||
ImGui::SetTooltip(_("Apply filter"));
|
ImGui::SetTooltip(_("Apply filter"));
|
||||||
}
|
}
|
||||||
|
float minCutoff=10.0f;
|
||||||
|
float maxCutoff=sample->centerRate*0.5f;
|
||||||
if (openSampleFilterOpt) {
|
if (openSampleFilterOpt) {
|
||||||
openSampleFilterOpt=false;
|
openSampleFilterOpt=false;
|
||||||
|
sampleFilterFirstFrame=true;
|
||||||
ImGui::OpenPopup("SFilterOpt");
|
ImGui::OpenPopup("SFilterOpt");
|
||||||
}
|
}
|
||||||
if (ImGui::BeginPopupContextItem("SFilterOpt",ImGuiPopupFlags_MouseButtonLeft)) {
|
if (ImGui::BeginPopupContextItem("SFilterOpt",ImGuiPopupFlags_MouseButtonLeft)) {
|
||||||
|
@ -1191,12 +1194,9 @@ void FurnaceGUI::drawSampleEdit() {
|
||||||
float bandP=sampleFilterB*100.0f;
|
float bandP=sampleFilterB*100.0f;
|
||||||
float highP=sampleFilterH*100.0f;
|
float highP=sampleFilterH*100.0f;
|
||||||
float resP=sampleFilterRes*100.0f;
|
float resP=sampleFilterRes*100.0f;
|
||||||
float minCutoff=10.0f;
|
|
||||||
float maxCutoff=sample->centerRate*0.5f;
|
|
||||||
ImGui::Text(_("Cutoff:"));
|
ImGui::Text(_("Cutoff:"));
|
||||||
|
|
||||||
ImGui::Checkbox(_("Sweep (2 frequencies)"),&sampleFilterSweep);
|
ImGui::Checkbox(_("Sweep (2 frequencies)"),&sampleFilterSweep);
|
||||||
|
|
||||||
if (sampleFilterSweep) {
|
if (sampleFilterSweep) {
|
||||||
if (ImGui::SliderFloat(_("From"),&sampleFilterCutStart,minCutoff,maxCutoff,"%.0f Hz")) {
|
if (ImGui::SliderFloat(_("From"),&sampleFilterCutStart,minCutoff,maxCutoff,"%.0f Hz")) {
|
||||||
if (sampleFilterCutStart<minCutoff) sampleFilterCutStart=minCutoff;
|
if (sampleFilterCutStart<minCutoff) sampleFilterCutStart=minCutoff;
|
||||||
|
@ -1307,6 +1307,15 @@ void FurnaceGUI::drawSampleEdit() {
|
||||||
MARK_MODIFIED;
|
MARK_MODIFIED;
|
||||||
ImGui::CloseCurrentPopup();
|
ImGui::CloseCurrentPopup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sampleFilterFirstFrame) {
|
||||||
|
if (sampleFilterCutStart<minCutoff) sampleFilterCutStart=minCutoff;
|
||||||
|
if (sampleFilterCutStart>maxCutoff) sampleFilterCutStart=maxCutoff;
|
||||||
|
if (sampleFilterCutEnd<minCutoff) sampleFilterCutEnd=minCutoff;
|
||||||
|
if (sampleFilterCutEnd>maxCutoff) sampleFilterCutEnd=maxCutoff;
|
||||||
|
sampleFilterFirstFrame=false;
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::EndPopup();
|
ImGui::EndPopup();
|
||||||
}
|
}
|
||||||
ImGui::EndDisabled();
|
ImGui::EndDisabled();
|
||||||
|
|
Loading…
Reference in a new issue