# HG changeset patch # User Chris Cannam # Date 1378543887 -3600 # Node ID 4ae8342d1e3d2260a532cdb1781c10188d4cb463 # Parent 46151fd36a0a7cf8941285b8c8362b8fb84482f6# Parent 4fe004e096810cc4c3df166023ad0172691f03c3 Merge from abstract branch diff -r 46151fd36a0a -r 4ae8342d1e3d audio_onset_detection/onsetsds/README.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/audio_onset_detection/onsetsds/README.txt Sat Sep 07 09:51:27 2013 +0100 @@ -0,0 +1,20 @@ +# +# MIREX 2013 submission +# +# Audio Onset Detection +# Vamp plugin version of OnsetsDS by Dan Stowell +# Prepared by Chris Cannam, chris.cannam@eecs.qmul.ac.uk + +# Dependencies + +- Sonic Annotator v1.0 + http://code.soundsoftware.ac.uk/projects/sonic-annotator/files + +- Typical Unix/GNU shell commands + +# How to run + +In a terminal window run: + +./onsetsds.sh input.wav output.txt + diff -r 46151fd36a0a -r 4ae8342d1e3d audio_onset_detection/onsetsds/onsetsds.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/audio_onset_detection/onsetsds/onsetsds.sh Sat Sep 07 09:51:27 2013 +0100 @@ -0,0 +1,23 @@ +#!/bin/bash +# runs sonic annotator using the specified transform file (-t) +# input file: $1 +# output file: $2 + +mydir=`dirname "$0"` +infile="$1" +outfile="$2" + +if [ t"$infile" = "t" ] || [ t"$outfile" = "t" ]; then + echo "Usage: $0 infile.wav outfile.txt" + exit 2 +fi + +echo "Processing input WAV file $infile, writing results to $outfile..." 1>&2 + +VAMP_PATH="$mydir" sonic-annotator \ + -t "$mydir"/onsetsds.ttl \ + -w csv --csv-stdout --csv-separator ';' \ + "$infile" \ + | cut -d';' -f2 \ + > "$outfile" + diff -r 46151fd36a0a -r 4ae8342d1e3d audio_onset_detection/onsetsds/onsetsds.ttl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/audio_onset_detection/onsetsds/onsetsds.ttl Sat Sep 07 09:51:27 2013 +0100 @@ -0,0 +1,28 @@ +@prefix xsd: . +@prefix vamp: . +@prefix : <#> . + +:transform_plugin a vamp:Plugin ; + vamp:identifier "onsetsds" . + +:transform_library a vamp:PluginLibrary ; + vamp:identifier "vamp-onsetsds" ; + vamp:available_plugin :transform_plugin . + +:transform a vamp:Transform ; + vamp:plugin :transform_plugin ; + vamp:step_size "256"^^xsd:int ; + vamp:block_size "512"^^xsd:int ; + vamp:parameter_binding [ + vamp:parameter [ vamp:identifier "dftype" ] ; + vamp:value "3"^^xsd:float ; + ] ; + vamp:parameter_binding [ + vamp:parameter [ vamp:identifier "medspan" ] ; + vamp:value "11"^^xsd:float ; + ] ; + vamp:parameter_binding [ + vamp:parameter [ vamp:identifier "threshold" ] ; + vamp:value "0.5"^^xsd:float ; + ] ; + vamp:output [ vamp:identifier "onsets" ] . diff -r 46151fd36a0a -r 4ae8342d1e3d audio_onset_detection/onsetsds/vamp-onsetsds.so Binary file audio_onset_detection/onsetsds/vamp-onsetsds.so has changed diff -r 46151fd36a0a -r 4ae8342d1e3d vamp-plugins_abstract/Makefile --- a/vamp-plugins_abstract/Makefile Fri Sep 06 16:14:30 2013 +0100 +++ b/vamp-plugins_abstract/Makefile Sat Sep 07 09:51:27 2013 +0100 @@ -1,19 +1,7 @@ -all: qmvamp-mirex2013.pdf chordino-mirex2013.pdf segmentino-mirex2013.pdf beatroot-vamp-mirex2013.pdf cep-mirex2013.pdf +all: qmvamp-mirex2013.pdf qmvamp-mirex2013.pdf: qmvamp-mirex2013.tex qmvamp-mirex2013.bib ( echo q | xelatex qmvamp-mirex2013 ) && bibtex qmvamp-mirex2013 && xelatex qmvamp-mirex2013 && xelatex qmvamp-mirex2013 -chordino-mirex2013.pdf: chordino-mirex2013.tex qmvamp-mirex2013.bib - ( echo q | xelatex chordino-mirex2013 ) && bibtex qmvamp-mirex2013 && xelatex chordino-mirex2013 && xelatex chordino-mirex2013 - -segmentino-mirex2013.pdf: segmentino-mirex2013.tex qmvamp-mirex2013.bib - ( echo q | xelatex segmentino-mirex2013 ) && bibtex qmvamp-mirex2013 && xelatex segmentino-mirex2013 && xelatex segmentino-mirex2013 - -beatroot-vamp-mirex2013.pdf: beatroot-vamp-mirex2013.tex qmvamp-mirex2013.bib - ( echo q | xelatex beatroot-vamp-mirex2013 ) && bibtex qmvamp-mirex2013 && xelatex beatroot-vamp-mirex2013 && xelatex beatroot-vamp-mirex2013 - -cep-mirex2013.pdf: cep-mirex2013.tex qmvamp-mirex2013.bib - ( echo q | xelatex cep-mirex2013 ) && bibtex qmvamp-mirex2013 && xelatex cep-mirex2013 && xelatex cep-mirex2013 - clean: - rm -f qmvamp-mirex2013.bbl qmvamp-mirex2013.aux qmvamp-mirex2013.blg qmvamp-mirex2013.log chordino-mirex2013.aux chordino-mirex2013.blg chordino-mirex2013.log segmentino-mirex2013.bbl segmentino-mirex2013.aux segmentino-mirex2013.blg segmentino-mirex2013.log beatroot-vamp-mirex2013.bbl beatroot-vamp-mirex2013.aux beatroot-vamp-mirex2013.blg beatroot-vamp-mirex2013.log cep-mirex2013.bbl cep-mirex2013.aux cep-mirex2013.blg cep-mirex2013.log + rm -f qmvamp-mirex2013.bbl qmvamp-mirex2013.aux qmvamp-mirex2013.blg qmvamp-mirex2013.log diff -r 46151fd36a0a -r 4ae8342d1e3d vamp-plugins_abstract/beatroot-vamp-mirex2013.tex --- a/vamp-plugins_abstract/beatroot-vamp-mirex2013.tex Fri Sep 06 16:14:30 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -% ----------------------------------------------- -% Template for MIREX 2010 -% (based on ISMIR 2010 template) -% ----------------------------------------------- - -\documentclass{article} -\usepackage{mirex2010,amsmath,cite} -\usepackage{graphicx} - -% Title. -% ------ -\title{MIREX 2013 Entry: BeatRoot Vamp Plugin} - -% Single address -% To use with only one author or several with the same address -% --------------- -%\oneauthor -% {Names should be omitted for double-blind reviewing} -% {Affiliations should be omitted for double-blind reviewing} - -% Two addresses -% -------------- -%\twoauthors -%{Chris Cannam} {Affiliation1 \\ {\tt author1@music-ir.org}} -%{Lu\'{i}s A. Figueira} {Affiliation2 \\ {\tt author2@music-ir.org}} - -% Three addresses -% -------------- - \threeauthors - {Chris Cannam} {Affiliation1 \\ {\tt author1@music-ir.org}} - {Lu\'{i}s A. Figueira} {Affiliation2 \\ {\tt author2@music-ir.org}} - {Simon Dixon} {Affiliation3 \\ {\tt author3@music-ir.org}} - -\begin{document} -% -\maketitle -% -\begin{abstract} - -The BeatRoot Vamp Plugin is an open source Vamp plugin library that -implements the BeatRoot beat-tracking method of Simon Dixon\cite{!!!!}. - -This plugin library is available online as a free, open source -download from the Centre for Digital Music at Queen Mary, University -of London. The BeatRoot algorithm has been submitted to MIREX -evaluation in earlier years\cite{!!!}; we are preparing and submitting -this plugin version of the work as part of a programme of evaluation -of Vamp plugin implementations of published or publicly available -algorithms being carried out at the Centre for Digital Music. - -(For a complete overview of this submission across all of the tasks and -plugins it covers, please see the relevant repository at the -SoundSoftware -site\footnote{http://code.soundsoftware.ac.uk/projects/mirex2013}.) - -\end{abstract} -% -\section{Introduction}\label{sec:introduction} - -describe vamp -describe rationale supporting submission\ldots - - -\bibliography{qmvamp-mirex2013} - -\end{document} diff -r 46151fd36a0a -r 4ae8342d1e3d vamp-plugins_abstract/cep-mirex2013.tex --- a/vamp-plugins_abstract/cep-mirex2013.tex Fri Sep 06 16:14:30 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -% ----------------------------------------------- -% Template for MIREX 2010 -% (based on ISMIR 2010 template) -% ----------------------------------------------- - -\documentclass{article} -\usepackage{mirex2010,amsmath,cite} -\usepackage{graphicx} - -% Title. -% ------ -\title{MIREX 2013 Entry: Cepstral Pitch Tracker Vamp Plugin} - -% Single address -% To use with only one author or several with the same address -% --------------- -%\oneauthor -% {Names should be omitted for double-blind reviewing} -% {Affiliations should be omitted for double-blind reviewing} - -% Two addresses -% -------------- -\twoauthors -{Chris Cannam} {Affiliation1 \\ {\tt author1@music-ir.org}} -{Lu\'{i}s A. Figueira} {Affiliation2 \\ {\tt author2@music-ir.org}} - -% Three addresses -% -------------- -% \threeauthors -% {Chris Cannam} {Affiliation1 \\ {\tt author1@music-ir.org}} -% {Lu\'{i}s A. Figueira} {Affiliation2 \\ {\tt author2@music-ir.org}} -% {Simon Dixon} {Affiliation3 \\ {\tt author3@music-ir.org}} - -\begin{document} -% -\maketitle -% -\begin{abstract} - -The Cepstral Pitch Tracker Vamp Plugin is an open source Vamp plugin -library that implements a monophonic pitch tracking and note -segmentation method. - -This plugin library is available online as a free, open source -download from the Centre for Digital Music at Queen Mary, University -of London. It was initially developed as an illustration of the use of -unit testing in development of audio research algorithms; we are now -preparing and submitting it as part of a programme of evaluation of -Vamp plugin implementations of published or publicly available -algorithms being carried out at the Centre for Digital Music. - -(For a complete overview of this submission across all of the tasks and -plugins it covers, please see the relevant repository at the -SoundSoftware -site\footnote{http://code.soundsoftware.ac.uk/projects/mirex2013}.) - -\end{abstract} -% -\section{Introduction}\label{sec:introduction} - -describe vamp -describe rationale supporting submission\ldots - - -\bibliography{qmvamp-mirex2013} - -\end{document} diff -r 46151fd36a0a -r 4ae8342d1e3d vamp-plugins_abstract/chordino-mirex2013.tex --- a/vamp-plugins_abstract/chordino-mirex2013.tex Fri Sep 06 16:14:30 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -% ----------------------------------------------- -% Template for MIREX 2010 -% (based on ISMIR 2010 template) -% ----------------------------------------------- - -\documentclass{article} -\usepackage{mirex2010,amsmath,cite} -\usepackage{graphicx} - -% Title. -% ------ -\title{MIREX 2013 Entry: Chordino Vamp Plugin} - -% Single address -% To use with only one author or several with the same address -% --------------- -%\oneauthor -% {Names should be omitted for double-blind reviewing} -% {Affiliations should be omitted for double-blind reviewing} - -% Two addresses -% -------------- -%\twoauthors -%{Chris Cannam} {Affiliation1 \\ {\tt author1@music-ir.org}} -%{Lu\'{i}s A. Figueira} {Affiliation2 \\ {\tt author2@music-ir.org}} - -% Three addresses -% -------------- - \threeauthors - {Chris Cannam} {Affiliation1 \\ {\tt author1@music-ir.org}} - {Lu\'{i}s A. Figueira} {Affiliation2 \\ {\tt author2@music-ir.org}} - {Matthias Mauch} {Affiliation3 \\ {\tt author3@music-ir.org}} - -\begin{document} -% -\maketitle -% -\begin{abstract} - -Chordino is an open source Vamp plugin library for harmony and chord -extraction with some features aimed at amateur musicians, and some at -music information retrieval researchers. - -This plugin library has been available online as a free, open source -download from the Centre for Digital Music at Queen Mary, University -of London since late 2010. A related method was submitted to MIREX in -2010 by Matthias Mauch\cite{mauch:md1:2010}. We are now preparing and -submitting this plugin version of his work as part of a programme of -evaluation of Vamp plugin implementations of published or publicly -available algorithms being carried out at the Centre for Digital -Music. - -(For a complete overview of this submission across all of the tasks and -plugins it covers, please see the relevant repository at the -SoundSoftware -site\footnote{http://code.soundsoftware.ac.uk/projects/mirex2013}.) - -\end{abstract} -% -\section{Introduction}\label{sec:introduction} - -desccibe vamp -describe rationale supporting submission\ldots - - -\bibliography{qmvamp-mirex2013} - -\end{document} diff -r 46151fd36a0a -r 4ae8342d1e3d vamp-plugins_abstract/mirex2010.sty --- a/vamp-plugins_abstract/mirex2010.sty Fri Sep 06 16:14:30 2013 +0100 +++ b/vamp-plugins_abstract/mirex2010.sty Sat Sep 07 09:51:27 2013 +0100 @@ -1,7 +1,7 @@ % Latex Paper Template for ISMIR 2010 % Version 20100113 % changed 2009 -> 2010 -% \bibliographystyle{unsrt} -> \bibliographystyle{plain} +% \bibliographystyle{unsrt} -> \bibliographystyle{plain} % % Version 20090507 % The specification of reference order was corrected. @@ -10,7 +10,7 @@ % Version 20090430 % A problem regarding references to sections was fixed. % This caused doubled periods at the end of sentences. -% Example: Section \ref{sec:introduction} +% Example: Section \ref{sec:introduction} % Old version: Section 1. % New version: Section 1 (period was removed) @@ -18,7 +18,7 @@ \newcommand{\bm}[1]{\mbox{\boldmath{$#1$}}} \newcommand{\range}[2]{{#1,\cdots,#2\;}} \newcommand{\secref}[1]{\mbox{Section~\ref{#1}}} -\newcommand{\tabref}[1]{\mbox{Table~\ref{#1}}} +\newcommand{\tabref}[1]{\mbox{Table~\ref{#1}}} \newcommand{\figref}[1]{\mbox{Figure~\ref{#1}}} \newcommand{\eqnref}[1]{\mbox{Eqn. (\ref{#1})}} @@ -44,16 +44,16 @@ \setlength\parskip{0\p@ \@plus \p@} %\def\baselinestretch{0.98} -\def\normalsize{\@setsize\normalsize{12.2pt}\xpt\@xpt} -\def\small{\@setsize\small{10pt}\ixpt\@ixpt} -\def\footnotesize{\@setsize\footnotesize{9pt}\viiipt\@viiipt} -\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt} -\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt} -\def\large{\@setsize\large{14pt}\xiipt\@xiipt} -\def\Large{\@setsize\Large{16pt}\xivpt\@xivpt} -\def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt} -\def\huge{\@setsize\huge{23pt}\xxpt\@xxpt} -\def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt} +\def\normalsize{\@setsize\normalsize{12.2pt}\xpt\@xpt} +\def\small{\@setsize\small{10pt}\ixpt\@ixpt} +\def\footnotesize{\@setsize\footnotesize{9pt}\viiipt\@viiipt} +\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt} +\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt} +\def\large{\@setsize\large{14pt}\xiipt\@xiipt} +\def\Large{\@setsize\Large{16pt}\xivpt\@xivpt} +\def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt} +\def\huge{\@setsize\huge{23pt}\xxpt\@xxpt} +\def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt} \twocolumn \pagestyle{empty} @@ -91,7 +91,7 @@ \vskip 2.0em { \large \lineskip .5em \begin{tabular}[t]{c} - \@author \\ + \@author \\ \end{tabular} \par } @@ -112,11 +112,12 @@ \end{figure} } -\def\oneauthor#1#2{ +\def\oneauthor#1#2#3{ \gdef\@author{ \begin{tabular}{@{}c@{}} {\bf #1} \\ - #2\relax + {\bf #2} \\ + #3\relax \end{tabular}\hskip .3in } } @@ -165,7 +166,7 @@ \renewcommand\section{ \@ismirsectiontrue - \@startsection + \@startsection {section} {1} {\z@} @@ -176,25 +177,25 @@ \renewcommand\subsection{ \@ismirsectionfalse - \@startsection + \@startsection {subsection} {2} {\z@} {-2.5ex \@plus -1ex \@minus -.2ex} {6pt \@plus.2ex} {\normalsize\bf\raggedright} -} +} \renewcommand\subsubsection{ \@ismirsectionfalse - \@startsection + \@startsection {subsubsection} {3} {\z@} {-1.5ex \@plus -1ex \@minus -.2ex} {6pt \@plus.2ex} {\normalsize\it\raggedright} -} +} \def\@sect#1#2#3#4#5#6[#7]#8{ \refstepcounter{#1} @@ -203,7 +204,7 @@ \else \edef\@svsec{\csname the#1\endcsname\hskip 0.6em} \fi - \begingroup + \begingroup \ifnum #2=1 \bf\centering{\interlinepenalty \@M \@svsec\uppercase{#8}\par} \else @@ -247,9 +248,9 @@ \long\def\@makecaption#1#2{ \vskip 10pt \setbox\@tempboxa\hbox{#1. #2} - \ifdim - \wd\@tempboxa >\hsize #1. #2\par - \else + \ifdim + \wd\@tempboxa >\hsize #1. #2\par + \else \hbox to\hsize{\hfil\box\@tempboxa\hfil} \fi diff -r 46151fd36a0a -r 4ae8342d1e3d vamp-plugins_abstract/qmvamp-mirex2013.bib --- a/vamp-plugins_abstract/qmvamp-mirex2013.bib Fri Sep 06 16:14:30 2013 +0100 +++ b/vamp-plugins_abstract/qmvamp-mirex2013.bib Sat Sep 07 09:51:27 2013 +0100 @@ -8,10 +8,124 @@ year = {2007} } +@article{ellis2007, + author = {D. P. W. Ellis}, + title = {Beat Tracking by Dynamic Programming}, + journal = {Journal of New Music Research}, + volume = {37}, + number = {1}, + pages = {51-60}, + year = {2007} +} + +@inproceedings{dan2007a, + author = {Dan Stowell and Mark D. Plumbley}, + title = {Adaptive whitening for improved real-time audio onset detection}, + booktitle = {Proceedings of the International Computer Music Conference (ICMC'07)}, + year = {2007} +} + +@inproceedings{chris2003a, + author = {Chris Duxbury and Juan Pablo Bello and Mike Davies and Mark Sandler}, + title = {Complex Domain Onset Detection for Musical Signals}, + booktitle = {Proceedings of the 6th Int. Conference on Digital Audio Effects (DAFx-03) }, + year = {2003} +} + +@inproceedings{dan2005a, + author = {Dan Barry and Derry Fitzgerald and Eugene Coyle and Bob Lawlor}, + title = {Drum Source Separation using Percussive Feature Detection and Spectral Modulation}, + booktitle = {ISSC 2005}, + year = {2005} +} + + @article{mark2008a, + author = {Mark Levy and Mark Sandler}, + title = {Structural Segmentation of Musical Audio by Constrained Clustering}, + journal = {IEEE Transactions on Audio, Speech, and Language Processing}, + month = {February}, + number = {2}, + pages = {318-326}, + volume = {16}, + year = {2008} +} + +@conference{noland2007signal, + title={Signal Processing Parameters for Tonality Estimation}, + author={Noland, Katy and Sandler, Mark}, + booktitle={Audio Engineering Society Convention 122}, + month={May}, + year={2007} +} + + @inproceedings{sonicvisualise2010, + author = {Chris Cannam and Christian Landone and Mark Sandler}, + title = {Sonic Visualiser: An Open Source Application for Viewing, Analysing, and Annotating Music Audio Files}, + booktitle = {Proceedings of the ACM Multimedia 2010 International Conference}, + year = {2010} +} + +@BOOK{krumhansl1990, + AUTHOR = {C. L. Krumhansl}, + TITLE = {Cognitive Foundations of Musical Pitch}, + PUBLISHER = {Oxford University Press}, + YEAR = {1990} +} + +@article {gomez2006, + title = {Tonal description of polyphonic audio for music content processing}, + journal = {INFORMS Journal on Computing, Special Cluster on Computation in Music}, + volume = {18}, + year = {2006}, + author = {Emilia G{\'o}mez} +} + @incollection{mauch:md1:2010, Author = {Matthias Mauch and Simon Dixon}, - Booktitle = {Submissions to MIREX 2010}, - Publisher = {Graduate School of Library Information Science University of Illinois at Urbana-Champaign}, Title = {MIREX 2010: Chord Detection Using a Dynamic Bayesian Network}, - Year = {2010}} + Year = {2010} +} + @inproceedings{matthias2010a, + author = {Matthias Mauch and Simon Dixon}, + title = {Approximate Note Transcription for the Improved Identification of Difficult Chords}, + booktitle = {Proceedings of the 11th International Society for Music Information Retrieval Conference (ISMIR 2010)}, + year = {2010} +} + + @inproceedings{matthias2009a, + author = {Matthias Mauch and Katy C. Noland and Dixon, Simon}, + title = {Using Musical Structure to Enhance Automatic Chord Transcription}, + booktitle = {Proceedings of the 10th International Conference on Music Information Retrieval (ISMIR 2009)}, + pages = {231-236}, + year = {2009} +} + + @phdthesis{matthiasphd, + author = {Matthias Mauch}, + title = {Automatic Chord Transcription from Audio Using Computational Models of Musical Context}, + school = {Queen Mary, University of London}, + year = {2010} +} + +@misc{chris2012a, + author = {Chris Cannam}, + title = {Unit testing: An audio research example}, + howpublished = {Handout}, + note = {One of the single-page handouts made available at DAFx and ISMIR 2012 tutorials. See http://www.soundsoftware.ac.uk/handouts-guides for more information.}, + year = {2012} +} + + @inproceedings{simon2006a, + author = {Simon Dixon}, + title = {MIREX 2006 Audio Beat Tracking Evaluation: BeatRoot}, + year = {2006} +} + + @inproceedings{simon2001a, + author = {Simon Dixon}, + title = {An Interactive Beat Tracking and Visualisation System}, + booktitle = {Proceedings of the 2001 International Computer Music Conference (ICMC'2001)}, + year = {2001} +} + diff -r 46151fd36a0a -r 4ae8342d1e3d vamp-plugins_abstract/qmvamp-mirex2013.pdf Binary file vamp-plugins_abstract/qmvamp-mirex2013.pdf has changed diff -r 46151fd36a0a -r 4ae8342d1e3d vamp-plugins_abstract/qmvamp-mirex2013.tex --- a/vamp-plugins_abstract/qmvamp-mirex2013.tex Fri Sep 06 16:14:30 2013 +0100 +++ b/vamp-plugins_abstract/qmvamp-mirex2013.tex Sat Sep 07 09:51:27 2013 +0100 @@ -9,72 +9,299 @@ % Title. % ------ -\title{MIREX 2013 Entry: VAMP Plugins} +\title{MIREX 2013 Entry: Vamp Plugins from the Centre for Digital Music} % Single address % To use with only one author or several with the same address % --------------- -%\oneauthor -% {Names should be omitted for double-blind reviewing} -% {Affiliations should be omitted for double-blind reviewing} - -% Two addresses -% -------------- -\twoauthors -{Chris Cannam} {Affiliation1 \\ {\tt author1@music-ir.org}} -{Lu\'{i}s A. Figueira} {Affiliation2 \\ {\tt author2@music-ir.org}} - -% Three addresses -% -------------- -% \threeauthors - % {Chris Cannam} {Affiliation1 \\ {\tt author1@music-ir.org}} - % {Lu\'{i}s A. Figueira} {Affiliation2 \\ {\tt author2@music-ir.org}} - % {Matthias Mauch} {Affiliation3 \\ {\tt author3@music-ir.org}} +\oneauthor +{Chris Cannam, Matthias Mauch, Matthew E. P. Davies, Simon Dixon, Christian Landone,} +{Katy Noland, Mark Levy, Massimiliano Zanoni, Dan Stowell and Lu\'{i}s A. Figueira} +{Queen Mary, University of London \\ {\em chris.cannam@eecs.qmul.ac.uk}} \begin{document} % \maketitle % \begin{abstract} -This abstract relates to submissions to several different categories. All submissions are of previously published methods. All submissions are in the form of VAMP Plugins. -All plugins are fully open-source, and can be downloaded from the Isophonics\footnote{http://isophonics.net/QMVampPlugins} and SoundSoftware websites\footnote{http://code.soundsoftware.ac.uk/projects/qm-vamp-plugins}. - -For a complete (except binary files) overview of this submission - with detailed README files, scripts, etc. - please see the SoundSoftware site\footnote{http://code.soundsoftware.ac.uk/projects/mirex2013}. +In this submission we offer for evaluation several audio feature +extraction plugins in Vamp format. Some of these plugins represent +efficient implementations based on modern work, while others are no +longer state-of-the-art and were developed a few years ago. The +methods implemented in this set of plugins are described in the +literature and are referenced throughout this paper. \end{abstract} % \section{Introduction}\label{sec:introduction} -describe vamp\ldots -describe rationale supporting submission\ldots +The Vamp plugin format\footnote{http://vamp-plugins.org/} was +developed at the Centre for Digital Music (C4DM) at Queen Mary, +University of London, during 2005-2006 in response to a desire to +publish work in a form that would be immediately useful to people +outside this research field. The Vamp plugin format was published with +an open source SDK, alongside the Sonic +Visualiser~\cite{sonicvisualise2010} audio analysis application which +provided a useful host for Vamp plugins. -\section{Audio Beat Tracking} +In subsequent years the Vamp format has become a moderately popular +means of distributing methods from the Centre and other research +groups. Some dozens of Vamp plugins are now available from groups such +as the Music Technology Group at UPF in Barcelona, the Sound and Music +Computing group at INESC in Porto, the BBC, and others, as well as +from the Centre for Digital Music. -\subsection{Tempo and Beat Tracker} +The plugins submitted for this evaluation are provided as a set of +library files. Those with names starting ``QM'' are all provided in a +single library file, the QM Vamp Plugins set, made available in binary +form for Windows, OS/X, and Linux from the Centre for Digital Music's +download +page\footnote{http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html}. All +of these plugins are open-source, and source is available through the +SoundSoftware code +site\footnote{http://code.soundsoftware.ac.uk/projects/qm-vamp-plugins}. These +plugins come from a number of authors who are credited in this +abstract and in the plugins' accompanying documentation. -The Tempo and Beat Tracker\cite{matthew2007a} VAMP plugin analyses a single channel of audio and estimates the positions of metrical beats within the music (the equivalent of a human listener tapping their foot to the beat). +In addition to the QM Vamp Plugins set, this submission contains a +number of individual plugins: the Chordino and Segmentino plugins from +Matthias Mauch; the BeatRoot Vamp Plugin from Simon Dixon; OnsetsDS +from Dan Stowell; and a Cepstral Pitch Tracker Plugin from Chris +Cannam. -The Tempo and Beat Tracker Vamp plugin was written by Matthew Davies and Christian Landone. +(For a complete overview of this submission across all of the tasks + and plugins it covers, please see the relevant repository at the + SoundSoftware + site.\footnote{http://code.soundsoftware.ac.uk/projects/mirex2013}) -\section{Audio Chord Estimation} +\section{Submissions by MIREX Task} -\section{Audio Key Detection} +\subsection{Audio Beat Tracking} -\subsection{Key Detector} +\subsubsection{QM Tempo and Beat Tracker} +\label{tempo_and_beat_tracker} -[Need reference] +The QM Tempo and Beat Tracker\cite{matthew2007a} Vamp plugin analyses +a single channel of audio and estimates the positions of metrical +beats within the music. -The Key Detector VAMP pluginanalyses a single channel of audio and continuously estimates the key of the music by comparing the degree to which a block-by-block chromagram correlates to the stored key profiles for each major and minor key. +This plugin uses the complex-domain onset detection method from~\cite{chris2003a} with a hybrid of the two-state beat tracking model +proposed in~\cite{matthew2007a} and a dynamic programming method based +on~\cite{ellis2007}. -The key profiles are drawn from analysis of Book I of the Well Tempered Klavier by J S Bach, recorded at A=440 equal temperament. +To identify the tempo, the onset detection function is partitioned +into 6-second frames with a 1.5-second increment. The autocorrelation +function of each 6-second onset detection function is found and this +is then passed through a perceptually weighted comb +filterbank\cite{matthew2007a}. The successive comb filterbank output +signals are grouped together into a matrix of observations of +periodicity through time. The best path of periodicity through these +observations is found using the Viterbi algorithm, where the +transition matrix is defined as a diagonal Gaussian. -The Key Detector Vamp plugin was written by Katy Noland and Christian Landone. +Given the estimates of periodicity, the beat locations are recovered +by applying the dynamic programming algorithm\cite{ellis2007}. This +process involves the calculation of a recursive cumulative score +function and backtrace signal. The cumulative score indicates the +likelihood of a beat existing at each sample of the onset detection +function input, and the backtrace gives the location of the best +previous beat given this point in time. Once the cumulative score and +backtrace have been calculated for the whole input signal, the best +path through beat locations is found by recursively sampling the +backtrace signal from the end of the input signal back to the +beginning. -\section{Audio Melody Extraction} -\section{Audio Onset Detection} -\section{Audio Structural Segmentation} -\section{Audio Tempo Estimation} +The QM Tempo and Beat Tracker plugin was written by Matthew +Davies and Christian Landone. + +\subsubsection{BeatRoot} + +The BeatRoot Vamp plugin is an open source Vamp plugin library that +implements the BeatRoot beat-tracking method of Simon +Dixon\cite{simon2001a}. The BeatRoot algorithm has been submitted to +MIREX evaluation in earlier years\cite{simon2006a}; this plugin +consists of the most recent BeatRoot code release, converted from Java +to C++ and modified for plugin format. + +The BeatRoot plugin was written by Simon Dixon and Chris Cannam. + +\subsection{Audio Key Detection} + +\subsubsection{QM Key Detector} + +The QM Key Detector Vamp plugin continuously estimates the key of the +music by comparing the degree to which a block-by-block chromagram +correlates to stored key profiles for each major and minor key. + +This plugin uses the correlation method described in~\cite{krumhansl1990} and~\cite{gomez2006}, but using different tone +profiles. The key profiles used in this implementation are drawn from +analysis of Book I of the Well Tempered Klavier by J S Bach, recorded +at A=440 equal temperament, as described in~\cite{noland2007signal}. + +The QM Key Detector plugin was written by Katy Noland and +Christian Landone. + +\subsection{Audio Chord Extraction} + +\subsubsection{Chordino} + +The Chordino plugin was developed following Mauch's 2010 work on chord +extraction, submitted to MIREX in that +year\cite{mauch:md1:2010}. While that submission used a C++ chroma +implementation with a MATLAB dynamic Bayesian network as a chord +extraction front-end\cite{matthias2010a}, Chordino is an entirely C++ +implementation that was developed specifically to be made freely +available as an open-source plugin for general use. + +The method for the Chordino plugin has two parts: + +{\bf NNLS Chroma} --- NNLS Chroma analyses a single channel of audio +using frame-wise spectral input from the Vamp host. The spectrum is +transformed to a log-frequency spectrum (constant-Q) with three bins +per semitone. On this representation, two processing steps are +performed: tuning, after which each centre bin (i.e. bin 2, 5, 8, …) +corresponds to a semitone, even if the tuning of the piece deviates +from 440 Hz standard pitch; and running standardisation: subtraction +of the running mean, division by the running standard deviation. This +has a spectral whitening effect. + +The processed log-frequency spectrum is then used as an input for NNLS +approximate transcription using a dictionary of harmonic notes with +geometrically decaying harmonics magnitudes. The output of the NNLS +approximate transcription is semitone-spaced. To get the chroma, this +semitone spectrum is multiplied (element-wise) with the desired +profile (chroma or bass chroma) and then mapped to 12 bins. + +{\bf Chord transcription} --- A fixed dictionary of chord profiles is +used to calculate frame-wise chord similarities. A standard +HMM/Viterbi approach is used to smooth these to provide a chord +transcription. + +Chordino was written by Matthias Mauch. + +\subsection{Audio Melody Extraction} + +\subsubsection{Cepstral Pitch Tracker} + +The Cepstral Pitch Tracker Vamp Plugin is an open source Vamp plugin +implementation of a monophonic pitch tracking and note segmentation +method. + +The method is that described in the one-page handout ``Unit Testing: +An audio research example'' accompanying our tutorial at DAFx +2012\cite{chris2012a}. It is an agent system, in which agents are used +to evaluate successive pitch peaks to test whether they can be +combined to form a plausible note. The peaks are obtained from an +interpolating peak finder applied to the cepstral transform (inverse +FFT of the log magnitude spectrum) of the short-time Fourier transform +of each input frame. An agent-management system supplies the pitches +to agents, creates a new agent when a novel pitch is found, reaps any +agents that expire without finding a plausible note, and accumulates +the resulting valid notes. + +The Cepstral Pitch Tracker plugin was written by Chris Cannam. + +\subsection{Audio Onset Detection} + +\subsubsection{QM Note Onset Detector} + +The QM Note Onset Detector Vamp plugin estimates the onset times of +notes within the music. It calculates an onset likelihood function for +each spectral frame, and picks peaks in a smoothed version of this +function. + +Several onset detection functions are available in this plugin; this +submission uses the complex-domain method described +in~\cite{chris2003a}. + +The QM Note Onset Detector plugin was written by Chris Duxbury, Juan +Pablo Bello and Christian Landone. + +\subsubsection{OnsetsDS} + +OnsetsDS is an onset detector plugin wrapping Dan Stowell's OnsetsDS +library\footnote{http://onsetsds.sourceforge.net/}, described +in~\cite{dan2007a}. + +OnsetsDS was designed to provide an FFT-based onset detection that +works very efficiently in real-time, with a fast reaction time. It is +not tailored for non-real-time use or for any particular type of +signal. + +The OnsetsDS plugin was written by Dan Stowell and Chris Cannam. + +\subsection{Audio Structural Segmentation} + +\subsubsection{QM Segmenter} + +The QM Segmenter Vamp plugin divides a single channel of music up into +structurally consistent segments. + +The method, described in~\cite{mark2008a}, relies upon timbral or +pitch similarity to obtain the high-level song structure. This is +based on the assumption that the distributions of timbre features are +similar over corresponding structural elements of the music. + +The input feature is a frequency-domain representation of the audio +signal, in this case using a Constant-Q transform for the underlying +features (though the plugin supports other timbral and pitch +features). The extracted features are normalised in accordance with +the MPEG-7 standard (NASE descriptor), and the value of this envelope +is stored for each processing block of audio. This is followed by the +extraction of 20 principal components per block using PCA, yielding a +sequence of 21 dimensional feature vectors where the last element in +each vector corresponds to the energy envelope. + +A 40-state Hidden Markov Model is then trained on the whole sequence +of features, with each state corresponding to a specific timbre +type. This partitions the timbre-space of a given track into 40 +possible types. After training and decoding the HMM, the song is +assigned a sequence of timbre-features according to specific +timbre-type distributions for each possible structural segment. + +The segmentation itself is computed by clustering timbre-type +histograms. A series of histograms are created over a sliding window +which are grouped into M clusters by an adapted soft k-means +algorithm. Reference histograms, iteratively updated during +clustering, describe the timbre distribution for each segment. The +segmentation arises from the final cluster assignments. + +The QM Segmenter plugin was written by Mark Levy. + +\subsubsection{Segmentino} + +The Segmentino plugin is a new C++ implementation of a segmentation +method first described in Matthias Mauch's paper on using musical +structure to enhance chord transcription\cite{matthias2009a} and +expanded on in Mauch's PhD thesis\cite{matthiasphd}. + +A beat-quantised chroma representation is used to calculate pair-wise +similarities between beats (really: beat ``shingles'', i.e.\ multi-beat +vectors). Based on this first similarity calculation, an exhaustive +comparison of all possible segments of reasonable length in beats is +executed, and segments are added to form segment families if they are +sufficiently similar to another ``family member''. Having accumulated a +lot of families, the families are rated, and the one with the highest +score is used as the first segmentation group that gets +annotated. This last step is repeated until no more families fit the +remaining ``holes'' in the song that haven't already been assigned to a +segment. + +This method was developed for ``classic rock'' music, and therefore +assumes a few characteristics that are not necessarily found in other +music: repetition of harmonic sequences in the music that coincide +with structural segments in a song; a steady beat; segments of a +certain length; corresponding segments have the same length in +beats. + +The Segmentino plugin was written by Matthias Mauch and Massimiliano +Zanoni. It is currently in preparation for a public release. + +\subsection{Audio Tempo Estimation} + +For this task we submit the same plugin as that used in the Audio Beat +Tracking task in section~\ref{tempo_and_beat_tracker}. \bibliography{qmvamp-mirex2013} diff -r 46151fd36a0a -r 4ae8342d1e3d vamp-plugins_abstract/segmentino-mirex2013.tex --- a/vamp-plugins_abstract/segmentino-mirex2013.tex Fri Sep 06 16:14:30 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -% ----------------------------------------------- -% Template for MIREX 2010 -% (based on ISMIR 2010 template) -% ----------------------------------------------- - -\documentclass{article} -\usepackage{mirex2010,amsmath,cite} -\usepackage{graphicx} - -% Title. -% ------ -\title{MIREX 2013 Entry: Segmentino Vamp Plugin} - -% Single address -% To use with only one author or several with the same address -% --------------- -%\oneauthor -% {Names should be omitted for double-blind reviewing} -% {Affiliations should be omitted for double-blind reviewing} - -% Two addresses -% -------------- -%\twoauthors -%{Chris Cannam} {Affiliation1 \\ {\tt author1@music-ir.org}} -%{Lu\'{i}s A. Figueira} {Affiliation2 \\ {\tt author2@music-ir.org}} - -% Three addresses -% -------------- - \threeauthors - {Chris Cannam} {Affiliation1 \\ {\tt author1@music-ir.org}} - {Lu\'{i}s A. Figueira} {Affiliation2 \\ {\tt author2@music-ir.org}} - {Matthias Mauch} {Affiliation3 \\ {\tt author3@music-ir.org}} - -\begin{document} -% -\maketitle -% -\begin{abstract} - -Segmentino is a Vamp plugin library for structural segmentation of music audio. - -%!!! check spelling -This library, developed by Matthias Mauch and Massimiliano Zanoni, is -currently in preparation for a public release from the Centre for -Digital Music at Queen Mary, University of London. We are preparing -and submitting it as part of a programme of evaluation of Vamp plugin -implementations of existing algorithms being carried out at the Centre -for Digital Music. - -(For a complete overview of this submission across all of the tasks and -plugins it covers, please see the relevant repository at the -SoundSoftware -site\footnote{http://code.soundsoftware.ac.uk/projects/mirex2013}.) - -\end{abstract} -% -\section{Introduction}\label{sec:introduction} - -desccibe vamp -describe rationale supporting submission\ldots - - -\bibliography{qmvamp-mirex2013} - -\end{document}