Advertisement
Guest User

Untitled

a guest
Oct 30th, 2014
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.49 KB | None | 0 0
  1. #include "Talkthrough.h"
  2.  
  3. //--------------------------------------------------------------------------//
  4. // Function: Process_Data() //
  5. // //
  6. // Description: This function is called from inside the SPORT0 ISR every //
  7. // time a complete audio frame has been received. The new //
  8. // input samples can be found in the variables iChannel0LeftIn,//
  9. // iChannel0RightIn, iChannel1LeftIn and iChannel1RightIn //
  10. // respectively. The processed data should be stored in //
  11. // iChannel0LeftOut, iChannel0RightOut, iChannel1LeftOut, //
  12. // iChannel1RightOut, iChannel2LeftOut and iChannel2RightOut //
  13. // respectively. //
  14. //--------------------------------------------------------------------------//
  15.  
  16.  
  17. int bufferL[100];
  18. int bufferR[100];
  19. int const W = 4;
  20. int const X = 8;
  21.  
  22.  
  23. // bandstop 300Hz - 8kHz
  24. /*int const FIR[100] =
  25. {
  26. 42, 69, 93, 109, 112, 100, 72, 34, -6, -34, -37, -2, 72
  27. , 177, 294, 394, 447, 427, 329, 167, -23, -185, -262, -209, -7, 321
  28. , 713, 1075, 1305, 1316, 1067, 582, -47, -668,-1103,-1189, -825, -13, 1129, 2370
  29. , 3399, 3887, 3553, 2234, -66,-3159,-6690 ,-10189 ,-13154 ,-15139,86999, -15139
  30. ,-13154,-10189,-6690,-3159, -66, 2234, 3553, 3887, 3399, 2370, 1129, -13, -825
  31. ,-1189,-1103, -668, -47, 582, 1067, 1316, 1305, 1075, 713, 321, -7, -209
  32. , -262, -185, -23, 167, 329, 427, 447, 394, 294, 177, 72, -2, -37
  33. , -34, -6, 34, 72, 100, 112, 109, 93, 69
  34. };*/
  35.  
  36. /*
  37. // lowpass 4.8KHz
  38. int const FIR[100] =
  39. {
  40. 0, 5, 11, 16, 20, 24, 25, 24, 20, 12, 0, -15, -33, -51, -68, -80, -85, -81
  41. , -66, -38, 0, 47, 99, 150, 195, 225, 235, 219, 174, 100, 0,-120,-250,-377,-486
  42. ,-562,-589,-554,-446,-261, 0, 332, 721,1150,1596,2034,2438,2783,3047,3212,3269,3212
  43. ,3047,2783,2438,2034,1596,1150, 721, 332, 0,-261,-446,-554,-589,-562,-486,-377,-250
  44. ,-120, 0, 100, 174, 219, 235, 225, 195, 150, 99, 47, 0, -38, -66, -81, -85, -80
  45. , -68, -51, -33, -15, 0, 12, 20, 24, 25, 24, 20, 16, 11, 5
  46. };
  47. */
  48.  
  49. int stereo_widening(int lewa, int prawa, int side) {
  50. int s = lewa-prawa/2;
  51. int c = lewa+prawa/2;
  52.  
  53. if(side == 1) { //lewa
  54. if(s >= 0) {
  55. return s + lewa;
  56. } else {
  57. return -s + lewa;
  58. }
  59. } else { //prawa
  60. if(s >= 0) {
  61. return s + prawa;
  62. } else {
  63. return -s + prawa;
  64. }
  65. }
  66. }
  67.  
  68. int gate(int value) {
  69. if(abs(value) >= (5+X)%8388607) {
  70. return value;
  71. } else {
  72. return 0;
  73. }
  74. }
  75.  
  76. int compressor(int value) {
  77. int wsp = 3;
  78. int prog = ((W % 5)*10 + 30 + X)%8388607;
  79.  
  80. if(value > prog) {
  81. return prog + (value-prog)/wsp;
  82. } else if(value < -prog) {
  83. return -prog + (value+prog)/wsp;
  84. } else {
  85. return value;
  86. }
  87. }
  88.  
  89.  
  90. int buf[5184];
  91. int wsk1 = 0;
  92.  
  93. int echo(int left, int right) {
  94. int value = left/2 + right/2;
  95. buf[wsk1] = value;
  96. wsk1++;
  97. wsk1 = wsk1% 5184;
  98.  
  99. value = (value + buf[5184+((wsk1 - 5184)%5184)]) / 2;
  100.  
  101. return value;
  102. }
  103.  
  104.  
  105. int rev(int left, int right) {
  106. int value = left/2 + right/2;
  107. buf[wsk1] = value;
  108. wsk1++;
  109. wsk1 = wsk1% 5184;
  110.  
  111. int val1 = buf[(5184+wsk1 - (15+4)*48)%5184];
  112. int val2 = buf[(5184+wsk1 - (30+8)*48)%5184];
  113. int val3 = buf[(5184+wsk1 - (40+8)*48)%5184];
  114. int val4 = buf[(5184+wsk1 - (50+8)*48)%5184];
  115.  
  116. return (value+val1+val2+val3+val4)/5;
  117. }
  118.  
  119. // lowpass 24kHz
  120. int const FIR[100] =
  121. {
  122. 0,17,0,-20,0,24,0,-30,0,39,0,-50,
  123. 0,63,0,-80,0,101,0,-125,0,153,0,-186,
  124. 0,225,0,-271,0,325,0,-389,0,467,0,-563,
  125. 0,686,0,-848,0,1075,0,-1424,0,2038,0,-3447,
  126. 0,10415,16375,10415,0,-3447,0,2038,0,-1424,0,1075,
  127. 0,-848,0,686,0,-563,0,467,0,-389,0,325,
  128. 0,-271,0,225,0,-186,0,153,0,-125,0,101,
  129. 0,-80,0,63,0,-50,0,39,0,-30,0,24,
  130. 0,-20,0,17,0
  131. };
  132.  
  133.  
  134. void Process_Data(void)
  135. {
  136. //iChannel0LeftOut = iChannel0LeftIn;
  137. //iChannel0RightOut = iChannel0RightIn;
  138.  
  139. //int i, accL, accR;
  140.  
  141. /*for (i=99; i>0; --i)
  142. {
  143. bufferL[i] = bufferL[i-1];
  144. bufferR[i] = bufferR[i-1];
  145. }
  146.  
  147. bufferL[0] = iChannel0LeftIn>>16;
  148. bufferR[0] = iChannel0RightIn>>16;
  149.  
  150. accL=0;
  151. accR=0;
  152. for (i=0; i<100; ++i)
  153. {
  154. accL += bufferL[i]*FIR[i];
  155. accR += bufferR[i]*FIR[i];
  156. }*/
  157.  
  158.  
  159. /*int i;
  160. for (i=5184; i>0; --i)
  161. {
  162. buf[i] = buf[i-1];
  163. }
  164. buf[0] = iChannel0LeftIn/2 + iChannel0RightIn/2;*/
  165.  
  166. iChannel0LeftOut = echo(iChannel0LeftIn,iChannel0RightIn);
  167. iChannel0RightOut = echo(iChannel0LeftIn,iChannel0RightIn);
  168.  
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement