The purpose of this code is to compute clean weighted adjacency matrices for audio files using similarity network fusion, which can be used to do clean structure analysis. This is based on ideas from the following papers:
- Christopher J Tralie and Brian McFee. "Enhanced Hierarchical Music Structure Annotations via Feature Level Similarity Fusion. International Conference on Acoustics, Speech, and Signal Processing (ICASSP), 2019.
- Christopher J Tralie. GraphDitty: A Software Suite for Geometric Music Structure Visualization. In 19th International Society for Music Information Retrieval (ISMIR), 2018, Late Breaking Demo Session.
- Christopher J Tralie. ``MFCC and HPCP fusion for robust cover song identification.'' In 18th International Society for Music Information Retrieval (ISMIR), 2017.
- numpy/scipy/matplotlib
- librosa
To see all options, run the script as follows
python SongStructure.py --help
There are options to view each iteration of the fusion. By default, the results are saved to a .mat file called ``out.mat'' and to a file "out.json" (you can changes this via command line options). For example, the above figure was generated with the following call
python SongStructure.py --filename MJ.mp3 --jsonfilename MJ.json
You can open the .json file in the web page "Viewer/index.html" to interactively view the similarity matrix and Laplacian eigenvectors, as well as as force graph and diffusion maps based on the similarity matrix.