view at/ofai/music/util/Event.java @ 5:bcb4c9697967 tip

Add README and CITATION files
author Chris Cannam
date Tue, 03 Dec 2013 12:58:05 +0000
parents 4c3f5bc01c97
children
line wrap: on
line source
/*
	Copyright (C) 2001, 2006 by Simon Dixon

	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License along
	with this program (the file gpl.txt); if not, download it from
	http://www.gnu.org/licenses/gpl.txt or write to the
	Free Software Foundation, Inc.,
	51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

package at.ofai.music.util;

public class Event implements Comparable, Cloneable, java.io.Serializable {

	public double keyDown, keyUp, pedalUp, scoreBeat, scoreDuration, salience;
	public int midiPitch, midiVelocity, flags, midiCommand, midiChannel,
				midiTrack;
	//public String label;

	public Event(double onset, double offset, double eOffset, int pitch,
				 int velocity, double beat, double duration, int eventFlags,
				 int command, int channel, int track) {
		this(onset, offset, eOffset, pitch, velocity, beat,duration,eventFlags);
		midiCommand = command;
		midiChannel = channel;
		midiTrack = track;
	} // constructor

	public Event(double onset, double offset, double eOffset, int pitch,
				 int velocity, double beat, double duration, int eventFlags) {
		keyDown = onset;
		keyUp = offset;
		pedalUp = eOffset;
		midiPitch = pitch;
		midiVelocity = velocity;
		scoreBeat = beat;
		scoreDuration = duration;
		flags = eventFlags;
		midiCommand = javax.sound.midi.ShortMessage.NOTE_ON;
		midiChannel = 1;
		midiTrack = 0;
		salience = 0;
	} // constructor

	public Event clone() {
		return new Event(keyDown, keyUp, pedalUp, midiPitch, midiVelocity,
					scoreBeat, scoreDuration, flags, midiCommand, midiChannel,
					midiTrack);
	} // clone()

	// Interface Comparable
	public int compareTo(Object o) {
		Event e = (Event) o;
		return (int)Math.signum(keyDown - e.keyDown);
	} // compareTo()

	public String toString() {
		return "n=" + midiPitch + " v=" + midiVelocity + " t=" + keyDown +
				" to " + keyUp + " (" + pedalUp + ")";
	} // toString()

	public void print(Flags f) {
		System.out.printf("Event:\n");
		System.out.printf("\tkeyDown / Up / pedalUp: %5.3f / %5.3f /  %5.3f\n",
			keyDown, keyUp, pedalUp);
		//System.out.printf("\tkeyUp: %5.3f\n", keyUp);
		//System.out.printf("\tpedalUp: %5.3f\n", pedalUp);
		System.out.printf("\tmidiPitch: %d\n", midiPitch);
		System.out.printf("\tmidiVelocity: %d\n", midiVelocity);
		System.out.printf("\tmidiCommand: %02x\t", midiCommand | midiChannel);
		//System.out.printf("\tmidiChannel: %d\n", midiChannel);
		System.out.printf("\tmidiTrack: %d\n", midiTrack);
		System.out.printf("\tsalience: %5.3f\t", salience);
		System.out.printf("\tscoreBeat: %5.3f\t", scoreBeat);
		System.out.printf("\tscoreDuration: %5.3f\n", scoreDuration);
		System.out.printf("\tflags: %X", flags);
		if (f != null) {
			int ff = flags;
			for (int i=0; ff != 0; i++) {
				if (ff % 2 == 1)
					System.out.print(" " + f.getLabel(i));
				ff >>>= 1;
			}
		}
		System.out.print("\n\n");
	} // print()

} // class Event