Parcourir la source

Merge pull request #357 from mattvenn/master

Round down to 0 to avoid the buzzing noise issue
dds
Paul Stoffregen il y a 3 ans
Parent
révision
5259876810
Aucun compte lié à l'adresse e-mail de l'auteur
1 fichiers modifiés avec 20 ajouts et 14 suppressions
  1. +20
    -14
      effect_freeverb.cpp

+ 20
- 14
effect_freeverb.cpp Voir le fichier

@@ -71,21 +71,27 @@ AudioEffectFreeverb::AudioEffectFreeverb() : AudioStream(1, inputQueueArray)
allpass4index = 0;
}

#if 1
#define sat16(n, rshift) signed_saturate_rshift((n), 16, (rshift))
#else
static int16_t sat16(int32_t n, int rshift)
{
n = n >> rshift;
if (n > 32767) {
return 32767;
}
if (n < -32768) {
return -32768;
}
return n;

// cleaner sat16 by http://www.moseleyinstruments.com/
static int16_t sat16(int32_t n, int rshift) {
// we should always round towards 0
// to avoid recirculating round-off noise
//
// a 2s complement positive number is always
// rounded down, so we only need to take
// care of negative numbers
if (n < 0) {
n = n + (~(0xFFFFFFFFUL << rshift));
}
n = n >> rshift;
if (n > 32767) {
return 32767;
}
if (n < -32768) {
return -32768;
}
return n;
}
#endif

// TODO: move this to one of the data files, use in output_adat.cpp, output_tdm.cpp, etc
static const audio_block_t zeroblock = {

Chargement…
Annuler
Enregistrer