<< Chapter < Page
  Auto-tune   Page 1 / 1
Chapter >> Page >
Instructions for using the auto-tune program yourself.

Installation instructions

This .zip archive contains the main function, autotune.m, as well as the helper routines pitchShift.m, fusionFrames.m, and createFrames.m. To install the program, first you must extract it from the archive. In Windows, this can be done by right-clicking on the .zip and selecting “extract here.” Similar methods exist for other operating systems. Next, copy all of the files to your MATLAB directory, or any other directory in your MATLAB path. If you copy the files as part of a folder, then the folder must be included in your MATLAB path for MATLAB to find the autotune function.

The pitch shifting code is a slight modification of the “Guitar Pitch Shifter” from this site . Note that while it is open-source, there may be legal issues with redistributing this code. Do so at your own risk. These issues can be avoided by substituting the pitch shifter for your own pitch shifting code, replacing the call to pitchShift() in autotune.m.

Using the program

The autotune function takes in five arguments, X, pMin, pMax, w, and Fs.

X is the input signal, which is a matrix of amplitudes in either mono (one column) or stereo (two columns). This matrix can be extracted from a .wav file with the wavread command in MATLAB.

pMin is the minimum frequency in which we expect to find a peak, and pMax is the maximum, in Hz. We suggest passing in 60 for pMin and 1050 for pMax to cover the human vocal range, but this interval may need to be expanded for other instruments. In general, the narrowest possible interval covering all played notes is preferable, as this grants the greatest chance of correctly detecting the correct note.

w is the width of the window to correct as if it were an individual note. Note that the current version of the code rounds w to the next power of two, for simplicity. Theoretically, higher values of w would result in less distortion, but also poorer time resolution, where the boundaries between notes would be less precise. We found that 256 was a good value for this parameter.

Finally, Fs is the sampling frequency, in Hz, of the input signal X. This value can be obtained as the second return value of the wavread command, and is commonly either 22050 or 44100. Here is an example of the proper MATLAB commands to auto-tune a vocal sample:

[X, Fs] = wavread('path to input file'); % Read input from .wavout = autotune(X, 60, 1050, Fs); % Process signal wavwrite(out, Fs, 'path to output file'); % Write output to .wav

Alternatively, the output can be played from the MATLAB command line with the following command:

soundsc(out, Fs);

Note that the current version of the code compresses stereo input to mono output, and that execution time can be greatly reduced by processing only a portion of the input song. Please enjoy our code, and feel free to modify and improve upon it!

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Auto-tune. OpenStax CNX. Dec 20, 2012 Download for free at http://cnx.org/content/col11474/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Auto-tune' conversation and receive update notifications?

Ask