f@0: /*
f@0: Cross-Modal DAW Prototype - Prototype of a simple Cross-Modal Digital Audio Workstation.
f@0:
f@0: Copyright (C) 2015 Queen Mary University of London (http://depic.eecs.qmul.ac.uk/)
f@0:
f@0: This program is free software: you can redistribute it and/or modify
f@0: it under the terms of the GNU General Public License as published by
f@0: the Free Software Foundation, either version 3 of the License, or
f@0: (at your option) any later version.
f@0:
f@0: This program is distributed in the hope that it will be useful,
f@0: but WITHOUT ANY WARRANTY; without even the implied warranty of
f@0: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f@0: GNU General Public License for more details.
f@0:
f@0: You should have received a copy of the GNU General Public License
f@0: along with this program. If not, see .
f@0: */
f@0: package uk.ac.qmul.eecs.depic.patterns;
f@0:
f@0: /**
f@0: *
f@0: * A sequence of values arranged over time.
f@0: *
f@0: * The values are ordered by time, therefore given @ {@code i} and {@code j} such that {@code (i < j)}, the following expression is always true :
f@0: * {@code sequence.getValueAt(i).getTimePosition() <= sequence.getValueAt(j).getTimePosition()}
f@0: *
f@0: * The values are limited in range. {@code getRange()) returns the range
f@0: * of float values that a sequence value can assume.
f@0: *
f@0: */
f@0: public interface Sequence {
f@0: public float getBegin();
f@0:
f@0: public float getEnd();
f@0:
f@0: public int getValuesNum();
f@0:
f@0: public Value getValueAt(int index);
f@0:
f@0: public Range getRange();
f@0:
f@0: public void addSequenceListener(SequenceListener l);
f@0:
f@0: public void removeSequenceListener(SequenceListener l);
f@0:
f@0: /**
f@0: * The length of the sequence in millisecons
f@0: * @return
f@0: */
f@0: public float getLen();
f@0:
f@0: public interface Value {
f@0: public float getValue();
f@0:
f@0: public float getTimePosition();
f@0:
f@0: public Sequence getSequence();
f@0:
f@0: public int index();
f@0: }
f@0: }