• ### Generate overtones based on the fundamental of a complex signal

Hi,

I have been reading and trying to understand the Pd tutorial but I am finding it difficult to correlate the exercises and examples with what I am trying to achieve with my sound. This is because I am a complete newbie to dsp I am sure.

Perhaps someone here might be able to help me. I was thinking wave shaping would be the answer for my problem but I don't really understand it. So let me pose my question.

Given a complex input signal how can I add specific overtones to it? Note that I don't want to add overtones to every component of the signal but only to the fundamental. I realised that I could use a fft~ object to affect the whole signal but I have not been able to determine the fundamental of the signal. Also, of course, I realise that I could be thinking about this in completely the wrong way.

Many thanks,

Richard

• Posts 7 | Views 1739
• Maybe you should explore [fiddle~]. This object estimates the pitch and amplitude of an incoming sound.

Once you know the pitch of your signal, you only have to make Pd play some accompanying signal, i.e. your desired partial. For example, if Pd finds that the the input frequency is 500, then for adding the 2nd partial you do 500 * 2, i.e. the 2nd partial is 1000; for adding the 3rd partial you do 500 * 3; for adding the 4th partial you do 500 * 4; and so on.

Notice that fiddle~ is a bit CPU demanding. If want it to be less expensive delete the number boxes you don't really need, (or insert a [change] before the number boxes so that they only get updated when they detect a change).

I live and love in Argentina

• Also remember that it cannot detect frequencies below 108 Hz. That can be a problem, or slightly confusing.

I live and love in Argentina

• Okay, thanks. I'll look at fiddle~ However, what is the recommended tool if I need to process frequencies lower than 108Hz? (I play bass guitar, you see :-/ ) Thanks

• @rpolton you can try to compile or use this external:
http://www.katjaas.nl/helmholtz/helmholtz.html

You can play with the analysis size (lowest possible pitch is 51hz by default (i think)).

Cheers~

• @EEight Thanks for the tip, this is a wonderful object! I managed to compile it for Linux 64-bit by making the following alterations to the Makefile inside the src folder:

• line 2: changed for `current: pd_linux`
• line 24: removed the flag `-Wl`, so now the line is only `g++ -export-dynamic -shared -o \$*.pd_linux *.o -lc -lm -lstdc++`

It works wonderfully well!

Best,
Gilberto

EDIT: if someone wants the compiled Linux 64-bit external, here it is: helmholtz~.pd_linux

• @EEight Thanks I'll take a look at that too

Posts 7 | Views 1739
Internal error.

Oops! Looks like something went wrong!