Tim W
Posts: 12
Nickname: daniel1980
Registered: Oct, 2005
|
|
Re: Help Cleaning Code
|
Posted: Dec 8, 2005 5:20 AM
|
|
Just needed to spend some time at it instead of being lazy. Ive basically sorted it out now. I think i have a couple of errors to do with curly brackets. Look ok to you now?
public class BasicMonitor {
public static void main (String [] args) {
// Poll system for midi devices
MidiDevice.Info [] deviceList = MidiSystem.getMidiDeviceInfo ();
// Ask user to select the input device
MidiDevice.Info deviceInfo =
(MidiDevice.Info)
JOptionPane.showInputDialog (
null,
"Select MIDI Device",
"Program name",
JOptionPane.QUESTION_MESSAGE,
null,
deviceList,
null);
System.out.println ("Selected device = " + deviceInfo);
// See if the user pressed cancel
if (deviceInfo != null) {
try {
MidiDevice device = MidiSystem.getMidiDevice (deviceInfo);
device.open();
// Create the display window
MidiMonitorWindow win = new MidiMonitorWindow ("Midi Monitor");
// Create the message buffer
MessageByteBuffer buffer = new MessageByteBuffer();
// Create a receiver which puts message into buffer
MonitoringReceiver r = new MonitoringReceiver (buffer);
// Connect the receiver to the devices transmitter
Transmitter t = device.getTransmitter();
t.setReceiver(r);
// Setup infinite loop
while(true) {
MidiMessage message = buffer.get();
// Check if message exists
if (byteData != null) {
byte [] byteData = message.getMessage();
for (byte b: byteData){
System.out.print(b + " ");
}
System.out.print("");
}
// Get status bytes and extract command and channel bits
int Status = byteData [0] & 0xFF;
int Command = Status & 0xF0;
int Channel = Status & 0x0f;
System.out.print(Status +" " + Command + " " + Channel);
// Process message according to command bits
switch (Command) {
case NOTE_ON:
// Check if note on or alternative note off
if (byteData[2] != 0) {
win.showNoteOn(Channel, byteData[1], byteData[2]);
}
else{
win.showNoteOff(Channel, byteData[1], byteData[2]);
}
break;
case NOTE_OFF:
win.showNoteOff(Channel, byteData[1], byteData[2]);
break;
case PITCH_BEND:
win.showPitchBend(Channel, byteData[1], byteData[2]);
break;
case POLY_PRESSURE:
win.showPolyKeyPressure(Channel, byteData[1], byteData[2]);
break;
case CONTROL_CHANGE:
win.showControlChange(Channel, byteData[1], byteData[2]);
break;
case PROGRAM_CHANGE:
win.showProgramChange(Channel, byteData[1]);
break;
case CHANNEL_PRESSURE:
win.showChannelPressure(Channel, byteData[1]);
break;
default:
if(Status == ACTIVE_SENSING){
win.showActiveSensing();
}
else if (Status == TIMING_CLOCK){
win.showTimingClock();
}
else if (Status == SYSTEM_EXCLUSIVE){
win.showSystemExclusive;
}
else
win.showOtherMessage();
}
Thread.yield ();
}
}
catch (MidiUnavailableException e) {
System.out.println ("Exception thrown " + e);
}
}
}
|
|