diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-10 14:38:11 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-10 14:38:11 +0000 |
commit | 769bde60702f46a4bceac77473a488c625718fca (patch) | |
tree | fa648964c617da769c06931b87282daa3cd13d2e /libs/vamp-sdk | |
parent | 051d64131f583043d7b322d5aba600a45b0372ea (diff) |
cleaned up vamp-sdk and added SConscript
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2868 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/vamp-sdk')
-rw-r--r-- | libs/vamp-sdk/Doxyfile | 1235 | ||||
-rw-r--r-- | libs/vamp-sdk/Makefile | 249 | ||||
-rw-r--r-- | libs/vamp-sdk/SConscript | 39 | ||||
-rw-r--r-- | libs/vamp-sdk/examples/AmplitudeFollower.cpp | 247 | ||||
-rw-r--r-- | libs/vamp-sdk/examples/AmplitudeFollower.h | 84 | ||||
-rw-r--r-- | libs/vamp-sdk/examples/PercussionOnsetDetector.cpp | 285 | ||||
-rw-r--r-- | libs/vamp-sdk/examples/PercussionOnsetDetector.h | 90 | ||||
-rw-r--r-- | libs/vamp-sdk/examples/SpectralCentroid.cpp | 188 | ||||
-rw-r--r-- | libs/vamp-sdk/examples/SpectralCentroid.h | 78 | ||||
-rw-r--r-- | libs/vamp-sdk/examples/ZeroCrossing.cpp | 194 | ||||
-rw-r--r-- | libs/vamp-sdk/examples/ZeroCrossing.h | 78 | ||||
-rw-r--r-- | libs/vamp-sdk/examples/plugins.cpp | 63 | ||||
-rw-r--r-- | libs/vamp-sdk/examples/vamp-example-plugins.cat | 5 | ||||
-rw-r--r-- | libs/vamp-sdk/host/system.h | 75 | ||||
-rw-r--r-- | libs/vamp-sdk/host/vamp-simple-host.cpp | 492 |
15 files changed, 39 insertions, 3363 deletions
diff --git a/libs/vamp-sdk/Doxyfile b/libs/vamp-sdk/Doxyfile deleted file mode 100644 index e8dfca34c8..0000000000 --- a/libs/vamp-sdk/Doxyfile +++ /dev/null @@ -1,1235 +0,0 @@ -# Doxyfile 1.4.4 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = Vamp Plugin SDK - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = 1.1 - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = doc - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, -# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, -# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, -# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, -# Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# This tag can be used to specify the encoding used in the generated output. -# The encoding is not always determined by the language that is chosen, -# but also whether or not the output is meant for Windows or non-Windows users. -# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES -# forces the Windows encoding (this is the default for the Windows binary), -# whereas setting the tag to NO uses a Unix-style encoding (the default for -# all platforms other than Windows). - -USE_WINDOWS_ENCODING = NO - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = YES - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explicit @brief command for a brief description. - -JAVADOC_AUTOBRIEF = YES - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = YES - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources -# only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = NO - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is YES. - -SHOW_DIRECTORIES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command <command> <input-file>, where <command> is the value of -# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file -# provided by doxygen. Whatever the progam writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = YES - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = docs/doxygen/warning.log - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = vamp vamp-sdk vamp-sdk/hostext examples host - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm - -FILE_PATTERNS = *.h \ - *.C \ - *.cpp \ - *.cc \ - doc-overview - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = qrc_*.cpp \ - moc_*.cpp \ - *.moc.cpp \ - *_skel.cpp - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command <filter> <input-file>, where <filter> -# is the value of the INPUT_FILTER tag, and <input-file> is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -#USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 3 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = YES - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_PREDEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = NO - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = HAVE_FFTW3F HAVE_FISHSOUND HAVE_JACK HAVE_LIBLO HAVE_LRDF HAVE_MAD HAVE_OGGZ HAVE_PORTAUDIO HAVE_SAMPLERATE HAVE_SNDFILE HAVE_VAMP - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = NO - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = NO - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that a graph may be further truncated if the graph's -# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH -# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), -# the graph is not depth-constrained. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = YES - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO diff --git a/libs/vamp-sdk/Makefile b/libs/vamp-sdk/Makefile deleted file mode 100644 index 5253ff4e21..0000000000 --- a/libs/vamp-sdk/Makefile +++ /dev/null @@ -1,249 +0,0 @@ - -# Makefile for the Vamp plugin SDK. This builds the SDK objects, -# libraries, example plugins, and the test host. Please adjust to -# suit your operating system requirements. - -APIDIR = vamp -SDKDIR = vamp-sdk -HOSTEXTDIR = vamp-sdk/hostext -EXAMPLEDIR = examples -HOSTDIR = host - -### -### Start of user-serviceable parts -### - -# Default build target (or use "make <target>" to select one). -# Targets are: -# all -- build everything -# sdk -- build all the Vamp SDK libraries for plugins and hosts -# sdkstatic -- build only the static versions of the SDK libraries -# plugins -- build the example plugins (and the SDK if required) -# host -- build the simple Vamp plugin host (and the SDK if required) -# test -- build the host and example plugins, and run a quick test -# clean -- remove binary targets -# distclean -- remove all targets -# -default: all - -# Compile flags -# -CXXFLAGS := $(CXXFLAGS) -O2 -Wall -I. -fpic - -# ar, ranlib -# -AR := ar -RANLIB := ranlib - -# Libraries required for the plugins. -# (Note that it is desirable to statically link libstdc++ if possible, -# because our plugin exposes only a C API so there are no boundary -# compatibility problems.) -# -PLUGIN_LIBS = $(SDKDIR)/libvamp-sdk.a -#PLUGIN_LIBS = $(SDKDIR)/libvamp-sdk.a $(shell g++ -print-file-name=libstdc++.a) - -# File extension for a dynamically loadable object -# -PLUGIN_EXT = .so -#PLUGIN_EXT = .dll -#PLUGIN_EXT = .dylib - -# Libraries required for the host. -# -HOST_LIBS = $(SDKDIR)/libvamp-hostsdk.a -lsndfile -ldl - -# Locations for "make install". This will need quite a bit of -# editing for non-Linux platforms. Of course you don't necessarily -# have to use "make install". -# -INSTALL_PREFIX := /usr -INSTALL_API_HEADERS := $(INSTALL_PREFIX)/include/vamp -INSTALL_SDK_HEADERS := $(INSTALL_PREFIX)/include/vamp-sdk -INSTALL_HOSTEXT_HEADERS := $(INSTALL_PREFIX)/include/vamp-sdk/hostext -INSTALL_SDK_LIBS := $(INSTALL_PREFIX)/lib - -INSTALL_SDK_LIBNAME := libvamp-sdk.so.1.1.0 -INSTALL_SDK_LINK_ABI := libvamp-sdk.so.1 -INSTALL_SDK_LINK_DEV := libvamp-sdk.so -INSTALL_SDK_STATIC := libvamp-sdk.a -INSTALL_SDK_LA := libvamp-sdk.la - -INSTALL_HOSTSDK_LIBNAME := libvamp-hostsdk.so.2.0.0 -INSTALL_HOSTSDK_LINK_ABI := libvamp-hostsdk.so.2 -INSTALL_HOSTSDK_LINK_DEV := libvamp-hostsdk.so -INSTALL_HOSTSDK_STATIC := libvamp-hostsdk.a -INSTALL_HOSTSDK_LA := libvamp-hostsdk.la - -INSTALL_PKGCONFIG := $(INSTALL_PREFIX)/lib/pkgconfig - -# Flags required to tell the compiler to create a dynamically loadable object -# -DYNAMIC_LDFLAGS = -shared -Wl,-Bsymbolic -PLUGIN_LDFLAGS = $(DYNAMIC_LDFLAGS) -SDK_DYNAMIC_LDFLAGS = $(DYNAMIC_LDFLAGS) -Wl,-soname=$(INSTALL_SDK_LIBNAME) -HOSTSDK_DYNAMIC_LDFLAGS = $(DYNAMIC_LDFLAGS) -Wl,-soname=$(INSTALL_HOSTSDK_LIBNAME) - -## For OS/X with g++: -#PLUGIN_LDFLAGS = -dynamiclib - - -### End of user-serviceable parts - - -API_HEADERS = \ - $(APIDIR)/vamp.h - -SDK_HEADERS = \ - $(SDKDIR)/Plugin.h \ - $(SDKDIR)/PluginAdapter.h \ - $(SDKDIR)/PluginBase.h \ - $(SDKDIR)/RealTime.h - -HOSTSDK_HEADERS = \ - $(SDKDIR)/Plugin.h \ - $(SDKDIR)/PluginBase.h \ - $(SDKDIR)/PluginHostAdapter.h \ - $(SDKDIR)/RealTime.h - -HOSTEXT_HEADERS = \ - $(HOSTEXTDIR)/PluginChannelAdapter.h \ - $(HOSTEXTDIR)/PluginInputDomainAdapter.h \ - $(HOSTEXTDIR)/PluginLoader.h \ - $(HOSTEXTDIR)/PluginWrapper.h - -SDK_OBJECTS = \ - $(SDKDIR)/PluginAdapter.o \ - $(SDKDIR)/RealTime.o - -HOSTSDK_OBJECTS = \ - $(SDKDIR)/PluginHostAdapter.o \ - $(HOSTEXTDIR)/PluginChannelAdapter.o \ - $(HOSTEXTDIR)/PluginInputDomainAdapter.o \ - $(HOSTEXTDIR)/PluginLoader.o \ - $(HOSTEXTDIR)/PluginWrapper.o \ - $(SDKDIR)/RealTime.o - -SDK_STATIC = \ - $(SDKDIR)/libvamp-sdk.a - -HOSTSDK_STATIC = \ - $(SDKDIR)/libvamp-hostsdk.a - -SDK_DYNAMIC = \ - $(SDKDIR)/libvamp-sdk.so - -HOSTSDK_DYNAMIC = \ - $(SDKDIR)/libvamp-hostsdk.so - -SDK_LA = \ - $(SDKDIR)/libvamp-sdk.la - -HOSTSDK_LA = \ - $(SDKDIR)/libvamp-hostsdk.la - -PLUGIN_HEADERS = \ - $(EXAMPLEDIR)/SpectralCentroid.h \ - $(EXAMPLEDIR)/PercussionOnsetDetector.h \ - $(EXAMPLEDIR)/AmplitudeFollower.h \ - $(EXAMPLEDIR)/ZeroCrossing.h - -PLUGIN_OBJECTS = \ - $(EXAMPLEDIR)/SpectralCentroid.o \ - $(EXAMPLEDIR)/PercussionOnsetDetector.o \ - $(EXAMPLEDIR)/AmplitudeFollower.o \ - $(EXAMPLEDIR)/ZeroCrossing.o \ - $(EXAMPLEDIR)/plugins.o - -PLUGIN_TARGET = \ - $(EXAMPLEDIR)/vamp-example-plugins$(PLUGIN_EXT) - -HOST_HEADERS = \ - $(HOSTDIR)/system.h - -HOST_OBJECTS = \ - $(HOSTDIR)/vamp-simple-host.o - -HOST_TARGET = \ - $(HOSTDIR)/vamp-simple-host - -sdk: sdkstatic $(SDK_DYNAMIC) $(HOSTSDK_DYNAMIC) - -sdkstatic: $(SDK_STATIC) $(HOSTSDK_STATIC) - $(RANLIB) $(SDK_STATIC) - $(RANLIB) $(HOSTSDK_STATIC) - -plugins: $(PLUGIN_TARGET) - -host: $(HOST_TARGET) - -all: sdk plugins host test - -$(SDK_STATIC): $(SDK_OBJECTS) $(API_HEADERS) $(SDK_HEADERS) - $(AR) r $@ $(SDK_OBJECTS) - -$(HOSTSDK_STATIC): $(HOSTSDK_OBJECTS) $(API_HEADERS) $(HOSTSDK_HEADERS) $(HOSTEXT_HEADERS) - $(AR) r $@ $(HOSTSDK_OBJECTS) - -$(SDK_DYNAMIC): $(SDK_OBJECTS) $(API_HEADERS) $(SDK_HEADERS) - $(CXX) $(LDFLAGS) $(SDK_DYNAMIC_LDFLAGS) -o $@ $(SDK_OBJECTS) - -$(HOSTSDK_DYNAMIC): $(HOSTSDK_OBJECTS) $(API_HEADERS) $(HOSTSDK_HEADERS) $(HOSTEXT_HEADERS) - $(CXX) $(LDFLAGS) $(HOSTSDK_DYNAMIC_LDFLAGS) -o $@ $(HOSTSDK_OBJECTS) - -$(PLUGIN_TARGET): $(PLUGIN_OBJECTS) $(SDK_STATIC) $(PLUGIN_HEADERS) - $(CXX) $(LDFLAGS) $(PLUGIN_LDFLAGS) -o $@ $(PLUGIN_OBJECTS) $(PLUGIN_LIBS) - -$(HOST_TARGET): $(HOST_OBJECTS) $(HOSTSDK_STATIC) $(HOST_HEADERS) - $(CXX) $(LDFLAGS) $(HOST_LDFLAGS) -o $@ $(HOST_OBJECTS) $(HOST_LIBS) - -test: plugins host - VAMP_PATH=$(EXAMPLEDIR) $(HOST_TARGET) -l - -clean: - rm -f $(SDK_OBJECTS) $(HOSTSDK_OBJECTS) $(PLUGIN_OBJECTS) $(HOST_OBJECTS) - -distclean: clean - rm -f $(SDK_STATIC) $(SDK_DYNAMIC) $(HOSTSDK_STATIC) $(HOSTSDK_DYNAMIC) $(PLUGIN_TARGET) $(HOST_TARGET) *~ */*~ - -install: $(SDK_STATIC) $(SDK_DYNAMIC) $(HOSTSDK_STATIC) $(HOSTSDK_DYNAMIC) $(PLUGIN_TARGET) $(HOST_TARGET) - mkdir -p $(INSTALL_API_HEADERS) - mkdir -p $(INSTALL_SDK_HEADERS) - mkdir -p $(INSTALL_HOSTEXT_HEADERS) - mkdir -p $(INSTALL_SDK_LIBS) - mkdir -p $(INSTALL_PKGCONFIG) - cp $(API_HEADERS) $(INSTALL_API_HEADERS) - cp $(SDK_HEADERS) $(INSTALL_SDK_HEADERS) - cp $(HOSTSDK_HEADERS) $(INSTALL_SDK_HEADERS) - cp $(HOSTEXT_HEADERS) $(INSTALL_HOSTEXT_HEADERS) - cp $(SDK_STATIC) $(INSTALL_SDK_LIBS) - cp $(HOSTSDK_STATIC) $(INSTALL_SDK_LIBS) - cp $(SDK_DYNAMIC) $(INSTALL_SDK_LIBS)/$(INSTALL_SDK_LIBNAME) - cp $(HOSTSDK_DYNAMIC) $(INSTALL_SDK_LIBS)/$(INSTALL_HOSTSDK_LIBNAME) - rm -f $(INSTALL_SDK_LIBS)/$(INSTALL_SDK_LINK_ABI) - ln -s $(INSTALL_SDK_LIBNAME) $(INSTALL_SDK_LIBS)/$(INSTALL_SDK_LINK_ABI) - rm -f $(INSTALL_SDK_LIBS)/$(INSTALL_HOSTSDK_LINK_ABI) - ln -s $(INSTALL_HOSTSDK_LIBNAME) $(INSTALL_SDK_LIBS)/$(INSTALL_HOSTSDK_LINK_ABI) - rm -f $(INSTALL_SDK_LIBS)/$(INSTALL_SDK_LINK_DEV) - ln -s $(INSTALL_SDK_LIBNAME) $(INSTALL_SDK_LIBS)/$(INSTALL_SDK_LINK_DEV) - rm -f $(INSTALL_SDK_LIBS)/$(INSTALL_HOSTSDK_LINK_DEV) - ln -s $(INSTALL_HOSTSDK_LIBNAME) $(INSTALL_SDK_LIBS)/$(INSTALL_HOSTSDK_LINK_DEV) - sed "s,%PREFIX%,$(INSTALL_PREFIX)," $(APIDIR)/vamp.pc.in \ - > $(INSTALL_PKGCONFIG)/vamp.pc - sed "s,%PREFIX%,$(INSTALL_PREFIX)," $(SDKDIR)/vamp-sdk.pc.in \ - > $(INSTALL_PKGCONFIG)/vamp-sdk.pc - sed "s,%PREFIX%,$(INSTALL_PREFIX)," $(SDKDIR)/vamp-hostsdk.pc.in \ - > $(INSTALL_PKGCONFIG)/vamp-hostsdk.pc - sed -e "s,%LIBNAME%,$(INSTALL_SDK_LIBNAME),g" \ - -e "s,%LINK_ABI%,$(INSTALL_SDK_LINK_ABI),g" \ - -e "s,%LINK_DEV%,$(INSTALL_SDK_LINK_DEV),g" \ - -e "s,%STATIC%,$(INSTALL_SDK_STATIC),g" \ - -e "s,%LIBS%,$(INSTALL_SDK_LIBS),g" $(SDK_LA).in \ - > $(INSTALL_SDK_LIBS)/$(INSTALL_SDK_LA) - sed -e "s,%LIBNAME%,$(INSTALL_HOSTSDK_LIBNAME),g" \ - -e "s,%LINK_ABI%,$(INSTALL_HOSTSDK_LINK_ABI),g" \ - -e "s,%LINK_DEV%,$(INSTALL_HOSTSDK_LINK_DEV),g" \ - -e "s,%STATIC%,$(INSTALL_HOSTSDK_STATIC),g" \ - -e "s,%LIBS%,$(INSTALL_SDK_LIBS),g" $(HOSTSDK_LA).in \ - > $(INSTALL_SDK_LIBS)/$(INSTALL_HOSTSDK_LA) - diff --git a/libs/vamp-sdk/SConscript b/libs/vamp-sdk/SConscript new file mode 100644 index 0000000000..2d3599708e --- /dev/null +++ b/libs/vamp-sdk/SConscript @@ -0,0 +1,39 @@ +# -*- python -*- + +import os +import os.path +import glob + +vampsdk_files = Split (""" +vamp-sdk/PluginAdapter.cpp +vamp-sdk/RealTime.cpp +""") + +vamphostsdk_files = Split (""" +vamp-sdk/PluginHostAdapter.cpp +vamp-sdk/hostext/PluginChannelAdapter.cpp +vamp-sdk/hostext/PluginInputDomainAdapter.cpp +vamp-sdk/hostext/PluginLoader.cpp +vamp-sdk/hostext/PluginWrapper.cpp +vamp-sdk/RealTime.cpp +""") + +Import('env install_prefix libraries') +vampsdk = env.Copy() + +vampsdk.Append (CPPATH='#libs/vamp-sdk/vamp', CXXFLAGS="-Ilibs/vamp-sdk") + +libvampsdk = vampsdk.SharedLibrary('vampsdk', vampsdk_files) +libvamphostsdk = vampsdk.SharedLibrary('vamphostsdk', vamphostsdk_files) + +Default(libvampsdk) +Default(libvamphostsdk) + +env.Alias('install', env.Install(os.path.join(install_prefix, env['LIBDIR'], 'ardour2'), libvampsdk)) +env.Alias('tarball', env.Distribute (env['DISTTREE'], + [ 'SConscript', 'COPYING', 'README' ] + + vampsdk_files + + vamphostsdk_files + + glob.glob('vamp/*.h') + + glob.glob('vamp-sdk/*.h') + + glob.glob('vamp-sdk/host-ext/*.h'))) diff --git a/libs/vamp-sdk/examples/AmplitudeFollower.cpp b/libs/vamp-sdk/examples/AmplitudeFollower.cpp deleted file mode 100644 index 7023297d33..0000000000 --- a/libs/vamp-sdk/examples/AmplitudeFollower.cpp +++ /dev/null @@ -1,247 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Vamp - - An API for audio analysis and feature extraction plugins. - - Centre for Digital Music, Queen Mary, University of London. - This file copyright 2006 Dan Stowell. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the names of the Centre for - Digital Music; Queen Mary, University of London; and Chris Cannam - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written - authorization. -*/ - -#include "AmplitudeFollower.h" - -#include <cmath> - -#include <string> -#include <vector> -#include <iostream> - -using std::string; -using std::vector; -using std::cerr; -using std::endl; - -/** - * An implementation of SuperCollider's amplitude-follower algorithm - * as a simple Vamp plugin. - */ - -AmplitudeFollower::AmplitudeFollower(float inputSampleRate) : - Plugin(inputSampleRate), - m_stepSize(0), - m_previn(0.0f), - m_clampcoef(0.01f), - m_relaxcoef(0.01f) -{ -} - -AmplitudeFollower::~AmplitudeFollower() -{ -} - -string -AmplitudeFollower::getIdentifier() const -{ - return "amplitudefollower"; -} - -string -AmplitudeFollower::getName() const -{ - return "Amplitude Follower"; -} - -string -AmplitudeFollower::getDescription() const -{ - return "Track the amplitude of the audio signal"; -} - -string -AmplitudeFollower::getMaker() const -{ - return "Vamp SDK Example Plugins"; -} - -int -AmplitudeFollower::getPluginVersion() const -{ - return 1; -} - -string -AmplitudeFollower::getCopyright() const -{ - return "Code copyright 2006 Dan Stowell; method from SuperCollider. Freely redistributable (BSD license)"; -} - -bool -AmplitudeFollower::initialise(size_t channels, size_t stepSize, size_t blockSize) -{ - if (channels < getMinChannelCount() || - channels > getMaxChannelCount()) return false; - - m_stepSize = std::min(stepSize, blockSize); - - // Translate the coefficients - // from their "convenient" 60dB convergence-time values - // to real coefficients - m_clampcoef = m_clampcoef==0.0 ? 0.0 : exp(log(0.1)/(m_clampcoef * m_inputSampleRate)); - m_relaxcoef = m_relaxcoef==0.0 ? 0.0 : exp(log(0.1)/(m_relaxcoef * m_inputSampleRate)); - - return true; -} - -void -AmplitudeFollower::reset() -{ - m_previn = 0.0f; -} - -AmplitudeFollower::OutputList -AmplitudeFollower::getOutputDescriptors() const -{ - OutputList list; - - OutputDescriptor sca; - sca.identifier = "amplitude"; - sca.name = "Amplitude"; - sca.description = ""; - sca.unit = "V"; - sca.hasFixedBinCount = true; - sca.binCount = 1; - sca.hasKnownExtents = false; - sca.isQuantized = false; - sca.sampleType = OutputDescriptor::OneSamplePerStep; - list.push_back(sca); - - return list; -} - -AmplitudeFollower::ParameterList -AmplitudeFollower::getParameterDescriptors() const -{ - ParameterList list; - - ParameterDescriptor att; - att.identifier = "attack"; - att.name = "Attack time"; - att.description = ""; - att.unit = "s"; - att.minValue = 0.0f; - att.maxValue = 1.f; - att.defaultValue = 0.01f; - att.isQuantized = false; - - list.push_back(att); - - ParameterDescriptor dec; - dec.identifier = "release"; - dec.name = "Release time"; - dec.description = ""; - dec.unit = "s"; - dec.minValue = 0.0f; - dec.maxValue = 1.f; - dec.defaultValue = 0.01f; - dec.isQuantized = false; - - list.push_back(dec); - - return list; -} - -void AmplitudeFollower::setParameter(std::string paramid, float newval) -{ - if (paramid == "attack") { - m_clampcoef = newval; - } else if (paramid == "release") { - m_relaxcoef = newval; - } -} - -float AmplitudeFollower::getParameter(std::string paramid) const -{ - if (paramid == "attack") { - return m_clampcoef; - } else if (paramid == "release") { - return m_relaxcoef; - } - - return 0.0f; -} - -AmplitudeFollower::FeatureSet -AmplitudeFollower::process(const float *const *inputBuffers, - Vamp::RealTime timestamp) -{ - if (m_stepSize == 0) { - cerr << "ERROR: AmplitudeFollower::process: " - << "AmplitudeFollower has not been initialised" - << endl; - return FeatureSet(); - } - - float previn = m_previn; - - FeatureSet returnFeatures; - - float val; - float peak = 0.0f; - - for (size_t i = 0; i < m_stepSize; ++i) { - - val = fabs(inputBuffers[0][i]); - - if (val < previn) { - val = val + (previn - val) * m_relaxcoef; - } else { - val = val + (previn - val) * m_clampcoef; - } - - if (val > peak) peak = val; - previn = val; - } - - m_previn = previn; - - // Now store the "feature" (peak amp) for this sample - Feature feature; - feature.hasTimestamp = false; - feature.values.push_back(peak); - returnFeatures[0].push_back(feature); - - return returnFeatures; -} - -AmplitudeFollower::FeatureSet -AmplitudeFollower::getRemainingFeatures() -{ - return FeatureSet(); -} - diff --git a/libs/vamp-sdk/examples/AmplitudeFollower.h b/libs/vamp-sdk/examples/AmplitudeFollower.h deleted file mode 100644 index 6c3426e324..0000000000 --- a/libs/vamp-sdk/examples/AmplitudeFollower.h +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Vamp - - An API for audio analysis and feature extraction plugins. - - Centre for Digital Music, Queen Mary, University of London. - This file copyright 2006 Dan Stowell. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the names of the Centre for - Digital Music; Queen Mary, University of London; and Chris Cannam - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written - authorization. -*/ - -#ifndef _AMPLITUDE_FOLLOWER_PLUGIN_H_ -#define _AMPLITUDE_FOLLOWER_PLUGIN_H_ - -#include "vamp-sdk/Plugin.h" - -/** - * Example plugin implementing the SuperCollider amplitude follower - * function. - */ - -class AmplitudeFollower : public Vamp::Plugin -{ -public: - AmplitudeFollower(float inputSampleRate); - virtual ~AmplitudeFollower(); - - bool initialise(size_t channels, size_t stepSize, size_t blockSize); - void reset(); - - InputDomain getInputDomain() const { return TimeDomain; } - - std::string getIdentifier() const; - std::string getName() const; - std::string getDescription() const; - std::string getMaker() const; - int getPluginVersion() const; - std::string getCopyright() const; - - OutputList getOutputDescriptors() const; - - ParameterList getParameterDescriptors() const; - float getParameter(std::string paramid) const; - void setParameter(std::string paramid, float newval); - - FeatureSet process(const float *const *inputBuffers, - Vamp::RealTime timestamp); - - FeatureSet getRemainingFeatures(); - -protected: - size_t m_stepSize; - float m_previn; - float m_clampcoef; - float m_relaxcoef; -}; - - -#endif diff --git a/libs/vamp-sdk/examples/PercussionOnsetDetector.cpp b/libs/vamp-sdk/examples/PercussionOnsetDetector.cpp deleted file mode 100644 index 447eb19a28..0000000000 --- a/libs/vamp-sdk/examples/PercussionOnsetDetector.cpp +++ /dev/null @@ -1,285 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Vamp - - An API for audio analysis and feature extraction plugins. - - Centre for Digital Music, Queen Mary, University of London. - Copyright 2006 Chris Cannam. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the names of the Centre for - Digital Music; Queen Mary, University of London; and Chris Cannam - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written - authorization. -*/ - -#include "PercussionOnsetDetector.h" - -using std::string; -using std::vector; -using std::cerr; -using std::endl; - -#include <cmath> - - -PercussionOnsetDetector::PercussionOnsetDetector(float inputSampleRate) : - Plugin(inputSampleRate), - m_stepSize(0), - m_blockSize(0), - m_threshold(3), - m_sensitivity(40), - m_priorMagnitudes(0), - m_dfMinus1(0), - m_dfMinus2(0) -{ -} - -PercussionOnsetDetector::~PercussionOnsetDetector() -{ - delete[] m_priorMagnitudes; -} - -string -PercussionOnsetDetector::getIdentifier() const -{ - return "percussiononsets"; -} - -string -PercussionOnsetDetector::getName() const -{ - return "Simple Percussion Onset Detector"; -} - -string -PercussionOnsetDetector::getDescription() const -{ - return "Detect percussive note onsets by identifying broadband energy rises"; -} - -string -PercussionOnsetDetector::getMaker() const -{ - return "Vamp SDK Example Plugins"; -} - -int -PercussionOnsetDetector::getPluginVersion() const -{ - return 2; -} - -string -PercussionOnsetDetector::getCopyright() const -{ - return "Code copyright 2006 Queen Mary, University of London, after Dan Barry et al 2005. Freely redistributable (BSD license)"; -} - -size_t -PercussionOnsetDetector::getPreferredStepSize() const -{ - return 0; -} - -size_t -PercussionOnsetDetector::getPreferredBlockSize() const -{ - return 1024; -} - -bool -PercussionOnsetDetector::initialise(size_t channels, size_t stepSize, size_t blockSize) -{ - if (channels < getMinChannelCount() || - channels > getMaxChannelCount()) return false; - - m_stepSize = stepSize; - m_blockSize = blockSize; - - m_priorMagnitudes = new float[m_blockSize/2]; - - for (size_t i = 0; i < m_blockSize/2; ++i) { - m_priorMagnitudes[i] = 0.f; - } - - m_dfMinus1 = 0.f; - m_dfMinus2 = 0.f; - - return true; -} - -void -PercussionOnsetDetector::reset() -{ - for (size_t i = 0; i < m_blockSize/2; ++i) { - m_priorMagnitudes[i] = 0.f; - } - - m_dfMinus1 = 0.f; - m_dfMinus2 = 0.f; -} - -PercussionOnsetDetector::ParameterList -PercussionOnsetDetector::getParameterDescriptors() const -{ - ParameterList list; - - ParameterDescriptor d; - d.identifier = "threshold"; - d.name = "Energy rise threshold"; - d.description = "Energy rise within a frequency bin necessary to count toward broadband total"; - d.unit = "dB"; - d.minValue = 0; - d.maxValue = 20; - d.defaultValue = 3; - d.isQuantized = false; - list.push_back(d); - - d.identifier = "sensitivity"; - d.name = "Sensitivity"; - d.description = "Sensitivity of peak detector applied to broadband detection function"; - d.unit = "%"; - d.minValue = 0; - d.maxValue = 100; - d.defaultValue = 40; - d.isQuantized = false; - list.push_back(d); - - return list; -} - -float -PercussionOnsetDetector::getParameter(std::string id) const -{ - if (id == "threshold") return m_threshold; - if (id == "sensitivity") return m_sensitivity; - return 0.f; -} - -void -PercussionOnsetDetector::setParameter(std::string id, float value) -{ - if (id == "threshold") { - if (value < 0) value = 0; - if (value > 20) value = 20; - m_threshold = value; - } else if (id == "sensitivity") { - if (value < 0) value = 0; - if (value > 100) value = 100; - m_sensitivity = value; - } -} - -PercussionOnsetDetector::OutputList -PercussionOnsetDetector::getOutputDescriptors() const -{ - OutputList list; - - OutputDescriptor d; - d.identifier = "onsets"; - d.name = "Onsets"; - d.description = "Percussive note onset locations"; - d.unit = ""; - d.hasFixedBinCount = true; - d.binCount = 0; - d.hasKnownExtents = false; - d.isQuantized = false; - d.sampleType = OutputDescriptor::VariableSampleRate; - d.sampleRate = m_inputSampleRate; - list.push_back(d); - - d.identifier = "detectionfunction"; - d.name = "Detection Function"; - d.description = "Broadband energy rise detection function"; - d.binCount = 1; - d.isQuantized = true; - d.quantizeStep = 1.0; - d.sampleType = OutputDescriptor::OneSamplePerStep; - list.push_back(d); - - return list; -} - -PercussionOnsetDetector::FeatureSet -PercussionOnsetDetector::process(const float *const *inputBuffers, - Vamp::RealTime ts) -{ - if (m_stepSize == 0) { - cerr << "ERROR: PercussionOnsetDetector::process: " - << "PercussionOnsetDetector has not been initialised" - << endl; - return FeatureSet(); - } - - int count = 0; - - for (size_t i = 1; i < m_blockSize/2; ++i) { - - float real = inputBuffers[0][i*2]; - float imag = inputBuffers[0][i*2 + 1]; - - float sqrmag = real * real + imag * imag; - - if (m_priorMagnitudes[i] > 0.f) { - float diff = 10.f * log10f(sqrmag / m_priorMagnitudes[i]); - -// std::cout << "i=" << i << ", mag=" << mag << ", prior=" << m_priorMagnitudes[i] << ", diff=" << diff << ", threshold=" << m_threshold << std::endl; - - if (diff >= m_threshold) ++count; - } - - m_priorMagnitudes[i] = sqrmag; - } - - FeatureSet returnFeatures; - - Feature detectionFunction; - detectionFunction.hasTimestamp = false; - detectionFunction.values.push_back(count); - returnFeatures[1].push_back(detectionFunction); - - if (m_dfMinus2 < m_dfMinus1 && - m_dfMinus1 >= count && - m_dfMinus1 > ((100 - m_sensitivity) * m_blockSize) / 200) { - - Feature onset; - onset.hasTimestamp = true; - onset.timestamp = ts - Vamp::RealTime::frame2RealTime - (m_stepSize, lrintf(m_inputSampleRate)); - returnFeatures[0].push_back(onset); - } - - m_dfMinus2 = m_dfMinus1; - m_dfMinus1 = count; - - return returnFeatures; -} - -PercussionOnsetDetector::FeatureSet -PercussionOnsetDetector::getRemainingFeatures() -{ - return FeatureSet(); -} - diff --git a/libs/vamp-sdk/examples/PercussionOnsetDetector.h b/libs/vamp-sdk/examples/PercussionOnsetDetector.h deleted file mode 100644 index d54c0cfa13..0000000000 --- a/libs/vamp-sdk/examples/PercussionOnsetDetector.h +++ /dev/null @@ -1,90 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Vamp - - An API for audio analysis and feature extraction plugins. - - Centre for Digital Music, Queen Mary, University of London. - Copyright 2006 Chris Cannam. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the names of the Centre for - Digital Music; Queen Mary, University of London; and Chris Cannam - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written - authorization. -*/ - -#ifndef _PERCUSSION_ONSET_DETECTOR_PLUGIN_H_ -#define _PERCUSSION_ONSET_DETECTOR_PLUGIN_H_ - -#include "vamp-sdk/Plugin.h" - -/** - * Example plugin that detects percussive events. - */ - -class PercussionOnsetDetector : public Vamp::Plugin -{ -public: - PercussionOnsetDetector(float inputSampleRate); - virtual ~PercussionOnsetDetector(); - - bool initialise(size_t channels, size_t stepSize, size_t blockSize); - void reset(); - - InputDomain getInputDomain() const { return FrequencyDomain; } - - std::string getIdentifier() const; - std::string getName() const; - std::string getDescription() const; - std::string getMaker() const; - int getPluginVersion() const; - std::string getCopyright() const; - - size_t getPreferredStepSize() const; - size_t getPreferredBlockSize() const; - - ParameterList getParameterDescriptors() const; - float getParameter(std::string id) const; - void setParameter(std::string id, float value); - - OutputList getOutputDescriptors() const; - - FeatureSet process(const float *const *inputBuffers, - Vamp::RealTime timestamp); - - FeatureSet getRemainingFeatures(); - -protected: - size_t m_stepSize; - size_t m_blockSize; - - float m_threshold; - float m_sensitivity; - float *m_priorMagnitudes; - float m_dfMinus1; - float m_dfMinus2; -}; - - -#endif diff --git a/libs/vamp-sdk/examples/SpectralCentroid.cpp b/libs/vamp-sdk/examples/SpectralCentroid.cpp deleted file mode 100644 index 82d80b8100..0000000000 --- a/libs/vamp-sdk/examples/SpectralCentroid.cpp +++ /dev/null @@ -1,188 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Vamp - - An API for audio analysis and feature extraction plugins. - - Centre for Digital Music, Queen Mary, University of London. - Copyright 2006 Chris Cannam. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the names of the Centre for - Digital Music; Queen Mary, University of London; and Chris Cannam - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written - authorization. -*/ - -#include "SpectralCentroid.h" - -using std::string; -using std::vector; -using std::cerr; -using std::endl; - -#include <cmath> - - -SpectralCentroid::SpectralCentroid(float inputSampleRate) : - Plugin(inputSampleRate), - m_stepSize(0), - m_blockSize(0) -{ -} - -SpectralCentroid::~SpectralCentroid() -{ -} - -string -SpectralCentroid::getIdentifier() const -{ - return "spectralcentroid"; -} - -string -SpectralCentroid::getName() const -{ - return "Spectral Centroid"; -} - -string -SpectralCentroid::getDescription() const -{ - return "Calculate the centroid frequency of the spectrum of the input signal"; -} - -string -SpectralCentroid::getMaker() const -{ - return "Vamp SDK Example Plugins"; -} - -int -SpectralCentroid::getPluginVersion() const -{ - return 2; -} - -string -SpectralCentroid::getCopyright() const -{ - return "Freely redistributable (BSD license)"; -} - -bool -SpectralCentroid::initialise(size_t channels, size_t stepSize, size_t blockSize) -{ - if (channels < getMinChannelCount() || - channels > getMaxChannelCount()) return false; - - m_stepSize = stepSize; - m_blockSize = blockSize; - - return true; -} - -void -SpectralCentroid::reset() -{ -} - -SpectralCentroid::OutputList -SpectralCentroid::getOutputDescriptors() const -{ - OutputList list; - - OutputDescriptor d; - d.identifier = "logcentroid"; - d.name = "Log Frequency Centroid"; - d.description = "Centroid of the log weighted frequency spectrum"; - d.unit = "Hz"; - d.hasFixedBinCount = true; - d.binCount = 1; - d.hasKnownExtents = false; - d.isQuantized = false; - d.sampleType = OutputDescriptor::OneSamplePerStep; - list.push_back(d); - - d.identifier = "linearcentroid"; - d.name = "Linear Frequency Centroid"; - d.description = "Centroid of the linear frequency spectrum"; - list.push_back(d); - - return list; -} - -SpectralCentroid::FeatureSet -SpectralCentroid::process(const float *const *inputBuffers, Vamp::RealTime) -{ - if (m_stepSize == 0) { - cerr << "ERROR: SpectralCentroid::process: " - << "SpectralCentroid has not been initialised" - << endl; - return FeatureSet(); - } - - double numLin = 0.0, numLog = 0.0, denom = 0.0; - - for (size_t i = 1; i <= m_blockSize/2; ++i) { - double freq = (double(i) * m_inputSampleRate) / m_blockSize; - double real = inputBuffers[0][i*2]; - double imag = inputBuffers[0][i*2 + 1]; - double power = sqrt(real * real + imag * imag) / (m_blockSize/2); - numLin += freq * power; - numLog += log10f(freq) * power; - denom += power; - } - - FeatureSet returnFeatures; - -// std::cerr << "power " << denom << ", block size " << m_blockSize << std::endl; - - if (denom != 0.0) { - float centroidLin = float(numLin / denom); - float centroidLog = powf(10, float(numLog / denom)); - - Feature feature; - feature.hasTimestamp = false; - if (!std::isnan(centroidLog) && !std::isinf(centroidLog)) { - feature.values.push_back(centroidLog); - } - returnFeatures[0].push_back(feature); - - feature.values.clear(); - if (!std::isnan(centroidLin) && !std::isinf(centroidLin)) { - feature.values.push_back(centroidLin); - } - returnFeatures[1].push_back(feature); - } - - return returnFeatures; -} - -SpectralCentroid::FeatureSet -SpectralCentroid::getRemainingFeatures() -{ - return FeatureSet(); -} - diff --git a/libs/vamp-sdk/examples/SpectralCentroid.h b/libs/vamp-sdk/examples/SpectralCentroid.h deleted file mode 100644 index 02cc8d981d..0000000000 --- a/libs/vamp-sdk/examples/SpectralCentroid.h +++ /dev/null @@ -1,78 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Vamp - - An API for audio analysis and feature extraction plugins. - - Centre for Digital Music, Queen Mary, University of London. - Copyright 2006 Chris Cannam. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the names of the Centre for - Digital Music; Queen Mary, University of London; and Chris Cannam - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written - authorization. -*/ - -#ifndef _SPECTRAL_CENTROID_PLUGIN_H_ -#define _SPECTRAL_CENTROID_PLUGIN_H_ - -#include "vamp-sdk/Plugin.h" - -/** - * Example plugin that calculates the centre of gravity of the - * frequency domain representation of each block of audio. - */ - -class SpectralCentroid : public Vamp::Plugin -{ -public: - SpectralCentroid(float inputSampleRate); - virtual ~SpectralCentroid(); - - bool initialise(size_t channels, size_t stepSize, size_t blockSize); - void reset(); - - InputDomain getInputDomain() const { return FrequencyDomain; } - - std::string getIdentifier() const; - std::string getName() const; - std::string getDescription() const; - std::string getMaker() const; - int getPluginVersion() const; - std::string getCopyright() const; - - OutputList getOutputDescriptors() const; - - FeatureSet process(const float *const *inputBuffers, - Vamp::RealTime timestamp); - - FeatureSet getRemainingFeatures(); - -protected: - size_t m_stepSize; - size_t m_blockSize; -}; - - -#endif diff --git a/libs/vamp-sdk/examples/ZeroCrossing.cpp b/libs/vamp-sdk/examples/ZeroCrossing.cpp deleted file mode 100644 index 4b678e3f8f..0000000000 --- a/libs/vamp-sdk/examples/ZeroCrossing.cpp +++ /dev/null @@ -1,194 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Vamp - - An API for audio analysis and feature extraction plugins. - - Centre for Digital Music, Queen Mary, University of London. - Copyright 2006 Chris Cannam. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the names of the Centre for - Digital Music; Queen Mary, University of London; and Chris Cannam - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written - authorization. -*/ - -#include "ZeroCrossing.h" - -using std::string; -using std::vector; -using std::cerr; -using std::endl; - - -ZeroCrossing::ZeroCrossing(float inputSampleRate) : - Plugin(inputSampleRate), - m_stepSize(0), - m_previousSample(0.0f) -{ -} - -ZeroCrossing::~ZeroCrossing() -{ -} - -string -ZeroCrossing::getIdentifier() const -{ - return "zerocrossing"; -} - -string -ZeroCrossing::getName() const -{ - return "Zero Crossings"; -} - -string -ZeroCrossing::getDescription() const -{ - return "Detect and count zero crossing points"; -} - -string -ZeroCrossing::getMaker() const -{ - return "Vamp SDK Example Plugins"; -} - -int -ZeroCrossing::getPluginVersion() const -{ - return 2; -} - -string -ZeroCrossing::getCopyright() const -{ - return "Freely redistributable (BSD license)"; -} - -bool -ZeroCrossing::initialise(size_t channels, size_t stepSize, size_t blockSize) -{ - if (channels < getMinChannelCount() || - channels > getMaxChannelCount()) return false; - - m_stepSize = std::min(stepSize, blockSize); - - return true; -} - -void -ZeroCrossing::reset() -{ - m_previousSample = 0.0f; -} - -ZeroCrossing::OutputList -ZeroCrossing::getOutputDescriptors() const -{ - OutputList list; - - OutputDescriptor zc; - zc.identifier = "counts"; - zc.name = "Zero Crossing Counts"; - zc.description = "The number of zero crossing points per processing block"; - zc.unit = "crossings"; - zc.hasFixedBinCount = true; - zc.binCount = 1; - zc.hasKnownExtents = false; - zc.isQuantized = true; - zc.quantizeStep = 1.0; - zc.sampleType = OutputDescriptor::OneSamplePerStep; - list.push_back(zc); - - zc.identifier = "zerocrossings"; - zc.name = "Zero Crossings"; - zc.description = "The locations of zero crossing points"; - zc.unit = ""; - zc.hasFixedBinCount = true; - zc.binCount = 0; - zc.sampleType = OutputDescriptor::VariableSampleRate; - zc.sampleRate = m_inputSampleRate; - list.push_back(zc); - - return list; -} - -ZeroCrossing::FeatureSet -ZeroCrossing::process(const float *const *inputBuffers, - Vamp::RealTime timestamp) -{ - if (m_stepSize == 0) { - cerr << "ERROR: ZeroCrossing::process: " - << "ZeroCrossing has not been initialised" - << endl; - return FeatureSet(); - } - - float prev = m_previousSample; - size_t count = 0; - - FeatureSet returnFeatures; - - for (size_t i = 0; i < m_stepSize; ++i) { - - float sample = inputBuffers[0][i]; - bool crossing = false; - - if (sample <= 0.0) { - if (prev > 0.0) crossing = true; - } else if (sample > 0.0) { - if (prev <= 0.0) crossing = true; - } - - if (crossing) { - ++count; - Feature feature; - feature.hasTimestamp = true; - feature.timestamp = timestamp + - Vamp::RealTime::frame2RealTime(i, (size_t)m_inputSampleRate); - returnFeatures[1].push_back(feature); - } - - prev = sample; - } - - m_previousSample = prev; - - Feature feature; - feature.hasTimestamp = false; - feature.values.push_back(count); - - returnFeatures[0].push_back(feature); - return returnFeatures; -} - -ZeroCrossing::FeatureSet -ZeroCrossing::getRemainingFeatures() -{ - return FeatureSet(); -} - diff --git a/libs/vamp-sdk/examples/ZeroCrossing.h b/libs/vamp-sdk/examples/ZeroCrossing.h deleted file mode 100644 index ede2a74492..0000000000 --- a/libs/vamp-sdk/examples/ZeroCrossing.h +++ /dev/null @@ -1,78 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Vamp - - An API for audio analysis and feature extraction plugins. - - Centre for Digital Music, Queen Mary, University of London. - Copyright 2006 Chris Cannam. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the names of the Centre for - Digital Music; Queen Mary, University of London; and Chris Cannam - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written - authorization. -*/ - -#ifndef _ZERO_CROSSING_PLUGIN_H_ -#define _ZERO_CROSSING_PLUGIN_H_ - -#include "vamp-sdk/Plugin.h" - -/** - * Example plugin that calculates the positions and density of - * zero-crossing points in an audio waveform. -*/ - -class ZeroCrossing : public Vamp::Plugin -{ -public: - ZeroCrossing(float inputSampleRate); - virtual ~ZeroCrossing(); - - bool initialise(size_t channels, size_t stepSize, size_t blockSize); - void reset(); - - InputDomain getInputDomain() const { return TimeDomain; } - - std::string getIdentifier() const; - std::string getName() const; - std::string getDescription() const; - std::string getMaker() const; - int getPluginVersion() const; - std::string getCopyright() const; - - OutputList getOutputDescriptors() const; - - FeatureSet process(const float *const *inputBuffers, - Vamp::RealTime timestamp); - - FeatureSet getRemainingFeatures(); - -protected: - size_t m_stepSize; - float m_previousSample; -}; - - -#endif diff --git a/libs/vamp-sdk/examples/plugins.cpp b/libs/vamp-sdk/examples/plugins.cpp deleted file mode 100644 index 25c6e6c0d4..0000000000 --- a/libs/vamp-sdk/examples/plugins.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Vamp - - An API for audio analysis and feature extraction plugins. - - Centre for Digital Music, Queen Mary, University of London. - Copyright 2006 Chris Cannam. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the names of the Centre for - Digital Music; Queen Mary, University of London; and Chris Cannam - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written - authorization. -*/ - -#include "vamp/vamp.h" -#include "vamp-sdk/PluginAdapter.h" - -#include "ZeroCrossing.h" -#include "SpectralCentroid.h" -#include "PercussionOnsetDetector.h" -#include "AmplitudeFollower.h" - -static Vamp::PluginAdapter<ZeroCrossing> zeroCrossingAdapter; -static Vamp::PluginAdapter<SpectralCentroid> spectralCentroidAdapter; -static Vamp::PluginAdapter<PercussionOnsetDetector> percussionOnsetAdapter; -static Vamp::PluginAdapter<AmplitudeFollower> amplitudeAdapter; - -const VampPluginDescriptor *vampGetPluginDescriptor(unsigned int version, - unsigned int index) -{ - if (version < 1) return 0; - - switch (index) { - case 0: return zeroCrossingAdapter.getDescriptor(); - case 1: return spectralCentroidAdapter.getDescriptor(); - case 2: return percussionOnsetAdapter.getDescriptor(); - case 3: return amplitudeAdapter.getDescriptor(); - default: return 0; - } -} - diff --git a/libs/vamp-sdk/examples/vamp-example-plugins.cat b/libs/vamp-sdk/examples/vamp-example-plugins.cat deleted file mode 100644 index 7676c4aca6..0000000000 --- a/libs/vamp-sdk/examples/vamp-example-plugins.cat +++ /dev/null @@ -1,5 +0,0 @@ -vamp:vamp-example-plugins:zerocrossing::Low Level Features -vamp:vamp-example-plugins:spectralcentroid::Low Level Features -vamp:vamp-example-plugins:percussiononsets::Time > Onsets -vamp:vamp-example-plugins:amplitudefollower::Low Level Features - diff --git a/libs/vamp-sdk/host/system.h b/libs/vamp-sdk/host/system.h deleted file mode 100644 index 15aa8c199f..0000000000 --- a/libs/vamp-sdk/host/system.h +++ /dev/null @@ -1,75 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Vamp - - An API for audio analysis and feature extraction plugins. - - Centre for Digital Music, Queen Mary, University of London. - Copyright 2006 Chris Cannam. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the names of the Centre for - Digital Music; Queen Mary, University of London; and Chris Cannam - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written - authorization. -*/ - -#ifndef _SYSTEM_H_ -#define _SYSTEM_H_ - -#ifdef _WIN32 - -#include <windows.h> - -#define DLOPEN(a,b) LoadLibrary((a).c_str()) -#define DLSYM(a,b) GetProcAddress((HINSTANCE)(a),(b)) -#define DLCLOSE(a) FreeLibrary((HINSTANCE)(a)) -#define DLERROR() "" - -#define PLUGIN_SUFFIX "dll" - -#else - -#include <dlfcn.h> - -#define DLOPEN(a,b) dlopen((a).c_str(),(b)) -#define DLSYM(a,b) dlsym((a),(b)) -#define DLCLOSE(a) dlclose((a)) -#define DLERROR() dlerror() - -#ifdef __APPLE__ - -#define PLUGIN_SUFFIX "dylib" -#define HAVE_OPENDIR 1 - -#else - -#define PLUGIN_SUFFIX "so" -#define HAVE_OPENDIR 1 - -#endif /* __APPLE__ */ - -#endif /* ! _WIN32 */ - -#endif - diff --git a/libs/vamp-sdk/host/vamp-simple-host.cpp b/libs/vamp-sdk/host/vamp-simple-host.cpp deleted file mode 100644 index c8ae28d81b..0000000000 --- a/libs/vamp-sdk/host/vamp-simple-host.cpp +++ /dev/null @@ -1,492 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Vamp - - An API for audio analysis and feature extraction plugins. - - Centre for Digital Music, Queen Mary, University of London. - Copyright 2006 Chris Cannam. - FFT code from Don Cross's public domain FFT implementation. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the names of the Centre for - Digital Music; Queen Mary, University of London; and Chris Cannam - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written - authorization. -*/ - -#include "vamp-sdk/PluginHostAdapter.h" -#include "vamp-sdk/hostext/PluginChannelAdapter.h" -#include "vamp-sdk/hostext/PluginInputDomainAdapter.h" -#include "vamp-sdk/hostext/PluginLoader.h" -#include "vamp/vamp.h" - -#include <iostream> -#include <fstream> -#include <sndfile.h> - -#include "system.h" - -#include <cmath> - -using std::cout; -using std::cerr; -using std::endl; -using std::string; -using std::vector; -using std::ofstream; -using std::ios; - -using Vamp::HostExt::PluginLoader; - -#define HOST_VERSION "1.1" - -void printFeatures(int, int, int, Vamp::Plugin::FeatureSet, ofstream *); -void transformInput(float *, size_t); -void fft(unsigned int, bool, double *, double *, double *, double *); -void printPluginPath(bool verbose); -void enumeratePlugins(); -void listPluginsInLibrary(string soname); -int runPlugin(string myname, string soname, string id, string output, - int outputNo, string inputFile, string outfilename); - -void usage(const char *name) -{ - cerr << "\n" - << name << ": A simple Vamp plugin host.\n\n" - "Centre for Digital Music, Queen Mary, University of London.\n" - "Copyright 2006-2007 Chris Cannam and QMUL.\n" - "Freely redistributable; published under a BSD-style license.\n\n" - "Usage:\n\n" - " " << name << " pluginlibrary[." << PLUGIN_SUFFIX << "]:plugin[:output] file.wav [-o outfile.txt]\n" - " " << name << " pluginlibrary[." << PLUGIN_SUFFIX << "]:plugin file.wav [outputno] [-o outfile.txt]\n\n" - " -- Load plugin id \"plugin\" from \"pluginlibrary\" and run it on the\n" - " audio data in \"file.wav\", retrieving the named \"output\", or output\n" - " number \"outputno\" (the first output by default) and dumping it to\n" - " standard output, or to \"outfile.txt\" if the -o option is given.\n\n" - " \"pluginlibrary\" should be a library name, not a file path; the\n" - " standard Vamp library search path will be used to locate it. If\n" - " a file path is supplied, the directory part(s) will be ignored.\n\n" - " " << name << " -l\n\n" - " -- List the plugin libraries and Vamp plugins in the library search path.\n\n" - " " << name << " -p\n\n" - " -- Print out the Vamp library search path.\n\n" - " " << name << " -v\n\n" - " -- Display version information only.\n\n" - << endl; - exit(2); -} - -int main(int argc, char **argv) -{ - char *scooter = argv[0]; - char *name = 0; - while (scooter && *scooter) { - if (*scooter == '/' || *scooter == '\\') name = ++scooter; - else ++scooter; - } - if (!name || !*name) name = argv[0]; - - if (argc < 2) usage(name); - - if (argc == 2) { - - if (!strcmp(argv[1], "-v")) { - - cout << "Simple Vamp plugin host version: " << HOST_VERSION << endl - << "Vamp API version: " << VAMP_API_VERSION << endl - << "Vamp SDK version: " << VAMP_SDK_VERSION << endl; - return 0; - - } else if (!strcmp(argv[1], "-l")) { - - printPluginPath(true); - enumeratePlugins(); - return 0; - - } else if (!strcmp(argv[1], "-p")) { - - printPluginPath(false); - return 0; - - } else usage(name); - } - - if (argc < 3) usage(name); - - string soname = argv[1]; - string wavname = argv[2]; - string plugid = ""; - string output = ""; - int outputNo = -1; - string outfilename; - - if (argc >= 4) { - - int idx = 3; - - if (isdigit(*argv[idx])) { - outputNo = atoi(argv[idx++]); - } - - if (argc == idx + 2) { - if (!strcmp(argv[idx], "-o")) { - outfilename = argv[idx+1]; - } else usage(name); - } else if (argc != idx) { - (usage(name)); - } - } - - cerr << endl << name << ": Running..." << endl; - - cerr << "Reading file: \"" << wavname << "\", writing to "; - if (outfilename == "") { - cerr << "standard output" << endl; - } else { - cerr << "\"" << outfilename << "\"" << endl; - } - - string::size_type sep = soname.find(':'); - - if (sep != string::npos) { - plugid = soname.substr(sep + 1); - soname = soname.substr(0, sep); - - sep = plugid.find(':'); - if (sep != string::npos) { - output = plugid.substr(sep + 1); - plugid = plugid.substr(0, sep); - } - } - - if (plugid == "") { - usage(name); - } - - if (output != "" && outputNo != -1) { - usage(name); - } - - if (output == "" && outputNo == -1) { - outputNo = 0; - } - - return runPlugin(name, soname, plugid, output, outputNo, - wavname, outfilename); -} - - -int runPlugin(string myname, string soname, string id, - string output, int outputNo, string wavname, - string outfilename) -{ - PluginLoader *loader = PluginLoader::getInstance(); - - PluginLoader::PluginKey key = loader->composePluginKey(soname, id); - - SNDFILE *sndfile; - SF_INFO sfinfo; - memset(&sfinfo, 0, sizeof(SF_INFO)); - - sndfile = sf_open(wavname.c_str(), SFM_READ, &sfinfo); - if (!sndfile) { - cerr << myname << ": ERROR: Failed to open input file \"" - << wavname << "\": " << sf_strerror(sndfile) << endl; - return 1; - } - - ofstream *out = 0; - if (outfilename != "") { - out = new ofstream(outfilename.c_str(), ios::out); - if (!*out) { - cerr << myname << ": ERROR: Failed to open output file \"" - << outfilename << "\" for writing" << endl; - delete out; - return 1; - } - } - - Vamp::Plugin *plugin = loader->loadPlugin - (key, sfinfo.samplerate, PluginLoader::ADAPT_ALL); - if (!plugin) { - cerr << myname << ": ERROR: Failed to load plugin \"" << id - << "\" from library \"" << soname << "\"" << endl; - sf_close(sndfile); - if (out) { - out->close(); - delete out; - } - return 1; - } - - cerr << "Running plugin: \"" << plugin->getIdentifier() << "\"..." << endl; - - int blockSize = plugin->getPreferredBlockSize(); - int stepSize = plugin->getPreferredStepSize(); - - if (blockSize == 0) blockSize = 1024; - if (stepSize == 0) { - if (plugin->getInputDomain() == Vamp::Plugin::FrequencyDomain) { - stepSize = blockSize/2; - } else { - stepSize = blockSize; - } - } - - int channels = sfinfo.channels; - - float *filebuf = new float[blockSize * channels]; - float **plugbuf = new float*[channels]; - for (int c = 0; c < channels; ++c) plugbuf[c] = new float[blockSize + 2]; - - cerr << "Using block size = " << blockSize << ", step size = " - << stepSize << endl; - - int minch = plugin->getMinChannelCount(); - int maxch = plugin->getMaxChannelCount(); - cerr << "Plugin accepts " << minch << " -> " << maxch << " channel(s)" << endl; - cerr << "Sound file has " << channels << " (will mix/augment if necessary)" << endl; - - Vamp::Plugin::OutputList outputs = plugin->getOutputDescriptors(); - Vamp::Plugin::OutputDescriptor od; - - int returnValue = 1; - int progress = 0; - - if (outputs.empty()) { - cerr << "ERROR: Plugin has no outputs!" << endl; - goto done; - } - - if (outputNo < 0) { - - for (size_t oi = 0; oi < outputs.size(); ++oi) { - if (outputs[oi].identifier == output) { - outputNo = oi; - break; - } - } - - if (outputNo < 0) { - cerr << "ERROR: Non-existent output \"" << output << "\" requested" << endl; - goto done; - } - - } else { - - if (int(outputs.size()) <= outputNo) { - cerr << "ERROR: Output " << outputNo << " requested, but plugin has only " << outputs.size() << " output(s)" << endl; - goto done; - } - } - - od = outputs[outputNo]; - cerr << "Output is: \"" << od.identifier << "\"" << endl; - - if (!plugin->initialise(channels, stepSize, blockSize)) { - cerr << "ERROR: Plugin initialise (channels = " << channels - << ", stepSize = " << stepSize << ", blockSize = " - << blockSize << ") failed." << endl; - goto done; - } - - for (size_t i = 0; i < sfinfo.frames; i += stepSize) { - - int count; - - if (sf_seek(sndfile, i, SEEK_SET) < 0) { - cerr << "ERROR: sf_seek failed: " << sf_strerror(sndfile) << endl; - break; - } - - if ((count = sf_readf_float(sndfile, filebuf, blockSize)) < 0) { - cerr << "ERROR: sf_readf_float failed: " << sf_strerror(sndfile) << endl; - break; - } - - for (int c = 0; c < channels; ++c) { - int j = 0; - while (j < count) { - plugbuf[c][j] = filebuf[j * sfinfo.channels + c]; - ++j; - } - while (j < blockSize) { - plugbuf[c][j] = 0.0f; - ++j; - } - } - - printFeatures - (i, sfinfo.samplerate, outputNo, plugin->process - (plugbuf, Vamp::RealTime::frame2RealTime(i, sfinfo.samplerate)), - out); - - int pp = progress; - progress = lrintf((float(i) / sfinfo.frames) * 100.f); - if (progress != pp && out) { - cerr << "\r" << progress << "%"; - } - } - if (out) cerr << "\rDone" << endl; - - printFeatures(sfinfo.frames, sfinfo.samplerate, outputNo, - plugin->getRemainingFeatures(), out); - - returnValue = 0; - -done: - delete plugin; - if (out) { - out->close(); - delete out; - } - sf_close(sndfile); - return returnValue; -} - -void -printPluginPath(bool verbose) -{ - if (verbose) { - cout << "\nVamp plugin search path: "; - } - - vector<string> path = Vamp::PluginHostAdapter::getPluginPath(); - for (size_t i = 0; i < path.size(); ++i) { - if (verbose) { - cout << "[" << path[i] << "]"; - } else { - cout << path[i] << endl; - } - } - - if (verbose) cout << endl; -} - -void -enumeratePlugins() -{ - PluginLoader *loader = PluginLoader::getInstance(); - - cout << "\nVamp plugin libraries found in search path:" << endl; - - std::vector<PluginLoader::PluginKey> plugins = loader->listPlugins(); - typedef std::multimap<std::string, PluginLoader::PluginKey> - LibraryMap; - LibraryMap libraryMap; - - for (size_t i = 0; i < plugins.size(); ++i) { - std::string path = loader->getLibraryPathForPlugin(plugins[i]); - libraryMap.insert(LibraryMap::value_type(path, plugins[i])); - } - - std::string prevPath = ""; - int index = 0; - - for (LibraryMap::iterator i = libraryMap.begin(); - i != libraryMap.end(); ++i) { - - std::string path = i->first; - PluginLoader::PluginKey key = i->second; - - if (path != prevPath) { - prevPath = path; - index = 0; - cout << "\n " << path << ":" << endl; - } - - Vamp::Plugin *plugin = loader->loadPlugin(key, 48000); - if (plugin) { - - char c = char('A' + index); - if (c > 'Z') c = char('a' + (index - 26)); - - cout << " [" << c << "] [v" - << plugin->getVampApiVersion() << "] " - << plugin->getName() << ", \"" - << plugin->getIdentifier() << "\"" << " [" - << plugin->getMaker() << "]" << endl; - - PluginLoader::PluginCategoryHierarchy category = - loader->getPluginCategory(key); - if (!category.empty()) { - cout << " "; - for (size_t ci = 0; ci < category.size(); ++ci) { - cout << " > " << category[ci]; - } - cout << endl; - } - - if (plugin->getDescription() != "") { - cout << " - " << plugin->getDescription() << endl; - } - - Vamp::Plugin::OutputList outputs = - plugin->getOutputDescriptors(); - - if (outputs.size() > 1) { - for (size_t j = 0; j < outputs.size(); ++j) { - cout << " (" << j << ") " - << outputs[j].name << ", \"" - << outputs[j].identifier << "\"" << endl; - if (outputs[j].description != "") { - cout << " - " - << outputs[j].description << endl; - } - } - } - - ++index; - - delete plugin; - } - } - - cout << endl; -} - -void -printFeatures(int frame, int sr, int output, - Vamp::Plugin::FeatureSet features, ofstream *out) -{ - for (unsigned int i = 0; i < features[output].size(); ++i) { - - Vamp::RealTime rt = Vamp::RealTime::frame2RealTime(frame, sr); - - if (features[output][i].hasTimestamp) { - rt = features[output][i].timestamp; - } - - (out ? *out : cout) << rt.toString() << ":"; - - for (unsigned int j = 0; j < features[output][i].values.size(); ++j) { - (out ? *out : cout) << " " << features[output][i].values[j]; - } - - (out ? *out : cout) << endl; - } -} - - - |