@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)
MidiService
setSysexInputQueue
in interface MidiService
MidiService.clearSysexInputQueue(int)
public void clearSysexInputQueue(int port)
MidiService
clearSysexInputQueue
in interface MidiService
MidiService.setSysexInputQueue(int)
public boolean isSysexInputQueueEmpty(int port)
MidiService
true
when MIDI input queue is empty.isSysexInputQueueEmpty
in interface MidiService
MidiService.clearSysexInputQueue(int)
public MidiMessage getMessage(int port, long timeout) throws TimeoutException, InvalidMidiDataException
MidiService
getMessage
in interface MidiService
TimeoutException
InvalidMidiDataException
MidiService.clearSysexInputQueue(int)
public SysexMessage[] byteArrayToSysexMessages(byte[] d) throws InvalidMidiDataException
MidiService
This 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 MidiService
InvalidMidiDataException
public byte[] sysexMessagesToByteArray(SysexMessage[] msgs)
MidiService
sysexMessagesToByteArray
in interface MidiService
msgs
- an array of SysexMessage.public Receiver getReceiver(String portName) throws MidiUnavailableException
getReceiver
in interface MidiService
MidiUnavailableException
public void releaseReceiver(Receiver receiver) throws MidiUnavailableException
releaseReceiver
in interface MidiService
MidiUnavailableException
public Transmitter getTransmitter(String portName) throws MidiUnavailableException
getTransmitter
in interface MidiService
MidiUnavailableException
public void releaseTransmitter(Transmitter transmitter) throws MidiUnavailableException
releaseTransmitter
in interface MidiService
MidiUnavailableException
public void send(String outPortName, MidiMessage msg, int bufSize, int delay) throws MidiUnavailableException, InvalidMidiDataException
MidiService
MidiMessage
. A Sysex Message is divided into several
Sysex Messages whose size is bufSize
.send
in interface MidiService
outPortName
- 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.MidiUnavailableException
InvalidMidiDataException
public void startSequencer(String myport)
MidiService
startSequencer
in interface MidiService
public void closeAllMidiConnections()
closeAllMidiConnections
in interface MidiService
protected Map<Transmitter,String> getMidiTransmitterMap()
protected HashMap<AutoCloseable,Integer> getMidiDeviceReferenceMap()
Copyright © 2014. All Rights Reserved.