diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 2709cf82..bbedb6ef 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -4927,8 +4927,8 @@ int DivEngine::calcBaseFreq(double clock, double divider, int note, bool period) int DivEngine::calcFreq(int base, int pitch, bool period, int octave) { if (song.linearPitch) { return period? - int(base*pow(2,-(double)pitch/(12.0*128.0))/(98.0+globalPitch*6.0)*98.0): - (int(base*pow(2,(double)pitch/(12.0*128.0))*(98+globalPitch*6))/98); + round(base*pow(2,-(double)pitch/(12.0*128.0))/(98.0+globalPitch*6.0)*98.0): + (round(base*pow(2,(double)pitch/(12.0*128.0))*(98+globalPitch*6))/98); } return period? base-pitch: diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index aeb81792..0b8b3dc2 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -198,9 +198,9 @@ void DivPlatformNES::tick() { int ntPos=chan[i].baseFreq; if (ntPos<0) ntPos=0; if (ntPos>252) ntPos=252; - chan[i].freq=(parent->song.properNoiseLayout)?(15-(chan[i].baseFreq&15)):(noiseTable[ntPos]); + chan[i].freq=(parent->song.properNoiseLayout)?(15-(chan[i].baseFreq&15)):(noiseTable[ntPos])-1; } else { - chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,true); + chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,true)-1; if (chan[i].freq>2047) chan[i].freq=2047; } if (chan[i].keyOn) {