annotate README @ 84:55a047986812 tip

Update library URI so as not to be document-local
author Chris Cannam
date Wed, 22 Apr 2020 14:21:57 +0100
parents 3d5f8e4593ef
children
rev   line source
matthiasm@52 1 ### SEGMENTINO VAMP PLUGIN ###
matthiasm@52 2
Chris@65 3 Segmentino is a Vamp plugin for automatic music structural
Chris@65 4 segmentation, based on an algorithm first used in Mauch's paper on
Chris@65 5 "Using Musical Structure to Enhance Automatic Chord Transcription"
Chris@65 6 (http://code.soundsoftware.ac.uk/publications/55).
matthiasm@52 7
matthiasm@52 8 ## Installation ##
matthiasm@52 9
Chris@65 10 Vamp plugins (http://www.vamp-plugins.org/) can be used with any Vamp
Chris@65 11 host. Popular free hosts are Sonic Visualiser
Chris@65 12 (http://sonicvisualiser.org), Audacity
Chris@65 13 (http://audacity.sourceforge.net/) and Sonic Annotator (command-line
Chris@65 14 tool, http://www.omras2.org/sonicannotator().
matthiasm@52 15
Chris@65 16 For the newest Segmentino plugin downloads, ready to be installed, go
Chris@65 17 to the Downloads page:
Chris@65 18 http://code.soundsoftware.ac.uk/projects/segmenter-vamp-plugin/files.
matthiasm@52 19
Chris@65 20 Installation instructions for Mac, Windows, Linux can be found at:
Chris@65 21 http://www.vamp-plugins.org/download.html.
matthiasm@52 22
matthiasm@52 23 ## Method Overview ##
matthiasm@52 24
Chris@65 25 The idea of the method is quite simple. A beat-quantised chroma
Chris@65 26 representation is used to calculate pair-wise similarities between
Chris@65 27 beats (really: beat "shingles", i.e. multi-beat vectors). Based on
Chris@65 28 this first similarity calculation, an exhaustive comparison of all
Chris@65 29 possible segments of reasonable length in beats is executed, and
Chris@65 30 segments are added to form segment families if they are sufficiently
Chris@65 31 similar to another "family member".
matthiasm@52 32
Chris@65 33 Now comes the crucial greedy step: having accumulated a lot of
Chris@65 34 families, the families are rated, and the one with the highest score
Chris@65 35 is used as the first segmentation group that gets annotated. This last
Chris@65 36 step is repeated until no more families fit the remaining "holes" in
Chris@65 37 the song that haven't already been assigned to a segment. This is
Chris@65 38 described in Mauch's thesis:
Chris@65 39 http://code.soundsoftware.ac.uk/publications/56 as "heuristic of a
Chris@65 40 music editor who tries to make a concise transcription to make
Chris@65 41 orientation in the score easier, and to save space (or paper)".
matthiasm@52 42
matthiasm@52 43 More details in Mauch's thesis: http://code.soundsoftware.ac.uk/publications/56.
matthiasm@52 44
matthiasm@52 45 ## Limitations ##
matthiasm@52 46
Chris@65 47 This method was developed for "classic rock" music, and therefore
Chris@65 48 assumes a few characteristics that are not necessarily found in other
Chris@65 49 music: repetition of harmonic sequences in the music that coincide
Chris@65 50 with structural segments in a song; a steady beat; segments of a
Chris@65 51 certain length; corresponding segments have the same length in
Chris@65 52 beats. Furthermore, as with any audio algorithm, the method doesn't
Chris@65 53 work perfectly even if these conditions are actually fulfilled.
matthiasm@52 54
matthiasm@52 55 ## Implementation ##
matthiasm@52 56
Chris@65 57 This Vamp implementation was coded by Massimiliano Zanoni, Matthias
Chris@65 58 Mauch and Chris Cannam. It is similar to Mauch's original Matlab
Chris@65 59 implementation used in the publications, but not exactly the same. The
Chris@65 60 beat times are extracted using Davies's beat tracker as implemented in
Chris@65 61 the Queen Mary Vamp plugins
Chris@65 62 (http://code.soundsoftware.ac.uk/projects/qm-vamp-plugins), which in
Chris@65 63 turn is based on the QM DSP library
Chris@65 64 (http://code.soundsoftware.ac.uk/projects/qm-dsp). NNLS Chroma
Chris@65 65 (http://isophonics.net/nnls-chroma) is used as a chroma extractor, by
Chris@65 66 borrowing code from the Vamp plugin of the same name.
matthiasm@52 67
matthiasm@52 68 ## Examples ##
matthiasm@52 69
Chris@65 70 Some example YouTube videos showing off the range of quality of
Chris@65 71 segmentation one can get using Segmentino.
matthiasm@52 72
matthiasm@52 73 1. excellent: "Bring On The Night" http://www.youtube.com/v/c0W_n_i3Ksg&autoplay=1
matthiasm@52 74 2. very good: "Dirty Work" http://www.youtube.com/v/9lWrvvP4PCw&autoplay=1
matthiasm@52 75 3. less than good: "Every Kinda People" http://www.youtube.com/v/ICz-PnhfD0M&autoplay=1
matthiasm@52 76 4 complete failure: "New York New York" http://www.youtube.com/v/LcmTCeAKM48&autoplay=1
matthiasm@52 77
matthiasm@52 78 ## Citation, License and Use ##
matthiasm@52 79
Chris@65 80 If you make use of this software for any public or commercial purpose,
Chris@65 81 we ask you to kindly mention the authors and Queen Mary, University of
Chris@65 82 London in your user-visible documentation. We're very happy to see
Chris@65 83 this sort of use but would much appreciate being credited, separately
Chris@65 84 from the requirements of the software license itself (see below).
matthiasm@52 85
Chris@65 86 If you make use of this software for academic purposes, please cite
Chris@65 87 one of the publications indicated on the Publications page
Chris@65 88 https://code.soundsoftware.ac.uk/publications?project_id=segmenter-vamp-plugin.
Chris@65 89
Chris@65 90 This program is free software: you can redistribute it and/or modify
Chris@65 91 it under the terms of the GNU Affero General Public License as
Chris@65 92 published by the Free Software Foundation, either version 3 of the
Chris@65 93 License, or (at your option) any later version.
Chris@65 94
Chris@65 95 This program is distributed in the hope that it will be useful, but
Chris@65 96 WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@65 97 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Chris@65 98 Affero General Public License for more details.
Chris@65 99
Chris@65 100 You should have received a copy of the GNU Affero General Public License
Chris@65 101 along with this program. If not, see <http://www.gnu.org/licenses/>.
matthiasm@52 102
matthiasm@52 103 ## Pronunciation ##
matthiasm@52 104
Chris@65 105 Segmentino is pronounced "segmen'TEEno" (not "seg'MENtino", the third
Chris@65 106 person plural conjunctive of the Italian verb "segmentare").
Chris@65 107