@@ -17,7 +17,13 @@ Channel::Channel(const size_t index, const size_t dftsize, const double samplera
1717 config.samplerate = samplerate;
1818 config.concertpitch = concertpitch;
1919
20- config.phase .resize (dftsize);
20+ config.chnfreqs .resize (dftsize);
21+ config.chnphase .resize (dftsize);
22+
23+ for (size_t i = 0 ; i < dftsize; ++i)
24+ {
25+ config.chnfreqs [i] = hz * i;
26+ }
2127}
2228
2329Channel::Channel (const Channel& other) :
@@ -52,20 +58,20 @@ double Channel::synthesize(const std::span<std::complex<double>> dft,
5258{
5359 assert_true (dft.size () == config.dftsize , " Invalid DFT size!" );
5460
55- const double tophase = (2 * std::numbers::pi) / config.samplerate ;
61+ const double freq2phase = (2 * std::numbers::pi) / config.samplerate ;
5662
57- const double freq = config.freq ;
5863 const double gain = config.gain ;
5964
60- auto & phase = config.phase ;
65+ const auto & chnfreqs = config.chnfreqs ;
66+ auto & chnphase = config.chnphase ;
6167
6268 for (size_t i = 1 ; i < dft.size () - 1 ; ++i)
6369 {
64- const double chnfreq = freq * i ;
65- const double pvcfreq = pvcfreqs[i] / dftfreqs[i] ;
70+ const double chnfreq = chnfreqs[i] ;
71+ const double pvcfreq = pvcfreqs[i];
6672 const double newfreq = chnfreq * pvcfreq;
6773
68- phase [i] += newfreq * tophase ;
74+ chnphase [i] += newfreq * freq2phase ;
6975
7076 if (newfreq <= dftfreqs.front ())
7177 {
@@ -77,7 +83,7 @@ double Channel::synthesize(const std::span<std::complex<double>> dft,
7783 continue ;
7884 }
7985
80- dft[i] += std::polar (gain, phase [i]);
86+ dft[i] += std::polar (gain, chnphase [i]);
8187 }
8288
8389 return gain;
0 commit comments