Show demo

Apply pitch-correction to a single-voiced signal.

The elastiqueTune task can apply pitch correction to single-voiced audio files such as vocals or a saxophone in addition to the parameters already available in the elastique task (tempo, pitch, and timbre).

Pitch correction allows you to automatically correct intonation problems of a singer or an instrumentalist who deviates too much from the target pitch. If correctly used, it allows you to improve the perceived quality of the musical performance. Pitch correction is sometimes also referred to as "auto-tuning". It cannot by applied to polyphonic audio signals.

Another use case is melody modification. In conjunction with the melody task the elastiqueTune task can be used to change individual notes of a monophonic audio file by passing in a dash-separated list of MIDI note values with the midi_pitches parameter. Example: The melody analysis returns a list of 4 MIDI pitches of 60-64-67-72 (equals C-E-G-C, a C major arpeggio). When calling process/elastiqueTune upon the same audio with a MIDI list of 60-63-67-70 (C-Eb-G-Bb) the audio will be changed to a Cm7 arpeggio.


Parameter Type Description
pitch_semitones optional float [-24 .. 24] default: 0 Shift the pitch up/down (+- 24 semitones).

Change the pitch without changing the tempo. Example: A value of 2.0 leads to pitch increase of 2 semitones and a frequency increase of factor 2^(2/12), respectively.

tempo_factor optional float [0.25 .. 4] default: 1 Scale the tempo up/down by this factor (0.25-4.0).

Change the tempo without changing the pitch. Example: Factor 2.0 leads to twice the tempo and half the file length, respectively.

formant_semitones optional float [-12 .. 12] default: 0 Shift the formants up/down (+- 12 semitones).

Change the timbre without changing tempo/pitch. Use high values for Mickey Mouse and low values for Darth Vader. Link with pitch factor for traditional style pitch shifting.

pitchcorrection_percent optional float [0 .. 100] default: 0 Correct mean pitch per note by this amount (0%-100%).

Set the amount of pitch correction. Example: 0% means no pitch correction at all and 100% means that every note is corrected.

pitchdrift_percent optional float [0 .. 200] default: 100 Control variation around mean pitch per note (0%-200%).

Change the amount of pitch variation from the mean pitch. Example: 0% means the pitch stays exactly the mean pitch and 200% means the pitch varies twice as much.

transition_factor optional float [0 .. 1] default: 1 Control drift during note transitions.

Determines how much the drift factor affects the transition between notes. Example: 1 means no change and 0 means drift is fully applied to the transition area.

midi_pitches optional string A list of MIDI pitches separated by '-' for mapping each identified pitch individually in order of appearance.

Each identified pitch in the input audio file is mapped to the new MIDI pitch in the list. If the list ends with '-...' the previous pitch sequence will be repeated until the end of the file. Example: '60-...' will map all pitches in the audio file to middle C.

The analysis stage of the algorithm extracts an average pitch for each note of the input melody. The parameters pitchcorrection_percent and pitchdrift_percent are applied relative to each individual note. A vibrato, for example, will modulate the fundamental frequency around the mean pitch. The parameter pitchcorrection_percent will impact the mean pitch of each note and the parameter pitchdrift_percent the vibrato amplitude.
For additional information on the remaining parameters please refer to the process/elastique parameter documentation.



The response gives you a status code, the file_id and the corresponding download URL of the resulting file (audio for process tasks and xml for analyze tasks). For processing reports, use the file/status request with the parameterformat=xml(p)/json(p).

Name Description
status The status code of the task.
file_id The unique identifier of the file.
href The direct download link to the file including the file_id


The response will be the resulting audio file. If you request the file_id with format=xml(p)/json(p), you will receive additional info on the task, its parametrization, and the output file.

Name Description
warning If there is anything you should know about, we will tell you here.
output_info Information on the level of the output file: peak_level is the overall maximum level of the output file in dBFS - if peak level is higher than 0, clipped is set to true and you should consider actions to avoid the overload.
parameters Contains the values of all task parameters for this process.

One-click example

Replace all notes in this saxophone recording with a Cmin7-arpeggio and speed it up by a factor of 1.2 with a simple click on this button:
Process Learn more The button is just a link with a specially constructed URL:
By requesting this URL, the input file will be imported into the system, processed by sonicAPI and the output file will be downloaded by your browser. The Live-Demo helps you to explore the available parameters and to generate some example code.

About the technology

The elastiqueTune task uses the élastique Tune engine by zplane.development for time and pitch correction.