Ok, if Allen can't convince you, how about Julius Smith: https://ccrma.stanford.edu/~jos/sasp/FFT_Filter_Banks.html ?
On Wed, Jun 24, 2020 at 12:13 PM Zhiguang Eric Zhang <zez...@nyu.edu> wrote: > Thank you. Yes it seems very theoretical and math heavy. In practice you > will get this frequency response artifact no matter how small. It should > factor into the math in some way, perhaps they are not looking at the > laplacian > > On Wed, Jun 24, 2020, 10:41 AM Corey K <corey...@gmail.com> wrote: > >> It's a classic paper. Google scholar shows it has been cited over 1000 >> times. There's a link to it here here: >> https://jontalle.web.engr.illinois.edu/uploads/537/Papers/Public/AllenRabiner77-ProcIEEE.pdf >> <https://urldefense.proofpoint.com/v2/url?u=https-3A__jontalle.web.engr.illinois.edu_uploads_537_Papers_Public_AllenRabiner77-2DProcIEEE.pdf&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=EIWxvlh8qpdcU_coPNdiZxhQaqJEihTl-BcA8WN1eWw&s=e-NKtVrjHEINB5kEwTE3d4g9q2bZGxjnso8yyBhaUUM&e=> >> >> >> On Wed, Jun 24, 2020 at 11:56 AM Zhiguang Eric Zhang <zez...@nyu.edu> >> wrote: >> >>> unfortunately, i'm not familiar with that paper. could you please >>> attach it or provide a link for reference? the Gibbs phenomenon is >>> actually a very well-known and thoroughly characterized signal processing >>> artifact that has been approached from a variety of angles as far as trying >>> to find a solution. iit can be thought of as an unavoidable digital filter >>> response of having to take X number of samples in one snapshot while >>> capturing a finite instance in time (as you might know the Dirac delta is >>> centered on DC) >>> >>> https://en.wikipedia.org/wiki/Ringing_artifacts >>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__en.wikipedia.org_wiki_Ringing-5Fartifacts&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=EIWxvlh8qpdcU_coPNdiZxhQaqJEihTl-BcA8WN1eWw&s=XkZObRCqtj2hzKnIyyVYQqrxJYhSfTrXnDzaDFzTsw4&e=> >>> >>> On Wed, Jun 24, 2020 at 10:12 AM Corey K <corey...@gmail.com> wrote: >>> >>>> I think you're mistaken, unfortunately. Block FFT convolution has been >>>> around for 30+ years. In 1977 (43 years ago now), Jont Allen showed in his >>>> paper "A Unified Approach to Short-Time Fourier Analysis" how you can >>>> perform FIR filtering perfectly with the FFT, of COLA windows are used. See >>>> equation 5.2.5 in that paper, and the analysis that precedes it. >>>> >>>> >>>> >>>> >>>> >>>> On Wed, Jun 24, 2020 at 11:16 AM Zhiguang Eric Zhang <zez...@nyu.edu> >>>> wrote: >>>> >>>>> that's not true. with FFT/COLA you will necessarily have the Gibbs >>>>> phenomenon / ringing / ripple artifacts. certain window types will >>>>> minimize this but you will get this phenomenon nonetheless. >>>>> >>>>> On Wed, Jun 24, 2020 at 9:44 AM Corey K <corey...@gmail.com> wrote: >>>>> >>>>>> I see what you're getting at, I suppose. However, in the context of >>>>>> FIR filtering I wouldn't refer to this as an artifact. Let's say you gave >>>>>> me an FIR filter with N-taps and asked me to write a program to implement >>>>>> that filter. I could implement this using a direct form structure (in the >>>>>> time-domain), or with the FFT using OLA. Both would give the exact same >>>>>> results down to numerical precision, with no "artifacts". That's why it >>>>>> intrigued me when you said "of course it won't have the ripple artifacts >>>>>> associated with FFT overlap windowing" when referring to software that >>>>>> does >>>>>> filtering. >>>>>> >>>>>> >>>>>> On Wed, Jun 24, 2020 at 10:59 AM Zhiguang Eric Zhang <zez...@nyu.edu> >>>>>> wrote: >>>>>> >>>>>>> ripple is just a known artifactual component of a windowing >>>>>>> operation. it's also known as the Gibbs phenomenon >>>>>>> >>>>>>> http://matlab.izmiran.ru/help/toolbox/signal/filterd8.html >>>>>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__matlab.izmiran.ru_help_toolbox_signal_filterd8.html&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=LVW8eOM2POVbM1MauwqppWYiBwmnAs5_i7qiMOEK0-o&s=XefFmTg_gx0qQrZnZTOJDTlaqMl3xt5WBzqxYAkoMKA&e=> >>>>>>> >>>>>>> i'm not referring to any equivalency between time/freq domain >>>>>>> filtering >>>>>>> >>>>>>> >>>>>>> On Wed, Jun 24, 2020 at 9:21 AM Corey K <corey...@gmail.com> wrote: >>>>>>> >>>>>>>> Not totally understanding you, unfortunately. But if what you are >>>>>>>> describing is part of the normal filter response/ringing I guess I >>>>>>>> wouldn't >>>>>>>> refer to it as "artifacts"? FIR filtering can be performed >>>>>>>> equivalently in >>>>>>>> the time or frequency domain. Do you disagree with that statement? >>>>>>>> >>>>>>>> On Wed, Jun 24, 2020 at 10:02 AM Zhiguang Eric Zhang < >>>>>>>> zez...@nyu.edu> wrote: >>>>>>>> >>>>>>>>> yes but any windowing operation is akin to taking a dirac delta >>>>>>>>> function on X number of samples and thus you will get ringing/ripple >>>>>>>>> artifacts as a necessary part of the filter response >>>>>>>>> >>>>>>>>> On Wed, Jun 24, 2020 at 6:30 AM Corey K <corey...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> of course it won't have the ripple artifacts associated with FFT >>>>>>>>>>> overlap windowing >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> What is the ripple artifact you are talking about? When using >>>>>>>>>> constant overlap add (COLA) windows the STFT is a perfect >>>>>>>>>> reconstruction >>>>>>>>>> filterbank. Likewise block FFT convolution can be used to implement >>>>>>>>>> any FIR >>>>>>>>>> filtering operation. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> cheers, >>>>>>>>>>> -ez >>>>>>>>>>> >>>>>>>>>>> On Mon, Apr 13, 2020 at 4:55 PM Andreas Gustafsson < >>>>>>>>>>> g...@waxingwave.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hello Spencer, >>>>>>>>>>>> >>>>>>>>>>>> You wrote: >>>>>>>>>>>> > A while ago I read through some the literature [1] on >>>>>>>>>>>> implementing >>>>>>>>>>>> > an invertible CQT as a special case of the Nonstationary Gabor >>>>>>>>>>>> > Transform. It's implemented by the essentia library [2] among >>>>>>>>>>>> other >>>>>>>>>>>> > places probably. >>>>>>>>>>>> > >>>>>>>>>>>> > The main idea is that you take the FFT of your whole signal, >>>>>>>>>>>> then >>>>>>>>>>>> > apply the filter bank in the frequency domain (just >>>>>>>>>>>> > multiplication). Then you IFFT each filtered signal, which >>>>>>>>>>>> gives you >>>>>>>>>>>> > the time-domain samples for each band of the filter bank. Each >>>>>>>>>>>> > frequency-domain filter has a different bandwidth, so your >>>>>>>>>>>> IFFT is a >>>>>>>>>>>> > different length for each one, which gives you the different >>>>>>>>>>>> sample >>>>>>>>>>>> > rates for each one. >>>>>>>>>>>> >>>>>>>>>>>> That's the basic idea, but the Gaborator rounds up each of the >>>>>>>>>>>> per-band sample rates to the original sample rate divided by >>>>>>>>>>>> some >>>>>>>>>>>> power of two. This means all the FFT sizes can be powers of >>>>>>>>>>>> two, >>>>>>>>>>>> which tend to be faster than arbitrary sizes. It also results >>>>>>>>>>>> in a >>>>>>>>>>>> nicely regular time-frequency sampling grid where many of the >>>>>>>>>>>> samples >>>>>>>>>>>> coincide in time, as shown in the second plot on this page: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.gaborator.com_gaborator-2D1.4_doc_overview.html&d=DwICAg&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=4rIFY1X4fS1G8-882xM72jF9DvsY6-Z2ckeHxjPPfTY&s=FG-ZGfFa09T-Y7nLajB8evbCy9WIADFrUqPwjz-LHow&e= >>>>>>>>>>>> >>>>>>>>>>>> Also, the Gaborator makes use of multirate processing where the >>>>>>>>>>>> signal >>>>>>>>>>>> is repeatedly decimated by 2 and the calculations for the lower >>>>>>>>>>>> octaves run at successively lower sample rates. These >>>>>>>>>>>> optimizations >>>>>>>>>>>> help the Gaborator achieve a performance of millions of samples >>>>>>>>>>>> per >>>>>>>>>>>> second per CPU core. >>>>>>>>>>>> >>>>>>>>>>>> > They also give an "online" version where you do >>>>>>>>>>>> > the processing in chunks, but really for this to work I think >>>>>>>>>>>> you'd >>>>>>>>>>>> > need large-ish chunks so the latency would be pretty bad. >>>>>>>>>>>> >>>>>>>>>>>> The Gaborator also works in chunks. A typical chunk size might >>>>>>>>>>>> be >>>>>>>>>>>> 8192 samples, but thanks to the multirate processing, in the >>>>>>>>>>>> lowest >>>>>>>>>>>> frequency bands, each of those 8192 samples may represent the >>>>>>>>>>>> low-frequency content of something like 1024 samples of the >>>>>>>>>>>> original >>>>>>>>>>>> signal. This gives an effective chunk size of some 8 million >>>>>>>>>>>> samples >>>>>>>>>>>> without actually having to perform any FFTs that large. >>>>>>>>>>>> >>>>>>>>>>>> Latency is certainly high, but I would not say it is a >>>>>>>>>>>> consequence of >>>>>>>>>>>> the chunk size as such. Rather, both the high latency and the >>>>>>>>>>>> need >>>>>>>>>>>> for a large (effective) chunk size are consequences of the >>>>>>>>>>>> lengths of >>>>>>>>>>>> the band filter impulse responses, which get exponentially >>>>>>>>>>>> larger as >>>>>>>>>>>> the constant-Q bands get narrower towards lower frequencies. >>>>>>>>>>>> >>>>>>>>>>>> Latency in the Gaborator is discussed in more detail here: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.gaborator.com_gaborator-2D1.4_doc_realtime.html&d=DwICAg&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=4rIFY1X4fS1G8-882xM72jF9DvsY6-Z2ckeHxjPPfTY&s=uuRzi0taGcXI9Sq63G_xTTrCjaz9cu3ewu8jfzIUcVc&e= >>>>>>>>>>>> >>>>>>>>>>>> > The whole process is in some ways dual to the usual STFT >>>>>>>>>>>> process, >>>>>>>>>>>> > where we first window and then FFT. in the NSGT you first FFT >>>>>>>>>>>> and >>>>>>>>>>>> > then window, and then IFFT each band to get a Time-Frequency >>>>>>>>>>>> > representation. >>>>>>>>>>>> >>>>>>>>>>>> Yes. >>>>>>>>>>>> >>>>>>>>>>>> > For resynthesis you end up with a similar window overlap >>>>>>>>>>>> constraint >>>>>>>>>>>> > as in STFT, except now the windows are in the frequency >>>>>>>>>>>> domain. It's >>>>>>>>>>>> > a little more complicated because the window centers aren't >>>>>>>>>>>> > evenly-spaced, so creating COLA windows is complicated. There >>>>>>>>>>>> are >>>>>>>>>>>> > some fancier approaches to designing a set of synthesis >>>>>>>>>>>> windows that >>>>>>>>>>>> > are complementary (inverse) of the analysis windows, which is >>>>>>>>>>>> what >>>>>>>>>>>> > the frame-theory folks like that Austrian group seem to like >>>>>>>>>>>> to use. >>>>>>>>>>>> >>>>>>>>>>>> The Gaborator was inspired by the papers from that Austrian >>>>>>>>>>>> group and >>>>>>>>>>>> uses complementary resynthesis windows, or "duals" as frame >>>>>>>>>>>> theorists >>>>>>>>>>>> like to call them. The analysis windows are Gaussian, and the >>>>>>>>>>>> dual >>>>>>>>>>>> windows used for resynthesis end up being slightly distorted >>>>>>>>>>>> Gaussians. >>>>>>>>>>>> >>>>>>>>>>>> > One of the nice things about the NSGT is it lets you be really >>>>>>>>>>>> > flexible in your filterbank design while still giving you >>>>>>>>>>>> > invertibility. >>>>>>>>>>>> >>>>>>>>>>>> Agreed. >>>>>>>>>>>> >>>>>>>>>>>> In a later message, you wrote: >>>>>>>>>>>> > Whoops, just clicked through to the documentation and it >>>>>>>>>>>> looks like >>>>>>>>>>>> > this is the track you're on also. I'm curious if you have any >>>>>>>>>>>> > insight into the window-selection for the analysis and >>>>>>>>>>>> synthesis >>>>>>>>>>>> > process. It seems like the NSGT framework forces you to be a >>>>>>>>>>>> bit >>>>>>>>>>>> > smarter with windows than just sticking to COLA, but the dual >>>>>>>>>>>> frame >>>>>>>>>>>> > techniques should apply for regular STFT processing, right? >>>>>>>>>>>> >>>>>>>>>>>> I'm actually not that familiar with traditional STFTs and COLA, >>>>>>>>>>>> but as >>>>>>>>>>>> far as I can tell, the STFT is a special case of the NSGT and >>>>>>>>>>>> the same >>>>>>>>>>>> dual frame techniques should apply. >>>>>>>>>>>> -- >>>>>>>>>>>> Andreas Gustafsson, g...@waxingwave.com >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> dupswapdrop: music-dsp mailing list >>>>>>>>>>>> music-dsp@music.columbia.edu >>>>>>>>>>>> >>>>>>>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.columbia.edu_mailman_listinfo_music-2Ddsp&d=DwICAg&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=4rIFY1X4fS1G8-882xM72jF9DvsY6-Z2ckeHxjPPfTY&s=br6gIADk3PB9_kF8YoA7aZdcf5McFvCCOlyYso5D2BI&e= >>>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> dupswapdrop: music-dsp mailing list >>>>>>>>>>> music-dsp@music.columbia.edu >>>>>>>>>>> https://lists.columbia.edu/mailman/listinfo/music-dsp >>>>>>>>>>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.columbia.edu_mailman_listinfo_music-2Ddsp&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=0Zfr9NX2z_qbqorZ4mvWlKWdhvCOnws4tZKFE3J0lxI&s=_0-DUAEnNzJ0nyrUgGHozY0ob4n_-0OWpipEf-p2Bps&e=> >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> dupswapdrop: music-dsp mailing list >>>>>>>>>> music-dsp@music.columbia.edu >>>>>>>>>> >>>>>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.columbia.edu_mailman_listinfo_music-2Ddsp&d=DwICAg&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=0Zfr9NX2z_qbqorZ4mvWlKWdhvCOnws4tZKFE3J0lxI&s=_0-DUAEnNzJ0nyrUgGHozY0ob4n_-0OWpipEf-p2Bps&e= >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> dupswapdrop: music-dsp mailing list >>>>>>>>> music-dsp@music.columbia.edu >>>>>>>>> https://lists.columbia.edu/mailman/listinfo/music-dsp >>>>>>>>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.columbia.edu_mailman_listinfo_music-2Ddsp&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=ggIGGD37NXAIrRak00WIRysmpvCxdGGCHkoma2TGgxc&s=2aCxaadCSRm8GtUxELE7DhnWmqkKUkkAymUl19tD-v4&e=> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> dupswapdrop: music-dsp mailing list >>>>>>>> music-dsp@music.columbia.edu >>>>>>>> >>>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.columbia.edu_mailman_listinfo_music-2Ddsp&d=DwICAg&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=ggIGGD37NXAIrRak00WIRysmpvCxdGGCHkoma2TGgxc&s=2aCxaadCSRm8GtUxELE7DhnWmqkKUkkAymUl19tD-v4&e= >>>>>>> >>>>>>> _______________________________________________ >>>>>>> dupswapdrop: music-dsp mailing list >>>>>>> music-dsp@music.columbia.edu >>>>>>> https://lists.columbia.edu/mailman/listinfo/music-dsp >>>>>>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.columbia.edu_mailman_listinfo_music-2Ddsp&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=LVW8eOM2POVbM1MauwqppWYiBwmnAs5_i7qiMOEK0-o&s=Wiyf_pAPkjR4_Ox3pi0vTvCNZDjINUsf0bfxVKpiGW8&e=> >>>>>> >>>>>> _______________________________________________ >>>>>> dupswapdrop: music-dsp mailing list >>>>>> music-dsp@music.columbia.edu >>>>>> >>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.columbia.edu_mailman_listinfo_music-2Ddsp&d=DwICAg&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=LVW8eOM2POVbM1MauwqppWYiBwmnAs5_i7qiMOEK0-o&s=Wiyf_pAPkjR4_Ox3pi0vTvCNZDjINUsf0bfxVKpiGW8&e= >>>>> >>>>> _______________________________________________ >>>>> dupswapdrop: music-dsp mailing list >>>>> music-dsp@music.columbia.edu >>>>> https://lists.columbia.edu/mailman/listinfo/music-dsp >>>>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.columbia.edu_mailman_listinfo_music-2Ddsp&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=cdkdusrQSRQeoIdvFPBw-IHlrTvjeJt4YV8Nkf2Zfd4&s=WaORGHf6gkBiBL4HM9z9I3P-lBjNVIi5TkMPBpzVmfY&e=> >>>> >>>> _______________________________________________ >>>> dupswapdrop: music-dsp mailing list >>>> music-dsp@music.columbia.edu >>>> >>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.columbia.edu_mailman_listinfo_music-2Ddsp&d=DwICAg&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=cdkdusrQSRQeoIdvFPBw-IHlrTvjeJt4YV8Nkf2Zfd4&s=WaORGHf6gkBiBL4HM9z9I3P-lBjNVIi5TkMPBpzVmfY&e= >>> >>> _______________________________________________ >>> dupswapdrop: music-dsp mailing list >>> music-dsp@music.columbia.edu >>> https://lists.columbia.edu/mailman/listinfo/music-dsp >>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.columbia.edu_mailman_listinfo_music-2Ddsp&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=EIWxvlh8qpdcU_coPNdiZxhQaqJEihTl-BcA8WN1eWw&s=mT1huoxSaty-HqNoCoJq46lZ1fhEmudUf99Jcq71FRw&e=> >> >> _______________________________________________ >> dupswapdrop: music-dsp mailing list >> music-dsp@music.columbia.edu >> >> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.columbia.edu_mailman_listinfo_music-2Ddsp&d=DwICAg&c=slrrB7dE8n7gBJbeO0g-IQ&r=w_CiiFx8eb9uUtrPcg7_DA&m=EIWxvlh8qpdcU_coPNdiZxhQaqJEihTl-BcA8WN1eWw&s=mT1huoxSaty-HqNoCoJq46lZ1fhEmudUf99Jcq71FRw&e= > > _______________________________________________ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu > https://lists.columbia.edu/mailman/listinfo/music-dsp
_______________________________________________ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp