Fixes for summing up notes as integer (instead of float).

pull/4/head
Holger Wirtz 7 years ago
parent fba0ecb5dc
commit c2e0bfe632
  1. 6
      config.h
  2. 7
      dexed.cpp

@ -22,12 +22,12 @@
*/ */
#define TEST_MIDI 1 //#define TEST_MIDI 1
#define TEST_NOTE 40 #define TEST_NOTE 40
#define TEST_VEL_MIN 60 #define TEST_VEL_MIN 60
#define TEST_VEL_MAX 110 #define TEST_VEL_MAX 110
#define SHOW_DEXED_TIMING 1 //#define SHOW_DEXED_TIMING 1
#define DEBUG 1 #define DEBUG 1
#define SERIAL_SPEED 38400 #define SERIAL_SPEED 38400
#define VOLUME 0.1 #define VOLUME 0.1
@ -48,7 +48,7 @@
#define MASTER_BANK_SELECT 83 // B5 #define MASTER_BANK_SELECT 83 // B5
#define USE_TEENSY_DSP 1 #define USE_TEENSY_DSP 1
//#define SUM_UP_AS_INT 1 #define SUM_UP_AS_INT 1
// Use these with the Teensy Audio Shield // Use these with the Teensy Audio Shield
#define SDCARD_CS_PIN 10 #define SDCARD_CS_PIN 10

@ -135,6 +135,8 @@ void Dexed::getSamples(uint16_t n_samples, int16_t* buffer)
audiobuf.get()[j] = 0; audiobuf.get()[j] = 0;
#ifndef SUM_UP_AS_INT #ifndef SUM_UP_AS_INT
sumbuf[j] = 0.0; sumbuf[j] = 0.0;
#else
buffer[i + j] = 0;
#endif #endif
} }
@ -153,7 +155,7 @@ void Dexed::getSamples(uint16_t n_samples, int16_t* buffer)
int32_t clip_val = val < -(1 << 24) ? 0x8000 : val >= (1 << 24) ? 0x7fff : val >> 9; int32_t clip_val = val < -(1 << 24) ? 0x8000 : val >= (1 << 24) ? 0x7fff : val >> 9;
#endif #endif
#ifdef SUM_UP_AS_INT #ifdef SUM_UP_AS_INT
int32_t tmp = buffer[i + j] + clip_val; int32_t tmp = buffer[i + j] + (clip_val >> 1);
if (buffer[i + j] > 0 && clip_val > 0) if (buffer[i + j] > 0 && clip_val > 0)
{ {
if ((tmp < buffer[i + j]) && (tmp < clip_val)) if ((tmp < buffer[i + j]) && (tmp < clip_val))
@ -165,8 +167,9 @@ void Dexed::getSamples(uint16_t n_samples, int16_t* buffer)
tmp = 0x7FFF; tmp = 0x7FFF;
} }
buffer[i + j] = tmp; buffer[i + j] = tmp;
audiobuf.get()[j] = 0;
#else #else
float f = static_cast<float>(clip_val) / 0x8000; float f = static_cast<float>(clip_val >> 1) / 0x8000;
if (f > 1) f = 1; if (f > 1) f = 1;
if (f < -1) f = -1; if (f < -1) f = -1;
sumbuf[j] += f; sumbuf[j] += f;

Loading…
Cancel
Save