-Version 008 Changes: -Remove register/unregister dispose to be compatible with Processing 3.0 -Version 007 Changes: -Added constructors to MidiBus which allow parent as Object, for use outside of Processing -Simplify constructors -Stop using deprecated methods from processing 1.0, switch to new processing 2.0 methods -Introduce new class called Note and ControlChange -Provide an object oriented interface using Note and ControlChange both via processing (PApplet) and with callbacks with listeners -Allow sending timestamps to be disabled so MMJ can be used -Attempted to improve startup speed -Version 005 Changes: -Added library.properties for Processing 2.0 -Added permanent URL for latest version http://www.smallbutdigital.com/releases/themidibus/themidibus-latest.zip and library.properties file http://www.smallbutdigital.com/releases/themidibus/themidibus-latest.txt Bug Fixes: -Fixed two small issues in sendMessage(byte[] data) which made the method mostly useless before. Notable Bug Fixes: -Fixed uninitialized listeners vector. -Fixed available/unavailable devices detection: version 003 would sometimes list unavailable devices as available. -Fixed exceptional cases which threw NullPointer exceptions. -Added try-catch statements to catch some unusual exception from MMJ mac MIDI subsystem -Implemented workaround for MMJ malloc problems when closing devices. Changes: -New devices indexing system: -Version 3 used mixed indicies for inputs and outputs, eg: Available Midi Devices: ----------------------- [0] "IAC Driver - Bus 1" [Input] [1] "IAC Driver - Bus 1" [Output] [2] "Real Time Sequencer" [Input/Output] [3] "Java Sound Synthesizer" [Output] -Version 4 now uses separate indicies for inputs and outputs, eg: Available MIDI Devices: ----------Input---------- [0] "IAC Driver - Bus 1" [1] "Real Time Sequencer" ----------Output---------- [0] "IAC Driver - Bus 1" [1] "Real Time Sequencer" [2] "Java Sound Synthesizer" -The static method list() has been changed as per the new indexing system (and will also show unavailable devices) -The static method returnList() has been replaced by the static methods availableInputs() and availableOutputs() New Features: -Added overrides to Object methods for clone(), equals(Object obj), hashCode() and toString() -Added attachedInputs() and attachedOutputs() methods. Theses methods return an array of the inputs/output currently attached to a given instance of the MidiBus object. -Added removeInput(int device_num), removeInput(String device_name), removeOutput(int device_num) and removeOutput(String device_name). Theses methods allow the selective removal of attached inputs and outputs. -Added static method unavailableDevices() which lists any devices that are detected but appear to be unavailable. (As per bug fix) -Added new overloads to sendMessage(): -sendMessage(byte[] data). Attempts to send an arbitrary array of bytes as a MIDI message. This method supports System Exclusive messages and Meta Messages, including messages with more than 2 data bytes. -sendMessage(MidiMessage message). Attempts to send a MidiMessage object. -sendMessage(int status). Attempts to send a message with only a status byte. -sendMessage(int status, int data). Attempts to send a message with only a status byte and one data byte.