@@ -17,7 +17,6 @@ Channel::Channel(const size_t index, const size_t dftsize, const double samplera
1717 config.samplerate = samplerate;
1818 config.concertpitch = concertpitch;
1919
20- config.freqs .resize (dftsize);
2120 config.phase .resize (dftsize);
2221}
2322
@@ -58,27 +57,22 @@ double Channel::synthesize(const std::span<std::complex<double>> dft,
5857 const double freq = config.freq ;
5958 const double gain = config.gain ;
6059
61- auto & freqs = config.freqs ;
6260 auto & phase = config.phase ;
6361
6462 for (size_t i = 1 ; i < dft.size () - 1 ; ++i)
6563 {
66- const double f0 = pvcfreqs[i];
67- const double f1 = freq * i;
64+ const double chnfreq = freq * i;
65+ const double pvcfreq = pvcfreqs[i] / dftfreqs[i];
66+ const double newfreq = chnfreq * pvcfreq;
6867
69- freqs[i] = f1 * f0 / dftfreqs[i];
70- }
71-
72- for (size_t i = 1 ; i < dft.size () - 1 ; ++i)
73- {
74- phase[i] += freqs[i] * tophase;
68+ phase[i] += newfreq * tophase;
7569
76- if (freqs[i] <= dftfreqs.front ())
70+ if (newfreq <= dftfreqs.front ())
7771 {
7872 continue ;
7973 }
8074
81- if (freqs[i] >= dftfreqs.back ())
75+ if (newfreq >= dftfreqs.back ())
8276 {
8377 continue ;
8478 }
0 commit comments