change chan osc range - PLEASE READ
as of now the range is ~32768, either from -16384 to 16383, or 0 to 32767. it previously was -32768 to 32767 (~65536). this change was made to better suit chips that only output a positive value. if you are working on a new chip, update your code and shift right by one if necessary.
This commit is contained in:
parent
ad9981fdea
commit
29dfeccfe7
48 changed files with 126 additions and 129 deletions
|
|
@ -93,7 +93,7 @@ void FurnaceGUI::calcChanOsc() {
|
|||
unsigned short needlePos=buf->needle;
|
||||
needlePos-=displaySize;
|
||||
for (unsigned short i=0; i<512; i++) {
|
||||
float y=(float)buf->data[(unsigned short)(needlePos+(i*displaySize/512))]/65536.0f;
|
||||
float y=(float)buf->data[(unsigned short)(needlePos+(i*displaySize/512))]/32768.0f;
|
||||
if (minLevel>y) minLevel=y;
|
||||
if (maxLevel<y) maxLevel=y;
|
||||
}
|
||||
|
|
@ -400,14 +400,14 @@ void FurnaceGUI::drawChanOsc() {
|
|||
|
||||
needlePos-=displaySize;
|
||||
for (unsigned short i=0; i<precision; i++) {
|
||||
float y=(float)buf->data[(unsigned short)(needlePos+(i*displaySize/precision))]/65536.0f;
|
||||
float y=(float)buf->data[(unsigned short)(needlePos+(i*displaySize/precision))]/32768.0f;
|
||||
if (minLevel>y) minLevel=y;
|
||||
if (maxLevel<y) maxLevel=y;
|
||||
}
|
||||
dcOff=(minLevel+maxLevel)*0.5f;
|
||||
for (unsigned short i=0; i<precision; i++) {
|
||||
float x=(float)i/(float)precision;
|
||||
float y=(float)buf->data[(unsigned short)(needlePos+(i*displaySize/precision))]/65536.0f;
|
||||
float y=(float)buf->data[(unsigned short)(needlePos+(i*displaySize/precision))]/32768.0f;
|
||||
y-=dcOff;
|
||||
if (y<-0.5f) y=-0.5f;
|
||||
if (y>0.5f) y=0.5f;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue