changeset 17:47e1917c88fc

Add file previously forgotten in commit... doh. And .cat file.
author Chris Cannam
date Fri, 14 Oct 2011 09:59:53 +0100
parents 33d0b18b2509
children 55969570044e
files BeatTracker.cpp beatroot-vamp.cat
diffstat 2 files changed, 55 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BeatTracker.cpp	Fri Oct 14 09:59:53 2011 +0100
@@ -0,0 +1,54 @@
+/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
+
+/*
+  Vamp feature extraction plugin for the BeatRoot beat tracker.
+
+  Centre for Digital Music, Queen Mary, University of London.
+  This file copyright 2011 Simon Dixon, Chris Cannam and QMUL.
+    
+  This program 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 2 of the
+  License, or (at your option) any later version.  See the file
+  COPYING included with this distribution for more information.
+*/
+
+#include "BeatTracker.h"
+
+EventList BeatTracker::beatTrack(EventList events, EventList beats)
+{
+    AgentList agents;
+    int count = 0;
+    double beatTime = -1;
+    if (!beats.empty()) {
+	count = beats.size() - 1;
+	EventList::iterator itr = beats.end();
+	--itr;
+	beatTime = itr->time;
+    }
+    if (count > 0) { // tempo given by mean of initial beats
+	double ioi = (beatTime - beats.begin()->time) / count;
+	agents.push_back(new Agent(ioi));
+    } else // tempo not given; use tempo induction
+	agents = Induction::beatInduction(events);
+    if (!beats.empty())
+	for (AgentList::iterator itr = agents.begin(); itr != agents.end();
+	     ++itr) {
+	    (*itr)->beatTime = beatTime;
+	    (*itr)->beatCount = count;
+	    (*itr)->events = beats;
+	}
+    agents.beatTrack(events, -1);
+    Agent *best = agents.bestAgent();
+    EventList results;
+    if (best) {
+	best->fillBeats(beatTime);
+	results = best->events;
+    }
+    for (AgentList::iterator ai = agents.begin(); ai != agents.end(); ++ai) {
+	delete *ai;
+    }
+    return results;
+} // beatTrack()/1
+	
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/beatroot-vamp.cat	Fri Oct 14 09:59:53 2011 +0100
@@ -0,0 +1,1 @@
+vamp:beatroot-vamp:beatroot::Time > Tempo