[LAD] [Source uploaded to GitHub] GuitarSynth

Tim E. Real termtech at rogers.com
Sun Apr 26 17:00:40 UTC 2015

On April 26, 2015 09:10:30 AM Fons Adriaensen wrote:
> On Sat, Apr 25, 2015 at 08:35:56PM +0200, Albert Graef wrote:
> > > 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?
> > 
> > Sounds like snake oil to me, but don't take my word for it.
> Sound very unlikely. One problem with polyphonic pitch detection
> is two or more notes that share a number of harmonic frequencies
> and start at the same time. This will occur with many chords that
> contain simple intervals like octave and fifth.
> It is possible to detect which harmonics are shared (they will
> have a different amplitude / phase profile) but this requires
> tracking them for some time and hence additional latency.
> I suspect the same is even true for human perception. If we hear
> a perfect fifth chord we may have the impression to have detected
> that it consist of two notes immediately. But there are many
> examples of our brain playing tricks and 'backdating' the result
> of an observation which has actually taken more time than we
> think.
> Real-time polyphonic pitch detection is still a research topic,
> just look at the publication dates of some of papers already
> mentioned. For a guitar it may be easier than the general case
> due to the restriced frequency range of each string and in
> general a clear attack of each note.
> Ciao,

OK Albert, I uploaded the source of my polyphonic guitar synth to:


The latest version was written in Borland C++ Builder around 2000.

The source uses a few of my 'hidden continuous borderless mouse'
 controls which I discussed in another current LAD thread concerning 
 'user eXperience in Linux'.
You won't be able to actually build the source without those 
 controls' sources, which I did not upload :-(

However, I included the finished executable !
And... it *runs* under Wine !

(Gotta love Wine, the older the program, the better it is.)

Inspiration for the OP I hope.

Try it, both to see how the program works and to see how my 
 'hidden continuous borderless mouse' controls work.
(Press the mouse inside any of the edit boxes and then move the
 mouse, observe the mouse hides and the edit value rolls on and on...)

The source does include the actual DSP library I used.
It is the GNU2 licensed 'libdsp' from Philippe Strauss.

The program includes the ability to use the PC keyboard
 as a music keyboard, hence the map on the right.

[Fons:] Yeah, believe it or not it works best with *dead* guitar strings
 and the guitar's tone knob all the way down.
Don't want too many rich guitar string harmonics in there!
Given that, it works kinda OK.

Fons do you have any insight into wavelets and how they might
 be better for lower latency pitch detection than FFT?


More information about the Linux-audio-dev mailing list