Music 220a - TJ Melanson
Final Project: Timbre shifter

The purpose of this project was to transmute the playing of one instrument onto another as to create a non-MIDI electronic instrument. First, I take a sample of the desired instrument for the longest period of time I think a note will be played and put it into an FFT. Then, for each sample of a line-in input (eg an electric guitar), I take its fundamental frequency and transpose the sound sample given by the first FFT, multiply the indeces of each value by the ratio of the new frequency to the original frequency, and store it in a new FFT data array. This is passed into an IFFT object, which is sent to dac.

As an example, I recorded two sounds: one of me playing ¨Ode to Joy¨ on my guitar, and one of me singing approximately the pitch of ¨A¨ near the bottom of the bass clef. Running timbre-shift as is will "play" my voice to the notes of the guitar

There are several features I plan to explore in the future. The first is to record the sound of the sample instrument into a file, so that it can be read more quickly. The second is a way to store the FFT data in a form other than an double array of amplitude over frequency over time. I thought about using the curve center frequency and width as an option, or to create something more similar to the array, but less discrete (have the interval between indeces change, for example). Lastly, I would like to improve upon the pitch detecting techniques, as while the guitar frequency was detected properly, the frequency of my voice was off by an octave and a third.The detector also cannot accurately detect the pitch of the BeeThree or the Saxofony instruments I tried to use as defaults.


Final Project Chuck File
Sound files:
Guitar piece
Voice sample