diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 8c12922c1..e014fb08d 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -701,13 +701,18 @@ void FurnaceGUI::drawChanOsc() { } } } else { - /* - String dStr=fmt::sprintf("DS: %d P: %d\nMAX: %d\nPHASE %f",displaySize,precision,(short)((fft->needle+displaySize)-fft->relatedBuf->needle),fft->debugPhase); - dl->AddText(inRect.Min,0xffffffff,dStr.c_str()); - */ + // find the first sample + float y=0; + for (int j=0; j<32768; j++) { + const short y_s=buf->data[(fft->needle-j)&0xffff]; + if (y_s!=-1) { + y=(float)y_s/32768.0f; + break; + } + } + // render chan osc if (displaySizedata[(unsigned short)(fft->needle+(j*displaySize/precision))]; if (y_s!=-1) { y=(float)y_s/32768.0f; @@ -728,9 +733,8 @@ void FurnaceGUI::drawChanOsc() { fft->oscTex[j]=yOut; } } else { - float y=0; int k=-2048; - for (unsigned short j=fft->needle-2048; j!=fft->needle+displaySize; j++, k++) { + for (unsigned short j=fft->needle; j!=fft->needle+displaySize; j++, k++) { const short y_s=buf->data[j]; const int kTex=(k*precision)/displaySize; if (kTex>=precision) break;