Chimp's PitchShifter

by dave hooper

Description

It's just a pitch shifter - given an input waveform, the output waveform approximates to the original played at a higher or lower pitch, whilst keeping the time frame intact.

Features

- Supports shifts of +- 24 semitones (2 octaves)
- Resolution of approximately 1 cent (1/100th of a semitone)
- Singularly unimpressive clicking artifacts, which I still haven't managed to get rid of

What's new

Release 1.0 & 1.01 Initial releases to gauge response
Release 1.05 First 'official' public release Much reduced CPU load (20 times faster code!)
Release 1.1 Second release Made the buffer size an attribute so people can 'tweak' it Had a go at getting rid of the clicks but gave up Full source code available on request
Release 1.1a (30-07-98) Minor bugfix release Small bug which resulted in weird static being produced if the sample rate is changed whilst a buzzsong is being played, and then shortly afterwards the buzzsong is stopped. You probably never noticed it, it wasn't such a big deal anyway, but it did mean that this scary sound was being generated after the song had finished, and there was no way of stopping it!

Usage

> P a r a m e t e r s

Shift | Pitch shift in cents - 100 cents for a shift of one semitone, 1200 cents for a shift of one octave, up to 2400 cents for a two octave shift (not really recommended with this release)
Direction | Up or down, to shift the pitch either higher or lower
Dry | Amount of input that appears unchanged at the output, from 100% to 0% (none of the original signal is present at the output) to -100% (the original signal appears at the output but is inverted)
Wet | Amount of the affected pitchshifted signal that appears at the output, from 100% to 0% (the output does not contain any picthshifted signal, ie, the effect is turned off) to -100% (the pitchshifted signal is inverted before sending to the output)

> A t t r i b u t e s

Buffer size | The size of the internal buffer to use. This becomes important for large upward shifts (using the current algorithm) as the size of the buffer becomes audible, if you get what I mean. The smaller the buffer size, the higher the pitch of the interference you get (ie, smaller buffer is bad). The larger the buffer, the less time-continuous the output signal is, giving rise to echo artifacts on the output signal (ie, larger buffer is also bad).
Overlap Amount on Heads Passed | Left over from my attempts to remove the clicks by incorporating more buffers and filtering and overlapping the signals. Didn't work so I took all the code out again, but left this attribute in case anyone else wants to have a go. This attribute does nothing at the moment.

Notes

Baaaad clicking. Also, large pitchshifts sound a bit naff and aren't much use except for special effects. Try sticking a drum loop through with between +18 and +24 semitone shift upwards to see what I mean.

Some Tips

Use a very small pitch shift (10-30 cents) to make a bass sound 'fatter'
Use a shift of +7 semitones to make easy 'fifths' from, for example, tracker output
Use a downward shift of between 4 and 12 semitones to make drums sound more powerful
Take care not to overdrive the input if you have a high (almost +- 100%) Wet/Dry mix, as it WILL lead to clipping on the output, making the clicking artifacts more prominent. Check with the signal analyser and lower the input volume(s) if necessary. When used in this way, the clicking isn't too bad.

Donationware

If you like and use Chimp's plugins, you can register them by sending any amount of cash (in any currency) to the following address

> > dave hooper
> > 2a corringway fleet
> > hants gu13 0an
> > UK

Contact Information

Author | dave hooper - paranoia consultant with spc
Email | no-brain@mindless.com
Hideously Out-of-Date WebSite | http://yi.com/home/HooperDave/