at.ofai.music.beatroot
Class AgentList

java.lang.Object
  extended by at.ofai.music.beatroot.AgentList

public class AgentList
extends java.lang.Object

Class for maintaining the set of all Agents involved in beat tracking a piece of music. Implements a simple linked list terminated by an AgentList with a null Agent (ag).


Field Summary
 Agent ag
          A beat tracking Agent
static int count
          The length of the list (number of beat tracking Agents)
static boolean debug
          Flag for printing debugging output.
static double DEFAULT_BI
          For the purpose of removing duplicate agents, the default JND of IBI
static double DEFAULT_BT
          For the purpose of removing duplicate agents, the default JND of phase
 AgentList next
          The remainder of the linked list
static double thresholdBI
          For the purpose of removing duplicate agents, the JND of IBI.
static double thresholdBT
          For the purpose of removing duplicate agents, the JND of phase.
static boolean useAverageSalience
          Flag for choice between sum and average beat salience values for Agent scores.
 
Constructor Summary
AgentList()
          Default constructor
AgentList(Agent a, AgentList al)
          Constructor for an AgentList: the Agent a is prepended to the list al.
 
Method Summary
 void add(Agent a)
          Inserts newAgent into the list in ascending order of beatInterval
 void add(Agent newAgent, boolean sort)
          Appends newAgent to list (sort==false), or inserts newAgent into the list in ascending order of beatInterval
 void beatTrack(at.ofai.music.util.EventList el)
          Perform beat tracking on a list of events (onsets).
 void beatTrack(at.ofai.music.util.EventList el, double stop)
          Perform beat tracking on a list of events (onsets).
 Agent bestAgent()
          Finds the Agent with the highest score in the list.
 void print()
          Deep print of AgentList for debugging
 void remove(AgentList ptr)
          Removes the current item from the list.
protected  void removeDuplicates()
          Removes Agents from the list which are duplicates of other Agents.
 void sort()
          Sorts the AgentList by increasing beatInterval, using a bubble sort since it is assumed that the list is almost sorted.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

useAverageSalience

public static boolean useAverageSalience
Flag for choice between sum and average beat salience values for Agent scores. The use of summed saliences favours faster tempi or lower metrical levels.


debug

public static boolean debug
Flag for printing debugging output.


DEFAULT_BI

public static final double DEFAULT_BI
For the purpose of removing duplicate agents, the default JND of IBI

See Also:
Constant Field Values

DEFAULT_BT

public static final double DEFAULT_BT
For the purpose of removing duplicate agents, the default JND of phase

See Also:
Constant Field Values

ag

public Agent ag
A beat tracking Agent


next

public AgentList next
The remainder of the linked list


count

public static int count
The length of the list (number of beat tracking Agents)


thresholdBI

public static double thresholdBI
For the purpose of removing duplicate agents, the JND of IBI. Not changed in the current version.


thresholdBT

public static double thresholdBT
For the purpose of removing duplicate agents, the JND of phase. Not changed in the current version.

Constructor Detail

AgentList

public AgentList()
Default constructor


AgentList

public AgentList(Agent a,
                 AgentList al)
Constructor for an AgentList: the Agent a is prepended to the list al.

Parameters:
a - The Agent at the head of the list
al - The tail of the list
Method Detail

print

public void print()
Deep print of AgentList for debugging


add

public void add(Agent a)
Inserts newAgent into the list in ascending order of beatInterval


add

public void add(Agent newAgent,
                boolean sort)
Appends newAgent to list (sort==false), or inserts newAgent into the list in ascending order of beatInterval

Parameters:
newAgent - The agent to be added to the list
sort - Flag indicating whether the list is sorted or not

sort

public void sort()
Sorts the AgentList by increasing beatInterval, using a bubble sort since it is assumed that the list is almost sorted.


remove

public void remove(AgentList ptr)
Removes the current item from the list. The current item does not need to be the head of the whole list.

Parameters:
ptr - Points to the Agent which is removed from the list

removeDuplicates

protected void removeDuplicates()
Removes Agents from the list which are duplicates of other Agents. A duplicate is defined by the tempo and phase thresholds thresholdBI and thresholdBT respectively.


beatTrack

public void beatTrack(at.ofai.music.util.EventList el)
Perform beat tracking on a list of events (onsets).

Parameters:
el - The list of onsets (or events or peaks) to beat track

beatTrack

public void beatTrack(at.ofai.music.util.EventList el,
                      double stop)
Perform beat tracking on a list of events (onsets).

Parameters:
el - The list of onsets (or events or peaks) to beat track.
stop - Do not find beats after stop seconds.

bestAgent

public Agent bestAgent()
Finds the Agent with the highest score in the list.

Returns:
The Agent with the highest score