changeset 31:e19c519e7e3f

adding the basic LaTeX files for the paper
author christopherh <christopher.harte@eecs.qmul.ac.uk>
date Sun, 12 Apr 2015 22:47:34 +0100
parents d9ac6e0d1daf
children 82496b4e2f96
files SMC2015latex/IEEEtran.bst SMC2015latex/csong.bib SMC2015latex/smc2015.sty SMC2015latex/syncopation_toolkit.tex
diffstat 4 files changed, 4038 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SMC2015latex/IEEEtran.bst	Sun Apr 12 22:47:34 2015 +0100
@@ -0,0 +1,2417 @@
+%%
+%% IEEEtran.bst
+%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted)
+%% Version 1.12 (2007/01/11)
+%% 
+%% Copyright (c) 2003-2007 Michael Shell
+%% 
+%% Original starting code base and algorithms obtained from the output of
+%% Patrick W. Daly's makebst package as well as from prior versions of
+%% IEEE BibTeX styles:
+%% 
+%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst  (1985/1988)
+%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993)
+%% 
+%% Support sites:
+%% http://www.michaelshell.org/tex/ieeetran/
+%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
+%% and/or
+%% http://www.ieee.org/
+%% 
+%% For use with BibTeX version 0.99a or later
+%%
+%% This is a numerical citation style.
+%% 
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE! 
+%% User assumes all risk.
+%% In no event shall IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including  **
+%% ** renaming them and changing author support contact information. **
+%%
+%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib,
+%%                    IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst,
+%%                    IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf
+%%*************************************************************************
+%
+%
+% Changelog:
+%
+% 1.00 (2002/08/13) Initial release
+%
+% 1.10 (2002/09/27)
+%  1. Corrected minor bug for improperly formed warning message when a
+%     book was not given a title. Thanks to Ming Kin Lai for reporting this.
+%  2. Added support for CTLname_format_string and CTLname_latex_cmd fields
+%     in the BST control entry type.
+%
+% 1.11 (2003/04/02)
+%  1. Fixed bug with URLs containing underscores when using url.sty. Thanks
+%     to Ming Kin Lai for reporting this.
+%
+% 1.12 (2007/01/11)
+%  1. Fixed bug with unwanted comma before "et al." when an entry contained
+%     more than two author names. Thanks to Pallav Gupta for reporting this.
+%  2. Fixed bug with anomalous closing quote in tech reports that have a
+%     type, but without a number or address. Thanks to Mehrdad Mirreza for
+%     reporting this.
+%  3. Use braces in \providecommand in begin.bib to better support
+%     latex2html. TeX style length assignments OK with recent versions
+%     of latex2html - 1.71 (2002/2/1) or later is strongly recommended.
+%     Use of the language field still causes trouble with latex2html.
+%     Thanks to Federico Beffa for reporting this.
+%  4. Added IEEEtran.bst ID and version comment string to .bbl output.
+%  5. Provide a \BIBdecl hook that allows the user to execute commands
+%     just prior to the first entry.
+%  6. Use default urlstyle (is using url.sty) of "same" rather than rm to
+%     better work with a wider variety of bibliography styles.
+%  7. Changed month abbreviations from Sept., July and June to Sep., Jul.,
+%     and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann
+%     for reporting this.
+%  8. Control entry types should not be considered when calculating longest
+%     label width.
+%  9. Added alias www for electronic/online.
+% 10. Added CTLname_url_prefix control entry type.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% These are the defaults for the user adjustable controls. The values used
+% here can be overridden by the user via IEEEtranBSTCTL entry type.
+
+% NOTE: The recommended LaTeX command to invoke a control entry type is:
+% 
+%\makeatletter
+%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+%\def\@bstctlcite[#1]#2{\@bsphack
+%  \@for\@citeb:=#2\do{%
+%    \edef\@citeb{\expandafter\@firstofone\@citeb}%
+%    \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
+%  \@esphack}
+%\makeatother
+%
+% It is called at the start of the document, before the first \cite, like:
+% \bstctlcite{IEEEexample:BSTcontrol}
+%
+% IEEEtran.cls V1.6 and later does provide this command.
+
+
+
+% #0 turns off the display of the number for articles.
+% #1 enables
+FUNCTION {default.is.use.number.for.article} { #1 }
+
+
+% #0 turns off the display of the paper and type fields in @inproceedings.
+% #1 enables
+FUNCTION {default.is.use.paper} { #1 }
+
+
+% #0 turns off the forced use of "et al."
+% #1 enables
+FUNCTION {default.is.forced.et.al} { #0 }
+
+% The maximum number of names that can be present beyond which an "et al."
+% usage is forced. Be sure that num.names.shown.with.forced.et.al (below)
+% is not greater than this value!
+% Note: There are many instances of references in IEEE journals which have
+% a very large number of authors as well as instances in which "et al." is
+% used profusely.
+FUNCTION {default.max.num.names.before.forced.et.al} { #10 }
+
+% The number of names that will be shown with a forced "et al.".
+% Must be less than or equal to max.num.names.before.forced.et.al
+FUNCTION {default.num.names.shown.with.forced.et.al} { #1 }
+
+
+% #0 turns off the alternate interword spacing for entries with URLs.
+% #1 enables
+FUNCTION {default.is.use.alt.interword.spacing} { #1 }
+
+% If alternate interword spacing for entries with URLs is enabled, this is
+% the interword spacing stretch factor that will be used. For example, the
+% default "4" here means that the interword spacing in entries with URLs can
+% stretch to four times normal. Does not have to be an integer. Note that
+% the value specified here can be overridden by the user in their LaTeX
+% code via a command such as: 
+% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to
+% that via the IEEEtranBSTCTL entry type.
+FUNCTION {default.ALTinterwordstretchfactor} { "4" }
+
+
+% #0 turns off the "dashification" of repeated (i.e., identical to those
+% of the previous entry) names. IEEE normally does this.
+% #1 enables
+FUNCTION {default.is.dash.repeated.names} { #1 }
+
+
+% The default name format control string.
+FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" }
+
+
+% The default LaTeX font command for the names.
+FUNCTION {default.name.latex.cmd}{ "" }
+
+
+% The default URL prefix.
+FUNCTION {default.name.url.prefix}{ "[Online]. Available:" }
+
+
+% Other controls that cannot be accessed via IEEEtranBSTCTL entry type.
+
+% #0 turns off the terminal startup banner/completed message so as to
+% operate more quietly.
+% #1 enables
+FUNCTION {is.print.banners.to.terminal} { #1 }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FILE VERSION AND BANNER %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION{bst.file.version} { "1.12" }
+FUNCTION{bst.file.date} { "2007/01/11" }
+FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" }
+
+FUNCTION {banner.message}
+{ is.print.banners.to.terminal
+     { "-- IEEEtran.bst version" " " * bst.file.version *
+       " (" * bst.file.date * ") " * "by Michael Shell." *
+       top$
+       "-- " bst.file.website *
+       top$
+       "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." *
+       top$
+     }
+     { skip$ }
+   if$
+}
+
+FUNCTION {completed.message}
+{ is.print.banners.to.terminal
+     { ""
+       top$
+       "Done."
+       top$
+     }
+     { skip$ }
+   if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING CONSTANTS %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {bbl.and}{ "and" }
+FUNCTION {bbl.etal}{ "et~al." }
+FUNCTION {bbl.editors}{ "eds." }
+FUNCTION {bbl.editor}{ "ed." }
+FUNCTION {bbl.edition}{ "ed." }
+FUNCTION {bbl.volume}{ "vol." }
+FUNCTION {bbl.of}{ "of" }
+FUNCTION {bbl.number}{ "no." }
+FUNCTION {bbl.in}{ "in" }
+FUNCTION {bbl.pages}{ "pp." }
+FUNCTION {bbl.page}{ "p." }
+FUNCTION {bbl.chapter}{ "ch." }
+FUNCTION {bbl.paper}{ "paper" }
+FUNCTION {bbl.part}{ "pt." }
+FUNCTION {bbl.patent}{ "Patent" }
+FUNCTION {bbl.patentUS}{ "U.S." }
+FUNCTION {bbl.revision}{ "Rev." }
+FUNCTION {bbl.series}{ "ser." }
+FUNCTION {bbl.standard}{ "Std." }
+FUNCTION {bbl.techrep}{ "Tech. Rep." }
+FUNCTION {bbl.mthesis}{ "Master's thesis" }
+FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" }
+FUNCTION {bbl.st}{ "st" }
+FUNCTION {bbl.nd}{ "nd" }
+FUNCTION {bbl.rd}{ "rd" }
+FUNCTION {bbl.th}{ "th" }
+
+
+% This is the LaTeX spacer that is used when a larger than normal space
+% is called for (such as just before the address:publisher).
+FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " }
+
+% The LaTeX code for dashes that are used to represent repeated names.
+% Note: Some older IEEE journals used something like
+% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along
+% the baseline. However, IEEE now uses a thinner, above baseline,
+% six dash long sequence.
+FUNCTION {repeated.name.dashes} { "------" }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% PREDEFINED STRING MACROS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+MACRO {jan} {"Jan."}
+MACRO {feb} {"Feb."}
+MACRO {mar} {"Mar."}
+MACRO {apr} {"Apr."}
+MACRO {may} {"May"}
+MACRO {jun} {"Jun."}
+MACRO {jul} {"Jul."}
+MACRO {aug} {"Aug."}
+MACRO {sep} {"Sep."}
+MACRO {oct} {"Oct."}
+MACRO {nov} {"Nov."}
+MACRO {dec} {"Dec."}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% ENTRY FIELDS %%
+%%%%%%%%%%%%%%%%%%
+
+ENTRY
+  { address
+    assignee
+    author
+    booktitle
+    chapter
+    day
+    dayfiled
+    edition
+    editor
+    howpublished
+    institution
+    intype
+    journal
+    key
+    language
+    month
+    monthfiled
+    nationality
+    note
+    number
+    organization
+    pages
+    paper
+    publisher
+    school
+    series
+    revision
+    title
+    type
+    url
+    volume
+    year
+    yearfiled
+    CTLuse_article_number
+    CTLuse_paper
+    CTLuse_forced_etal
+    CTLmax_names_forced_etal
+    CTLnames_show_etal
+    CTLuse_alt_spacing
+    CTLalt_stretch_factor
+    CTLdash_repeated_names
+    CTLname_format_string
+    CTLname_latex_cmd
+    CTLname_url_prefix
+  }
+  {}
+  { label }
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% INTEGER VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+INTEGERS { prev.status.punct this.status.punct punct.std
+           punct.no punct.comma punct.period 
+           prev.status.space this.status.space space.std
+           space.no space.normal space.large
+           prev.status.quote this.status.quote quote.std
+           quote.no quote.close
+           prev.status.nline this.status.nline nline.std
+           nline.no nline.newblock 
+           status.cap cap.std
+           cap.no cap.yes}
+
+INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames }
+
+INTEGERS { is.use.number.for.article
+           is.use.paper
+           is.forced.et.al
+           max.num.names.before.forced.et.al
+           num.names.shown.with.forced.et.al
+           is.use.alt.interword.spacing
+           is.dash.repeated.names}
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%% STRING VARIABLES %%
+%%%%%%%%%%%%%%%%%%%%%%
+
+STRINGS { bibinfo
+          longest.label
+          oldname
+          s
+          t
+          ALTinterwordstretchfactor
+          name.format.string
+          name.latex.cmd
+          name.url.prefix}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOW LEVEL FUNCTIONS %%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {initialize.controls}
+{ default.is.use.number.for.article 'is.use.number.for.article :=
+  default.is.use.paper 'is.use.paper :=
+  default.is.forced.et.al 'is.forced.et.al :=
+  default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al :=
+  default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al :=
+  default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing :=
+  default.is.dash.repeated.names 'is.dash.repeated.names :=
+  default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
+  default.name.format.string 'name.format.string :=
+  default.name.latex.cmd 'name.latex.cmd :=
+  default.name.url.prefix 'name.url.prefix :=
+}
+
+
+% This IEEEtran.bst features a very powerful and flexible mechanism for
+% controlling the capitalization, punctuation, spacing, quotation, and
+% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need
+% or use the newline/newblock feature, but it has been implemented for
+% possible future use.) The output states of IEEEtran.bst consist of
+% multiple independent attributes and, as such, can be thought of as being
+% vectors, rather than the simple scalar values ("before.all", 
+% "mid.sentence", etc.) used in most other .bst files.
+% 
+% The more flexible and complex design used here was motivated in part by
+% IEEE's rather unusual bibliography style. For example, IEEE ends the
+% previous field item with a period and large space prior to the publisher
+% address; the @electronic entry types use periods as inter-item punctuation
+% rather than the commas used by the other entry types; and URLs are never
+% followed by periods even though they are the last item in the entry.
+% Although it is possible to accommodate these features with the conventional
+% output state system, the seemingly endless exceptions make for convoluted,
+% unreliable and difficult to maintain code.
+%
+% IEEEtran.bst's output state system can be easily understood via a simple
+% illustration of two most recently formatted entry fields (on the stack):
+%
+%               CURRENT_ITEM
+%               "PREVIOUS_ITEM
+%
+% which, in this example, is to eventually appear in the bibliography as:
+% 
+%               "PREVIOUS_ITEM," CURRENT_ITEM
+%
+% It is the job of the output routine to take the previous item off of the
+% stack (while leaving the current item at the top of the stack), apply its
+% trailing punctuation (including closing quote marks) and spacing, and then
+% to write the result to BibTeX's output buffer:
+% 
+%               "PREVIOUS_ITEM," 
+% 
+% Punctuation (and spacing) between items is often determined by both of the
+% items rather than just the first one. The presence of quotation marks
+% further complicates the situation because, in standard English, trailing
+% punctuation marks are supposed to be contained within the quotes.
+% 
+% IEEEtran.bst maintains two output state (aka "status") vectors which
+% correspond to the previous and current (aka "this") items. Each vector
+% consists of several independent attributes which track punctuation,
+% spacing, quotation, and newlines. Capitalization status is handled by a
+% separate scalar because the format routines, not the output routine,
+% handle capitalization and, therefore, there is no need to maintain the
+% capitalization attribute for both the "previous" and "this" items.
+% 
+% When a format routine adds a new item, it copies the current output status
+% vector to the previous output status vector and (usually) resets the
+% current (this) output status vector to a "standard status" vector. Using a
+% "standard status" vector in this way allows us to redefine what we mean by
+% "standard status" at the start of each entry handler and reuse the same
+% format routines under the various inter-item separation schemes. For
+% example, the standard status vector for the @book entry type may use
+% commas for item separators, while the @electronic type may use periods,
+% yet both entry handlers exploit many of the exact same format routines.
+% 
+% Because format routines have write access to the output status vector of
+% the previous item, they can override the punctuation choices of the
+% previous format routine! Therefore, it becomes trivial to implement rules
+% such as "Always use a period and a large space before the publisher." By
+% pushing the generation of the closing quote mark to the output routine, we
+% avoid all the problems caused by having to close a quote before having all
+% the information required to determine what the punctuation should be.
+%
+% The IEEEtran.bst output state system can easily be expanded if needed.
+% For instance, it is easy to add a "space.tie" attribute value if the
+% bibliography rules mandate that two items have to be joined with an
+% unbreakable space. 
+
+FUNCTION {initialize.status.constants}
+{ #0 'punct.no :=
+  #1 'punct.comma :=
+  #2 'punct.period :=
+  #0 'space.no := 
+  #1 'space.normal :=
+  #2 'space.large :=
+  #0 'quote.no :=
+  #1 'quote.close :=
+  #0 'cap.no :=
+  #1 'cap.yes :=
+  #0 'nline.no :=
+  #1 'nline.newblock :=
+}
+
+FUNCTION {std.status.using.comma}
+{ punct.comma 'punct.std :=
+  space.normal 'space.std :=
+  quote.no 'quote.std :=
+  nline.no 'nline.std :=
+  cap.no 'cap.std :=
+}
+
+FUNCTION {std.status.using.period}
+{ punct.period 'punct.std :=
+  space.normal 'space.std :=
+  quote.no 'quote.std :=
+  nline.no 'nline.std :=
+  cap.yes 'cap.std :=
+}
+
+FUNCTION {initialize.prev.this.status}
+{ punct.no 'prev.status.punct :=
+  space.no 'prev.status.space :=
+  quote.no 'prev.status.quote :=
+  nline.no 'prev.status.nline :=
+  punct.no 'this.status.punct :=
+  space.no 'this.status.space :=
+  quote.no 'this.status.quote :=
+  nline.no 'this.status.nline :=
+  cap.yes 'status.cap :=
+}
+
+FUNCTION {this.status.std}
+{ punct.std 'this.status.punct :=
+  space.std 'this.status.space :=
+  quote.std 'this.status.quote :=
+  nline.std 'this.status.nline :=
+}
+
+FUNCTION {cap.status.std}{ cap.std 'status.cap := }
+
+FUNCTION {this.to.prev.status}
+{ this.status.punct 'prev.status.punct :=
+  this.status.space 'prev.status.space :=
+  this.status.quote 'prev.status.quote :=
+  this.status.nline 'prev.status.nline :=
+}
+
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   { skip$ }
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    { skip$ }
+  if$
+}
+
+
+% convert the strings "yes" or "no" to #1 or #0 respectively
+FUNCTION {yes.no.to.int}
+{ "l" change.case$ duplicate$
+    "yes" =
+    { pop$  #1 }
+    { duplicate$ "no" =
+        { pop$ #0 }
+        { "unknown boolean " quote$ * swap$ * quote$ *
+          " in " * cite$ * warning$
+          #0
+        }
+      if$
+    }
+  if$
+}
+
+
+% pushes true if the single char string on the stack is in the
+% range of "0" to "9"
+FUNCTION {is.num}
+{ chr.to.int$
+  duplicate$ "0" chr.to.int$ < not
+  swap$ "9" chr.to.int$ > not and
+}
+
+% multiplies the integer on the stack by a factor of 10
+FUNCTION {bump.int.mag}
+{ #0 'multiresult :=
+    { duplicate$ #0 > }
+    { #1 -
+      multiresult #10 +
+      'multiresult :=
+    }
+  while$
+pop$
+multiresult
+}
+
+% converts a single character string on the stack to an integer
+FUNCTION {char.to.integer}
+{ duplicate$ 
+  is.num
+    { chr.to.int$ "0" chr.to.int$ - }
+    {"noninteger character " quote$ * swap$ * quote$ *
+          " in integer field of " * cite$ * warning$
+    #0
+    }
+  if$
+}
+
+% converts a string on the stack to an integer
+FUNCTION {string.to.integer}
+{ duplicate$ text.length$ 'namesleft :=
+  #1 'nameptr :=
+  #0 'numnames :=
+    { nameptr namesleft > not }
+    { duplicate$ nameptr #1 substring$
+      char.to.integer numnames bump.int.mag +
+      'numnames :=
+      nameptr #1 +
+      'nameptr :=
+    }
+  while$
+pop$
+numnames
+}
+
+
+
+
+% The output routines write out the *next* to the top (previous) item on the
+% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains
+% the output status for the top two items on the stack, these output
+% routines have to consider the previous output status (which corresponds to
+% the item that is being output). Full independent control of punctuation,
+% closing quote marks, spacing, and newblock is provided.
+% 
+% "output.nonnull" does not check for the presence of a previous empty
+% item.
+% 
+% "output" does check for the presence of a previous empty item and will
+% remove an empty item rather than outputing it.
+% 
+% "output.warn" is like "output", but will issue a warning if it detects
+% an empty item.
+
+FUNCTION {output.nonnull}
+{ swap$
+  prev.status.punct punct.comma =
+     { "," * }
+     { skip$ }
+   if$
+  prev.status.punct punct.period =
+     { add.period$ }
+     { skip$ }
+   if$ 
+  prev.status.quote quote.close =
+     { "''" * }
+     { skip$ }
+   if$
+  prev.status.space space.normal =
+     { " " * }
+     { skip$ }
+   if$
+  prev.status.space space.large =
+     { large.space * }
+     { skip$ }
+   if$
+  write$
+  prev.status.nline nline.newblock =
+     { newline$ "\newblock " write$ }
+     { skip$ }
+   if$
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.warn}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull
+  if$
+}
+
+% "fin.entry" is the output routine that handles the last item of the entry
+% (which will be on the top of the stack when "fin.entry" is called).
+
+FUNCTION {fin.entry}
+{ this.status.punct punct.no =
+     { skip$ }
+     { add.period$ }
+   if$
+   this.status.quote quote.close =
+     { "''" * }
+     { skip$ }
+   if$
+write$
+newline$
+}
+
+
+FUNCTION {is.last.char.not.punct}
+{ duplicate$
+   "}" * add.period$
+   #-1 #1 substring$ "." =
+}
+
+FUNCTION {is.multiple.pages}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "\emph{" swap$ * "}" * }
+  if$
+}
+
+FUNCTION {do.name.latex.cmd}
+{ name.latex.cmd
+  empty$
+    { skip$ }
+    { name.latex.cmd "{" * swap$ * "}" * }
+  if$
+}
+
+% IEEEtran.bst uses its own \BIBforeignlanguage command which directly
+% invokes the TeX hyphenation patterns without the need of the Babel
+% package. Babel does a lot more than switch hyphenation patterns and
+% its loading can cause unintended effects in many class files (such as
+% IEEEtran.cls).
+FUNCTION {select.language}
+{ duplicate$ empty$ 'pop$
+    { language empty$ 'skip$
+        { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$
+}
+
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {space.word}{ " " swap$ * " " * }
+
+
+% Field Conditioners, Converters, Checkers and External Interfaces
+
+FUNCTION {empty.field.to.null.string}
+{ duplicate$ empty$
+    { pop$ "" }
+    { skip$ }
+  if$
+}
+
+FUNCTION {either.or.check}
+{ empty$
+    { pop$ }
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {empty.entry.warn}
+{ author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$ url empty$
+  and and and and and and
+    { "all relevant fields are empty in " cite$ * warning$ }
+    'skip$
+  if$
+}
+
+
+% The bibinfo system provides a way for the electronic parsing/acquisition
+% of a bibliography's contents as is done by ReVTeX. For example, a field
+% could be entered into the bibliography as:
+% \bibinfo{volume}{2}
+% Only the "2" would show up in the document, but the LaTeX \bibinfo command
+% could do additional things with the information. IEEEtran.bst does provide
+% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is
+% currently not used as the bogus bibinfo functions defined here output the
+% entry values directly without the \bibinfo wrapper. The bibinfo functions
+% themselves (and the calls to them) are retained for possible future use.
+% 
+% bibinfo.check avoids acting on missing fields while bibinfo.warn will
+% issue a warning message if a missing field is detected. Prior to calling
+% the bibinfo functions, the user should push the field value and then its
+% name string, in that order.
+
+FUNCTION {bibinfo.check}
+{ swap$ duplicate$ missing$
+    { pop$ pop$ "" }
+    { duplicate$ empty$
+        { swap$ pop$ }
+        { swap$ pop$ }
+      if$
+    }
+  if$
+}
+
+FUNCTION {bibinfo.warn}
+{ swap$ duplicate$ missing$
+    { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" }
+    { duplicate$ empty$
+        { swap$ "empty " swap$ * " in " * cite$ * warning$ }
+        { swap$ pop$ }
+      if$
+    }
+  if$
+}
+
+
+% IEEE separates large numbers with more than 4 digits into groups of
+% three. IEEE uses a small space to separate these number groups. 
+% Typical applications include patent and page numbers.
+
+% number of consecutive digits required to trigger the group separation.
+FUNCTION {large.number.trigger}{ #5 }
+
+% For numbers longer than the trigger, this is the blocksize of the groups.
+% The blocksize must be less than the trigger threshold, and 2 * blocksize
+% must be greater than the trigger threshold (can't do more than one
+% separation on the initial trigger).
+FUNCTION {large.number.blocksize}{ #3 }
+
+% What is actually inserted between the number groups.
+FUNCTION {large.number.separator}{ "\," }
+
+% So as to save on integer variables by reusing existing ones, numnames
+% holds the current number of consecutive digits read and nameptr holds
+% the number that will trigger an inserted space.
+FUNCTION {large.number.separate}
+{ 't :=
+  ""
+  #0 'numnames :=
+  large.number.trigger 'nameptr :=
+  { t empty$ not }
+  { t #-1 #1 substring$ is.num
+      { numnames #1 + 'numnames := }
+      { #0 'numnames := 
+        large.number.trigger 'nameptr :=
+      }
+    if$
+    t #-1 #1 substring$ swap$ *
+    t #-2 global.max$ substring$ 't :=
+    numnames nameptr =
+      { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$
+        nameptr large.number.blocksize - #1 + global.max$ substring$
+        large.number.separator swap$ * *
+        nameptr large.number.blocksize - 'numnames :=
+        large.number.blocksize #1 + 'nameptr :=
+      }
+      { skip$ }
+    if$
+  }
+  while$
+}
+
+% Converts all single dashes "-" to double dashes "--".
+FUNCTION {n.dashify}
+{ large.number.separate
+  't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+
+% This function detects entries with names that are identical to that of
+% the previous entry and replaces the repeated names with dashes (if the
+% "is.dash.repeated.names" user control is nonzero).
+FUNCTION {name.or.dash}
+{ 's :=
+   oldname empty$
+     { s 'oldname := s }
+     { s oldname =
+         { is.dash.repeated.names
+              { repeated.name.dashes }
+              { s 'oldname := s }
+            if$
+         }
+         { s 'oldname := s }
+       if$
+     }
+   if$
+}
+
+% Converts the number string on the top of the stack to
+% "numerical ordinal form" (e.g., "7" to "7th"). There is
+% no artificial limit to the upper bound of the numbers as the
+% least significant digit always determines the ordinal form.
+FUNCTION {num.to.ordinal}
+{ duplicate$ #-1 #1 substring$ "1" =
+     { bbl.st * }
+     { duplicate$ #-1 #1 substring$ "2" =
+         { bbl.nd * }
+         { duplicate$ #-1 #1 substring$ "3" =
+             { bbl.rd * }
+             { bbl.th * }
+           if$
+         }
+       if$
+     }
+   if$
+}
+
+% If the string on the top of the stack begins with a number,
+% (e.g., 11th) then replace the string with the leading number
+% it contains. Otherwise retain the string as-is. s holds the
+% extracted number, t holds the part of the string that remains
+% to be scanned.
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+  "" 's :=
+  { t empty$ not }
+  { t #1 #1 substring$
+    t #2 global.max$ substring$ 't :=
+    duplicate$ is.num
+      { s swap$ * 's := }
+      { pop$ "" 't := }
+    if$
+  }
+  while$
+  s empty$
+    'skip$
+    { pop$ s }
+  if$
+}
+
+% Converts the word number string on the top of the stack to
+% Arabic string form. Will be successful up to "tenth".
+FUNCTION {word.to.num}
+{ duplicate$ "l" change.case$ 's :=
+  s "first" =
+    { pop$ "1" }
+    { skip$ }
+  if$
+  s "second" =
+    { pop$ "2" }
+    { skip$ }
+  if$
+  s "third" =
+    { pop$ "3" }
+    { skip$ }
+  if$
+  s "fourth" =
+    { pop$ "4" }
+    { skip$ }
+  if$
+  s "fifth" =
+    { pop$ "5" }
+    { skip$ }
+  if$
+  s "sixth" =
+    { pop$ "6" }
+    { skip$ }
+  if$
+  s "seventh" =
+    { pop$ "7" }
+    { skip$ }
+  if$
+  s "eighth" =
+    { pop$ "8" }
+    { skip$ }
+  if$
+  s "ninth" =
+    { pop$ "9" }
+    { skip$ }
+  if$
+  s "tenth" =
+    { pop$ "10" }
+    { skip$ }
+  if$
+}
+
+
+% Converts the string on the top of the stack to numerical
+% ordinal (e.g., "11th") form.
+FUNCTION {convert.edition}
+{ duplicate$ empty$ 'skip$
+    { duplicate$ #1 #1 substring$ is.num
+        { extract.num
+          num.to.ordinal
+        }
+        { word.to.num
+          duplicate$ #1 #1 substring$ is.num
+            { num.to.ordinal }
+            { "edition ordinal word " quote$ * edition * quote$ *
+              " may be too high (or improper) for conversion" * " in " * cite$ * warning$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LATEX BIBLIOGRAPHY CODE %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {start.entry}
+{ newline$
+  "\bibitem{" write$
+  cite$ write$
+  "}" write$
+  newline$
+  ""
+  initialize.prev.this.status
+}
+
+% Here we write out all the LaTeX code that we will need. The most involved
+% code sequences are those that control the alternate interword spacing and
+% foreign language hyphenation patterns. The heavy use of \providecommand
+% gives users a way to override the defaults. Special thanks to Javier Bezos,
+% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all
+% the other gurus on comp.text.tex for their help and advice on the topic of
+% \selectlanguage, Babel and BibTeX.
+FUNCTION {begin.bib}
+{ "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" *
+  write$ newline$
+  preamble$ empty$ 'skip$
+    { preamble$ write$ newline$ }
+  if$
+  "\begin{thebibliography}{"  longest.label  * "}" *
+  write$ newline$
+  "\providecommand{\url}[1]{#1}"
+  write$ newline$
+  "\csname url@samestyle\endcsname"
+  write$ newline$
+  "\providecommand{\newblock}{\relax}"
+  write$ newline$
+  "\providecommand{\bibinfo}[2]{#2}"
+  write$ newline$
+  "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}"
+  write$ newline$
+  "\providecommand{\BIBentryALTinterwordstretchfactor}{"
+  ALTinterwordstretchfactor * "}" *
+  write$ newline$
+  "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus "
+  write$ newline$
+  "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}"
+  write$ newline$
+  "\providecommand{\BIBforeignlanguage}[2]{{%"
+  write$ newline$
+  "\expandafter\ifx\csname l@#1\endcsname\relax"
+  write$ newline$
+  "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%"
+  write$ newline$
+  "\typeout{** loaded for the language `#1'. Using the pattern for}%"
+  write$ newline$
+  "\typeout{** the default language instead.}%"
+  write$ newline$
+  "\else"
+  write$ newline$
+  "\language=\csname l@#1\endcsname"
+  write$ newline$
+  "\fi"
+  write$ newline$
+  "#2}}"
+  write$ newline$
+  "\providecommand{\BIBdecl}{\relax}"
+  write$ newline$
+  "\BIBdecl"
+  write$ newline$
+}
+
+FUNCTION {end.bib}
+{ newline$ "\end{thebibliography}" write$ newline$ }
+
+FUNCTION {if.url.alt.interword.spacing}
+{ is.use.alt.interword.spacing 
+     {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$}
+     { skip$ }
+   if$
+}
+
+FUNCTION {if.url.std.interword.spacing}
+{ is.use.alt.interword.spacing 
+     {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$}
+     { skip$ }
+   if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% LONGEST LABEL PASS %%
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+  #1 'number.label :=
+  #0 'longest.label.width :=
+}
+
+FUNCTION {longest.label.pass}
+{ type$ "ieeetranbstctl" =
+    { skip$ }
+    { number.label int.to.str$ 'label :=
+      number.label #1 + 'number.label :=
+      label width$ longest.label.width >
+        { label 'longest.label :=
+          label width$ 'longest.label.width :=
+        }
+        { skip$ }
+      if$
+    }
+  if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%% FORMAT HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%%
+
+%% Lower Level Formats (used by higher level formats)
+
+FUNCTION {format.address.org.or.pub.date}
+{ 't :=
+  ""
+  year empty$
+    { "empty year in " cite$ * warning$ }
+    { skip$ }
+  if$
+  address empty$ t empty$ and
+  year empty$ and month empty$ and
+    { skip$ }
+    { this.to.prev.status
+      this.status.std
+      cap.status.std
+      address "address" bibinfo.check *
+      t empty$
+        { skip$ }
+        { punct.period 'prev.status.punct :=
+          space.large 'prev.status.space :=
+          address empty$
+            { skip$ }
+            { ": " * }
+          if$
+          t *
+        }
+      if$
+      year empty$ month empty$ and
+        { skip$ }
+        { t empty$ address empty$ and
+            { skip$ }
+            { ", " * }
+          if$
+          month empty$
+            { year empty$
+                { skip$ }
+                { year "year" bibinfo.check * }
+              if$
+            }
+            { month "month" bibinfo.check *
+              year empty$
+                 { skip$ }
+                 { " " * year "year" bibinfo.check * }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+  duplicate$ empty$ 'skip$ {
+  this.to.prev.status
+  this.status.std
+  's :=
+  "" 't :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr
+      name.format.string
+      format.name$
+      bibinfo bibinfo.check
+      't :=
+      nameptr #1 >
+        { nameptr num.names.shown.with.forced.et.al #1 + =
+          numnames max.num.names.before.forced.et.al >
+          is.forced.et.al and and
+            { "others" 't :=
+              #1 'namesleft :=
+            }
+            { skip$ }
+          if$
+          namesleft #1 >
+            { ", " * t do.name.latex.cmd * }
+            { s nameptr "{ll}" format.name$ duplicate$ "others" =
+                { 't := }
+                { pop$ }
+              if$
+              t "others" =
+                { " " * bbl.etal emphasize * }
+                { numnames #2 >
+                    { "," * }
+                    { skip$ }
+                  if$
+                  bbl.and
+                  space.word * t do.name.latex.cmd *
+                }
+              if$
+            }
+          if$
+        }
+        { t do.name.latex.cmd }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+  cap.status.std
+  } if$
+}
+
+
+
+
+%% Higher Level Formats
+
+%% addresses/locations
+
+FUNCTION {format.address}
+{ address duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      cap.status.std
+    }
+  if$
+}
+
+
+
+%% author/editor names
+
+FUNCTION {format.authors}{ author "author" format.names }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+    { ", " *
+      get.bbl.editor
+      capitalize
+      *
+    }
+  if$
+}
+
+
+
+%% date
+
+FUNCTION {format.date}
+{
+  month "month" bibinfo.check duplicate$ empty$
+  year  "year" bibinfo.check duplicate$ empty$
+    { swap$ 'skip$
+        { this.to.prev.status
+          this.status.std
+          cap.status.std
+         "there's a month but no year in " cite$ * warning$ }
+      if$
+      *
+    }
+    { this.to.prev.status
+      this.status.std
+      cap.status.std
+      swap$ 'skip$
+        {
+          swap$
+          " " * swap$
+        }
+      if$
+      *
+    }
+  if$
+}
+
+FUNCTION {format.date.electronic}
+{ month "month" bibinfo.check duplicate$ empty$
+  year  "year" bibinfo.check duplicate$ empty$
+    { swap$ 
+        { pop$ }
+        { "there's a month but no year in " cite$ * warning$
+        pop$ ")" * "(" swap$ *
+        this.to.prev.status
+        punct.no 'this.status.punct :=
+        space.normal 'this.status.space :=
+        quote.no 'this.status.quote :=
+        cap.yes  'status.cap :=
+        }
+      if$
+    }
+    { swap$ 
+        { swap$ pop$ ")" * "(" swap$ * }
+        { "(" swap$ * ", " * swap$ * ")" * }
+      if$
+    this.to.prev.status
+    punct.no 'this.status.punct :=
+    space.normal 'this.status.space :=
+    quote.no 'this.status.quote :=
+    cap.yes  'status.cap :=
+    }
+  if$
+}
+
+
+
+%% edition/title
+
+% Note: IEEE considers the edition to be closely associated with
+% the title of a book. So, in IEEEtran.bst the edition is normally handled 
+% within the formatting of the title. The format.edition function is 
+% retained here for possible future use.
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      convert.edition
+      status.cap
+        { "t" }
+        { "l" }
+      if$ change.case$
+      "edition" bibinfo.check
+      "~" * bbl.edition *
+      cap.status.std
+    }
+  if$
+}
+
+% This is used to format the booktitle of a conference proceedings.
+% Here we use the "intype" field to provide the user a way to 
+% override the word "in" (e.g., with things like "presented at")
+% Use of intype stops the emphasis of the booktitle to indicate that
+% we no longer mean the written conference proceedings, but the
+% conference itself.
+FUNCTION {format.in.booktitle}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      select.language
+      intype missing$
+        { emphasize
+          bbl.in " " *
+        }
+        { intype " " * }
+      if$
+      swap$ *
+      cap.status.std
+    }
+  if$
+}
+
+% This is used to format the booktitle of collection.
+% Here the "intype" field is not supported, but "edition" is.
+FUNCTION {format.in.booktitle.edition}
+{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      select.language
+      emphasize
+      edition empty$ 'skip$
+        { ", " *
+          edition
+          convert.edition
+          "l" change.case$
+          * "~" * bbl.edition *
+        }
+      if$
+      bbl.in " " * swap$ *
+      cap.status.std
+    }
+  if$
+}
+
+FUNCTION {format.article.title}
+{ title duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      "t" change.case$
+    }
+  if$
+  "title" bibinfo.check
+  duplicate$ empty$ 'skip$
+    { quote.close 'this.status.quote :=
+      is.last.char.not.punct
+        { punct.std 'this.status.punct := }
+        { punct.no 'this.status.punct := }
+      if$
+      select.language
+      "``" swap$ *
+      cap.status.std
+    }
+  if$
+}
+
+FUNCTION {format.article.title.electronic}
+{ title duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      cap.status.std
+      "t" change.case$ 
+    }
+  if$
+  "title" bibinfo.check
+  duplicate$ empty$ 
+    { skip$ } 
+    { select.language }
+  if$
+}
+
+FUNCTION {format.book.title.edition}
+{ title "title" bibinfo.check
+  duplicate$ empty$
+    { "empty title in " cite$ * warning$ }
+    { this.to.prev.status
+      this.status.std
+      select.language
+      emphasize
+      edition empty$ 'skip$
+        { ", " *
+          edition
+          convert.edition
+          status.cap
+            { "t" }
+            { "l" }
+          if$
+          change.case$
+          * "~" * bbl.edition *
+        }
+      if$
+      cap.status.std
+    }
+  if$
+}
+
+FUNCTION {format.book.title}
+{ title "title" bibinfo.check
+  duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      cap.status.std
+      select.language
+      emphasize
+    }
+  if$
+}
+
+
+
+%% journal
+
+FUNCTION {format.journal}
+{ journal duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      cap.status.std
+      select.language
+      emphasize
+    }
+  if$
+}
+
+
+
+%% how published
+
+FUNCTION {format.howpublished}
+{ howpublished duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      cap.status.std
+    }
+  if$
+}
+
+
+
+%% institutions/organization/publishers/school
+
+FUNCTION {format.institution}
+{ institution duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      cap.status.std
+    }
+  if$
+}
+
+FUNCTION {format.organization}
+{ organization duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      cap.status.std
+    }
+  if$
+}
+
+FUNCTION {format.address.publisher.date}
+{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date }
+
+FUNCTION {format.address.publisher.date.nowarn}
+{ publisher "publisher" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.address.organization.date}
+{ organization "organization" bibinfo.check format.address.org.or.pub.date }
+
+FUNCTION {format.school}
+{ school duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      cap.status.std
+    }
+  if$
+}
+
+
+
+%% volume/number/series/chapter/pages
+
+FUNCTION {format.volume}
+{ volume empty.field.to.null.string
+  duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      bbl.volume 
+      status.cap
+        { capitalize }
+        { skip$ }
+      if$
+      swap$ tie.or.space.prefix
+      "volume" bibinfo.check
+      * *
+      cap.status.std
+    }
+  if$
+}
+
+FUNCTION {format.number}
+{ number empty.field.to.null.string
+  duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      status.cap
+         { bbl.number capitalize }
+         { bbl.number }
+       if$
+      swap$ tie.or.space.prefix
+      "number" bibinfo.check
+      * *
+      cap.status.std
+    }
+  if$
+}
+
+FUNCTION {format.number.if.use.for.article}
+{ is.use.number.for.article 
+     { format.number }
+     { "" }
+   if$
+}
+
+% IEEE does not seem to tie the series so closely with the volume
+% and number as is done in other bibliography styles. Instead the
+% series is treated somewhat like an extension of the title.
+FUNCTION {format.series}
+{ series empty$ 
+   { "" }
+   { this.to.prev.status
+     this.status.std
+     bbl.series " " *
+     series "series" bibinfo.check *
+     cap.status.std
+   }
+ if$
+}
+
+
+FUNCTION {format.chapter}
+{ chapter empty$
+    { "" }
+    { this.to.prev.status
+      this.status.std
+      type empty$
+        { bbl.chapter }
+        { type "l" change.case$
+          "type" bibinfo.check
+        }
+      if$
+      chapter tie.or.space.prefix
+      "chapter" bibinfo.check
+      * *
+      cap.status.std
+    }
+  if$
+}
+
+
+% The intended use of format.paper is for paper numbers of inproceedings.
+% The paper type can be overridden via the type field.
+% We allow the type to be displayed even if the paper number is absent
+% for things like "postdeadline paper"
+FUNCTION {format.paper}
+{ is.use.paper
+     { paper empty$
+        { type empty$
+            { "" }
+            { this.to.prev.status
+              this.status.std
+              type "type" bibinfo.check
+              cap.status.std
+            }
+          if$
+        }
+        { this.to.prev.status
+          this.status.std
+          type empty$
+            { bbl.paper }
+            { type "type" bibinfo.check }
+          if$
+          " " * paper
+          "paper" bibinfo.check
+          *
+          cap.status.std
+        }
+      if$
+     }
+     { "" } 
+   if$
+}
+
+
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+    { this.to.prev.status
+      this.status.std
+      duplicate$ is.multiple.pages
+        {
+          bbl.pages swap$
+          n.dashify
+        }
+        {
+          bbl.page swap$
+        }
+      if$
+      tie.or.space.prefix
+      "pages" bibinfo.check
+      * *
+      cap.status.std
+    }
+  if$
+}
+
+
+
+%% technical report number
+
+FUNCTION {format.tech.report.number}
+{ number "number" bibinfo.check
+  this.to.prev.status
+  this.status.std
+  cap.status.std
+  type duplicate$ empty$
+    { pop$ 
+      bbl.techrep
+    }
+    { skip$ }
+  if$
+  "type" bibinfo.check 
+  swap$ duplicate$ empty$
+    { pop$ }
+    { tie.or.space.prefix * * }
+  if$
+}
+
+
+
+%% note
+
+FUNCTION {format.note}
+{ note empty$
+    { "" }
+    { this.to.prev.status
+      this.status.std
+      punct.period 'this.status.punct :=
+      note #1 #1 substring$
+      duplicate$ "{" =
+        { skip$ }
+        { status.cap
+          { "u" }
+          { "l" }
+        if$
+        change.case$
+        }
+      if$
+      note #2 global.max$ substring$ * "note" bibinfo.check
+      cap.yes  'status.cap :=
+    }
+  if$
+}
+
+
+
+%% patent
+
+FUNCTION {format.patent.date}
+{ this.to.prev.status
+  this.status.std
+  year empty$
+    { monthfiled duplicate$ empty$
+        { "monthfiled" bibinfo.check pop$ "" }
+        { "monthfiled" bibinfo.check }
+      if$
+      dayfiled duplicate$ empty$
+        { "dayfiled" bibinfo.check pop$ "" * }
+        { "dayfiled" bibinfo.check 
+          monthfiled empty$ 
+             { "dayfiled without a monthfiled in " cite$ * warning$
+               * 
+             }
+             { " " swap$ * * }
+           if$
+        }
+      if$
+      yearfiled empty$
+        { "no year or yearfiled in " cite$ * warning$ }
+        { yearfiled "yearfiled" bibinfo.check 
+          swap$
+          duplicate$ empty$
+             { pop$ }
+             { ", " * swap$ * }
+           if$
+        }
+      if$
+    }
+    { month duplicate$ empty$
+        { "month" bibinfo.check pop$ "" }
+        { "month" bibinfo.check }
+      if$
+      day duplicate$ empty$
+        { "day" bibinfo.check pop$ "" * }
+        { "day" bibinfo.check 
+          month empty$ 
+             { "day without a month in " cite$ * warning$
+               * 
+             }
+             { " " swap$ * * }
+           if$
+        }
+      if$
+      year "year" bibinfo.check 
+      swap$
+      duplicate$ empty$
+        { pop$ }
+        { ", " * swap$ * }
+      if$
+    }
+  if$
+  cap.status.std
+}
+
+FUNCTION {format.patent.nationality.type.number}
+{ this.to.prev.status
+  this.status.std
+  nationality duplicate$ empty$
+    { "nationality" bibinfo.warn pop$ "" }
+    { "nationality" bibinfo.check
+      duplicate$ "l" change.case$ "united states" =
+        { pop$ bbl.patentUS }
+        { skip$ }
+      if$
+      " " *
+    }
+  if$
+  type empty$
+    { bbl.patent "type" bibinfo.check }
+    { type "type" bibinfo.check }
+  if$  
+  *
+  number duplicate$ empty$
+    { "number" bibinfo.warn pop$ }
+    { "number" bibinfo.check
+      large.number.separate
+      swap$ " " * swap$ *
+    }
+  if$ 
+  cap.status.std
+}
+
+
+
+%% standard
+
+FUNCTION {format.organization.institution.standard.type.number}
+{ this.to.prev.status
+  this.status.std
+  organization duplicate$ empty$
+    { pop$ 
+      institution duplicate$ empty$
+        { "institution" bibinfo.warn }
+        { "institution" bibinfo.warn " " * }
+      if$
+    }
+    { "organization" bibinfo.warn " " * }
+  if$
+  type empty$
+    { bbl.standard "type" bibinfo.check }
+    { type "type" bibinfo.check }
+  if$  
+  *
+  number duplicate$ empty$
+    { "number" bibinfo.check pop$ }
+    { "number" bibinfo.check
+      large.number.separate
+      swap$ " " * swap$ *
+    }
+  if$ 
+  cap.status.std
+}
+
+FUNCTION {format.revision}
+{ revision empty$
+    { "" }
+    { this.to.prev.status
+      this.status.std
+      bbl.revision
+      revision tie.or.space.prefix
+      "revision" bibinfo.check
+      * *
+      cap.status.std
+    }
+  if$
+}
+
+
+%% thesis
+
+FUNCTION {format.master.thesis.type}
+{ this.to.prev.status
+  this.status.std
+  type empty$
+    {
+      bbl.mthesis
+    }
+    { 
+      type "type" bibinfo.check
+    }
+  if$
+cap.status.std
+}
+
+FUNCTION {format.phd.thesis.type}
+{ this.to.prev.status
+  this.status.std
+  type empty$
+    {
+      bbl.phdthesis
+    }
+    { 
+      type "type" bibinfo.check
+    }
+  if$
+cap.status.std
+}
+
+
+
+%% URL
+
+FUNCTION {format.url}
+{ url empty$
+    { "" }
+    { this.to.prev.status
+      this.status.std
+      cap.yes 'status.cap :=
+      name.url.prefix " " *
+      "\url{" * url * "}" *
+      punct.no 'this.status.punct :=
+      punct.period 'prev.status.punct :=
+      space.normal 'this.status.space :=
+      space.normal 'prev.status.space :=
+      quote.no 'this.status.quote :=
+    }
+  if$
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%
+%% ENTRY HANDLERS %%
+%%%%%%%%%%%%%%%%%%%%
+
+
+% Note: In many journals, IEEE (or the authors) tend not to show the number
+% for articles, so the display of the number is controlled here by the
+% switch "is.use.number.for.article"
+FUNCTION {article}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors "author" output.warn
+  name.or.dash
+  format.article.title "title" output.warn
+  format.journal "journal" bibinfo.check "journal" output.warn
+  format.volume output
+  format.number.if.use.for.article output
+  format.pages output
+  format.date "year" output.warn
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {book}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  author empty$
+    { format.editors "author and editor" output.warn }
+    { format.authors output.nonnull }
+  if$
+  name.or.dash
+  format.book.title.edition output
+  format.series output
+  author empty$
+    { skip$ }
+    { format.editors output }
+  if$
+  format.address.publisher.date output
+  format.volume output
+  format.number output
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {booklet}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors output
+  name.or.dash
+  format.article.title "title" output.warn
+  format.howpublished "howpublished" bibinfo.check output
+  format.organization "organization" bibinfo.check output
+  format.address "address" bibinfo.check output
+  format.date output
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {electronic}
+{ std.status.using.period
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors output
+  name.or.dash
+  format.date.electronic output
+  format.article.title.electronic output
+  format.howpublished "howpublished" bibinfo.check output
+  format.organization "organization" bibinfo.check output
+  format.address "address" bibinfo.check output
+  format.note output
+  format.url output
+  fin.entry
+  empty.entry.warn
+  if.url.std.interword.spacing
+}
+
+FUNCTION {inbook}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  author empty$
+    { format.editors "author and editor" output.warn }
+    { format.authors output.nonnull }
+  if$
+  name.or.dash
+  format.book.title.edition output
+  format.series output
+  format.address.publisher.date output
+  format.volume output
+  format.number output
+  format.chapter output
+  format.pages output
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {incollection}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors "author" output.warn
+  name.or.dash
+  format.article.title "title" output.warn
+  format.in.booktitle.edition "booktitle" output.warn
+  format.series output
+  format.editors output
+  format.address.publisher.date.nowarn output
+  format.volume output
+  format.number output
+  format.chapter output
+  format.pages output
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {inproceedings}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors "author" output.warn
+  name.or.dash
+  format.article.title "title" output.warn
+  format.in.booktitle "booktitle" output.warn
+  format.series output
+  format.editors output
+  format.volume output
+  format.number output
+  publisher empty$
+    { format.address.organization.date output }
+    { format.organization "organization" bibinfo.check output
+      format.address.publisher.date output
+    }
+  if$
+  format.paper output
+  format.pages output
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {manual}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors output
+  name.or.dash
+  format.book.title.edition "title" output.warn
+  format.howpublished "howpublished" bibinfo.check output 
+  format.organization "organization" bibinfo.check output
+  format.address "address" bibinfo.check output
+  format.date output
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {mastersthesis}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors "author" output.warn
+  name.or.dash
+  format.article.title "title" output.warn
+  format.master.thesis.type output.nonnull
+  format.school "school" bibinfo.warn output
+  format.address "address" bibinfo.check output
+  format.date "year" output.warn
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {misc}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors output
+  name.or.dash
+  format.article.title output
+  format.howpublished "howpublished" bibinfo.check output 
+  format.organization "organization" bibinfo.check output
+  format.address "address" bibinfo.check output
+  format.pages output
+  format.date output
+  format.note output
+  format.url output
+  fin.entry
+  empty.entry.warn
+  if.url.std.interword.spacing
+}
+
+FUNCTION {patent}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors output
+  name.or.dash
+  format.article.title output
+  format.patent.nationality.type.number output
+  format.patent.date output
+  format.note output
+  format.url output
+  fin.entry
+  empty.entry.warn
+  if.url.std.interword.spacing
+}
+
+FUNCTION {periodical}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.editors output
+  name.or.dash
+  format.book.title "title" output.warn
+  format.series output
+  format.volume output
+  format.number output
+  format.organization "organization" bibinfo.check output
+  format.date "year" output.warn
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {phdthesis}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors "author" output.warn
+  name.or.dash
+  format.article.title "title" output.warn
+  format.phd.thesis.type output.nonnull
+  format.school "school" bibinfo.warn output
+  format.address "address" bibinfo.check output
+  format.date "year" output.warn
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {proceedings}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.editors output
+  name.or.dash
+  format.book.title "title" output.warn
+  format.series output
+  format.volume output
+  format.number output
+  publisher empty$
+    { format.address.organization.date output }
+    { format.organization "organization" bibinfo.check output
+      format.address.publisher.date output
+    }
+  if$
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {standard}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors output
+  name.or.dash
+  format.book.title "title" output.warn
+  format.howpublished "howpublished" bibinfo.check output 
+  format.organization.institution.standard.type.number output
+  format.revision output
+  format.date output
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {techreport}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors "author" output.warn
+  name.or.dash
+  format.article.title "title" output.warn
+  format.howpublished "howpublished" bibinfo.check output 
+  format.institution "institution" bibinfo.warn output
+  format.address "address" bibinfo.check output
+  format.tech.report.number output.nonnull
+  format.date "year" output.warn
+  format.note output
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+FUNCTION {unpublished}
+{ std.status.using.comma
+  start.entry
+  if.url.alt.interword.spacing
+  format.authors "author" output.warn
+  name.or.dash
+  format.article.title "title" output.warn
+  format.date output
+  format.note "note" output.warn
+  format.url output
+  fin.entry
+  if.url.std.interword.spacing
+}
+
+
+% The special entry type which provides the user interface to the
+% BST controls
+FUNCTION {IEEEtranBSTCTL}
+{ is.print.banners.to.terminal
+    { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." *
+      top$
+    }
+    { skip$ }
+  if$
+  CTLuse_article_number
+  empty$
+    { skip$ }
+    { CTLuse_article_number
+      yes.no.to.int
+      'is.use.number.for.article :=
+    }
+  if$
+  CTLuse_paper
+  empty$
+    { skip$ }
+    { CTLuse_paper
+      yes.no.to.int
+      'is.use.paper :=
+    }
+  if$
+  CTLuse_forced_etal
+  empty$
+    { skip$ }
+    { CTLuse_forced_etal
+      yes.no.to.int
+      'is.forced.et.al :=
+    }
+  if$
+  CTLmax_names_forced_etal
+  empty$
+    { skip$ }
+    { CTLmax_names_forced_etal
+      string.to.integer
+      'max.num.names.before.forced.et.al :=
+    }
+  if$
+  CTLnames_show_etal
+  empty$
+    { skip$ }
+    { CTLnames_show_etal
+      string.to.integer
+      'num.names.shown.with.forced.et.al :=
+    }
+  if$
+  CTLuse_alt_spacing
+  empty$
+    { skip$ }
+    { CTLuse_alt_spacing
+      yes.no.to.int
+      'is.use.alt.interword.spacing :=
+    }
+  if$
+  CTLalt_stretch_factor
+  empty$
+    { skip$ }
+    { CTLalt_stretch_factor
+      'ALTinterwordstretchfactor :=
+      "\renewcommand{\BIBentryALTinterwordstretchfactor}{"
+      ALTinterwordstretchfactor * "}" *
+      write$ newline$
+    }
+  if$
+  CTLdash_repeated_names
+  empty$
+    { skip$ }
+    { CTLdash_repeated_names
+      yes.no.to.int
+      'is.dash.repeated.names :=
+    }
+  if$
+  CTLname_format_string
+  empty$
+    { skip$ }
+    { CTLname_format_string
+      'name.format.string :=
+    }
+  if$
+  CTLname_latex_cmd
+  empty$
+    { skip$ }
+    { CTLname_latex_cmd
+      'name.latex.cmd :=
+    }
+  if$
+  CTLname_url_prefix
+  missing$
+    { skip$ }
+    { CTLname_url_prefix
+      'name.url.prefix :=
+    }
+  if$
+
+
+  num.names.shown.with.forced.et.al max.num.names.before.forced.et.al >
+    { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$ 
+      max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al :=
+    }
+    { skip$ }
+  if$
+}
+
+
+%%%%%%%%%%%%%%%%%%%
+%% ENTRY ALIASES %%
+%%%%%%%%%%%%%%%%%%%
+FUNCTION {conference}{inproceedings}
+FUNCTION {online}{electronic}
+FUNCTION {internet}{electronic}
+FUNCTION {webpage}{electronic}
+FUNCTION {www}{electronic}
+FUNCTION {default.type}{misc}
+
+
+
+%%%%%%%%%%%%%%%%%%
+%% MAIN PROGRAM %%
+%%%%%%%%%%%%%%%%%%
+
+READ
+
+EXECUTE {initialize.controls}
+EXECUTE {initialize.status.constants}
+EXECUTE {banner.message}
+
+EXECUTE {initialize.longest.label}
+ITERATE {longest.label.pass}
+
+EXECUTE {begin.bib}
+ITERATE {call.type$}
+EXECUTE {end.bib}
+
+EXECUTE{completed.message}
+
+
+%% That's all folks, mds.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SMC2015latex/csong.bib	Sun Apr 12 22:47:34 2015 +0100
@@ -0,0 +1,1103 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
+% music theory
+% Rhythm/Meter
+
+@Book{Taylor89MusicTheory,
+author = {Eric Taylor},
+title = {The AB Guide to Music Theory, Part I},
+publisher = {Associated Board of the Royal Schools of Music},
+year = {1989},
+}
+
+
+@Book{Lerdahl_Jackendoff83GTTM,
+author = {Fred Lerdahl and Ray Jackendoff},
+title = {A Generative Theory of Tonal Music},
+publisher = {Cambridge, Mass: MIT Press},
+year = {1983},
+}
+
+@Article{Higgins78,
+author = {Hugh C. Longuet-Higgins},
+title = {The perception of music},
+journal = {Interdisciplinary Science Review},
+volume = {3},
+pages = {148-156},
+year = {1978},
+}
+
+@Book{Yeston76,
+author = {Maury Yeston},
+title = {The stratification of musical rhythm},
+publisher = {New Haven, Conn: Yale University Press},
+year = {1976},
+}
+
+@Book{London04Meter,
+author = {Justin London},
+title = {Hearing in Time: Psychological Aspects of Musical Meter},
+publisher = {Oxford University Press},
+year = {2004},
+}
+
+@Book{Cooper_Meyer60,
+author = {Grosvenor Cooper and Leonard B. Meyer},
+title = {The Rhythmic Structure of Music},
+publisher = {University of Chicago Press},
+year = {1960},
+}
+
+@PhdThesis{Gouyon05,
+author = {Fabien Gouyon},
+title = {A computational approach to rhythm description},
+school = {Department of Technology of the University Pompeu Fabra},
+year = {2005},
+}
+
+@MastersThesis{Bilmes93,
+author = {Jeffrey A. Bilmes},
+title = {Timing is of the essence: perceptual and computational techniques for representing, learning, and reproducing expressive timing in percussive rhythm},
+school = {MIT Masters Thesis},
+year = {1993},
+}
+
+@InCollection{Clarke99,
+author = {Eric F. Clarke},
+title = {Rhythm and timing in music},
+booktitle = {The psychology of music (2nd edition)},
+pages = {437-500},
+publisher = {New York: Academic Press},
+year = {1999},
+}
+
+
+% Syncopation theory
+
+@Book{Randel86Harvard,
+author = {Don Randel},
+title = {The Harvard Dictionary of Music},
+publisher = {Harvard University Press},
+year = {1986},
+}
+
+@Book{Kennedy94Oxford,
+author = {Michael Kennedy},
+title = {The Oxford Dictionary of Music},
+publisher = {Oxford University Press},
+edition = {Second Edition},
+year = {1994},
+}
+
+@Book{Huron06Anticipation,
+author = {David Huron},
+title = {Sweet anticipation: music and the psychology of expectation},
+publisher = {Cambridge, MA: MIT. Press},
+year = {2006},
+}
+
+@Article{Huron_Ommen06,
+author = {David Huron and Ann Ommen},
+title = { An Empirical Study of Syncopation in American Popular Music, 1890–1939},
+journal = {Music Theory Spectrum},
+volume = {28},
+number = {2},
+pages = {211-231},
+year = {2006},
+}
+
+@Book{Krebs99,
+author = {Harald Krebs},
+title = {Fantasy pieces: metrical dissonance in the music of robert schumann},
+publisher = {New York: Oxford University Press},
+year = {1999},
+}
+
+@Article{Temperley99,
+author = {David Temperley},
+title = {Syncopation in rock: a perceptual perspective},
+journal = {Popular Music},
+volume = {18},
+number = {1},
+pages = {19-40},
+year = {1999},
+}
+
+
+@Book{Temperley01,
+author = {David Temperley},
+title = {The cognition of basic musical structures},
+publisher = {The MIT Press},
+year = {2001},
+}
+
+% syncopation and meter/beat induction, rhythm perception, similary
+@InProceedings{Velasco_Large11,
+author = {Marc J. Velasco and Edward W. Large},
+title = {Pulse detection in syncopated rhythms using neural oscillators},
+booktitle = {Proceedings of the 12th International Society for Music Information Retrieval Conference},
+pages = {185-190},
+year = {2011},
+}
+
+@Article{Eck01,
+author = {Douglas Eck},
+title = {A positive-evidence model for rhythmical beat induction},
+journal = {Journal of New Music Research},
+volume = {30},
+number = {2},
+pages = {187-200},
+year = {2001},
+}
+
+@Article{Keller_Repp05,
+author = {Peter E. Keller and Bruno H. Repp},
+title = {Staying offbeat: sensorimotor syncopation with structured and unstructured auditory sequences},
+journal = {Psychological Research},
+volume = {69},
+number = {4},
+pages = {292-309},
+year = {2001},
+}
+
+@InProceedings{Moelants12,
+author = {Dirk Moelants},
+title = {Conveying syncopation in music performance},
+booktitle = {Proceedings of the 12th International Conference on Music Perception and Cognition and the 8th Triennial Conference of the European Society for the Cognitive Sciences of Music},
+pages = {686-691},
+year = {2012},
+}
+
+% syncopation and broad music perception
+@Article{Keller_Schubert11,
+author = {Peter E. Keller and Emery Schubert},
+title = {Cognitive and affective judgements of syncopated musical themes},
+journal = {Advances in Cognitive Psychology},
+volume = {7},
+pages = {142-156},
+year = {2011},
+}
+
+@Article{Madison06,
+author = {Guy Madison},
+title = {Experiencing groove induced by music: consistency and phenomenology},
+journal = {Music Perception: An Interdisciplinary Journal},
+volume = {24},
+number = {2},
+pages = {201-208},
+year = {2006},
+}
+
+@Article{Witek14,
+author = {Maria A. G. Witek and Eric F. Clarke and Mikkel Wallentin and Morten L. Kringelbach and Peter Vuust},
+title = {Syncopation, body-movement and pleasure in groove music},
+journal = {PloS ONE},
+volume = {9},
+number = {4},
+pages = {e94446},
+year = {2014},
+}
+
+@InProceedings{Madison13,
+author = {Guy Madison and George Sioros and Matthew Davis and Marius Miron and Diogo Cocharro and Fabien Gouyon},
+title = {Adding syncopation to simple melodies increases the perception of groove},
+booktitle = {Proceedings of: Conference of Society for Music Perception and Cognition},
+year = {2013},
+}
+
+ @Article{Sloboda91,
+author = {John A. Sloboda},
+title = {Musical structure and emotional responses: some empirical fundings},
+journal = {Psychology of music},
+volume = {19},
+pages = {110-120},
+year = {1991},
+}
+
+@Article{Mayville01,
+author = {Justine M. Mayville and Armin Fuchs and Mingzhou Ding and Douglas Cheyne and Lüder Deecke and J.A. Scott Kelso},
+title = {Event-related changes in neuromagnetic activity associated with syncopation and synchronization timing tasks},
+journal = {Human Brain Mapping},
+volume = {113},
+number = {2},
+pages = {65-80},
+year = {2001},
+}
+
+
+@Article{Honning09Baby,
+author = {Henkjan Honing and Olivia Ladinig and G\'{a}bor P H\'{a}den and Istv\'{a}n Winkler},
+title = {Is beat induction innate or learned? Probing emergent meter perception in adults and newborns using event-related brain potentials},
+journal = {Annals of the New York Academy of Sciences},
+volume = {1169},
+pages = {93-96},
+year = {2009}
+}
+
+@Article{Winkler09,
+author = {Istv\'{a}n Winkler and G\'{a}bor P H\'{a}den and Olivia Ladinig and Istv\'{a}n Sziller and Henkjan Honing},
+title = {Newborn infants detect the beat in music},
+journal = {Proceedings of the National Academy of Sciences of the United States of America},
+volume = {106},
+number = {7},
+pages = {2468-2471},
+year = {2009}
+}
+
+@Article{Ladinig09,
+author = {Olivia Ladinig and Henkjan Honing},
+title = {Probing attentive and preattentive emergent meter in adult listners without extensive music training},
+journal = {Music Perception},
+volume = {26},
+number = {4},
+pages = {377-386},
+year = {2009},
+}
+
+@Article{Thaut_Kenyon03,
+author = {Michael H. Thaut and Gary P. Kenyon},
+title = {Rapid motor adaptations to subliminal frequency shifts during syncopated rhythmic sensorimotor synchronization},
+journal = {Human Movement Science},
+volume = {22},
+number = {3},
+pages = {321-338},
+year = {2003},
+}
+
+@Article{Simpson_Huron93,
+author = {Jasba Simpson and David Huron},
+title = { The perception of rhythmic similarity: A test of a modified version of Johnson-Laird’s theory},
+journal = {Canadian Acoustics},
+volume = {21},
+pages = {89-90},
+year = {1993},
+}
+
+@PhdThesis{Streich06,
+author = {Sebastian Streich},
+title = {Music complexity: a multifaceted description of audio content},
+school = {Music Technology Group, The Universitat Pompeu Fabra},
+year = {2006},
+}
+
+@PhdThesis{Ladinig09thesis,
+author = {Olivia Ladinig},
+title = {Temporal expectations and their violations},
+school = {Institute for Logic, Language and Computation, Universiteit van Amsterdam, The Netherlands},
+year = {2009},
+}
+
+@InProceedings{Smith10,
+author = {Leigh M. Smith},
+title = {Rhythmic similarity using metrical profile matching},
+booktitle = {Proceedings of the 2010 International Computer Music Conference},
+year = {2010},
+}
+
+@InProceedings{Panteli14,
+author = {Maria Panteli and Bruno Rocha and Niels Bogaards and Aline Honingh},
+title = {Development of a rhythm similarity model for electronic dance music},
+booktitle = {AES 53rd International Conference, London, UK},
+year = {2014},
+}
+
+@Article{Post_Toussaint11,
+author = {Olaf Post and Godfried Toussaint},
+title = {The edit distance as a measure of perceived rhythmic similarity},
+journal = {Empirical Musicology Review},
+volume = {6},
+number = {3},
+pages = {164-179},
+year = {2011},
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
+% Perceptual/Neurological studies - meter, rhythm, syncopation
+
+@Article{Palmer_Krumhansl90,
+author = {Caroline Palmer and Carol L. Krumhansl},
+title = { Mental Representations for Musical Meter},
+journal = {Journal of Experimental Psychology: Human Perception and Performance},
+volume = {16},
+number = {4},
+pages = {728-741},
+year = {1990},
+}
+
+@Article{Chen08,
+author = {Joyce L. Chen and Virginia B. Penhune and Robert J. Zatorre},
+title = {Moving on time: brain network for auditory-motor synchronization is modulated by rhythm complexity and musical training},
+journal = {Journal of Cognitive Neuroscience},
+volume = {20},
+number = {2},
+pages = {226-239},
+year = {2008},
+}
+
+@Article{Repp_Doggett07,
+author = {Bruno H. Repp and Rebecca Doggett},
+title = {Tapping to a very slow beat: a comparison of musicians and nonmusicians },
+journal = {Music Perception},
+volume = {24},
+number = {4},
+pages = {367-376},
+year = {2007},
+}
+
+@Article{Snyder_Krumhansl01,
+author = {Joel Snyder and Carol L. Krumhansl},
+title = {Tapping to Ragtime: Cue to Pulse Finding},
+journal = {Music Perception},
+volume = {18},
+number = {4},
+pages = {445-489},
+year = {2001},
+}
+
+@Article{Toivianinen_Snyder03,
+author = {Petri Toivianinen and Joel S. Snyder},
+title = {Tapping to Bach: Resonance-based Modelling of Pulse},
+journal = {Music Perception},
+volume = {21},
+number = {1},
+pages = {43-80},
+year = {2003},
+}
+
+@Article{Handel_Oshinsky81,
+author = {Stephen Handel and James S. Oshinsky},
+title = {The meter of syncopated auditory polyrhythms},
+journal = {Perception \& Psychophysics },
+volume = {30},
+number = {1},
+pages = {1-9},
+year = {1981},
+}
+
+@Article{Repp02,
+author = {Bruno H. Repp and W. Luke Windsor and Peter Desain},
+title = {Effects of tempo on the timing of simple musical rhythms},
+journal = {Music Perception},
+volume = {19},
+number = {4},
+pages = {565-593},
+year = {2002},
+}
+
+@Article{Desain_Honing94,
+author = {Peter Desain and Henkjan Honing},
+title = {Does expressive timing in music performance scale proportionally with tempo?},
+journal = {Psychological Research},
+volume = {56},
+number = {4},
+pages = {285-292},
+year = {1994},
+}
+
+@Article{Drake93,
+author = {Carolyn Drake},
+title = {Reproduction of musical rhythms by children, adult musicians, and adult nonmusicians},
+journal = {Perception \& Psychophysics},
+volume = {53},
+number = {1},
+pages = {25-33},
+year = {1993},
+}
+
+@Article{Smith_Cuddy89,
+author = {Karen C. Smith and Lola L. Cuddy},
+title = {Effects of metric and harmonic rhythm on the detection of pitch alterations in melodic sequences},
+journal = {Journal of Experimental Psychology: Human Perception and Performance},
+volume = {15},
+number = {3},
+pages = {457-471},
+year = {1989},
+}
+
+@Article{Hannon04,
+author = {Erin E. Hannon and Joel S. Snyder and Tuomas Eerola and Carol L. Krumhansl},
+title = {The Role of Melodic and Temporal Cues in Perceiving Musical Meter},
+journal = {Journal of Experimental Psychology: Human Perception and Performance},
+volume = {30},
+number = {5},
+pages = {956-974},
+year = {2004},
+}
+
+@Article{Vuust09,
+author = {Peter Vuust and Leif Ostergaard and Karen Johanne Pallesen and Christopher Bailey and Andreas Roepstorff},
+title = {Predictive coding of music – brain responses to rhythmic incongruity},
+journal = {Cortex},
+volume = {45},
+pages = {80-92},
+year = {2009},
+}
+
+@Article{Vuust11,
+author = {Peter Vuust and Mikkel Wallentin and Leif Ostergaard and Andreas Roepstorff},
+title = {Tapping polyrhythms in music activates language areas},
+journal = {Neuroscience Letters},
+volume = {494},
+pages = {211-216},
+year = {2011},
+}
+
+
+% particularly on tempo
+
+@Article{Meyer_Palmer01,
+author = {Rosalee K. Meyer and Caroline Palmer},
+title = {Rate and tactus effects in music performance},
+journal = {Manuscript submitted for publication},
+year = {2001},
+}
+
+@Article{Duke89,
+author = {Robert A. Duke},
+title = {Musicians' perception of beat in monotonic stimuli},
+journal = {Journal of Research in Music Education},
+volume = {37},
+number = {1},
+pages = {61-71},
+year = {1989},
+}
+
+@Article{McAuley_Semple99,
+author = {J. Devin McAuley and Peter Semple},
+title = {The effect of tempo and musical experience on perceived beat},
+journal = {Australian Journal of Psychology},
+volume = {51},
+number = {3},
+pages = {176-187},
+year = {1999},
+}
+
+@InProceedings{Moelants_McKinney04,
+author = {Dirk Moelants and M McKinney},
+title = {Tempo percepton and musical content: what makes a piece fast, slow or temporally ambiguous?},
+booktitle = {Proceedings of the 8th International Conference on Music Perception and Cognition},
+pages = {558-562},
+year = {2004},
+}
+
+
+@Article{Wohlschlager_Koch00,
+author = {Andreas Wohlschl\"{a}ger and Robert Koch},
+title = {Syncronization error: an error in time perception},
+journal = {Rhythm perception and production},
+pages = {115-127},
+year = {2000},
+}
+
+@Article{Repp08,
+author = {Bruno H. Repp},
+title = {Metrical sbudivision results in subjective slowing of the beat},
+journal = {Music Perception},
+volume = {26},
+issue = {1},
+pages = {19-39},
+year = {2008},
+}
+
+@Article{Repp03,
+author = {Bruno H. Repp},
+title = {Rate limits in sensorimotor synchronization with auditory and visual sequences: The synchronization threshold and the benefits and costs of interval subdivision},
+journal = {Journal of Motor Behavior},
+volume = {35},
+issue = {4},
+pages = {355-370},
+year = {2003},
+}
+
+@Article{Handel92,
+author = {Stephen Handel},
+title = {The differentiation of rhythmic structure},
+journal = {Perception \& Psychophysics},
+volume = {52},
+pages = {497-507},
+year = {1992},
+}
+
+@Article{Handel93,
+author = {Stephen Handel},
+title = {The effect of tempo and tone duration on rhythm discrimination},
+journal = {Percept Psychophys},
+volume = {54},
+number = {3},
+pages = {370-382},
+year = {1993},
+}
+
+@Article{Duke88,
+author = {Robert A. Duke and John M. Geringer and Clifford K. Madsen},
+title = {The effect of tempo on pitch perception},
+journal = {Journal of Research in Music Education},
+volume = {36},
+number = {2},
+pages = {108-125},
+year = {1988},
+}
+
+@Article{LeBlanc81,
+author = {Albert LeBlanc},
+title = {Effects of style, tempo and performing medium on children's music preference},
+journal = {Journal of Research in Music Education},
+volume = {29},
+number = {2},
+pages = {143-156},
+year = {1981},
+}
+
+% This was cited in plos one paper, but they actually didn't show tempo effects on emotion
+@Article{Kamenetsky97,
+author = {Stuart B. Kamenetsky and David S. Hill and Sandra E. Trehub},
+title = {Effect of tempo and dynamics on perception of emotion in music},
+journal = {Psychology of Music},
+volume = {25},
+number = {2},
+pages = {149-160},
+year = {1997},
+}
+
+@Article{Zwaag11,
+author = {Marjolein D. vander Zwaag and Joyce H.D.M. Westerink and Egon L. van den Broek},
+title = {Emotional and psychophysiological responses to tempo, mode and perceussiveness},
+journal = {Musicae Scientiae},
+volume = {15},
+number = {2},
+pages = {250-269},
+year = {2011},
+}
+
+@Article{Collier_Hubbard01,
+author = {William G. Collier and Timothy L. Hubbard},
+title = {Judgements of happiness, brightness, speed and tempo change of auditory stimuli varying in pitch and tempo},
+journal = {Psychomusicology},
+volume = {17},
+pages = {36-55},
+year = {2001},
+}
+
+@Book{Gabrielsson10,
+author = {Aalf Gabrielsson and Erik Lindstr\"{o}m},
+title = {The role of structure in the musical expression of emotions},
+journal = {Music and emotion: Theory, research, and applications},
+pages = {367-400},
+publisher = {Oxford University Press},
+year = {2010},
+}
+
+@Article{Caldwell_Hibbert99,
+author = {Clare Caldwell and Sally A. Hibbert},
+title = {Play that one again: the effect of music tempo on consumer behaviour in a restaurant},
+journal = {European Advances in Comsumer Research},
+volume = {4},
+pages = {58-62},
+year = {1999},
+}
+
+@Article{Brodsky02,
+author = {Warren Brodsky},
+title = {The effects of music tempo on simulted driving performance and vehicular control},
+journal = {Transportation Research Part F},
+volume = {4},
+pages = {219-241},
+year = {2002},
+}
+
+@Book{Fraisse63,
+author = {Paul Fraisse},
+title = {Psycbology of time},
+publisher = {New York: Harper},
+pages = {13-14},
+year = {1963},
+}
+
+
+@Book{Fraisse82,
+author = {Paul Fraisse},
+title = {The Psychology of Music, ``Rhythm and Tempo''},
+publisher = {Academic Press, New York},
+pages = {149-180},
+year = {1982},
+}
+
+@Article{Bolton1894,
+author = {Thaddeus L. Bolton},
+title = {Rhythm},
+journal = {American Journal of Psychology},
+volume = {6},
+pages = {145-238},
+year = {1894},
+}
+
+@Article{Hirsh_Monohan90,
+author = {Ira J. Hirsh and Caroline B. Monohan},
+title = {Studies in auditory timing: 1. simple patterns},
+journal = {Perception and psychophysics},
+volume = {47},
+number = {3},
+pages = {215-226},
+year = {1990},
+}
+
+@Article{Mates93,
+author = {Ji\v{r}\'{i} Mates and U. M\"{u}ller and E. P\"{o}ppel and Tom\'{a}\v{s} Radil},
+title = {Stimulus anticipation disappears when following slow tonal sequences by finger tapping},
+journal = {Homeostatis in Health and Disease},
+volume = {34},
+pages = {185-187},
+year = {1993},
+}
+
+@InProceedings{London06,
+author = {Justin London and Ian Cross and Tommi Himberg},
+title = {The effect of tempo on the perception of anacruses},
+booktitle = {The 9th International Conference on Music Perception and Cognition},
+address = {Alma Mater Studiorum University of Bologna},
+pages = {1641-1647},
+year = {2006},
+}
+
+
+@Article{Parncutt94,
+author = {Richard Parncutt},
+title = {A perceptual model of pulse salience and metrical accent in musical rhythms},
+journal = {Music Perception},
+volume = {11},
+number = {4},
+pages = {409-464},
+year = {1994},
+}
+
+@Article{Oshinsky_Handel78,
+author = {James S. Oshinsky and Stephen Handel},
+title = {Syncopated auditory polyrhtyhms: discontinuous reversals in meter interpretation},
+journal = {The Journal of Acoustical Society of America},
+volume = {63},
+number = {3},
+pages = {936-939},
+year = {1978},
+}
+
+
+@Article{Handel_Lawson83,
+author = {Stephen Handel and Gregory R. Lawson},
+title = {The contextual nature of rhythmic interpretation},
+journal = {Percept \& Psychophys},
+volume = {34},
+number = {2},
+pages = {103-120},
+year = {1983},
+}
+
+
+@Article{Bergeson_Trehub06,
+author = {Tonya R. Bergeson and Sandra E. Trehub},
+title = {Infants perception of rhythmic patterns},
+journal = {Music Perception},
+volume = {23},
+number = {4},
+pages = {345-360},
+year = {2006},
+}
+
+@Article{Drake97,
+author = {Carolyn Drake},
+title = { Motor and perceptually preferred synchronisation by children and adults: binary and ternary ratios},
+journal = {Polish Quarterly of Developmental Psychology},
+volume = {3},
+pages = {41-59},
+year = {1997},
+}
+
+@Article{VanNoorden_Moelants99,
+author = {Leon van Noorden and Dirk Moelants},
+title = {Resonance in the perception of musical pulse},
+journal = {Journal of New Music Research},
+volume = {28},
+pages = {43-66},
+year = {1999},
+}
+
+@Article{Quinn_Watt06,
+author = {Sandra Quinn and Roger Watt},
+title = {The perception of tempo in music},
+journal = {Perception},
+volume = {35},
+pages = {267-280},
+year = {2006},
+}
+
+@Article{McAuley06,
+author = {J. Devin McAuley and Mari Riess Jones and Shayla Holub and Heather M. Johnston and Nathaniel S. Miller},
+title = {The time of our lives: lifespan development of timing and event tracking},
+journal = {Journal of Experimental Psychology: General},
+volume = {135},
+number = {3},
+pages = {348-367},
+year = {2006},
+}
+
+
+@Article{McAuley10,
+author = {J. Devin McAuley},
+title = {Tempo and rhythm},
+journal = {Music perception},
+publisher = {Springer New York},
+pages = {165-199},
+year = {2010}
+}
+
+
+@Article{Lapidaki00,
+author = {Eleni Lapidaki},
+title = {Stability of tempo perception in music listening},
+journal = {Music Education Research},
+volume = {2},
+pages = {25-44},
+year = {2000},
+}
+
+@Article{MacDougall_Moore05,
+author = {Hamish G. MacDougall and Steven T. Moore},
+title = {Marching to the beat of the same drummer: the spontaneous tempo of human locomotion},
+journal = {Journal of Applied Physiology},
+volume = {99},
+number = {3},
+pages = {1164-1173},
+year = {2005},
+}
+
+@Article{Barton13,
+author = {Scott Barton and Laura Getz and Michael Kubovy},
+title = {Rhythmic identity, syncopation and tempo},
+journal = {Submitted for publication},
+year = {2013},
+}
+
+@InProceedings{Moelants02,
+author = {Dirk Moelants},
+title = {Preferred tempo reconsidered},
+booktitle = {Proceedings of the 7th International Conference on Music Perception and Cognition},
+address = {Sydney},
+pages = {580-583},
+year = {2002},
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
+% Syncopation models
+
+@Article{LHL84,
+author = {Hugh C. Longuet-Higgins and Christopher S. Lee},
+title = {The rhythmic interpretation of monophonic music},
+journal = {Music Perception},
+volume = {1},
+number = {4},
+pages = {424-441},
+year = {1984},
+}
+
+@Book{Keith91,
+author = {Michael Keith},
+title = {From Polychords to P\'olya: Adventures in Music Combinatiorics},
+publisher = {Vinculum Press}, 
+year = {1991}
+}
+%address={Princeton},
+
+@InProceedings{Toussaint02Metrical,
+author = {Godfried T. Toussaint},
+title = {A mathematical analysis of African, Brazilian, and Cuban clave rhythms},
+booktitle = {Proceedings of BRIDGES: Mathematical Connections in Art, Music and Science},
+pages = {157-168},
+year = {2002},
+}
+%address = {Townson University, Towson, MD}
+
+@InProceedings{Toussaint05Offbeatness,
+author = {Godfried T. Toussaint},
+title = {Mathematical features for recognizing preference in Sub-Saharan African traditional rhythm timelines},
+booktitle = {3rd International Conference on Advances in Pattern Recognition},
+pages = {18-27},
+year = {2005},
+}
+%address = {University of Bath, Bath, United Kingdom},
+
+@InProceedings{Gomez05,
+author = {F. G\'omez and A. Melvin and D. Rappaport and Godfried T. Toussaint},
+title = {Mathematical measures of syncopation},
+booktitle = {BRIDGES: Mathematical Connections in Art, Music and Science},
+pages = {73-84},
+year = {2005},
+}
+%address = {Banff, Alberta, Canada},
+
+@InProceedings{Sioros11,
+author = {George Sioros and Carlos Guedes},
+title = {Complexity Driven Recombination of MIDI Loops},
+booktitle = {Proceedings of the 12th International Society for Music Information Retrieval Conference},
+pages = {381-386},
+year = {2011},
+}
+
+@InProceedings{Sioros12,
+author = {George Sioros and Andr\'e Holzapfel and Carlos Guedes},
+title = {On measuring syncopation to drive an interactive music system},
+booktitle = {Proceedings of the 13th International Society for Music Information Retrieval Conference},
+pages = {283-288},
+year = {2012},
+}
+
+@Inproceedings {Sioros13,
+	author = {George Sioros and Marius Miron and Diogo Cocharro and Carlos Guedes and Fabien Gouyon},
+	title = {Syncopalooza: Manipulating the Syncopation in Rhythmic Performances},
+	booktitle = {International Symposium on Computer Music Multidisciplinary Research},
+	year = {2013},
+}
+
+@misc {Sioros11URL,
+	author = {George Sioros},
+	title = {Kinetic. Gestural controller-driven, adaptive, and dynamic music composition systems},
+	year = {2011},
+	howpublished = {{{https://http://smc.inescporto.pt/kinetic/?page\_id=9}}}
+}
+
+@misc {Sioros14Comms,
+	author = {George Sioros},
+	year = {2014},
+	month = {January},
+	howpublished = "Personal communication"
+}
+
+
+@InProceedings{Pressing93,
+author = {Jeffrey Pressing and Peter Lawrence},
+title = {Transcribe: a comprehensive autotranscription program.},
+booktitle = {Proceedings of the 1993 International Computer Music Conference},
+pages = {343-345},
+year = {1993},
+}
+
+@InProceedings{Pressing97,
+author = {Jeffrey Pressing},
+title = {Cognitive complexity and the structure of musical patterns},
+booktitle = {Proceedings of the 4th Conference of the Australian Cognitive Science Society},
+year = {1997},
+}
+%address = {Newcastle, Australia},
+
+@Book{Arom91Oddity,
+author = {Simha Arom},
+title = {African Polyphony and Polyrhythm: Musical Structure and Methodology},
+publisher = {Cambridge University Press},
+year = {1991},
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
+% Data
+
+@Article{Povel_Essens85,
+author = {Dirk-Jan Povel and Peter Essens},
+title = {Perception of temporal patterns},
+journal = {Music Perception},
+volume = {2},
+number = {4},
+pages = {411-440},
+year = {1985},
+}
+
+@Article{Essens95,
+author = {Peter Essens},
+title = {Structuring temporal sequences: comparison of models and factors of complexity},
+journal = {Perception and Psychophysics},
+volume = {57},
+number = {4},
+pages = {519-532},
+year = {1995},
+}
+
+
+@Article{Shmulevich_Povel00,
+author = {Ilya Shmulevich and Dirk-Jan Povel},
+title = {Measures of temporal pattern complexity},
+journal = {Journal of New Music Research},
+volume = {29},
+number = {1},
+pages = {61-69},
+year = {2000},
+}
+
+@Article{Fitch_Rosenfeld07,
+author = {W. Tecumseh Fitch and Andrew J. Rosenfeld},
+title = {Perception and production of syncopated rhythms},
+journal = {Music Perception},
+volume = {25},
+number = {1},
+pages = {43-58},
+year = {2007}
+}
+
+@Article{Song13,
+author = {Chunyang Song and Andrew J.R. Simpson and Christopher A. Harte and Marcus T. Pearce and Mark B. Sandler},
+title = { Syncopation and the score},
+journal = {PloS ONE},
+volume = {8},
+number = {9},
+pages = {e74692. doi:10.1371/journal.pone.0074692},
+year = {2013},
+}
+
+@misc {Song14URL,
+	author = {Chunyang Song},
+	title = {C4{DM} Syncopation Dataset and Toolkit},
+	year = {2014},
+	howpublished = {{{https://code.soundsoftware.ac.uk/projects/syncopation-dataset}}}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
+%Evaluations
+@InProceedings{Gomez07,
+author={Francisco G\'omez and Eric Thul and Godfried T. Toussaint},
+title={An experimental comparison of formal measures of rhythmic
+syncopation},
+booktitle={Proceedings of the International Computer Music Conference},
+pages={101-104},
+year= {2007}
+}
+%address={Copenhagen, Denmark},
+
+@MastersThesis{Thul08,
+author = {Eric Thul},
+title = {Measuring the complexity of musical rhythm. (MSc Thesis)},
+school = {McGill University},
+year = {2008},
+}
+
+
+@InProceedings{Smith_Honing07,
+author = {Leigh M. Smith and Henkjan Honing},
+title = {Evaluating and Extending Computational Models of Rhythmic Syncopation in Music},
+booktitle = {Proceedings of the 2006 International Computer Music Conference},
+pages = {688-91},
+year =  {2007}
+}
+%address= {New Orleans},
+
+
+
+% Something not too relavent but have to cite
+@Book{Stevens75Psychophysics,
+  Author         = {Stanley Smith Stevens},
+  Title          = {Psychophysics: Introduction to its perceptual, neural, and social prospects. Chap. 1},
+  Publisher      = {Wiley},
+  Address        = {New York},
+  year           = 1975
+}
+
+@Book{Bech_Zacharov06,
+  Author         = {S{\o}ren Bech and Nick Zacharov},
+  Title          = {Perceptual Audio Evaluation: Theory, Method and Application. Chap. 4},
+  Publisher      = {John Wiley \& Son},
+  year           = 2006
+}
+
+@Book{Poulton89Bias,
+  Author         = {E. Christopher Poulton},
+  Title          = {Bias in Quantifying Judgement},
+  Publisher      = {Lawrence Erlbaum Associates Ltd.},
+  Address        = {East Sussex, U.K.},
+  year           = 1989
+}
+
+
+@Book{Hrbacek99Set_theory,
+author = {Karel Hrbacek and Thomas Jech},
+title = {Introduction to Set Theory},
+publisher = {Marcel Dekker, Inc., New York},
+year = {1999},
+}
+
+@book{Lewin72,
+  title={Theory and design of digital computers},
+  author={Lewin, D.},
+  isbn={9780470531594},
+  lccn={72002462},
+  year={1972},
+  publisher={J. Wiley, Press}
+}
+
+@Book{Miller90,
+author = {Alan J. Miller},
+title = {Subset Selection in Regression},
+publisher = {Chapman and Hall, London},
+year = {1990},
+}
+
+@Book{Akaike77,
+author = {Hirotugu Akaike},
+title = {On entropy maximization principle},
+publisher = {Applications of Statistics, North-Holland, Amsterdam},
+pages = {27-41},
+year = {1977},
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Unclassified
+
+@Article{Pressnitzer11,
+author = {Daniel Pressnitzer, Clara Suied and Shihab A. Shamma},
+title = {Auditory scene analysis: the sweet music of ambiguity},
+journal = {Front Hum Neurosci},
+volume = {5},
+pages = {158},
+year = {2011},
+}
+
+@InProceedings{Guoyon04,
+author = {Fabien Gouyon and Simon Dixon and Elia Pampalk and Gerhard Widmer},
+title = {Evaluating rhythmic descriptors for musical genre classification},
+booktitle = {Proceedings of the AES 25th International Conference},
+pages = {196-204},
+year =  {2004},
+}
+%address= {New Orleans},
+
+@Article{Thomassen82,
+author = {Joseph M. Thomassen},
+title = {Melodic accent: experiments and a tentative model},
+journal = {The Journal of the Acoustical Society of America},
+volume = {71},
+number = {6},
+pages = {1596-1605},
+year = {1982},
+}
+
+@Article{Dixon01,
+author = {Simon Dixon},
+title = {Automatic extraction of tempo and beat from expressive performances},
+journal = {Journal of New Music Research},
+volume = {30},
+number = {1},
+pages = {39-58},
+year = {2001},
+}
+
+@Article{Mullensiefen09,
+author = {Daniel M\"{u}llensiefen and Martin Pfleiderer and Klaus Frieler },
+title = {The perception of accents in pop music melodies},
+journal = {Journal of New Music Research},
+volume = {38},
+number = {1},
+pages = {19-44},
+year = {2009},
+}
+
+
+@Article{Trainor07,
+author = {Laurel J. Trainor},
+title = {Do preferred beat rate and entrainment to the beat have a common origin in movement?},
+journal = {Empirical Musicology Review},
+volume = {2},
+pages = {17-21},
+year = {2007},
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SMC2015latex/smc2015.sty	Sun Apr 12 22:47:34 2015 +0100
@@ -0,0 +1,258 @@
+% Latex Paper Template for SMC 2015
+% slightly adapted version of the templates for SMC 2011, SMC 2010 and ISMIR 2009
+%
+% Version 20111229
+% Adapded for Sound And Music computing conference
+% The bibliography style is now the most recent IEEEtran.bst
+
+\def\Hline{\noalign{\hrule height 0.4mm}}
+%\newcommand{\bm}[1]{\mbox{\boldmath{$#1$}}}
+\newcommand{\figbox}[1]{\fbox{\parbox{\columnwidth}{\centering{ #1 }}}}
+\newcommand{\range}[2]{{#1,\cdots,#2\;}}
+\newcommand{\secref}[1]{\mbox{Section~\ref{#1}}}
+\newcommand{\tabref}[1]{\mbox{Table~\ref{#1}}}
+\newcommand{\figref}[1]{\mbox{Figure~\ref{#1}}}
+\newcommand{\eqnref}[1]{\mbox{Eq.~(\ref{#1})}}
+
+\renewcommand{\sfdefault}{phv}
+\renewcommand{\rmdefault}{ptm}
+\renewcommand{\ttdefault}{pcr}
+
+\setlength{\paperheight}{297mm}
+\setlength{\paperwidth}{210mm}
+\setlength{\textheight}{252mm}
+\setlength{\textwidth}{172mm}
+\setlength{\columnsep}{8mm}
+\setlength{\headheight}{0mm}
+\setlength{\voffset}{-12mm}
+\setlength{\hoffset}{0mm}
+\setlength{\marginparwidth}{0mm}
+\setlength{\parindent}{2mm} %1pc
+\setlength{\topmargin}{-5mm}
+\setlength{\oddsidemargin}{-6mm}
+\setlength{\evensidemargin}{-6mm}
+
+\setlength\normallineskip{1\p@}
+\setlength\parskip{0\p@ \@plus \p@}
+%\def\baselinestretch{0.98}
+
+\def\normalsize{\@setsize\normalsize{12pt}\xpt\@xpt}
+\def\small{\@setsize\small{10pt}\ixpt\@ixpt}
+\def\footnotesize{\@setsize\footnotesize{8pt}\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}
+
+\def\maketitle{\par
+  \begingroup
+  \def\thefootnote{}
+  \def\@makefnmark{
+    \hbox
+    {$^{\@thefnmark}$\hss}
+  }
+  \twocolumn[\@maketitle]
+  \permission
+  \@thanks
+  \endgroup
+  \setcounter{footnote}{0}
+  \let\maketitle\relax
+  \let\@maketitle\relax
+  \gdef\thefootnote{
+  \arabic{footnote}
+  }
+  \gdef\@@savethanks{}
+  \gdef\@thanks{}
+  \gdef\@author{}
+  \gdef\@title{}
+  \let\thanks\relax
+}
+
+\def\@maketitle{
+  \newpage
+  \null
+  \begin{center} {
+    \Large \bf \@title \par
+  }
+  \vskip 2.0em {
+    \normalsize \lineskip .5em
+    \begin{tabular}[t]{c}
+    \@author \\
+    \end{tabular}
+    \par
+  }
+  \end{center}
+  \par
+  \vskip 2.0em
+}
+
+\newcommand{\permission}{
+\begin{figure}[b]
+{\scriptsize{\it Copyright: \copyright  2015 \firstauthor  \hspace*{1 pt} et al. This is an open-access article distributed under the terms of the \href{http://creativecommons.org/licenses/by/3.0/}{\textcolor {magenta} {\underline {Creative Commons Attribution 3.0 Unported License}}}, which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited.}}
+%{\copyright~Copyright notice here}
+\end{figure}}
+
+\def\oneauthor#1#2{
+  \gdef\@author{
+  \begin{tabular}{@{}c@{}}
+    {\bf #1} \\
+    #2\relax
+   \end{tabular}\hskip .3in
+  }
+}
+
+\def\twoauthors#1#2#3#4{
+  \gdef\@author{
+  \begin{tabular}{@{}c@{}}
+    {\bf #1} \\
+    #2
+  \end{tabular}\hskip 1.5in
+  \begin{tabular}{@{}c@{}}
+    {\bf #3} \\
+    #4\relax
+  \end{tabular}
+  }
+}
+
+\def\threeauthors#1#2#3#4#5#6{
+  \gdef\@author{
+  \begin{tabular}{@{}c@{}}
+    {\bf #1} \\
+    #2
+  \end{tabular}\hskip .3in
+  \begin{tabular}{@{}c@{}}
+    {\bf #3} \\
+    #4
+  \end{tabular}\hskip .3in
+  \begin{tabular}{@{}c@{}}
+    {\bf #5} \\
+    #6\relax
+  \end{tabular}
+  }
+}
+
+\def\abstract{
+  \begin{center}{
+  \bf ABSTRACT
+  }
+  \end{center}
+}
+\def\endabstract{\par}
+
+\def\title#1{\gdef\@title{\uppercase{#1}}}
+
+\newif\if@smcsection
+
+\renewcommand\section{
+  \@smcsectiontrue
+  \@startsection
+  {section}
+  {1}
+  {\z@}
+  {-3.5ex \@plus -1ex \@minus -.2ex}
+  {6pt \@plus.2ex}
+  {\large\bf\centering}
+}
+
+\renewcommand\subsection{
+  \@smcsectionfalse
+  \@startsection
+  {subsection}
+  {2}
+  {\z@}
+  {-2.5ex \@plus -1ex \@minus -.2ex}
+  {6pt \@plus.2ex}
+  {\normalsize\bf\raggedright}
+}
+
+\renewcommand\subsubsection{
+  \@smcsectionfalse
+  \@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}
+  \if@smcsection
+    \edef\@svsec{\csname the#1\endcsname.\hskip 0.6em}
+  \else
+    \edef\@svsec{\csname the#1\endcsname\hskip 0.6em}
+  \fi
+  \begingroup
+    \ifnum #2=1
+      \bf\centering{\interlinepenalty \@M \@svsec\uppercase{#8}\par}
+    \else
+      \ifnum #2=2
+        \bf\raggedright
+        \noindent{\interlinepenalty \@M \@svsec #8\par}
+      \else
+        \it\raggedright
+        \noindent{\interlinepenalty \@M \@svsec #8\par}
+      \fi
+    \fi
+  \endgroup
+  \csname #1mark\endcsname{#7}\addcontentsline
+  {toc}{#1}{\protect\numberline
+  \if@smcsection
+    {\csname the#1\endcsname.}
+  \else
+    {\csname the#1\endcsname}
+  \fi
+  #7}
+  \@tempskipa #5\relax
+  \@xsect{\@tempskipa}
+}
+
+\newenvironment{acknowledgments}%
+{%
+\vskip 2.5ex {\normalsize\bf\raggedright Acknowledgments} 
+\vspace*{6pt} \\
+\noindent
+}%
+{%
+\par
+}
+
+
+\bibliographystyle{IEEEtran}
+
+\def\thebibliography#1{
+  \section{References}\list
+  {[\arabic{enumi}]}{
+  \settowidth\labelwidth{[#1]}\leftmargin 1em
+  \advance\leftmargin\labelsep
+  \usecounter{enumi}
+  }
+  \def\newblock{\hskip .01em plus .01em minus .01em}
+  \sloppy\clubpenalty4000\widowpenalty4000
+  \sfcode`\.=1000\relax
+}
+
+\let\endthebibliography=\endlist
+
+\long\def\@makecaption#1#2{
+  \vskip 10pt
+  \setbox\@tempboxa\hbox{#1. #2}
+  \ifdim
+    \wd\@tempboxa >\hsize #1. #2\par
+  \else
+    \hbox
+    to\hsize{\hfil\box\@tempboxa\hfil}
+  \fi
+}
+
+\def\fnum@figure{{\bf Figure\ \thefigure}}
+\def\fnum@table{{\bf Table \thetable}}
+
+\flushbottom
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SMC2015latex/syncopation_toolkit.tex	Sun Apr 12 22:47:34 2015 +0100
@@ -0,0 +1,260 @@
+% -----------------------------------------------
+% Template for SMC 2012
+% adapted from the template for SMC 2011, which was adapted from that of SMC 2010
+% -----------------------------------------------
+
+\documentclass{article}
+\usepackage{smc2015}
+\usepackage{times}
+\usepackage{ifpdf}
+\usepackage[english]{babel}
+\usepackage{cite}
+\usepackage{minted}
+
+%%%%%%%%%%%%%%%%%%%%%%%% Some useful packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%% See related documentation %%%%%%%%%%%%%%%%%%%%%%%%%%
+%\usepackage{amsmath} % popular packages from Am. Math. Soc. Please use the 
+%\usepackage{amssymb} % related math environments (split, subequation, cases,
+%\usepackage{amsfonts}% multline, etc.)
+%\usepackage{bm}      % Bold Math package, defines the command \bf{}
+%\usepackage{paralist}% extended list environments
+%%subfig.sty is the modern replacement for subfigure.sty. However, subfig.sty 
+%%requires and automatically loads caption.sty which overrides class handling 
+%%of captions. To prevent this problem, preload caption.sty with caption=false 
+%\usepackage[caption=false]{caption}
+%\usepackage[font=footnotesize]{subfig}
+
+
+%user defined variables
+\def\papertitle{SYNPY: A PYTHON TOOLKIT FOR SYNCOPATION MODELLING}
+\def\firstauthor{Chunyang Song}
+\def\secondauthor{Marcus Pearce}
+\def\thirdauthor{Christopher Harte}
+
+% adds the automatic
+% Saves a lot of ouptut space in PDF... after conversion with the distiller
+% Delete if you cannot get PS fonts working on your system.
+
+% pdf-tex settings: detect automatically if run by latex or pdflatex
+\newif\ifpdf
+\ifx\pdfoutput\relax
+\else
+   \ifcase\pdfoutput
+      \pdffalse
+   \else
+      \pdftrue
+\fi
+
+\ifpdf % compiling with pdflatex
+  \usepackage[pdftex,
+    pdftitle={\papertitle},
+    pdfauthor={\firstauthor, \secondauthor, \thirdauthor},
+    bookmarksnumbered, % use section numbers with bookmarks
+    pdfstartview=XYZ % start with zoom=100% instead of full screen; 
+                     % especially useful if working with a big screen :-)
+   ]{hyperref}
+  %\pdfcompresslevel=9
+
+  \usepackage[pdftex]{graphicx}
+  % declare the path(s) where your graphic files are and their extensions so 
+  %you won't have to specify these with every instance of \includegraphics
+  \graphicspath{{./figures/}}
+  \DeclareGraphicsExtensions{.pdf,.jpeg,.png}
+
+  \usepackage[figure,table]{hypcap}
+
+\else % compiling with latex
+  \usepackage[dvips,
+    bookmarksnumbered, % use section numbers with bookmarks
+    pdfstartview=XYZ % start with zoom=100% instead of full screen
+  ]{hyperref}  % hyperrefs are active in the pdf file after conversion
+
+  \usepackage[dvips]{epsfig,graphicx}
+  % declare the path(s) where your graphic files are and their extensions so 
+  %you won't have to specify these with every instance of \includegraphics
+  \graphicspath{{./figures/}}
+  \DeclareGraphicsExtensions{.eps}
+
+  \usepackage[figure,table]{hypcap}
+\fi
+
+%setup the hyperref package - make the links black without a surrounding frame
+\hypersetup{
+    colorlinks,%
+    citecolor=black,%
+    filecolor=black,%
+    linkcolor=black,%
+    urlcolor=black
+}
+
+
+% Title.
+% ------
+\title{\papertitle}
+
+% Authors
+% Please note that submissions are NOT anonymous, therefore 
+% authors' names have to be VISIBLE in your manuscript. 
+%
+% Single address
+% To use with only one author or several with the same address
+% ---------------
+%\oneauthor
+%   {\firstauthor} {Affiliation1 \\ %
+%     {\tt \href{mailto:author1@smcnetwork.org}{author1@smcnetwork.org}}}
+
+% Two addresses
+% --------------
+\threeauthors
+  {\firstauthor} {Queen Mary, University of London \\ %
+    {\tt \href{mailto:dr.chunyang.song@gmail.com}{dr.chunyang.song@gmail.com}}}
+    {\secondauthor} {Queen Mary, University of London \\ %
+    {\tt \href{mailto:marcus.pearce@qmul.ac.uk}{marcus.pearce@qmul.ac.uk}}}
+  {\thirdauthor} {University of York \\ %
+    {\tt \href{mailto:christopher.harte@york.ac.uk}{christopher.harte@york.ac.uk}}}
+
+% Three addresses
+% --------------
+ % \threeauthors
+ %   {\firstauthor} {Affiliation1 \\ %
+ %     {\tt \href{mailto:author1@smcnetwork.org}{author1@smcnetwork.org}}}
+ %   {\secondauthor} {Affiliation2 \\ %
+ %     {\tt \href{mailto:author2@smcnetwork.org}{author2@smcnetwork.org}}}
+ %   {\thirdauthor} { Affiliation3 \\ %
+ %     {\tt \href{mailto:author3@smcnetwork.org}{author3@smcnetwork.org}}}
+
+
+% ***************************************** the document starts here ***************
+\begin{document}
+%
+\capstartfalse
+\maketitle
+\capstarttrue
+%
+\begin{abstract}
+
+talk about a syncopation toolkit
+
+\end{abstract}
+%
+
+\section{Introduction}\label{sec:introduction}
+
+% \url{http://www.maynoothuniversity.ie/smc15}.
+
+bars
+
+
+\section{MIDI Input}\label{sec:midi}
+
+\cite{Taylor89MusicTheory}
+
+\section{Text Input}\label{sec:textinput}
+
+\begin{table*}
+\small{
+\begin{minted}[frame=single,framesep=10pt]{console}
+<piece>             ::=  [<comment-lines>] <timesig> <line> | <piece> <line>
+
+<comment-lines>     ::= <comment> "\n" | <comment-lines> <comment> "\n"
+
+<line>              ::= [<barlist>] [<comment>] "\n"
+
+<comment>           ::= "#" <comment-text>
+
+<barlist>           ::= <time-info> | [<time-info>] <bar> | <barlist> <bar>
+
+<time-info>         ::= [<timesig>] [<ticks-per-quarter>] [<tempo>] 
+
+<tempo>             ::= "QPM{" <digits> "}"
+
+<ticks-per-quarter> ::= "TPQ{" <digits> "}"
+
+<timesig>           ::= "T{" <digit> "/" <digit> "}"
+
+<bar>               ::= "V{" <velocity-sequence> "}" | "Y{" <note-sequence> "}"
+
+<note-sequence>     ::= <note> | <note-sequence> "," <note>
+
+<note>              ::= "(" <digits> "," <digits> "," <digits> ")"
+
+<velocity-sequence> ::= <decimal> | <velocity-sequence> "," <decimal>
+
+<decimal>           ::= "0" | "1" | "0." <digits>
+
+<digits>            ::= <digit> | <digits> <digit>
+
+<digit>             ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
+\end{minted}
+}
+\caption{Syntax of rhythm text format Backus-Naur Form}
+\label{ta:BNF} 
+\end{table*}
+
+% \section{Page size and format}\label{sec:page_size}
+
+% \begin{equation}
+% E=mc^{2+\delta}.
+% \label{eq:Emc2}
+% \end{equation}
+% Refer to equations like so:
+% As (\ref{eq:Emc2}) shows, 
+% I do not completely trust Special Relativity.
+
+% \subsection{Figures, Tables and Captions}
+% \begin{table}[t]
+%  \begin{center}
+%  \begin{tabular}{|l|l|}
+%   \hline
+%   String value & Numeric value \\
+%   \hline
+%   Hej SMC  & 2015 \\
+%   \hline
+%  \end{tabular}
+% \end{center}
+%  \caption{Table captions should be placed below the table, exactly like this,
+%  but using words different from these.}
+%  \label{tab:example}
+% \end{table}
+
+
+
+% Always refer to tables and figures in the main text, for example:
+% see Fig. \ref{fig:example} and \tabref{tab:example}.
+% Figures and tables may extend across both columns to a maximum width of 17.2cm.
+
+
+
+% \begin{figure}[t]
+% \centering
+% \includegraphics[width=0.6\columnwidth]{figure}
+% \caption{Figure captions should be placed below the figure, 
+% exactly like this.
+% When you come to SMC2015, you will 
+% understand why there is a large hand
+% planted atop Copenhagen.\label{fig:example}}
+% \end{figure}
+
+
+
+
+
+
+
+\section{Conclusions}
+
+some conclusions
+
+%
+\begin{acknowledgments}
+You may acknowledge people, projects, 
+funding agencies, etc. 
+which can be included after the second-level heading
+``Acknowledgments'' (with no numbering).
+\end{acknowledgments} 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%bibliography here
+\bibliography{csong.bib}
+
+\end{document}