GUI: add option to offset sample

in the amplify one
This commit is contained in:
tildearrow 2025-10-30 17:14:31 -05:00
parent 0ae9151b47
commit e579ba8ee8
3 changed files with 12 additions and 4 deletions

View file

@ -9017,6 +9017,7 @@ FurnaceGUI::FurnaceGUI():
resampleTarget(32000),
resampleStrat(5),
amplifyVol(100.0),
amplifyOff(0.0),
sampleSelStart(-1),
sampleSelEnd(-1),
sampleInfo(true),

View file

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

View file

@ -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",&amplifyOff,-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; i<end; i++) {
float val=sample->data16[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; i<end; i++) {
float val=sample->data8[i]*vol;
float val=off+sample->data8[i]*vol;
if (val<-128) val=-128;
if (val>127) val=127;
sample->data8[i]=val;