faker 1968
/
Effector_110613
Distotion_Unit.cpp
- Committer:
- faker
- Date:
- 2011-06-13
- Revision:
- 0:adfbd02222d4
File content as of revision 0:adfbd02222d4:
/*****************************************************/ /* 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