Hi Bruce, I've had a go at fixing (19), which is now (21), with some more explanation: https://github.com/drowe67/codec2/pull/50/files
Cheers, David On Fri, 2024-04-19 at 18:38 +0800, david wrote: > Hi Bruce, > > Thanks for reading codec2.pdf, and your kind comments. > > Actually I think you've found an error. For that section I was > working > back from the source code, sine.c, est_voicing_mbe() > function. Looking > at the source, the "offset" variable has a negative sign before the > "mr" term you suggested in your analysis. > > Note the source uses different variable names to codec2.pdf, we > haven't gotten around to aligning the source code with the document > nomenclature yet. > I'm travelling at the moment, but will take a closer look when I > return > home in a week or so. > > Thanks, > David > > On Thu, 2024-04-18 at 11:19 -0400, Bruce MacKinnon wrote: > > Hi: > > > > What you all are working on is very interesting. Keep up the great > > work! > > > > I greatly appreciate the creation of the detailed description of > > codec2 (https://github.com/drowe67/codec2/blob/main/doc/codec2.pdf) > > . > > With that document, the code becomes easier to follow. But I have > > a > > question about the math. I’m not that sharp on DSP stuff, so this > > may be an obvious question to you all. If this is the wrong place > > to > > ask, feel free to redirect me. > > > > Page 14, equation 18 makes sense to me - you’re trying to > > characterize the relationship between Sw() and W() within each band > > of Sw(). And the W*(k - ROUND(mr)) also makes sense, since you > > need > > to remove the “repeating” concept from W() - a spectral copy of W() > > is present across the bands of Sw() in the voiced case. It’s like > > a > > modulo w0. > > > > And the fact that the W* becomes W in equation 19 also makes sense > > - > > real/even in the time domain gives you real in the frequency > > domain. > > > > But I can’t figure out how (k - ROUND(mr)) becomes (k + ROUND(mr)) > > in > > equation 19. Certainly W(k - ROUND(mr)) and W(-k + ROUND(mr)) are > > the same (even function in frequency domain), but how does W(k - > > ROUND(mr)) equal W(k + ROUND(mr))? > > > > I’m probably missing some property of the FFT that makes this true. > > > > Thanks in advance, > > > > Bruce KC1FSZ > > > > > > > > > > _______________________________________________ > > Freetel-codec2 mailing list > > Freetel-codec2@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/freetel-codec2 > > > _______________________________________________ > Freetel-codec2 mailing list > Freetel-codec2@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/freetel-codec2 _______________________________________________ Freetel-codec2 mailing list Freetel-codec2@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freetel-codec2