[LAD] GuitarSynth

Tim E. Real termtech at rogers.com
Sat Apr 25 03:13:12 UTC 2015

On April 25, 2015 02:37:34 AM Albert Graef wrote:
> Hi Gerald,
> cool project, I'm looking forward to give it a try. :)
> On Thu, Apr 23, 2015 at 7:24 AM, Gerald <gerald.mwangi at gmx.de> wrote:
> > definately, but that comes with the cost of extra hardware (pickup,
> > 6chan soundcard). I would build that into GuitarSynth if I had that gear.
> > But I'm also rather interested  multipitch out of one signal. It's just
> > more convenient too
> Polyphonic pitch detection is much more involved and requires more advanced
> algorithms which are computationally intensive and thus hard to perform in
> real-time.
> Commercial closed-source software like Melodyne can do this, at least in
> off-line processing. AFAICT, the latest Melodyne versions also do some
> real-time processing, but I haven't used Melodyne for some time and so I
> don't know how well that works.
> I'm not sure either whether there are any good open-source codes for this
> available yet, maybe others can provide corresponding links. But here are
> some relevant answers from Stackoverflow and Stackexchange:
> http://stackoverflow.com/questions/9613768/multiple-pitch-detection-fft-or-o
> ther/9626849#9626849
> http://dsp.stackexchange.com/questions/11433/polyphonic-detection-mulit-pitc
> h-detection-chord-recognition
> Also, here's an interesting recent DAFx paper on doing polyphonic pitch
> detection using autocorrelation:
> http://www.dafx14.fau.de/papers/dafx14_sebastian_kraft_polyphonic_pitch_dete
> ctio.pdf
> And then there's the work of Anssi Klapuri and others at Tampere University:
> http://www.cs.tut.fi/~klap/iiro/
> Also, there are algorithms for doing spectrum estimation such as filter
> diagonalization methods (FDM) and the classical Prony algorithm, but due to
> their complexity these probably aren't well-suited for real-time processing
> either (the Prony algorithm also suffers from numerical instabilities
> IIRC), and you still have to do the partitioning of the overtone series
> afterwards.
> There's surely more, but that's what I could find with a quick Google
> search or remember from the top of my head.
> Hope this helps,
> Albert

If it provides inspiration, I was doing this in the late 90's on Windows,
 in good ol' Borland C++ Builder.

I simply grabbed an open-source FFT library, and the rest was easy. 
Audio-to-midi polyphonic pitch converter.

It is a real riot! Super fun to try.

I was able to play polyphonic guitar chords and have it come out 
 as midi, for example piano. 
With velocity detection. And anti-retriggering.

There is one drawback. Latency.
For FFT to distinguish among notes  it needs a certain amount of 
 samples in a block. More samples per block for lower notes.
On guitar it was just sorta kinda usable, but fun.

To reduce latency I even tried putting the guitar through a standard 
 time-domain pitch shifter (up one octave) and then into the detector.
Not bad, so so.

Question: I tried a demo product which did polyphony, with similar 
 latency as my app, which claimed to have a full version with 
 near-zero latency.

Is this actually possible?

And with properly timed chord notes (not high notes sounding 
 before low notes ie lower latency for higher notes)?   

Related question:
Albert (and list), I am desperately searching for a pitch shifting 
 phase-vocoder audio plugin with lower latency than FFT.

I have read about wavelets for a long time. 
They are said to be better for this than FFT.
Hard to find real working examples except in commercial.

In PD, there is a wavelet pitch shifter (I think in PD extended)
 but it is *broken*
I emailed the list but got no reply except to contact the author,
 which I haven't done yet.

Are wavelets good for polyphonic pitch detection too?

Can anyone shed more light on them in this context?

Thanks for the links Albert, bookmarked and will check them out.

More information about the Linux-audio-dev mailing list