TSM toolbox

The TSM toolbox has been developed by Jonathan Driedger and Meinard Müller. It contains MATLAB implementations of various classical time-scale modification (TSM) algorithms like OLA, WSOLA, and the phase vocoder. Furthermore, the toolbox also provides the code for a recently proposed TSM algorithm based on a combination of the classical algorithms as well as harmonic-percussive source separation (HPSS). Finally, it also includes a wrapper function which allows to call the commercial state-of-the-art TSM algorithm élastique by zPlane directly from MATLAB. To show how the algorithms can be applied and to give some demo applications, the toolbox also includes several demo scripts and additional code examples. The MATLAB implementations provided on this website are published under the terms of the MIT License. A general overview of the TSM Toolbox is given in [1].

If you publish results obtained using these implementations, please cite [1]. For technical details of the TSM algorithm based on HPSS please cite [2].

MATLAB Code

The MATLAB implementations provided on this website are published under the terms of the MIT License. If you publish results obtained using these implementations, please cite the references below.

Download TSM Toolbox - Version 2.03. Last update 2021-25-06 as zip

The following functions for the computation of TSM results are included in the toolbox:

  • wsolaTSM.m Application of OLA or WSOLA.
  • pvTSM.m Application of the phase vocoder (with or without identity phase locking).
  • hpTSM.m Application of TSM based on HPSS.
  • elastiqueTSM.m MATLAB wrapper for the élastique algorithm.

Furthermore, the following auxiliary and visualization functions are included:

Finally, the following demo files are provided. These demo files allow you to try out the code and give you a first overview of the toolbox. The necessary audio files to run the demos are also included in the toolbox.

  • demoTSMtoolbox.m Demo script which executes all included TSM algorithms.
  • demoGenerateTSMwebsite.m Demo script which generates a a html-based user interface to compare the TSM results of the several algorithms.
  • demoNonlinearTSM.m Demo script which shows how the TSM algorithms in the toolbox can be used to synchronize audio recordings.
  • demoPitchShift.m Demo script which shows how pitch-shifting can be applied to audio signals by using TSM algorithms.

Audio Examples

Stretching factor α=0.5

Name Original OLA WSOLA Phase Vocoder Phase Vocoder
(phase locking)
TSM based on
HPSS
élastique
Bongo [wav] [wav] [wav] [wav] [wav] [wav] [wav]
CastanetsViolin [wav] [wav] [wav] [wav] [wav] [wav] [wav]
DrumSolo [wav] [wav] [wav] [wav] [wav] [wav] [wav]
Glockenspiel [wav] [wav] [wav] [wav] [wav] [wav] [wav]
Stepdad [wav] [wav] [wav] [wav] [wav] [wav] [wav]
Jazz [wav] [wav] [wav] [wav] [wav] [wav] [wav]
Pop [wav] [wav] [wav] [wav] [wav] [wav] [wav]
SingingVoice [wav] [wav] [wav] [wav] [wav] [wav] [wav]
SynthMono [wav] [wav] [wav] [wav] [wav] [wav] [wav]
SynthPoly [wav] [wav] [wav] [wav] [wav] [wav] [wav]

Stretching factor α=1.2

Name Original OLA WSOLA Phase Vocoder Phase Vocoder
(phase locking)
TSM based on
HPSS
élastique
Bongo [wav] [wav] [wav] [wav] [wav] [wav] [wav]
CastanetsViolin [wav] [wav] [wav] [wav] [wav] [wav] [wav]
DrumSolo [wav] [wav] [wav] [wav] [wav] [wav] [wav]
Glockenspiel [wav] [wav] [wav] [wav] [wav] [wav] [wav]
Stepdad [wav] [wav] [wav] [wav] [wav] [wav] [wav]
Jazz [wav] [wav] [wav] [wav] [wav] [wav] [wav]
Pop [wav] [wav] [wav] [wav] [wav] [wav] [wav]
SingingVoice [wav] [wav] [wav] [wav] [wav] [wav] [wav]
SynthMono [wav] [wav] [wav] [wav] [wav] [wav] [wav]
SynthPoly [wav] [wav] [wav] [wav] [wav] [wav] [wav]

Stretching factor α=1.8

Name Original OLA WSOLA Phase Vocoder Phase Vocoder
(phase locking)
TSM based on
HPSS
élastique
Bongo [wav] [wav] [wav] [wav] [wav] [wav] [wav]
CastanetsViolin [wav] [wav] [wav] [wav] [wav] [wav] [wav]
DrumSolo [wav] [wav] [wav] [wav] [wav] [wav] [wav]
Glockenspiel [wav] [wav] [wav] [wav] [wav] [wav] [wav]
Stepdad [wav] [wav] [wav] [wav] [wav] [wav] [wav]
Jazz [wav] [wav] [wav] [wav] [wav] [wav] [wav]
Pop [wav] [wav] [wav] [wav] [wav] [wav] [wav]
SingingVoice [wav] [wav] [wav] [wav] [wav] [wav] [wav]
SynthMono [wav] [wav] [wav] [wav] [wav] [wav] [wav]
SynthPoly [wav] [wav] [wav] [wav] [wav] [wav] [wav]

References

  1. Jonathan Driedger, Meinard Müller, and Sebastian Ewert
    Improving Time-Scale Modification of Music Signals Using Harmonic-Percussive Separation
    IEEE Signal Processing Letters, 21(1): 105–109, 2014.
    @article{DriedgerME14_HPTSM_IEEE-SPL,
    author = {Jonathan Driedger and Meinard M{\"u}ller and Sebastian Ewert},
    journal = {{IEEE} Signal Processing Letters},
    title = {Improving Time-Scale Modification of Music Signals Using Harmonic-Percussive Separation},
    year = {2014},
    volume = {21},
    number = {1},
    pages   = {105--109},
    }
  2. Jonathan Driedger and Meinard Müller
    TSM Toolbox: MATLAB Implementations of Time-Scale Modification Algorithms
    In Proceedings of the International Conference on Digital Audio Effects (DAFx): 249–256, 2014. PDF
    @inproceedings{DriedgerM14_TSM_DAFx,
    author    = {Jonathan Driedger and Meinard M{\"u}ller},
    title     = {{TSM} {T}oolbox: {MATLAB} Implementations of Time-Scale Modification Algorithms},
    booktitle = {Proceedings of the International Conference on Digital Audio Effects ({DAFx})},
    address   = {Erlangen, Germany},
    year      = {2014},
    pages     = {249--256},
    url-pdf   = {2014_DriedgerMueller_TSM-Toolbox_DAFX.pdf}
    }