/* * Created on Jan 19, 2006 * * Copyright (c) 2005 Peter Johan Salomonsen (http://www.petersalomonsen.com) * 2007 Karl Helgason * * http://www.frinika.com * * This file is part of Frinika. * * Frinika 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. * Frinika 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 Frinika; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package com.frinika.sequencer.model; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.MetaMessage; import javax.sound.midi.MidiEvent; /** * @author Peter Johan Salomonsen */ public class MetaEvent extends MultiEvent { /** * */ private static final long serialVersionUID = 1L; transient MidiEvent metaEvent; int type; byte[] data; @SuppressWarnings("deprecation") @Override void commitRemoveImpl() { // Jens, renamed to be able to handle notification of CommitListeners in MultiEvent, see MultiEvent.commitXxx() // System. out.println(" COMMIT REMOVE PROG "); getTrack().remove(metaEvent); } @SuppressWarnings("deprecation") @Override public void commitAddImpl() { // Jens, renamed to be able to handle notification of CommitListeners in MultiEvent, see MultiEvent.commitXxx() // System. out.println(" COMMIT ADD PROG "); try { metaEvent = new MidiEvent(getMessage(), startTick); getTrack().add(metaEvent); } catch (InvalidMidiDataException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void restoreFromClone(EditHistoryRecordable object) { // TODO Auto-generated method stub MetaEvent evt=(MetaEvent)object; this.part = evt.part; this.startTick = evt.startTick; this.type = evt.type; this.data = evt.data; } public MetaEvent(MidiPart part, long startTick) { super(part, startTick); } public long getEndTick() { // TODO Auto-generated method stub return 0; } public void setMessage(int type, byte[] data) { this.type = type; this.data = data; } public void setMessage(MetaMessage message) { this.type = message.getType(); this.data = message.getData(); } public MetaMessage getMessage() throws InvalidMidiDataException { MetaMessage msg = new MetaMessage(); msg.setMessage(type, data, data.length); return msg; } }