From e579ba8ee85b70b3eff08fae6952a8cc10dc0c28 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 30 Oct 2025 17:14:31 -0500 Subject: [PATCH] GUI: add option to offset sample in the amplify one --- src/gui/gui.cpp | 1 + src/gui/gui.h | 2 +- src/gui/sampleEdit.cpp | 13 ++++++++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 98a1e921a..53db802cc 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -9017,6 +9017,7 @@ FurnaceGUI::FurnaceGUI(): resampleTarget(32000), resampleStrat(5), amplifyVol(100.0), + amplifyOff(0.0), sampleSelStart(-1), sampleSelEnd(-1), sampleInfo(true), diff --git a/src/gui/gui.h b/src/gui/gui.h index 10f23d976..c606c07fd 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -2621,7 +2621,7 @@ class FurnaceGUI { int resizeSize, silenceSize; double resampleTarget; int resampleStrat; - float amplifyVol; + float amplifyVol, amplifyOff; int sampleSelStart, sampleSelEnd; bool sampleInfo, sampleCompatRate; bool sampleDragActive, sampleDragMode, sampleDrag16, sampleZoomAuto; diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index 441c0294a..bf2152aa2 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -1212,7 +1212,7 @@ void FurnaceGUI::drawSampleEdit() { sameLineMaybe(); ImGui::Button(ICON_FA_VOLUME_UP "##SAmplify"); if (ImGui::IsItemHovered()) { - ImGui::SetTooltip(_("Amplify")); + ImGui::SetTooltip(_("Amplify/Offset")); } if (openSampleAmplifyOpt) { openSampleAmplifyOpt=false; @@ -1226,6 +1226,11 @@ void FurnaceGUI::drawSampleEdit() { } ImGui::SameLine(); ImGui::Text("(%.1fdB)",20.0*log10(amplifyVol/100.0f)); + ImGui::Text(_("DC offset")); + if (ImGui::InputFloat("##Offset",&lifyOff,-100.0,100.0,"%g%%")) { + if (amplifyOff<-100) amplifyOff=-100; + if (amplifyOff>100) amplifyOff=100; + } if (ImGui::Button(_("Apply"))) { sample->prepareUndo(true); e->lockEngine([this,sample]() { @@ -1233,15 +1238,17 @@ void FurnaceGUI::drawSampleEdit() { float vol=amplifyVol/100.0f; if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { + float off=32767.0f*(amplifyOff/100.0f); for (unsigned int i=start; idata16[i]*vol; + float val=off+sample->data16[i]*vol; if (val<-32768) val=-32768; if (val>32767) val=32767; sample->data16[i]=val; } } else if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { + float off=127.0f*(amplifyOff/100.0f); for (unsigned int i=start; idata8[i]*vol; + float val=off+sample->data8[i]*vol; if (val<-128) val=-128; if (val>127) val=127; sample->data8[i]=val;