faker 1968
/
Effector_110613
Distotion_Unit.cpp@0:adfbd02222d4, 2011-06-13 (annotated)
- Committer:
- faker
- Date:
- Mon Jun 13 15:20:17 2011 +0000
- Revision:
- 0:adfbd02222d4
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
faker | 0:adfbd02222d4 | 1 | /*****************************************************/ |
faker | 0:adfbd02222d4 | 2 | /* Distotion_Unit.cpp */ |
faker | 0:adfbd02222d4 | 3 | /* */ |
faker | 0:adfbd02222d4 | 4 | /*****************************************************/ |
faker | 0:adfbd02222d4 | 5 | |
faker | 0:adfbd02222d4 | 6 | #define DIST_MAIN |
faker | 0:adfbd02222d4 | 7 | #include "Distotion_Unit.h" |
faker | 0:adfbd02222d4 | 8 | |
faker | 0:adfbd02222d4 | 9 | #define LIMIT_P (32767) |
faker | 0:adfbd02222d4 | 10 | #define LIMIT_N (-32768) |
faker | 0:adfbd02222d4 | 11 | |
faker | 0:adfbd02222d4 | 12 | int distotion(int iEffectIn) { |
faker | 0:adfbd02222d4 | 13 | |
faker | 0:adfbd02222d4 | 14 | int iSignal; |
faker | 0:adfbd02222d4 | 15 | int iClip; |
faker | 0:adfbd02222d4 | 16 | |
faker | 0:adfbd02222d4 | 17 | // Bypass ? |
faker | 0:adfbd02222d4 | 18 | if(g_iDistBypass == 0)return iEffectIn; |
faker | 0:adfbd02222d4 | 19 | |
faker | 0:adfbd02222d4 | 20 | // Input Gain |
faker | 0:adfbd02222d4 | 21 | iSignal = iEffectIn * g_iDistInputGain / 10; |
faker | 0:adfbd02222d4 | 22 | |
faker | 0:adfbd02222d4 | 23 | iClip = 32767 * g_iDistClipLevel / 100; |
faker | 0:adfbd02222d4 | 24 | |
faker | 0:adfbd02222d4 | 25 | // Clip |
faker | 0:adfbd02222d4 | 26 | switch(g_iDistMode){ |
faker | 0:adfbd02222d4 | 27 | case 1: if (iSignal < 0)iSignal *= (-1); |
faker | 0:adfbd02222d4 | 28 | if (iSignal >= iClip)iSignal = iClip; |
faker | 0:adfbd02222d4 | 29 | break; |
faker | 0:adfbd02222d4 | 30 | case 2: if (iSignal >= iClip)iSignal = iClip; |
faker | 0:adfbd02222d4 | 31 | if (iSignal <= -iClip)iSignal = -iClip; |
faker | 0:adfbd02222d4 | 32 | break; |
faker | 0:adfbd02222d4 | 33 | case 3: if (iSignal >= iClip)iSignal = iClip; |
faker | 0:adfbd02222d4 | 34 | if (iSignal <= (-iClip / 2))iSignal = (-iClip / 2); |
faker | 0:adfbd02222d4 | 35 | break; |
faker | 0:adfbd02222d4 | 36 | default:break; |
faker | 0:adfbd02222d4 | 37 | } |
faker | 0:adfbd02222d4 | 38 | |
faker | 0:adfbd02222d4 | 39 | // Output Gain |
faker | 0:adfbd02222d4 | 40 | iSignal = iSignal * g_iDistOutputGain / 10; |
faker | 0:adfbd02222d4 | 41 | if (iSignal >= LIMIT_P)iSignal = LIMIT_P; |
faker | 0:adfbd02222d4 | 42 | if (iSignal <= LIMIT_N)iSignal = LIMIT_N; |
faker | 0:adfbd02222d4 | 43 | |
faker | 0:adfbd02222d4 | 44 | return iSignal; |
faker | 0:adfbd02222d4 | 45 | |
faker | 0:adfbd02222d4 | 46 | } |
faker | 0:adfbd02222d4 | 47 | |
faker | 0:adfbd02222d4 | 48 | #undef DIST_MAIN |