summaryrefslogtreecommitdiffstats
path: root/Graphic_Equalizer_v1.0/doc/html/runfft_8hcc-source.html
diff options
context:
space:
mode:
Diffstat (limited to 'Graphic_Equalizer_v1.0/doc/html/runfft_8hcc-source.html')
-rw-r--r--Graphic_Equalizer_v1.0/doc/html/runfft_8hcc-source.html168
1 files changed, 168 insertions, 0 deletions
diff --git a/Graphic_Equalizer_v1.0/doc/html/runfft_8hcc-source.html b/Graphic_Equalizer_v1.0/doc/html/runfft_8hcc-source.html
new file mode 100644
index 0000000..28ce4b0
--- /dev/null
+++ b/Graphic_Equalizer_v1.0/doc/html/runfft_8hcc-source.html
@@ -0,0 +1,168 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Graphic Equalizer 2: C:/Project Marcel &amp; Oliver/Graphic_Equalizer/src/runfft.hcc Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.9.1 -->
+<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">C:</a>&nbsp;/&nbsp;<a class="el" href="dir_000001.html">Project Marcel &amp; Oliver</a>&nbsp;/&nbsp;<a class="el" href="dir_000002.html">Graphic_Equalizer</a>&nbsp;/&nbsp;<a class="el" href="dir_000004.html">src</a></div>
+<h1>runfft.hcc</h1><a href="runfft_8hcc.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001
+00020 <span class="preprocessor">#include &lt;stdlib.hch&gt;</span>
+00021 <span class="preprocessor">#include "pal_master.hch"</span>
+00022
+00023 <span class="preprocessor">#include "<a class="code" href="configuration_8hch.html">configuration.hch</a>"</span>
+00024 <span class="preprocessor">#if USE_RUNFFT</span>
+00025 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="audio_8hch.html">audio.hch</a>"</span>
+00026 <span class="preprocessor">#include "<a class="code" href="fft_8hch.html">fft.hch</a>"</span>
+00027
+00028 <span class="preprocessor">#if HAVE_DEBUG</span>
+00029 <span class="preprocessor"></span><span class="preprocessor"> #include "debug.hch"</span>
+00030 <span class="preprocessor">#endif</span>
+00031 <span class="preprocessor"></span>
+00032 <span class="comment">/*</span>
+00033 <span class="comment"> * Forward declarations</span>
+00034 <span class="comment"> */</span>
+00035 <span class="keyword">static</span> macro expr ClockRate = PAL_ACTUAL_CLOCK_RATE;
+00036 <span class="preprocessor">#if HARDWARE_MULTIPLY</span>
+00037 <span class="preprocessor"></span><span class="comment">//input buffer</span>
+00038 ram <span class="keywordtype">signed</span> 18 audio_buffer_in[256] with { block = <span class="stringliteral">"BlockRAM"</span>};
+00039 <span class="comment">//output buffer</span>
+00040 ram <span class="keywordtype">signed</span> 18 audio_buffer_out[128] with { block = <span class="stringliteral">"BlockRAM"</span>};
+00041 <span class="preprocessor">#else</span>
+00042 <span class="preprocessor"></span><span class="comment">//input buffer</span>
+00043 ram <span class="keywordtype">signed</span> 16 audio_buffer_in[256] with { block = <span class="stringliteral">"BlockRAM"</span>};
+00044 <span class="comment">//output buffer</span>
+00045 ram <span class="keywordtype">signed</span> 16 audio_buffer_out[128] with { block = <span class="stringliteral">"BlockRAM"</span>};
+00046 <span class="preprocessor">#endif</span>
+00047 <span class="preprocessor"></span><span class="comment">//EQ settings for the FFT</span>
+00048 ram <span class="keywordtype">unsigned</span> 4 EQ_info[128] with { block = <span class="stringliteral">"BlockRAM"</span>};
+00049 <span class="comment">//EQ settings received from the display</span>
+00050
+00051
+00052 <span class="preprocessor">#if HARDWARE_MULTIPLY</span>
+00053 <span class="preprocessor"></span><span class="keywordtype">signed</span> 18 *audioptr_in1,*audioptr_in2,*audioptr_in3,*audioptr_in4;
+00054
+00055 <span class="keywordtype">signed</span> 18 *audioptr_out1,*audioptr_out2;
+00056
+00057 <span class="keywordtype">unsigned</span> 6 *displayptr1,*displayptr2,*displayptr3,*displayptr4;
+00058 <span class="preprocessor">#else</span>
+00059 <span class="preprocessor"></span><span class="keywordtype">signed</span> 16 *audioptr_in1,*audioptr_in2,*audioptr_in3,*audioptr_in4;
+00060
+00061 <span class="keywordtype">signed</span> 16 *audioptr_out1,*audioptr_out2;
+00062
+00063 <span class="keywordtype">unsigned</span> 6 *displayptr1,*displayptr2,*displayptr3,*displayptr4;
+00064 <span class="preprocessor">#endif</span>
+00065 <span class="preprocessor"></span>
+00076 macro proc <a class="code" href="audio_8hcc.html#a1">audio_main</a>(audiodata, AUDIOIN, AUDIOOUT)
+00077 {
+00078 <span class="keywordtype">signed</span> 18 sample;
+00079 <span class="keywordtype">unsigned</span> 6 sample_count;
+00080 <span class="keywordtype">unsigned</span> 8 i,cycle;
+00081 <span class="keywordtype">unsigned</span> 4 eqinfo;
+00082
+00083 <span class="keywordtype">unsigned</span> 1 FFT_Sync, first;
+00084 macro expr OW = PalAudioOutGetMaxDataWidthCT ();
+00085 macro expr IW = PalAudioInGetMaxDataWidthCT ();
+00086 <span class="keywordtype">signed</span> LeftNew, RightNew;
+00087 <span class="keywordtype">signed</span> Output_sample;
+00088
+00089 ram <span class="keywordtype">unsigned</span> 6 input[64];
+00090
+00091 <span class="comment">//pointers for double and quadruple buffering:</span>
+00092 audioptr_in1 = &amp;audio_buffer_in[0];
+00093 audioptr_in2 = &amp;audio_buffer_in[64];
+00094 audioptr_in3 = &amp;audio_buffer_in[128];
+00095 audioptr_in4 = &amp;audio_buffer_in[192];
+00096
+00097 audioptr_out1 = &amp;audio_buffer_out[0];
+00098 audioptr_out2 = &amp;audio_buffer_out[64];
+00099
+00100 displayptr1 = &amp;audiodata.ifft_info.write[0];
+00101 displayptr2 = &amp;audiodata.ifft_info.write[64];
+00102 displayptr3 = &amp;audiodata.ifft_info.write[128];
+00103 displayptr4 = &amp;audiodata.ifft_info.write[192];
+00104
+00105 FFT_Sync=0;
+00106 par
+00107 {
+00108 <span class="keywordflow">for</span>(;;)
+00109 {
+00110 <span class="keywordflow">if</span> (FFT_Sync) <span class="comment">//if 64 samples are read from ADC...</span>
+00111 {
+00112 par
+00113 {
+00114 <span class="comment">// switch pointers </span>
+00115 audioptr_in1 = audioptr_in2;
+00116 audioptr_in2 = audioptr_in3;
+00117 audioptr_in3 = audioptr_in4;
+00118 audioptr_in4 = audioptr_in1;
+00119
+00120 audioptr_out1 = audioptr_out2;
+00121 audioptr_out2 = audioptr_out1;
+00122
+00123 displayptr1=displayptr2;
+00124 displayptr2=displayptr3;
+00125 displayptr3=displayptr4;
+00126 displayptr4=displayptr1;
+00127
+00128 FFT_Sync = 0;
+00129 }
+00130
+00131 <span class="comment">// FFT calculation</span>
+00132 <a class="code" href="fft_8hcc.html#a4">perform_fft</a>(audioptr_in1);
+00133
+00134 <span class="preprocessor">#if PERFORM_FFT_CALCULATION</span>
+00135 <span class="preprocessor"></span> <a class="code" href="fft_8hcc.html#a6">equalize_audio</a>(&amp;audiodata);
+00136 <span class="preprocessor">#endif</span>
+00137 <span class="preprocessor"></span> <span class="comment">// inverse FFT calculation</span>
+00138 <a class="code" href="fft_8hcc.html#a5">perform_ifft</a>(audioptr_out1,displayptr1);
+00139 }
+00140 <span class="keywordflow">else</span>
+00141 delay;
+00142 }
+00143
+00144 <span class="keywordflow">for</span>(sample_count=0;;)<span class="comment">//store the samples in the inputbuffer</span>
+00145 {
+00146 <span class="keywordflow">if</span> (!FFT_Sync)
+00147 {
+00148 par
+00149 {
+00150 seq
+00151 {
+00152 PalAudioInRead(AUDIOIN, &amp;LeftNew, &amp;RightNew);
+00153 <span class="preprocessor">#if HARDWARE_MULTIPLY </span>
+00154 <span class="preprocessor"></span> audioptr_in1[sample_count] = LeftNew;<span class="comment">//drop 2 LSB's</span>
+00155 <span class="preprocessor">#else</span>
+00156 <span class="preprocessor"></span> audioptr_in1[sample_count] = (LeftNew\\2);<span class="comment">//drop 2 LSB's</span>
+00157 <span class="preprocessor">#endif</span>
+00158 <span class="preprocessor"></span> sample_count++;
+00159 <span class="keywordflow">if</span> (!sample_count)
+00160 {
+00161 FFT_Sync = 1;
+00162 }
+00163 }
+00164 seq
+00165 {
+00166 Output_sample = audioptr_out2[sample_count];
+00167 }
+00168 }
+00169 }
+00170 <span class="keywordflow">else</span>
+00171 {
+00172 delay;
+00173 }
+00174 }
+00175 <span class="keywordflow">for</span>(;;)
+00176 {
+00177 PalAudioOutWrite(AUDIOOUT,(<span class="keywordtype">signed</span> OW)(Output_sample @ 0),(<span class="keywordtype">signed</span> OW)(Output_sample @ 0));
+00178 }
+00179 }<span class="comment">//end par</span>
+00180 }<span class="comment">// end function</span>
+00181 <span class="preprocessor">#endif</span>
+00182 <span class="preprocessor"></span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Dec 9 14:37:07 2004 for Graphic Equalizer 2 by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address>
+</body>
+</html>