Build a factor oracle (FO) data structure that represents a finite acyclic
automaton that contains at least all the suffixes of a given input
sequence. The actor accepts a <i>name</i> for the Factor oracle, an
Object array, representing the input <i> trainingSequence </i> on which
the suffix tree will be built, and a <i>repetitionFactor</i> that is a
double in range [0.0,1.0], which is a measure of the probability of
the training sequence to be repeated at each transition. The output Factor
Oracle will be a probabilistic automaton that can generate at least all the
suffixes of the training string. If the <i> validatePitch </i> Parameter
is set to true, the factor oracle interprets the input string as a sequence
of notes and adds a check to the transitions to validate the note against
a specification.
<p> As an example, if a transition that would generate a "C4" upon firing, the
guard expression would look like: <i> validatePitch("C4") && probability(p) </i>,
where p is a double in range [0.0,1.0]. This transition would be taken
(i) if the probability() transition evaluates to true AND (ii) if
validatePitch() returns true.
<p>
<b>References</b>
<p>[1]
C. Allauzen, M. Crochemore, and M. Raffinot. "Factor oracle: A new structure for pattern matching."
<i>SOFSEM’99: Theory and Practice of Informatics </i>. Springer Berlin Heidelberg, 1999.
Ilge Akkaya
$Id: FactorOracle.java 70402 2014-10-23 00:52:20Z cxh $
Ptolemy II 10.0
Red (ilgea)
Current chord in improvisation
The repetition probability P(moving along the original sequence rather than taking a jump along
a suffix link)
Boolean that when set to true, enables the transitions to have a condition that validates each
pitch against a specification.