Skip to content

An application and a library to align different interpretations of the same song

License

Notifications You must be signed in to change notification settings

gabriel-ss/interpretation-switcher

Repository files navigation

Interpretation Switcher

An application that allows switching between multiple interpretations of a song during its reproduction without breaking the musical continuity. The application interface is built using React with the Electron framework to call the native code that evaluates the alignment between two audio tracks. The native code is written in C++ with the Eigen library. The alignment algorithm implementation that powers the application can be compiled as a standalone library to be used as a C function in other applications. A more didactic implementation of the algorithm written in Julia is also available for testing and research.

Building

Application

You will need both npm and node-gyp installed on your machine and the eigen3 directory included in the compiling options (by default it will look in /usr/include/eigen3/). To build the application run the following commands in the cloned directory:

npm install
npm run package

The packaging process will create an out directory containing the result. To launch the application in development mode run:

npm start

instead of package after installing the dependencies.

Library

To build the library as a standalone shared object just make sure that the eigen3 directory is included in your compiler options (will also look in /usr/include/eigen3/ by default) and run make inside the lib directory with:

cd lib
make libsndalign.so

Alignment algorithm

The alignment algorithm consists in evaluating the DTW between two time-frequency chroma features representation extracted from the input audio signals. A more in-depth description of all the steps can be found in here.

Application preview

About

An application and a library to align different interpretations of the same song

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published