changeset 47:69bd20e39aab

Work on plugins, future work etc
author Chris Cannam
date Mon, 26 Sep 2011 14:10:56 +0100
parents 1c3246b919bc
children e2a10580dedf
files cannam.tex
diffstat 1 files changed, 77 insertions(+), 73 deletions(-) [+]
line wrap: on
line diff
--- a/cannam.tex	Mon Sep 26 12:58:58 2011 +0100
+++ b/cannam.tex	Mon Sep 26 14:10:56 2011 +0100
@@ -103,7 +103,7 @@
 Magazine~\cite{vandewalle2009} and Computing in Science and
 Engineering [citation needed] on this subject both appeared in
 2009. The IEEE Signal Processing society now encourages Reproducible
-Research, allowing links from the online journal repository IEEEXplore
+Research, allowing links from the online journal repository IEEE Xplore
 to the code and data associated with a publication (TODO: check this).
 
 Actions such as these promote the idea that research results in signal
@@ -343,24 +343,26 @@
 \subsubsection{User interfaces for version control}
 \label{sec:easyhg}
 
-Attendees at the Autumn School also reported difficulty during the
+Attendees at our Autumn School also reported difficulty during the
 course in getting started with the complex user interfaces available
 for version control.  Nonetheless, version control was amongst the
-areas identified subsequently as most valuable, suggesting that lack
-of awareness may be the main barrier to uptake.
+areas identified subsequently as most valuable.
 
-Our attempt to address the difficulties faced in learning version
-control user interfaces is EasyMercurial,\footnote{\tt
-  http://easyhg.org} an application we developed based on existing
-work [citation needed] in order to provide a user interface that we
-could teach easily to researchers across multiple operating system
-platforms.
+To address some of the difficulties faced in learning version control
+we have developed EasyMercurial,\footnote{\tt http://easyhg.org} an
+application designed to be easy to teach to researchers across
+multiple operating system platforms.  This application uses a visual
+graph representation for change history, showing explicitly the flow
+of simultaneous changes by different users and of merge points.
+EasyMercurial behaves identically on each supported platform (Windows,
+OS/X and Linux) in order to simplify training for researchers with
+disparate platforms.
 
 \subsection{Barrier to reuse: Lack of incentive for publication}
 \label{sec:lackofincentives}
 
 In section \ref{sec:researchsoft} we noted that software and data are
-not typically recognised as assessable research outputs.  Software
+typically not recognised as assessable research outputs.  Software
 also lacks the publication convention for describing authorship
 hierarchy, making it unclear how an academic should be recognised for
 their contribution to a collaborative software work.
@@ -373,42 +375,41 @@
 publications, increasing the citation impact of the work.
 
 \subsection{Barrier to reuse: Platform incompatibilities}
-\label{sec:platforms}
+\label{sec:plugins}
 
-We observed in \ref{sec:researchsoft} that researchers in this field
-choose to use many platforms and programming languages to carry out
-their work.  Although the most common (MATLAB) is widely available in
+We observed in section \ref{sec:researchsoft} that researchers in this
+field choose to use many platforms and programming languages to carry
+out their work.  Although the most common (MATLAB) is used in many
 signal processing groups, it is a commercial platform that is not
 widely used in other fields related to audio and music such as
 computational musicology or music therapy.
 
-\subsubsection{Plugins}
-\label{sec:plugins}
-One method of giving code a better chance to survive may be to produce
-a ``plugin'' that can be used in applications that researchers in
-related fields might already be using.  This permits a working
-algorithm to be converted directly to a unit of code which can be used
-in real applications, without the need to develop a custom interface.
-A published interface supported by more than one host program ensures
-that the published code is not dependent on the continued distribution
-of a single application.  Code that uses the plugin format of a
-successful application is relatively likely to be understood by other
-developers.
+To promote software reuse outside of the immediate signal processing
+community, the C4DM has adopted a ``plugin'' approach.  Writing a
+plugin allows a working algorithm to be converted directly to a unit
+of code which can be used in real applications, without the need to
+develop a custom user interface.  Developing to a published
+specification supported by more than one host program increases the
+relevance of the code and therefore the likelihood of its being
+maintained.  Code that uses the plugin format of a successful
+application is relatively likely to be understood by other developers.
 
-At C4DM we have had some success with plugins in standard audio
-processing formats such as VST, as well as in writing externals for
-modular systems such as Max/MSP or SuperCollider.  For audio analysis
-methods, in 2006 we developed the Vamp plugin system \cite{vamp} and
-implemented it using \CC{} in our applications Sonic
-Visualiser~\cite{cannam2006} and the subsequent Sonic
-Annotator~\cite{cannam2010}.  This system has also been used by the
-Centre and others with some success for publishing working methods.
-In section~\ref{sec:casestudies} we discuss some examples.
+At C4DM we have had success with plugins in standard audio processing
+formats such as VST\footnote{\scriptsize\tt
+  http://en.wikipedia.org/wiki/Virtual\_Studio\_Technology} as well as
+in writing externals for modular systems such as Max/MSP or
+SuperCollider.  For audio analysis methods, in 2006 we developed the
+Vamp plugin system \cite{vamp} and implemented it using \CC{} in our
+visualisation software Sonic Visualiser~\cite{cannam2006}, a
+widely-used application that has seen over 200,000 downloads to date,
+and in the subsequent Sonic Annotator~\cite{cannam2010} batch feature
+extractor.  The Vamp system has subsequently been used by C4DM and
+others with some success for publishing working methods.
 
 \section{Case study}
 \label{sec:casestudy}
 
-\subsection{Chordino audio chord recogniser}
+\subsection{Chordino automatic chord transcription}
 \label{sec:chordino}
 
 Mauch describes in~\cite{mauch2010} a method for improving automatic
@@ -419,10 +420,10 @@
 through the submission of a MATLAB implementation of the method to the
 annual MIREX evaluation exchange~\cite{mirex}.
 
-Following this publication, the author worked with us to develop a C++
+Following this publication, the author worked with us to develop a \CC{}
 implementation of the method and turn it into a Vamp plugin for chord
 estimation, named Chordino.  This code and its revision history are
-available through our code site\footnote{\tt
+available through our code site\footnote{\scriptsize\tt
   http://code.soundsoftware.ac.uk/projects/nnls-chroma} and thereby
 linked with the associated publication.  Although the code has been
 updated since release, the plugin includes a mode in which it uses the
@@ -439,13 +440,13 @@
 straightforward to carry out.
 
 {\bf Tackle easy training targets.} In
-section~\ref{sec:lackofeducation} we observe that training considered
-very basic in the context of software engineering, such as an
-introduction to program structure across multiple source files and
-functions, may yield tangible rewards to researchers who are
-technically minded but lack software development experience.  To
-this end, we encourage researchers to make use of the video material
-from our Autumn School\footnote{\tt
+section~\ref{sec:lackofeducation} we observe that training which may
+be considered simplistic in the context of software engineering, such
+as an introduction to program structure across multiple source files
+and functions, may yield tangible rewards to researchers who are
+technically minded but lack software development experience and fear
+writing code.  We encourage researchers to make use of the video
+material from our Autumn School\footnote{\tt
   http://soundsoftware.ac.uk/autumnschool2010video} and the related
 Software Carpentry course material.\footnote{\tt
   http://software-carpentry.org/}
@@ -461,40 +462,43 @@
 application (section~\ref{sec:easyhg}) is designed to be an effective
 teaching tool in this respect.
 
-{\bf Produce plugins} and deliberately target end-user applications
+{\bf Turn code into plugins} and seek other ways in which your
+code can be used in conjunction with end-user applications that are
+already popular (section~\ref{sec:plugins}).
 
-[4. Don't feel bad]
+{\bf Encourage collaborative development.} Researchers are routinely
+encouraged to work together on conference papers, but collaborative
+software development appears to be the exception rather than the rule
+(section~\ref{sec:researchsoft}).  Working together increases the
+opportunities for learning and creates an environment of confidence
+about sharing and reusing code.
 
-[5. ???]
-
-\section{Future Work}
+\section{Conclusions and Future Work}
 \label{sec:future}
 
-[More study to find out how far these ``improvements'' actually help]
+We have identified some straightforward ways to make incremental
+improvements to software development practice for audio and music
+researchers, and described the developments we have made in support of
+them.
 
-[Visits to find code we can take under our wing]
+Further actions for the near future include providing more training
+material, particularly for EasyMercurial and our code site, and
+evaluating how researchers respond to training using these facilities.
 
-[Follow-up to Autumn School]
+We are also considering various options for following up the 2010
+Autumn School for researchers, perhaps with a more distributed model
+to take the school to a number of locations around the UK.
 
-[More training, videos, tutorials etc]
-
-[EasyHg evaluation]
-
-\subsubsection{Hands-on Help} % porting, etc
-
-Another approach to dealing with platform incompatibilities is to
-provide a service that can be used to respond to demand for research
-software and to maintain it accordingly.  That is, besides encouraging
-people to publish and if necessary maintain their own code, and
-teaching people how to update and fix the code they need to use, we
-can also locate code that researchers need and help them to obtain it
-in a working state.  Although the effort involved in updating old code
-is higher than that involved in improving it at the time it is
-written, this approach permits resources to be aimed directly at the
-code that current researchers actually want to use. We intend during
-late 2011 and early 2012 to visit a number of research groups,
-identify ``lost'' or troublesome code, and provide development
-expertise to make it available where possible. (TODO: move that last sentence to Future Work and refer to it here?)
+At the same time, we intend to begin another approach to dealing with
+platform incompatibilities, namely to provide a service that can be
+used to respond to demand for research software and to maintain it
+accordingly.  If we can locate code that researchers need, we may be
+able to help them to bring it to a working state.  Although updating
+old code takes effort, this approach should permit resources to be
+aimed directly at those methods that current researchers want to be
+able to use. We intend during the coming months to visit a number of
+research groups, identify ``lost'' or troublesome code, and provide
+development expertise to make it available again.
 
 %%\section{Appendix: SoundSoftware survey 2010}
 %%\label{sec:survey}