sample filter ui: add sweep option

This commit is contained in:
yohannd1 2025-03-06 22:56:52 -03:00 committed by tildearrow
parent 0d7ef2e8eb
commit 37d49ffe0f
3 changed files with 22 additions and 7 deletions

View file

@ -8731,6 +8731,7 @@ FurnaceGUI::FurnaceGUI():
sampleFilterRes(0.25f),
sampleFilterCutStart(16000.0f),
sampleFilterCutEnd(100.0f),
sampleFilterSweep(true),
sampleCrossFadeLoopLength(0),
sampleCrossFadeLoopLaw(50),
sampleFilterPower(1),

View file

@ -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;

View file

@ -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 (sampleFilterCutStart<minCutoff) sampleFilterCutStart=minCutoff;
if (sampleFilterCutStart>maxCutoff) sampleFilterCutStart=maxCutoff;
}
if (ImGui::SliderFloat(_("To"),&sampleFilterCutEnd,minCutoff,maxCutoff,"%.0f Hz")) {
if (sampleFilterCutEnd<minCutoff) sampleFilterCutEnd=minCutoff;
if (sampleFilterCutEnd>maxCutoff) sampleFilterCutEnd=maxCutoff;
}
} else {
if (ImGui::SliderFloat(_("Frequency"),&sampleFilterCutStart,minCutoff,maxCutoff,"%.0f Hz")) {
if (sampleFilterCutStart<minCutoff) sampleFilterCutStart=minCutoff;
if (sampleFilterCutStart>maxCutoff) sampleFilterCutStart=maxCutoff;
}
}
ImGui::Separator();
if (ImGui::SliderFloat(_("Resonance"),&resP,0.0f,99.0f,"%.1f%%")) {
sampleFilterRes=resP/100.0f;