Hi all!!
For my capstone in my masters, I made a pretty cool smart harmonizer. I’m pretty proud of it. However, I was using puredata and libpd to make it work. A friend of mine in the program never had success compiling with libpd on mac, so now we are trying to do everything I was doing in pure-data in juce directly.
Here-in lies the problem. I cannot for the life of me get any pitch detector to work in the process block. Has anyone had any luck implementing a pitch detector (like adamski for example)? I would really love some guidance. I’ve spent 10s of hours troubleshooting this.
Do you want to write a pitch detection algorithm yourself from scratch, or find a library?
Hey avisilber88 Your link doesn’t seem to work for me. It just goes to my Drive home page.
So this morning I was able to get adamski’s pitch detector working. So I think I’m good for now. Now I’m planning to use signalsmith to implement the pitch shifting.
My only thing is that I can’t seem to figure out how to adjust the threshold, and also get the float value rather than exact midi value
This is really cool. nicely done!!
Thank you!
If its not too much work, could you share how you got it working? I’m trying to use it and whenever I try to calculate the frequency I get the buffer size as a float.
Do you mind sharing your code? I don’t remember what I did, but I could probably fix yours too
Hi!
I just wanted to say your harmonizer plugin is amazing — really impressive work!
I’m currently working on a similar vocal harmony plugin using JUCE, and I’m using the Yin algorithm for pitch detection. The idea is to detect the singer’s fundamental pitch in real-time and then generate harmony voices based on user-selected key, scale (major/minor), and intervals (3rd or 5th).
However, I’m struggling to get my plugin to actually produce harmony voices — I only hear the dry input signal, no harmonies. In theory it should work or maybe I am not testing it right .
Would you be willing to take a look at my approach or offer any advice on what might be going wrong? Any help would be hugely appreciated!
Thanks a lot!
Absolutely, I switched to yin as well. What are you using for your pitch shifting?
I’m using basic time-domain resampling with juce::LagrangeInterpolator for pitch shifting. I know it’s not giving the right results so far — do you have a method you’d recommend for real-time pitch shifting that keeps timing intact?
I’m using signal smith stretch
Okay I tried using it but when you’re using it in your project, what exact files or folders do you include? I’m trying to get it to compile but keep getting missing include errors like signalsmith-stretch/signalsmith-stretch.h
. Do you just add the stretch.h
file, or do you include the whole signalsmith-linear
dependency folder too? If so, which files from it?
Nevermind, I realize this implementation is way more complex than what I need for the demo I want to create. I don’t require super high-quality audio right now, so I’ll look for a simpler solution.
I think I included the dependency folder too could you send some screenshots of your errors?
It ended up being pretty simple.
Also, if you find any psola that works, I want to use psola too
I tried implementing a PSOLA , but my main issue remains the same, I think the pitch detection is working, I’m not completely sure since the audio sounds the same—no harmony or pitch shift that I can hear. It feels like the pitch-shifted audio(if there is one) isn’t getting mixed into the output properly. I’ve looked over the parameters and buffer handling but still can’t figure out what’s missing.
I put a text on screen to tell me what pitch it was reading in the editor