# HG changeset patch # User christopherh # Date 1431419882 -3600 # Node ID 730e7e97397311414d893a4ff43ff661ccd0a9c6 # Parent ef891481231e4cf40d0d6b9709d39f28513d4f55 removing SMC paper latex files from main repo diff -r ef891481231e -r 730e7e973973 SMC2015latex/IEEEtran.bst --- a/SMC2015latex/IEEEtran.bst Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2417 +0,0 @@ -%% -%% 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. diff -r ef891481231e -r 730e7e973973 SMC2015latex/R/allmodels.pdf Binary file SMC2015latex/R/allmodels.pdf has changed diff -r ef891481231e -r 730e7e973973 SMC2015latex/R/allmodels.svg --- a/SMC2015latex/R/allmodels.svg Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2905 +0,0 @@ - - - -image/svg+xmlRhythm pattern - - -Syncopation prediction - - --1 - - -0 - - -0 - - -0 - - -0 - - -0 - - -0 - - -13 - - -30 - - -14 - - -4.38 - - -21 - - -8 - - -5.25 - - - - - -WNBD - - -TOB - - -KTH - - -SG - - -TMC - - -PRS - - -LHL - - -6/8 monorhythms - - -4/4 monorhythms - - -4/4 polyrhythms - - - \ No newline at end of file diff -r ef891481231e -r 730e7e973973 SMC2015latex/R/data visual.ods Binary file SMC2015latex/R/data visual.ods has changed diff -r ef891481231e -r 730e7e973973 SMC2015latex/R/modelsprediction.R --- a/SMC2015latex/R/modelsprediction.R Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -library(ggplot2) - -df <- read.csv("newall.csv", header = T) - -t<-theme( - plot.background = element_blank(), - panel.grid.major = element_blank(), - panel.grid.minor = element_blank(), - panel.border = element_blank(), - panel.background = element_blank(), - axis.line = element_line(size=.5), - axis.title.x = element_blank(), - axis.title.y = element_blank(), - #axis.title.x = element_text(family="sans", color="black", size=15, vjust = -0.7), - #axis.title.y = element_text(family="sans", color="black", size=15, vjust = 0.4), - #legend.position = "none" - ) - -xbreaks <- c(1,16,28,64,111) -ybreaks <- c(0,1,1.5,2.5,3,4,4.5,5.5,6,7,7.5,8.5,9,10) - -p <- qplot(Index,Syncopation, data = df, geom = c("point","line"), color = Model)+ scale_x_continuous(breaks=xbreaks) + scale_y_continuous(breaks= ybreaks)+ t - -ggsave(p, file = "predictions.pdf", dpi = 600,useDingbats=FALSE) diff -r ef891481231e -r 730e7e973973 SMC2015latex/R/newall.csv --- a/SMC2015latex/R/newall.csv Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,116 +0,0 @@ -Name,LHL,TMC,PRS,WNBD,TOB,KTH,SG -ab,7,4,15,0,2,3,0.9375 -ac,4,2,10,0,0,3,0.625 -ad,5,4,11,0,2,2,0.90278 -ba,7,4,15,0,2,5,0.9375 -bb,7,6,20,0,4,9,1.875 -bc,4,4,13,0,2,1,0.84722 -bd,5,4,14,0,4,3,1.125 -ca,0,0,0,0,0,0,0 -cb,0,2,9,0,2,2,0.41666 -cc,0,0,2,0,0,0,0 -cd,0,0,7,0,2,0,0 -da,3,2,5,0,2,4,0.52084 -db,3,2,10,0,4,6,0.9375 -dc,0,0,5,0,2,0,0 -dd,0,0,4,0,4,0,0 -abab,13,10,25,2,4,9,2.1875 -adad,10,10,21,1.75,4,6,2.4132 -baba,14,10,25,2.5,4,11,2.1875 -bbbb,14,14,30,3.75,8,21,4.375 -bcbc ,7,10,23,1,4,3,2.30556 -bdbd,10,10,24,1.83,8,9,2.84376 -cbcb,0,4,15,1,4,4,0.97222 -cdcd,0,0,13,0.6666666667,4,0,0 -dada,5,4,9,2,4,8,1.21528 -dbdb,5,4,16,2,8,12,2.1875 -dcdc,0,0,9,0.6666666667,4,0,0 -dddd,0,0,6,1,8,0,0 -ff,7,6,20,5.25,2,null,1.79166 -fg,7,6,20,5.25,0,null,1.6875 -fh,7,6,20,4.5,2,null,1.89584 -fj,5,4,15,2.5,2,null,1.61806 -fk,5,4,15,2.5,0,null,0.75 -fl,5,4,14,2.625,2,null,0.95834 -gf,7,6,20,5.25,4,null,1.875 -gg,7,6,20,5.25,2,null,1.75 -gh,7,6,20,4.5,4,null,1.95834 -gj,5,4,17,2.5,4,null,2.47916 -gk,5,4,17,2.5,2,null,1.61112 -gl,5,4,16,2.625,4,null,1.81944 -hf,7,6,20,4.5,4,null,1.95834 -hg,7,6,20,4.5,2,null,1.85416 -hh,7,6,20,4.125,4,null,2.0625 -hj,5,4,15,2.625,4,null,1.78472 -hk,5,4,15,2.625,2,null,0.91666 -hl,5,4,14,2.7,4,null,1.125 -jf,3,2,11,3,2,null,1.1875 -jg,3,2,9,3,0,null,1.6875 -jh,3,2,11,3,2,null,1.27084 -jj,0,0,12,1.5,2,null,0.66666 -jk,1,0,9,1.5,0,null,0.75 -jl,0,0,10,1.8,2,null,0.33334 -kf,3,2,11,3,4,null,0.75 -kg,3,2,11,3,2,null,1.25 -kh,3,2,11,3,4,null,0.83334 -kj,1,0,11,1.5,4,null,0.75 -kk,1,0,8,1.5,2,null,0.83334 -kl,1,0,9,1.8,4,null,0.41666 -lf,3,2,10,3,4,null,0.85416 -lg,3,2,10,3,2,null,1.35416 -lh,3,2,10,3,4,null,0.9375 -lj,0,0,10,1.8,4,null,0.33334 -lk,1,0,7,1.8,2,null,0.41666 -ll,0,0,4,2,4,null,0 -af,null,null,null,3,0,5,null -ag,null,null,null,4.5,0,5,null -ah,null,null,null,4.5,0,11,null -aj,null,null,null,1.5,0,6,null -ak,null,null,null,2.25,0,6,null -al,null,null,null,3,0,12,null -bf,null,null,null,2.25,0,10,null -bg,null,null,null,2.25,0,7,null -bh,null,null,null,3.5,0,12,null -bj,null,null,null,1.5,0,6,null -bk,null,null,null,1.5,0,7,null -bl,null,null,null,2.625,0,12,null -cf,null,null,null,1.5,0,6,null -cg,null,null,null,3,0,6,null -ch,null,null,null,3,0,12,null -cj,null,null,null,1,0,6,null -ck,null,null,null,2,0,6,null -cl,null,null,null,2.25,0,12,null -df,null,null,null,1,0,10,null -dg,null,null,null,2,0,6,null -dh,null,null,null,2.25,0,12,null -dj,null,null,null,0.75,0,6,null -dk,null,null,null,1.5,0,6,null -dl,null,null,null,1.8,0,12,null -fa,null,null,null,3,0,5,null -fb,null,null,null,3,0,7,null -fc,null,null,null,1.5,0,5,null -fd,null,null,null,1,0,7,null -ga,null,null,null,3,0,5,null -gb,null,null,null,1.5,0,7,null -gc,null,null,null,3,0,5,null -gd,null,null,null,2,0,5,null -ha,null,null,null,4.5,0,11,null -hb,null,null,null,4,0,11,null -hc,null,null,null,3,0,11,null -hd,null,null,null,2.25,0,11,null -ja,null,null,null,1.5,0,6,null -jb,null,null,null,2,0,6,null -jc,null,null,null,1,0,6,null -jd,null,null,null,0.75,0,6,null -ka,null,null,null,1.5,0,6,null -kb,null,null,null,1,0,8,null -kc,null,null,null,2,0,6,null -kd,null,null,null,1.5,0,6,null -la,null,null,null,3,0,12,null -lb,null,null,null,3,0,12,null -lc,null,null,null,2.25,0,12,null -ld,null,null,null,1.8,0,12,null -,,,,,,, -max ,14,14,30,5.25,8,21,4.375 -min,0,0,0,0,0,0,0 -http://www.zingchart.com/gallery/chart/?id=28536,,,,,,, diff -r ef891481231e -r 730e7e973973 SMC2015latex/R/predictions.pdf Binary file SMC2015latex/R/predictions.pdf has changed diff -r ef891481231e -r 730e7e973973 SMC2015latex/csong.bib --- a/SMC2015latex/csong.bib Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1110 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 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 and Christopher Harte and Marcus Pearce}, - title = {SynPy Toolkit and Syncopation Perceptual Dataset}, - year = {2014}, - howpublished = {{{https://code.soundsoftware.ac.uk/projects/syncopation-dataset}}} -} - -@PhdThesis{Song15thesis, -author = {Chunyang Song}, -title = {Syncopation: Unifying Music Theory and Preception}, -school = {School of Electronic Engineering and Computer Science, Queen Mary, University of London}, -year = {2015}, -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%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 diff -r ef891481231e -r 730e7e973973 SMC2015latex/definitions.tex --- a/SMC2015latex/definitions.tex Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,205 +0,0 @@ -%\usepackage{algorithmic} -%\usepackage{algpseudocode} -%\usepackage{epsfig} % This package allows encapsulated postscript -%\usepackage{subfigure} % This package allows subfigures -\usepackage{amsmath} -\usepackage{amssymb} - -\DeclareMathOperator*{\argmax}{arg\,max} -\DeclareMathOperator*{\argmin}{arg\,min} - -\newcommand{\subdiv}[2]{#1\!\!\parallel_#2\,} - -\def\seqmember{q} % member of example sequence -\def\seqnmember{\acute{\seqmember}} % member of second example sequence -\def\seqindex{n} % index -%\def\subseq{M} -\def\seqdiv{\lambda} % sequence division -\def\subseqiter{\theta} %iteration of subsequence elements -\def\seqalpha{\Theta} % number of elements per subsequence -\def\seqiter{a} % index for subsequences in super sequence -\def\seqdef{Q} % example sequence -\def\seqndef{\acute{\seqdef}} % example sequence 2 -%\def\seqdeflength{K} % -\def\demoa{\vartriangle} % example elements -\def\demob{\blacktriangledown} % example elements - -\def\ssep{\,:\,} % set builder separator symbol - -\newcommand{\seqlength}[1]{|#1|} - - -%General symbols -\def\time{t} -\def\timeorigin{\time_\textrm{org}} -\def\timeend{\time_\textrm{end}} -\def\timespan{\time_\textrm{span}} -\def\delt{\Delta \time} -\def\duration{\textrm{d}} % duration of a note -\def\start{\textrm{s}} % onset time of a note -\def\starttime{{\time_{\start}}} -\def\durationtime{{\time_{\duration}}} -\def\velocity{\nu} % velocity/dynamic of a note -\def\dist{d} % distance function -\def\sync{\textsf{\emph{S}}} % total syncopation value for a model (subscripted with model name e.g. \sync_\textrm{LHL} -\def\sequence{Y} % for a sequence of notes -\def\note{y} % a note -\def\sequenceindex{n} % for a sequence of notes -\def\sequencelength{{|\sequence|}}%N - -%\def\metricset{XXX} -\def\metricvector{H} -\def\metricmember{h} -\def\metricweight{w} -\def\metricweightset{W} -\def\metriclevel{L} -\def\levelmax{\metriclevel_\textrm{max}} -\def\metricindex{j} -\def\metrictotal{I} -\def\subdivision{\lambda} -\def\subdivisionset{\Lambda} -\def\allseqs{\mathbb{S}} -\def\repnum{\alpha} - - -\def\conitersum{\bigodot} - -\newcommand{\dsum}[2]{ -\hspace{-0.1cm} -\begin{array}{c} -_{{#1}}% -%\vspace{-0.2cm} -\\ \conitersum% \vspace{-0.2cm} - \\ ^{{#2}}\\ -\end{array} \hspace{-0.2cm} -} - -\def\concatplus{\ast} -\def\concatmul{\otimes} - -%time-span symbols -\def\timespansequence{T} -\def\spanlength{\time_\textrm{span}} % length of a timespan -\def\spanvector{V} % timespan vector -\def\binaryspanvector{B} -\def\binaryspanmember{b} -\def\spanmember{v} % member of a timespan vector -\def\spanindex{m} % index of timespan vector -\def\spandim{{|\spanvector|}}%M % dimension of a timespan vector -\def\binaryspandim{{|\binaryspanvector|}}%B - -\def\true{\textrm{True}} - -\def\dontcare{\textrm{X}} - -%LHL specific -\def\lhl{LHL} -%\def\lhlsumfunc{\varphi} -\def\lhlfunc{\kappa} -\def\lhlnode{\psi} -\def\lhliter{a} -%\def\terminals{\mathcal{S}} % the set of all terminal nodes -\def\NoteNode{\textsf{\small{N}}} % node type N (note) -\def\RestNode{\textsf{\small{R}}} % node type R (rest) -\def\NoteNodeIndex{j} % node type N (note) -\def\RestNodeIndex{i} % node type R (rest) -%\def\lhlnr{f(\lhlnode_\RestNodeIndex)} % local syncopation value in LHL - - -\def\NodeType{\eta} % a node -%\def\NRpairs{P} -\def\lhlindex{a} -\def\lhlseq{\Psi} - - -%Keith specific -\def\keith{KTH} -\def\keithD{c} % keith's D value (highest power of 2 that is less than the note duration) -\def\keithk{k} % keith local syncopation score for a note -\def\keithostart{\mathfrak{o}} -\def\keithoend{\mathfrak{e}} -\def\keithd{g} -\def\keitha{\xi} - -% Pressing specific -\def\pressing{PRS} -\def\prssubdiv{\mathcal{L}} -\def\prstotalfunc{f} -\def\prstypefunc{g} -\def\prssumfunc{q} - - -% metrical -\def\metrical{TMC} %tousaint's metrical complexity -\def\metricity{\varphi} -\def\binaryspanvectorhat{\hat{\binaryspanvector}} -\def\binaryspanmemberhat{\hat{\binaryspanmember}} - -%off-beatness -\def\offbeat{TOB} -\def\tobweight{\varsigma} - - -\def\sioros{SG} -\def\levelsrange{\beta} -\def\previousweight{\gamma} -\def\sgdif{\vartheta} -\def\sgaverage{u} -\def\sgpotential{\phi} -\def\sgscore{s} -%\def\sgx{{1}} -%\def\sgy{{2}} -\def\sgnext{{\rho}} -\def\sgprev{{\varrho}} -\def\sghhat{\ell}%{\hat{\metricweight}}} -\def\sgmhat{{\hat{\spanindex}}} -\def\maxmetricweight{\metricmember_\textrm{max}} - - -% WNBD specific -\def\wnbd{WNBD} -\def\wnbdD{\mathcal{W}} -\def\wnbdT{\mathcal{T}} -\def\strongbeat{\mu} -\def\strongbeatindex{i} - -%Keller-Schubert Autocorrelation -\def\ksa{KSA} - - -\def\pvalue{p} -\def\regression{r} - -% Best-Single Combined -\def\bsingle{\textrm{BSC}} -\def\bsingletwo{\bsingle_2} -\def\bsinglethree{\bsingle_3} - -%Weighted-Multiple Combined -\def\wmultiple{\textrm{WMC}} - -% Tempo-Dependent -\def\tempo{\Upsilon} -\def\td{\textsf{T}} -\def\tdmodel{\textrm{M}} -\def\bigtild{\hspace{-0.12cm}\sim\hspace{-0.12cm}} -\def\littletild{\sim} - - -\def\scalingfunction{F} - -% rhythm categories -\def\binary{4/4 monorhythms} -\def\ternary{6/8 monorhythms} -\def\polyrhythms{polyrhythms} - -\newcommand{\refFig}[1] {Figure~\ref{#1}} -\newcommand{\shortCap}[2] {\caption[#1]{#1 #2}} -%\newcommand{\url}[1] {\texttt{#1}} - -% Quadratic function -\def\parameterA{a} -\def\parameterB{b} -\def\parameterC{c} - -\def\sigp{0.001} \ No newline at end of file diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/allmodels.pdf Binary file SMC2015latex/images/allmodels.pdf has changed diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/allmodels.svg --- a/SMC2015latex/images/allmodels.svg Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2905 +0,0 @@ - - - -image/svg+xmlRhythm pattern - - -Syncopation prediction - - --1 - - -0 - - -0 - - -0 - - -0 - - -0 - - -0 - - -13 - - -30 - - -14 - - -4.38 - - -21 - - -8 - - -5.25 - - - - - -WNBD - - -TOB - - -KTH - - -SG - - -TMC - - -PRS - - -LHL - - -6/8 monorhythms - - -4/4 monorhythms - - -4/4 polyrhythms - - - \ No newline at end of file diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/clave_tpq.pdf Binary file SMC2015latex/images/clave_tpq.pdf has changed diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/clave_tpq.svg --- a/SMC2015latex/images/clave_tpq.svg Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1749 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - (a) TPQ = 8 - (b) TPQ = 4 - (c) TPQ = 2 - - - W - W - W - W - W - W - W - W - W - W - W - W - W - W - W - W - - - - - - - - - - - - - - - - - I - I - - - $ - * - A - A - - - - A - $ - * - - - - - - W - W - W - W - - - W - W - W - W - - - - W - W - W - W - - - W - W - W - W - - - - W - W - W - W - - - W - W - W - W - - - - W - W - W - W - - - W - W - W - W - - - - - W - W - W - W - W - W - W - W - - - - - - - - diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/framework.pdf Binary file SMC2015latex/images/framework.pdf has changed diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/framework.svg --- a/SMC2015latex/images/framework.svg Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,157 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - basic_functions - music_objects - - file reader - model - synpy - Classes: Bar, BarList, NoteSequence, VelocitySequence, TimeSignature, Note - - diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/general3.pdf Binary file SMC2015latex/images/general3.pdf has changed diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/general3.svg --- a/SMC2015latex/images/general3.svg Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1175 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - $ - A - ) - * - - - - - - - t - org - - - s - t - - - t - end - - - - y - - - - 0 - - - - - - y - - - - 1 - - - - - - t - span - - - y - - - - 0 - - - d - t - - y - - - - 0 - - - s - t - - y - - - - 1 - - - d - t - - y - - - - 1 - - - - - - - - diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/lhltree1.pdf Binary file SMC2015latex/images/lhltree1.pdf has changed diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/meter_hierarchy7.pdf Binary file SMC2015latex/images/meter_hierarchy7.pdf has changed diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/meter_hierarchy7.svg --- a/SMC2015latex/images/meter_hierarchy7.svg Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1500 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - root (a) (b) - - - - - - - - strong weak strong weak strong weak - 0 1 2 Metrical Level L - 0 1 2 - - - - root strong strong weak weak - - - - - - - - - strong weak weak weak w 0 w 0 w 0 w 1 w 2 w 1 w 2 w 0 w 0 w 0 w 1 w 2 w 2 w 1 w 2 w 2 Metrical Level L 0 = 1 1 = 2 2 = 3 0 = 1 1 = 2 2 = 2 - - - - - - - diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/offbeatness.pdf Binary file SMC2015latex/images/offbeatness.pdf has changed diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/pressing_example.pdf Binary file SMC2015latex/images/pressing_example.pdf has changed diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/time-span6.pdf Binary file SMC2015latex/images/time-span6.pdf has changed diff -r ef891481231e -r 730e7e973973 SMC2015latex/images/time-span6.svg --- a/SMC2015latex/images/time-span6.svg Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - A - A - A - A - I - I - - - - - Y - - A - ) - A - ) - ) - - - y - I - I - - - Y - - I - I - - - $ - * - A - A - - - - A - $ - * - Y - - - - - - - W - W - W - W - W - W - W - W - W - W - W - W - W - W - W - W - - - - - - - - - ) ) ) ) ) - - - T min - W - W - W - W - W - W - W - W - W - W - W - W - - - K - - - ) ) ) K - - - - - - T min - W - W - W - W - - - - T min - V (a) - - 1, - 0.8, - 1, - 0.8 - min 1, - 0, - 0 - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - (b) - V - - - - min 1, - 0, - 0, - 0, - 0, - 1, - 0, - 1, - 0, - 0, - 1, - 0, - 1, - 0, - 0 - 0, - (c) - V - - - min - - - diff -r ef891481231e -r 730e7e973973 SMC2015latex/section/background.tex --- a/SMC2015latex/section/background.tex Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,167 +0,0 @@ -\section{Background} -\label{sec:background} - -In this section, to introduce the theory behind the toolkit, we briefly present key aspects of its underlying mathematical framework (described in detail in \cite{Song15thesis}) and then give a short overview of each of the implemented syncopation models. %Please refer to for a more detailed treatment of all the related concepts and their mathematical notation. - - - -% \subsection{Rhythm representation} -% \label{sec:background:rhythm} - -\subsection{Time-span} -\label{sec:background:rhythm:timespan} -The term \emph{time-span} has been defined as the period between two points in time, including all time points in between \cite{Lerdahl_Jackendoff83GTTM}. To represent a given rhythm, we must specify the time-span within which it occurs by defining a reference time origin $\timeorigin$ and end time $\timeend$, the total duration $\timespan$ of which is $\timespan = \timeend-\timeorigin$ (Figure~\ref{fig:general}). - -For the SynPy toolkit, we use \emph{ticks} as as the basic time unit as opposed to seconds (in keeping with the representation used for standard MIDI files) where the rate is given in \emph{Ticks Per Quarter-note} (TPQ). The TPQ rate that is chosen is arbitrary so long as the start time and duration of all notes in a rhythm pattern can be represented as integer values. As Figure~\ref{fig:clave} demonstrates, the \emph{Son} clave rhythm pattern could be correctly represented both at 8 and 4 TPQ but not at 2 TPQ because the pattern contains a note that starts on the fourth $16^{\textrm{th}}$-note position of the bar. - -\begin{figure} -\centering -\includegraphics[width=\columnwidth]{images/general3.pdf} -\caption{An example note sequence. Two note events $\note_0$ and $\note_1$ occur in the time-span between time origin $\timeorigin$ and end time $\timeend$. The time-span duration $\timespan$ is three quarter-note periods. The rests at the start and end of the bar are not explicitly represented as objects in their own right here but as periods where no notes sound.} -\label{fig:general} -\end{figure} - - - - -\subsection{Note and velocity sequences} -\label{sec:background:rhythm:note} -A single, \emph{note} event $\note$ occurring in a time-span may be described by the tuple $(\starttime, \durationtime, \velocity)$ as shown in Figure~\ref{fig:general}, where $\starttime$ represents start or \emph{onset} time relative to $\timeorigin$, $\durationtime$ represents note duration in the same units and $\velocity$ represents the note \emph{velocity} (i.e. the dynamic; how loud or accented the event is relative to others), where $\velocity > 0$. - -This allows us to represent an arbitrary rhythm as a \emph{note sequence} $\sequence$, ordered in time -\begin{equation} -\label{eq:def_sequence} -\sequence = \langle\note_0, \note_1, \cdots, \note_{\sequencelength-1}\rangle -\end{equation} - -If TPQ is set to 4, an example note sequence representing the clave rhythm in Figure~\ref{fig:clave} could be: -\begin{equation} -\label{eq:note_sequence} -\sequence = \langle {(0,3,2),(3,1,1),(6,2,2),(10,2,1),(12,4,1)} \rangle, -\end{equation} -the higher velocity values of the first and third notes showing that these notes are accented in this example. - -An alternative representation of a rhythm is the \emph{velocity sequence}. This is a sequence of values representing equally spaced points in a time-span; each value corresponding to the normalised velocity of a note onset if present or zero otherwise. The velocity sequence for the note sequence in Equation~\ref{eq:note_sequence} can therefore be represented as -\begin{equation} -\label{eq:velocity_sequence} -\spanvector = \langle 1,0,0,0.5,0,0,1,0,0,0,0.5,0,0.5,0,0,0 \rangle. -\end{equation} - -It should be noted that the conversion between note sequence and velocity sequence is not commutative, because the note duration information is lost in the conversion. As a result, converting from velocity sequence to note sequence, an assumption must be made that note durations equal to the inter-onset-intervals. Converting the velocity sequence in Equation~\ref{eq:velocity_sequence} back to a note sequence would therefore yield -\begin{equation} -\label{eq:new_note_sequence} -\sequence' = \langle (0,3,2),(3,3,1),(6,4,2),(10,2,1),(12,4,1) \rangle, -\end{equation} -which has different durations for the second and fourth notes compared to the original sequence in Equation~\ref{eq:note_sequence}. - -\begin{figure} -\centering -\includegraphics[width=0.85\columnwidth]{images/clave_tpq.pdf} -\caption{Representation of the \emph{Son} clave rhythm at different Ticks Per Quarter-note (TPQ) resolutions. In (a) and (b) there is a tick for each note of the rhythm pattern thus all the sounded notes are captured (highlighted by the blue circles). However, in (c) where TPQ is 2, the second note of the pattern cannot be represented; the minimum resolution in this case is 4 TPQ.} -\label{fig:clave} -\end{figure} - - -\subsection{Metrical structure and time-signature} -\label{sec:background:rhythm:meter} - -\begin{figure}[t] -\centering -\includegraphics[width=\columnwidth]{images/meter_hierarchy7.pdf} -\caption{Metrical hierarchies for different time-signatures: (a) A simple-duple hierarchy dividing the bar into two groups of two (as with a 4/4 time-signature); (b) A compound-duple hierarchy dividing a bar into two beats, each of which is subdivided by three (e.g. 6/8 time-signature). %Reading the weights from left to right in any level $\metriclevel$ gives the elements in sequence $\metricvector_\metriclevel$ -} -\label{fig:meter-hierarchy} -\end{figure} - - - -Isochronous-meter is formed with a multi-level hierarchical metrical structure~\cite{Lerdahl_Jackendoff83GTTM, London04Meter}. The metrical hierarchy may be described with a \emph{subdivision sequence} $\langle \subdivision_0, \subdivision_1, ... ,\subdivision_{\levelmax}\rangle$ such that in each metrical level $\metriclevel$, the value $\subdivision_\metriclevel$ specifies how nodes in the level above (i.e. $\metriclevel-1$) should be split to produce the current level (see Figure~\ref{fig:meter-hierarchy}). Any time-signature can be described by specifying a subdivision sequence and the metrical level that represents the beat. - -Events at different metrical positions vary in perceptual salience or \emph{metrical weight}~\cite{Palmer_Krumhansl90}. These weights may be represented as a \emph{weight sequence} $\metricweightset = \langle \metricweight_0, \metricweight_1, ... \metricweight_{\levelmax}\rangle$. The prevailing hypothesis for the assignment of weights in the metrical hierarchy is that a time point that exists in both the current metrical level and the level above is said to have a \emph{strong} weight compared to time points that are not also present in the level above~\cite{Lerdahl_Jackendoff83GTTM}. The hierarchy of weights and subdivisions forms a key component in the calculation of many syncopation models. The choice of values for the weights in $\metricweightset$ can vary between different models but the assignment of weights to nodes at a given level in the hierarchy, as described in~\cite{Lerdahl_Jackendoff83GTTM}, is common to all. - -\subsection{Syncopation models} -\label{sec:background:models} - -In this section we briefly review each implemented syncopation model, discussing their general hypothesis and giving a flavour of their mechanism. It is not possible to go into the full details of each implementation here but a thorough review of the models is given in chapter 3 of \cite{Song15thesis}. To help compare the capabilities of different models, we also give an overview of the musical features each one captures in Table~\ref{ta:capabilities}. - -\subsubsection{Longuet-Higgins and Lee 1984 (\lhl)} -\label{sec:background:models:lhl} - -Longuet-Higgins and Lee's model \cite{LHL84} decomposes rhythm patterns into a tree structure as described in Section~\ref{sec:background:rhythm:meter} assigning metrical weights $\metricweight_\metriclevel = -\metriclevel$ %for all $\metricweight_\metriclevel \in \metricweightset$ -i.e. $\metricweightset = \langle 0,-1,-2, ... \rangle$. -The hypothesis of this model is that a syncopation occurs when a rest ($\RestNode$) in one metrical position follows a note ($\NoteNode$) in a weaker position. Where such a note-rest pair occurs, the difference in their metrical weights is taken as a local syncopation score. Summing the local scores produces the syncopation prediction for the whole rhythm sequence. - -\subsubsection{Pressing 1997 (\pressing)} -\label{sec:background:models:prs} -Pressing's cognitive complexity model~\cite{Pressing97,Pressing93} specifies six prototype velocity sequences and ranks them in terms of \emph{cognitive cost}. For example, the lowest cost is the \emph{null} prototype for rhythms that contain either a single rest or note; a higher cost is given to the \emph{filled} prototype that has a note in every position of the sequence e.g. -$ -\langle 1,1,1,1 \rangle \nonumber -$. -The highest cost is given to the \emph{syncopated} prototype that has a rest in the first (i.e.\ strongest) metrical position e.g. -$ -\langle 0,1,1,1 \rangle \nonumber -$. -The model analyses the cost for the whole rhythm-pattern and for each of its sub-sequences at every metrical level determined by the subdivision factor. The final output is a sum of the costs per level weighted by the number of sub-sequences in each. - -\subsubsection{Toussaint 2002 `Metric Complexity' (\metrical)} -\label{sec:background:models:tmc} -Toussaint's metric complexity measure \cite{Toussaint02Metrical} defines the metrical weights as $\metricweight_\metriclevel = \metriclevel_{\textrm{max}} - \metriclevel +1$, thus stronger metrical positions are associated with higher weights and the weakest position will be $\metricweight_{\metriclevel_{\textrm{max}}}=1$. The hypothesis of the model is that the level of syncopation is the difference between the metrical simplicity of the given rhythm (i.e. the sum of the metrical weights for each note) and the maximum possible metrical simplicity for a rhythm containing the same number of notes. - -\begin{table} -\renewcommand{\arraystretch}{1.2} -\centering -{\footnotesize -\begin{tabular}{lccccccc} -%\hline -Property & \lhl & \pressing & \metrical & \sioros & \keith & \offbeat & \wnbd \\ -\hline -Onset & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark \\ -Duration & & & & & \checkmark & & \checkmark \\ -Dynamics & & & & \checkmark & & & \\ -Mono & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark \\ -Poly & & & & & \checkmark & \checkmark & \checkmark \\ -Duple & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark & \checkmark \\ -Triple & \checkmark & \checkmark & \checkmark & \checkmark & & \checkmark & \checkmark \\ -\hline -\end{tabular} -} -\caption{Musical properties captured by the different syncopation models. All models use note onsets, but only two use note duration rather than inter-onset intervals. Only SG takes dynamics (i.e. variation in note velocity) into account. All models handle monorhythms but the four models based on hierarchical decomposition of rhythm patterns are unable to handle polyrhythmic patterns. All models can process both duple and triple meters with the exception of KTH that can only process duple.} -\label{ta:capabilities} -\end{table} - -\subsubsection{Sioros and Guedes 2011 (\sioros)} -\label{sec:background:models:sg} -Sioros and Guedes~\cite{Sioros11,Sioros12} also use metrical hierarchy to determine syncopation. The main hypotheses are that humans try to minimise the syncopation of a particular note relative to its neighbours in each level of the metrical hierarchy, and that syncopations at the beat level are more salient than those that occur in higher or lower metrical levels. - -The metrical weights for this model are $\metricweight_\metriclevel = \metriclevel$ i.e. $\metricweightset = \langle 0, 1, 2, ... \rangle$. %for all $\metricweight_\metriclevel \in \metricweightset$. -The syncopation for a note is a function of its velocity, its position in the hierarchy and the weights of the previous and next notes in the rhythm sequence. - -\subsubsection{Keith 1991 (\keith)} -\label{sec:background:models:kth} -Keith's model \cite{Keith91} defines two types of syncopated events: a \emph{hesitation}, where a note ends off the beat (carrying a weight of 1) and \emph{anticipation}, where a note begins off the beat (with a weight of 2). Where a note exhibits both a hesitation and an anticipation, a \emph{syncopation} is said to occur and the respective weights are summed to give a total of 3. The start and end time is considered off-beat if the they are not divisible by the nearest power of two less than the note duration. - -\subsubsection{Toussaint 2005 `Off-Beatness' (\offbeat)} - -\label{sec:background:models:tob} - -The off-beatness measure~\cite{Toussaint05Offbeatness} is a geometric model that treats the time-span of a rhythm sequence as a ${\timespansequence}$-unit cycle. The hypothesis, as applied to syncopation, is that syncopated events are those that occur in `off-beat' positions in the cycle; the definition of \emph{off-beatness} in this case being any position that does not fall on a regular subdivision of the cycle length ${\timespansequence}$, thus the model is unable to measure cycles where ${\timespansequence}$ is 1 or prime. - -\subsubsection{G\'omez 2005 `Weighted Note-to-Beat Distance' (WNBD)} - -\label{sec:background:models:wnbd} - -The WNBD model of G\'omez et al.~\cite{Gomez05} defines note events that start in between beats in the notated meter to be `off-beat' thus leading to syncopation. The syncopation value for a note is inversely related to its distance from the nearest beat and is assigned more weight if the note crosses over the following beat. - - - - - -%All the models use temporal features (i.e. onset time point and/or note duration) in the modelling. The SG model also process dynamic information of musical events (i.e. note velocity). We use the term \emph{monorhythm} to refer to any rhythm-pattern that is not polyrhythmic. All the models can measure syncopation of monorhythms, but only KTH, TOB and WNBD models can deal with polyrhythms. Finally, all the models can deal with rhythms (notated) in duple meter, but all models except KTH can cope with rhythms in a triple meter. - - - - - - - - diff -r ef891481231e -r 730e7e973973 SMC2015latex/section/conclusion.tex --- a/SMC2015latex/section/conclusion.tex Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -\section{Conclusion} -\label{sec:conclusion} -In this paper we have described SynPy, an open-source Python toolkit for syncopation calculation. We have introduced the theoretical concepts underpinning the toolkit and briefly reviewed the hypothesis and mechanism of the seven implemented models. The architecture of the toolkit has been introduced in Section~\ref{sec:framework} and an example of command line usage shown demonstrating ease of use. We have presented the syncopation predictions calculated by SynPy for the dataset from~\cite{Song15thesis}, providing an overall visualisation of the prediction ranges and capabilities of each individual model. - -The SynPy toolkit possesses a number of merits, including the ability to process arbitrary rhythm patterns, convenient input from different sources of music data including standard MIDI files and text annotations, and output to XML and JSON files for further data analysis. It will be a valuable tool for many researchers in the computational music analysis community. It will be particularly useful to those who study syncopation models because it enables a level of comparison and testing for new models that was hitherto unavailable. The plugin architecture of the toolkit allows new models to be added easily in the future and open-source hosting in a repository on the soundsoftware.ac.uk servers ensures long term sustainability of the project. \ No newline at end of file diff -r ef891481231e -r 730e7e973973 SMC2015latex/section/dataset.tex --- a/SMC2015latex/section/dataset.tex Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -% big figure has moved to the framework section so it appears on teh penultimate page in the PDF. - -\section{Syncopation Dataset} -\label{sec:data} - -The major outcome of the SynPy toolkit is to provide prediction of the level of syncopation of any rhythm pattern that can be measured by a given model. As a demonstration, we apply all seven syncopation models on the rhythms patterns used as stimuli for the syncopation perceptual dataset from~\cite{Song15thesis, Song13}. This dataset includes 27 monorhythms in 4/4 meter, 36 monorhythms in 6/8 and 48 polyrhythms in 4/4; altogether forming a set of 111 rhythm patterns. - -Figure~\ref{fig:modelpredictions} plots the syncopation predictions of individual model for each rhythm. It presents the different ranges of prediction values for each model and shows their capabilities in terms of rhythm categories (refer to Table~\ref{ta:capabilities}). diff -r ef891481231e -r 730e7e973973 SMC2015latex/section/framework.tex --- a/SMC2015latex/section/framework.tex Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,121 +0,0 @@ -\section{Framework} -\label{sec:framework} - -\begin{figure}[t] -\centering -\includegraphics[width=0.9\columnwidth]{images/framework.pdf} -\caption{Module hierarchy in the SynPy toolkit: the top-level module provides a simple interface for the user to test different syncopation models. Musical constructs such as bars, velocity and note sequences, notes and time-signatures are defined in the `music objects' module; support for common procedures such as sequence concatenation and subdivision is provided in `basic functions'. Models and file reading components can be chosen as required by the user.\label{fig:framework}} -\end{figure} - -The architecture of the toolkit is shown in Figure~\ref{fig:framework}. Syncopation values can be calculated for each bar in a given source of rhythm data along with selected statistics over all bars; the user specifies which model to use and supplies any special parameters that are required. Sources of rhythm data can be a bar object or a list of bars (detailed below in Section~\ref{sec:musicobjects}) or, alternatively, the name of a file containing music data. Where a model is unable to calculate a value for a given rhythm pattern, a `None' value is recorded for that bar and the indices of unmeasured bars reported in the output. If no user parameters are specified, the default parameters specified in the literature for each model are used. Output can optionally be saved directly to XML or JSON files. An example of usage in the Python interpreter is shown in Figure~\ref{ta:example}. - -\begin{figure} -\footnotesize{ -\begin{minted}[frame=single,framesep=10pt]{python} ->>>from synpy import * ->>>import synpy.PRS as model ->>>calculate_syncopation(model, "clave.rhy", - outfile="clave.xml") -{'bars_with_valid_output': [0, 1], - 'mean_syncopation_per_bar': 8.625, - 'model_name': 'PRS', - 'number_of_bars': 2, - 'number_of_bars_not_measured': 0, - 'source': 'clave.rhy', - 'summed_syncopation': 17.25, - 'syncopation_by_bar': [8.625, 8.625]} -\end{minted} -} -\caption{To use the toolkit, the top level \code{synpy} module is imported along with a model (in this example Pressing \cite{Pressing97}). Calling \code{calculate\_syncopation()} then gives the syncopation results as shown, writing output to an XML file. Output file names and extra parameters for a model are added as optional arguments as required by the user. -\label{ta:example} } -\end{figure} - -\subsection{Music objects} -\label{sec:musicobjects} -The `music objects' module provides classes to represent the musical constructs described in Section~\ref{sec:background}. A \code{Bar} object holds the rhythm information for a single bar of music along with its associated time-signature and optional tempo and TPQ values (see Section~\ref{sec:background:rhythm:timespan}). \code{Bar} objects may be initialised with either a note sequence or velocity sequence and can be chained together in the form of a doubly-linked \code{BarList} allowing syncopation models to access next and previous bars where appropriate (several models \cite{LHL84,Keith91,Pressing97,Gomez05} require knowledge of the contents of previous and/or next bars in order to calculate the syncopation of the current bar). The note sequence and velocity sequence classes are direct implementations of the sequences described in Section~\ref{sec:background:rhythm:note}. Common low-level procedures such as sequence concatenation and subdivision are provided in `basic functions'. - -\subsection{File Input} -\label{sec:fileinput} -Two file reader modules are currently provided: one for for reading plain text rhythm annotation (\code{.rhy}) files and one for reading standard MIDI files (\code{.mid}). These modules open their respective file types and return a \code{BarList} object ready for processing. - -\begin{figure} -\footnotesize{ -\begin{minted}[frame=single,framesep=10pt]{python} -T{4/4} # time-signature -TPQ{4} # ticks per quarternote -# Bar 1 -Y{(0,3,2),(3,1,1),(6,2,2),(10,2,1),(12,4,1)} -# Bar 2 -V{1,0,0,0.5,0,0,1,0,0,0,0.5,0,0.5,0,0,0} -\end{minted} -} -\caption{Example rhythm annotation file \code{clave.rhy} containing two bars of the Son Clave rhythm as discussed Section~\ref{sec:background}. The first bar is expressed as a note sequence with resolution of four ticks per quarter-note; the second is the same rhythm expressed as a velocity sequence.} -\label{ta:clave} -\end{figure} -Our \code{.rhy} annotation format is a light text syntax for describing rhythm patterns directly in terms of note and velocity sequences (see Figure~\ref{ta:clave}). The full syntax specification is given in Backus Naur Form on the toolkit repository \cite{Song14URL}. - -The MIDI file reader can open type 0 and type 1 standard MIDI files and select a given track to read rhythm from. Notes with zero delta time between them (i.e. chords) are treated as the same event for the purposes of creating note sequences from the MIDI stream. Time-signature and tempo events encoded in the MIDI stream are assumed to correctly describe those parameters of the recorded music so it is recommended that the user uses correctly annotated and quantised MIDI files. - -\begin{figure*}[t] -\centering -\includegraphics[width=0.85\textwidth]{images/allmodels.pdf} -\caption{Syncopation predictions of the seven models in the toolkit for the syncopation dataset from~\cite{Song15thesis}. The range of prediction values across all rhythm patterns is given for each model. Within each rhythm category, the rhythm patterns are arranged by tatum-rate (i.e. quarter-note rate then eighth-note rate) then in alphabetical order (the data set naming convention uses letters a-l to represent short rhythm components that make up longer patterns). Gaps in model output occur where a particular model is unable to process the specific rhythm category i.e. LHL, PRS, TMC, SG cannot process polyrhythms and KTH can only measure rhythms in duple meters.} -\label{fig:modelpredictions} -\end{figure*} - -\subsection{Plugin architecture} -The system architecture has been designed to allow new models to be added easily. Models have a common interface, exposing a single function that will return the syncopation value for a bar of music. Optional parameters may be supplied as a Python dictionary if the user wishes to specify settings different from the those given in the literature for a specific model. - - - - - - - -% \section{MIDI Input}\label{sec:midi} - -% \cite{Taylor89MusicTheory} - -% \section{Text Input}\label{sec:textinput} - -% \begin{table*} -% \small{ -% \begin{minted}[frame=single,framesep=10pt]{console} -% ::= [] | - -% ::= "\n" | "\n" - -% ::= [] [] "\n" - -% ::= "#" - -% ::= | [] | - -% ::= [] [] [] - -% ::= "QPM{" "}" - -% ::= "TPQ{" "}" - -% ::= "T{" "/" "}" - -% ::= "V{" "}" | "Y{" "}" - -% ::= | "," - -% ::= "(" "," "," ")" - -% ::= | "," - -% ::= "0" | "1" | "0." - -% ::= | - -% ::= "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*} - - diff -r ef891481231e -r 730e7e973973 SMC2015latex/section/introduction.tex --- a/SMC2015latex/section/introduction.tex Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -\section{Introduction} -\label{sec:introduction} - -Syncopation is a fundamental feature of rhythm in music and a crucial aspect of musical character in many styles and cultures. Having comprehensive models to capture syncopation perception allows us to better understand the broader aspects of music perception. Over the last thirty years, several modelling approaches for syncopation have been developed and widely used in studies in multiple disciplines~\cite{LHL84,Pressing97,Toussaint02Metrical,Sioros11,Keith91,Toussaint05Offbeatness,Gomez05,Keller_Schubert11}. To date, formal investigations on the links between syncopation and music perception subjects such as meter induction~\cite{Povel_Essens85, Fitch_Rosenfeld07}, emotion~\cite{Keller_Schubert11}, groove~\cite{Madison13, Witek14} and neurophysiological responses~\cite{Winkler09, Vuust11}, have largely relied on quantitative measures of syncopation. However, until now there has not been a comprehensive reference implementation of the different algorithms available to facilitate quantifying syncopation. - -In~\cite{Song15thesis}, Song provides a consolidated mathematical framework and in-depth review of seven widely used syncopation models: Longuet-Higgins and Lee~\cite{LHL84}, Pressing~\cite{Pressing97,Pressing93}, Toussaint's Metric Complexity~\cite{Toussaint02Metrical}, Sioros and Guedes \cite{Sioros11,Sioros12}, Keith~\cite{Keith91}, Toussaint's off-beatness measure~\cite{Toussaint05Offbeatness} and G\'omez et al.'s Weighted Note-to-Beat Distance~\cite{Gomez05}. With the exception of Sioros and Guedes' model, code for which was open-sourced as part of the Kinetic project~\cite{Sioros11URL}, reference code for the models has not previously been publically available. -Based on this mathematical framework, the SynPy toolkit (available from the repository at~\cite{Song14URL}) provides implementations of these syncopation models in the Python programming language. - -The toolkit not only provides the first open-source implementation of these models in a unified framework but also allows convenient data input from standard MIDI files and text-based rhythm annotations. Multiple bars of music can be processed, reporting syncopation values bar by bar as well as descriptive statistics across a whole piece. Strengths of the toolkit also include easy output to XML and JSON files plus the ability to accept arbitrary rhythm patterns as well as time-signature and tempo changes. In addition, the toolkit defines a common interface for syncopation models, providing a simple plugin architecture for future extensibility. - -In Section~\ref{sec:background} we introduce mathematical representations of a few key rhythmic concepts that form the basis of the toolkit then briefly review seven syncopation models that have been implemented. In Section~\ref{sec:framework} we outline the architecture of SynPy, describing input sources, options and usage. diff -r ef891481231e -r 730e7e973973 SMC2015latex/smc2015.sty --- a/SMC2015latex/smc2015.sty Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,258 +0,0 @@ -% 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 diff -r ef891481231e -r 730e7e973973 SMC2015latex/syncopation_toolkit.tex --- a/SMC2015latex/syncopation_toolkit.tex Tue May 12 08:53:12 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,224 +0,0 @@ -% ----------------------------------------------- -% 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} - -\newcommand{\code}[1]{{\small\texttt{#1}}} - -\input{definitions} - -%%%%%%%%%%%%%%%%%%%%%%%% 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} - -In this paper we present SynPy, an open-source software toolkit for quantifying syncopation. It is flexible yet easy to use, providing the first comprehensive set of implementations for seven widely known syncopation models using a simple plugin architecture for extensibility. SynPy is able to process multiple bars of music containing arbitrary rhythm patterns and can accept time-signature and tempo changes within a piece. The toolkit can take input from various sources including text annotations and standard MIDI files. Results can also be output to XML and JSON file formats. - -This toolkit will be valuable to the computational music analysis community, meeting the needs of a broad range of studies where a quantitative measure of syncopation is required. It facilitates a new degree of comparison for existing syncopation models and also provides a convenient platform for the development and testing of new models. -\end{abstract} -% - -\input{section/introduction} - -\input{section/background} - -\input{section/framework} - -\input{section/dataset} - -\input{section/conclusion} - - - -% \url{http://www.maynoothuniversity.ie/smc15}. - - - - - - - - - - -% \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} - - - -% -\begin{acknowledgments} -This work was funded by the UK Engineering and Physical Sciences Research Council as part of the Soundsoftware Project based in the Centre for Digital Music at Queen Mary, University of London. -\end{acknowledgments} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%bibliography here -\bibliography{csong.bib} - -\end{document}