On Thu, Jun 12, 2014 at 10:41:00AM +0100, Chris Cannam
wrote:
One warning, the method described in it is
patented -- I had to do a
hasty rewrite in some early Rubber Band code. I don't know whether
anyone enforces the patent though.
Indeed... I'd be surprised if the patent is
actually enforced...
There's also a collection of related patents by Fraunhofer..
For code,
maybe have a look at Rubberband which may contain
interesting things (I don't know, never dared to look
Probably wise -- I
expect it would horrify you. And of course this
application is an incredible time-sink simply because there's no right
way to do it. It's a subject that can surely drive you mad.
It sure can.
Meanwhile, since you tickled me, I did have a look.
I've seen worse :-)
You gave a low-level example of the problem
earlier (with neighbouring
frequency bins). Looking at it at a high level, you're basically trying
to synthesise a signal that corresponds to "what the same instruments
would have sounded like if they were playing slower" (or higher, or
whatever).
There's a more fundamental problem behind this.
Suppose you have a sine wave at some frequency F, modulated (i.e.
multiplied) by say a 8 Hz sine wave. Assume we want to transpose
an octave up. Now is this signal
a) just a single frequency (F) with some amplitude modulation on it,
or
b) two signals, at F-8 and F+8 Hz.
Mathematically, and in the analysis spectrum, these are just the
same thing. It's a matter of interpretation. In case (a) you'd want
a sine at 2*F with the same 8 Hz modulation on it. In case (b) the
wanted output is two signals at 2*(F-8) and 2*(F+8) Hz. You have
the choice of interpreting the 'detail' in either the time or
frequency domains.
For high F, our hearing would probably favour (a). But at low
frequencies things could be different. 64 Hz and 80 Hz would
make a nice major third...
Ciao,
Thanks for your hints.
I've found a other interesting paper which seems to use the resampling
technique you've talked about in a earlier post.