• Pitch Perfect

    A Vocal Manipulation Tool

    Slide 3

Welcome to Pitch Perfect!

This website was created as part of CS Senior Comprehensive Project 2016 at Carleton College.

Features

Runs in
Real Time

Compatible with
Any OS

Fully Customizable
Source Code

Our Work

We created a command line program which allows a user to change the pitch of any sound. This can be done with human speech, singing, or even musical instruments. We allow the user to change the pitch of prerecorded sound or real-time microphone input, with the target pitch being either a pitch from a sound file or real-time MIDI input.

  • REAL TIME: 90%
  • PITCH DETECTION: 80%
  • PHASE VOCODING: 75%
  • CLI: 60%

Technicals

I/O

We used javax.sound standard libraries to read and write audio WAV files, capture input from a connected microphone, listen for MIDI input from a keyboard, and playback output in realtime to the speakers.

The FFT

We coded our own implementation of the FFT, a divide-and-conquer algorithm to compute the DFT of a signal efficiently. This allows us to analyze and manipulate the signal's fundamental frequency and harmonics directly, taking into account phase information as well.

Pathway

We process our input (from a file/microphone) in overlapping chunks of a fixed size. After first FFT-ing the chunk, we detect the source pitch present. We then determine the target pitch for the chunk by either detecting it from a separate input file or acquiring it in realtime using MIDI. Using a technique known as phase vocoding, we can then change from the source pitch to the target pitch. Reassembling the chunks yields the pitch-altered signal.

Pitch Detection

First we determine if the sound is voiced or unvoiced. In speech, voiced sounds come from the vocal chords, and unvoiced comes from the lips, tongue, and other parts of the mouth. If the sound segment is unvoiced, we say that the pitch of current segement is equal to pitch of previous segment.

Next we use algorithms like AutoCorrelation and Cepstrum Biased HPS to determine various possible pitches in the sound segment.

Finally we weigh the possible pitches, taking into acount standard deviations from the mean and possible artifical doubling or halving in the pitch detection algorithms. We determine the pitch based on maximum weight

Phase Vocoding

In order to shift pitches with minimal distortion, we implemented a phase vocoder. This involved using the FFT to get frequency bins, finding peaks in those bins, and shifting those peaks to alter the pitch.

About Us

This would be Alec if he didn't fail to load...

Alec Bunnell

Joint world record holder for least world records held.

girl 2

Eric Ewing

This is a test file.

girl 3

Erika Fitzpatrick

Like Eric, but "a"

girl 3

Sam Vinitsky

I am a millipede.

girl 3

Jerry Zhou

Twinkle Twinkle, bro.

Andy Exley

Andy Exley

Advisor