sample filter ui: add sweep option
This commit is contained in:
parent
0d7ef2e8eb
commit
37d49ffe0f
|
@ -8731,6 +8731,7 @@ FurnaceGUI::FurnaceGUI():
|
||||||
sampleFilterRes(0.25f),
|
sampleFilterRes(0.25f),
|
||||||
sampleFilterCutStart(16000.0f),
|
sampleFilterCutStart(16000.0f),
|
||||||
sampleFilterCutEnd(100.0f),
|
sampleFilterCutEnd(100.0f),
|
||||||
|
sampleFilterSweep(true),
|
||||||
sampleCrossFadeLoopLength(0),
|
sampleCrossFadeLoopLength(0),
|
||||||
sampleCrossFadeLoopLaw(50),
|
sampleCrossFadeLoopLaw(50),
|
||||||
sampleFilterPower(1),
|
sampleFilterPower(1),
|
||||||
|
|
|
@ -2570,6 +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;
|
||||||
int sampleCrossFadeLoopLength, sampleCrossFadeLoopLaw;
|
int sampleCrossFadeLoopLength, sampleCrossFadeLoopLaw;
|
||||||
unsigned char sampleFilterPower;
|
unsigned char sampleFilterPower;
|
||||||
short* sampleClipboard;
|
short* sampleClipboard;
|
||||||
|
|
|
@ -1191,15 +1191,28 @@ 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:"));
|
||||||
if (ImGui::InputFloat(_("From"),&sampleFilterCutStart,10.0f,1000.0f,"%.0f")) {
|
|
||||||
if (sampleFilterCutStart<0.0) sampleFilterCutStart=0.0;
|
ImGui::Checkbox(_("Sweep (2 frequencies)"),&sampleFilterSweep);
|
||||||
if (sampleFilterCutStart>sample->centerRate*0.5) sampleFilterCutStart=sample->centerRate*0.5;
|
|
||||||
}
|
if (sampleFilterSweep) {
|
||||||
if (ImGui::InputFloat(_("To"),&sampleFilterCutEnd,10.0f,1000.0f,"%.0f")) {
|
if (ImGui::SliderFloat(_("From"),&sampleFilterCutStart,minCutoff,maxCutoff,"%.0f Hz")) {
|
||||||
if (sampleFilterCutEnd<0.0) sampleFilterCutEnd=0.0;
|
if (sampleFilterCutStart<minCutoff) sampleFilterCutStart=minCutoff;
|
||||||
if (sampleFilterCutEnd>sample->centerRate*0.5) sampleFilterCutEnd=sample->centerRate*0.5;
|
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();
|
ImGui::Separator();
|
||||||
if (ImGui::SliderFloat(_("Resonance"),&resP,0.0f,99.0f,"%.1f%%")) {
|
if (ImGui::SliderFloat(_("Resonance"),&resP,0.0f,99.0f,"%.1f%%")) {
|
||||||
sampleFilterRes=resP/100.0f;
|
sampleFilterRes=resP/100.0f;
|
||||||
|
|
Loading…
Reference in a new issue