summaryrefslogtreecommitdiff
path: root/src/spectral/tss.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/spectral/tss.h')
-rw-r--r--src/spectral/tss.h103
1 files changed, 103 insertions, 0 deletions
diff --git a/src/spectral/tss.h b/src/spectral/tss.h
new file mode 100644
index 0000000..a4f54a1
--- /dev/null
+++ b/src/spectral/tss.h
@@ -0,0 +1,103 @@
+/*
+ Copyright (C) 2003-2013 Paul Brossier <piem@aubio.org>
+
+ This file is part of aubio.
+
+ aubio is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ aubio is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with aubio. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+/** \file
+
+ Transient / Steady-state Separation (TSS)
+
+ This file implement a Transient / Steady-state Separation (TSS) as described
+ in:
+
+ Christopher Duxbury, Mike E. Davies, and Mark B. Sandler. Separation of
+ transient information in musical audio using multiresolution analysis
+ techniques. In Proceedings of the Digital Audio Effects Conference, DAFx-01,
+ pages 1--5, Limerick, Ireland, 2001.
+
+ Available at http://www.csis.ul.ie/dafx01/proceedings/papers/duxbury.pdf
+
+ \example spectral/test-tss.c
+
+*/
+
+#ifndef AUBIO_TSS_H
+#define AUBIO_TSS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Transient / Steady-state Separation object */
+typedef struct _aubio_tss_t aubio_tss_t;
+
+/** create tss object
+
+ \param buf_size buffer size
+ \param hop_size step size
+
+*/
+aubio_tss_t *new_aubio_tss (uint_t buf_size, uint_t hop_size);
+
+/** delete tss object
+
+ \param o tss object as returned by new_aubio_tss()
+
+*/
+void del_aubio_tss (aubio_tss_t * o);
+
+/** split input into transient and steady states components
+
+ \param o tss object as returned by new_aubio_tss()
+ \param input input spectral frame
+ \param trans output transient components
+ \param stead output steady state components
+
+*/
+void aubio_tss_do (aubio_tss_t * o, const cvec_t * input, cvec_t * trans,
+ cvec_t * stead);
+
+/** set transient / steady state separation threshold
+
+ \param o tss object as returned by new_aubio_tss()
+ \param thrs new threshold value
+
+*/
+uint_t aubio_tss_set_threshold (aubio_tss_t * o, smpl_t thrs);
+
+/** set parameter a, defaults to 3
+
+ \param o tss object as returned by new_aubio_tss()
+ \param alpha new value for alpha parameter
+
+*/
+uint_t aubio_tss_set_alpha (aubio_tss_t * o, smpl_t alpha);
+
+/** set parameter b, defaults to 3
+
+ \param o tss object as returned by new_aubio_tss()
+ \param beta new value for beta parameter
+
+*/
+uint_t aubio_tss_set_beta (aubio_tss_t * o, smpl_t beta);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* AUBIO_TSS_H */