annotate at/ofai/music/util/ConstantTempoMap.java @ 5:bcb4c9697967 tip

Add README and CITATION files
author Chris Cannam
date Tue, 03 Dec 2013 12:58:05 +0000
parents 4c3f5bc01c97
children
rev   line source
Chris@2 1 /*
Chris@2 2 Copyright (C) 2001, 2006 by Simon Dixon
Chris@2 3
Chris@2 4 This program is free software; you can redistribute it and/or modify
Chris@2 5 it under the terms of the GNU General Public License as published by
Chris@2 6 the Free Software Foundation; either version 2 of the License, or
Chris@2 7 (at your option) any later version.
Chris@2 8
Chris@2 9 This program is distributed in the hope that it will be useful,
Chris@2 10 but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@2 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@2 12 GNU General Public License for more details.
Chris@2 13
Chris@2 14 You should have received a copy of the GNU General Public License along
Chris@2 15 with this program (the file gpl.txt); if not, download it from
Chris@2 16 http://www.gnu.org/licenses/gpl.txt or write to the
Chris@2 17 Free Software Foundation, Inc.,
Chris@2 18 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Chris@2 19 */
Chris@2 20
Chris@2 21 package at.ofai.music.util;
Chris@2 22
Chris@2 23 public class ConstantTempoMap implements TempoMap {
Chris@2 24
Chris@2 25 protected double interBeatInterval;
Chris@2 26
Chris@2 27 public ConstantTempoMap(double bpm) {
Chris@2 28 interBeatInterval = 60 / bpm;
Chris@2 29 } // constructor
Chris@2 30
Chris@2 31 public ConstantTempoMap() {
Chris@2 32 this(120);
Chris@2 33 } // default constructor
Chris@2 34
Chris@2 35 public void add(double time, double tempo) {
Chris@2 36 throw new RuntimeException("ConstantTempoMap: cannot change tempo");
Chris@2 37 } // add()
Chris@2 38
Chris@2 39 public double toRealTime(double value) {
Chris@2 40 return value * interBeatInterval;
Chris@2 41 } // toRealTime()
Chris@2 42
Chris@2 43 public double toScoreTime(double value) {
Chris@2 44 return value / interBeatInterval;
Chris@2 45 } // toScoreTime()
Chris@2 46
Chris@2 47 public static void main(String[] args) { // unit test
Chris@2 48 TempoMap mtm = new ConstantTempoMap(100);
Chris@2 49 System.out.println(mtm.toRealTime(1));
Chris@2 50 System.out.println(mtm.toScoreTime(mtm.toRealTime(1)));
Chris@2 51 System.out.println(mtm.toScoreTime(4));
Chris@2 52 System.out.println(mtm.toRealTime(mtm.toScoreTime(4)));
Chris@2 53 mtm.add(5, 120);
Chris@2 54 } // main()
Chris@2 55
Chris@2 56 } // ConstantTempoMap