@Singleton public class MidiServiceImpl extends Object implements MidiService
Examples:
MIDI output
Receiver rcvr = MidiUtil.getReceiver(outport); MidiUtil.send(rcvr, msg);MIDI input (System Exclusive Message)
MidiUtil.clearSysexInputQueue(inport); SysexMessage msg = MidiUtil.getMessage(inport, 1000);The example above uses a shared input data queue. See the description for each method and code of Master-In and Fader-In for more details and MIDI short message input.
| Constructor and Description |
|---|
MidiServiceImpl(MidiSettings midiSettings,
MidiMonitorService midiMonitorService,
AppConfig appConfig) |
| Modifier and Type | Method and Description |
|---|---|
SysexMessage[] |
byteArrayToSysexMessages(byte[] d)
Converts a byte array into an array of SysexMessages.
|
void |
clearSysexInputQueue(int port)
clear MIDI input queue specified.
|
void |
closeAllMidiConnections() |
MidiMessage |
getMessage(int port,
long timeout)
get Sysex Message from MIDI input queue.
|
protected HashMap<AutoCloseable,Integer> |
getMidiDeviceReferenceMap() |
protected Map<Receiver,String> |
getMidiReceiverMap() |
protected Map<Transmitter,String> |
getMidiTransmitterMap() |
Receiver |
getReceiver(String portName) |
Transmitter |
getTransmitter(String portName) |
boolean |
isSysexInputQueueEmpty(int port)
return
true when MIDI input queue is empty. |
void |
releaseReceiver(Receiver receiver) |
void |
releaseTransmitter(Transmitter transmitter) |
void |
send(String outPortName,
MidiMessage msg,
int bufSize,
int delay)
Send a
MidiMessage. |
void |
setSysexInputQueue(int port)
Setup an input queue for MIDI System Exclusive Message input.
|
void |
startSequencer(String myport)
Maybe these methods should be in an own class, but currently I put them
here.
|
byte[] |
sysexMessagesToByteArray(SysexMessage[] msgs)
Convert an array of SysexMessage to a byte array.
|
@Inject public MidiServiceImpl(MidiSettings midiSettings, MidiMonitorService midiMonitorService, AppConfig appConfig)
public void setSysexInputQueue(int port)
MidiServicesetSysexInputQueue in interface MidiServiceMidiService.clearSysexInputQueue(int)public void clearSysexInputQueue(int port)
MidiServiceclearSysexInputQueue in interface MidiServiceMidiService.setSysexInputQueue(int)public boolean isSysexInputQueueEmpty(int port)
MidiServicetrue when MIDI input queue is empty.isSysexInputQueueEmpty in interface MidiServiceMidiService.clearSysexInputQueue(int)public MidiMessage getMessage(int port, long timeout) throws TimeoutException, InvalidMidiDataException
MidiServicegetMessage in interface MidiServiceTimeoutExceptionInvalidMidiDataExceptionMidiService.clearSysexInputQueue(int)public SysexMessage[] byteArrayToSysexMessages(byte[] d) throws InvalidMidiDataException
MidiServiceThis method is provided to keep compatibility with the old MIDI layer which handled MIDI data in byte array. It is more efficient to create SysexMessages directly because a synth driver knows the start index and length of each Sysex data in an array.
byteArrayToSysexMessages in interface MidiServiceInvalidMidiDataExceptionpublic byte[] sysexMessagesToByteArray(SysexMessage[] msgs)
MidiServicesysexMessagesToByteArray in interface MidiServicemsgs - an array of SysexMessage.public Receiver getReceiver(String portName) throws MidiUnavailableException
getReceiver in interface MidiServiceMidiUnavailableExceptionpublic void releaseReceiver(Receiver receiver) throws MidiUnavailableException
releaseReceiver in interface MidiServiceMidiUnavailableExceptionpublic Transmitter getTransmitter(String portName) throws MidiUnavailableException
getTransmitter in interface MidiServiceMidiUnavailableExceptionpublic void releaseTransmitter(Transmitter transmitter) throws MidiUnavailableException
releaseTransmitter in interface MidiServiceMidiUnavailableExceptionpublic void send(String outPortName, MidiMessage msg, int bufSize, int delay) throws MidiUnavailableException, InvalidMidiDataException
MidiServiceMidiMessage. A Sysex Message is divided into several
Sysex Messages whose size is bufSize.send in interface MidiServiceoutPortName - MIDI out port namemsg - MIDI MessagebufSize - MIDI message size. If zero, whole MIDI message is passed to
lower MIDI driver.delay - delay (msec) after every MIDI message transfer.MidiUnavailableExceptionInvalidMidiDataExceptionpublic void startSequencer(String myport)
MidiServicestartSequencer in interface MidiServicepublic void closeAllMidiConnections()
closeAllMidiConnections in interface MidiServiceprotected Map<Transmitter,String> getMidiTransmitterMap()
protected HashMap<AutoCloseable,Integer> getMidiDeviceReferenceMap()
Copyright © 2014. All Rights Reserved.