[sdiy] dsPIC pitch shifter

Richie Burnett rburnett at richieburnett.co.uk
Wed Jun 15 18:26:08 CEST 2016


Thanks for the comments.  Some responses inline below...

Peter Ullrich wrote:

> I love voice "transforming" tools, I have the Digital Vocalist II, Korg ih
> and the Boss Voice Transformer VT-1...
> I think that your results are already in the same quality level as these
> tools!

I'm very flattered, the PSOLA technology is similar to what is used in those 
products, but IVL have taken it further to preserve/manipulate formants in 
the Digitech and Korg products.

> Your software solution combined with potentiometer for parameter changing
> on  the fly like in the Boss VT-1 would lead to a very cool gadget!

This currently just has two CV pots that vary the pitch shift amount for 
each output from -12 and +12 semitones.  I might add push-switches for 
common musical intervals though.  You can get some nice close-in harmonies, 
but this is a chromatic pitch shifter, so unless you ride the pitch controls 
it will eventually stray out of key.  You can get a nice imitation of the 
classic dual H910 harmonizer trick to thicken up a lead vocal with 1% or 
less detuning +/- on each channel panned left and right.

Eric Brombaugh wrote:

> I've done 2-pointer pitch shifters in just about every CPU
> architecture that I've ever used but the AM effects from simple
> cross-fading make them sound pretty awful.

The autocorrelation really is key to reducing the artefacts on monophonic 
material.  Of course it sounds absolutely awful on polyphonic material!

Chris McDowell wrote:

> ...Are you using a codec for audio in and out?

I used a 16-bit CS4270 CODEC for some of those examples, and others used the 
12-bit built-in ADC and 16-bit audio DAC.  Sampling rate is 48kHz.  The 
"single_harm" example was definitely using the internal ADC and DAC. 
Original audio input for comparison is here: (whoops, should have given 
credit!):

https://youtu.be/MmKGLYZ4zWs?t=15s

Jim Credland wrote:

> That's impressive to get running on a dspic ... how big is your 
> autocorrelation window?

The two pitch shifters take up about 50% of the maximum available MIPS.  The 
autocorrelation size is 8ms and the search range is 5.3ms to 10.7ms.  It 
currently won't track anything below 93Hz!

The 1984 Agnello (Eventide) de-glitching patent is a good place to start 
reading if interested in this stuff.  Hildebrandt's Autotune patent is also 
worth a read to get an idea of the sort of ways the autocorrelation can be 
optimised for better efficiency.

Best regards,

-Richie, 




More information about the Synth-diy mailing list