faker 1968
/
Effector_110613
Diff: Distotion_Unit.cpp
- Revision:
- 0:adfbd02222d4
diff -r 000000000000 -r adfbd02222d4 Distotion_Unit.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Distotion_Unit.cpp Mon Jun 13 15:20:17 2011 +0000 @@ -0,0 +1,48 @@ +/*****************************************************/ +/* Distotion_Unit.cpp */ +/* */ +/*****************************************************/ + +#define DIST_MAIN +#include "Distotion_Unit.h" + +#define LIMIT_P (32767) +#define LIMIT_N (-32768) + +int distotion(int iEffectIn) { + + int iSignal; + int iClip; + + // Bypass ? + if(g_iDistBypass == 0)return iEffectIn; + + // Input Gain + iSignal = iEffectIn * g_iDistInputGain / 10; + + iClip = 32767 * g_iDistClipLevel / 100; + + // Clip + switch(g_iDistMode){ + case 1: if (iSignal < 0)iSignal *= (-1); + if (iSignal >= iClip)iSignal = iClip; + break; + case 2: if (iSignal >= iClip)iSignal = iClip; + if (iSignal <= -iClip)iSignal = -iClip; + break; + case 3: if (iSignal >= iClip)iSignal = iClip; + if (iSignal <= (-iClip / 2))iSignal = (-iClip / 2); + break; + default:break; + } + + // Output Gain + iSignal = iSignal * g_iDistOutputGain / 10; + if (iSignal >= LIMIT_P)iSignal = LIMIT_P; + if (iSignal <= LIMIT_N)iSignal = LIMIT_N; + + return iSignal; + +} + +#undef DIST_MAIN \ No newline at end of file