Dependencies:   mbed

Committer:
faker
Date:
Mon Jun 13 15:20:17 2011 +0000
Revision:
0:adfbd02222d4

        

Who changed what in which revision?

UserRevisionLine numberNew 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