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: }