<div dir="ltr">Hi All, sorry for not chiming in before, I&#39;m in NY sending my son off to college and have been very busy. Here are are some ideas regarding for Anders request:<div><br></div><div>1) if you are working with harmonic instruments/sources, you could do this by tracking the F0 and using a bank of notch filters, similar to the way hum memoval algorithms work. I got good results doing this in real time in SC with relatively stable harmonic sound sources. </div><div><br></div><div>2) You could also do the same as in #1 using the FFT. You would still need to detect the F0, then remove (or attenuate) the bins of the magnitude spectrum corresponding to the harmonic spectrum, and finally use the IFFT to resynthesize the sound. This should be done on a frame by frame basis using OLA.</div><div><br></div><div>3) If your sound doesn&#39;t have a harmonic spectrum (or you don&#39;t know) you could use a technique similar to #2 except that instead of F0 tracking you do peak detection on the magnitude spectrum, then once the main peaks are detected (you could use a threshold in dB to define them) you remove or attenuate them from the magnitude spectrum and then use then use the IFFT to resynthesize the sound. This is done on a frame by frame basis, using OLA, no tracking is required. You can look at the peak-detection algorithm used in ATS (or SMS for that matter). I had some very good results using this method in real time with strings and wind instruments. </div><div><br></div><div>4) Same as #3 but doing peak trekking and resynthesis. In this case you could try to track the peaks across a certain number of frames, then remove them from the FFT magnitude spectrum before resynthesis. This could work fine if you track stable sinusoids over a few frames, you could try the ATS tracking algorithm for this method.</div><div><br></div><div>5) you could also use a frequency and time-domain algorithm with #3 and #4, using phase information. In this case once peaks are detected you would remove them by synthesizing them using the phase information and then remove them by subtracting them from the time domain signal (frame). For #4 this would require phase tracking using high-order interpolation but it is doable in real time. This residual generation method is the one used by ATS (and SMS) offline.</div><div><br></div><div>OK, I hope this is helpful.</div><div>Cheers,</div><div>JUAN</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 17, 2023 at 4:58 AM Orm Finnendahl &lt;<a href="mailto:orm.finnendahl@selma.hfmdk-frankfurt.de">orm.finnendahl@selma.hfmdk-frankfurt.de</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Anders,<br>
<br>
Am Mittwoch, den 16. August 2023 um 22:50:30 Uhr (+0200) schrieb<br>
Anders Vinjar:<br>
&gt; <br>
&gt; My problem is the real-time requirements (no off-line pre-analysis), and<br>
&gt; not-very-large latency.  Do you think ATS could provide solutions for<br>
&gt; those?<br>
<br>
 I don&#39;t think so.<br>
<br>
&gt; The Median Filtering approach of FitzGerald is perfect!  But needs<br>
&gt; several frames to track partials to distinguish from non-harmonic<br>
&gt; content (as ats etc.).  Probably as close as i&#39;ll come...<br>
<br>
I completely agree. Although I heard very convincing AI based<br>
extractions of drum parts from instrumental tracks and imagine this<br>
could work very well for your application case, I would expect you<br>
need a fair bit of training data and expertise to make it work.<br>
<br>
I&#39;d be quite interested to hear about your experiences and results<br>
(just post offline).<br>
<br>
--<br>
Orm<br>
_______________________________________________<br>
Cmdist mailing list<br>
<a href="mailto:Cmdist@ccrma.stanford.edu" target="_blank">Cmdist@ccrma.stanford.edu</a><br>
<a href="https://cm-mail.stanford.edu/mailman/listinfo/cmdist" rel="noreferrer" target="_blank">https://cm-mail.stanford.edu/mailman/listinfo/cmdist</a><br>
<br>
</blockquote></div>