/*! * copyright 2012 abudaan http://abumarkub.net * code licensed under MIT * http://abumarkub.net/midibridge/license * * */ package net.abumarkub.midi; import javax.sound.midi.ShortMessage; public class MIDIMessage { public int status; public int channel; public int data1; public int data2; public int command; public Long timeStamp = -1L; public MIDIMessage(ShortMessage sm, Long ts) { command = sm.getCommand(); channel = sm.getChannel(); data1 = sm.getData1(); data2 = sm.getData2(); status = sm.getStatus(); timeStamp = ts; if(command == 144 && data2 == 0){ status = 128 + channel; command = 128; } } public MIDIMessage(int command_, int channel_, int data1_, int data2_, Long ts) { command = command_; channel = channel_; data1 = data1_; data2 = data2_; status = command_ + channel_; timeStamp = ts; if(command == 144 && data2 == 0){ status = 128 + channel; command = 128; } } @Override public String toString(){ StringBuilder message = new StringBuilder(); if(command == 176){ message.append("CMD:"); message.append(MIDIData.getCommand(command)); message.append(" CHAN:"); message.append(channel); message.append(" "); message.append(MIDIData.getControlChangeMessage(data1)); message.append(":"); message.append(data2); //message.append(" | STATUS:"); //message.append(status); message.append(" TIME:"); message.append(timeStamp); }else if(command == 128 || command == 144){ message.append("CMD:"); message.append(MIDIData.getCommand(command)); message.append(" CHAN:"); message.append(channel); message.append(" NOTE:"); message.append(data1); message.append(" VELOCITY:"); message.append(data2); //message.append(" | STATUS:"); //message.append(status); message.append(" TIME:"); message.append(timeStamp); }else{ message.append("CMD:"); message.append(MIDIData.getCommand(command)); message.append(" CHAN:"); message.append(channel); message.append(" DATA1:"); message.append(data1); message.append(" DATA2:"); message.append(data2); //message.append(" | STATUS:"); //message.append(status); message.append(" TIME:"); message.append(timeStamp); } return message.toString(); } public int[] toArray(){ int[] message = new int[5]; message[0] = command; message[1] = channel; message[2] = data1; message[3] = data2; message[4] = status; // message[0] = timeStamp; return message; } }