summaryrefslogtreecommitdiffstats
path: root/FFT_Test/reverb_old.hcc
diff options
context:
space:
mode:
Diffstat (limited to 'FFT_Test/reverb_old.hcc')
-rw-r--r--FFT_Test/reverb_old.hcc385
1 files changed, 385 insertions, 0 deletions
diff --git a/FFT_Test/reverb_old.hcc b/FFT_Test/reverb_old.hcc
new file mode 100644
index 0000000..58ca48b
--- /dev/null
+++ b/FFT_Test/reverb_old.hcc
@@ -0,0 +1,385 @@
+/****************************************************************
+* *
+* 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
+
+
+#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 //Multiport block RAM
+{
+ ram signed 16 write[256];
+ rom signed 16 read[256];
+} audio_buffer_out with { block = "BlockRAM"};
+
+
+/*
+ * 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);
+ //PalSevenSegRequire (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));
+ //PalSevenSegEnable (PalSevenSegCT (0));
+ }
+ RC200AudioInSetInput(RC200AudioInLineIn);
+ RC200AudioInSetGain(0,7,7);
+ PalAudioInSetSampleRate (AudioIn, 44100);
+ PalAudioOutSetSampleRate (AudioOut, 44100);
+
+ RunFFT(AudioIn, AudioOut);
+ //RunReverb (AudioIn, AudioOut);
+
+ }
+ }
+}
+
+#define M 4
+#define N (1<<M)
+
+/*
+ * FFT routine
+ */
+static macro proc RunFFT (AudioIn, AudioOut)
+{
+ unsigned 8 i;
+ unsigned 8 count;
+
+// PalSevenSegWriteDigit (PalSevenSegCT (0), 0, 0);
+ audio_buffer_in.write[0] = 128;
+audio_buffer_in.write[0] = 0x80;
+audio_buffer_in.write[1] = 0xC5;
+audio_buffer_in.write[2] = 0xF4;
+audio_buffer_in.write[3] = 0xFE;
+audio_buffer_in.write[4] = 0xE0;
+audio_buffer_in.write[5] = 0xA4;
+audio_buffer_in.write[6] = 0x5C;
+audio_buffer_in.write[7] = 0x1F;
+audio_buffer_in.write[8] = 0x1;
+audio_buffer_in.write[9] = 0xB;
+audio_buffer_in.write[10] = 0x3A;
+audio_buffer_in.write[11] = 0x7F;
+audio_buffer_in.write[12] = 0xC4;
+audio_buffer_in.write[13] = 0xF4;
+audio_buffer_in.write[14] = 0xFE;
+audio_buffer_in.write[15] = 0xE1;
+audio_buffer_in.write[16] = 0xA4;
+audio_buffer_in.write[17] = 0x5C;
+audio_buffer_in.write[18] = 0x1F;
+audio_buffer_in.write[19] = 0x1;
+audio_buffer_in.write[20] = 0xB;
+audio_buffer_in.write[21] = 0x39;
+audio_buffer_in.write[22] = 0x7E;
+audio_buffer_in.write[23] = 0xC4;
+audio_buffer_in.write[24] = 0xF3;
+audio_buffer_in.write[25] = 0xFE;
+audio_buffer_in.write[26] = 0xE1;
+audio_buffer_in.write[27] = 0xA5;
+audio_buffer_in.write[28] = 0x5D;
+audio_buffer_in.write[29] = 0x20;
+audio_buffer_in.write[30] = 0x1;
+audio_buffer_in.write[31] = 0xA;
+audio_buffer_in.write[32] = 0x39;
+audio_buffer_in.write[33] = 0x7E;
+audio_buffer_in.write[34] = 0xC3;
+audio_buffer_in.write[35] = 0xF3;
+audio_buffer_in.write[36] = 0xFE;
+audio_buffer_in.write[37] = 0xE2;
+audio_buffer_in.write[38] = 0xA5;
+audio_buffer_in.write[39] = 0x5D;
+audio_buffer_in.write[40] = 0x20;
+audio_buffer_in.write[41] = 0x1;
+audio_buffer_in.write[42] = 0xA;
+audio_buffer_in.write[43] = 0x38;
+audio_buffer_in.write[44] = 0x7D;
+audio_buffer_in.write[45] = 0xC3;
+audio_buffer_in.write[46] = 0xF3;
+audio_buffer_in.write[47] = 0xFF;
+audio_buffer_in.write[48] = 0xE2;
+audio_buffer_in.write[49] = 0xA6;
+audio_buffer_in.write[50] = 0x5E;
+audio_buffer_in.write[51] = 0x21;
+audio_buffer_in.write[52] = 0x1;
+audio_buffer_in.write[53] = 0xA;
+audio_buffer_in.write[54] = 0x38;
+audio_buffer_in.write[55] = 0x7D;
+audio_buffer_in.write[56] = 0xC2;
+audio_buffer_in.write[57] = 0xF3;
+audio_buffer_in.write[58] = 0xFF;
+audio_buffer_in.write[59] = 0xE2;
+audio_buffer_in.write[60] = 0xA7;
+audio_buffer_in.write[61] = 0x5F;
+audio_buffer_in.write[62] = 0x21;
+audio_buffer_in.write[63] = 0x1;
+audio_buffer_in.write[64] = 0xA;
+audio_buffer_in.write[65] = 0x37;
+audio_buffer_in.write[66] = 0x7C;
+audio_buffer_in.write[67] = 0xC2;
+audio_buffer_in.write[68] = 0xF2;
+audio_buffer_in.write[69] = 0xFF;
+audio_buffer_in.write[70] = 0xE3;
+audio_buffer_in.write[71] = 0xA7;
+audio_buffer_in.write[72] = 0x5F;
+audio_buffer_in.write[73] = 0x21;
+audio_buffer_in.write[74] = 0x1;
+audio_buffer_in.write[75] = 0x9;
+audio_buffer_in.write[76] = 0x37;
+audio_buffer_in.write[77] = 0x7B;
+audio_buffer_in.write[78] = 0xC1;
+audio_buffer_in.write[79] = 0xF2;
+audio_buffer_in.write[80] = 0xFF;
+audio_buffer_in.write[81] = 0xE3;
+audio_buffer_in.write[82] = 0xA8;
+audio_buffer_in.write[83] = 0x60;
+audio_buffer_in.write[84] = 0x22;
+audio_buffer_in.write[85] = 0x2;
+audio_buffer_in.write[86] = 0x9;
+audio_buffer_in.write[87] = 0x36;
+audio_buffer_in.write[88] = 0x7B;
+audio_buffer_in.write[89] = 0xC1;
+audio_buffer_in.write[90] = 0xF2;
+audio_buffer_in.write[91] = 0xFF;
+audio_buffer_in.write[92] = 0xE3;
+audio_buffer_in.write[93] = 0xA8;
+audio_buffer_in.write[94] = 0x60;
+audio_buffer_in.write[95] = 0x22;
+audio_buffer_in.write[96] = 0x2;
+audio_buffer_in.write[97] = 0x9;
+audio_buffer_in.write[98] = 0x36;
+audio_buffer_in.write[99] = 0x7A;
+audio_buffer_in.write[100] = 0xC0;
+audio_buffer_in.write[101] = 0xF2;
+audio_buffer_in.write[102] = 0xFF;
+audio_buffer_in.write[103] = 0xE4;
+audio_buffer_in.write[104] = 0xA9;
+audio_buffer_in.write[105] = 0x61;
+audio_buffer_in.write[106] = 0x23;
+audio_buffer_in.write[107] = 0x2;
+audio_buffer_in.write[108] = 0x9;
+audio_buffer_in.write[109] = 0x35;
+audio_buffer_in.write[110] = 0x7A;
+audio_buffer_in.write[111] = 0xC0;
+audio_buffer_in.write[112] = 0xF1;
+audio_buffer_in.write[113] = 0xFF;
+audio_buffer_in.write[114] = 0xE4;
+audio_buffer_in.write[115] = 0xA9;
+audio_buffer_in.write[116] = 0x61;
+audio_buffer_in.write[117] = 0x23;
+audio_buffer_in.write[118] = 0x2;
+audio_buffer_in.write[119] = 0x9;
+audio_buffer_in.write[120] = 0x35;
+audio_buffer_in.write[121] = 0x79;
+audio_buffer_in.write[122] = 0xBF;
+audio_buffer_in.write[123] = 0xF1;
+audio_buffer_in.write[124] = 0xFF;
+audio_buffer_in.write[125] = 0xE4;
+audio_buffer_in.write[126] = 0xAA;
+audio_buffer_in.write[127] = 0x62;
+audio_buffer_in.write[128] = 0x23;
+audio_buffer_in.write[129] = 0x2;
+audio_buffer_in.write[130] = 0x8;
+audio_buffer_in.write[131] = 0x35;
+audio_buffer_in.write[132] = 0x78;
+audio_buffer_in.write[133] = 0xBF;
+audio_buffer_in.write[134] = 0xF1;
+audio_buffer_in.write[135] = 0xFF;
+audio_buffer_in.write[136] = 0xE5;
+audio_buffer_in.write[137] = 0xAA;
+audio_buffer_in.write[138] = 0x63;
+audio_buffer_in.write[139] = 0x24;
+audio_buffer_in.write[140] = 0x2;
+audio_buffer_in.write[141] = 0x8;
+audio_buffer_in.write[142] = 0x34;
+audio_buffer_in.write[143] = 0x78;
+audio_buffer_in.write[144] = 0xBE;
+audio_buffer_in.write[145] = 0xF1;
+audio_buffer_in.write[146] = 0xFF;
+audio_buffer_in.write[147] = 0xE5;
+audio_buffer_in.write[148] = 0xAB;
+audio_buffer_in.write[149] = 0x63;
+audio_buffer_in.write[150] = 0x24;
+audio_buffer_in.write[151] = 0x2;
+audio_buffer_in.write[152] = 0x8;
+audio_buffer_in.write[153] = 0x34;
+audio_buffer_in.write[154] = 0x77;
+audio_buffer_in.write[155] = 0xBE;
+audio_buffer_in.write[156] = 0xF0;
+audio_buffer_in.write[157] = 0xFF;
+audio_buffer_in.write[158] = 0xE6;
+audio_buffer_in.write[159] = 0xAC;
+audio_buffer_in.write[160] = 0x64;
+audio_buffer_in.write[161] = 0x25;
+audio_buffer_in.write[162] = 0x2;
+audio_buffer_in.write[163] = 0x8;
+audio_buffer_in.write[164] = 0x33;
+audio_buffer_in.write[165] = 0x77;
+audio_buffer_in.write[166] = 0xBD;
+audio_buffer_in.write[167] = 0xF0;
+audio_buffer_in.write[168] = 0xFF;
+audio_buffer_in.write[169] = 0xE6;
+audio_buffer_in.write[170] = 0xAC;
+audio_buffer_in.write[171] = 0x64;
+audio_buffer_in.write[172] = 0x25;
+audio_buffer_in.write[173] = 0x2;
+audio_buffer_in.write[174] = 0x8;
+audio_buffer_in.write[175] = 0x33;
+audio_buffer_in.write[176] = 0x76;
+audio_buffer_in.write[177] = 0xBD;
+audio_buffer_in.write[178] = 0xF0;
+audio_buffer_in.write[179] = 0xFF;
+audio_buffer_in.write[180] = 0xE6;
+audio_buffer_in.write[181] = 0xAD;
+audio_buffer_in.write[182] = 0x65;
+audio_buffer_in.write[183] = 0x25;
+audio_buffer_in.write[184] = 0x3;
+audio_buffer_in.write[185] = 0x7;
+audio_buffer_in.write[186] = 0x32;
+audio_buffer_in.write[187] = 0x76;
+audio_buffer_in.write[188] = 0xBC;
+audio_buffer_in.write[189] = 0xEF;
+audio_buffer_in.write[190] = 0xFF;
+audio_buffer_in.write[191] = 0xE7;
+audio_buffer_in.write[192] = 0xAD;
+audio_buffer_in.write[193] = 0x65;
+audio_buffer_in.write[194] = 0x26;
+audio_buffer_in.write[195] = 0x3;
+audio_buffer_in.write[196] = 0x7;
+audio_buffer_in.write[197] = 0x32;
+audio_buffer_in.write[198] = 0x75;
+audio_buffer_in.write[199] = 0xBC;
+audio_buffer_in.write[200] = 0xEF;
+audio_buffer_in.write[201] = 0xFF;
+audio_buffer_in.write[202] = 0xE7;
+audio_buffer_in.write[203] = 0xAE;
+audio_buffer_in.write[204] = 0x66;
+audio_buffer_in.write[205] = 0x26;
+audio_buffer_in.write[206] = 0x3;
+audio_buffer_in.write[207] = 0x7;
+audio_buffer_in.write[208] = 0x31;
+audio_buffer_in.write[209] = 0x74;
+audio_buffer_in.write[210] = 0xBB;
+audio_buffer_in.write[211] = 0xEF;
+audio_buffer_in.write[212] = 0xFF;
+audio_buffer_in.write[213] = 0xE7;
+audio_buffer_in.write[214] = 0xAE;
+audio_buffer_in.write[215] = 0x67;
+audio_buffer_in.write[216] = 0x27;
+audio_buffer_in.write[217] = 0x3;
+audio_buffer_in.write[218] = 0x7;
+audio_buffer_in.write[219] = 0x31;
+audio_buffer_in.write[220] = 0x74;
+audio_buffer_in.write[221] = 0xBB;
+audio_buffer_in.write[222] = 0xEF;
+audio_buffer_in.write[223] = 0xFF;
+audio_buffer_in.write[224] = 0xE8;
+audio_buffer_in.write[225] = 0xAF;
+audio_buffer_in.write[226] = 0x67;
+audio_buffer_in.write[227] = 0x27;
+audio_buffer_in.write[228] = 0x3;
+audio_buffer_in.write[229] = 0x7;
+audio_buffer_in.write[230] = 0x30;
+audio_buffer_in.write[231] = 0x73;
+audio_buffer_in.write[232] = 0xBA;
+audio_buffer_in.write[233] = 0xEE;
+audio_buffer_in.write[234] = 0xFF;
+audio_buffer_in.write[235] = 0xE8;
+audio_buffer_in.write[236] = 0xAF;
+audio_buffer_in.write[237] = 0x68;
+audio_buffer_in.write[238] = 0x28;
+audio_buffer_in.write[239] = 0x3;
+audio_buffer_in.write[240] = 0x6;
+audio_buffer_in.write[241] = 0x30;
+audio_buffer_in.write[242] = 0x73;
+audio_buffer_in.write[243] = 0xBA;
+audio_buffer_in.write[244] = 0xEE;
+audio_buffer_in.write[245] = 0xFF;
+audio_buffer_in.write[246] = 0xE8;
+audio_buffer_in.write[247] = 0xB0;
+audio_buffer_in.write[248] = 0x68;
+audio_buffer_in.write[249] = 0x28;
+audio_buffer_in.write[250] = 0x3;
+audio_buffer_in.write[251] = 0x6;
+audio_buffer_in.write[252] = 0x2F;
+audio_buffer_in.write[253] = 0x72;
+audio_buffer_in.write[254] = 0xB9;
+audio_buffer_in.write[255] = 0xEE;
+
+ //PalSevenSegWriteDigit (PalSevenSegCT (0), 1, 0);
+
+ //audio_buffer_in.write[0] = 0x0000;
+// for (count=16; count<64; count++)
+// {
+// audio_buffer_in.write[count] = audio_buffer_in.read[count-16];
+// }
+
+ perform_fft(audio_buffer_in.read);
+ perform_ifft(audio_buffer_out.write);
+
+ //PalSevenSegWriteDigit (PalSevenSegCT (0), 3, 1);
+ for(i=0;;i++)
+ {
+ PalAudioOutWrite(AudioOut,(signed OW) (audio_buffer_in.read[i]@0), (signed OW) (audio_buffer_out.read[i]@0));
+ }
+}
+