summaryrefslogtreecommitdiffstats
path: root/FFT_Test/reverb_test.hcc
diff options
context:
space:
mode:
Diffstat (limited to 'FFT_Test/reverb_test.hcc')
-rw-r--r--FFT_Test/reverb_test.hcc396
1 files changed, 396 insertions, 0 deletions
diff --git a/FFT_Test/reverb_test.hcc b/FFT_Test/reverb_test.hcc
new file mode 100644
index 0000000..d4fafdb
--- /dev/null
+++ b/FFT_Test/reverb_test.hcc
@@ -0,0 +1,396 @@
+/****************************************************************
+* *
+* Copyright (C) 1991-2003 Celoxica Ltd. All rights reserved. *
+* *
+*****************************************************************
+* *
+* Project : PAL *
+* Date : 31 JAN 2003 *
+* File : reverb.hcc *
+* Author : Matthew Aubury (MA) *
+* Contributors: *
+* *
+* Description: *
+* Simple audio reverb. *
+* *
+* Date Version Author Reason for change *
+* *
+* 29 OCT 2002 1.00 MA Created *
+* *
+****************************************************************/
+//#define PAL_TARGET_CLOCK_RATE 50000000
+#define PAL_TARGET_CLOCK_RATE 25175000
+
+#include <stdlib.hch>
+#include "pal_master.hch"
+
+#include "debug.hch"
+
+#include "fft.hch"
+/*
+ * Forward declarations
+ */
+//static macro proc RunReverb (AudioIn, AudioOut);
+static macro proc RunFFT (AudioIn, AudioOut);
+static macro expr ClockRate = PAL_ACTUAL_CLOCK_RATE;
+
+mpram //Multiport block RAM
+{
+ ram signed 16 write[256];
+ rom signed 16 read[256];
+} audio_buffer_in with { block = "BlockRAM"};
+
+mpram
+{
+ ram signed 16 port1[256];
+ ram signed 16 port2[256];
+}audio_buffer_out with { block = "BlockRAM"};
+
+signed 16 *audioptr_in1,*audioptr_in2,*audioptr_in3,*audioptr_in4;
+signed 16 *audioptr_out1,*audioptr_out2;
+signed 16 *audioptr_temp;
+
+/*
+ * Main program
+ */
+void main (void)
+{
+ macro expr AudioIn = PalAudioInCT (0);
+ macro expr AudioOut = PalAudioOutCT (0);
+
+ /*
+ * Check we've got everything we need
+ */
+ PalVersionRequire (1, 2);
+ PalAudioInRequire (1);
+ PalAudioOutRequire (1);
+ PalDataPortRequire (1);
+
+
+ /*
+ * Run
+ */
+ par
+ {
+ PalAudioInRun (AudioIn, ClockRate);
+ PalAudioOutRun (AudioOut, ClockRate);
+ PalDataPortRun (PalRS232PortCT(0), PAL_ACTUAL_CLOCK_RATE );
+
+
+ seq
+ {
+ par
+ {
+ PalAudioInEnable (AudioIn);
+ PalAudioOutEnable (AudioOut);
+ PalDataPortEnable (PalRS232PortCT(0));
+ }
+
+ RC200AudioInSetInput(RC200AudioInLineIn);
+ RC200AudioInSetGain(0,7,7);
+ PalAudioInSetSampleRate (AudioIn, 44100);
+ PalAudioOutSetSampleRate (AudioOut, 44100);
+
+ RunFFT(AudioIn, AudioOut);
+ }
+ }
+}
+
+#define M 4
+#define N (1<<M)
+
+/*
+ * FFT routine
+ */
+static macro proc RunFFT (AudioIn, AudioOut)
+{
+ unsigned 6 sample_count;
+ unsigned 8 count, i;
+// unsigned 16 scount, temp;
+
+ unsigned 1 FFT_Sync;
+ macro expr OW = PalAudioOutGetMaxDataWidthCT();
+ macro expr IW = PalAudioInGetMaxDataWidthCT();
+ signed LeftNew, RightNew;
+ signed Output_sample;
+
+ //pointers for double and quadruple buffering:
+ audioptr_in1=&audio_buffer_in.write[0];
+ audioptr_in2=&audio_buffer_in.write[64];
+ audioptr_in3=&audio_buffer_in.write[128];
+ audioptr_in4=&audio_buffer_in.write[192];
+
+ audioptr_out1=&audio_buffer_out.port1[0];
+ audioptr_out2=&audio_buffer_out.port2[64];
+
+audio_buffer_in.write[0] = 128;
+audio_buffer_in.write[1] = 197;
+audio_buffer_in.write[2] = 244;
+audio_buffer_in.write[3] = 254;
+audio_buffer_in.write[4] = 224;
+audio_buffer_in.write[5] = 164;
+audio_buffer_in.write[6] = 92;
+audio_buffer_in.write[7] = 31;
+audio_buffer_in.write[8] = 1;
+audio_buffer_in.write[9] = 11;
+audio_buffer_in.write[10] = 58;
+audio_buffer_in.write[11] = 127;
+audio_buffer_in.write[12] = 196;
+audio_buffer_in.write[13] = 244;
+audio_buffer_in.write[14] = 254;
+audio_buffer_in.write[15] = 225;
+audio_buffer_in.write[16] = 164;
+audio_buffer_in.write[17] = 92;
+audio_buffer_in.write[18] = 31;
+audio_buffer_in.write[19] = 1;
+audio_buffer_in.write[20] = 11;
+audio_buffer_in.write[21] = 57;
+audio_buffer_in.write[22] = 126;
+audio_buffer_in.write[23] = 196;
+audio_buffer_in.write[24] = 243;
+audio_buffer_in.write[25] = 254;
+audio_buffer_in.write[26] = 225;
+audio_buffer_in.write[27] = 165;
+audio_buffer_in.write[28] = 93;
+audio_buffer_in.write[29] = 32;
+audio_buffer_in.write[30] = 1;
+audio_buffer_in.write[31] = 10;
+audio_buffer_in.write[32] = 57;
+audio_buffer_in.write[33] = 126;
+audio_buffer_in.write[34] = 195;
+audio_buffer_in.write[35] = 243;
+audio_buffer_in.write[36] = 254;
+audio_buffer_in.write[37] = 226;
+audio_buffer_in.write[38] = 165;
+audio_buffer_in.write[39] = 93;
+audio_buffer_in.write[40] = 32;
+audio_buffer_in.write[41] = 1;
+audio_buffer_in.write[42] = 10;
+audio_buffer_in.write[43] = 56;
+audio_buffer_in.write[44] = 125;
+audio_buffer_in.write[45] = 195;
+audio_buffer_in.write[46] = 243;
+audio_buffer_in.write[47] = 255;
+audio_buffer_in.write[48] = 226;
+audio_buffer_in.write[49] = 166;
+audio_buffer_in.write[50] = 94;
+audio_buffer_in.write[51] = 33;
+audio_buffer_in.write[52] = 1;
+audio_buffer_in.write[53] = 10;
+audio_buffer_in.write[54] = 56;
+audio_buffer_in.write[55] = 125;
+audio_buffer_in.write[56] = 194;
+audio_buffer_in.write[57] = 243;
+audio_buffer_in.write[58] = 255;
+audio_buffer_in.write[59] = 226;
+audio_buffer_in.write[60] = 167;
+audio_buffer_in.write[61] = 95;
+audio_buffer_in.write[62] = 33;
+audio_buffer_in.write[63] = 1;
+audio_buffer_in.write[64] = 10;
+audio_buffer_in.write[65] = 55;
+audio_buffer_in.write[66] = 124;
+audio_buffer_in.write[67] = 194;
+audio_buffer_in.write[68] = 242;
+audio_buffer_in.write[69] = 255;
+audio_buffer_in.write[70] = 227;
+audio_buffer_in.write[71] = 167;
+audio_buffer_in.write[72] = 95;
+audio_buffer_in.write[73] = 33;
+audio_buffer_in.write[74] = 1;
+audio_buffer_in.write[75] = 9;
+audio_buffer_in.write[76] = 55;
+audio_buffer_in.write[77] = 123;
+audio_buffer_in.write[78] = 193;
+audio_buffer_in.write[79] = 242;
+audio_buffer_in.write[80] = 255;
+audio_buffer_in.write[81] = 227;
+audio_buffer_in.write[82] = 168;
+audio_buffer_in.write[83] = 96;
+audio_buffer_in.write[84] = 34;
+audio_buffer_in.write[85] = 2;
+audio_buffer_in.write[86] = 9;
+audio_buffer_in.write[87] = 54;
+audio_buffer_in.write[88] = 123;
+audio_buffer_in.write[89] = 193;
+audio_buffer_in.write[90] = 242;
+audio_buffer_in.write[91] = 255;
+audio_buffer_in.write[92] = 227;
+audio_buffer_in.write[93] = 168;
+audio_buffer_in.write[94] = 96;
+audio_buffer_in.write[95] = 34;
+audio_buffer_in.write[96] = 2;
+audio_buffer_in.write[97] = 9;
+audio_buffer_in.write[98] = 54;
+audio_buffer_in.write[99] = 122;
+audio_buffer_in.write[100] = 192;
+audio_buffer_in.write[101] = 242;
+audio_buffer_in.write[102] = 255;
+audio_buffer_in.write[103] = 228;
+audio_buffer_in.write[104] = 169;
+audio_buffer_in.write[105] = 97;
+audio_buffer_in.write[106] = 35;
+audio_buffer_in.write[107] = 2;
+audio_buffer_in.write[108] = 9;
+audio_buffer_in.write[109] = 53;
+audio_buffer_in.write[110] = 122;
+audio_buffer_in.write[111] = 192;
+audio_buffer_in.write[112] = 241;
+audio_buffer_in.write[113] = 255;
+audio_buffer_in.write[114] = 228;
+audio_buffer_in.write[115] = 169;
+audio_buffer_in.write[116] = 97;
+audio_buffer_in.write[117] = 35;
+audio_buffer_in.write[118] = 2;
+audio_buffer_in.write[119] = 9;
+audio_buffer_in.write[120] = 53;
+audio_buffer_in.write[121] = 121;
+audio_buffer_in.write[122] = 191;
+audio_buffer_in.write[123] = 241;
+audio_buffer_in.write[124] = 255;
+audio_buffer_in.write[125] = 228;
+audio_buffer_in.write[126] = 170;
+audio_buffer_in.write[127] = 98;
+audio_buffer_in.write[128] = 35;
+audio_buffer_in.write[129] = 2;
+audio_buffer_in.write[130] = 8;
+audio_buffer_in.write[131] = 53;
+audio_buffer_in.write[132] = 120;
+audio_buffer_in.write[133] = 191;
+audio_buffer_in.write[134] = 241;
+audio_buffer_in.write[135] = 255;
+audio_buffer_in.write[136] = 229;
+audio_buffer_in.write[137] = 170;
+audio_buffer_in.write[138] = 99;
+audio_buffer_in.write[139] = 36;
+audio_buffer_in.write[140] = 2;
+audio_buffer_in.write[141] = 8;
+audio_buffer_in.write[142] = 52;
+audio_buffer_in.write[143] = 120;
+audio_buffer_in.write[144] = 190;
+audio_buffer_in.write[145] = 241;
+audio_buffer_in.write[146] = 255;
+audio_buffer_in.write[147] = 229;
+audio_buffer_in.write[148] = 171;
+audio_buffer_in.write[149] = 99;
+audio_buffer_in.write[150] = 36;
+audio_buffer_in.write[151] = 2;
+audio_buffer_in.write[152] = 8;
+audio_buffer_in.write[153] = 52;
+audio_buffer_in.write[154] = 119;
+audio_buffer_in.write[155] = 190;
+audio_buffer_in.write[156] = 240;
+audio_buffer_in.write[157] = 255;
+audio_buffer_in.write[158] = 230;
+audio_buffer_in.write[159] = 172;
+audio_buffer_in.write[160] = 100;
+audio_buffer_in.write[161] = 37;
+audio_buffer_in.write[162] = 2;
+audio_buffer_in.write[163] = 8;
+audio_buffer_in.write[164] = 51;
+audio_buffer_in.write[165] = 119;
+audio_buffer_in.write[166] = 189;
+audio_buffer_in.write[167] = 240;
+audio_buffer_in.write[168] = 255;
+audio_buffer_in.write[169] = 230;
+audio_buffer_in.write[170] = 172;
+audio_buffer_in.write[171] = 100;
+audio_buffer_in.write[172] = 37;
+audio_buffer_in.write[173] = 2;
+audio_buffer_in.write[174] = 8;
+audio_buffer_in.write[175] = 51;
+audio_buffer_in.write[176] = 118;
+audio_buffer_in.write[177] = 189;
+audio_buffer_in.write[178] = 240;
+audio_buffer_in.write[179] = 255;
+audio_buffer_in.write[180] = 230;
+audio_buffer_in.write[181] = 173;
+audio_buffer_in.write[182] = 101;
+audio_buffer_in.write[183] = 37;
+audio_buffer_in.write[184] = 3;
+audio_buffer_in.write[185] = 7;
+audio_buffer_in.write[186] = 50;
+audio_buffer_in.write[187] = 118;
+audio_buffer_in.write[188] = 188;
+audio_buffer_in.write[189] = 239;
+audio_buffer_in.write[190] = 255;
+audio_buffer_in.write[191] = 231;
+audio_buffer_in.write[192] = 173;
+audio_buffer_in.write[193] = 101;
+audio_buffer_in.write[194] = 38;
+audio_buffer_in.write[195] = 3;
+audio_buffer_in.write[196] = 7;
+audio_buffer_in.write[197] = 50;
+audio_buffer_in.write[198] = 117;
+audio_buffer_in.write[199] = 188;
+audio_buffer_in.write[200] = 239;
+audio_buffer_in.write[201] = 255;
+audio_buffer_in.write[202] = 231;
+audio_buffer_in.write[203] = 174;
+audio_buffer_in.write[204] = 102;
+audio_buffer_in.write[205] = 38;
+audio_buffer_in.write[206] = 3;
+audio_buffer_in.write[207] = 7;
+audio_buffer_in.write[208] = 49;
+audio_buffer_in.write[209] = 116;
+audio_buffer_in.write[210] = 187;
+audio_buffer_in.write[211] = 239;
+audio_buffer_in.write[212] = 255;
+audio_buffer_in.write[213] = 231;
+audio_buffer_in.write[214] = 174;
+audio_buffer_in.write[215] = 103;
+audio_buffer_in.write[216] = 39;
+audio_buffer_in.write[217] = 3;
+audio_buffer_in.write[218] = 7;
+audio_buffer_in.write[219] = 49;
+audio_buffer_in.write[220] = 116;
+audio_buffer_in.write[221] = 187;
+audio_buffer_in.write[222] = 239;
+audio_buffer_in.write[223] = 255;
+audio_buffer_in.write[224] = 232;
+audio_buffer_in.write[225] = 175;
+audio_buffer_in.write[226] = 103;
+audio_buffer_in.write[227] = 39;
+audio_buffer_in.write[228] = 3;
+audio_buffer_in.write[229] = 7;
+audio_buffer_in.write[230] = 48;
+audio_buffer_in.write[231] = 115;
+audio_buffer_in.write[232] = 186;
+audio_buffer_in.write[233] = 238;
+audio_buffer_in.write[234] = 255;
+audio_buffer_in.write[235] = 232;
+audio_buffer_in.write[236] = 175;
+audio_buffer_in.write[237] = 104;
+audio_buffer_in.write[238] = 40;
+audio_buffer_in.write[239] = 3;
+audio_buffer_in.write[240] = 6;
+audio_buffer_in.write[241] = 48;
+audio_buffer_in.write[242] = 115;
+audio_buffer_in.write[243] = 186;
+audio_buffer_in.write[244] = 238;
+audio_buffer_in.write[245] = 255;
+audio_buffer_in.write[246] = 232;
+audio_buffer_in.write[247] = 176;
+audio_buffer_in.write[248] = 104;
+audio_buffer_in.write[249] = 40;
+audio_buffer_in.write[250] = 3;
+audio_buffer_in.write[251] = 6;
+audio_buffer_in.write[252] = 47;
+audio_buffer_in.write[253] = 114;
+audio_buffer_in.write[254] = 185;
+audio_buffer_in.write[255] = 238;
+
+
+perform_fft(audioptr_in1);
+perform_ifft(audioptr_out1);
+i=0;
+do
+{
+ print_hex_value((unsigned)audioptr_out1[i]);
+ print_string(" ");
+ print_hex_value((unsigned)audioptr_in1[i]);
+ print_eol();
+ i++;
+}while(i);
+}// end function
+