partial tracking for noise reduction
Aug 11, 2010 at 11:21am
partial tracking for noise reduction
I face a very difficult question. To sum up a very long story in short, I want to “denoise” (remove the blower noise) pipe organ samples . See file attached.
I have tested quite all possible NR tools (Izotope RX, Waves VST, and lots of others, etc.) and I’m sure it is possible to do better.
Now I would like to test new things .
Could someone help me in order to do first partial tracking + resynthesis in max/msp ?
I can’t make fiddle~ or sygmund~ work in my Windows environment.
Aug 11, 2010 at 1:36pm
The sigmund~ help file has an example of partial tracking / resynthsis. Otherwise – try the CNMAT objects for this, or gabor from IRCAM. Those are the well known examples.
In terms of your task more generally, without meaning to be too discouraging I would say that I don’t believe you will find it at all easy to beat the tools you are talking about, and to do so in max msp would be very hard indeed without a large amount of experience. I say that as someone who is at this time writing a plug-in (in C++) for noise reduction, and examining various up-to-date techniques, as well as looking for new improvements to add. Partial awareness (if not tracking) is on the consideration list. However, the nature of your material is quite sinusoidal, so separating the parts may improve things….
The main problem you have is the low SNR of your recording. Even the best NR algorithms don’t tend to work that wonderfully under these conditions.
On a more positive note, you might try using already available software to separate deterministic and noise based content and then treat them with the tools you described, followed by recombining the results. YOu should note that it isn’t necessary to do full partial tracking / resynthesis to separate the sound in this way.
You could look at wavethresh here which does other stuff but I believe can be used for the separation (it is also possible to denoise using wavelets in wavethresh, but I’ve never used it as I am not windows-based)
You could also try analysing and re-synthesing the most prominent partials using a program like SPEAR (making sure you resynthesize with phase and then subtracting from the original to obtain the noise part.
I believe stefan tiedje developed some java tools for MAxMSP that did the separation by median filtering the spectrum and picking content above the filter (times a threshold) as an indicator of noise or sinusoid. That work was public – some googling may well turn it up.
Finally, you may get somewhere with manually reducing the process around partials in the frequency editor of your noise reducer. Obviously, that is long and tedious for many samples, but it might get better results than other techniques…
Aug 11, 2010 at 1:51pm
Also – be great to know how you get on, and if you find an approach that does work well…
Aug 11, 2010 at 5:45pm
I know that is possible to have good results, because I know people who achieved to do it with impressing results, even if the SNR is low
> you might try using already available software to separate deterministic
> YOu should note that it isn’t necessary to do full partial tracking /
Thanks again for all ,
Ps: On windows, I haven’t found any ready-to-use example of partial tracking and/or resynthesis. It would be useful because I’m really new to MaxMsp.
Aug 11, 2010 at 6:06pm
Are the people making a commercial product? If so, is it possible to check out their results, or tools at all?
Harmonic / Noise separation may not require ‘tracking’ – it may be enough to find the peaks, without joining them into tracks ( that’s how wavethresh does it).
I think it’s also possible to do some kind of median filter based separation without peak finding at all (but it’s been a while since I looked at this, so I might be wrong). The median filter is used to estimate the spectral noise floor
There is some stuff you could look at here:
There are a couple of other partial tracking / resynthesis options
Gabor is available for windows:
CNMAT objects are also available for windows:
Aug 11, 2010 at 6:37pm
Turns out gabor.devoice in the examples can do the separation.
Aug 11, 2010 at 6:48pm
Hi, I just had tested gabor.devoice, between your two last posts.
And the problem is that, even if I choose “1″ partial, it constantly jumps between one partial to another… Resulting in a highly artefacted sound !
(Example : for the file bourdon8.wav it is 444hz.)
Thanks a lot again
Aug 11, 2010 at 6:58pm
I don’t know how (or even if you can) do this with gabor.
The jumping is precisely because it is not tracking – so whichever peak is biggest will probably be chosen. I’d advise using a few more partials than that. I doubt you’ll acheive perfect separation, because of the low SNR and semi-pitched character of the noise content (which will also be chosen as peaks)…
Aug 11, 2010 at 8:32pm
Also – if you know the frequencies you are interested in and they are static, why not try filtering everything else using some kind of FFT filter and then apply noise reduction to deal with any pre/post noise or other residual?
Aug 11, 2010 at 8:40pm
I’m so new to MAX/MSP that I would even be unable to do a simple patch in order to do that. Would you help me ?
Aug 13, 2010 at 5:03pm
Let f0 be the fundamental frequency.
FIRST PART = All the harmonics of f0 , i e : all the frequencies in the range [f0-eps, f0+eps] union [2*f0-eps, 2*f0+eps] union [3*f0-eps, 3*f0+eps] union [ ... ] etc. (where eps=epsilon is a small value)
SECOND PART = Original file – FIRST PART (this will be easy by substraction).
Thanks a lot in advance, I don’t know how to design this in Max/Msp.
You must be logged in to reply to this topic.