diff options
author | David Robillard <d@drobilla.net> | 2008-02-02 03:57:35 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2008-02-02 03:57:35 +0000 |
commit | 9f63ab9931e6478472853bdda58da47ea29ac125 (patch) | |
tree | 7edfb1d16f580e93501c24fa9f9648fe415f3745 /libs/ardour/transient_detector.cc | |
parent | 85ea9028b52eefb34184deb0fbd4d3c7632a2c38 (diff) |
Merge with trunk R2978.
git-svn-id: svn://localhost/ardour2/branches/3.0@2988 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/transient_detector.cc')
-rw-r--r-- | libs/ardour/transient_detector.cc | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/libs/ardour/transient_detector.cc b/libs/ardour/transient_detector.cc new file mode 100644 index 0000000000..b85700dd90 --- /dev/null +++ b/libs/ardour/transient_detector.cc @@ -0,0 +1,61 @@ +#include <ardour/transient_detector.h> + +#include "i18n.h" + +using namespace Vamp; +using namespace ARDOUR; +using namespace std; + +TransientDetector::TransientDetector (float sr) + : AudioAnalyser (sr, X_("libardourvampplugins:percussiononsets")) +{ +} + +TransientDetector::~TransientDetector() +{ +} + +int +TransientDetector::run (const std::string& path, Readable* src, uint32_t channel, vector<nframes64_t>& results) +{ + current_results = &results; + int ret = analyse (path, src, channel); + current_results = 0; + return ret; +} + +int +TransientDetector::use_features (Plugin::FeatureSet& features, ostream* out) +{ + const Plugin::FeatureList& fl (features[0]); + + for (Plugin::FeatureList::const_iterator f = fl.begin(); f != fl.end(); ++f) { + + if ((*f).hasTimestamp) { + + if (out) { + (*out) << (*f).timestamp.toString() << endl; + } + + current_results->push_back (RealTime::realTime2Frame ((*f).timestamp, (nframes_t) floor(sample_rate))); + } + } + + return 0; +} + +void +TransientDetector::set_threshold (float val) +{ + if (plugin) { + plugin->setParameter ("threshold", val); + } +} + +void +TransientDetector::set_sensitivity (float val) +{ + if (plugin) { + plugin->setParameter ("sensitivity", val); + } +} |