From 29fa249227d7ed18421fdb68d5d30cd764f83577 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 26 Aug 2023 03:13:17 -0500 Subject: [PATCH] GUI: really fix wave synth display issues issue #1417 --- src/gui/insEdit.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 2c8f34d79..98d02e3a2 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -5318,23 +5318,29 @@ void FurnaceGUI::drawInsEdit() { wavePreview.init(ins,wavePreviewLen,wavePreviewHeight,true); wavePreviewInit=false; } - float wavePreview1[256]; - float wavePreview2[256]; - float wavePreview3[256]; - for (int i=0; ilen+1; i++) { + float wavePreview1[257]; + float wavePreview2[257]; + float wavePreview3[257]; + for (int i=0; ilen; i++) { if (wave1->data[i]>wave1->max) { wavePreview1[i]=wave1->max; } else { wavePreview1[i]=wave1->data[i]; } } - for (int i=0; ilen+1; i++) { + if (wave1->len>0) { + wavePreview1[wave1->len]=wave1->data[wave1->len-1]; + } + for (int i=0; ilen; i++) { if (wave2->data[i]>wave2->max) { wavePreview2[i]=wave2->max; } else { wavePreview2[i]=wave2->data[i]; } } + if (wave2->len>0) { + wavePreview2[wave2->len]=wave2->data[wave2->len-1]; + } if (ins->ws.enabled && (!wavePreviewPaused || wavePreviewInit)) { wavePreview.tick(true); WAKE_UP; @@ -5342,6 +5348,9 @@ void FurnaceGUI::drawInsEdit() { for (int i=0; i0) { + wavePreview3[wavePreviewLen]=wavePreview3[wavePreviewLen-1]; + } float ySize=(isSingleWaveFX?96.0f:128.0f)*dpiScale; @@ -5356,7 +5365,7 @@ void FurnaceGUI::drawInsEdit() { } ImGui::TableNextColumn(); ImVec2 size3=ImVec2(ImGui::GetContentRegionAvail().x,ySize); - PlotNoLerp("##WaveformP3",wavePreview3,wavePreviewLen,0,"Result",0,wavePreviewHeight,size3); + PlotNoLerp("##WaveformP3",wavePreview3,wavePreviewLen+1,0,"Result",0,wavePreviewHeight,size3); ImGui::TableNextRow(); ImGui::TableNextColumn();