Added virtual port / MIDIDestinationCreate feature #36
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Thanks for CoreMidi4J, it is in fact really nice work and I love using it.
Today I was looking for a Java API for creating virtual MIDI input ports for creating software that can receive MIDI events from other applications without having to use the Apple IAC device.
Unfortunately, this is obviously not supported by the Java Sound API, nor did I find a good and clean way of adding this to CoreMidi4J without breaking with the fundamental APIs. So I decided to take a more hacky, but minimal-invasive approach by simply adding this to the existing CoreMidiInputPort code and use a static method in CoreMidiSource.
Example:
CoreMidiSource virtualDevice = CoreMidiSource.createVirtualDevice("My virtual device");
// no-op here
virtualDevice.open();
// receive MIDI from Logic / MainStage / etc.
// close and do a clean disposal of the destination in CoreMidi
virtualDevice.close();
There are probably other and more better ways of implementing this, but anyway, maybe you will find this useful.
Sorry for the spacing changes, I couldn't keep IntelliJ from fixing the whitespaces.