Re: Frequency shift to alleviate acoustic feedback (Siping Tao )


Subject: Re: Frequency shift to alleviate acoustic feedback
From:    Siping Tao  <siping.tao@xxxxxxxx>
Date:    Tue, 19 Feb 2013 11:38:13 +0800
List-Archive:<http://lists.mcgill.ca/scripts/wa.exe?LIST=AUDITORY>

--bcaec55242164b74b904d60b9227 Content-Type: multipart/alternative; boundary=bcaec55242164b747b04d60b9225 --bcaec55242164b747b04d60b9225 Content-Type: text/plain; charset=ISO-8859-1 Hi Steve, I realized the flaw in my implementation with your patient explanation, thank you very much. I read another implementation from a book "Acoustic Echo and Noise Control: A Practical Approach". I attached the main flowchart of this implementation, the result was reasonable, and I thought I did the correct implementaion. Looks that simply move FFT coefficients is naive:( Unfortunately, frequency shift (10Hz shift) doesn't alleviate the feedback problem much, anyway, I will try other kinds of methods. Thanks, Siping On Mon, Jan 28, 2013 at 9:52 AM, Siping Tao <siping.tao@xxxxxxxx> wrote: > Hi Julius and Steve, > > Thanks for your help, my application scenario requires real-time > processing, i.e. delay should be kept below 10ms at most. > > Anyway, I think the code of Julius is helpful, to give me a good reference. > > Steve, I will read the paper you recommended, thanks, your explaination is > very clear. Frequency shift is absolutely harder than I thought :) > > Thanks, > Siping > > On Sun, Jan 27, 2013 at 5:48 AM, Steve Beet <steve.beet@xxxxxxxx> wrote: > >> Hi Julius, >> >> That looks like a pretty good implementation of the block-based approach >> which Siping wanted to implement. The only problem from Siping's point of >> view is that it uses the two functions PV_BinShift() and PV_PhaseShift(), >> which are not defined here and may rely on the fact that (in this example) >> the FFT size is an exact multiple of the window length. If that is an >> issue >> (or if the 2048-sample length window is important) then Siping would have >> to >> redefine the problem. >> >> I presume the 160-sample blocks were originally specified to keep the >> real-time processing delay short. Is that correct, Siping? If so then a >> 2048-sample window is probably not acceptable. >> >> Steve >> >> > -----Original Message----- >> > From: Julius Smith [mailto:jos@xxxxxxxx >> > Sent: Saturday, January 26, 2013 8:08 PM >> > To: Steve Beet >> > Cc: AUDITORY@xxxxxxxx >> > Subject: Re: Frequency shift to alleviate acoustic feedback >> > >> > Hi All, >> > >> > I don't know if this will help or confuse things, but here is >> > a pretty smooth frequency-shifting implementation in SuperCollider: >> > >> > // Frequency-Shifting Example 5: Add phase-correction >> > // MouseX = amplitude >> > // MouseY = frequency shift (400 * (2 ** MouseY(-1,1)) in [200,800]) >> > // MouseButton = clear frequency shift >> > // START WITH MOUSE NEAR THE LEFT OF YOUR SCREEN >> > ( >> > x = { >> > var in, out, amp, f0=400, fftSize=8192, winLen=2048, hopFrac=0.5, >> > chain, mexp, fScaled, df, binShift, phaseShift, >> > inWinType=0, outWinType=0; >> > amp = MouseX.kr(-60,10).dbamp; >> > in = SinOsc.ar(f0,0,amp); >> > chain = FFT(LocalBuf(fftSize), in, hopFrac, inWinType, 1, winLen); >> > mexp = MouseY.kr(-1.0,1.0); >> > mexp = mexp*(1-MouseButton.kr); >> > fScaled = f0 * (2.0 ** mexp); >> > df = fScaled - f0; >> > binShift = fftSize * (df / s.sampleRate); >> > chain = PV_BinShift(chain, stretch:1, shift:binShift, interp:1); >> > phaseShift = 2 * pi * binShift * hopFrac * (winLen/fftSize); >> > chain = PV_PhaseShift(chain, phaseShift, integrate:1); >> > out = IFFT(chain,outWinType,winLen); >> > Out.ar(0, out.dup); >> > }.play >> > ) >> > >> > - Julius >> > >> > At 04:48 AM 1/25/2013, Steve Beet wrote: >> > >> > >> > Dear Siping, >> > >> > I'd agree with Dick's simplification, except to note >> > that *if* you can assume that the listeners are not sensitive >> > to phase, then frequency shifting is actually very easy - you >> > merely have to ensure phase continuity at block boundaries, >> > or (my preferred approach) do the processing sample-by-sample >> > using a direct analogue of the traditional EE approach: >> > heterodyning followed by linear filtering. >> > >> > I've also just remembered one reference which is >> > relevant to this, and should give you some idea of the issues >> > involved in manipulating an audio signal in terms of the >> > frequencies, amplitudes and phases of its components: >> > >> > R.J. McAulay, T. F. Quartieri; "Speech >> > analysis/synthesis based on a sinusoidal representation"; >> > IEEE Trans. on Acoust., Speech and Signal Proc., vol ASSP-34, >> > pp. 744-754, 1986. >> > >> > Good luck, >> > >> > Steve >> > >> > >> > >> > >> > On Thu, 24 Jan 2013 22:41:05 -0800 >> > "Richard F. Lyon" <dicklyon@xxxxxxxx> wrote: >> > >> > > To put it more simply, the original assumption that >> > frequency shifting >> > > would be "the simplest method" was unfounded. >> > > Frequency shifting is actually quite complicated, >> > subtle, error prone, and >> > > not so well defined. >> > > >> > > Dick >> > > >> > >> > >> > Julius O. Smith III <jos@xxxxxxxx> >> > Prof. of Music and Assoc. Prof. (by courtesy) of Electrical >> > Engineering >> > CCRMA, Stanford University >> > http://ccrma.stanford.edu/~jos/ <http://ccrma.stanford.edu/~jos/> >> > >> > > --bcaec55242164b747b04d60b9225 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi Steve,<br><br>I realized the flaw in my implementation with your patient= explanation, thank you very much.<br><br>I read another implementation fro= m a book &quot;Acoustic Echo and Noise Control: A Practical Approach&quot;.= I attached the main flowchart of this implementation, the result was reaso= nable, and I thought I did the correct implementaion. Looks that simply mov= e FFT coefficients is naive:(<br> <br>Unfortunately, frequency shift (10Hz shift) doesn&#39;t alleviate the f= eedback problem much, anyway, I will try other kinds of methods.<br><br>Tha= nks,<br>Siping<br><br><div class=3D"gmail_quote">On Mon, Jan 28, 2013 at 9:= 52 AM, Siping Tao <span dir=3D"ltr">&lt;<a href=3D"mailto:siping.tao@xxxxxxxx= s" target=3D"_blank">siping.tao@xxxxxxxx</a>&gt;</span> wrote:<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"><div class=3D"im">Hi Julius and Steve,<br><b= r>Thanks for your help, my application scenario requires real-time processi= ng, i.e. delay should be kept below 10ms at most.<br> <br>Anyway, I think the code of Julius is helpful, to give me a good refere= nce.<br> <br>Steve, I will read the paper you recommended, thanks, your explaination= is very clear. Frequency shift is absolutely harder than I thought :)<br><= br>Thanks,<br>Siping<br><br></div><div class=3D"gmail_quote"><div class=3D"= im"> On Sun, Jan 27, 2013 at 5:48 AM, Steve Beet <span dir=3D"ltr">&lt;<a href= =3D"mailto:steve.beet@xxxxxxxx" target=3D"_blank">steve.beet@xxxxxxxx</a>&g= t;</span> wrote:<br> </div><div><div class=3D"h5"><blockquote class=3D"gmail_quote" style=3D"mar= gin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Julius,<br> <br> That looks like a pretty good implementation of the block-based approach<br= > which Siping wanted to implement. The only problem from Siping&#39;s point = of<br> view is that it uses the two functions PV_BinShift() and PV_PhaseShift(),<b= r> which are not defined here and may rely on the fact that (in this example)<= br> the FFT size is an exact multiple of the window length. If that is an issue= <br> (or if the 2048-sample length window is important) then Siping would have t= o<br> redefine the problem.<br> <br> I presume the 160-sample blocks were originally specified to keep the<br> real-time processing delay short. Is that correct, Siping? If so then a<br> 2048-sample window is probably not acceptable.<br> <br> Steve<br> <div><div><br> &gt; -----Original Message-----<br> &gt; From: Julius Smith [mailto:<a href=3D"mailto:jos@xxxxxxxx" t= arget=3D"_blank">jos@xxxxxxxx</a>]<br> &gt; Sent: Saturday, January 26, 2013 8:08 PM<br> &gt; To: Steve Beet<br> &gt; Cc: <a href=3D"mailto:AUDITORY@xxxxxxxx" target=3D"_blank">AUDI= TORY@xxxxxxxx</a><br> &gt; Subject: Re: Frequency shift to alleviate acoustic feedback<br> &gt;<br> &gt; Hi All,<br> &gt;<br> &gt; I don&#39;t know if this will help or confuse things, but here is<br> &gt; a pretty smooth frequency-shifting implementation in SuperCollider:<br= > &gt;<br> &gt; // Frequency-Shifting Example 5: Add phase-correction<br> &gt; // =A0 MouseX =3D amplitude<br> &gt; // =A0 MouseY =3D frequency shift (400 * (2 ** MouseY(-1,1)) in [200,8= 00])<br> &gt; // =A0 MouseButton =3D clear frequency shift<br> &gt; // START WITH MOUSE NEAR THE LEFT OF YOUR SCREEN<br> &gt; (<br> &gt; x =3D {<br> &gt; var in, out, amp, f0=3D400, fftSize=3D8192, winLen=3D2048, hopFrac=3D0= .5,<br> &gt; chain, mexp, fScaled, df, binShift, phaseShift,<br> &gt; inWinType=3D0, outWinType=3D0;<br> &gt; amp =3D MouseX.kr(-60,10).dbamp;<br> &gt; in =3D SinOsc.ar(f0,0,amp);<br> &gt; chain =3D FFT(LocalBuf(fftSize), in, hopFrac, inWinType, 1, winLen);<b= r> &gt; mexp =3D MouseY.kr(-1.0,1.0);<br> &gt; mexp =3D mexp*(1-MouseButton.kr);<br> &gt; fScaled =3D f0 * (2.0 ** mexp);<br> &gt; df =3D fScaled - f0;<br> &gt; binShift =3D fftSize * (df / s.sampleRate);<br> &gt; chain =3D PV_BinShift(chain, stretch:1, shift:binShift, interp:1);<br> &gt; phaseShift =3D 2 * pi * binShift * hopFrac * (winLen/fftSize);<br> &gt; chain =3D PV_PhaseShift(chain, phaseShift, integrate:1);<br> &gt; out =3D IFFT(chain,outWinType,winLen);<br> &gt; Out.ar(0, out.dup);<br> &gt; }.play<br> &gt; )<br> &gt;<br> &gt; - Julius<br> &gt;<br> &gt; At 04:48 AM 1/25/2013, Steve Beet wrote:<br> &gt;<br> &gt;<br> &gt; =A0 =A0 =A0 Dear Siping,<br> &gt;<br> &gt; =A0 =A0 =A0 I&#39;d agree with Dick&#39;s simplification, except to no= te<br> &gt; that *if* you can assume that the listeners are not sensitive<br> &gt; to phase, then frequency shifting is actually very easy - you<br> &gt; merely have to ensure phase continuity at block boundaries,<br> &gt; or (my preferred approach) do the processing sample-by-sample<br> &gt; using a direct analogue of the traditional EE approach:<br> &gt; heterodyning followed by linear filtering.<br> &gt;<br> &gt; =A0 =A0 =A0 I&#39;ve also just remembered one reference which is<br> &gt; relevant to this, and should give you some idea of the issues<br> &gt; involved in manipulating an audio signal in terms of the<br> &gt; frequencies, amplitudes and phases of its components:<br> &gt;<br> &gt; =A0 =A0 =A0 R.J. McAulay, T. F. Quartieri; &quot;Speech<br> &gt; analysis/synthesis based on a sinusoidal representation&quot;;<br> &gt; IEEE Trans. on Acoust., Speech and Signal Proc., vol ASSP-34,<br> &gt; pp. 744-754, 1986.<br> &gt;<br> &gt; =A0 =A0 =A0 Good luck,<br> &gt;<br> &gt; =A0 =A0 =A0 Steve<br> &gt;<br> &gt;<br> &gt;<br> &gt;<br> &gt; =A0 =A0 =A0 On Thu, 24 Jan 2013 22:41:05 -0800<br> &gt; =A0 =A0 =A0 &quot;Richard F. Lyon&quot; &lt;<a href=3D"mailto:dicklyon= @xxxxxxxx" target=3D"_blank">dicklyon@xxxxxxxx</a>&gt; wrote:<br> &gt;<br> &gt; =A0 =A0 =A0 &gt; To put it more simply, the original assumption that<b= r> &gt; frequency shifting<br> &gt; =A0 =A0 =A0 &gt; would be &quot;the simplest method&quot; was unfounde= d.<br> &gt; =A0 =A0 =A0 &gt; Frequency shifting is actually quite complicated,<br> &gt; subtle, error prone, and<br> &gt; =A0 =A0 =A0 &gt; not so well defined.<br> &gt; =A0 =A0 =A0 &gt;<br> &gt; =A0 =A0 =A0 &gt; Dick<br> &gt; =A0 =A0 =A0 &gt;<br> &gt;<br> &gt;<br> &gt; Julius O. Smith III &lt;<a href=3D"mailto:jos@xxxxxxxx" targ= et=3D"_blank">jos@xxxxxxxx</a>&gt;<br> &gt; Prof. of Music and Assoc. Prof. (by courtesy) of Electrical<br> &gt; Engineering<br> &gt; CCRMA, Stanford University<br> </div></div>&gt; <a href=3D"http://ccrma.stanford.edu/~jos/" target=3D"_bla= nk">http://ccrma.stanford.edu/~jos/</a> &lt;<a href=3D"http://ccrma.stanfor= d.edu/~jos/" target=3D"_blank">http://ccrma.stanford.edu/~jos/</a>&gt;<br> &gt;<br> </blockquote></div></div></div><br> </blockquote></div><br> --bcaec55242164b747b04d60b9225-- --bcaec55242164b74b904d60b9227 Content-Type: image/png; name="fs.png" Content-Disposition: attachment; filename="fs.png" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hdci1wg60 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 ghgAAAAASUVORK5CYII= --bcaec55242164b74b904d60b9227--


This message came from the mail archive
/var/www/postings/2013/
maintained by:
DAn Ellis <dpwe@ee.columbia.edu>
Electrical Engineering Dept., Columbia University